From 83770803e5d7e3345d795481973c91aeb6769302 Mon Sep 17 00:00:00 2001 From: Rodrigo Date: Mon, 8 Jun 2020 18:01:33 +0200 Subject: [PATCH 001/987] Initial test packages --- bsc/extrae/default.nix | 74 ++++++++++++++++++++++++++++++++++++++++++ bsc/nanos6/default.nix | 53 ++++++++++++++++++++++++++++++ bsc/tampi/default.nix | 29 +++++++++++++++++ default.nix | 26 +++++++++++++++ 4 files changed, 182 insertions(+) create mode 100644 bsc/extrae/default.nix create mode 100644 bsc/nanos6/default.nix create mode 100644 bsc/tampi/default.nix create mode 100644 default.nix diff --git a/bsc/extrae/default.nix b/bsc/extrae/default.nix new file mode 100644 index 0000000..3ff4c7c --- /dev/null +++ b/bsc/extrae/default.nix @@ -0,0 +1,74 @@ +{ stdenv +, fetchurl +, boost +, libdwarf +, libelf +, libxml2 +, libunwind +, papi +, binutils-unwrapped +, libiberty +, gcc +, gfortran +, xml2 +#, mpi +, cuda ? null +#, withOpenmp ? false +}: + +stdenv.mkDerivation rec { + name = "extrae"; + version = "3.7.1"; + + src = fetchurl { + url = "https://ftp.tools.bsc.es/extrae/${name}-${version}-src.tar.bz2"; + sha256 = "0y036qc7y30pfj1mnb9nzv2vmxy6xxiy4pgfci6l3jc0lccdsgf8"; + }; + + nativeBuildInputs = [ gcc gfortran libunwind ]; + + buildInputs = [ binutils-unwrapped boost boost.dev libiberty +# openmpi + xml2 libxml2.dev ]; + + patchPhase = '' + sed -ie 's|/usr/bin/find|env find|g' substitute-all + sed -ie 's|/bin/mv|env mv|g' substitute + ''; + + preConfigure = '' + configureFlagsArray=( + --enable-posix-clock + --with-binutils="${binutils-unwrapped} ${libiberty}" + --with-dwarf=${libdwarf} + --with-elf=${libelf} + --with-boost=${boost.dev} + --enable-instrument-io + --enable-instrument-dynamic-memory + --without-memkind + --enable-merge-in-trace + --disable-online + --without-opencl + --enable-pebs-sampling + --enable-sampling + --with-unwind=${libunwind.dev} + --with-xml-prefix=${libxml2.dev} + --with-papi=${papi} + --without-mpi + --without-dyninst) + ''; +# --with-mpi=${mpi} +# --with-mpi-headers=${mpi}/include +# --with-mpi-libs=${mpi}/lib + +# ++ ( +# if (cuda != null) +# then [ "--with-cuda=${cuda}" ] +# else [ "--without-cuda" ] +# ) +# ++ ( +# if (openmp) +# then [ "--enable-openmp" ] +# else [] +# ); +} diff --git a/bsc/nanos6/default.nix b/bsc/nanos6/default.nix new file mode 100644 index 0000000..949060b --- /dev/null +++ b/bsc/nanos6/default.nix @@ -0,0 +1,53 @@ +{ + stdenv +, fetchurl +, automake +, autoconf +, libtool +, pkg-config +, numactl +, hwloc +, papi +#, gnumake +, withExtrae ? false , extrae +, boost +}: + +assert withExtrae -> extrae != null; + +with stdenv.lib; + +stdenv.mkDerivation rec { + pname = "nanos6"; + version = "2.3.2"; + + src = fetchurl { + url = https://pm.bsc.es/ftp/ompss-2/releases/ompss-2-2019.11.2.tar.gz; + sha256 = "03v1kpggdch25m1wfrdjl6crq252dgy6pms8h94d5jwcjh06fbf8"; + }; + + preConfigure = '' + cd ${pname}-${version} + sed -i 's|/bin/echo|echo|g' loader/scripts/common.sh loader/scripts/lint/common.sh + autoreconf -fiv + ''; + + #configureFlags = [] + # ++ (if (extrae != null) then ["--with-extrae=${extrae}"] else [""]); + + buildInputs = [ + autoconf + automake + libtool + pkg-config + boost + numactl + hwloc + papi ] + ++ optional withExtrae extrae; + + buildPhase = '' + make V=1 src/version/CodeVersionInfo.cpp + make V=1 + ''; +} diff --git a/bsc/tampi/default.nix b/bsc/tampi/default.nix new file mode 100644 index 0000000..a5cf0f2 --- /dev/null +++ b/bsc/tampi/default.nix @@ -0,0 +1,29 @@ +{ + stdenv +, fetchurl +, automake +, autoconf +, libtool +, gnumake +, boost +, mpi +, gcc }: + +let + inherit stdenv fetchurl; + version = "1.0.1"; +in +{ + hello = stdenv.mkDerivation rec { + name = "tampi-${version}"; + buildInputs = [ automake autoconf libtool gnumake boost mpi gcc ]; + #hardeningDisable = [ "format" ]; + preConfigure = '' + autoreconf -fiv + ''; + src = fetchurl { + url = "https://github.com/bsc-pm/tampi/archive/v${version}.tar.gz"; + sha256 = "8608a74325939d2a6b56e82f7f6788efbc67731e2d64793bac69475f5b4b9704"; + }; + }; +} diff --git a/default.nix b/default.nix new file mode 100644 index 0000000..300850c --- /dev/null +++ b/default.nix @@ -0,0 +1,26 @@ +{ pkgs ? import {} }: + +let + inherit (pkgs.lib) callPackageWith; + inherit (pkgs.lib) callPackagesWith; + inherit (pkgs) pythonPackages; + inherit (pkgs) perlPackages; + inherit (pkgs) buildPerlPackage; + callPackage = callPackageWith (pkgs // self.bsc); + callPackage_i686 = callPackageWith (pkgs.pkgsi686Linux // self.bsc); + callPackages = callPackagesWith (pkgs // self.bsc); + + self.bsc = rec { + # Load the current implementations + mpi = pkgs.mpich; + + extrae = callPackage ./bsc/extrae { + }; + + tampi = callPackage ./bsc/tampi { + mpi = mpi; + }; + + nanos6 = callPackage ./bsc/nanos6 { }; +}; +in pkgs // self From 5a4068b49753165e60d009f0df905e8a4b63f1ac Mon Sep 17 00:00:00 2001 From: Rodrigo Date: Mon, 8 Jun 2020 18:31:23 +0200 Subject: [PATCH 002/987] Enable extrae mpi implementation input --- bsc/extrae/default.nix | 8 ++++---- default.nix | 5 +++-- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/bsc/extrae/default.nix b/bsc/extrae/default.nix index 3ff4c7c..ed6aa3f 100644 --- a/bsc/extrae/default.nix +++ b/bsc/extrae/default.nix @@ -11,7 +11,7 @@ , gcc , gfortran , xml2 -#, mpi +, mpi ? null , cuda ? null #, withOpenmp ? false }: @@ -27,8 +27,7 @@ stdenv.mkDerivation rec { nativeBuildInputs = [ gcc gfortran libunwind ]; - buildInputs = [ binutils-unwrapped boost boost.dev libiberty -# openmpi + buildInputs = [ binutils-unwrapped boost boost.dev libiberty mpi xml2 libxml2.dev ]; patchPhase = '' @@ -54,7 +53,8 @@ stdenv.mkDerivation rec { --with-unwind=${libunwind.dev} --with-xml-prefix=${libxml2.dev} --with-papi=${papi} - --without-mpi + ${if (mpi != null) then ''--with-mpi=${mpi}'' + else ''--without-mpi''} --without-dyninst) ''; # --with-mpi=${mpi} diff --git a/default.nix b/default.nix index 300850c..c41843f 100644 --- a/default.nix +++ b/default.nix @@ -12,13 +12,14 @@ let self.bsc = rec { # Load the current implementations - mpi = pkgs.mpich; + self.mpi = pkgs.mpich; extrae = callPackage ./bsc/extrae { + mpi = self.mpi; }; tampi = callPackage ./bsc/tampi { - mpi = mpi; + mpi = self.mpi; }; nanos6 = callPackage ./bsc/nanos6 { }; From 20e3f4d4f02723aa02f04ceee8598882f8aeba44 Mon Sep 17 00:00:00 2001 From: Rodrigo Date: Tue, 9 Jun 2020 18:21:02 +0200 Subject: [PATCH 003/987] Add compilers --- bsc/extrae/default.nix | 1 + bsc/llvm-ompss2/default.nix | 21 +++++++++++++++++++++ bsc/nanos6/default.nix | 11 +++-------- bsc/tampi/default.nix | 4 +++- default.nix | 21 ++++++++++++++++----- 5 files changed, 44 insertions(+), 14 deletions(-) create mode 100644 bsc/llvm-ompss2/default.nix diff --git a/bsc/extrae/default.nix b/bsc/extrae/default.nix index ed6aa3f..b27537c 100644 --- a/bsc/extrae/default.nix +++ b/bsc/extrae/default.nix @@ -25,6 +25,7 @@ stdenv.mkDerivation rec { sha256 = "0y036qc7y30pfj1mnb9nzv2vmxy6xxiy4pgfci6l3jc0lccdsgf8"; }; + enableParallelBuilding = true; nativeBuildInputs = [ gcc gfortran libunwind ]; buildInputs = [ binutils-unwrapped boost boost.dev libiberty mpi diff --git a/bsc/llvm-ompss2/default.nix b/bsc/llvm-ompss2/default.nix new file mode 100644 index 0000000..b5ca5c9 --- /dev/null +++ b/bsc/llvm-ompss2/default.nix @@ -0,0 +1,21 @@ +{ + stdenv +, fetchgit +, cmake +, lld +}: + +stdenv.mkDerivation rec { + version = "10.0.0"; + name = "llvm-ompss2-${version}"; + enableParallelBuilding = true; + buildInputs = [ cmake lld ]; + preConfigure = '' + ls + mkdir llvm-build + cd llvm-build + ../utils/OmpSs/setup-cmake.sh + ''; + src = "./llvm-mono/"; + #dontUnpack = true; +} diff --git a/bsc/nanos6/default.nix b/bsc/nanos6/default.nix index 949060b..ac214d9 100644 --- a/bsc/nanos6/default.nix +++ b/bsc/nanos6/default.nix @@ -9,12 +9,10 @@ , hwloc , papi #, gnumake -, withExtrae ? false , extrae +, extrae , boost }: -assert withExtrae -> extrae != null; - with stdenv.lib; stdenv.mkDerivation rec { @@ -26,6 +24,7 @@ stdenv.mkDerivation rec { sha256 = "03v1kpggdch25m1wfrdjl6crq252dgy6pms8h94d5jwcjh06fbf8"; }; + enableParallelBuilding = true; preConfigure = '' cd ${pname}-${version} sed -i 's|/bin/echo|echo|g' loader/scripts/common.sh loader/scripts/lint/common.sh @@ -44,10 +43,6 @@ stdenv.mkDerivation rec { numactl hwloc papi ] - ++ optional withExtrae extrae; + ++ (if (extrae != null) then [extrae] else []); - buildPhase = '' - make V=1 src/version/CodeVersionInfo.cpp - make V=1 - ''; } diff --git a/bsc/tampi/default.nix b/bsc/tampi/default.nix index a5cf0f2..c9f9cec 100644 --- a/bsc/tampi/default.nix +++ b/bsc/tampi/default.nix @@ -7,7 +7,7 @@ , gnumake , boost , mpi -, gcc }: +, gcc}: let inherit stdenv fetchurl; @@ -16,11 +16,13 @@ in { hello = stdenv.mkDerivation rec { name = "tampi-${version}"; + enableParallelBuilding = true; buildInputs = [ automake autoconf libtool gnumake boost mpi gcc ]; #hardeningDisable = [ "format" ]; preConfigure = '' autoreconf -fiv ''; + configureFlags = [ "--disable-mpi-mt-check" ]; src = fetchurl { url = "https://github.com/bsc-pm/tampi/archive/v${version}.tar.gz"; sha256 = "8608a74325939d2a6b56e82f7f6788efbc67731e2d64793bac69475f5b4b9704"; diff --git a/default.nix b/default.nix index c41843f..a649adc 100644 --- a/default.nix +++ b/default.nix @@ -12,16 +12,27 @@ let self.bsc = rec { # Load the current implementations - self.mpi = pkgs.mpich; + #mpi = pkgs.mpich; + mpi = pkgs.openmpi; + + # Load the compiler + #stdenv = pkgs.gcc7Stdenv; + #stdenv = pkgs.gcc9Stdenv; + #stdenv = pkgs.gcc10Stdenv; + stdenv = pkgs.clangStdenv; extrae = callPackage ./bsc/extrae { - mpi = self.mpi; + mpi = mpi; }; tampi = callPackage ./bsc/tampi { - mpi = self.mpi; + mpi = mpi; }; - nanos6 = callPackage ./bsc/nanos6 { }; -}; + nanos6 = callPackage ./bsc/nanos6 { + extrae = extrae; + }; + + #llvm-ompss2 = callPackage ./bsc/llvm-ompss2 { }; + }; in pkgs // self From b600bb77d47b725a90a67072145ad566d0b23aee Mon Sep 17 00:00:00 2001 From: Rodrigo Date: Wed, 10 Jun 2020 14:28:10 +0200 Subject: [PATCH 004/987] Compile extrae with clang --- bsc/extrae/default.nix | 48 +++++++++++++++++++++++------------------- 1 file changed, 26 insertions(+), 22 deletions(-) diff --git a/bsc/extrae/default.nix b/bsc/extrae/default.nix index b27537c..a47bef4 100644 --- a/bsc/extrae/default.nix +++ b/bsc/extrae/default.nix @@ -1,5 +1,5 @@ { stdenv -, fetchurl +, fetchgit , boost , libdwarf , libelf @@ -8,33 +8,45 @@ , papi , binutils-unwrapped , libiberty -, gcc , gfortran , xml2 , mpi ? null , cuda ? null -#, withOpenmp ? false +, llvmPackages +, autoreconfHook }: stdenv.mkDerivation rec { name = "extrae"; version = "3.7.1"; - src = fetchurl { - url = "https://ftp.tools.bsc.es/extrae/${name}-${version}-src.tar.bz2"; - sha256 = "0y036qc7y30pfj1mnb9nzv2vmxy6xxiy4pgfci6l3jc0lccdsgf8"; +# src = fetchurl { +# url = "https://ftp.tools.bsc.es/extrae/${name}-${version}-src.tar.bz2"; +# sha256 = "0y036qc7y30pfj1mnb9nzv2vmxy6xxiy4pgfci6l3jc0lccdsgf8"; +# }; + + # Use patched Extrae version + src = fetchgit { + url = "https://github.com/rodarima/extrae"; + rev = "15883516d6bd802e5b76ff28c4b4a3a5cb113880"; + sha256 = "1hmf6400kw5k3j6xdbbd0yw4xhrjhk1kibp6m7r2i000qjgha8v6"; }; enableParallelBuilding = true; - nativeBuildInputs = [ gcc gfortran libunwind ]; - buildInputs = [ binutils-unwrapped boost boost.dev libiberty mpi - xml2 libxml2.dev ]; - - patchPhase = '' - sed -ie 's|/usr/bin/find|env find|g' substitute-all - sed -ie 's|/bin/mv|env mv|g' substitute - ''; + buildInputs = [ + autoreconfHook + gfortran + libunwind + binutils-unwrapped + boost + boost.dev + libiberty + mpi + xml2 + libxml2.dev + ] + ++ stdenv.lib.optional stdenv.cc.isClang llvmPackages.openmp; preConfigure = '' configureFlagsArray=( @@ -58,15 +70,7 @@ stdenv.mkDerivation rec { else ''--without-mpi''} --without-dyninst) ''; -# --with-mpi=${mpi} -# --with-mpi-headers=${mpi}/include -# --with-mpi-libs=${mpi}/lib -# ++ ( -# if (cuda != null) -# then [ "--with-cuda=${cuda}" ] -# else [ "--without-cuda" ] -# ) # ++ ( # if (openmp) # then [ "--enable-openmp" ] From 37b49e1dd37bf736e83077ad4221284ba55c4f33 Mon Sep 17 00:00:00 2001 From: Rodrigo Date: Wed, 10 Jun 2020 18:55:30 +0200 Subject: [PATCH 005/987] Add nanos6 git version --- bsc/nanos6/default.nix | 2 +- bsc/nanos6/git.nix | 56 ++++++++++++++++++++++++++++++++++++++++++ default.nix | 6 ++++- 3 files changed, 62 insertions(+), 2 deletions(-) create mode 100644 bsc/nanos6/git.nix diff --git a/bsc/nanos6/default.nix b/bsc/nanos6/default.nix index ac214d9..d849bf0 100644 --- a/bsc/nanos6/default.nix +++ b/bsc/nanos6/default.nix @@ -20,7 +20,7 @@ stdenv.mkDerivation rec { version = "2.3.2"; src = fetchurl { - url = https://pm.bsc.es/ftp/ompss-2/releases/ompss-2-2019.11.2.tar.gz; + url = "https://pm.bsc.es/ftp/ompss-2/releases/ompss-2-2019.11.2.tar.gz"; sha256 = "03v1kpggdch25m1wfrdjl6crq252dgy6pms8h94d5jwcjh06fbf8"; }; diff --git a/bsc/nanos6/git.nix b/bsc/nanos6/git.nix new file mode 100644 index 0000000..0aafaf4 --- /dev/null +++ b/bsc/nanos6/git.nix @@ -0,0 +1,56 @@ +{ + stdenv +, automake +, autoconf +, libtool +, pkg-config +, numactl +, hwloc +, papi +, extrae +, boost +, autoreconfHook +}: + +with stdenv.lib; + +stdenv.mkDerivation rec { + pname = "nanos6"; + version = "2.3.2"; + branch = "master"; + cacheline-width = "64"; + + src = builtins.fetchGit { + url = "git@bscpm02.bsc.es:rarias/nanos6"; + rev = "17415b8f1064ccd0b7cfcf7097a64e8d2297c81b"; + ref = branch; + }; + + enableParallelBuilding = true; + patchPhase = '' + export NANOS6_GIT_VERSION=${src.rev} + export NANOS6_GIT_BRANCH=${branch} + scripts/gen-version.sh + ''; + + preConfigure = '' + export CACHELINE_WIDTH=${cacheline-width} + ''; + + configureFlags = [ + "--with-symbol-resolution=indirect" + ]; + + buildInputs = [ + autoreconfHook + autoconf + automake + libtool + pkg-config + boost + numactl + hwloc + papi ] + ++ (if (extrae != null) then [extrae] else []); + +} diff --git a/default.nix b/default.nix index a649adc..8201244 100644 --- a/default.nix +++ b/default.nix @@ -29,7 +29,11 @@ let mpi = mpi; }; - nanos6 = callPackage ./bsc/nanos6 { + nanos6 = callPackage ./bsc/nanos6/default.nix { + extrae = extrae; + }; + + nanos6-git = callPackage ./bsc/nanos6/git.nix { extrae = extrae; }; From 3805eb0ceb2d119c17c942c5101f28f0ad6c71a6 Mon Sep 17 00:00:00 2001 From: Rodrigo Date: Wed, 10 Jun 2020 19:35:11 +0200 Subject: [PATCH 006/987] Experimental llvm derivation --- bsc/llvm-ompss2/default.nix | 33 +++++++++++++++++++++++++-------- default.nix | 6 +++--- 2 files changed, 28 insertions(+), 11 deletions(-) diff --git a/bsc/llvm-ompss2/default.nix b/bsc/llvm-ompss2/default.nix index b5ca5c9..e5653a4 100644 --- a/bsc/llvm-ompss2/default.nix +++ b/bsc/llvm-ompss2/default.nix @@ -3,19 +3,36 @@ , fetchgit , cmake , lld +, bash +, python3 +, perl +, clang +, which }: stdenv.mkDerivation rec { version = "10.0.0"; name = "llvm-ompss2-${version}"; enableParallelBuilding = true; - buildInputs = [ cmake lld ]; - preConfigure = '' - ls - mkdir llvm-build - cd llvm-build - ../utils/OmpSs/setup-cmake.sh + buildInputs = [ which clang bash python3 perl cmake lld ]; + #preConfigure = '' + # ls + # cmakeFlagsArray=( + # "-DCMAKE_C_COMPILER=mpicc" + # "-DCMAKE_CXX_COMPILER=mpic++" + # ) + #''; + + # FIXME: The setup script installs into /build/source/llvm-install + configurePhase = '' + mkdir llvm-build + cd llvm-build + env bash ../utils/OmpSs/setup-cmake.sh ''; - src = "./llvm-mono/"; - #dontUnpack = true; + + src = builtins.fetchGit { + url = "git@bscpm02.bsc.es:llvm-ompss/llvm-mono.git"; + rev = "38e2e6aac04d40b6b2823751ce25f6b414f52263"; + ref = "master"; + }; } diff --git a/default.nix b/default.nix index 8201244..0af507e 100644 --- a/default.nix +++ b/default.nix @@ -21,11 +21,11 @@ let #stdenv = pkgs.gcc10Stdenv; stdenv = pkgs.clangStdenv; - extrae = callPackage ./bsc/extrae { + extrae = callPackage ./bsc/extrae/default.nix { mpi = mpi; }; - tampi = callPackage ./bsc/tampi { + tampi = callPackage ./bsc/tampi/default.nix { mpi = mpi; }; @@ -37,6 +37,6 @@ let extrae = extrae; }; - #llvm-ompss2 = callPackage ./bsc/llvm-ompss2 { }; + llvm-ompss2 = callPackage ./bsc/llvm-ompss2/default.nix { }; }; in pkgs // self From ceaf273219cfa62ebe54a8272e06df672431cf65 Mon Sep 17 00:00:00 2001 From: Rodrigo Date: Thu, 11 Jun 2020 11:33:29 +0200 Subject: [PATCH 007/987] Proper install phase for llvm-ompss2 --- bsc/llvm-ompss2/default.nix | 44 ++++++++++++++++++++++++++----------- 1 file changed, 31 insertions(+), 13 deletions(-) diff --git a/bsc/llvm-ompss2/default.nix b/bsc/llvm-ompss2/default.nix index e5653a4..70dae67 100644 --- a/bsc/llvm-ompss2/default.nix +++ b/bsc/llvm-ompss2/default.nix @@ -8,26 +8,44 @@ , perl , clang , which +, libelf +, libffi +, pkg-config +, enableDebug ? false }: stdenv.mkDerivation rec { version = "10.0.0"; name = "llvm-ompss2-${version}"; enableParallelBuilding = true; - buildInputs = [ which clang bash python3 perl cmake lld ]; - #preConfigure = '' - # ls - # cmakeFlagsArray=( - # "-DCMAKE_C_COMPILER=mpicc" - # "-DCMAKE_CXX_COMPILER=mpic++" - # ) - #''; - # FIXME: The setup script installs into /build/source/llvm-install - configurePhase = '' - mkdir llvm-build - cd llvm-build - env bash ../utils/OmpSs/setup-cmake.sh + buildInputs = [ + which + clang + bash + python3 + perl + cmake + lld + libelf + libffi + pkg-config + ]; + cmakeBuildType = if enableDebug then "Debug" else "Release"; + dontUseCmakeBuildDir = true; + preConfigure = '' + mkdir -p build + cd build + cmakeDir="../llvm" + cmakeFlagsArray=( + "-DLLVM_ENABLE_LLD=ON" + "-DCMAKE_CXX_FLAGS_DEBUG=-g -ggnu-pubnames" + "-DCMAKE_EXE_LINKER_FLAGS_DEBUG=-Wl,-gdb-index" + "-DLLVM_LIT_ARGS=-sv --xunit-xml-output=xunit.xml" + "-DLLVM_ENABLE_PROJECTS=clang;openmp" + "-DLLVM_INSTALL_UTILS=ON" + "-DLLVM_ENABLE_ASSERTIONS=ON" + ) ''; src = builtins.fetchGit { From a331ec5f142e02c9e9dd7abb93dc7a7a880cd1ef Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Date: Thu, 11 Jun 2020 19:04:16 +0200 Subject: [PATCH 008/987] Add mode packages and cpic app --- bsc/cpic/default.nix | 54 ++++++++++++++++++ bsc/dummy/default.nix | 14 +++++ bsc/llvm-ompss2/default.nix | 5 +- bsc/openmpi/default.nix | 109 ++++++++++++++++++++++++++++++++++++ default.nix | 24 ++++++-- 5 files changed, 201 insertions(+), 5 deletions(-) create mode 100644 bsc/cpic/default.nix create mode 100644 bsc/dummy/default.nix create mode 100644 bsc/openmpi/default.nix diff --git a/bsc/cpic/default.nix b/bsc/cpic/default.nix new file mode 100644 index 0000000..e16b1f6 --- /dev/null +++ b/bsc/cpic/default.nix @@ -0,0 +1,54 @@ +{ + stdenv +, libconfig +, nanos6 +, llvm-ompss2 +, mpi +, uthash +, overrideCC +, llvmPackages_10 +, fftw +}: + +with stdenv.lib; + +let + buildStdenv = overrideCC stdenv [ llvm-ompss2 ]; +in +buildStdenv.mkDerivation rec { + name = "cpic"; + + src = "${builtins.getEnv "HOME"}/cpic"; +# src = builtins.fetchGit { +# url = "https://github.com/rodarima/cpic"; +## rev = "73bd70448587f0925b89e24c8f17e412ea3958e6"; +# ref = "master"; +# }; + +# patchPhase = '' +# echo LD=$LD +# echo CC=$CC +# echo =================================================== +# env +# echo =================================================== +# echo ${buildStdenv} +# echo =================================================== +# ''; + + configurePhase = '' + ls -l / + export NANOS6_HOME="${nanos6}" + ''; + + enableParallelBuilding = true; + + buildInputs = [ + libconfig + nanos6 + llvm-ompss2 + mpi + uthash + llvmPackages_10.bintools + fftw + ]; +} diff --git a/bsc/dummy/default.nix b/bsc/dummy/default.nix new file mode 100644 index 0000000..3470ebb --- /dev/null +++ b/bsc/dummy/default.nix @@ -0,0 +1,14 @@ +{ + stdenv +}: + +{ + hello = stdenv.mkDerivation rec { + name = "dummy"; + + src = null; + dontUnpack = true; + + buildPhase = ''ls -l /''; + }; +} diff --git a/bsc/llvm-ompss2/default.nix b/bsc/llvm-ompss2/default.nix index 70dae67..a083f61 100644 --- a/bsc/llvm-ompss2/default.nix +++ b/bsc/llvm-ompss2/default.nix @@ -15,7 +15,7 @@ }: stdenv.mkDerivation rec { - version = "10.0.0"; + version = "11.0.0"; name = "llvm-ompss2-${version}"; enableParallelBuilding = true; @@ -31,8 +31,11 @@ stdenv.mkDerivation rec { libffi pkg-config ]; + cmakeBuildType = if enableDebug then "Debug" else "Release"; + dontUseCmakeBuildDir = true; + preConfigure = '' mkdir -p build cd build diff --git a/bsc/openmpi/default.nix b/bsc/openmpi/default.nix new file mode 100644 index 0000000..59c8875 --- /dev/null +++ b/bsc/openmpi/default.nix @@ -0,0 +1,109 @@ +{ stdenv, fetchurl, fetchpatch, gfortran, perl, libnl +, rdma-core, zlib, numactl, libevent, hwloc, targetPackages, symlinkJoin +, libpsm2, libfabric + +# Enable CUDA support +, cudaSupport ? false, cudatoolkit ? null + +# Enable the Sun Grid Engine bindings +, enableSGE ? false + +# Pass PATH/LD_LIBRARY_PATH to point to current mpirun by default +, enablePrefix ? false + +# Enable libfabric support (necessary for Omnipath networks) on x86_64 linux +, fabricSupport ? stdenv.isLinux && stdenv.isx86_64 + +# Enable mpi_cxx.so +, enableCxx ? false + +}: + +assert !cudaSupport || cudatoolkit != null; + +let + version = "4.0.3"; + + cudatoolkit_joined = symlinkJoin { + name = "${cudatoolkit.name}-unsplit"; + paths = [ cudatoolkit.out cudatoolkit.lib ]; + }; +in stdenv.mkDerivation rec { + pname = "openmpi"; + inherit version; + + src = with stdenv.lib.versions; fetchurl { + url = "https://www.open-mpi.org/software/ompi/v${major version}.${minor version}/downloads/${pname}-${version}.tar.bz2"; + sha256 = "00zxcw99gr5n693cmcmn4f6a47vx1ywna895p0x7p163v37gw0hl"; + }; + + postPatch = '' + patchShebangs ./ + + # Ensure build is reproducible + ts=`date -d @$SOURCE_DATE_EPOCH` + sed -i 's/OPAL_CONFIGURE_USER=.*/OPAL_CONFIGURE_USER="nixbld"/' configure + sed -i 's/OPAL_CONFIGURE_HOST=.*/OPAL_CONFIGURE_HOST="localhost"/' configure + sed -i "s/OPAL_CONFIGURE_DATE=.*/OPAL_CONFIGURE_DATE=\"$ts\"/" configure + find -name "Makefile.in" -exec sed -i "s/\`date\`/$ts/" \{} \; + ''; + + buildInputs = with stdenv; [ gfortran zlib ] + ++ lib.optionals isLinux [ libnl numactl ] + ++ lib.optionals cudaSupport [ cudatoolkit ] + ++ [ libevent hwloc ] + ++ lib.optional (isLinux || isFreeBSD) rdma-core + ++ lib.optional fabricSupport [ libpsm2 libfabric ]; + + nativeBuildInputs = [ perl ]; + + configureFlags = with stdenv; lib.optional (!cudaSupport) "--disable-mca-dso" + ++ lib.optional isLinux "--with-libnl=${libnl.dev}" + ++ lib.optional enableSGE "--with-sge" + ++ lib.optional enablePrefix "--enable-mpirun-prefix-by-default" + # TODO: add UCX support, which is recommended to use with cuda for the most robust OpenMPI build + # https://github.com/openucx/ucx + # https://www.open-mpi.org/faq/?category=buildcuda + ++ lib.optionals cudaSupport [ "--with-cuda=${cudatoolkit_joined}" "--enable-dlopen" ] + ++ lib.optionals fabricSupport [ "--with-psm2=${libpsm2}" "--with-libfabric=${libfabric}" ] + ++ lib.optional enableCxx "--enable-mpi-cxx" + ; + + enableParallelBuilding = true; + + postInstall = '' + rm -f $out/lib/*.la + ''; + + postFixup = '' + # default compilers should be indentical to the + # compilers at build time + + sed -i 's:compiler=.*:compiler=${targetPackages.stdenv.cc}/bin/${targetPackages.stdenv.cc.targetPrefix}cc:' \ + $out/share/openmpi/mpicc-wrapper-data.txt + + sed -i 's:compiler=.*:compiler=${targetPackages.stdenv.cc}/bin/${targetPackages.stdenv.cc.targetPrefix}cc:' \ + $out/share/openmpi/ortecc-wrapper-data.txt + + sed -i 's:compiler=.*:compiler=${targetPackages.stdenv.cc}/bin/${targetPackages.stdenv.cc.targetPrefix}c++:' \ + $out/share/openmpi/mpic++-wrapper-data.txt + + sed -i 's:compiler=.*:compiler=${gfortran}/bin/${gfortran.targetPrefix}gfortran:' \ + $out/share/openmpi/mpifort-wrapper-data.txt + ''; + + doCheck = true; + + passthru = { + inherit cudaSupport cudatoolkit; + }; + + meta = with stdenv.lib; { + homepage = "https://www.open-mpi.org/"; + description = "Open source MPI-3 implementation"; + longDescription = "The Open MPI Project is an open source MPI-3 implementation that is developed and maintained by a consortium of academic, research, and industry partners. Open MPI is therefore able to combine the expertise, technologies, and resources from all across the High Performance Computing community in order to build the best MPI library available. Open MPI offers advantages for system and software vendors, application developers and computer science researchers."; + maintainers = with maintainers; [ markuskowa ]; + license = licenses.bsd3; + platforms = platforms.unix; + }; +} diff --git a/default.nix b/default.nix index 0af507e..af49702 100644 --- a/default.nix +++ b/default.nix @@ -11,11 +11,18 @@ let callPackages = callPackagesWith (pkgs // self.bsc); self.bsc = rec { - # Load the current implementations - #mpi = pkgs.mpich; - mpi = pkgs.openmpi; - # Load the compiler + # Custom OpenMPI with mpi_cxx enabled for TAMPI + openmpi = callPackage ./bsc/openmpi/default.nix { + enableCxx = true; + }; + + # Load the default implementation + #mpi = pkgs.mpich; + #mpi = pkgs.openmpi; + mpi = openmpi; # Our OpenMPI variant + + # Load the default compiler #stdenv = pkgs.gcc7Stdenv; #stdenv = pkgs.gcc9Stdenv; #stdenv = pkgs.gcc10Stdenv; @@ -38,5 +45,14 @@ let }; llvm-ompss2 = callPackage ./bsc/llvm-ompss2/default.nix { }; + + cpic = callPackage ./bsc/cpic/default.nix { + mpi = mpi; + nanos6 = nanos6-git; + llvm-ompss2 = llvm-ompss2; + }; + + dummy = callPackage ./bsc/dummy/default.nix { }; + }; in pkgs // self From 3c2b7c163f0df01b1ffcf60f161b7a36d80a8a65 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Date: Mon, 15 Jun 2020 11:54:22 +0200 Subject: [PATCH 009/987] cpic: Compilation ok but fails to run --- bsc/cc-wrapper-bbg/add-flags | 28 ++ bsc/cc-wrapper-bbg/cc-wrapper.sh | 157 +++++++ bsc/cc-wrapper-bbg/default.nix | 296 ++++++++++++ bsc/cc-wrapper-bbg/gnat-wrapper.sh | 103 +++++ bsc/cc-wrapper-bbg/gnatlink-wrapper.sh | 33 ++ bsc/cc-wrapper-bbg/ld-solaris-wrapper.sh | 40 ++ bsc/cc-wrapper-bbg/ld-wrapper.sh | 166 +++++++ bsc/cc-wrapper-bbg/setup-hook.sh | 47 ++ bsc/cc-wrapper-bbg/utils.sh | 24 + bsc/cc-wrapper/add-flags.sh | 57 +++ bsc/cc-wrapper/add-hardening.sh | 72 +++ bsc/cc-wrapper/cc-wrapper.sh | 197 ++++++++ bsc/cc-wrapper/default.nix | 420 ++++++++++++++++++ bsc/cc-wrapper/gnat-wrapper.sh | 165 +++++++ bsc/cc-wrapper/setup-hook.sh | 120 +++++ bsc/cpic/default.nix | 56 ++- bsc/dummy/default.nix | 5 +- bsc/fftw/default.nix | 58 +++ bsc/llvm-ompss2/default.nix | 10 +- bsc/nanos6/.git.nix.swp | Bin 0 -> 12288 bytes bsc/nanos6/default.nix | 5 +- bsc/setup-hooks/audit-blas.sh | 37 ++ bsc/setup-hooks/audit-tmpdir.sh | 41 ++ bsc/setup-hooks/auto-patchelf.sh | 237 ++++++++++ bsc/setup-hooks/autoreconf.sh | 7 + bsc/setup-hooks/breakpoint-hook.sh | 9 + bsc/setup-hooks/compress-man-pages.sh | 32 ++ bsc/setup-hooks/die.sh | 21 + .../enable-coverage-instrumentation.sh | 20 + bsc/setup-hooks/find-xml-catalogs.sh | 22 + bsc/setup-hooks/fix-darwin-dylib-names.sh | 40 ++ bsc/setup-hooks/gog-unpack.sh | 11 + bsc/setup-hooks/install-shell-files.sh | 165 +++++++ bsc/setup-hooks/keep-build-tree.sh | 6 + bsc/setup-hooks/ld-is-cc-hook.sh | 5 + .../make-coverage-analysis-report.sh | 25 ++ bsc/setup-hooks/make-symlinks-relative.sh | 28 ++ bsc/setup-hooks/make-wrapper.sh | 146 ++++++ bsc/setup-hooks/move-docs.sh | 23 + bsc/setup-hooks/move-lib64.sh | 22 + bsc/setup-hooks/move-sbin.sh | 19 + bsc/setup-hooks/multiple-outputs.sh | 199 +++++++++ bsc/setup-hooks/patch-shebangs.sh | 119 +++++ bsc/setup-hooks/prune-libtool-files.sh | 22 + bsc/setup-hooks/role.bash | 75 ++++ bsc/setup-hooks/separate-debug-info.sh | 37 ++ bsc/setup-hooks/set-java-classpath.sh | 13 + .../set-source-date-epoch-to-latest.sh | 34 ++ bsc/setup-hooks/setup-debug-info-dirs.sh | 5 + bsc/setup-hooks/shorten-perl-shebang.sh | 88 ++++ bsc/setup-hooks/strip.sh | 57 +++ .../update-autotools-gnu-config-scripts.sh | 12 + bsc/setup-hooks/use-old-cxx-abi.sh | 1 + bsc/setup-hooks/validate-pkg-config.sh | 19 + bsc/setup-hooks/win-dll-link.sh | 45 ++ bsc/setup-hooks/wrap-gapps-hook.sh | 93 ++++ bsc/wrapper-common/utils.bash | 92 ++++ default.nix | 83 +++- 58 files changed, 3936 insertions(+), 33 deletions(-) create mode 100644 bsc/cc-wrapper-bbg/add-flags create mode 100644 bsc/cc-wrapper-bbg/cc-wrapper.sh create mode 100644 bsc/cc-wrapper-bbg/default.nix create mode 100644 bsc/cc-wrapper-bbg/gnat-wrapper.sh create mode 100644 bsc/cc-wrapper-bbg/gnatlink-wrapper.sh create mode 100644 bsc/cc-wrapper-bbg/ld-solaris-wrapper.sh create mode 100644 bsc/cc-wrapper-bbg/ld-wrapper.sh create mode 100644 bsc/cc-wrapper-bbg/setup-hook.sh create mode 100644 bsc/cc-wrapper-bbg/utils.sh create mode 100644 bsc/cc-wrapper/add-flags.sh create mode 100644 bsc/cc-wrapper/add-hardening.sh create mode 100644 bsc/cc-wrapper/cc-wrapper.sh create mode 100644 bsc/cc-wrapper/default.nix create mode 100644 bsc/cc-wrapper/gnat-wrapper.sh create mode 100644 bsc/cc-wrapper/setup-hook.sh create mode 100644 bsc/fftw/default.nix create mode 100644 bsc/nanos6/.git.nix.swp create mode 100644 bsc/setup-hooks/audit-blas.sh create mode 100644 bsc/setup-hooks/audit-tmpdir.sh create mode 100644 bsc/setup-hooks/auto-patchelf.sh create mode 100644 bsc/setup-hooks/autoreconf.sh create mode 100644 bsc/setup-hooks/breakpoint-hook.sh create mode 100644 bsc/setup-hooks/compress-man-pages.sh create mode 100644 bsc/setup-hooks/die.sh create mode 100644 bsc/setup-hooks/enable-coverage-instrumentation.sh create mode 100644 bsc/setup-hooks/find-xml-catalogs.sh create mode 100644 bsc/setup-hooks/fix-darwin-dylib-names.sh create mode 100644 bsc/setup-hooks/gog-unpack.sh create mode 100644 bsc/setup-hooks/install-shell-files.sh create mode 100644 bsc/setup-hooks/keep-build-tree.sh create mode 100644 bsc/setup-hooks/ld-is-cc-hook.sh create mode 100644 bsc/setup-hooks/make-coverage-analysis-report.sh create mode 100644 bsc/setup-hooks/make-symlinks-relative.sh create mode 100644 bsc/setup-hooks/make-wrapper.sh create mode 100644 bsc/setup-hooks/move-docs.sh create mode 100644 bsc/setup-hooks/move-lib64.sh create mode 100644 bsc/setup-hooks/move-sbin.sh create mode 100644 bsc/setup-hooks/multiple-outputs.sh create mode 100644 bsc/setup-hooks/patch-shebangs.sh create mode 100644 bsc/setup-hooks/prune-libtool-files.sh create mode 100644 bsc/setup-hooks/role.bash create mode 100644 bsc/setup-hooks/separate-debug-info.sh create mode 100644 bsc/setup-hooks/set-java-classpath.sh create mode 100644 bsc/setup-hooks/set-source-date-epoch-to-latest.sh create mode 100644 bsc/setup-hooks/setup-debug-info-dirs.sh create mode 100644 bsc/setup-hooks/shorten-perl-shebang.sh create mode 100644 bsc/setup-hooks/strip.sh create mode 100644 bsc/setup-hooks/update-autotools-gnu-config-scripts.sh create mode 100644 bsc/setup-hooks/use-old-cxx-abi.sh create mode 100644 bsc/setup-hooks/validate-pkg-config.sh create mode 100644 bsc/setup-hooks/win-dll-link.sh create mode 100644 bsc/setup-hooks/wrap-gapps-hook.sh create mode 100644 bsc/wrapper-common/utils.bash diff --git a/bsc/cc-wrapper-bbg/add-flags b/bsc/cc-wrapper-bbg/add-flags new file mode 100644 index 0000000..d483615 --- /dev/null +++ b/bsc/cc-wrapper-bbg/add-flags @@ -0,0 +1,28 @@ +# `-B@out@/bin' forces gcc to use ld-wrapper.sh when calling ld. +export NIX_CFLAGS_COMPILE="-B@out@/bin/ $NIX_CFLAGS_COMPILE" + +if [ -e @out@/nix-support/libc-cflags ]; then + export NIX_CFLAGS_COMPILE="$(cat @out@/nix-support/libc-cflags) $NIX_CFLAGS_COMPILE" +fi + +if [ -e @out@/nix-support/gcc-cflags ]; then + export NIX_CFLAGS_COMPILE="$(cat @out@/nix-support/cc-cflags) $NIX_CFLAGS_COMPILE" +fi + +if [ -e @out@/nix-support/gnat-cflags ]; then + export NIX_GNATFLAGS_COMPILE="$(cat @out@/nix-support/gnat-cflags) $NIX_GNATFLAGS_COMPILE" +fi + +if [ -e @out@/nix-support/libc-ldflags ]; then + export NIX_LDFLAGS+=" $(cat @out@/nix-support/libc-ldflags)" +fi + +if [ -e @out@/nix-support/gcc-ldflags ]; then + export NIX_LDFLAGS+=" $(cat @out@/nix-support/cc-ldflags)" +fi + +if [ -e @out@/nix-support/libc-ldflags-before ]; then + export NIX_LDFLAGS_BEFORE="$(cat @out@/nix-support/libc-ldflags-before) $NIX_LDFLAGS_BEFORE" +fi + +export NIX_CC_WRAPPER_FLAGS_SET=1 diff --git a/bsc/cc-wrapper-bbg/cc-wrapper.sh b/bsc/cc-wrapper-bbg/cc-wrapper.sh new file mode 100644 index 0000000..c378d69 --- /dev/null +++ b/bsc/cc-wrapper-bbg/cc-wrapper.sh @@ -0,0 +1,157 @@ +#! @shell@ -e + +if [ -n "$NIX_CC_WRAPPER_START_HOOK" ]; then + source "$NIX_CC_WRAPPER_START_HOOK" +fi + +if [ -z "$NIX_CC_WRAPPER_FLAGS_SET" ]; then + source @out@/nix-support/add-flags.sh +fi + +source @out@/nix-support/utils.sh + + +if [ -e @cc_dir@/nix-support/compiler_setup.sh ]; then + source @cc_dir@/nix-support/compiler_setup.sh +fi + + +# Figure out if linker flags should be passed. GCC prints annoying +# warnings when they are not needed. +dontLink=0 +getVersion=0 +nonFlagArgs=0 + +for i in "$@"; do + if [ "$i" = -c ]; then + dontLink=1 + elif [ "$i" = -S ]; then + dontLink=1 + elif [ "$i" = -E ]; then + dontLink=1 + elif [ "$i" = -E ]; then + dontLink=1 + elif [ "$i" = -M ]; then + dontLink=1 + elif [ "$i" = -MM ]; then + dontLink=1 + elif [ "$i" = -x ]; then + # At least for the cases c-header or c++-header we should set dontLink. + # I expect no one use -x other than making precompiled headers. + dontLink=1 + elif [ "${i:0:1}" != - ]; then + nonFlagArgs=1 + elif [ "$i" = -m32 ]; then + if [ -e @out@/nix-support/dynamic-linker-m32 ]; then + NIX_LDFLAGS="$NIX_LDFLAGS -dynamic-linker $(cat @out@/nix-support/dynamic-linker-m32)" + fi + fi +done + +# If we pass a flag like -Wl, then gcc will call the linker unless it +# can figure out that it has to do something else (e.g., because of a +# "-c" flag). So if no non-flag arguments are given, don't pass any +# linker flags. This catches cases like "gcc" (should just print +# "gcc: no input files") and "gcc -v" (should print the version). +if [ "$nonFlagArgs" = 0 ]; then + dontLink=1 +fi + + +# Optionally filter out paths not refering to the store. +params=("$@") +if [ "$NIX_ENFORCE_PURITY" = 1 -a -n "$NIX_STORE" ]; then + rest=() + n=0 + while [ $n -lt ${#params[*]} ]; do + p=${params[n]} + p2=${params[$((n+1))]} + if [ "${p:0:3}" = -L/ ] && badPath "${p:2}"; then + skip $p + elif [ "$p" = -L ] && badPath "$p2"; then + n=$((n + 1)); skip $p2 + elif [ "${p:0:3}" = -I/ ] && badPath "${p:2}"; then + skip $p + elif [ "$p" = -I ] && badPath "$p2"; then + n=$((n + 1)); skip $p2 + elif [ "$p" = -isystem ] && badPath "$p2"; then + n=$((n + 1)); skip $p2 + else + rest=("${rest[@]}" "$p") + fi + n=$((n + 1)) + done + params=("${rest[@]}") +fi + +if [[ "@prog@" = *++ ]]; then + if echo "$@" | grep -qv -- -nostdlib; then + NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE ${NIX_CXXSTDLIB_COMPILE-@default_cxx_stdlib_compile@}" + NIX_CFLAGS_LINK="$NIX_CFLAGS_LINK $NIX_CXXSTDLIB_LINK" + fi +fi + +# Add the flags for the C compiler proper. +extraAfter=($NIX_CFLAGS_COMPILE) +extraBefore=() + +# When enforcing purity, pretend gcc can't find the current date and +# time +if [ "$NIX_ENFORCE_PURITY" = 1 ]; then + extraAfter+=('-D__DATE__="Jan 01 1970"' + '-D__TIME__="00:00:01"' + -Wno-builtin-macro-redefined) +fi + + +if [ "$dontLink" != 1 ]; then + + # Add the flags that should only be passed to the compiler when + # linking. + extraAfter+=($NIX_CFLAGS_LINK) + + # Add the flags that should be passed to the linker (and prevent + # `ld-wrapper' from adding NIX_LDFLAGS again). + for i in $NIX_LDFLAGS_BEFORE; do + extraBefore=(${extraBefore[@]} "-Wl,$i") + done + for i in $NIX_LDFLAGS; do + if [ "${i:0:3}" = -L/ ]; then + extraAfter+=("$i") + else + extraAfter+=("-Wl,$i") + fi + done + export NIX_LDFLAGS_SET=1 +fi + +# As a very special hack, if the arguments are just `-v', then don't +# add anything. This is to prevent `gcc -v' (which normally prints +# out the version number and returns exit code 0) from printing out +# `No input files specified' and returning exit code 1. +if [ "$*" = -v ]; then + extraAfter=() + extraBefore=() +fi + +# Optionally print debug info. +if [ -n "$NIX_DEBUG" ]; then + echo "original flags to @prog@:" >&2 + for i in "${params[@]}"; do + echo " $i" >&2 + done + echo "extraBefore flags to @prog@:" >&2 + for i in ${extraBefore[@]}; do + echo " $i" >&2 + done + echo "extraAfter flags to @prog@:" >&2 + for i in ${extraAfter[@]}; do + echo " $i" >&2 + done +fi + +if [ -n "$NIX_CC_WRAPPER_EXEC_HOOK" ]; then + source "$NIX_CC_WRAPPER_EXEC_HOOK" +fi + +exec @prog@ ${extraBefore[@]} "${params[@]}" "${extraAfter[@]}" diff --git a/bsc/cc-wrapper-bbg/default.nix b/bsc/cc-wrapper-bbg/default.nix new file mode 100644 index 0000000..1cdd5f5 --- /dev/null +++ b/bsc/cc-wrapper-bbg/default.nix @@ -0,0 +1,296 @@ +# The Nixpkgs CC is not directly usable, since it doesn't know where +# the C library and standard header files are. Therefore the compiler +# produced by that package cannot be installed directly in a user +# environment and used from the command line. So we use a wrapper +# script that sets up the right environment variables so that the +# compiler and the linker just "work". + +{ name ? "", stdenv, nativeTools, nativeLibc, nativePrefix ? "" +, cc ? null, libc ? null, binutils ? null, coreutils ? null, shell ? stdenv.shell +, zlib ? null, extraPackages ? [], extraBuildCommands ? "" +, dyld ? null # TODO: should this be a setup-hook on dyld? +, isGNU ? false, isClang ? cc.isClang or false +}: + +with stdenv.lib; + +assert cc.isClangWithOmpss; + +assert nativeTools -> nativePrefix != ""; +assert !nativeTools -> cc != null && binutils != null && coreutils != null; +assert !nativeLibc -> libc != null; + +# For ghdl (the vhdl language provider to gcc) we need zlib in the wrapper. +assert cc.langVhdl or false -> zlib != null; + +let + + ccVersion = (builtins.parseDrvName cc.name).version; + ccName = (builtins.parseDrvName cc.name).name; + +in + +stdenv.mkDerivation { + name = "THE-wrapper"; + #name = "${cc.name}-wrapper-${cc.version}"; + #name = (if name != "" then name else ccName + "-wrapper") + + # (if cc != null && ccVersion != "" then "-" + ccVersion else ""); + + preferLocalBuild = true; + + inherit cc shell; + cc_dir = cc; + libc = if nativeLibc then null else libc; + binutils = if nativeTools then null else binutils; + # The wrapper scripts use 'cat', so we may need coreutils. + coreutils = if nativeTools then null else coreutils; + + passthru = { inherit nativeTools nativeLibc nativePrefix isGNU isClang; }; + + buildCommand = + '' + mkdir -p $out/bin $out/nix-support + + wrap() { + local dst="$1" + local wrapper="$2" + export prog="$3" + substituteAll "$wrapper" "$out/bin/$dst" + chmod +x "$out/bin/$dst" + } + '' + + + optionalString (!nativeLibc) (if (!stdenv.isDarwin) then '' + dynamicLinker="$libc/lib/$dynamicLinker" + echo $dynamicLinker > $out/nix-support/dynamic-linker + + if [ -e $libc/lib/32/ld-linux.so.2 ]; then + echo $libc/lib/32/ld-linux.so.2 > $out/nix-support/dynamic-linker-m32 + fi + + # The dynamic linker is passed in `ldflagsBefore' to allow + # explicit overrides of the dynamic linker by callers to gcc/ld + # (the *last* value counts, so ours should come first). + echo "-dynamic-linker" $dynamicLinker > $out/nix-support/libc-ldflags-before + '' else '' + echo $dynamicLinker > $out/nix-support/dynamic-linker + + echo "export LD_DYLD_PATH=\"$dynamicLinker\"" >> $out/nix-support/setup-hook + '') + + + optionalString (!nativeLibc) '' + # The "-B$libc/lib/" flag is a quick hack to force gcc to link + # against the crt1.o from our own glibc, rather than the one in + # /usr/lib. (This is only an issue when using an `impure' + # compiler/linker, i.e., one that searches /usr/lib and so on.) + # + # Unfortunately, setting -B appears to override the default search + # path. Thus, the gcc-specific "../includes-fixed" directory is + # now longer searched and glibc's header fails to + # compile, because it uses "#include_next " to find the + # limits.h file in ../includes-fixed. To remedy the problem, + # another -idirafter is necessary to add that directory again. + echo "-B$libc/lib/ -idirafter $libc/include -idirafter $cc/lib/gcc/*/*/include-fixed" > $out/nix-support/libc-cflags + + echo "-L$libc/lib" > $out/nix-support/libc-ldflags + + echo $libc > $out/nix-support/orig-libc + '' + + + (if nativeTools then '' + ccPath="${if stdenv.isDarwin then cc else nativePrefix}/bin" + ldPath="${nativePrefix}/bin" + '' else '' + echo $cc > $out/nix-support/orig-cc + + # GCC shows $cc/lib in `gcc -print-search-dirs', but not + # $cc/lib64 (even though it does actually search there...).. + # This confuses libtool. So add it to the compiler tool search + # path explicitly. + if [ -e "$cc/lib64" -a ! -L "$cc/lib64" ]; then + ccLDFlags+=" -L$cc/lib64" + ccCFlags+=" -B$cc/lib64" + fi + ccLDFlags+=" -L$cc/lib" + + ${optionalString cc.langVhdl or false '' + ccLDFlags+=" -L${zlib}/lib" + ''} + + # Find the gcc libraries path (may work only without multilib). + ${optionalString cc.langAda or false '' + basePath=`echo $cc/lib/*/*/*` + ccCFlags+=" -B$basePath -I$basePath/adainclude" + gnatCFlags="-aI$basePath/adainclude -aO$basePath/adalib" + echo "$gnatCFlags" > $out/nix-support/gnat-cflags + ''} + + if [ -e $ccPath/clang ]; then + # Need files like crtbegin.o from gcc + # It's unclear if these will ever be provided by an LLVM project + ccCFlags="$ccCFlags -B$basePath" + ccCFlags="$ccCFlags -isystem$cc/lib/clang/$ccVersion/include" + fi + + echo "$ccLDFlags" > $out/nix-support/cc-ldflags + echo "$ccCFlags" > $out/nix-support/cc-cflags + + ccPath="$cc/bin" + ldPath="$binutils/bin" + + # Propagate the wrapped cc so that if you install the wrapper, + # you get tools like gcov, the manpages, etc. as well (including + # for binutils and Glibc). + echo $cc $binutils $libc > $out/nix-support/propagated-user-env-packages + + echo ${toString extraPackages} > $out/nix-support/propagated-native-build-inputs + '' + + + optionalString (stdenv.isSunOS && nativePrefix != "") '' + # Solaris needs an additional ld wrapper. + ldPath="${nativePrefix}/bin" + ld="$out/bin/ld-solaris" + wrap ld-solaris ${./ld-solaris-wrapper.sh} + '') + + + '' + # Create a symlink to as (the assembler). This is useful when a + # cc-wrapper is installed in a user environment, as it ensures that + # the right assembler is called. + if [ -e $ldPath/as ]; then + ln -s $ldPath/as $out/bin/as + fi + + wrap ld ${./ld-wrapper.sh} ''${ld:-$ldPath/ld} + + if [ -e $binutils/bin/ld.gold ]; then + wrap ld.gold ${./ld-wrapper.sh} $binutils/bin/ld.gold + fi + + if [ -e $binutils/bin/ld.bfd ]; then + wrap ld.bfd ${./ld-wrapper.sh} $binutils/bin/ld.bfd + fi + + export real_cc=cc + export real_cxx=c++ + export default_cxx_stdlib_compile="${ + if stdenv.isLinux && !(cc.isGNU or false) + then "-isystem $(echo -n ${cc.gcc}/include/c++/*) -isystem $(echo -n ${cc.gcc}/include/c++/*)/$(${cc.gcc}/bin/gcc -dumpmachine)" + else "" + }" + + + if [ -e $ccPath/gcc ]; then + wrap gcc ${./cc-wrapper.sh} $ccPath/gcc + ln -s gcc $out/bin/cc + export real_cc=gcc + export real_cxx=g++ + elif [ -a $ccPath/icc ]; then + wrap icc ${./cc-wrapper.sh} $ccPath/icc + ln -s icc $out/bin/cc + export real_cc=icc + elif [ -e $ccPath/clang ]; then + wrap clang ${./cc-wrapper.sh} $ccPath/clang + ln -s clang $out/bin/cc + fi + + if [ -e $ccPath/g++ ]; then + wrap g++ ${./cc-wrapper.sh} $ccPath/g++ + ln -s g++ $out/bin/c++ + elif [ -e $ccPath/icpc ]; then + wrap icpc ${./cc-wrapper.sh} $ccPath/icpc + ln -s icpc $out/bin/c++ + elif [ -e $ccPath/clang++ ]; then + wrap clang++ ${./cc-wrapper.sh} $ccPath/clang++ + ln -s clang++ $out/bin/c++ + fi + + if [ -e $ccPath/cpp ]; then + wrap cpp ${./cc-wrapper.sh} $ccPath/cpp + fi + '' + + + optionalString cc.langFortran or false '' + if [ -e $ccPath/gfortran ]; then + wrap gfortran ${./cc-wrapper.sh} $ccPath/gfortran + ln -sv gfortran $out/bin/g77 + ln -sv gfortran $out/bin/f77 + elif [ -e $ccPath/ifort ]; then + wrap ifort ${./cc-wrapper.sh} $ccPath/ifort + ln -sv ifort $out/bin/gfortran + ln -sv ifort $out/bin/g77 + ln -sv ifort $out/bin/f77 + fi + + '' + + + optionalString cc.langJava or false '' + wrap gcj ${./cc-wrapper.sh} $ccPath/gcj + '' + + + optionalString cc.langGo or false '' + wrap gccgo ${./cc-wrapper.sh} $ccPath/gccgo + '' + + + optionalString cc.langAda or false '' + wrap gnatgcc ${./cc-wrapper.sh} $ccPath/gnatgcc + wrap gnatmake ${./gnat-wrapper.sh} $ccPath/gnatmake + wrap gnatbind ${./gnat-wrapper.sh} $ccPath/gnatbind + wrap gnatlink ${./gnatlink-wrapper.sh} $ccPath/gnatlink + '' + + + optionalString cc.langVhdl or false '' + ln -s $ccPath/ghdl $out/bin/ghdl + '' + + + '' + substituteAll ${./setup-hook.sh} $out/nix-support/setup-hook.tmp + cat $out/nix-support/setup-hook.tmp >> $out/nix-support/setup-hook + rm $out/nix-support/setup-hook.tmp + + substituteAll ${./add-flags} $out/nix-support/add-flags.sh + cp -p ${./utils.sh} $out/nix-support/utils.sh + '' + + extraBuildCommands; + + crossAttrs = {}; +# crossAttrs = { +# shell = shell.crossDrv + shell.crossDrv.shellPath; +# libc = stdenv.ccCross.libc; +# coreutils = coreutils.crossDrv; +# binutils = binutils.crossDrv; +# cc = cc.crossDrv; +# # +# # This is not the best way to do this. I think the reference should be +# # the style in the gcc-cross-wrapper, but to keep a stable stdenv now I +# # do this sufficient if/else. +# dynamicLinker = +# (if stdenv.cross.arch == "arm" then "ld-linux.so.3" else +# if stdenv.cross.arch == "mips" then "ld.so.1" else +# if stdenv.lib.hasSuffix "pc-gnu" stdenv.cross.config then "ld.so.1" else +# abort "don't know the name of the dynamic linker for this platform"); +# }; + + + # The dynamic linker has different names on different Linux platforms. + dynamicLinker = + if !nativeLibc then + (if stdenv.system == "i686-linux" then "ld-linux.so.2" else + if stdenv.system == "x86_64-linux" then "ld-linux-x86-64.so.2" else + if stdenv.system == "powerpc64-linux" then "ld64.so.1" else + # ARM with a wildcard, which can be "" or "-armhf". + if stdenv.isArm then "ld-linux*.so.3" else + if stdenv.system == "powerpc-linux" then "ld.so.1" else + if stdenv.system == "mips64el-linux" then "ld.so.1" else + if stdenv.system == "x86_64-darwin" then "/usr/lib/dyld" else + abort "Don't know the name of the dynamic linker for this platform.") + else ""; + + meta = + let cc_ = if cc != null then cc else {}; in + (if cc_ ? meta then removeAttrs cc.meta ["priority"] else {}) // + { description = + stdenv.lib.attrByPath ["meta" "description"] "System C compiler" cc_ + + " (wrapper script)"; + }; +} diff --git a/bsc/cc-wrapper-bbg/gnat-wrapper.sh b/bsc/cc-wrapper-bbg/gnat-wrapper.sh new file mode 100644 index 0000000..3514ccd --- /dev/null +++ b/bsc/cc-wrapper-bbg/gnat-wrapper.sh @@ -0,0 +1,103 @@ +#! @shell@ -e + +if [ -n "$NIX_GNAT_WRAPPER_START_HOOK" ]; then + source "$NIX_GNAT_WRAPPER_START_HOOK" +fi + +if [ -z "$NIX_GNAT_WRAPPER_FLAGS_SET" ]; then + source @out@/nix-support/add-flags.sh +fi + +source @out@/nix-support/utils.sh + + +# Figure out if linker flags should be passed. GCC prints annoying +# warnings when they are not needed. +dontLink=0 +getVersion=0 +nonFlagArgs=0 + +for i in "$@"; do + if [ "$i" = -c ]; then + dontLink=1 + elif [ "$i" = -M ]; then + dontLink=1 + elif [ "${i:0:1}" != - ]; then + nonFlagArgs=1 + elif [ "$i" = -m32 ]; then + if [ -e @out@/nix-support/dynamic-linker-m32 ]; then + NIX_LDFLAGS="$NIX_LDFLAGS -dynamic-linker $(cat @out@/nix-support/dynamic-linker-m32)" + fi + fi +done + +# If we pass a flag like -Wl, then gcc will call the linker unless it +# can figure out that it has to do something else (e.g., because of a +# "-c" flag). So if no non-flag arguments are given, don't pass any +# linker flags. This catches cases like "gcc" (should just print +# "gcc: no input files") and "gcc -v" (should print the version). +if [ "$nonFlagArgs" = 0 ]; then + dontLink=1 +fi + + +# Optionally filter out paths not refering to the store. +params=("$@") +if [ "$NIX_ENFORCE_PURITY" = 1 -a -n "$NIX_STORE" ]; then + rest=() + n=0 + while [ $n -lt ${#params[*]} ]; do + p=${params[n]} + p2=${params[$((n+1))]} + if [ "${p:0:3}" = -L/ ] && badPath "${p:2}"; then + skip $p + elif [ "${p:0:3}" = -I/ ] && badPath "${p:2}"; then + skip $p + elif [ "${p:0:4}" = -aI/ ] && badPath "${p:3}"; then + skip $p + elif [ "${p:0:4}" = -aO/ ] && badPath "${p:3}"; then + skip $p + else + rest=("${rest[@]}" "$p") + fi + n=$((n + 1)) + done + params=("${rest[@]}") +fi + + +# Add the flags for the GNAT compiler proper. +extraAfter=($NIX_GNATFLAGS_COMPILE) +extraBefore=() + +if [ "`basename $0`x" = "gnatmakex" ]; then + extraBefore=("--GNATBIND=@out@/bin/gnatbind --GNATLINK=@out@/bin/gnatlink ") +fi + +# Add the flags that should be passed to the linker (and prevent +# `ld-wrapper' from adding NIX_LDFLAGS again). +#for i in $NIX_LDFLAGS_BEFORE; do +# extraBefore=(${extraBefore[@]} "-largs $i") +#done + +# Optionally print debug info. +if [ -n "$NIX_DEBUG" ]; then + echo "original flags to @prog@:" >&2 + for i in "${params[@]}"; do + echo " $i" >&2 + done + echo "extraBefore flags to @prog@:" >&2 + for i in ${extraBefore[@]}; do + echo " $i" >&2 + done + echo "extraAfter flags to @prog@:" >&2 + for i in ${extraAfter[@]}; do + echo " $i" >&2 + done +fi + +if [ -n "$NIX_GNAT_WRAPPER_EXEC_HOOK" ]; then + source "$NIX_GNAT_WRAPPER_EXEC_HOOK" +fi + +exec @prog@ ${extraBefore[@]} "${params[@]}" ${extraAfter[@]} diff --git a/bsc/cc-wrapper-bbg/gnatlink-wrapper.sh b/bsc/cc-wrapper-bbg/gnatlink-wrapper.sh new file mode 100644 index 0000000..c9958db --- /dev/null +++ b/bsc/cc-wrapper-bbg/gnatlink-wrapper.sh @@ -0,0 +1,33 @@ +#! @shell@ -e + +# Add the flags for the GNAT compiler proper. +extraAfter="--GCC=@out@/bin/gcc" +extraBefore=() + +# Add the flags that should be passed to the linker (and prevent +# `ld-wrapper' from adding NIX_LDFLAGS again). +#for i in $NIX_LDFLAGS_BEFORE; do +# extraBefore=(${extraBefore[@]} "-largs $i") +#done + +# Optionally print debug info. +if [ -n "$NIX_DEBUG" ]; then + echo "original flags to @prog@:" >&2 + for i in "$@"; do + echo " $i" >&2 + done + echo "extraBefore flags to @prog@:" >&2 + for i in ${extraBefore[@]}; do + echo " $i" >&2 + done + echo "extraAfter flags to @prog@:" >&2 + for i in ${extraAfter[@]}; do + echo " $i" >&2 + done +fi + +if [ -n "$NIX_GNAT_WRAPPER_EXEC_HOOK" ]; then + source "$NIX_GNAT_WRAPPER_EXEC_HOOK" +fi + +exec @prog@ ${extraBefore[@]} "$@" ${extraAfter[@]} diff --git a/bsc/cc-wrapper-bbg/ld-solaris-wrapper.sh b/bsc/cc-wrapper-bbg/ld-solaris-wrapper.sh new file mode 100644 index 0000000..9216ea3 --- /dev/null +++ b/bsc/cc-wrapper-bbg/ld-solaris-wrapper.sh @@ -0,0 +1,40 @@ +#!/bin/bash + +set -e +set -u + +# I've also tried adding -z direct and -z lazyload, but it gave too many problems with C++ exceptions :'( +# Also made sure libgcc would not be lazy-loaded, as suggested here: https://www.illumos.org/issues/2534#note-3 +# but still no success. +cmd="@prog@ -z ignore" + +args=("$@"); + +# This loop makes sure all -L arguments are before -l arguments, or ld may complain it cannot find a library. +# GNU binutils does not have this problem: +# http://stackoverflow.com/questions/5817269/does-the-order-of-l-and-l-options-in-the-gnu-linker-matter +i=0; +while [[ $i -lt $# ]]; do + case "${args[$i]}" in + -L) cmd="$cmd ${args[$i]} ${args[($i+1)]}"; i=($i+1); ;; + -L*) cmd="$cmd ${args[$i]}" ;; + *) ;; + esac + i=($i+1); +done + +i=0; +while [[ $i -lt $# ]]; do + case "${args[$i]}" in + -L) i=($i+1); ;; + -L*) ;; + *) cmd="$cmd ${args[$i]}" ;; + esac + i=($i+1); +done + +# Trace: +set -x +exec $cmd + +exit 0 diff --git a/bsc/cc-wrapper-bbg/ld-wrapper.sh b/bsc/cc-wrapper-bbg/ld-wrapper.sh new file mode 100644 index 0000000..30c531b --- /dev/null +++ b/bsc/cc-wrapper-bbg/ld-wrapper.sh @@ -0,0 +1,166 @@ +#! @shell@ -e + +if [ -n "$NIX_LD_WRAPPER_START_HOOK" ]; then + source "$NIX_LD_WRAPPER_START_HOOK" +fi + +if [ -z "$NIX_CC_WRAPPER_FLAGS_SET" ]; then + source @out@/nix-support/add-flags.sh +fi + +source @out@/nix-support/utils.sh + + +# Optionally filter out paths not refering to the store. +params=("$@") +if [ "$NIX_ENFORCE_PURITY" = 1 -a -n "$NIX_STORE" \ + -a \( -z "$NIX_IGNORE_LD_THROUGH_GCC" -o -z "$NIX_LDFLAGS_SET" \) ]; then + rest=() + n=0 + while [ $n -lt ${#params[*]} ]; do + p=${params[n]} + p2=${params[$((n+1))]} + if [ "${p:0:3}" = -L/ ] && badPath "${p:2}"; then + skip $p + elif [ "$p" = -L ] && badPath "$p2"; then + n=$((n + 1)); skip $p2 + elif [ "$p" = -rpath ] && badPath "$p2"; then + n=$((n + 1)); skip $p2 + elif [ "$p" = -dynamic-linker ] && badPath "$p2"; then + n=$((n + 1)); skip $p2 + elif [ "${p:0:1}" = / ] && badPath "$p"; then + # We cannot skip this; barf. + echo "impure path \`$p' used in link" >&2 + exit 1 + elif [ "${p:0:9}" = --sysroot ]; then + # Our ld is not built with sysroot support (Can we fix that?) + : + else + rest=("${rest[@]}" "$p") + fi + n=$((n + 1)) + done + params=("${rest[@]}") +fi + + +extra=() +extraBefore=() + +if [ -z "$NIX_LDFLAGS_SET" ]; then + extra+=($NIX_LDFLAGS) + extraBefore+=($NIX_LDFLAGS_BEFORE) +fi + +extra+=($NIX_LDFLAGS_AFTER) + + +# Add all used dynamic libraries to the rpath. +if [ "$NIX_DONT_SET_RPATH" != 1 ]; then + + libPath="" + addToLibPath() { + local path="$1" + if [ "${path:0:1}" != / ]; then return 0; fi + case "$path" in + *..*|*./*|*/.*|*//*) + local path2 + if path2=$(readlink -f "$path"); then + path="$path2" + fi + ;; + esac + case $libPath in + *\ $path\ *) return 0 ;; + esac + libPath="$libPath $path " + } + + addToRPath() { + # If the path is not in the store, don't add it to the rpath. + # This typically happens for libraries in /tmp that are later + # copied to $out/lib. If not, we're screwed. + if [ "${1:0:${#NIX_STORE}}" != "$NIX_STORE" ]; then return 0; fi + case $rpath in + *\ $1\ *) return 0 ;; + esac + rpath="$rpath $1 " + } + + libs="" + addToLibs() { + libs="$libs $1" + } + + rpath="" + + # First, find all -L... switches. + allParams=("${params[@]}" ${extra[@]}) + n=0 + while [ $n -lt ${#allParams[*]} ]; do + p=${allParams[n]} + p2=${allParams[$((n+1))]} + if [ "${p:0:3}" = -L/ ]; then + addToLibPath ${p:2} + elif [ "$p" = -L ]; then + addToLibPath ${p2} + n=$((n + 1)) + elif [ "$p" = -l ]; then + addToLibs ${p2} + n=$((n + 1)) + elif [ "${p:0:2}" = -l ]; then + addToLibs ${p:2} + elif [ "$p" = -dynamic-linker ]; then + # Ignore the dynamic linker argument, or it + # will get into the next 'elif'. We don't want + # the dynamic linker path rpath to go always first. + n=$((n + 1)) + elif [[ "$p" =~ ^[^-].*\.so($|\.) ]]; then + # This is a direct reference to a shared library, so add + # its directory to the rpath. + path="$(dirname "$p")"; + addToRPath "${path}" + fi + n=$((n + 1)) + done + + # Second, for each directory in the library search path (-L...), + # see if it contains a dynamic library used by a -l... flag. If + # so, add the directory to the rpath. + # It's important to add the rpath in the order of -L..., so + # the link time chosen objects will be those of runtime linking. + + for i in $libPath; do + for j in $libs; do + if [ -f "$i/lib$j.so" ]; then + addToRPath $i + break + fi + done + done + + + # Finally, add `-rpath' switches. + for i in $rpath; do + extra=(${extra[@]} -rpath $i) + done +fi + + +# Optionally print debug info. +if [ -n "$NIX_DEBUG" ]; then + echo "original flags to @prog@:" >&2 + for i in "${params[@]}"; do + echo " $i" >&2 + done + echo "extra flags to @prog@:" >&2 + for i in ${extra[@]}; do + echo " $i" >&2 + done +fi + +if [ -n "$NIX_LD_WRAPPER_EXEC_HOOK" ]; then + source "$NIX_LD_WRAPPER_EXEC_HOOK" +fi + +exec @prog@ ${extraBefore[@]} "${params[@]}" ${extra[@]} diff --git a/bsc/cc-wrapper-bbg/setup-hook.sh b/bsc/cc-wrapper-bbg/setup-hook.sh new file mode 100644 index 0000000..3d0b2fd --- /dev/null +++ b/bsc/cc-wrapper-bbg/setup-hook.sh @@ -0,0 +1,47 @@ +export NIX_CC=@out@ + +addCVars () { + if [ -d $1/include ]; then + export NIX_CFLAGS_COMPILE+=" ${ccIncludeFlag:--isystem} $1/include" + fi + + if [ -d $1/lib64 -a ! -L $1/lib64 ]; then + export NIX_LDFLAGS+=" -L$1/lib64" + fi + + if [ -d $1/lib ]; then + export NIX_LDFLAGS+=" -L$1/lib" + fi + + if test -d $1/Library/Frameworks; then + export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -F$1/Library/Frameworks" + fi +} + +envHooks+=(addCVars) + +# Note: these come *after* $out in the PATH (see setup.sh). + +if [ -n "@cc@" ]; then + addToSearchPath PATH @cc@/bin +fi + +if [ -n "@binutils@" ]; then + addToSearchPath PATH @binutils@/bin +fi + +if [ -n "@libc@" ]; then + addToSearchPath PATH @libc@/bin +fi + +if [ -n "@coreutils@" ]; then + addToSearchPath PATH @coreutils@/bin +fi + +if [ -z "$crossConfig" ]; then + export CC=@real_cc@ + export CXX=@real_cxx@ +else + export BUILD_CC=@real_cc@ + export BUILD_CXX=@real_cxx@ +fi diff --git a/bsc/cc-wrapper-bbg/utils.sh b/bsc/cc-wrapper-bbg/utils.sh new file mode 100644 index 0000000..3ab512d --- /dev/null +++ b/bsc/cc-wrapper-bbg/utils.sh @@ -0,0 +1,24 @@ +skip () { + if [ -n "$NIX_DEBUG" ]; then + echo "skipping impure path $1" >&2 + fi +} + + +# Checks whether a path is impure. E.g., `/lib/foo.so' is impure, but +# `/nix/store/.../lib/foo.so' isn't. +badPath() { + local p=$1 + + # Relative paths are okay (since they're presumably relative to + # the temporary build directory). + if [ "${p:0:1}" != / ]; then return 1; fi + + # Otherwise, the path should refer to the store or some temporary + # directory (including the build directory). + test \ + "$p" != "/dev/null" -a \ + "${p:0:${#NIX_STORE}}" != "$NIX_STORE" -a \ + "${p:0:4}" != "/tmp" -a \ + "${p:0:${#NIX_BUILD_TOP}}" != "$NIX_BUILD_TOP" +} diff --git a/bsc/cc-wrapper/add-flags.sh b/bsc/cc-wrapper/add-flags.sh new file mode 100644 index 0000000..323ea5b --- /dev/null +++ b/bsc/cc-wrapper/add-flags.sh @@ -0,0 +1,57 @@ +# N.B. It may be a surprise that the derivation-specific variables are exported, +# since this is just sourced by the wrapped binaries---the end consumers. This +# is because one wrapper binary may invoke another (e.g. cc invoking ld). In +# that case, it is cheaper/better to not repeat this step and let the forked +# wrapped binary just inherit the work of the forker's wrapper script. + +var_templates_list=( + NIX+CFLAGS_COMPILE + NIX+CFLAGS_COMPILE_BEFORE + NIX+CFLAGS_LINK + NIX+CXXSTDLIB_COMPILE + NIX+CXXSTDLIB_LINK + NIX+GNATFLAGS_COMPILE +) +var_templates_bool=( + NIX+ENFORCE_NO_NATIVE +) + +accumulateRoles + +# We need to mangle names for hygiene, but also take parameters/overrides +# from the environment. +for var in "${var_templates_list[@]}"; do + mangleVarList "$var" ${role_infixes[@]+"${role_infixes[@]}"} +done +for var in "${var_templates_bool[@]}"; do + mangleVarBool "$var" ${role_infixes[@]+"${role_infixes[@]}"} +done + +# `-B@out@/bin' forces cc to use ld-wrapper.sh when calling ld. +NIX_@infixSalt@_CFLAGS_COMPILE="-B@out@/bin/ $NIX_@infixSalt@_CFLAGS_COMPILE" + +# Export and assign separately in order that a failing $(..) will fail +# the script. + +if [ -e @out@/nix-support/libc-cflags ]; then + NIX_@infixSalt@_CFLAGS_COMPILE="$(< @out@/nix-support/libc-cflags) $NIX_@infixSalt@_CFLAGS_COMPILE" +fi + +if [ -e @out@/nix-support/cc-cflags ]; then + NIX_@infixSalt@_CFLAGS_COMPILE="$(< @out@/nix-support/cc-cflags) $NIX_@infixSalt@_CFLAGS_COMPILE" +fi + +if [ -e @out@/nix-support/gnat-cflags ]; then + NIX_@infixSalt@_GNATFLAGS_COMPILE="$(< @out@/nix-support/gnat-cflags) $NIX_@infixSalt@_GNATFLAGS_COMPILE" +fi + +if [ -e @out@/nix-support/cc-ldflags ]; then + NIX_@infixSalt@_LDFLAGS+=" $(< @out@/nix-support/cc-ldflags)" +fi + +if [ -e @out@/nix-support/cc-cflags-before ]; then + NIX_@infixSalt@_CFLAGS_COMPILE_BEFORE="$(< @out@/nix-support/cc-cflags-before) $NIX_@infixSalt@_CFLAGS_COMPILE_BEFORE" +fi + +# That way forked processes will not extend these environment variables again. +export NIX_CC_WRAPPER_@infixSalt@_FLAGS_SET=1 diff --git a/bsc/cc-wrapper/add-hardening.sh b/bsc/cc-wrapper/add-hardening.sh new file mode 100644 index 0000000..fc40fe7 --- /dev/null +++ b/bsc/cc-wrapper/add-hardening.sh @@ -0,0 +1,72 @@ +declare -a hardeningCFlags=() + +declare -A hardeningEnableMap=() + +# Intentionally word-split in case 'NIX_HARDENING_ENABLE' is defined in Nix. The +# array expansion also prevents undefined variables from causing trouble with +# `set -u`. +for flag in ${NIX_@infixSalt@_HARDENING_ENABLE-}; do + hardeningEnableMap["$flag"]=1 +done + +# Remove unsupported flags. +for flag in @hardening_unsupported_flags@; do + unset -v "hardeningEnableMap[$flag]" +done + +if (( "${NIX_DEBUG:-0}" >= 1 )); then + declare -a allHardeningFlags=(fortify stackprotector pie pic strictoverflow format) + declare -A hardeningDisableMap=() + + # Determine which flags were effectively disabled so we can report below. + for flag in "${allHardeningFlags[@]}"; do + if [[ -z "${hardeningEnableMap[$flag]-}" ]]; then + hardeningDisableMap["$flag"]=1 + fi + done + + printf 'HARDENING: disabled flags:' >&2 + (( "${#hardeningDisableMap[@]}" )) && printf ' %q' "${!hardeningDisableMap[@]}" >&2 + echo >&2 + + if (( "${#hardeningEnableMap[@]}" )); then + echo 'HARDENING: Is active (not completely disabled with "all" flag)' >&2; + fi +fi + +for flag in "${!hardeningEnableMap[@]}"; do + case $flag in + fortify) + if (( "${NIX_DEBUG:-0}" >= 1 )); then echo HARDENING: enabling fortify >&2; fi + hardeningCFlags+=('-O2' '-D_FORTIFY_SOURCE=2') + ;; + stackprotector) + if (( "${NIX_DEBUG:-0}" >= 1 )); then echo HARDENING: enabling stackprotector >&2; fi + hardeningCFlags+=('-fstack-protector-strong' '--param' 'ssp-buffer-size=4') + ;; + pie) + if (( "${NIX_DEBUG:-0}" >= 1 )); then echo HARDENING: enabling CFlags -fPIE >&2; fi + hardeningCFlags+=('-fPIE') + if [[ ! ("$*" =~ " -shared " || "$*" =~ " -static ") ]]; then + if (( "${NIX_DEBUG:-0}" >= 1 )); then echo HARDENING: enabling LDFlags -pie >&2; fi + hardeningCFlags+=('-pie') + fi + ;; + pic) + if (( "${NIX_DEBUG:-0}" >= 1 )); then echo HARDENING: enabling pic >&2; fi + hardeningCFlags+=('-fPIC') + ;; + strictoverflow) + if (( "${NIX_DEBUG:-0}" >= 1 )); then echo HARDENING: enabling strictoverflow >&2; fi + hardeningCFlags+=('-fno-strict-overflow') + ;; + format) + if (( "${NIX_DEBUG:-0}" >= 1 )); then echo HARDENING: enabling format >&2; fi + hardeningCFlags+=('-Wformat' '-Wformat-security' '-Werror=format-security') + ;; + *) + # Ignore unsupported. Checked in Nix that at least *some* + # tool supports each flag. + ;; + esac +done diff --git a/bsc/cc-wrapper/cc-wrapper.sh b/bsc/cc-wrapper/cc-wrapper.sh new file mode 100644 index 0000000..ba3dfc9 --- /dev/null +++ b/bsc/cc-wrapper/cc-wrapper.sh @@ -0,0 +1,197 @@ +#! @shell@ +set -eu -o pipefail +o posix +shopt -s nullglob + +if (( "${NIX_DEBUG:-0}" >= 7 )); then + set -x +fi + +path_backup="$PATH" + +# That @-vars are substituted separately from bash evaluation makes +# shellcheck think this, and others like it, are useless conditionals. +# shellcheck disable=SC2157 +if [[ -n "@coreutils_bin@" && -n "@gnugrep_bin@" ]]; then + PATH="@coreutils_bin@/bin:@gnugrep_bin@/bin" +fi + +source @out@/nix-support/utils.bash + +# Flirting with a layer violation here. +if [ -z "${NIX_BINTOOLS_WRAPPER_@infixSalt@_FLAGS_SET:-}" ]; then + source @bintools@/nix-support/add-flags.sh +fi + +# Put this one second so libc ldflags take priority. +if [ -z "${NIX_CC_WRAPPER_@infixSalt@_FLAGS_SET:-}" ]; then + source @out@/nix-support/add-flags.sh +fi + + +# Parse command line options and set several variables. +# For instance, figure out if linker flags should be passed. +# GCC prints annoying warnings when they are not needed. +dontLink=0 +nonFlagArgs=0 +cc1=0 +# shellcheck disable=SC2193 +[[ "@prog@" = *++ ]] && isCpp=1 || isCpp=0 +cppInclude=1 + +expandResponseParams "$@" +declare -i n=0 +nParams=${#params[@]} +while (( "$n" < "$nParams" )); do + p=${params[n]} + p2=${params[n+1]:-} # handle `p` being last one + if [ "$p" = -c ]; then + dontLink=1 + elif [ "$p" = -S ]; then + dontLink=1 + elif [ "$p" = -E ]; then + dontLink=1 + elif [ "$p" = -E ]; then + dontLink=1 + elif [ "$p" = -M ]; then + dontLink=1 + elif [ "$p" = -MM ]; then + dontLink=1 + elif [[ "$p" = -x && "$p2" = *-header ]]; then + dontLink=1 + elif [[ "$p" = -x && "$p2" = c++* && "$isCpp" = 0 ]]; then + isCpp=1 + elif [ "$p" = -nostdlib ]; then + isCpp=-1 + elif [ "$p" = -nostdinc ]; then + cppInclude=0 + elif [ "$p" = -nostdinc++ ]; then + cppInclude=0 + elif [[ "$p" != -?* ]]; then + # A dash alone signifies standard input; it is not a flag + nonFlagArgs=1 + elif [ "$p" = -cc1 ]; then + cc1=1 + fi + n+=1 +done + +# If we pass a flag like -Wl, then gcc will call the linker unless it +# can figure out that it has to do something else (e.g., because of a +# "-c" flag). So if no non-flag arguments are given, don't pass any +# linker flags. This catches cases like "gcc" (should just print +# "gcc: no input files") and "gcc -v" (should print the version). +if [ "$nonFlagArgs" = 0 ]; then + dontLink=1 +fi + +# Optionally filter out paths not refering to the store. +if [[ "${NIX_ENFORCE_PURITY:-}" = 1 && -n "$NIX_STORE" ]]; then + rest=() + nParams=${#params[@]} + declare -i n=0 + while (( "$n" < "$nParams" )); do + p=${params[n]} + p2=${params[n+1]:-} # handle `p` being last one + if [ "${p:0:3}" = -L/ ] && badPath "${p:2}"; then + skip "${p:2}" + elif [ "$p" = -L ] && badPath "$p2"; then + n+=1; skip "$p2" + elif [ "${p:0:3}" = -I/ ] && badPath "${p:2}"; then + skip "${p:2}" + elif [ "$p" = -I ] && badPath "$p2"; then + n+=1; skip "$p2" + elif [ "$p" = -isystem ] && badPath "$p2"; then + n+=1; skip "$p2" + else + rest+=("$p") + fi + n+=1 + done + # Old bash empty array hack + params=(${rest+"${rest[@]}"}) +fi + + +# Clear march/mtune=native -- they bring impurity. +if [ "$NIX_@infixSalt@_ENFORCE_NO_NATIVE" = 1 ]; then + rest=() + # Old bash empty array hack + for p in ${params+"${params[@]}"}; do + if [[ "$p" = -m*=native ]]; then + skip "$p" + else + rest+=("$p") + fi + done + # Old bash empty array hack + params=(${rest+"${rest[@]}"}) +fi + +if [[ "$isCpp" = 1 ]]; then + if [[ "$cppInclude" = 1 ]]; then + NIX_@infixSalt@_CFLAGS_COMPILE+=" ${NIX_@infixSalt@_CXXSTDLIB_COMPILE:-@default_cxx_stdlib_compile@}" + fi + NIX_@infixSalt@_CFLAGS_LINK+=" $NIX_@infixSalt@_CXXSTDLIB_LINK" +fi + +source @out@/nix-support/add-hardening.sh + +# Add the flags for the C compiler proper. +extraAfter=($NIX_@infixSalt@_CFLAGS_COMPILE) +extraBefore=(${hardeningCFlags[@]+"${hardeningCFlags[@]}"} $NIX_@infixSalt@_CFLAGS_COMPILE_BEFORE) + +if [ "$dontLink" != 1 ]; then + + # Add the flags that should only be passed to the compiler when + # linking. + extraAfter+=($NIX_@infixSalt@_CFLAGS_LINK) + + # Add the flags that should be passed to the linker (and prevent + # `ld-wrapper' from adding NIX_@infixSalt@_LDFLAGS again). + for i in $NIX_@infixSalt@_LDFLAGS_BEFORE; do + extraBefore+=("-Wl,$i") + done + for i in $NIX_@infixSalt@_LDFLAGS; do + if [ "${i:0:3}" = -L/ ]; then + extraAfter+=("$i") + else + extraAfter+=("-Wl,$i") + fi + done + export NIX_@infixSalt@_LDFLAGS_SET=1 +fi + +# As a very special hack, if the arguments are just `-v', then don't +# add anything. This is to prevent `gcc -v' (which normally prints +# out the version number and returns exit code 0) from printing out +# `No input files specified' and returning exit code 1. +if [ "$*" = -v ]; then + extraAfter=() + extraBefore=() +fi + +# clang's -cc1 mode is not compatible with most options +# that we would pass. Rather than trying to pass only +# options that would work, let's just remove all of them. +if [ "$cc1" = 1 ]; then + extraAfter=() + extraBefore=() +fi + +# Optionally print debug info. +if (( "${NIX_DEBUG:-0}" >= 1 )); then + # Old bash workaround, see ld-wrapper for explanation. + echo "extra flags before to @prog@:" >&2 + printf " %q\n" ${extraBefore+"${extraBefore[@]}"} >&2 + echo "original flags to @prog@:" >&2 + printf " %q\n" ${params+"${params[@]}"} >&2 + echo "extra flags after to @prog@:" >&2 + printf " %q\n" ${extraAfter+"${extraAfter[@]}"} >&2 +fi + +PATH="$path_backup" +# Old bash workaround, see above. +exec @prog@ \ + ${extraBefore+"${extraBefore[@]}"} \ + ${params+"${params[@]}"} \ + ${extraAfter+"${extraAfter[@]}"} diff --git a/bsc/cc-wrapper/default.nix b/bsc/cc-wrapper/default.nix new file mode 100644 index 0000000..f3c3a8c --- /dev/null +++ b/bsc/cc-wrapper/default.nix @@ -0,0 +1,420 @@ +# The Nixpkgs CC is not directly usable, since it doesn't know where +# the C library and standard header files are. Therefore the compiler +# produced by that package cannot be installed directly in a user +# environment and used from the command line. So we use a wrapper +# script that sets up the right environment variables so that the +# compiler and the linker just "work". + +{ name ? "" +, stdenvNoCC +, cc ? null, libc ? null, bintools, coreutils ? null, shell ? stdenvNoCC.shell +, zlib ? null +, nativeTools, noLibc ? false, nativeLibc, nativePrefix ? "" +, propagateDoc ? cc != null && cc ? man +, extraTools ? [], extraPackages ? [], extraBuildCommands ? "" +, isGNU ? false, isClang ? cc.isClang or false, gnugrep ? null +, buildPackages ? {} +, libcxx ? null +}: + +with stdenvNoCC.lib; + +assert nativeTools -> !propagateDoc && nativePrefix != ""; +assert !nativeTools -> + cc != null && coreutils != null && gnugrep != null; +assert !(nativeLibc && noLibc); +assert (noLibc || nativeLibc) == (libc == null); + +let + stdenv = stdenvNoCC; + inherit (stdenv) hostPlatform targetPlatform; + + # Prefix for binaries. Customarily ends with a dash separator. + # + # TODO(@Ericson2314) Make unconditional, or optional but always true by + # default. + targetPrefix = stdenv.lib.optionalString (targetPlatform != hostPlatform) + (targetPlatform.config + "-"); + + ccVersion = stdenv.lib.getVersion cc; + ccName = stdenv.lib.removePrefix targetPrefix (stdenv.lib.getName cc); + + libc_bin = if libc == null then null else getBin libc; + libc_dev = if libc == null then null else getDev libc; + libc_lib = if libc == null then null else getLib libc; + cc_solib = getLib cc + + optionalString (targetPlatform != hostPlatform) "/${targetPlatform.config}"; + + # The wrapper scripts use 'cat' and 'grep', so we may need coreutils. + coreutils_bin = if nativeTools then "" else getBin coreutils; + + default_cxx_stdlib_compile = if (targetPlatform.isLinux && !(cc.isGNU or false) && !nativeTools && cc ? gcc) && !(targetPlatform.useLLVM or false) then + "-isystem $(echo -n ${cc.gcc}/include/c++/*) -isystem $(echo -n ${cc.gcc}/include/c++/*)/${targetPlatform.config}" + else if targetPlatform.isDarwin && (libcxx != null) && (cc.isClang or false) && !(targetPlatform.useLLVM or false) then + "-isystem ${libcxx}/include/c++/v1" + else ""; + + # The "infix salt" is a arbitrary string added in the middle of env vars + # defined by cc-wrapper's hooks so that multiple cc-wrappers can be used + # without interfering. For the moment, it is defined as the target triple, + # adjusted to be a valid bash identifier. This should be considered an + # unstable implementation detail, however. + infixSalt = replaceStrings ["-" "."] ["_" "_"] targetPlatform.config; + + expand-response-params = ""; +# if buildPackages.stdenv.hasCC && buildPackages.stdenv.cc != "/dev/null" +# then import ../expand-response-params { inherit (buildPackages) stdenv; } +# else ""; + + # older compilers (for example bootstrap's GCC 5) fail with -march=too-modern-cpu + isGccArchSupported = arch: + if cc.isGNU or false then + { skylake = versionAtLeast ccVersion "6.0"; + skylake-avx512 = versionAtLeast ccVersion "6.0"; + cannonlake = versionAtLeast ccVersion "8.0"; + icelake-client = versionAtLeast ccVersion "8.0"; + icelake-server = versionAtLeast ccVersion "8.0"; + knm = versionAtLeast ccVersion "8.0"; + }.${arch} or true + else if cc.isClang or false then + { cannonlake = versionAtLeast ccVersion "5.0"; + icelake-client = versionAtLeast ccVersion "7.0"; + icelake-server = versionAtLeast ccVersion "7.0"; + knm = versionAtLeast ccVersion "7.0"; + }.${arch} or true + else + false; + +in + +# Ensure bintools matches +assert libc_bin == bintools.libc_bin; +assert libc_dev == bintools.libc_dev; +assert libc_lib == bintools.libc_lib; +assert nativeTools == bintools.nativeTools; +assert nativeLibc == bintools.nativeLibc; +assert nativePrefix == bintools.nativePrefix; + +stdenv.mkDerivation { + pname = targetPrefix + + (if name != "" then name else "${ccName}-wrapper"); + version = if cc == null then null else ccVersion; + + preferLocalBuild = true; + + inherit cc libc_bin libc_dev libc_lib bintools coreutils_bin; + shell = getBin shell + shell.shellPath or ""; + gnugrep_bin = if nativeTools then "" else gnugrep; + + inherit targetPrefix infixSalt; + + outputs = [ "out" ] ++ optionals propagateDoc [ "man" "info" ]; + + passthru = { + # "cc" is the generic name for a C compiler, but there is no one for package + # providing the linker and related tools. The two we use now are GNU + # Binutils, and Apple's "cctools"; "bintools" as an attempt to find an + # unused middle-ground name that evokes both. + inherit bintools; + inherit libc nativeTools nativeLibc nativePrefix isGNU isClang default_cxx_stdlib_compile; + + emacsBufferSetup = pkgs: '' + ; We should handle propagation here too + (mapc + (lambda (arg) + (when (file-directory-p (concat arg "/include")) + (setenv "NIX_${infixSalt}_CFLAGS_COMPILE" (concat (getenv "NIX_${infixSalt}_CFLAGS_COMPILE") " -isystem " arg "/include")))) + '(${concatStringsSep " " (map (pkg: "\"${pkg}\"") pkgs)})) + ''; + }; + + dontBuild = true; + dontConfigure = true; + + unpackPhase = '' + src=$PWD + ''; + + wrapper = ./cc-wrapper.sh; + + installPhase = + '' + mkdir -p $out/bin $out/nix-support + + wrap() { + local dst="$1" + local wrapper="$2" + export prog="$3" + substituteAll "$wrapper" "$out/bin/$dst" + chmod +x "$out/bin/$dst" + } + '' + + + (if nativeTools then '' + echo ${if targetPlatform.isDarwin then cc else nativePrefix} > $out/nix-support/orig-cc + + ccPath="${if targetPlatform.isDarwin then cc else nativePrefix}/bin" + '' else '' + echo $cc > $out/nix-support/orig-cc + + ccPath="${cc}/bin" + '') + + + '' + # Create symlinks to everything in the bintools wrapper. + for bbin in $bintools/bin/*; do + mkdir -p "$out/bin" + ln -s "$bbin" "$out/bin/$(basename $bbin)" + done + + # We export environment variables pointing to the wrapped nonstandard + # cmds, lest some lousy configure script use those to guess compiler + # version. + export named_cc=${targetPrefix}cc + export named_cxx=${targetPrefix}c++ + + export default_cxx_stdlib_compile="${default_cxx_stdlib_compile}" + + if [ -e $ccPath/${targetPrefix}gcc ]; then + wrap ${targetPrefix}gcc $wrapper $ccPath/${targetPrefix}gcc + ln -s ${targetPrefix}gcc $out/bin/${targetPrefix}cc + export named_cc=${targetPrefix}gcc + export named_cxx=${targetPrefix}g++ + elif [ -e $ccPath/clang ]; then + wrap ${targetPrefix}clang $wrapper $ccPath/clang + ln -s ${targetPrefix}clang $out/bin/${targetPrefix}cc + export named_cc=${targetPrefix}clang + export named_cxx=${targetPrefix}clang++ + fi + + if [ -e $ccPath/${targetPrefix}g++ ]; then + wrap ${targetPrefix}g++ $wrapper $ccPath/${targetPrefix}g++ + ln -s ${targetPrefix}g++ $out/bin/${targetPrefix}c++ + elif [ -e $ccPath/clang++ ]; then + wrap ${targetPrefix}clang++ $wrapper $ccPath/clang++ + ln -s ${targetPrefix}clang++ $out/bin/${targetPrefix}c++ + fi + + if [ -e $ccPath/cpp ]; then + wrap ${targetPrefix}cpp $wrapper $ccPath/cpp + fi + '' + + + optionalString cc.langAda or false '' + wrap ${targetPrefix}gnatmake ${./gnat-wrapper.sh} $ccPath/${targetPrefix}gnatmake + wrap ${targetPrefix}gnatbind ${./gnat-wrapper.sh} $ccPath/${targetPrefix}gnatbind + wrap ${targetPrefix}gnatlink ${./gnat-wrapper.sh} $ccPath/${targetPrefix}gnatlink + '' + + + optionalString cc.langD or false '' + wrap ${targetPrefix}gdc $wrapper $ccPath/${targetPrefix}gdc + '' + + + optionalString cc.langFortran or false '' + wrap ${targetPrefix}gfortran $wrapper $ccPath/${targetPrefix}gfortran + ln -sv ${targetPrefix}gfortran $out/bin/${targetPrefix}g77 + ln -sv ${targetPrefix}gfortran $out/bin/${targetPrefix}f77 + '' + + + optionalString cc.langJava or false '' + wrap ${targetPrefix}gcj $wrapper $ccPath/${targetPrefix}gcj + '' + + + optionalString cc.langGo or false '' + wrap ${targetPrefix}gccgo $wrapper $ccPath/${targetPrefix}gccgo + ''; + + strictDeps = true; + propagatedBuildInputs = [ bintools ] ++ extraTools ++ optionals cc.langD or false [ zlib ]; + depsTargetTargetPropagated = extraPackages; + + wrapperName = "CC_WRAPPER"; + + setupHooks = [ + ../setup-hooks/role.bash + ./setup-hook.sh + ]; + + postFixup = + '' + # Backwards compatability for packages expecting this file, e.g. with + # `$NIX_CC/nix-support/dynamic-linker`. + # + # TODO(@Ericson2314): Remove this after stable release and force + # everyone to refer to bintools-wrapper directly. + if [[ -f "$bintools/nix-support/dynamic-linker" ]]; then + ln -s "$bintools/nix-support/dynamic-linker" "$out/nix-support" + fi + if [[ -f "$bintools/nix-support/dynamic-linker-m32" ]]; then + ln -s "$bintools/nix-support/dynamic-linker-m32" "$out/nix-support" + fi + '' + + + optionalString (libc != null) ('' + ## + ## General libc support + ## + + # The "-B${libc_lib}/lib/" flag is a quick hack to force gcc to link + # against the crt1.o from our own glibc, rather than the one in + # /usr/lib. (This is only an issue when using an `impure' + # compiler/linker, i.e., one that searches /usr/lib and so on.) + # + # Unfortunately, setting -B appears to override the default search + # path. Thus, the gcc-specific "../includes-fixed" directory is + # now longer searched and glibc's header fails to + # compile, because it uses "#include_next " to find the + # limits.h file in ../includes-fixed. To remedy the problem, + # another -idirafter is necessary to add that directory again. + echo "-B${libc_lib}${libc.libdir or "/lib/"}" >> $out/nix-support/libc-cflags + '' + optionalString (!(cc.langD or false)) '' + echo "-idirafter ${libc_dev}${libc.incdir or "/include"}" >> $out/nix-support/libc-cflags + '' + optionalString (isGNU && (!(cc.langD or false))) '' + for dir in "${cc}"/lib/gcc/*/*/include-fixed; do + echo '-idirafter' ''${dir} >> $out/nix-support/libc-cflags + done + '' + '' + + echo "${libc_lib}" > $out/nix-support/orig-libc + echo "${libc_dev}" > $out/nix-support/orig-libc-dev + '') + + + optionalString (!nativeTools) '' + ## + ## Initial CFLAGS + ## + + # GCC shows ${cc_solib}/lib in `gcc -print-search-dirs', but not + # ${cc_solib}/lib64 (even though it does actually search there...).. + # This confuses libtool. So add it to the compiler tool search + # path explicitly. + if [ -e "${cc_solib}/lib64" -a ! -L "${cc_solib}/lib64" ]; then + ccLDFlags+=" -L${cc_solib}/lib64" + ccCFlags+=" -B${cc_solib}/lib64" + fi + ccLDFlags+=" -L${cc_solib}/lib" + ccCFlags+=" -B${cc_solib}/lib" + + '' + optionalString cc.langAda or false '' + basePath=$(echo $cc/lib/*/*/*) + ccCFlags+=" -B$basePath -I$basePath/adainclude" + gnatCFlags="-I$basePath/adainclude -I$basePath/adalib" + + echo "$gnatCFlags" > $out/nix-support/gnat-cflags + '' + '' + echo "$ccLDFlags" > $out/nix-support/cc-ldflags + echo "$ccCFlags" > $out/nix-support/cc-cflags + '' + optionalString (targetPlatform.isDarwin && (libcxx != null) && (cc.isClang or false)) '' + echo " -L${libcxx}/lib" >> $out/nix-support/cc-ldflags + '' + optionalString propagateDoc '' + ## + ## Man page and info support + ## + + ln -s ${cc.man} $man + ln -s ${cc.info} $info + '' + optionalString (cc.langD or false) '' + echo "-B${zlib}${zlib.libdir or "/lib/"}" >> $out/nix-support/libc-cflags + '' + + + '' + ## + ## Hardening support + ## + + export hardening_unsupported_flags="${builtins.concatStringsSep " " (cc.hardeningUnsupportedFlags or [])}" + '' + + # Machine flags. These are necessary to support + + # TODO: We should make a way to support miscellaneous machine + # flags and other gcc flags as well. + + # Always add -march based on cpu in triple. Sometimes there is a + # discrepency (x86_64 vs. x86-64), so we provide an "arch" arg in + # that case. + + optionalString ((targetPlatform ? platform.gcc.arch) && + isGccArchSupported targetPlatform.platform.gcc.arch) '' + echo "-march=${targetPlatform.platform.gcc.arch}" >> $out/nix-support/cc-cflags-before + '' + + # -mcpu is not very useful. You should use mtune and march + # instead. It’s provided here for backwards compatibility. + + optionalString (targetPlatform ? platform.gcc.cpu) '' + echo "-mcpu=${targetPlatform.platform.gcc.cpu}" >> $out/nix-support/cc-cflags-before + '' + + # -mfloat-abi only matters on arm32 but we set it here + # unconditionally just in case. If the abi specifically sets hard + # vs. soft floats we use it here. + + optionalString (targetPlatform ? platform.gcc.float-abi) '' + echo "-mfloat-abi=${targetPlatform.platform.gcc.float-abi}" >> $out/nix-support/cc-cflags-before + '' + + optionalString (targetPlatform ? platform.gcc.fpu) '' + echo "-mfpu=${targetPlatform.platform.gcc.fpu}" >> $out/nix-support/cc-cflags-before + '' + + optionalString (targetPlatform ? platform.gcc.mode) '' + echo "-mmode=${targetPlatform.platform.gcc.mode}" >> $out/nix-support/cc-cflags-before + '' + + optionalString (targetPlatform ? platform.gcc.tune && + isGccArchSupported targetPlatform.platform.gcc.tune) '' + echo "-mtune=${targetPlatform.platform.gcc.tune}" >> $out/nix-support/cc-cflags-before + '' + + # TODO: categorize these and figure out a better place for them + + optionalString hostPlatform.isCygwin '' + hardening_unsupported_flags+=" pic" + '' + optionalString targetPlatform.isMinGW '' + hardening_unsupported_flags+=" stackprotector" + '' + optionalString targetPlatform.isAvr '' + hardening_unsupported_flags+=" stackprotector pic" + '' + optionalString (targetPlatform.libc == "newlib") '' + hardening_unsupported_flags+=" stackprotector fortify pie pic" + '' + optionalString targetPlatform.isNetBSD '' + hardening_unsupported_flags+=" stackprotector fortify" + '' + optionalString cc.langAda or false '' + hardening_unsupported_flags+=" stackprotector strictoverflow" + '' + optionalString cc.langD or false '' + hardening_unsupported_flags+=" format" + '' + optionalString targetPlatform.isWasm '' + hardening_unsupported_flags+=" stackprotector fortify pie pic" + '' + + + optionalString (libc != null && targetPlatform.isAvr) '' + for isa in avr5 avr3 avr4 avr6 avr25 avr31 avr35 avr51 avrxmega2 avrxmega4 avrxmega5 avrxmega6 avrxmega7 tiny-stack; do + echo "-B${getLib libc}/avr/lib/$isa" >> $out/nix-support/libc-cflags + done + '' + + # There are a few tools (to name one libstdcxx5) which do not work + # well with multi line flags, so make the flags single line again + + '' + if [ -e "$out/nix-support/libc-cflags" ]; then + substituteInPlace "$out/nix-support/libc-cflags" --replace $'\n' ' ' + fi + + substituteAll ${./add-flags.sh} $out/nix-support/add-flags.sh + substituteAll ${./add-hardening.sh} $out/nix-support/add-hardening.sh + substituteAll ${../wrapper-common/utils.bash} $out/nix-support/utils.bash + + ## + ## Extra custom steps + ## + '' + + + extraBuildCommands; + + inherit expand-response-params; + + # for substitution in utils.bash + expandResponseParams = "${expand-response-params}/bin/expand-response-params"; + + meta = + let cc_ = if cc != null then cc else {}; in + (if cc_ ? meta then removeAttrs cc.meta ["priority"] else {}) // + { description = + stdenv.lib.attrByPath ["meta" "description"] "System C compiler" cc_ + + " (wrapper script)"; + priority = 10; + }; +} diff --git a/bsc/cc-wrapper/gnat-wrapper.sh b/bsc/cc-wrapper/gnat-wrapper.sh new file mode 100644 index 0000000..15b53d7 --- /dev/null +++ b/bsc/cc-wrapper/gnat-wrapper.sh @@ -0,0 +1,165 @@ +#! @shell@ +set -eu -o pipefail +o posix +shopt -s nullglob + +if (( "${NIX_DEBUG:-0}" >= 7 )); then + set -x +fi + +path_backup="$PATH" + +# That @-vars are substituted separately from bash evaluation makes +# shellcheck think this, and others like it, are useless conditionals. +# shellcheck disable=SC2157 +if [[ -n "@coreutils_bin@" && -n "@gnugrep_bin@" ]]; then + PATH="@coreutils_bin@/bin:@gnugrep_bin@/bin" +fi + +source @out@/nix-support/utils.bash + +# Flirting with a layer violation here. +if [ -z "${NIX_BINTOOLS_WRAPPER_@infixSalt@_FLAGS_SET:-}" ]; then + source @bintools@/nix-support/add-flags.sh +fi + +# Put this one second so libc ldflags take priority. +if [ -z "${NIX_CC_WRAPPER_@infixSalt@_FLAGS_SET:-}" ]; then + source @out@/nix-support/add-flags.sh +fi + + +# Parse command line options and set several variables. +# For instance, figure out if linker flags should be passed. +# GCC prints annoying warnings when they are not needed. +dontLink=0 +nonFlagArgs=0 +# shellcheck disable=SC2193 + +expandResponseParams "$@" +declare -i n=0 +nParams=${#params[@]} +while (( "$n" < "$nParams" )); do + p=${params[n]} + p2=${params[n+1]:-} # handle `p` being last one + if [ "$p" = -c ]; then + dontLink=1 + elif [ "$p" = -S ]; then + dontLink=1 + elif [ "$p" = -E ]; then + dontLink=1 + elif [ "$p" = -E ]; then + dontLink=1 + elif [ "$p" = -M ]; then + dontLink=1 + elif [ "$p" = -MM ]; then + dontLink=1 + elif [[ "$p" = -x && "$p2" = *-header ]]; then + dontLink=1 + elif [[ "$p" != -?* ]]; then + # A dash alone signifies standard input; it is not a flag + nonFlagArgs=1 + fi + n+=1 +done + +# If we pass a flag like -Wl, then gcc will call the linker unless it +# can figure out that it has to do something else (e.g., because of a +# "-c" flag). So if no non-flag arguments are given, don't pass any +# linker flags. This catches cases like "gcc" (should just print +# "gcc: no input files") and "gcc -v" (should print the version). +if [ "$nonFlagArgs" = 0 ]; then + dontLink=1 +fi + +# Optionally filter out paths not refering to the store. +if [[ "${NIX_ENFORCE_PURITY:-}" = 1 && -n "$NIX_STORE" ]]; then + rest=() + nParams=${#params[@]} + declare -i n=0 + while (( "$n" < "$nParams" )); do + p=${params[n]} + p2=${params[n+1]:-} # handle `p` being last one + if [ "${p:0:3}" = -L/ ] && badPath "${p:2}"; then + skip "${p:2}" + elif [ "$p" = -L ] && badPath "$p2"; then + n+=1; skip "$p2" + elif [ "${p:0:3}" = -I/ ] && badPath "${p:2}"; then + skip "${p:2}" + elif [ "$p" = -I ] && badPath "$p2"; then + n+=1; skip "$p2" + elif [ "${p:0:4}" = -aI/ ] && badPath "${p:3}"; then + skip "${p:3}" + elif [ "$p" = -aI ] && badPath "$p2"; then + n+=1; skip "$p2" + elif [ "${p:0:4}" = -aO/ ] && badPath "${p:3}"; then + skip "${p:3}" + elif [ "$p" = -aO ] && badPath "$p2"; then + n+=1; skip "$p2" + elif [ "$p" = -isystem ] && badPath "$p2"; then + n+=1; skip "$p2" + else + rest+=("$p") + fi + n+=1 + done + # Old bash empty array hack + params=(${rest+"${rest[@]}"}) +fi + + +# Clear march/mtune=native -- they bring impurity. +if [ "$NIX_@infixSalt@_ENFORCE_NO_NATIVE" = 1 ]; then + rest=() + # Old bash empty array hack + for p in ${params+"${params[@]}"}; do + if [[ "$p" = -m*=native ]]; then + skip "$p" + else + rest+=("$p") + fi + done + # Old bash empty array hack + params=(${rest+"${rest[@]}"}) +fi + +if [ "$(basename $0)x" = "gnatmakex" ]; then + extraBefore=("--GNATBIND=@out@/bin/gnatbind" "--GNATLINK=@out@/bin/gnatlink") + extraAfter=($NIX_@infixSalt@_GNATFLAGS_COMPILE) +fi + +if [ "$(basename $0)x" = "gnatbindx" ]; then + extraBefore=() + extraAfter=($NIX_@infixSalt@_GNATFLAGS_COMPILE) +fi + +if [ "$(basename $0)x" = "gnatlinkx" ]; then + extraBefore=() + extraAfter=("--GCC=@out@/bin/gcc") +fi + +# As a very special hack, if the arguments are just `-v', then don't +# add anything. This is to prevent `gcc -v' (which normally prints +# out the version number and returns exit code 0) from printing out +# `No input files specified' and returning exit code 1. +if [ "$*" = -v ]; then + extraAfter=() + extraBefore=() +fi + +# Optionally print debug info. +if (( "${NIX_DEBUG:-0}" >= 1 )); then + # Old bash workaround, see ld-wrapper for explanation. + echo "extra flags before to @prog@:" >&2 + printf " %q\n" ${extraBefore+"${extraBefore[@]}"} >&2 + echo "original flags to @prog@:" >&2 + printf " %q\n" ${params+"${params[@]}"} >&2 + echo "extra flags after to @prog@:" >&2 + printf " %q\n" ${extraAfter+"${extraAfter[@]}"} >&2 +fi + +PATH="$path_backup" +# Old bash workaround, see above. +exec @prog@ \ + ${extraBefore+"${extraBefore[@]}"} \ + ${params+"${params[@]}"} \ + ${extraAfter+"${extraAfter[@]}"} diff --git a/bsc/cc-wrapper/setup-hook.sh b/bsc/cc-wrapper/setup-hook.sh new file mode 100644 index 0000000..5b13f26 --- /dev/null +++ b/bsc/cc-wrapper/setup-hook.sh @@ -0,0 +1,120 @@ +# CC Wrapper hygiene +# +# For at least cross compilation, we need to depend on multiple cc-wrappers at +# once---specifically up to one per sort of dependency. This follows from having +# different tools targeting different platforms, and different flags for those +# tools. For example: +# +# # Flags for compiling (whether or not linking) C code for the... +# NIX_BUILD_CFLAGS_COMPILE # ...build platform +# NIX_CFLAGS_COMPILE # ...host platform +# NIX_TARGET_CFLAGS_COMPILE # ...target platform +# +# Notice that these platforms are the 3 *relative* to the package using +# cc-wrapper, not absolute like `x86_64-pc-linux-gnu`. +# +# The simplest solution would be to have separate cc-wrappers per (3 intended +# use-cases * n absolute concrete platforms). For the use-case axis, we would +# @-splice in 'BUILD_' '' 'TARGET_' to use the write environment variables when +# building the cc-wrapper, and likewise prefix the binaries' names so they didn't +# clobber each other on the PATH. But the need for 3x cc-wrappers, along with +# non-standard name prefixes, is annoying and liable to break packages' build +# systems. +# +# Instead, we opt to have just one cc-wrapper per absolute platform. Matching +# convention, the binaries' names can just be prefixed with their target +# platform. On the other hand, that means packages will depend on not just +# multiple cc-wrappers, but the exact same cc-wrapper derivation multiple ways. +# That means the exact same cc-wrapper derivation must be able to avoid +# conflicting with itself, despite the fact that `setup-hook.sh`, the `addCvars` +# function, and `add-flags.sh` are all communicating with each other with +# environment variables. Yuck. +# +# The basic strategy is: +# +# - Everyone exclusively *adds information* to relative-platform-specific +# environment variables, like `NIX_TARGET_CFLAGS_COMPILE`, to communicate +# with the wrapped binaries. +# +# - The wrapped binaries will exclusively *read* cc-wrapper-derivation-specific +# environment variables distinguished with with `infixSalt`, like +# `NIX_@infixSalt@_CFLAGS_COMPILE`. +# +# - `add-flags`, beyond its old task of reading extra flags stuck inside the +# cc-wrapper derivation, will convert the relative-platform-specific +# variables to cc-wrapper-derivation-specific variables. This conversion is +# the only time all but one of the cc-wrapper-derivation-specific variables +# are set. +# +# This ensures the flow of information is exclusive from +# relative-platform-specific variables to cc-wrapper-derivation-specific +# variables. This allows us to support the general case of a many--many relation +# between relative platforms and cc-wrapper derivations. +# +# For more details, read the individual files where the mechanisms used to +# accomplish this will be individually documented. + +# Skip setup hook if we're neither a build-time dep, nor, temporarily, doing a +# native compile. +# +# TODO(@Ericson2314): No native exception +[[ -z ${strictDeps-} ]] || (( "$hostOffset" < 0 )) || return 0 + +# It's fine that any other cc-wrapper will redefine this. Bash functions close +# over no state, and there's no @-substitutions within, so any redefined +# function is guaranteed to be exactly the same. +ccWrapper_addCVars () { + # See ../setup-hooks/role.bash + local role_post role_pre + getHostRoleEnvHook + + if [ -d "$1/include" ]; then + export NIX_${role_pre}CFLAGS_COMPILE+=" -isystem $1/include" + fi + + if [ -d "$1/Library/Frameworks" ]; then + export NIX_${role_pre}CFLAGS_COMPILE+=" -iframework $1/Library/Frameworks" + fi +} + +# See ../setup-hooks/role.bash +getTargetRole +getTargetRoleWrapper + +# We use the `targetOffset` to choose the right env hook to accumulate the right +# sort of deps (those with that offset). +addEnvHooks "$targetOffset" ccWrapper_addCVars + +# Note 1: these come *after* $out in the PATH (see setup.sh). +# Note 2: phase separation makes this look useless to shellcheck. + +# shellcheck disable=SC2157 +if [ -n "@cc@" ]; then + addToSearchPath _PATH @cc@/bin +fi + +# shellcheck disable=SC2157 +if [ -n "@libc_bin@" ]; then + addToSearchPath _PATH @libc_bin@/bin +fi + +# shellcheck disable=SC2157 +if [ -n "@coreutils_bin@" ]; then + addToSearchPath _PATH @coreutils_bin@/bin +fi + +# Export tool environment variables so various build systems use the right ones. + +export NIX_${role_pre}CC=@out@ + +export ${role_pre}CC=@named_cc@ +export ${role_pre}CXX=@named_cxx@ +export CC${role_post}=@named_cc@ +export CXX${role_post}=@named_cxx@ + +# If unset, assume the default hardening flags. +: ${NIX_HARDENING_ENABLE="fortify stackprotector pic strictoverflow format relro bindnow"} +export NIX_HARDENING_ENABLE + +# No local scope in sourced file +unset -v role_pre role_post diff --git a/bsc/cpic/default.nix b/bsc/cpic/default.nix index e16b1f6..133a81d 100644 --- a/bsc/cpic/default.nix +++ b/bsc/cpic/default.nix @@ -2,53 +2,65 @@ stdenv , libconfig , nanos6 -, llvm-ompss2 , mpi , uthash , overrideCC , llvmPackages_10 , fftw +, tampi +, hdf5 +, libgcc +, strace +, gcc }: -with stdenv.lib; - -let - buildStdenv = overrideCC stdenv [ llvm-ompss2 ]; -in -buildStdenv.mkDerivation rec { +stdenv.mkDerivation rec { name = "cpic"; - src = "${builtins.getEnv "HOME"}/cpic"; + # Use my current cpic version, so I can test changes without commits + src = /home/Computational/rarias/cpic; + # src = builtins.fetchGit { # url = "https://github.com/rodarima/cpic"; ## rev = "73bd70448587f0925b89e24c8f17e412ea3958e6"; # ref = "master"; # }; -# patchPhase = '' -# echo LD=$LD -# echo CC=$CC -# echo =================================================== -# env -# echo =================================================== -# echo ${buildStdenv} -# echo =================================================== -# ''; + postConfigure = '' + env | grep NIX + ''; - configurePhase = '' - ls -l / + + preConfigure = '' export NANOS6_HOME="${nanos6}" ''; - enableParallelBuilding = true; + #enableParallelBuilding = true; buildInputs = [ libconfig nanos6 - llvm-ompss2 mpi uthash - llvmPackages_10.bintools +# llvmPackages_10.bintools fftw +# tampi + hdf5 + libgcc + strace + gcc ]; + +# Doesnt work +# export LIBRARY_PATH=${libgcc}/lib +# export LD_LIBRARY_PATH=${libgcc}/lib +# buildPhase = '' +# #NIX_DEBUG=5 strace -ff -s99999 -e trace=execve make SHELL='bash -x' +# NIX_DEBUG=5 strace -ff -s99999 -e trace=execve make SHELL='bash -x' +# ''; + + installPhase = '' + mkdir -p $out/bin + cp cpic $out/bin/cpic + ''; } diff --git a/bsc/dummy/default.nix b/bsc/dummy/default.nix index 3470ebb..00d0874 100644 --- a/bsc/dummy/default.nix +++ b/bsc/dummy/default.nix @@ -9,6 +9,9 @@ src = null; dontUnpack = true; - buildPhase = ''ls -l /''; + buildPhase = '' + ls -l / + echo "${stdenv}" + ''; }; } diff --git a/bsc/fftw/default.nix b/bsc/fftw/default.nix new file mode 100644 index 0000000..71971c3 --- /dev/null +++ b/bsc/fftw/default.nix @@ -0,0 +1,58 @@ +{ fetchurl, stdenv, lib, llvmPackages ? null, precision ? "double", perl, mpi }: + +with lib; + +assert stdenv.cc.isClang -> llvmPackages != null; +assert elem precision [ "single" "double" "long-double" "quad-precision" ]; + +let + version = "3.3.8"; + withDoc = stdenv.cc.isGNU; +in + +stdenv.mkDerivation { + name = "fftw-${precision}-${version}"; + + src = fetchurl { + urls = [ + "http://fftw.org/fftw-${version}.tar.gz" + "ftp://ftp.fftw.org/pub/fftw/fftw-${version}.tar.gz" + ]; + sha256 = "00z3k8fq561wq2khssqg0kallk0504dzlx989x3vvicjdqpjc4v1"; + }; + + outputs = [ "out" "dev" "man" ] + ++ optional withDoc "info"; # it's dev-doc only + outputBin = "dev"; # fftw-wisdom + + buildInputs = [ mpi ] + ++ lib.optionals stdenv.cc.isClang [ + # TODO: This may mismatch the LLVM version sin the stdenv, see #79818. + llvmPackages.openmp + ]; + + configureFlags = + [ "--enable-shared" + "--enable-threads" + "--enable-mpi" + "--disable-openmp" + ] + ++ optional (precision != "double") "--enable-${precision}" + # all x86_64 have sse2 + # however, not all float sizes fit + ++ optional (stdenv.isx86_64 && (precision == "single" || precision == "double") ) "--enable-sse2" + # doc generation causes Fortran wrapper generation which hard-codes gcc + ++ optional (!withDoc) "--disable-doc"; + + enableParallelBuilding = true; + + checkInputs = [ perl ]; + + meta = with stdenv.lib; { + description = "Fastest Fourier Transform in the West library"; + homepage = "http://www.fftw.org/"; + license = licenses.gpl2Plus; + maintainers = [ maintainers.spwhitt ]; + platforms = platforms.unix; + }; +} diff --git a/bsc/llvm-ompss2/default.nix b/bsc/llvm-ompss2/default.nix index a083f61..db05719 100644 --- a/bsc/llvm-ompss2/default.nix +++ b/bsc/llvm-ompss2/default.nix @@ -11,13 +11,17 @@ , libelf , libffi , pkg-config -, enableDebug ? false +, enableDebug ? true }: stdenv.mkDerivation rec { version = "11.0.0"; - name = "llvm-ompss2-${version}"; + pname = "clang-ompss2"; enableParallelBuilding = true; + isClang = true; + isGNU = true; + + isClangWithOmpss = true; buildInputs = [ which @@ -46,8 +50,8 @@ stdenv.mkDerivation rec { "-DCMAKE_EXE_LINKER_FLAGS_DEBUG=-Wl,-gdb-index" "-DLLVM_LIT_ARGS=-sv --xunit-xml-output=xunit.xml" "-DLLVM_ENABLE_PROJECTS=clang;openmp" - "-DLLVM_INSTALL_UTILS=ON" "-DLLVM_ENABLE_ASSERTIONS=ON" + "-DLLVM_INSTALL_TOOLCHAIN_ONLY=ON" ) ''; diff --git a/bsc/nanos6/.git.nix.swp b/bsc/nanos6/.git.nix.swp new file mode 100644 index 0000000000000000000000000000000000000000..4e57ed46521624d8620f41f94e109d8bd4935f6b GIT binary patch literal 12288 zcmYc?2=nw+FxN9-U|?VnU|>*meIB>TYZ8NIxiUjhVlGIOAg)Nw&oeM5sEnbmC^1(* zsW@3TFSDW`JH1#hJ+lPF*UwAL%P%(5PtPpT%gd}FY|yBR(GVC70Wv~>m%-S`&;X=S zSxHerSSS?49L1v{Fd71*Aut*OqaiRF0;3@?8UmvsFd70QBm_zd7#Zpr7#NtK{c!@%&6hk@Zb z4+Fz#9tMVkJPZumco-O(co-NOc_4oEnfk8n*K|xzvK_fFwK_j)Iq$n{}LD5zruQVq|Q=udyHBTWLA{wiZ znp2#r5FM*&O`a~WO$CVsnF_IBW=45VelnPqSDKrcT#^H3C*|iCmw;IX+3C8;`FUxX z>0oY7W>QIhK15MsX-R%=VslBSgL8^fL0pgg{A>mVg{0EVoD|Qzg3^*=1zUw^ zkbh&X!Ag~Mb;~nLGIWb8bCdFObc<4p^K(i|GV}9nGxJh1i&B$Ilo%8gKt^SzmlmbE zJ0WyX;G?zt%ABb$Sp8~ij#{n3rdRh(^K@RsC-Ulk~ITEtrdfg0w@I{B|04iNFvrzfaDwo9R*Ob mXV6iABzYYLSc2D4KuY8~3a}&&F%gvVpoT-!I>cs%Y6bx0TVGQE literal 0 HcmV?d00001 diff --git a/bsc/nanos6/default.nix b/bsc/nanos6/default.nix index d849bf0..1201af7 100644 --- a/bsc/nanos6/default.nix +++ b/bsc/nanos6/default.nix @@ -28,9 +28,12 @@ stdenv.mkDerivation rec { preConfigure = '' cd ${pname}-${version} sed -i 's|/bin/echo|echo|g' loader/scripts/common.sh loader/scripts/lint/common.sh - autoreconf -fiv ''; + configureFlags = [ + "--with-symbol-resolution=indirect" + ]; + #configureFlags = [] # ++ (if (extrae != null) then ["--with-extrae=${extrae}"] else [""]); diff --git a/bsc/setup-hooks/audit-blas.sh b/bsc/setup-hooks/audit-blas.sh new file mode 100644 index 0000000..6a40073 --- /dev/null +++ b/bsc/setup-hooks/audit-blas.sh @@ -0,0 +1,37 @@ +# Ensure that we are always linking against “libblas.so.3” and +# “liblapack.so.3”. + +auditBlas() { + local dir="$prefix" + [ -e "$dir" ] || return 0 + + local i + while IFS= read -r -d $'\0' i; do + if ! isELF "$i"; then continue; fi + + if $OBJDUMP -p "$i" | grep 'NEEDED' | awk '{ print $2; }' | grep -q '\(libmkl_rt.so\|libopenblas.so.0\)'; then + echo "$i refers to a specific implementation of BLAS or LAPACK." + echo "This prevents users from switching BLAS/LAPACK implementations." + echo "Add \`blas' or \`lapack' to buildInputs instead of \`mkl' or \`openblas'." + exit 1 + fi + + (IFS=: + for dir in "$(patchelf --print-rpath "$i")"; do + if [ -f "$dir/libblas.so.3" ] || [ -f "$dir/libblas.so" ]; then + if [ "$dir" != "@blas@/lib" ]; then + echo "$dir is not allowed to contain a library named libblas.so.3" + exit 1 + fi + fi + if [ -f "$dir/liblapack.so.3" ] || [ -f "$dir/liblapack.so" ]; then + if [ "$dir" != "@lapack@/lib" ]; then + echo "$dir is not allowed to contain a library named liblapack.so.3" + exit 1 + fi + fi + done) + done < <(find "$dir" -type f -print0) +} + +fixupOutputHooks+=(auditBlas) diff --git a/bsc/setup-hooks/audit-tmpdir.sh b/bsc/setup-hooks/audit-tmpdir.sh new file mode 100644 index 0000000..c9dd32d --- /dev/null +++ b/bsc/setup-hooks/audit-tmpdir.sh @@ -0,0 +1,41 @@ +# Check whether RPATHs or wrapper scripts contain references to +# $TMPDIR. This is a serious security bug because it allows any user +# to inject files into search paths of other users' processes. +# +# It might be better to have Nix scan build output for any occurrence +# of $TMPDIR (which would also be good for reproducibility), but at +# the moment that would produce too many spurious errors (e.g. debug +# info or assertion messages that refer to $TMPDIR). + +fixupOutputHooks+=('if [[ -z "${noAuditTmpdir-}" && -e "$prefix" ]]; then auditTmpdir "$prefix"; fi') + +auditTmpdir() { + local dir="$1" + [ -e "$dir" ] || return 0 + + header "checking for references to $TMPDIR/ in $dir..." + + local i + while IFS= read -r -d $'\0' i; do + if [[ "$i" =~ .build-id ]]; then continue; fi + + if isELF "$i"; then + if { printf :; patchelf --print-rpath "$i"; } | grep -q -F ":$TMPDIR/"; then + echo "RPATH of binary $i contains a forbidden reference to $TMPDIR/" + exit 1 + fi + fi + + if isScript "$i"; then + if [ -e "$(dirname "$i")/.$(basename "$i")-wrapped" ]; then + if grep -q -F "$TMPDIR/" "$i"; then + echo "wrapper script $i contains a forbidden reference to $TMPDIR/" + exit 1 + fi + fi + fi + + done < <(find "$dir" -type f -print0) + + stopNest +} diff --git a/bsc/setup-hooks/auto-patchelf.sh b/bsc/setup-hooks/auto-patchelf.sh new file mode 100644 index 0000000..7297062 --- /dev/null +++ b/bsc/setup-hooks/auto-patchelf.sh @@ -0,0 +1,237 @@ +declare -a autoPatchelfLibs + +gatherLibraries() { + autoPatchelfLibs+=("$1/lib") +} + +addEnvHooks "$targetOffset" gatherLibraries + +isExecutable() { + # For dynamically linked ELF files it would be enough to check just for the + # INTERP section. However, we won't catch statically linked executables as + # they only have an ELF type of EXEC but no INTERP. + # + # So what we do here is just check whether *either* the ELF type is EXEC + # *or* there is an INTERP section. This also catches position-independent + # executables, as they typically have an INTERP section but their ELF type + # is DYN. + isExeResult="$(LANG=C $READELF -h -l "$1" 2> /dev/null \ + | grep '^ *Type: *EXEC\>\|^ *INTERP\>')" + # not using grep -q, because it can cause Broken pipe + [ -n "$isExeResult" ] +} + +# We cache dependencies so that we don't need to search through all of them on +# every consecutive call to findDependency. +declare -a cachedDependencies + +addToDepCache() { + local existing + for existing in "${cachedDependencies[@]}"; do + if [ "$existing" = "$1" ]; then return; fi + done + cachedDependencies+=("$1") +} + +declare -gi depCacheInitialised=0 +declare -gi doneRecursiveSearch=0 +declare -g foundDependency + +getDepsFromSo() { + ldd "$1" 2> /dev/null | sed -n -e 's/[^=]*=> *\(.\+\) \+([^)]*)$/\1/p' +} + +populateCacheWithRecursiveDeps() { + local so found foundso + for so in "${cachedDependencies[@]}"; do + for found in $(getDepsFromSo "$so"); do + local libdir="${found%/*}" + local base="${found##*/}" + local soname="${base%.so*}" + for foundso in "${found%/*}/$soname".so*; do + addToDepCache "$foundso" + done + done + done +} + +getSoArch() { + objdump -f "$1" | sed -ne 's/^architecture: *\([^,]\+\).*/\1/p' +} + +# NOTE: If you want to use this function outside of the autoPatchelf function, +# keep in mind that the dependency cache is only valid inside the subshell +# spawned by the autoPatchelf function, so invoking this directly will possibly +# rebuild the dependency cache. See the autoPatchelf function below for more +# information. +findDependency() { + local filename="$1" + local arch="$2" + local lib dep + + if [ $depCacheInitialised -eq 0 ]; then + for lib in "${autoPatchelfLibs[@]}"; do + for so in "$lib/"*.so*; do addToDepCache "$so"; done + done + depCacheInitialised=1 + fi + + for dep in "${cachedDependencies[@]}"; do + if [ "$filename" = "${dep##*/}" ]; then + if [ "$(getSoArch "$dep")" = "$arch" ]; then + foundDependency="$dep" + return 0 + fi + fi + done + + # Populate the dependency cache with recursive dependencies *only* if we + # didn't find the right dependency so far and afterwards run findDependency + # again, but this time with $doneRecursiveSearch set to 1 so that it won't + # recurse again (and thus infinitely). + if [ $doneRecursiveSearch -eq 0 ]; then + populateCacheWithRecursiveDeps + doneRecursiveSearch=1 + findDependency "$filename" "$arch" || return 1 + return 0 + fi + return 1 +} + +autoPatchelfFile() { + local dep rpath="" toPatch="$1" + + local interpreter="$(< "$NIX_CC/nix-support/dynamic-linker")" + if isExecutable "$toPatch"; then + patchelf --set-interpreter "$interpreter" "$toPatch" + if [ -n "$runtimeDependencies" ]; then + for dep in $runtimeDependencies; do + rpath="$rpath${rpath:+:}$dep/lib" + done + fi + fi + + echo "searching for dependencies of $toPatch" >&2 + + # We're going to find all dependencies based on ldd output, so we need to + # clear the RPATH first. + patchelf --remove-rpath "$toPatch" + + local missing="$( + ldd "$toPatch" 2> /dev/null | \ + sed -n -e 's/^[\t ]*\([^ ]\+\) => not found.*/\1/p' + )" + + # This ensures that we get the output of all missing dependencies instead + # of failing at the first one, because it's more useful when working on a + # new package where you don't yet know its dependencies. + local -i depNotFound=0 + + for dep in $missing; do + echo -n " $dep -> " >&2 + if findDependency "$dep" "$(getSoArch "$toPatch")"; then + rpath="$rpath${rpath:+:}${foundDependency%/*}" + echo "found: $foundDependency" >&2 + else + echo "not found!" >&2 + depNotFound=1 + fi + done + + # This makes sure the builder fails if we didn't find a dependency, because + # the stdenv setup script is run with set -e. The actual error is emitted + # earlier in the previous loop. + [ $depNotFound -eq 0 ] + + if [ -n "$rpath" ]; then + echo "setting RPATH to: $rpath" >&2 + patchelf --set-rpath "$rpath" "$toPatch" + fi +} + +# Can be used to manually add additional directories with shared object files +# to be included for the next autoPatchelf invocation. +addAutoPatchelfSearchPath() { + local -a findOpts=() + + # XXX: Somewhat similar to the one in the autoPatchelf function, maybe make + # it DRY someday... + while [ $# -gt 0 ]; do + case "$1" in + --) shift; break;; + --no-recurse) shift; findOpts+=("-maxdepth" 1);; + --*) + echo "addAutoPatchelfSearchPath: ERROR: Invalid command line" \ + "argument: $1" >&2 + return 1;; + *) break;; + esac + done + + cachedDependencies+=( + $(find "$@" "${findOpts[@]}" \! -type d \ + \( -name '*.so' -o -name '*.so.*' \)) + ) +} + +autoPatchelf() { + local norecurse= + + while [ $# -gt 0 ]; do + case "$1" in + --) shift; break;; + --no-recurse) shift; norecurse=1;; + --*) + echo "autoPatchelf: ERROR: Invalid command line" \ + "argument: $1" >&2 + return 1;; + *) break;; + esac + done + + if [ $# -eq 0 ]; then + echo "autoPatchelf: No paths to patch specified." >&2 + return 1 + fi + + echo "automatically fixing dependencies for ELF files" >&2 + + # Add all shared objects of the current output path to the start of + # cachedDependencies so that it's choosen first in findDependency. + addAutoPatchelfSearchPath ${norecurse:+--no-recurse} -- "$@" + + # Here we actually have a subshell, which also means that + # $cachedDependencies is final at this point, so whenever we want to run + # findDependency outside of this, the dependency cache needs to be rebuilt + # from scratch, so keep this in mind if you want to run findDependency + # outside of this function. + while IFS= read -r -d $'\0' file; do + isELF "$file" || continue + segmentHeaders="$(LANG=C $READELF -l "$file")" + # Skip if the ELF file doesn't have segment headers (eg. object files). + # not using grep -q, because it can cause Broken pipe + [ -n "$(echo "$segmentHeaders" | grep '^Program Headers:')" ] || continue + if isExecutable "$file"; then + # Skip if the executable is statically linked. + [ -n "$(echo "$segmentHeaders" | grep "^ *INTERP\\>")" ] || continue + fi + autoPatchelfFile "$file" + done < <(find "$@" ${norecurse:+-maxdepth 1} -type f -print0) +} + +# XXX: This should ultimately use fixupOutputHooks but we currently don't have +# a way to enforce the order. If we have $runtimeDependencies set, the setup +# hook of patchelf is going to ruin everything and strip out those additional +# RPATHs. +# +# So what we do here is basically run in postFixup and emulate the same +# behaviour as fixupOutputHooks because the setup hook for patchelf is run in +# fixupOutput and the postFixup hook runs later. +postFixupHooks+=(' + if [ -z "${dontAutoPatchelf-}" ]; then + autoPatchelf -- $(for output in $outputs; do + [ -e "${!output}" ] || continue + echo "${!output}" + done) + fi +') diff --git a/bsc/setup-hooks/autoreconf.sh b/bsc/setup-hooks/autoreconf.sh new file mode 100644 index 0000000..c08cab1 --- /dev/null +++ b/bsc/setup-hooks/autoreconf.sh @@ -0,0 +1,7 @@ +preConfigurePhases+=" autoreconfPhase" + +autoreconfPhase() { + runHook preAutoreconf + autoreconf ${autoreconfFlags:---install --force --verbose} + runHook postAutoreconf +} diff --git a/bsc/setup-hooks/breakpoint-hook.sh b/bsc/setup-hooks/breakpoint-hook.sh new file mode 100644 index 0000000..6bef786 --- /dev/null +++ b/bsc/setup-hooks/breakpoint-hook.sh @@ -0,0 +1,9 @@ +breakpointHook() { + local red='\033[0;31m' + local no_color='\033[0m' + + echo -e "${red}build failed in ${curPhase} with exit code ${exitCode}${no_color}" + printf "To attach install cntr and run the following command as root:\n\n" + sh -c "echo ' cntr attach -t command cntr-${out}'; while true; do sleep 99999999; done" +} +failureHooks+=(breakpointHook) diff --git a/bsc/setup-hooks/compress-man-pages.sh b/bsc/setup-hooks/compress-man-pages.sh new file mode 100644 index 0000000..82e48cd --- /dev/null +++ b/bsc/setup-hooks/compress-man-pages.sh @@ -0,0 +1,32 @@ +fixupOutputHooks+=('if [ -z "${dontGzipMan-}" ]; then compressManPages "$prefix"; fi') + +compressManPages() { + local dir="$1" + + if [ -L "$dir"/share ] || [ -L "$dir"/share/man ] || [ ! -d "$dir/share/man" ] + then return + fi + echo "gzipping man pages under $dir/share/man/" + + # Compress all uncompressed manpages. Don't follow symlinks, etc. + find "$dir"/share/man/ -type f -a '!' -regex '.*\.\(bz2\|gz\)$' -print0 \ + | while IFS= read -r -d $'\0' f + do + if gzip -c -n "$f" > "$f".gz; then + rm "$f" + else + rm "$f".gz + fi + done + + # Point symlinks to compressed manpages. + find "$dir"/share/man/ -type l -a '!' -regex '.*\.\(bz2\|gz\)$' -print0 \ + | while IFS= read -r -d $'\0' f + do + local target + target="$(readlink -f "$f")" + if [ -f "$target".gz ]; then + ln -sf "$target".gz "$f".gz && rm "$f" + fi + done +} diff --git a/bsc/setup-hooks/die.sh b/bsc/setup-hooks/die.sh new file mode 100644 index 0000000..0db41e0 --- /dev/null +++ b/bsc/setup-hooks/die.sh @@ -0,0 +1,21 @@ +# Exit with backtrace and error message +# +# Usage: die "Error message" +die() { + # Let us be a little sloppy with errors, because otherwise the final + # invocation of `caller` below will cause the script to exit. + set +e + + # Print our error message + printf "\nBuilder called die: %b\n" "$*" + printf "Backtrace:\n" + + # Print a backtrace. + local frame=0 + while caller $frame; do + ((frame++)); + done + printf "\n" + + exit 1 +} diff --git a/bsc/setup-hooks/enable-coverage-instrumentation.sh b/bsc/setup-hooks/enable-coverage-instrumentation.sh new file mode 100644 index 0000000..2b48fea --- /dev/null +++ b/bsc/setup-hooks/enable-coverage-instrumentation.sh @@ -0,0 +1,20 @@ +postPhases+=" cleanupBuildDir" + +# Force GCC to build with coverage instrumentation. Also disable +# optimisation, since it may confuse things. +export NIX_CFLAGS_COMPILE="${NIX_CFLAGS_COMPILE:-} -O0 --coverage" + +# Get rid of everything that isn't a gcno file or a C source file. +# Also strip the `.tmp_' prefix from gcno files. (The Linux kernel +# creates these.) +cleanupBuildDir() { + if ! [ -e $out/.build ]; then return; fi + + find $out/.build/ -type f -a ! \ + \( -name "*.c" -o -name "*.cc" -o -name "*.cpp" -o -name "*.h" -o -name "*.hh" -o -name "*.y" -o -name "*.l" -o -name "*.gcno" \) \ + | xargs rm -f -- + + for i in $(find $out/.build/ -name ".tmp_*.gcno"); do + mv "$i" "$(echo $i | sed s/.tmp_//)" + done +} diff --git a/bsc/setup-hooks/find-xml-catalogs.sh b/bsc/setup-hooks/find-xml-catalogs.sh new file mode 100644 index 0000000..f446a6f --- /dev/null +++ b/bsc/setup-hooks/find-xml-catalogs.sh @@ -0,0 +1,22 @@ +addXMLCatalogs () { + local d i + # ‘xml/dtd’ and ‘xml/xsl’ are deprecated. Catalogs should be + # installed underneath ‘share/xml’. + for d in $1/share/xml $1/xml/dtd $1/xml/xsl; do + if [ -d $d ]; then + for i in $(find $d -name catalog.xml); do + XML_CATALOG_FILES+=" $i" + done + fi + done +} + +if [ -z "${libxmlHookDone-}" ]; then + libxmlHookDone=1 + + # Set up XML_CATALOG_FILES. An empty initial value prevents + # xmllint and xsltproc from looking in /etc/xml/catalog. + export XML_CATALOG_FILES='' + if [ -z "$XML_CATALOG_FILES" ]; then XML_CATALOG_FILES=" "; fi + addEnvHooks "$hostOffset" addXMLCatalogs +fi diff --git a/bsc/setup-hooks/fix-darwin-dylib-names.sh b/bsc/setup-hooks/fix-darwin-dylib-names.sh new file mode 100644 index 0000000..af2ff0c --- /dev/null +++ b/bsc/setup-hooks/fix-darwin-dylib-names.sh @@ -0,0 +1,40 @@ +# On macOS, binaries refer to dynamic library dependencies using +# either relative paths (e.g. "libicudata.dylib", searched relative to +# $DYLD_LIBRARY_PATH) or absolute paths +# (e.g. "/nix/store/.../lib/libicudata.dylib"). In Nix, the latter is +# preferred since it allows programs to just work. When linking +# against a library (e.g. "-licudata"), the linker uses the install +# name embedded in the dylib (which can be shown using "otool -D"). +# Most packages create dylibs with absolute install names, but some do +# not. This setup hook fixes dylibs by setting their install names to +# their absolute path (using "install_name_tool -id"). It also +# rewrites references in other dylibs to absolute paths. + +fixupOutputHooks+=('fixDarwinDylibNamesIn $prefix') + +fixDarwinDylibNames() { + local flags=() + local old_id + + for fn in "$@"; do + flags+=(-change "$(basename "$fn")" "$fn") + done + + for fn in "$@"; do + if [ -L "$fn" ]; then continue; fi + echo "$fn: fixing dylib" + int_out=$(install_name_tool -id "$fn" "${flags[@]}" "$fn" 2>&1) + result=$? + if [ "$result" -ne 0 ] && + ! grep "shared library stub file and can't be changed" <<< "$out" + then + echo "$int_out" >&2 + exit "$result" + fi + done +} + +fixDarwinDylibNamesIn() { + local dir="$1" + fixDarwinDylibNames $(find "$dir" -name "*.dylib") +} diff --git a/bsc/setup-hooks/gog-unpack.sh b/bsc/setup-hooks/gog-unpack.sh new file mode 100644 index 0000000..559b543 --- /dev/null +++ b/bsc/setup-hooks/gog-unpack.sh @@ -0,0 +1,11 @@ +unpackPhase="unpackGog" + +unpackGog() { + runHook preUnpackGog + + innoextract --silent --extract --exclude-temp "${src}" + + find . -depth -print -execdir rename -f 'y/A-Z/a-z/' '{}' \; + + runHook postUnpackGog +} diff --git a/bsc/setup-hooks/install-shell-files.sh b/bsc/setup-hooks/install-shell-files.sh new file mode 100644 index 0000000..e0ea1f7 --- /dev/null +++ b/bsc/setup-hooks/install-shell-files.sh @@ -0,0 +1,165 @@ +#!/bin/bash +# Setup hook for the `installShellFiles` package. +# +# Example usage in a derivation: +# +# { …, installShellFiles, … }: +# stdenv.mkDerivation { +# … +# nativeBuildInputs = [ installShellFiles ]; +# postInstall = '' +# installManPage share/doc/foobar.1 +# installShellCompletion share/completions/foobar.{bash,fish,zsh} +# ''; +# … +# } +# +# See comments on each function for more details. + +# installManPage [...] +# +# Each argument is checked for its man section suffix and installed into the appropriate +# share/man/ directory. The function returns an error if any paths don't have the man section +# suffix (with optional .gz compression). +installManPage() { + local path + for path in "$@"; do + if (( "${NIX_DEBUG:-0}" >= 1 )); then + echo "installManPage: installing $path" + fi + if test -z "$path"; then + echo "installManPage: error: path cannot be empty" >&2 + return 1 + fi + local basename + basename=$(stripHash "$path") # use stripHash in case it's a nix store path + local trimmed=${basename%.gz} # don't get fooled by compressed manpages + local suffix=${trimmed##*.} + if test -z "$suffix" -o "$suffix" = "$trimmed"; then + echo "installManPage: error: path missing manpage section suffix: $path" >&2 + return 1 + fi + local outRoot + if test "$suffix" = 3; then + outRoot=${!outputDevman:?} + else + outRoot=${!outputMan:?} + fi + install -Dm644 -T "$path" "${outRoot}/share/man/man$suffix/$basename" || return + done +} + +# installShellCompletion [--bash|--fish|--zsh] ([--name ] )... +# +# Each path is installed into the appropriate directory for shell completions for the given shell. +# If one of `--bash`, `--fish`, or `--zsh` is given the path is assumed to belong to that shell. +# Otherwise the file extension will be examined to pick a shell. If the shell is unknown a warning +# will be logged and the command will return a non-zero status code after processing any remaining +# paths. Any of the shell flags will affect all subsequent paths (unless another shell flag is +# given). +# +# If the shell completion needs to be renamed before installing the optional `--name ` flag +# may be given. Any name provided with this flag only applies to the next path. +# +# For zsh completions, if the `--name` flag is not given, the path will be automatically renamed +# such that `foobar.zsh` becomes `_foobar`. +# +# This command accepts multiple shell flags in conjunction with multiple paths if you wish to +# install them all in one command: +# +# installShellCompletion share/completions/foobar.{bash,fish} --zsh share/completions/_foobar +# +# However it may be easier to read if each shell is split into its own invocation, especially when +# renaming is involved: +# +# installShellCompletion --bash --name foobar.bash share/completions.bash +# installShellCompletion --fish --name foobar.fish share/completions.fish +# installShellCompletion --zsh --name _foobar share/completions.zsh +# +# If any argument is `--` the remaining arguments will be treated as paths. +installShellCompletion() { + local shell='' name='' retval=0 parseArgs=1 arg + while { arg=$1; shift; }; do + # Parse arguments + if (( parseArgs )); then + case "$arg" in + --bash|--fish|--zsh) + shell=${arg#--} + continue;; + --name) + name=$1 + shift || { + echo 'installShellCompletion: error: --name flag expected an argument' >&2 + return 1 + } + continue;; + --name=*) + # treat `--name=foo` the same as `--name foo` + name=${arg#--name=} + continue;; + --?*) + echo "installShellCompletion: warning: unknown flag ${arg%%=*}" >&2 + retval=2 + continue;; + --) + # treat remaining args as paths + parseArgs=0 + continue;; + esac + fi + if (( "${NIX_DEBUG:-0}" >= 1 )); then + echo "installShellCompletion: installing $arg${name:+ as $name}" + fi + # if we get here, this is a path + # Identify shell + local basename + basename=$(stripHash "$arg") + local curShell=$shell + if [[ -z "$curShell" ]]; then + # auto-detect the shell + case "$basename" in + ?*.bash) curShell=bash;; + ?*.fish) curShell=fish;; + ?*.zsh) curShell=zsh;; + *) + if [[ "$basename" = _* && "$basename" != *.* ]]; then + # probably zsh + echo "installShellCompletion: warning: assuming path \`$arg' is zsh; please specify with --zsh" >&2 + curShell=zsh + else + echo "installShellCompletion: warning: unknown shell for path: $arg" >&2 + retval=2 + continue + fi;; + esac + fi + # Identify output path + local outName sharePath + outName=${name:-$basename} + case "$curShell" in + bash) sharePath=bash-completion/completions;; + fish) sharePath=fish/vendor_completions.d;; + zsh) + sharePath=zsh/site-functions + # only apply automatic renaming if we didn't have a manual rename + if test -z "$name"; then + # convert a name like `foo.zsh` into `_foo` + outName=${outName%.zsh} + outName=_${outName#_} + fi;; + *) + # Our list of shells is out of sync with the flags we accept or extensions we detect. + echo 'installShellCompletion: internal error' >&2 + return 1;; + esac + # Install file + install -Dm644 -T "$arg" "${!outputBin:?}/share/$sharePath/$outName" || return + # Clear the name, it only applies to one path + name= + done + if [[ -n "$name" ]]; then + echo 'installShellCompletion: error: --name flag given with no path' >&2 + return 1 + fi + return $retval +} diff --git a/bsc/setup-hooks/keep-build-tree.sh b/bsc/setup-hooks/keep-build-tree.sh new file mode 100644 index 0000000..754900b --- /dev/null +++ b/bsc/setup-hooks/keep-build-tree.sh @@ -0,0 +1,6 @@ +prePhases+=" moveBuildDir" + +moveBuildDir() { + mkdir -p $out/.build + cd $out/.build +} diff --git a/bsc/setup-hooks/ld-is-cc-hook.sh b/bsc/setup-hooks/ld-is-cc-hook.sh new file mode 100644 index 0000000..b53e184 --- /dev/null +++ b/bsc/setup-hooks/ld-is-cc-hook.sh @@ -0,0 +1,5 @@ +ld-is-cc-hook() { + LD=$CC +} + +preConfigureHooks+=(ld-is-cc-hook) diff --git a/bsc/setup-hooks/make-coverage-analysis-report.sh b/bsc/setup-hooks/make-coverage-analysis-report.sh new file mode 100644 index 0000000..9108b4c --- /dev/null +++ b/bsc/setup-hooks/make-coverage-analysis-report.sh @@ -0,0 +1,25 @@ +postPhases+=" coverageReportPhase" + +coverageReportPhase() { + lcov --directory . --capture --output-file app.info + set -o noglob + lcov --remove app.info ${lcovFilter:-"/nix/store/*"} > app2.info + set +o noglob + mv app2.info app.info + + mkdir -p $out/coverage + genhtml app.info $lcovExtraTraceFiles -o $out/coverage > log + + # Grab the overall coverage percentage so that Hydra can plot it over time. + mkdir -p $out/nix-support + lineCoverage="$(sed 's/.*lines\.*: \([0-9\.]\+\)%.*/\1/; t ; d' log)" + functionCoverage="$(sed 's/.*functions\.*: \([0-9\.]\+\)%.*/\1/; t ; d' log)" + if [ -z "$lineCoverage" -o -z "$functionCoverage" ]; then + echo "failed to get coverage statistics" + exit 1 + fi + echo "lineCoverage $lineCoverage %" >> $out/nix-support/hydra-metrics + echo "functionCoverage $functionCoverage %" >> $out/nix-support/hydra-metrics + + echo "report coverage $out/coverage" >> $out/nix-support/hydra-build-products +} diff --git a/bsc/setup-hooks/make-symlinks-relative.sh b/bsc/setup-hooks/make-symlinks-relative.sh new file mode 100644 index 0000000..0608d3c --- /dev/null +++ b/bsc/setup-hooks/make-symlinks-relative.sh @@ -0,0 +1,28 @@ +fixupOutputHooks+=(_makeSymlinksRelative) + +# For every symlink in $output that refers to another file in $output +# ensure that the symlink is relative. This removes references to the output +# has from the resulting store paths and thus the NAR files. +_makeSymlinksRelative() { + local symlinkTarget + + if [ -n "${dontRewriteSymlinks-}" ]; then + return 0 + fi + + while IFS= read -r -d $'\0' f; do + symlinkTarget=$(readlink "$f") + if [[ "$symlinkTarget"/ != "$prefix"/* ]]; then + # skip this symlink as it doesn't point to $prefix + continue + fi + + if [ ! -e "$symlinkTarget" ]; then + echo "the symlink $f is broken, it points to $symlinkTarget (which is missing)" + fi + + echo "rewriting symlink $f to be relative to $prefix" + ln -snrf "$symlinkTarget" "$f" + + done < <(find $prefix -type l -print0) +} diff --git a/bsc/setup-hooks/make-wrapper.sh b/bsc/setup-hooks/make-wrapper.sh new file mode 100644 index 0000000..8b70126 --- /dev/null +++ b/bsc/setup-hooks/make-wrapper.sh @@ -0,0 +1,146 @@ +# Assert that FILE exists and is executable +# +# assertExecutable FILE +assertExecutable() { + local file="$1" + [[ -f "$file" && -x "$file" ]] || \ + die "Cannot wrap '$file' because it is not an executable file" +} + +# construct an executable file that wraps the actual executable +# makeWrapper EXECUTABLE OUT_PATH ARGS + +# ARGS: +# --argv0 NAME : set name of executed process to NAME +# (otherwise it’s called …-wrapped) +# --set VAR VAL : add VAR with value VAL to the executable’s +# environment +# --set-default VAR VAL : like --set, but only adds VAR if not already set in +# the environment +# --unset VAR : remove VAR from the environment +# --run COMMAND : run command before the executable +# --add-flags FLAGS : add FLAGS to invocation of executable + +# --prefix ENV SEP VAL : suffix/prefix ENV with VAL, separated by SEP +# --suffix +# --suffix-each ENV SEP VALS : like --suffix, but VALS is a list +# --prefix-contents ENV SEP FILES : like --suffix-each, but contents of FILES +# are read first and used as VALS +# --suffix-contents +makeWrapper() { + local original="$1" + local wrapper="$2" + local params varName value command separator n fileNames + local argv0 flagsBefore flags + + assertExecutable "$original" + + mkdir -p "$(dirname "$wrapper")" + + echo "#! @shell@ -e" > "$wrapper" + + params=("$@") + for ((n = 2; n < ${#params[*]}; n += 1)); do + p="${params[$n]}" + + if [[ "$p" == "--set" ]]; then + varName="${params[$((n + 1))]}" + value="${params[$((n + 2))]}" + n=$((n + 2)) + echo "export $varName=${value@Q}" >> "$wrapper" + elif [[ "$p" == "--set-default" ]]; then + varName="${params[$((n + 1))]}" + value="${params[$((n + 2))]}" + n=$((n + 2)) + echo "export $varName=\${$varName-${value@Q}}" >> "$wrapper" + elif [[ "$p" == "--unset" ]]; then + varName="${params[$((n + 1))]}" + n=$((n + 1)) + echo "unset $varName" >> "$wrapper" + elif [[ "$p" == "--run" ]]; then + command="${params[$((n + 1))]}" + n=$((n + 1)) + echo "$command" >> "$wrapper" + elif [[ ("$p" == "--suffix") || ("$p" == "--prefix") ]]; then + varName="${params[$((n + 1))]}" + separator="${params[$((n + 2))]}" + value="${params[$((n + 3))]}" + n=$((n + 3)) + if test -n "$value"; then + if test "$p" = "--suffix"; then + echo "export $varName=\$$varName\${$varName:+${separator@Q}}${value@Q}" >> "$wrapper" + else + echo "export $varName=${value@Q}\${$varName:+${separator@Q}}\$$varName" >> "$wrapper" + fi + fi + elif [[ "$p" == "--suffix-each" ]]; then + varName="${params[$((n + 1))]}" + separator="${params[$((n + 2))]}" + values="${params[$((n + 3))]}" + n=$((n + 3)) + for value in $values; do + echo "export $varName=\$$varName\${$varName:+$separator}${value@Q}" >> "$wrapper" + done + elif [[ ("$p" == "--suffix-contents") || ("$p" == "--prefix-contents") ]]; then + varName="${params[$((n + 1))]}" + separator="${params[$((n + 2))]}" + fileNames="${params[$((n + 3))]}" + n=$((n + 3)) + for fileName in $fileNames; do + contents="$(cat "$fileName")" + if test "$p" = "--suffix-contents"; then + echo "export $varName=\$$varName\${$varName:+$separator}${contents@Q}" >> "$wrapper" + else + echo "export $varName=${contents@Q}\${$varName:+$separator}\$$varName" >> "$wrapper" + fi + done + elif [[ "$p" == "--add-flags" ]]; then + flags="${params[$((n + 1))]}" + n=$((n + 1)) + flagsBefore="$flagsBefore $flags" + elif [[ "$p" == "--argv0" ]]; then + argv0="${params[$((n + 1))]}" + n=$((n + 1)) + else + die "makeWrapper doesn't understand the arg $p" + fi + done + + echo exec ${argv0:+-a \"$argv0\"} \""$original"\" \ + "$flagsBefore" '"$@"' >> "$wrapper" + + chmod +x "$wrapper" +} + +addSuffix() { + suffix="$1" + shift + for name in "$@"; do + echo "$name$suffix" + done +} + +filterExisting() { + for fn in "$@"; do + if test -e "$fn"; then + echo "$fn" + fi + done +} + +# Syntax: wrapProgram +wrapProgram() { + local prog="$1" + local hidden + + assertExecutable "$prog" + + hidden="$(dirname "$prog")/.$(basename "$prog")"-wrapped + while [ -e "$hidden" ]; do + hidden="${hidden}_" + done + mv "$prog" "$hidden" + # Silence warning about unexpanded $0: + # shellcheck disable=SC2016 + makeWrapper "$hidden" "$prog" --argv0 '$0' "${@:2}" +} diff --git a/bsc/setup-hooks/move-docs.sh b/bsc/setup-hooks/move-docs.sh new file mode 100644 index 0000000..ef31dcd --- /dev/null +++ b/bsc/setup-hooks/move-docs.sh @@ -0,0 +1,23 @@ +# This setup hook moves $out/{man,doc,info} to $out/share; moves +# $out/share/man to $man/share/man; and moves $out/share/doc to +# $man/share/doc. + +preFixupHooks+=(_moveToShare) + +_moveToShare() { + forceShare=${forceShare:=man doc info} + if [ -z "$forceShare" -o -z "$out" ]; then return; fi + + for d in $forceShare; do + if [ -d "$out/$d" ]; then + if [ -d "$out/share/$d" ]; then + echo "both $d/ and share/$d/ exist!" + else + echo "moving $out/$d to $out/share/$d" + mkdir -p $out/share + mv $out/$d $out/share/ + fi + fi + done +} + diff --git a/bsc/setup-hooks/move-lib64.sh b/bsc/setup-hooks/move-lib64.sh new file mode 100644 index 0000000..9517af7 --- /dev/null +++ b/bsc/setup-hooks/move-lib64.sh @@ -0,0 +1,22 @@ +# This setup hook, for each output, moves everything in $output/lib64 +# to $output/lib, and replaces $output/lib64 with a symlink to +# $output/lib. The rationale is that lib64 directories are unnecessary +# in Nix (since 32-bit and 64-bit builds of a package are in different +# store paths anyway). +# If the move would overwrite anything, it should fail on rmdir. + +fixupOutputHooks+=(_moveLib64) + +_moveLib64() { + if [ "${dontMoveLib64-}" = 1 ]; then return; fi + if [ ! -e "$prefix/lib64" -o -L "$prefix/lib64" ]; then return; fi + echo "moving $prefix/lib64/* to $prefix/lib" + mkdir -p $prefix/lib + shopt -s dotglob + for i in $prefix/lib64/*; do + mv --no-clobber "$i" $prefix/lib + done + shopt -u dotglob + rmdir $prefix/lib64 + ln -s lib $prefix/lib64 +} diff --git a/bsc/setup-hooks/move-sbin.sh b/bsc/setup-hooks/move-sbin.sh new file mode 100644 index 0000000..1c0c4dc --- /dev/null +++ b/bsc/setup-hooks/move-sbin.sh @@ -0,0 +1,19 @@ +# This setup hook, for each output, moves everything in $output/sbin +# to $output/bin, and replaces $output/sbin with a symlink to +# $output/bin. + +fixupOutputHooks+=(_moveSbin) + +_moveSbin() { + if [ "${dontMoveSbin-}" = 1 ]; then return; fi + if [ ! -e "$prefix/sbin" -o -L "$prefix/sbin" ]; then return; fi + echo "moving $prefix/sbin/* to $prefix/bin" + mkdir -p $prefix/bin + shopt -s dotglob + for i in $prefix/sbin/*; do + mv "$i" $prefix/bin + done + shopt -u dotglob + rmdir $prefix/sbin + ln -s bin $prefix/sbin +} diff --git a/bsc/setup-hooks/multiple-outputs.sh b/bsc/setup-hooks/multiple-outputs.sh new file mode 100644 index 0000000..2e95495 --- /dev/null +++ b/bsc/setup-hooks/multiple-outputs.sh @@ -0,0 +1,199 @@ +# The base package for automatic multiple-output splitting. Used in stdenv as well. +preConfigureHooks+=(_multioutConfig) +preFixupHooks+=(_multioutDocs) +preFixupHooks+=(_multioutDevs) +postFixupHooks+=(_multioutPropagateDev) + +# Assign the first string containing nonempty variable to the variable named $1 +_assignFirst() { + local varName="$1" + local REMOVE=REMOVE # slightly hacky - we allow REMOVE (i.e. not a variable name) + shift + while (( $# )); do + if [ -n "${!1-}" ]; then eval "${varName}"="$1"; return; fi + shift + done + echo "Error: _assignFirst found no valid variant!" + return 1 # none found +} + +# Same as _assignFirst, but only if "$1" = "" +_overrideFirst() { + if [ -z "${!1-}" ]; then + _assignFirst "$@" + fi +} + + +# Setup chains of sane default values with easy overridability. +# The variables are global to be usable anywhere during the build. +# Typical usage in package is defining outputBin = "dev"; + +_overrideFirst outputDev "dev" "out" +_overrideFirst outputBin "bin" "out" + +_overrideFirst outputInclude "$outputDev" + +# so-libs are often among the main things to keep, and so go to $out +_overrideFirst outputLib "lib" "out" + +_overrideFirst outputDoc "doc" "out" +_overrideFirst outputDevdoc "devdoc" REMOVE # documentation for developers +# man and info pages are small and often useful to distribute with binaries +_overrideFirst outputMan "man" "$outputBin" +_overrideFirst outputDevman "devman" "devdoc" "$outputMan" +_overrideFirst outputInfo "info" "$outputBin" + + +# Add standard flags to put files into the desired outputs. +_multioutConfig() { + if [ "$outputs" = "out" ] || [ -z "${setOutputFlags-1}" ]; then return; fi; + + # try to detect share/doc/${shareDocName} + # Note: sadly, $configureScript detection comes later in configurePhase, + # and reordering would cause more trouble than worth. + if [ -z "$shareDocName" ]; then + local confScript="$configureScript" + if [ -z "$confScript" ] && [ -x ./configure ]; then + confScript=./configure + fi + if [ -f "$confScript" ]; then + local shareDocName="$(sed -n "s/^PACKAGE_TARNAME='\(.*\)'$/\1/p" < "$confScript")" + fi + # PACKAGE_TARNAME sometimes contains garbage. + if [ -n "$shareDocName" ] || echo "$shareDocName" | grep -q '[^a-zA-Z0-9_-]'; then + shareDocName="$(echo "$name" | sed 's/-[^a-zA-Z].*//')" + fi + fi + + configureFlags="\ + --bindir=${!outputBin}/bin --sbindir=${!outputBin}/sbin \ + --includedir=${!outputInclude}/include --oldincludedir=${!outputInclude}/include \ + --mandir=${!outputMan}/share/man --infodir=${!outputInfo}/share/info \ + --docdir=${!outputDoc}/share/doc/${shareDocName} \ + --libdir=${!outputLib}/lib --libexecdir=${!outputLib}/libexec \ + --localedir=${!outputLib}/share/locale \ + $configureFlags" + + installFlags="\ + pkgconfigdir=${!outputDev}/lib/pkgconfig \ + m4datadir=${!outputDev}/share/aclocal aclocaldir=${!outputDev}/share/aclocal \ + $installFlags" +} + + +# Add rpath prefixes to library paths, and avoid stdenv doing it for $out. +_addRpathPrefix "${!outputLib}" +NIX_NO_SELF_RPATH=1 + + +# Move subpaths that match pattern $1 from under any output/ to the $2 output/ +# Beware: only globbing patterns are accepted, e.g.: * ? {foo,bar} +# A special target "REMOVE" is allowed: moveToOutput foo REMOVE +moveToOutput() { + local patt="$1" + local dstOut="$2" + local output + for output in $outputs; do + if [ "${!output}" = "$dstOut" ]; then continue; fi + local srcPath + for srcPath in "${!output}"/$patt; do + # apply to existing files/dirs, *including* broken symlinks + if [ ! -e "$srcPath" ] && [ ! -L "$srcPath" ]; then continue; fi + + if [ "$dstOut" = REMOVE ]; then + echo "Removing $srcPath" + rm -r "$srcPath" + else + local dstPath="$dstOut${srcPath#${!output}}" + echo "Moving $srcPath to $dstPath" + + if [ -d "$dstPath" ] && [ -d "$srcPath" ] + then # attempt directory merge + # check the case of trying to move an empty directory + rmdir "$srcPath" --ignore-fail-on-non-empty + if [ -d "$srcPath" ]; then + mv -t "$dstPath" "$srcPath"/* + rmdir "$srcPath" + fi + else # usual move + mkdir -p "$(readlink -m "$dstPath/..")" + mv "$srcPath" "$dstPath" + fi + fi + + # remove empty directories, printing iff at least one gets removed + local srcParent="$(readlink -m "$srcPath/..")" + if rmdir "$srcParent"; then + echo "Removing empty $srcParent/ and (possibly) its parents" + rmdir -p --ignore-fail-on-non-empty "$(readlink -m "$srcParent/..")" \ + 2> /dev/null || true # doesn't ignore failure for some reason + fi + done + done +} + +# Move documentation to the desired outputs. +_multioutDocs() { + local REMOVE=REMOVE # slightly hacky - we expand ${!outputFoo} + + moveToOutput share/info "${!outputInfo}" + moveToOutput share/doc "${!outputDoc}" + moveToOutput share/gtk-doc "${!outputDevdoc}" + moveToOutput share/devhelp/books "${!outputDevdoc}" + + # the default outputMan is in $bin + moveToOutput share/man "${!outputMan}" + moveToOutput share/man/man3 "${!outputDevman}" +} + +# Move development-only stuff to the desired outputs. +_multioutDevs() { + if [ "$outputs" = "out" ] || [ -z "${moveToDev-1}" ]; then return; fi; + moveToOutput include "${!outputInclude}" + # these files are sometimes provided even without using the corresponding tool + moveToOutput lib/pkgconfig "${!outputDev}" + moveToOutput share/pkgconfig "${!outputDev}" + moveToOutput lib/cmake "${!outputDev}" + moveToOutput share/aclocal "${!outputDev}" + # don't move *.la, as libtool needs them in the directory of the library + + for f in "${!outputDev}"/{lib,share}/pkgconfig/*.pc; do + echo "Patching '$f' includedir to output ${!outputInclude}" + sed -i "/^includedir=/s,=\${prefix},=${!outputInclude}," "$f" + done +} + +# Make the "dev" propagate other outputs needed for development. +_multioutPropagateDev() { + if [ "$outputs" = "out" ]; then return; fi; + + local outputFirst + for outputFirst in $outputs; do + break + done + local propagaterOutput="$outputDev" + if [ -z "$propagaterOutput" ]; then + propagaterOutput="$outputFirst" + fi + + # Default value: propagate binaries, includes and libraries + if [ -z "${propagatedBuildOutputs+1}" ]; then + local po_dirty="$outputBin $outputInclude $outputLib" + set +o pipefail + propagatedBuildOutputs=`echo "$po_dirty" \ + | tr -s ' ' '\n' | grep -v -F "$propagaterOutput" \ + | sort -u | tr '\n' ' ' ` + set -o pipefail + fi + + # The variable was explicitly set to empty or we resolved it so + if [ -z "$propagatedBuildOutputs" ]; then + return + fi + + mkdir -p "${!propagaterOutput}"/nix-support + for output in $propagatedBuildOutputs; do + echo -n " ${!output}" >> "${!propagaterOutput}"/nix-support/propagated-build-inputs + done +} diff --git a/bsc/setup-hooks/patch-shebangs.sh b/bsc/setup-hooks/patch-shebangs.sh new file mode 100644 index 0000000..b48b0c5 --- /dev/null +++ b/bsc/setup-hooks/patch-shebangs.sh @@ -0,0 +1,119 @@ +# This setup hook causes the fixup phase to rewrite all script +# interpreter file names (`#! /path') to paths found in $PATH. E.g., +# /bin/sh will be rewritten to /nix/store/-some-bash/bin/sh. +# /usr/bin/env gets special treatment so that ".../bin/env python" is +# rewritten to /nix/store//bin/python. Interpreters that are +# already in the store are left untouched. +# A script file must be marked as executable, otherwise it will not be +# considered. + +fixupOutputHooks+=(patchShebangsAuto) + +# Run patch shebangs on a directory or file. +# Can take multiple paths as arguments. +# patchShebangs [--build | --host] PATH... + +# Flags: +# --build : Lookup commands available at build-time +# --host : Lookup commands available at runtime + +# Example use cases, +# $ patchShebangs --host /nix/store/...-hello-1.0/bin +# $ patchShebangs --build configure + +patchShebangs() { + local pathName + + if [ "$1" = "--host" ]; then + pathName=HOST_PATH + shift + elif [ "$1" = "--build" ]; then + pathName=PATH + shift + fi + + echo "patching script interpreter paths in $@" + local f + local oldPath + local newPath + local arg0 + local args + local oldInterpreterLine + local newInterpreterLine + + if [ $# -eq 0 ]; then + echo "No arguments supplied to patchShebangs" >&2 + return 0 + fi + + local f + while IFS= read -r -d $'\0' f; do + isScript "$f" || continue + + oldInterpreterLine=$(head -1 "$f" | tail -c+3) + read -r oldPath arg0 args <<< "$oldInterpreterLine" + + if [ -z "$pathName" ]; then + if [ -n "$strictDeps" ] && [[ "$f" = "$NIX_STORE"* ]]; then + pathName=HOST_PATH + else + pathName=PATH + fi + fi + + if $(echo "$oldPath" | grep -q "/bin/env$"); then + # Check for unsupported 'env' functionality: + # - options: something starting with a '-' + # - environment variables: foo=bar + if $(echo "$arg0" | grep -q -- "^-.*\|.*=.*"); then + echo "$f: unsupported interpreter directive \"$oldInterpreterLine\" (set dontPatchShebangs=1 and handle shebang patching yourself)" >&2 + exit 1 + fi + + newPath="$(PATH="${!pathName}" command -v "$arg0" || true)" + else + if [ "$oldPath" = "" ]; then + # If no interpreter is specified linux will use /bin/sh. Set + # oldpath="/bin/sh" so that we get /nix/store/.../sh. + oldPath="/bin/sh" + fi + + newPath="$(PATH="${!pathName}" command -v "$(basename "$oldPath")" || true)" + + args="$arg0 $args" + fi + + # Strip trailing whitespace introduced when no arguments are present + newInterpreterLine="$(echo "$newPath $args" | sed 's/[[:space:]]*$//')" + + if [ -n "$oldPath" -a "${oldPath:0:${#NIX_STORE}}" != "$NIX_STORE" ]; then + if [ -n "$newPath" -a "$newPath" != "$oldPath" ]; then + echo "$f: interpreter directive changed from \"$oldInterpreterLine\" to \"$newInterpreterLine\"" + # escape the escape chars so that sed doesn't interpret them + escapedInterpreterLine=$(echo "$newInterpreterLine" | sed 's|\\|\\\\|g') + # Preserve times, see: https://github.com/NixOS/nixpkgs/pull/33281 + timestamp=$(mktemp) + touch -r "$f" "$timestamp" + sed -i -e "1 s|.*|#\!$escapedInterpreterLine|" "$f" + touch -r "$timestamp" "$f" + rm "$timestamp" + fi + fi + done < <(find "$@" -type f -perm -0100 -print0) + + stopNest +} + +patchShebangsAuto () { + if [ -z "${dontPatchShebangs-}" -a -e "$prefix" ]; then + + # Dev output will end up being run on the build platform. An + # example case of this is sdl2-config. Otherwise, we can just + # use the runtime path (--host). + if [ "$output" != out ] && [ "$output" = "$outputDev" ]; then + patchShebangs --build "$prefix" + else + patchShebangs --host "$prefix" + fi + fi +} diff --git a/bsc/setup-hooks/prune-libtool-files.sh b/bsc/setup-hooks/prune-libtool-files.sh new file mode 100644 index 0000000..0ec5654 --- /dev/null +++ b/bsc/setup-hooks/prune-libtool-files.sh @@ -0,0 +1,22 @@ +# Clear dependency_libs in libtool files for shared libraries. + +# Shared libraries already encode their dependencies with locations. .la +# files do not always encode those locations, and sometimes encode the +# locations in the wrong Nix output. .la files are not needed for shared +# libraries, but without dependency_libs they do not hurt either. + +fixupOutputHooks+=(_pruneLibtoolFiles) + +_pruneLibtoolFiles() { + if [ "${dontPruneLibtoolFiles-}" ] || [ ! -e "$prefix" ]; then + return + fi + + # Libtool uses "dlname" and "library_names" fields for shared libraries and + # the "old_library" field for static libraries. We are processing only + # those .la files that do not describe static libraries. + find "$prefix" -type f -name '*.la' \ + -exec grep -q '^# Generated by .*libtool' {} \; \ + -exec grep -q "^old_library=''" {} \; \ + -exec sed -i {} -e "/^dependency_libs='[^']/ c dependency_libs='' #pruned" \; +} diff --git a/bsc/setup-hooks/role.bash b/bsc/setup-hooks/role.bash new file mode 100644 index 0000000..6f1c36f --- /dev/null +++ b/bsc/setup-hooks/role.bash @@ -0,0 +1,75 @@ +# Since the same derivation can be depend on in multiple ways, we need to +# accumulate *each* role (i.e. host and target platforms relative the depending +# derivation) in which the derivation is used. +# +# The role is intened to be use as part of other variables names like +# - $NIX_${role_pre}_SOMETHING +# - $NIX_SOMETHING_${role_post} + +function getRole() { + case $1 in + -1) + role_pre='BUILD_' + role_post='_FOR_BUILD' + ;; + 0) + role_pre='' + role_post='' + ;; + 1) + role_pre='TARGET_' + role_post='_FOR_TARGET' + ;; + *) + echo "@name@: used as improper sort of dependency" >2 + return 1 + ;; + esac +} + +# `hostOffset` describes how the host platform of the package is slid relative +# to the depending package. `targetOffset` likewise describes the target +# platform of the package. Both are brought into scope of the setup hook defined +# for dependency whose setup hook is being processed relative to the package +# being built. + +function getHostRole() { + getRole "$hostOffset" +} +function getTargetRole() { + getRole "$targetOffset" +} + +# `depHostOffset` describes how the host platform of the dependencies are slid +# relative to the depending package. `depTargetOffset` likewise describes the +# target platform of dependenices. Both are brought into scope of the +# environment hook defined for the dependency being applied relative to the +# package being built. + +function getHostRoleEnvHook() { + getRole "$depHostOffset" +} +function getTargetRoleEnvHook() { + getRole "$depTargetOffset" +} + +# This variant is inteneded specifically for code-prodocing tool wrapper scripts +# `NIX_@wrapperName@_@infixSalt@_TARGET_*` tracks this (needs to be an exported +# env var so can't use fancier data structures). +function getTargetRoleWrapper() { + case $targetOffset in + -1) + export NIX_@wrapperName@_@infixSalt@_TARGET_BUILD=1 + ;; + 0) + export NIX_@wrapperName@_@infixSalt@_TARGET_HOST=1 + ;; + 1) + export NIX_@wrapperName@_@infixSalt@_TARGET_TARGET=1 + ;; + *) + echo "@name@: used as improper sort of dependency" >2 + return 1 + ;; + esac +} diff --git a/bsc/setup-hooks/separate-debug-info.sh b/bsc/setup-hooks/separate-debug-info.sh new file mode 100644 index 0000000..19dbb10 --- /dev/null +++ b/bsc/setup-hooks/separate-debug-info.sh @@ -0,0 +1,37 @@ +export NIX_SET_BUILD_ID=1 +export NIX_LDFLAGS+=" --compress-debug-sections=zlib" +export NIX_CFLAGS_COMPILE+=" -ggdb -Wa,--compress-debug-sections" +dontStrip=1 + +fixupOutputHooks+=(_separateDebugInfo) + +_separateDebugInfo() { + [ -e "$prefix" ] || return 0 + + local dst="${debug:-$out}" + if [ "$prefix" = "$dst" ]; then return 0; fi + + dst="$dst/lib/debug/.build-id" + + # Find executables and dynamic libraries. + local i magic + while IFS= read -r -d $'\0' i; do + if ! isELF "$i"; then continue; fi + + # Extract the Build ID. FIXME: there's probably a cleaner way. + local id="$($READELF -n "$i" | sed 's/.*Build ID: \([0-9a-f]*\).*/\1/; t; d')" + if [ "${#id}" != 40 ]; then + echo "could not find build ID of $i, skipping" >&2 + continue + fi + + # Extract the debug info. + header "separating debug info from $i (build ID $id)" + mkdir -p "$dst/${id:0:2}" + $OBJCOPY --only-keep-debug "$i" "$dst/${id:0:2}/${id:2}.debug" + $STRIP --strip-debug "$i" + + # Also a create a symlink .debug. + ln -sfn ".build-id/${id:0:2}/${id:2}.debug" "$dst/../$(basename "$i")" + done < <(find "$prefix" -type f -print0) +} diff --git a/bsc/setup-hooks/set-java-classpath.sh b/bsc/setup-hooks/set-java-classpath.sh new file mode 100644 index 0000000..445fa56 --- /dev/null +++ b/bsc/setup-hooks/set-java-classpath.sh @@ -0,0 +1,13 @@ +# This setup hook adds every JAR in the share/java subdirectories of +# the build inputs to $CLASSPATH. + +export CLASSPATH + +addPkgToClassPath () { + local jar + for jar in $1/share/java/*.jar; do + export CLASSPATH=''${CLASSPATH-}''${CLASSPATH:+:}''${jar} + done +} + +addEnvHooks "$targetOffset" addPkgToClassPath diff --git a/bsc/setup-hooks/set-source-date-epoch-to-latest.sh b/bsc/setup-hooks/set-source-date-epoch-to-latest.sh new file mode 100644 index 0000000..ae34ffe --- /dev/null +++ b/bsc/setup-hooks/set-source-date-epoch-to-latest.sh @@ -0,0 +1,34 @@ +updateSourceDateEpoch() { + local path="$1" + + # Get the last modification time of all regular files, sort them, + # and get the most recent. Maybe we should use + # https://github.com/0-wiz-0/findnewest here. + local -a res=($(find "$path" -type f -not -newer "$NIX_BUILD_TOP/.." -printf '%T@ %p\0' \ + | sort -n --zero-terminated | tail -n1 --zero-terminated | head -c -1)) + local time="${res[0]//\.[0-9]*/}" # remove the fraction part + local newestFile="${res[1]}" + + # Update $SOURCE_DATE_EPOCH if the most recent file we found is newer. + if [ "${time:-0}" -gt "$SOURCE_DATE_EPOCH" ]; then + echo "setting SOURCE_DATE_EPOCH to timestamp $time of file $newestFile" + export SOURCE_DATE_EPOCH="$time" + + # Warn if the new timestamp is too close to the present. This + # may indicate that we were being applied to a file generated + # during the build, or that an unpacker didn't restore + # timestamps properly. + local now="$(date +%s)" + if [ "$time" -gt $((now - 60)) ]; then + echo "warning: file $newestFile may be generated; SOURCE_DATE_EPOCH may be non-deterministic" + fi + fi +} + +postUnpackHooks+=(_updateSourceDateEpochFromSourceRoot) + +_updateSourceDateEpochFromSourceRoot() { + if [ -n "$sourceRoot" ]; then + updateSourceDateEpoch "$sourceRoot" + fi +} diff --git a/bsc/setup-hooks/setup-debug-info-dirs.sh b/bsc/setup-hooks/setup-debug-info-dirs.sh new file mode 100644 index 0000000..96bf48c --- /dev/null +++ b/bsc/setup-hooks/setup-debug-info-dirs.sh @@ -0,0 +1,5 @@ +setupDebugInfoDirs () { + addToSearchPath NIX_DEBUG_INFO_DIRS $1/lib/debug +} + +addEnvHooks "$targetOffset" setupDebugInfoDirs diff --git a/bsc/setup-hooks/shorten-perl-shebang.sh b/bsc/setup-hooks/shorten-perl-shebang.sh new file mode 100644 index 0000000..4bf7c0f --- /dev/null +++ b/bsc/setup-hooks/shorten-perl-shebang.sh @@ -0,0 +1,88 @@ +# This setup hook modifies a Perl script so that any "-I" flags in its shebang +# line are rewritten into a "use lib ..." statement on the next line. This gets +# around a limitation in Darwin, which will not properly handle a script whose +# shebang line exceeds 511 characters. +# +# Each occurrence of "-I /path/to/lib1" or "-I/path/to/lib2" is removed from +# the shebang line, along with the single space that preceded it. These library +# paths are placed into a new line of the form +# +# use lib "/path/to/lib1", "/path/to/lib2"; +# +# immediately following the shebang line. If a library appeared in the original +# list more than once, only its first occurrence will appear in the output +# list. In other words, the libraries are deduplicated, but the ordering of the +# first appearance of each one is preserved. +# +# Any flags other than "-I" in the shebang line are left as-is, and the +# interpreter is also left alone (although the script will abort if the +# interpreter does not seem to be either "perl" or else "env" with "perl" as +# its argument). Each line after the shebang line is left unchanged. Each file +# is modified in place. +# +# Usage: +# shortenPerlShebang SCRIPT... + +shortenPerlShebang() { + while [ $# -gt 0 ]; do + _shortenPerlShebang "$1" + shift + done +} + +_shortenPerlShebang() { + local program="$1" + + echo "shortenPerlShebang: rewriting shebang line in $program" + + if ! isScript "$program"; then + die "shortenPerlShebang: refusing to modify $program because it is not a script" + fi + + local temp="$(mktemp)" + + gawk ' + (NR == 1) { + if (!($0 ~ /\/(perl|env +perl)\>/)) { + print "shortenPerlShebang: script does not seem to be a Perl script" > "/dev/stderr" + exit 1 + } + idx = 0 + while (match($0, / -I ?([^ ]+)/, pieces)) { + matches[idx] = pieces[1] + idx++ + $0 = gensub(/ -I ?[^ ]+/, "", 1, $0) + } + print $0 + if (idx > 0) { + prefix = "use lib " + for (idx in matches) { + path = matches[idx] + if (!(path in seen)) { + printf "%s\"%s\"", prefix, path + seen[path] = 1 + prefix = ", " + } + } + print ";" + } + } + (NR > 1 ) { + print + } + ' "$program" > "$temp" || die + # Preserve the mode of the original file + cp --preserve=mode --attributes-only "$program" "$temp" + mv "$temp" "$program" + + # Measure the new shebang line length and make sure it's okay. We subtract + # one to account for the trailing newline that "head" included in its + # output. + local new_length=$(( $(head -n 1 "$program" | wc -c) - 1 )) + + # Darwin is okay when the shebang line contains 511 characters, but not + # when it contains 512 characters. + if [ $new_length -ge 512 ]; then + die "shortenPerlShebang: shebang line is $new_length characters--still too long for Darwin!" + fi +} diff --git a/bsc/setup-hooks/strip.sh b/bsc/setup-hooks/strip.sh new file mode 100644 index 0000000..f5fa937 --- /dev/null +++ b/bsc/setup-hooks/strip.sh @@ -0,0 +1,57 @@ +# This setup hook strips libraries and executables in the fixup phase. + +fixupOutputHooks+=(_doStrip) + +_doStrip() { + # We don't bother to strip build platform code because it shouldn't make it + # to $out anyways---if it does, that's a bigger problem that a lack of + # stripping will help catch. + local -ra flags=(dontStripHost dontStripTarget) + local -ra stripCmds=(STRIP TARGET_STRIP) + + # Optimization + if [[ "${STRIP-}" == "${TARGET_STRIP-}" ]]; then + dontStripTarget+=1 + fi + + local i + for i in ${!stripCmds[@]}; do + local -n flag="${flags[$i]}" + local -n stripCmd="${stripCmds[$i]}" + + # `dontStrip` disables them all + if [[ "${dontStrip-}" || "${flag-}" ]] || ! type -f "${stripCmd-}" 2>/dev/null + then continue; fi + + stripDebugList=${stripDebugList:-lib lib32 lib64 libexec bin sbin} + if [ -n "$stripDebugList" ]; then + stripDirs "$stripCmd" "$stripDebugList" "${stripDebugFlags:--S}" + fi + + stripAllList=${stripAllList:-} + if [ -n "$stripAllList" ]; then + stripDirs "$stripCmd" "$stripAllList" "${stripAllFlags:--s}" + fi + done +} + +stripDirs() { + local cmd="$1" + local dirs="$2" + local stripFlags="$3" + local dirsNew= + + local d + for d in ${dirs}; do + if [ -d "$prefix/$d" ]; then + dirsNew="${dirsNew} $prefix/$d " + fi + done + dirs=${dirsNew} + + if [ -n "${dirs}" ]; then + header "stripping (with command $cmd and flags $stripFlags) in$dirs" + find $dirs -type f -print0 | xargs -0 ${xargsFlags:--r} $cmd $commonStripFlags $stripFlags 2>/dev/null || true + stopNest + fi +} diff --git a/bsc/setup-hooks/update-autotools-gnu-config-scripts.sh b/bsc/setup-hooks/update-autotools-gnu-config-scripts.sh new file mode 100644 index 0000000..ebd3afa --- /dev/null +++ b/bsc/setup-hooks/update-autotools-gnu-config-scripts.sh @@ -0,0 +1,12 @@ +preConfigurePhases+=" updateAutotoolsGnuConfigScriptsPhase" + +updateAutotoolsGnuConfigScriptsPhase() { + if [ -n "${dontUpdateAutotoolsGnuConfigScripts-}" ]; then return; fi + + for script in config.sub config.guess; do + for f in $(find . -type f -name "$script"); do + echo "Updating Autotools / GNU config script to a newer upstream version: $f" + cp -f "@gnu_config@/$script" "$f" + done + done +} diff --git a/bsc/setup-hooks/use-old-cxx-abi.sh b/bsc/setup-hooks/use-old-cxx-abi.sh new file mode 100644 index 0000000..53335d7 --- /dev/null +++ b/bsc/setup-hooks/use-old-cxx-abi.sh @@ -0,0 +1 @@ +export NIX_CFLAGS_COMPILE+=" -D_GLIBCXX_USE_CXX11_ABI=0" diff --git a/bsc/setup-hooks/validate-pkg-config.sh b/bsc/setup-hooks/validate-pkg-config.sh new file mode 100644 index 0000000..54fc9cc --- /dev/null +++ b/bsc/setup-hooks/validate-pkg-config.sh @@ -0,0 +1,19 @@ +# This setup hook validates each pkgconfig file in each output. + +fixupOutputHooks+=(_validatePkgConfig) + +_validatePkgConfig() { + for pc in $(find "$prefix" -name '*.pc'); do + local bail=0 + + # Do not fail immediately. It's nice to see all errors when + # there are multiple pkgconfig files. + if ! pkg-config --validate "$pc"; then + bail=1 + fi + done + + if [ $bail -eq 1 ]; then + exit 1 + fi +} diff --git a/bsc/setup-hooks/win-dll-link.sh b/bsc/setup-hooks/win-dll-link.sh new file mode 100644 index 0000000..6130f32 --- /dev/null +++ b/bsc/setup-hooks/win-dll-link.sh @@ -0,0 +1,45 @@ + +fixupOutputHooks+=(_linkDLLs) + +# For every *.{exe,dll} in $output/bin/ we try to find all (potential) +# transitive dependencies and symlink those DLLs into $output/bin +# so they are found on invocation. +# (DLLs are first searched in the directory of the running exe file.) +# The links are relative, so relocating whole /nix/store won't break them. +_linkDLLs() { +( + if [ ! -d "$prefix/bin" ]; then exit; fi + cd "$prefix/bin" + + # Compose path list where DLLs should be located: + # prefix $PATH by currently-built outputs + local DLLPATH="" + local outName + for outName in $outputs; do + addToSearchPath DLLPATH "${!outName}/bin" + done + DLLPATH="$DLLPATH:$PATH" + + echo DLLPATH="'$DLLPATH'" + + linkCount=0 + # Iterate over any DLL that we depend on. + local dll + for dll in $($OBJDUMP -p *.{exe,dll} | sed -n 's/.*DLL Name: \(.*\)/\1/p' | sort -u); do + if [ -e "./$dll" ]; then continue; fi + # Locate the DLL - it should be an *executable* file on $DLLPATH. + local dllPath="$(PATH="$DLLPATH" type -P "$dll")" + if [ -z "$dllPath" ]; then continue; fi + # That DLL might have its own (transitive) dependencies, + # so add also all DLLs from its directory to be sure. + local dllPath2 + for dllPath2 in "$dllPath" "$(dirname $(readlink "$dllPath" || echo "$dllPath"))"/*.dll; do + if [ -e ./"$(basename "$dllPath2")" ]; then continue; fi + CYGWIN+=\ winsymlinks:nativestrict ln -sr "$dllPath2" . + linkCount=$(($linkCount+1)) + done + done + echo "Created $linkCount DLL link(s) in $prefix/bin" +) +} + diff --git a/bsc/setup-hooks/wrap-gapps-hook.sh b/bsc/setup-hooks/wrap-gapps-hook.sh new file mode 100644 index 0000000..1a46e07 --- /dev/null +++ b/bsc/setup-hooks/wrap-gapps-hook.sh @@ -0,0 +1,93 @@ +# shellcheck shell=bash +gappsWrapperArgs=() + +find_gio_modules() { + if [ -d "$1/lib/gio/modules" ] && [ -n "$(ls -A "$1/lib/gio/modules")" ] ; then + gappsWrapperArgs+=(--prefix GIO_EXTRA_MODULES : "$1/lib/gio/modules") + fi +} + +addEnvHooks "${targetOffset:?}" find_gio_modules + +gappsWrapperArgsHook() { + if [ -n "$GDK_PIXBUF_MODULE_FILE" ]; then + gappsWrapperArgs+=(--set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE") + fi + + if [ -n "$XDG_ICON_DIRS" ]; then + gappsWrapperArgs+=(--prefix XDG_DATA_DIRS : "$XDG_ICON_DIRS") + fi + + if [ -n "$GSETTINGS_SCHEMAS_PATH" ]; then + gappsWrapperArgs+=(--prefix XDG_DATA_DIRS : "$GSETTINGS_SCHEMAS_PATH") + fi + + # Check for prefix as well + if [ -d "${prefix:?}/share" ]; then + gappsWrapperArgs+=(--prefix XDG_DATA_DIRS : "$prefix/share") + fi + + if [ -d "$prefix/lib/gio/modules" ] && [ -n "$(ls -A "$prefix/lib/gio/modules")" ]; then + gappsWrapperArgs+=(--prefix GIO_EXTRA_MODULES : "$prefix/lib/gio/modules") + fi + + for v in ${wrapPrefixVariables:-} GST_PLUGIN_SYSTEM_PATH_1_0 GI_TYPELIB_PATH GRL_PLUGIN_PATH; do + if [ -n "${!v}" ]; then + gappsWrapperArgs+=(--prefix "$v" : "${!v}") + fi + done +} + +preFixupPhases+=" gappsWrapperArgsHook" + +wrapGApp() { + local program="$1" + shift 1 + wrapProgram "$program" "${gappsWrapperArgs[@]}" "$@" +} + +# Note: $gappsWrapperArgs still gets defined even if ${dontWrapGApps-} is set. +wrapGAppsHook() { + # guard against running multiple times (e.g. due to propagation) + [ -z "$wrapGAppsHookHasRun" ] || return 0 + wrapGAppsHookHasRun=1 + + if [[ -z "${dontWrapGApps:-}" ]]; then + targetDirsThatExist=() + targetDirsRealPath=() + + # wrap binaries + targetDirs=("${prefix}/bin" "${prefix}/libexec") + for targetDir in "${targetDirs[@]}"; do + if [[ -d "${targetDir}" ]]; then + targetDirsThatExist+=("${targetDir}") + targetDirsRealPath+=("$(realpath "${targetDir}")/") + find "${targetDir}" -type f -executable -print0 | + while IFS= read -r -d '' file; do + echo "Wrapping program '${file}'" + wrapGApp "${file}" + done + fi + done + + # wrap links to binaries that point outside targetDirs + # Note: links to binaries within targetDirs do not need + # to be wrapped as the binaries have already been wrapped + if [[ ${#targetDirsThatExist[@]} -ne 0 ]]; then + find "${targetDirsThatExist[@]}" -type l -xtype f -executable -print0 | + while IFS= read -r -d '' linkPath; do + linkPathReal=$(realpath "${linkPath}") + for targetPath in "${targetDirsRealPath[@]}"; do + if [[ "$linkPathReal" == "$targetPath"* ]]; then + echo "Not wrapping link: '$linkPath' (already wrapped)" + continue 2 + fi + done + echo "Wrapping link: '$linkPath'" + wrapGApp "${linkPath}" + done + fi + fi +} + +fixupOutputHooks+=(wrapGAppsHook) diff --git a/bsc/wrapper-common/utils.bash b/bsc/wrapper-common/utils.bash new file mode 100644 index 0000000..4fd5716 --- /dev/null +++ b/bsc/wrapper-common/utils.bash @@ -0,0 +1,92 @@ +# Accumulate infixes for taking in the right input parameters with the `mangle*` +# functions below. See setup-hook for details. +accumulateRoles() { + declare -ga role_infixes=() + if [ "${NIX_@wrapperName@_@infixSalt@_TARGET_BUILD:-}" ]; then + role_infixes+=(_BUILD_) + fi + if [ "${NIX_@wrapperName@_@infixSalt@_TARGET_HOST:-}" ]; then + role_infixes+=(_) + fi + if [ "${NIX_@wrapperName@_@infixSalt@_TARGET_TARGET:-}" ]; then + role_infixes+=(_TARGET_) + fi +} + +mangleVarList() { + local var="$1" + shift + local -a role_infixes=("$@") + + local outputVar="${var/+/_@infixSalt@_}" + declare -gx ${outputVar}+='' + # For each role we serve, we accumulate the input parameters into our own + # cc-wrapper-derivation-specific environment variables. + for infix in "${role_infixes[@]}"; do + local inputVar="${var/+/${infix}}" + if [ -v "$inputVar" ]; then + export ${outputVar}+="${!outputVar:+ }${!inputVar}" + fi + done +} + +mangleVarBool() { + local var="$1" + shift + local -a role_infixes=("$@") + + local outputVar="${var/+/_@infixSalt@_}" + declare -gxi ${outputVar}+=0 + for infix in "${role_infixes[@]}"; do + local inputVar="${var/+/${infix}}" + if [ -v "$inputVar" ]; then + # "1" in the end makes `let` return success error code when + # expression itself evaluates to zero. + # We don't use `|| true` because that would silence actual + # syntax errors from bad variable values. + let "${outputVar} |= ${!inputVar:-0}" "1" + fi + done +} + +skip () { + if (( "${NIX_DEBUG:-0}" >= 1 )); then + echo "skipping impure path $1" >&2 + fi +} + + +# Checks whether a path is impure. E.g., `/lib/foo.so' is impure, but +# `/nix/store/.../lib/foo.so' isn't. +badPath() { + local p=$1 + + # Relative paths are okay (since they're presumably relative to + # the temporary build directory). + if [ "${p:0:1}" != / ]; then return 1; fi + + # Otherwise, the path should refer to the store or some temporary + # directory (including the build directory). + test \ + "$p" != "/dev/null" -a \ + "${p:0:${#NIX_STORE}}" != "$NIX_STORE" -a \ + "${p:0:4}" != "/tmp" -a \ + "${p:0:${#NIX_BUILD_TOP}}" != "$NIX_BUILD_TOP" +} + +expandResponseParams() { + declare -ga params=("$@") + local arg + for arg in "$@"; do + if [[ "$arg" == @* ]]; then + # phase separation makes this look useless + # shellcheck disable=SC2157 + if [ -x "@expandResponseParams@" ]; then + # params is used by caller + #shellcheck disable=SC2034 + readarray -d '' params < <("@expandResponseParams@" "$@") + return 0 + fi + fi + done +} diff --git a/default.nix b/default.nix index af49702..322eaab 100644 --- a/default.nix +++ b/default.nix @@ -28,6 +28,13 @@ let #stdenv = pkgs.gcc10Stdenv; stdenv = pkgs.clangStdenv; + binutils = pkgs.binutils; + coreutils = pkgs.coreutils; + + fftw = callPackage ./bsc/fftw/default.nix { + mpi = mpi; + }; + extrae = callPackage ./bsc/extrae/default.nix { mpi = mpi; }; @@ -44,15 +51,79 @@ let extrae = extrae; }; - llvm-ompss2 = callPackage ./bsc/llvm-ompss2/default.nix { }; + clang-ompss2-unwrapped = callPackage ./bsc/llvm-ompss2/default.nix { }; - cpic = callPackage ./bsc/cpic/default.nix { - mpi = mpi; - nanos6 = nanos6-git; - llvm-ompss2 = llvm-ompss2; + clang-ompss2 = import ./bsc/cc-wrapper/default.nix { +# inherit stdenv binutils coreutils ; +# stdenv = bsc.stdenv; + coreutils = pkgs.coreutils; + bintools = pkgs.binutils; + gnugrep = pkgs.gnugrep; + stdenvNoCC = pkgs.stdenvNoCC; + libc = pkgs.glibc; + nativeTools = false; + nativeLibc = false; + cc = clang-ompss2-unwrapped; }; - dummy = callPackage ./bsc/dummy/default.nix { }; +# gcc = lib.makeOverridable (import ./bsc/cc-wrapper/default.nix) { +# nativeTools = false; +# nativeLibc = false; +# isGNU = true; +# buildPackages = { +# inherit (prevStage) stdenv; +# }; +# cc = prevStage.gcc-unwrapped; +# bintools = self.binutils; +# libc = getLibc self; +# inherit (self) stdenvNoCC coreutils gnugrep; +# shell = self.bash + "/bin/bash"; +# }; + + #stdenv = stdenvClangOmpss; + +# WrappedICC = import ../patches/cc-wrapper { +# inherit stdenv binutils coreutils ; +# libc = glibc; +# nativeTools = false; +# nativeLibc = false; +# cc = icc-native; +# }; +# +# +# stdenvICC = (overrideCC stdenv WrappedICC) // { isICC = true; }; +# +# stdenvIntelfSupported = if (WrappedICC != null) then stdenvICC else stdenv; +# +# stdenvIntelIfSupportedElseClang = if (WrappedICC != null) then stdenvICC else clangStdenv; +# +# intelMKLIfSupported = if (WrappedICC != null) then intel-mkl else pkgs.blas; +# }; + +# llvmPackages_10 = callPackage ../development/compilers/llvm/10 ({ +# inherit (stdenvAdapters) overrideCC; +# buildLlvmTools = buildPackages.llvmPackages_10.tools; +# targetLlvmLibraries = targetPackages.llvmPackages_10.libraries; +# } // stdenv.lib.optionalAttrs (stdenv.hostPlatform.isi686 && buildPackages.stdenv.cc.isGNU) { +# stdenv = gcc7Stdenv; +# }); + +# llvmPackages_latest = llvmPackages_10; + + stdenv_nanos6 = pkgs.clangStdenv.override { + cc = clang-ompss2; + }; + + cpic = callPackage ./bsc/cpic/default.nix { + stdenv = stdenv_nanos6; + tampi = tampi; +# mpi = mpi; +# nanos6 = nanos6-git; +# llvm-ompss2 = llvm-ompss2; + }; + + dummy = callPackage ./bsc/dummy/default.nix { + }; }; in pkgs // self From 2feaafb104c5acba122266e2d37aca8ee0bb9e27 Mon Sep 17 00:00:00 2001 From: rodarima Date: Mon, 15 Jun 2020 11:56:44 +0200 Subject: [PATCH 010/987] Delete .git.nix.swp --- bsc/nanos6/.git.nix.swp | Bin 12288 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 bsc/nanos6/.git.nix.swp diff --git a/bsc/nanos6/.git.nix.swp b/bsc/nanos6/.git.nix.swp deleted file mode 100644 index 4e57ed46521624d8620f41f94e109d8bd4935f6b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12288 zcmYc?2=nw+FxN9-U|?VnU|>*meIB>TYZ8NIxiUjhVlGIOAg)Nw&oeM5sEnbmC^1(* zsW@3TFSDW`JH1#hJ+lPF*UwAL%P%(5PtPpT%gd}FY|yBR(GVC70Wv~>m%-S`&;X=S zSxHerSSS?49L1v{Fd71*Aut*OqaiRF0;3@?8UmvsFd70QBm_zd7#Zpr7#NtK{c!@%&6hk@Zb z4+Fz#9tMVkJPZumco-O(co-NOc_4oEnfk8n*K|xzvK_fFwK_j)Iq$n{}LD5zruQVq|Q=udyHBTWLA{wiZ znp2#r5FM*&O`a~WO$CVsnF_IBW=45VelnPqSDKrcT#^H3C*|iCmw;IX+3C8;`FUxX z>0oY7W>QIhK15MsX-R%=VslBSgL8^fL0pgg{A>mVg{0EVoD|Qzg3^*=1zUw^ zkbh&X!Ag~Mb;~nLGIWb8bCdFObc<4p^K(i|GV}9nGxJh1i&B$Ilo%8gKt^SzmlmbE zJ0WyX;G?zt%ABb$Sp8~ij#{n3rdRh(^K@RsC-Ulk~ITEtrdfg0w@I{B|04iNFvrzfaDwo9R*Ob mXV6iABzYYLSc2D4KuY8~3a}&&F%gvVpoT-!I>cs%Y6bx0TVGQE From ebea6f1e8101d4580563ed0354d6c725fdd962f2 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Date: Mon, 15 Jun 2020 12:03:11 +0200 Subject: [PATCH 011/987] Use nanos6 from git for cpic --- default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/default.nix b/default.nix index 322eaab..fff8135 100644 --- a/default.nix +++ b/default.nix @@ -117,8 +117,8 @@ let cpic = callPackage ./bsc/cpic/default.nix { stdenv = stdenv_nanos6; tampi = tampi; -# mpi = mpi; -# nanos6 = nanos6-git; + mpi = mpi; + nanos6 = nanos6-git; # llvm-ompss2 = llvm-ompss2; }; From 98b51cfa6d96688988b29f1f2246c9ad3d4c4f36 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Date: Mon, 15 Jun 2020 12:04:05 +0200 Subject: [PATCH 012/987] Update nanos6-git from upstream --- bsc/nanos6/git.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bsc/nanos6/git.nix b/bsc/nanos6/git.nix index 0aafaf4..26ad27e 100644 --- a/bsc/nanos6/git.nix +++ b/bsc/nanos6/git.nix @@ -22,7 +22,7 @@ stdenv.mkDerivation rec { src = builtins.fetchGit { url = "git@bscpm02.bsc.es:rarias/nanos6"; - rev = "17415b8f1064ccd0b7cfcf7097a64e8d2297c81b"; + rev = "61ba5d39d7f9c99ca41b74fff34e0284bf039881"; ref = branch; }; From fbbdf0740adcfee9eca66191b51027ca1fa5371f Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Date: Mon, 15 Jun 2020 12:45:16 +0200 Subject: [PATCH 013/987] Fix TAMPI derivation --- bsc/cpic/default.nix | 3 ++- bsc/tampi/default.nix | 31 ++++++++++++++----------------- 2 files changed, 16 insertions(+), 18 deletions(-) diff --git a/bsc/cpic/default.nix b/bsc/cpic/default.nix index 133a81d..a88afde 100644 --- a/bsc/cpic/default.nix +++ b/bsc/cpic/default.nix @@ -33,6 +33,7 @@ stdenv.mkDerivation rec { preConfigure = '' export NANOS6_HOME="${nanos6}" + export TAMPI_HOME="${tampi}" ''; #enableParallelBuilding = true; @@ -44,7 +45,7 @@ stdenv.mkDerivation rec { uthash # llvmPackages_10.bintools fftw -# tampi + tampi hdf5 libgcc strace diff --git a/bsc/tampi/default.nix b/bsc/tampi/default.nix index c9f9cec..4f60930 100644 --- a/bsc/tampi/default.nix +++ b/bsc/tampi/default.nix @@ -9,23 +9,20 @@ , mpi , gcc}: -let - inherit stdenv fetchurl; +stdenv.mkDerivation rec { version = "1.0.1"; -in -{ - hello = stdenv.mkDerivation rec { - name = "tampi-${version}"; - enableParallelBuilding = true; - buildInputs = [ automake autoconf libtool gnumake boost mpi gcc ]; - #hardeningDisable = [ "format" ]; - preConfigure = '' - autoreconf -fiv - ''; - configureFlags = [ "--disable-mpi-mt-check" ]; - src = fetchurl { - url = "https://github.com/bsc-pm/tampi/archive/v${version}.tar.gz"; - sha256 = "8608a74325939d2a6b56e82f7f6788efbc67731e2d64793bac69475f5b4b9704"; - }; + name = "tampi-${version}"; + enableParallelBuilding = true; + buildInputs = [ automake autoconf libtool gnumake boost mpi gcc ]; + #hardeningDisable = [ "format" ]; + preConfigure = '' + autoreconf -fiv + ''; + + dontDisableStatic = true; + configureFlags = [ "--disable-mpi-mt-check" ]; + src = fetchurl { + url = "https://github.com/bsc-pm/tampi/archive/v${version}.tar.gz"; + sha256 = "8608a74325939d2a6b56e82f7f6788efbc67731e2d64793bac69475f5b4b9704"; }; } From cae91fdcc05a3a66042aa59c70be4a96319820ae Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Date: Mon, 15 Jun 2020 12:58:27 +0200 Subject: [PATCH 014/987] Dont strip cpic symbols --- bsc/cpic/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/bsc/cpic/default.nix b/bsc/cpic/default.nix index a88afde..3104d50 100644 --- a/bsc/cpic/default.nix +++ b/bsc/cpic/default.nix @@ -37,6 +37,7 @@ stdenv.mkDerivation rec { ''; #enableParallelBuilding = true; + dontStrip = true; buildInputs = [ libconfig From 63c78f50de3e61130acd076dac3f2f1edef0f591 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Date: Mon, 15 Jun 2020 17:19:36 +0200 Subject: [PATCH 015/987] Fix OpenMPI and Extrae clash --- bsc/openmpi/default.nix | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/bsc/openmpi/default.nix b/bsc/openmpi/default.nix index 59c8875..1cea9bb 100644 --- a/bsc/openmpi/default.nix +++ b/bsc/openmpi/default.nix @@ -105,5 +105,9 @@ in stdenv.mkDerivation rec { maintainers = with maintainers; [ markuskowa ]; license = licenses.bsd3; platforms = platforms.unix; + # In order to use OpenMPI with Extrae we need to keep the Extrae libraries + # rather than the ones from OpenMPI. This happens with libompitrace.so, so + # we set to a lower priority (higher value) the OpenMPI package. + priority = 10; }; } From a8523c4b4eac2f5c970af7ffc8a7afe5b81c37de Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Date: Tue, 16 Jun 2020 15:39:11 +0200 Subject: [PATCH 016/987] Add sandbox build test --- default.nix | 2 ++ test/chroot.nix | 22 ++++++++++++++++++++++ 2 files changed, 24 insertions(+) create mode 100644 test/chroot.nix diff --git a/default.nix b/default.nix index fff8135..6621209 100644 --- a/default.nix +++ b/default.nix @@ -125,5 +125,7 @@ let dummy = callPackage ./bsc/dummy/default.nix { }; + chroot = callPackage ./test/chroot.nix {}; + }; in pkgs // self diff --git a/test/chroot.nix b/test/chroot.nix new file mode 100644 index 0000000..e15fe73 --- /dev/null +++ b/test/chroot.nix @@ -0,0 +1,22 @@ +{stdenv}: + +stdenv.mkDerivation rec { + version = "0.0.1"; + name = "chroot-checker"; + src = ./chroot.nix; + dontUnpack = true; + buildPhase = '' + if [ -e /boot ]; then + echo Build is NOT under chroot + echo This is the content of / : + ls -l / + exit 1 + fi + + echo "OK: Build is under chroot" + ''; + + installPhase = '' + mkdir -p $out + ''; +} From 19e4e1212686b919eabd0f50c64ee8a060e69012 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Date: Wed, 17 Jun 2020 13:00:49 +0200 Subject: [PATCH 017/987] Working stdenv with clang+ompss2 --- bsc/cpic/default.nix | 4 +- bsc/llvm-ompss2/clang.nix | 68 +++++++++++++++++++++++++++ bsc/llvm-ompss2/default.nix | 74 ++++++++--------------------- default.nix | 83 ++++++++++++++++++++++----------- test/compilers/clang-ompss2.nix | 20 ++++++++ test/compilers/hello.c | 7 +++ test/compilers/hello.cc | 7 +++ 7 files changed, 178 insertions(+), 85 deletions(-) create mode 100644 bsc/llvm-ompss2/clang.nix create mode 100644 test/compilers/clang-ompss2.nix create mode 100644 test/compilers/hello.c create mode 100644 test/compilers/hello.cc diff --git a/bsc/cpic/default.nix b/bsc/cpic/default.nix index 3104d50..284c269 100644 --- a/bsc/cpic/default.nix +++ b/bsc/cpic/default.nix @@ -27,12 +27,12 @@ stdenv.mkDerivation rec { # }; postConfigure = '' - env | grep NIX + env ''; +# export NANOS6_HOME="${nanos6}" preConfigure = '' - export NANOS6_HOME="${nanos6}" export TAMPI_HOME="${tampi}" ''; diff --git a/bsc/llvm-ompss2/clang.nix b/bsc/llvm-ompss2/clang.nix new file mode 100644 index 0000000..7ea8e60 --- /dev/null +++ b/bsc/llvm-ompss2/clang.nix @@ -0,0 +1,68 @@ +{ + stdenv +, fetchgit +, cmake +, lld +, bash +, python3 +, perl +, clang +, which +, libelf +, libffi +, pkg-config +, enableDebug ? true +}: + +stdenv.mkDerivation rec { + version = "11.0.0"; + pname = "clang-ompss2"; + enableParallelBuilding = true; + #isClang = true; + #isGNU = true; + + isClangWithOmpss = true; + + buildInputs = [ + which + clang + bash + python3 + perl + cmake + lld + libelf + libffi + pkg-config + ]; + + cmakeBuildType = if enableDebug then "Debug" else "Release"; + + dontUseCmakeBuildDir = true; + + preConfigure = '' + mkdir -p build + cd build + cmakeDir="../llvm" + cmakeFlagsArray=( + "-DLLVM_ENABLE_LLD=ON" + "-DCMAKE_CXX_FLAGS_DEBUG=-g -ggnu-pubnames" + "-DCMAKE_EXE_LINKER_FLAGS_DEBUG=-Wl,-gdb-index" + "-DLLVM_LIT_ARGS=-sv --xunit-xml-output=xunit.xml" + "-DLLVM_ENABLE_PROJECTS=clang;openmp" + "-DLLVM_ENABLE_ASSERTIONS=ON" + "-DLLVM_INSTALL_TOOLCHAIN_ONLY=ON" + ) + ''; + +# About "-DCLANG_DEFAULT_NANOS6_HOME=${nanos6}", we could specify a default +# nanos6 installation, but this is would require a recompilation of clang each +# time nanos6 is changed. Better to use the environment variable NANOS6_HOME, +# and specify nanos6 at run time. + + src = builtins.fetchGit { + url = "git@bscpm02.bsc.es:llvm-ompss/llvm-mono.git"; + rev = "38e2e6aac04d40b6b2823751ce25f6b414f52263"; + ref = "master"; + }; +} diff --git a/bsc/llvm-ompss2/default.nix b/bsc/llvm-ompss2/default.nix index db05719..6bb282b 100644 --- a/bsc/llvm-ompss2/default.nix +++ b/bsc/llvm-ompss2/default.nix @@ -1,63 +1,27 @@ { stdenv -, fetchgit -, cmake -, lld -, bash -, python3 -, perl -, clang -, which -, libelf -, libffi -, pkg-config -, enableDebug ? true +, gcc +, nanos6 +, clang-ompss2-unwrapped +, wrapCCWith +, libstdcxxHook }: -stdenv.mkDerivation rec { - version = "11.0.0"; - pname = "clang-ompss2"; - enableParallelBuilding = true; - isClang = true; - isGNU = true; - isClangWithOmpss = true; +let + targetConfig = stdenv.targetPlatform.config; + inherit gcc nanos6; +in wrapCCWith rec { + cc = clang-ompss2-unwrapped; + extraPackages = [ libstdcxxHook ]; + extraBuildCommands = '' + echo "-target ${targetConfig}" >> $out/nix-support/cc-cflags + echo "-B${gcc.cc}/lib/gcc/${targetConfig}/${gcc.version}" >> $out/nix-support/cc-cflags + echo "-L${gcc.cc}/lib/gcc/${targetConfig}/${gcc.version}" >> $out/nix-support/cc-ldflags + echo "-L${gcc.cc.lib}/${targetConfig}/lib" >> $out/nix-support/cc-ldflags + echo "--gcc-toolchain=${gcc}" >> $out/nix-support/cc-cflags - buildInputs = [ - which - clang - bash - python3 - perl - cmake - lld - libelf - libffi - pkg-config - ]; - - cmakeBuildType = if enableDebug then "Debug" else "Release"; - - dontUseCmakeBuildDir = true; - - preConfigure = '' - mkdir -p build - cd build - cmakeDir="../llvm" - cmakeFlagsArray=( - "-DLLVM_ENABLE_LLD=ON" - "-DCMAKE_CXX_FLAGS_DEBUG=-g -ggnu-pubnames" - "-DCMAKE_EXE_LINKER_FLAGS_DEBUG=-Wl,-gdb-index" - "-DLLVM_LIT_ARGS=-sv --xunit-xml-output=xunit.xml" - "-DLLVM_ENABLE_PROJECTS=clang;openmp" - "-DLLVM_ENABLE_ASSERTIONS=ON" - "-DLLVM_INSTALL_TOOLCHAIN_ONLY=ON" - ) + echo "# Hack to include NANOS6_HOME" >> $out/nix-support/setup-hook + echo "export NANOS6_HOME=${nanos6}" >> $out/nix-support/setup-hook ''; - - src = builtins.fetchGit { - url = "git@bscpm02.bsc.es:llvm-ompss/llvm-mono.git"; - rev = "38e2e6aac04d40b6b2823751ce25f6b414f52263"; - ref = "master"; - }; } diff --git a/default.nix b/default.nix index 6621209..a420226 100644 --- a/default.nix +++ b/default.nix @@ -3,11 +3,8 @@ let inherit (pkgs.lib) callPackageWith; inherit (pkgs.lib) callPackagesWith; - inherit (pkgs) pythonPackages; - inherit (pkgs) perlPackages; - inherit (pkgs) buildPerlPackage; + #callPackage = callPackageWith (pkgs); callPackage = callPackageWith (pkgs // self.bsc); - callPackage_i686 = callPackageWith (pkgs.pkgsi686Linux // self.bsc); callPackages = callPackagesWith (pkgs // self.bsc); self.bsc = rec { @@ -51,20 +48,22 @@ let extrae = extrae; }; - clang-ompss2-unwrapped = callPackage ./bsc/llvm-ompss2/default.nix { }; +# +# clang-ompss2 = import ./bsc/cc-wrapper/default.nix { +## inherit stdenv binutils coreutils ; +## stdenv = bsc.stdenv; +# coreutils = pkgs.coreutils; +# bintools = pkgs.binutils; +# gnugrep = pkgs.gnugrep; +# stdenvNoCC = pkgs.stdenvNoCC; +# libc = pkgs.glibc; +# nativeTools = false; +# nativeLibc = false; +# cc = clang-ompss2-unwrapped; +# }; - clang-ompss2 = import ./bsc/cc-wrapper/default.nix { -# inherit stdenv binutils coreutils ; -# stdenv = bsc.stdenv; - coreutils = pkgs.coreutils; - bintools = pkgs.binutils; - gnugrep = pkgs.gnugrep; - stdenvNoCC = pkgs.stdenvNoCC; - libc = pkgs.glibc; - nativeTools = false; - nativeLibc = false; - cc = clang-ompss2-unwrapped; - }; + + # gcc = lib.makeOverridable (import ./bsc/cc-wrapper/default.nix) { # nativeTools = false; @@ -110,22 +109,50 @@ let # llvmPackages_latest = llvmPackages_10; - stdenv_nanos6 = pkgs.clangStdenv.override { - cc = clang-ompss2; - }; - - cpic = callPackage ./bsc/cpic/default.nix { - stdenv = stdenv_nanos6; - tampi = tampi; - mpi = mpi; - nanos6 = nanos6-git; -# llvm-ompss2 = llvm-ompss2; - }; +# +# cpic = callPackage ./bsc/cpic/default.nix { +# stdenv = stdenv_nanos6; +# tampi = tampi; +# mpi = mpi; +# nanos6 = nanos6-git; +## llvm-ompss2 = llvm-ompss2; +# }; dummy = callPackage ./bsc/dummy/default.nix { }; chroot = callPackage ./test/chroot.nix {}; +# llvmOmpss2Packages = callPackage bsc/llvm-ompss2/11/default.nix {}; + + + clang-ompss2-unwrapped = callPackage ./bsc/llvm-ompss2/clang.nix { + stdenv = pkgs.llvmPackages_10.stdenv; + }; + + clang-ompss2 = callPackage bsc/llvm-ompss2/default.nix { + nanos6 = nanos6-git; + inherit clang-ompss2-unwrapped; + }; + + stdenv-nanos6 = pkgs.clangStdenv.override { + cc = clang-ompss2; + }; + + test-clang-ompss2 = callPackage ./test/compilers/clang-ompss2.nix { + stdenv = stdenv-nanos6; + nanos6 = nanos6-git; + inherit clang-ompss2; + }; + + cpic = callPackage ./bsc/cpic/default.nix { + stdenv = stdenv-nanos6; + tampi = tampi; + mpi = mpi; + nanos6 = nanos6-git; +# llvm-ompss2 = llvm-ompss2; + }; + }; + in pkgs // self diff --git a/test/compilers/clang-ompss2.nix b/test/compilers/clang-ompss2.nix new file mode 100644 index 0000000..6fe0e45 --- /dev/null +++ b/test/compilers/clang-ompss2.nix @@ -0,0 +1,20 @@ +{stdenv, clang-ompss2, nanos6}: + +stdenv.mkDerivation rec { + version = "0.0.1"; + name = "test-clang-ompss2"; + src = ./.; + buildInputs = [ clang-ompss2 nanos6 ]; + + buildPhase = '' + export NIX_DEBUG=6 + clang -fompss-2 hello.c -o hello + ./hello + clang -fompss-2 hello.cc -o hello + ./hello + ''; + + installPhase = '' + mkdir -p $out + ''; +} diff --git a/test/compilers/hello.c b/test/compilers/hello.c new file mode 100644 index 0000000..f170c55 --- /dev/null +++ b/test/compilers/hello.c @@ -0,0 +1,7 @@ +#include + +int main() +{ + printf("Hello world!\n"); + return 0; +} diff --git a/test/compilers/hello.cc b/test/compilers/hello.cc new file mode 100644 index 0000000..f170c55 --- /dev/null +++ b/test/compilers/hello.cc @@ -0,0 +1,7 @@ +#include + +int main() +{ + printf("Hello world!\n"); + return 0; +} From d9ec42614c2d74dcf896091a749716b16b2c5f40 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Date: Wed, 17 Jun 2020 13:21:44 +0200 Subject: [PATCH 018/987] Fix libstdc++.so path --- bsc/llvm-ompss2/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bsc/llvm-ompss2/default.nix b/bsc/llvm-ompss2/default.nix index 6bb282b..fdd789a 100644 --- a/bsc/llvm-ompss2/default.nix +++ b/bsc/llvm-ompss2/default.nix @@ -18,7 +18,7 @@ in wrapCCWith rec { echo "-target ${targetConfig}" >> $out/nix-support/cc-cflags echo "-B${gcc.cc}/lib/gcc/${targetConfig}/${gcc.version}" >> $out/nix-support/cc-cflags echo "-L${gcc.cc}/lib/gcc/${targetConfig}/${gcc.version}" >> $out/nix-support/cc-ldflags - echo "-L${gcc.cc.lib}/${targetConfig}/lib" >> $out/nix-support/cc-ldflags + echo "-L${gcc.cc.lib}/lib" >> $out/nix-support/cc-ldflags echo "--gcc-toolchain=${gcc}" >> $out/nix-support/cc-cflags echo "# Hack to include NANOS6_HOME" >> $out/nix-support/setup-hook From ed829aace05e585c975d8c62dcc27a08e242ce21 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Date: Wed, 17 Jun 2020 13:22:06 +0200 Subject: [PATCH 019/987] Clean cpic dependencies --- bsc/cpic/default.nix | 22 ++-------------------- 1 file changed, 2 insertions(+), 20 deletions(-) diff --git a/bsc/cpic/default.nix b/bsc/cpic/default.nix index 284c269..a03e239 100644 --- a/bsc/cpic/default.nix +++ b/bsc/cpic/default.nix @@ -4,14 +4,9 @@ , nanos6 , mpi , uthash -, overrideCC -, llvmPackages_10 , fftw , tampi , hdf5 -, libgcc -, strace -, gcc }: stdenv.mkDerivation rec { @@ -30,13 +25,12 @@ stdenv.mkDerivation rec { env ''; - -# export NANOS6_HOME="${nanos6}" preConfigure = '' export TAMPI_HOME="${tampi}" + #export NIX_DEBUG=5 ''; - #enableParallelBuilding = true; + enableParallelBuilding = true; dontStrip = true; buildInputs = [ @@ -44,23 +38,11 @@ stdenv.mkDerivation rec { nanos6 mpi uthash -# llvmPackages_10.bintools fftw tampi hdf5 - libgcc - strace - gcc ]; -# Doesnt work -# export LIBRARY_PATH=${libgcc}/lib -# export LD_LIBRARY_PATH=${libgcc}/lib -# buildPhase = '' -# #NIX_DEBUG=5 strace -ff -s99999 -e trace=execve make SHELL='bash -x' -# NIX_DEBUG=5 strace -ff -s99999 -e trace=execve make SHELL='bash -x' -# ''; - installPhase = '' mkdir -p $out/bin cp cpic $out/bin/cpic From 86b4b016b26f5a645307b71f5581850770b93356 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Date: Wed, 17 Jun 2020 13:23:29 +0200 Subject: [PATCH 020/987] Remove unused helpers --- bsc/cc-wrapper-bbg/add-flags | 28 -- bsc/cc-wrapper-bbg/cc-wrapper.sh | 157 ------- bsc/cc-wrapper-bbg/default.nix | 296 ------------ bsc/cc-wrapper-bbg/gnat-wrapper.sh | 103 ----- bsc/cc-wrapper-bbg/gnatlink-wrapper.sh | 33 -- bsc/cc-wrapper-bbg/ld-solaris-wrapper.sh | 40 -- bsc/cc-wrapper-bbg/ld-wrapper.sh | 166 ------- bsc/cc-wrapper-bbg/setup-hook.sh | 47 -- bsc/cc-wrapper-bbg/utils.sh | 24 - bsc/cc-wrapper/add-flags.sh | 57 --- bsc/cc-wrapper/add-hardening.sh | 72 --- bsc/cc-wrapper/cc-wrapper.sh | 197 -------- bsc/cc-wrapper/default.nix | 420 ------------------ bsc/cc-wrapper/gnat-wrapper.sh | 165 ------- bsc/cc-wrapper/setup-hook.sh | 120 ----- bsc/setup-hooks/audit-blas.sh | 37 -- bsc/setup-hooks/audit-tmpdir.sh | 41 -- bsc/setup-hooks/auto-patchelf.sh | 237 ---------- bsc/setup-hooks/autoreconf.sh | 7 - bsc/setup-hooks/breakpoint-hook.sh | 9 - bsc/setup-hooks/compress-man-pages.sh | 32 -- bsc/setup-hooks/die.sh | 21 - .../enable-coverage-instrumentation.sh | 20 - bsc/setup-hooks/find-xml-catalogs.sh | 22 - bsc/setup-hooks/fix-darwin-dylib-names.sh | 40 -- bsc/setup-hooks/gog-unpack.sh | 11 - bsc/setup-hooks/install-shell-files.sh | 165 ------- bsc/setup-hooks/keep-build-tree.sh | 6 - bsc/setup-hooks/ld-is-cc-hook.sh | 5 - .../make-coverage-analysis-report.sh | 25 -- bsc/setup-hooks/make-symlinks-relative.sh | 28 -- bsc/setup-hooks/make-wrapper.sh | 146 ------ bsc/setup-hooks/move-docs.sh | 23 - bsc/setup-hooks/move-lib64.sh | 22 - bsc/setup-hooks/move-sbin.sh | 19 - bsc/setup-hooks/multiple-outputs.sh | 199 --------- bsc/setup-hooks/patch-shebangs.sh | 119 ----- bsc/setup-hooks/prune-libtool-files.sh | 22 - bsc/setup-hooks/role.bash | 75 ---- bsc/setup-hooks/separate-debug-info.sh | 37 -- bsc/setup-hooks/set-java-classpath.sh | 13 - .../set-source-date-epoch-to-latest.sh | 34 -- bsc/setup-hooks/setup-debug-info-dirs.sh | 5 - bsc/setup-hooks/shorten-perl-shebang.sh | 88 ---- bsc/setup-hooks/strip.sh | 57 --- .../update-autotools-gnu-config-scripts.sh | 12 - bsc/setup-hooks/use-old-cxx-abi.sh | 1 - bsc/setup-hooks/validate-pkg-config.sh | 19 - bsc/setup-hooks/win-dll-link.sh | 45 -- bsc/setup-hooks/wrap-gapps-hook.sh | 93 ---- bsc/wrapper-common/utils.bash | 92 ---- 51 files changed, 3752 deletions(-) delete mode 100644 bsc/cc-wrapper-bbg/add-flags delete mode 100644 bsc/cc-wrapper-bbg/cc-wrapper.sh delete mode 100644 bsc/cc-wrapper-bbg/default.nix delete mode 100644 bsc/cc-wrapper-bbg/gnat-wrapper.sh delete mode 100644 bsc/cc-wrapper-bbg/gnatlink-wrapper.sh delete mode 100644 bsc/cc-wrapper-bbg/ld-solaris-wrapper.sh delete mode 100644 bsc/cc-wrapper-bbg/ld-wrapper.sh delete mode 100644 bsc/cc-wrapper-bbg/setup-hook.sh delete mode 100644 bsc/cc-wrapper-bbg/utils.sh delete mode 100644 bsc/cc-wrapper/add-flags.sh delete mode 100644 bsc/cc-wrapper/add-hardening.sh delete mode 100644 bsc/cc-wrapper/cc-wrapper.sh delete mode 100644 bsc/cc-wrapper/default.nix delete mode 100644 bsc/cc-wrapper/gnat-wrapper.sh delete mode 100644 bsc/cc-wrapper/setup-hook.sh delete mode 100644 bsc/setup-hooks/audit-blas.sh delete mode 100644 bsc/setup-hooks/audit-tmpdir.sh delete mode 100644 bsc/setup-hooks/auto-patchelf.sh delete mode 100644 bsc/setup-hooks/autoreconf.sh delete mode 100644 bsc/setup-hooks/breakpoint-hook.sh delete mode 100644 bsc/setup-hooks/compress-man-pages.sh delete mode 100644 bsc/setup-hooks/die.sh delete mode 100644 bsc/setup-hooks/enable-coverage-instrumentation.sh delete mode 100644 bsc/setup-hooks/find-xml-catalogs.sh delete mode 100644 bsc/setup-hooks/fix-darwin-dylib-names.sh delete mode 100644 bsc/setup-hooks/gog-unpack.sh delete mode 100644 bsc/setup-hooks/install-shell-files.sh delete mode 100644 bsc/setup-hooks/keep-build-tree.sh delete mode 100644 bsc/setup-hooks/ld-is-cc-hook.sh delete mode 100644 bsc/setup-hooks/make-coverage-analysis-report.sh delete mode 100644 bsc/setup-hooks/make-symlinks-relative.sh delete mode 100644 bsc/setup-hooks/make-wrapper.sh delete mode 100644 bsc/setup-hooks/move-docs.sh delete mode 100644 bsc/setup-hooks/move-lib64.sh delete mode 100644 bsc/setup-hooks/move-sbin.sh delete mode 100644 bsc/setup-hooks/multiple-outputs.sh delete mode 100644 bsc/setup-hooks/patch-shebangs.sh delete mode 100644 bsc/setup-hooks/prune-libtool-files.sh delete mode 100644 bsc/setup-hooks/role.bash delete mode 100644 bsc/setup-hooks/separate-debug-info.sh delete mode 100644 bsc/setup-hooks/set-java-classpath.sh delete mode 100644 bsc/setup-hooks/set-source-date-epoch-to-latest.sh delete mode 100644 bsc/setup-hooks/setup-debug-info-dirs.sh delete mode 100644 bsc/setup-hooks/shorten-perl-shebang.sh delete mode 100644 bsc/setup-hooks/strip.sh delete mode 100644 bsc/setup-hooks/update-autotools-gnu-config-scripts.sh delete mode 100644 bsc/setup-hooks/use-old-cxx-abi.sh delete mode 100644 bsc/setup-hooks/validate-pkg-config.sh delete mode 100644 bsc/setup-hooks/win-dll-link.sh delete mode 100644 bsc/setup-hooks/wrap-gapps-hook.sh delete mode 100644 bsc/wrapper-common/utils.bash diff --git a/bsc/cc-wrapper-bbg/add-flags b/bsc/cc-wrapper-bbg/add-flags deleted file mode 100644 index d483615..0000000 --- a/bsc/cc-wrapper-bbg/add-flags +++ /dev/null @@ -1,28 +0,0 @@ -# `-B@out@/bin' forces gcc to use ld-wrapper.sh when calling ld. -export NIX_CFLAGS_COMPILE="-B@out@/bin/ $NIX_CFLAGS_COMPILE" - -if [ -e @out@/nix-support/libc-cflags ]; then - export NIX_CFLAGS_COMPILE="$(cat @out@/nix-support/libc-cflags) $NIX_CFLAGS_COMPILE" -fi - -if [ -e @out@/nix-support/gcc-cflags ]; then - export NIX_CFLAGS_COMPILE="$(cat @out@/nix-support/cc-cflags) $NIX_CFLAGS_COMPILE" -fi - -if [ -e @out@/nix-support/gnat-cflags ]; then - export NIX_GNATFLAGS_COMPILE="$(cat @out@/nix-support/gnat-cflags) $NIX_GNATFLAGS_COMPILE" -fi - -if [ -e @out@/nix-support/libc-ldflags ]; then - export NIX_LDFLAGS+=" $(cat @out@/nix-support/libc-ldflags)" -fi - -if [ -e @out@/nix-support/gcc-ldflags ]; then - export NIX_LDFLAGS+=" $(cat @out@/nix-support/cc-ldflags)" -fi - -if [ -e @out@/nix-support/libc-ldflags-before ]; then - export NIX_LDFLAGS_BEFORE="$(cat @out@/nix-support/libc-ldflags-before) $NIX_LDFLAGS_BEFORE" -fi - -export NIX_CC_WRAPPER_FLAGS_SET=1 diff --git a/bsc/cc-wrapper-bbg/cc-wrapper.sh b/bsc/cc-wrapper-bbg/cc-wrapper.sh deleted file mode 100644 index c378d69..0000000 --- a/bsc/cc-wrapper-bbg/cc-wrapper.sh +++ /dev/null @@ -1,157 +0,0 @@ -#! @shell@ -e - -if [ -n "$NIX_CC_WRAPPER_START_HOOK" ]; then - source "$NIX_CC_WRAPPER_START_HOOK" -fi - -if [ -z "$NIX_CC_WRAPPER_FLAGS_SET" ]; then - source @out@/nix-support/add-flags.sh -fi - -source @out@/nix-support/utils.sh - - -if [ -e @cc_dir@/nix-support/compiler_setup.sh ]; then - source @cc_dir@/nix-support/compiler_setup.sh -fi - - -# Figure out if linker flags should be passed. GCC prints annoying -# warnings when they are not needed. -dontLink=0 -getVersion=0 -nonFlagArgs=0 - -for i in "$@"; do - if [ "$i" = -c ]; then - dontLink=1 - elif [ "$i" = -S ]; then - dontLink=1 - elif [ "$i" = -E ]; then - dontLink=1 - elif [ "$i" = -E ]; then - dontLink=1 - elif [ "$i" = -M ]; then - dontLink=1 - elif [ "$i" = -MM ]; then - dontLink=1 - elif [ "$i" = -x ]; then - # At least for the cases c-header or c++-header we should set dontLink. - # I expect no one use -x other than making precompiled headers. - dontLink=1 - elif [ "${i:0:1}" != - ]; then - nonFlagArgs=1 - elif [ "$i" = -m32 ]; then - if [ -e @out@/nix-support/dynamic-linker-m32 ]; then - NIX_LDFLAGS="$NIX_LDFLAGS -dynamic-linker $(cat @out@/nix-support/dynamic-linker-m32)" - fi - fi -done - -# If we pass a flag like -Wl, then gcc will call the linker unless it -# can figure out that it has to do something else (e.g., because of a -# "-c" flag). So if no non-flag arguments are given, don't pass any -# linker flags. This catches cases like "gcc" (should just print -# "gcc: no input files") and "gcc -v" (should print the version). -if [ "$nonFlagArgs" = 0 ]; then - dontLink=1 -fi - - -# Optionally filter out paths not refering to the store. -params=("$@") -if [ "$NIX_ENFORCE_PURITY" = 1 -a -n "$NIX_STORE" ]; then - rest=() - n=0 - while [ $n -lt ${#params[*]} ]; do - p=${params[n]} - p2=${params[$((n+1))]} - if [ "${p:0:3}" = -L/ ] && badPath "${p:2}"; then - skip $p - elif [ "$p" = -L ] && badPath "$p2"; then - n=$((n + 1)); skip $p2 - elif [ "${p:0:3}" = -I/ ] && badPath "${p:2}"; then - skip $p - elif [ "$p" = -I ] && badPath "$p2"; then - n=$((n + 1)); skip $p2 - elif [ "$p" = -isystem ] && badPath "$p2"; then - n=$((n + 1)); skip $p2 - else - rest=("${rest[@]}" "$p") - fi - n=$((n + 1)) - done - params=("${rest[@]}") -fi - -if [[ "@prog@" = *++ ]]; then - if echo "$@" | grep -qv -- -nostdlib; then - NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE ${NIX_CXXSTDLIB_COMPILE-@default_cxx_stdlib_compile@}" - NIX_CFLAGS_LINK="$NIX_CFLAGS_LINK $NIX_CXXSTDLIB_LINK" - fi -fi - -# Add the flags for the C compiler proper. -extraAfter=($NIX_CFLAGS_COMPILE) -extraBefore=() - -# When enforcing purity, pretend gcc can't find the current date and -# time -if [ "$NIX_ENFORCE_PURITY" = 1 ]; then - extraAfter+=('-D__DATE__="Jan 01 1970"' - '-D__TIME__="00:00:01"' - -Wno-builtin-macro-redefined) -fi - - -if [ "$dontLink" != 1 ]; then - - # Add the flags that should only be passed to the compiler when - # linking. - extraAfter+=($NIX_CFLAGS_LINK) - - # Add the flags that should be passed to the linker (and prevent - # `ld-wrapper' from adding NIX_LDFLAGS again). - for i in $NIX_LDFLAGS_BEFORE; do - extraBefore=(${extraBefore[@]} "-Wl,$i") - done - for i in $NIX_LDFLAGS; do - if [ "${i:0:3}" = -L/ ]; then - extraAfter+=("$i") - else - extraAfter+=("-Wl,$i") - fi - done - export NIX_LDFLAGS_SET=1 -fi - -# As a very special hack, if the arguments are just `-v', then don't -# add anything. This is to prevent `gcc -v' (which normally prints -# out the version number and returns exit code 0) from printing out -# `No input files specified' and returning exit code 1. -if [ "$*" = -v ]; then - extraAfter=() - extraBefore=() -fi - -# Optionally print debug info. -if [ -n "$NIX_DEBUG" ]; then - echo "original flags to @prog@:" >&2 - for i in "${params[@]}"; do - echo " $i" >&2 - done - echo "extraBefore flags to @prog@:" >&2 - for i in ${extraBefore[@]}; do - echo " $i" >&2 - done - echo "extraAfter flags to @prog@:" >&2 - for i in ${extraAfter[@]}; do - echo " $i" >&2 - done -fi - -if [ -n "$NIX_CC_WRAPPER_EXEC_HOOK" ]; then - source "$NIX_CC_WRAPPER_EXEC_HOOK" -fi - -exec @prog@ ${extraBefore[@]} "${params[@]}" "${extraAfter[@]}" diff --git a/bsc/cc-wrapper-bbg/default.nix b/bsc/cc-wrapper-bbg/default.nix deleted file mode 100644 index 1cdd5f5..0000000 --- a/bsc/cc-wrapper-bbg/default.nix +++ /dev/null @@ -1,296 +0,0 @@ -# The Nixpkgs CC is not directly usable, since it doesn't know where -# the C library and standard header files are. Therefore the compiler -# produced by that package cannot be installed directly in a user -# environment and used from the command line. So we use a wrapper -# script that sets up the right environment variables so that the -# compiler and the linker just "work". - -{ name ? "", stdenv, nativeTools, nativeLibc, nativePrefix ? "" -, cc ? null, libc ? null, binutils ? null, coreutils ? null, shell ? stdenv.shell -, zlib ? null, extraPackages ? [], extraBuildCommands ? "" -, dyld ? null # TODO: should this be a setup-hook on dyld? -, isGNU ? false, isClang ? cc.isClang or false -}: - -with stdenv.lib; - -assert cc.isClangWithOmpss; - -assert nativeTools -> nativePrefix != ""; -assert !nativeTools -> cc != null && binutils != null && coreutils != null; -assert !nativeLibc -> libc != null; - -# For ghdl (the vhdl language provider to gcc) we need zlib in the wrapper. -assert cc.langVhdl or false -> zlib != null; - -let - - ccVersion = (builtins.parseDrvName cc.name).version; - ccName = (builtins.parseDrvName cc.name).name; - -in - -stdenv.mkDerivation { - name = "THE-wrapper"; - #name = "${cc.name}-wrapper-${cc.version}"; - #name = (if name != "" then name else ccName + "-wrapper") + - # (if cc != null && ccVersion != "" then "-" + ccVersion else ""); - - preferLocalBuild = true; - - inherit cc shell; - cc_dir = cc; - libc = if nativeLibc then null else libc; - binutils = if nativeTools then null else binutils; - # The wrapper scripts use 'cat', so we may need coreutils. - coreutils = if nativeTools then null else coreutils; - - passthru = { inherit nativeTools nativeLibc nativePrefix isGNU isClang; }; - - buildCommand = - '' - mkdir -p $out/bin $out/nix-support - - wrap() { - local dst="$1" - local wrapper="$2" - export prog="$3" - substituteAll "$wrapper" "$out/bin/$dst" - chmod +x "$out/bin/$dst" - } - '' - - + optionalString (!nativeLibc) (if (!stdenv.isDarwin) then '' - dynamicLinker="$libc/lib/$dynamicLinker" - echo $dynamicLinker > $out/nix-support/dynamic-linker - - if [ -e $libc/lib/32/ld-linux.so.2 ]; then - echo $libc/lib/32/ld-linux.so.2 > $out/nix-support/dynamic-linker-m32 - fi - - # The dynamic linker is passed in `ldflagsBefore' to allow - # explicit overrides of the dynamic linker by callers to gcc/ld - # (the *last* value counts, so ours should come first). - echo "-dynamic-linker" $dynamicLinker > $out/nix-support/libc-ldflags-before - '' else '' - echo $dynamicLinker > $out/nix-support/dynamic-linker - - echo "export LD_DYLD_PATH=\"$dynamicLinker\"" >> $out/nix-support/setup-hook - '') - - + optionalString (!nativeLibc) '' - # The "-B$libc/lib/" flag is a quick hack to force gcc to link - # against the crt1.o from our own glibc, rather than the one in - # /usr/lib. (This is only an issue when using an `impure' - # compiler/linker, i.e., one that searches /usr/lib and so on.) - # - # Unfortunately, setting -B appears to override the default search - # path. Thus, the gcc-specific "../includes-fixed" directory is - # now longer searched and glibc's header fails to - # compile, because it uses "#include_next " to find the - # limits.h file in ../includes-fixed. To remedy the problem, - # another -idirafter is necessary to add that directory again. - echo "-B$libc/lib/ -idirafter $libc/include -idirafter $cc/lib/gcc/*/*/include-fixed" > $out/nix-support/libc-cflags - - echo "-L$libc/lib" > $out/nix-support/libc-ldflags - - echo $libc > $out/nix-support/orig-libc - '' - - + (if nativeTools then '' - ccPath="${if stdenv.isDarwin then cc else nativePrefix}/bin" - ldPath="${nativePrefix}/bin" - '' else '' - echo $cc > $out/nix-support/orig-cc - - # GCC shows $cc/lib in `gcc -print-search-dirs', but not - # $cc/lib64 (even though it does actually search there...).. - # This confuses libtool. So add it to the compiler tool search - # path explicitly. - if [ -e "$cc/lib64" -a ! -L "$cc/lib64" ]; then - ccLDFlags+=" -L$cc/lib64" - ccCFlags+=" -B$cc/lib64" - fi - ccLDFlags+=" -L$cc/lib" - - ${optionalString cc.langVhdl or false '' - ccLDFlags+=" -L${zlib}/lib" - ''} - - # Find the gcc libraries path (may work only without multilib). - ${optionalString cc.langAda or false '' - basePath=`echo $cc/lib/*/*/*` - ccCFlags+=" -B$basePath -I$basePath/adainclude" - gnatCFlags="-aI$basePath/adainclude -aO$basePath/adalib" - echo "$gnatCFlags" > $out/nix-support/gnat-cflags - ''} - - if [ -e $ccPath/clang ]; then - # Need files like crtbegin.o from gcc - # It's unclear if these will ever be provided by an LLVM project - ccCFlags="$ccCFlags -B$basePath" - ccCFlags="$ccCFlags -isystem$cc/lib/clang/$ccVersion/include" - fi - - echo "$ccLDFlags" > $out/nix-support/cc-ldflags - echo "$ccCFlags" > $out/nix-support/cc-cflags - - ccPath="$cc/bin" - ldPath="$binutils/bin" - - # Propagate the wrapped cc so that if you install the wrapper, - # you get tools like gcov, the manpages, etc. as well (including - # for binutils and Glibc). - echo $cc $binutils $libc > $out/nix-support/propagated-user-env-packages - - echo ${toString extraPackages} > $out/nix-support/propagated-native-build-inputs - '' - - + optionalString (stdenv.isSunOS && nativePrefix != "") '' - # Solaris needs an additional ld wrapper. - ldPath="${nativePrefix}/bin" - ld="$out/bin/ld-solaris" - wrap ld-solaris ${./ld-solaris-wrapper.sh} - '') - - + '' - # Create a symlink to as (the assembler). This is useful when a - # cc-wrapper is installed in a user environment, as it ensures that - # the right assembler is called. - if [ -e $ldPath/as ]; then - ln -s $ldPath/as $out/bin/as - fi - - wrap ld ${./ld-wrapper.sh} ''${ld:-$ldPath/ld} - - if [ -e $binutils/bin/ld.gold ]; then - wrap ld.gold ${./ld-wrapper.sh} $binutils/bin/ld.gold - fi - - if [ -e $binutils/bin/ld.bfd ]; then - wrap ld.bfd ${./ld-wrapper.sh} $binutils/bin/ld.bfd - fi - - export real_cc=cc - export real_cxx=c++ - export default_cxx_stdlib_compile="${ - if stdenv.isLinux && !(cc.isGNU or false) - then "-isystem $(echo -n ${cc.gcc}/include/c++/*) -isystem $(echo -n ${cc.gcc}/include/c++/*)/$(${cc.gcc}/bin/gcc -dumpmachine)" - else "" - }" - - - if [ -e $ccPath/gcc ]; then - wrap gcc ${./cc-wrapper.sh} $ccPath/gcc - ln -s gcc $out/bin/cc - export real_cc=gcc - export real_cxx=g++ - elif [ -a $ccPath/icc ]; then - wrap icc ${./cc-wrapper.sh} $ccPath/icc - ln -s icc $out/bin/cc - export real_cc=icc - elif [ -e $ccPath/clang ]; then - wrap clang ${./cc-wrapper.sh} $ccPath/clang - ln -s clang $out/bin/cc - fi - - if [ -e $ccPath/g++ ]; then - wrap g++ ${./cc-wrapper.sh} $ccPath/g++ - ln -s g++ $out/bin/c++ - elif [ -e $ccPath/icpc ]; then - wrap icpc ${./cc-wrapper.sh} $ccPath/icpc - ln -s icpc $out/bin/c++ - elif [ -e $ccPath/clang++ ]; then - wrap clang++ ${./cc-wrapper.sh} $ccPath/clang++ - ln -s clang++ $out/bin/c++ - fi - - if [ -e $ccPath/cpp ]; then - wrap cpp ${./cc-wrapper.sh} $ccPath/cpp - fi - '' - - + optionalString cc.langFortran or false '' - if [ -e $ccPath/gfortran ]; then - wrap gfortran ${./cc-wrapper.sh} $ccPath/gfortran - ln -sv gfortran $out/bin/g77 - ln -sv gfortran $out/bin/f77 - elif [ -e $ccPath/ifort ]; then - wrap ifort ${./cc-wrapper.sh} $ccPath/ifort - ln -sv ifort $out/bin/gfortran - ln -sv ifort $out/bin/g77 - ln -sv ifort $out/bin/f77 - fi - - '' - - + optionalString cc.langJava or false '' - wrap gcj ${./cc-wrapper.sh} $ccPath/gcj - '' - - + optionalString cc.langGo or false '' - wrap gccgo ${./cc-wrapper.sh} $ccPath/gccgo - '' - - + optionalString cc.langAda or false '' - wrap gnatgcc ${./cc-wrapper.sh} $ccPath/gnatgcc - wrap gnatmake ${./gnat-wrapper.sh} $ccPath/gnatmake - wrap gnatbind ${./gnat-wrapper.sh} $ccPath/gnatbind - wrap gnatlink ${./gnatlink-wrapper.sh} $ccPath/gnatlink - '' - - + optionalString cc.langVhdl or false '' - ln -s $ccPath/ghdl $out/bin/ghdl - '' - - + '' - substituteAll ${./setup-hook.sh} $out/nix-support/setup-hook.tmp - cat $out/nix-support/setup-hook.tmp >> $out/nix-support/setup-hook - rm $out/nix-support/setup-hook.tmp - - substituteAll ${./add-flags} $out/nix-support/add-flags.sh - cp -p ${./utils.sh} $out/nix-support/utils.sh - '' - + extraBuildCommands; - - crossAttrs = {}; -# crossAttrs = { -# shell = shell.crossDrv + shell.crossDrv.shellPath; -# libc = stdenv.ccCross.libc; -# coreutils = coreutils.crossDrv; -# binutils = binutils.crossDrv; -# cc = cc.crossDrv; -# # -# # This is not the best way to do this. I think the reference should be -# # the style in the gcc-cross-wrapper, but to keep a stable stdenv now I -# # do this sufficient if/else. -# dynamicLinker = -# (if stdenv.cross.arch == "arm" then "ld-linux.so.3" else -# if stdenv.cross.arch == "mips" then "ld.so.1" else -# if stdenv.lib.hasSuffix "pc-gnu" stdenv.cross.config then "ld.so.1" else -# abort "don't know the name of the dynamic linker for this platform"); -# }; - - - # The dynamic linker has different names on different Linux platforms. - dynamicLinker = - if !nativeLibc then - (if stdenv.system == "i686-linux" then "ld-linux.so.2" else - if stdenv.system == "x86_64-linux" then "ld-linux-x86-64.so.2" else - if stdenv.system == "powerpc64-linux" then "ld64.so.1" else - # ARM with a wildcard, which can be "" or "-armhf". - if stdenv.isArm then "ld-linux*.so.3" else - if stdenv.system == "powerpc-linux" then "ld.so.1" else - if stdenv.system == "mips64el-linux" then "ld.so.1" else - if stdenv.system == "x86_64-darwin" then "/usr/lib/dyld" else - abort "Don't know the name of the dynamic linker for this platform.") - else ""; - - meta = - let cc_ = if cc != null then cc else {}; in - (if cc_ ? meta then removeAttrs cc.meta ["priority"] else {}) // - { description = - stdenv.lib.attrByPath ["meta" "description"] "System C compiler" cc_ - + " (wrapper script)"; - }; -} diff --git a/bsc/cc-wrapper-bbg/gnat-wrapper.sh b/bsc/cc-wrapper-bbg/gnat-wrapper.sh deleted file mode 100644 index 3514ccd..0000000 --- a/bsc/cc-wrapper-bbg/gnat-wrapper.sh +++ /dev/null @@ -1,103 +0,0 @@ -#! @shell@ -e - -if [ -n "$NIX_GNAT_WRAPPER_START_HOOK" ]; then - source "$NIX_GNAT_WRAPPER_START_HOOK" -fi - -if [ -z "$NIX_GNAT_WRAPPER_FLAGS_SET" ]; then - source @out@/nix-support/add-flags.sh -fi - -source @out@/nix-support/utils.sh - - -# Figure out if linker flags should be passed. GCC prints annoying -# warnings when they are not needed. -dontLink=0 -getVersion=0 -nonFlagArgs=0 - -for i in "$@"; do - if [ "$i" = -c ]; then - dontLink=1 - elif [ "$i" = -M ]; then - dontLink=1 - elif [ "${i:0:1}" != - ]; then - nonFlagArgs=1 - elif [ "$i" = -m32 ]; then - if [ -e @out@/nix-support/dynamic-linker-m32 ]; then - NIX_LDFLAGS="$NIX_LDFLAGS -dynamic-linker $(cat @out@/nix-support/dynamic-linker-m32)" - fi - fi -done - -# If we pass a flag like -Wl, then gcc will call the linker unless it -# can figure out that it has to do something else (e.g., because of a -# "-c" flag). So if no non-flag arguments are given, don't pass any -# linker flags. This catches cases like "gcc" (should just print -# "gcc: no input files") and "gcc -v" (should print the version). -if [ "$nonFlagArgs" = 0 ]; then - dontLink=1 -fi - - -# Optionally filter out paths not refering to the store. -params=("$@") -if [ "$NIX_ENFORCE_PURITY" = 1 -a -n "$NIX_STORE" ]; then - rest=() - n=0 - while [ $n -lt ${#params[*]} ]; do - p=${params[n]} - p2=${params[$((n+1))]} - if [ "${p:0:3}" = -L/ ] && badPath "${p:2}"; then - skip $p - elif [ "${p:0:3}" = -I/ ] && badPath "${p:2}"; then - skip $p - elif [ "${p:0:4}" = -aI/ ] && badPath "${p:3}"; then - skip $p - elif [ "${p:0:4}" = -aO/ ] && badPath "${p:3}"; then - skip $p - else - rest=("${rest[@]}" "$p") - fi - n=$((n + 1)) - done - params=("${rest[@]}") -fi - - -# Add the flags for the GNAT compiler proper. -extraAfter=($NIX_GNATFLAGS_COMPILE) -extraBefore=() - -if [ "`basename $0`x" = "gnatmakex" ]; then - extraBefore=("--GNATBIND=@out@/bin/gnatbind --GNATLINK=@out@/bin/gnatlink ") -fi - -# Add the flags that should be passed to the linker (and prevent -# `ld-wrapper' from adding NIX_LDFLAGS again). -#for i in $NIX_LDFLAGS_BEFORE; do -# extraBefore=(${extraBefore[@]} "-largs $i") -#done - -# Optionally print debug info. -if [ -n "$NIX_DEBUG" ]; then - echo "original flags to @prog@:" >&2 - for i in "${params[@]}"; do - echo " $i" >&2 - done - echo "extraBefore flags to @prog@:" >&2 - for i in ${extraBefore[@]}; do - echo " $i" >&2 - done - echo "extraAfter flags to @prog@:" >&2 - for i in ${extraAfter[@]}; do - echo " $i" >&2 - done -fi - -if [ -n "$NIX_GNAT_WRAPPER_EXEC_HOOK" ]; then - source "$NIX_GNAT_WRAPPER_EXEC_HOOK" -fi - -exec @prog@ ${extraBefore[@]} "${params[@]}" ${extraAfter[@]} diff --git a/bsc/cc-wrapper-bbg/gnatlink-wrapper.sh b/bsc/cc-wrapper-bbg/gnatlink-wrapper.sh deleted file mode 100644 index c9958db..0000000 --- a/bsc/cc-wrapper-bbg/gnatlink-wrapper.sh +++ /dev/null @@ -1,33 +0,0 @@ -#! @shell@ -e - -# Add the flags for the GNAT compiler proper. -extraAfter="--GCC=@out@/bin/gcc" -extraBefore=() - -# Add the flags that should be passed to the linker (and prevent -# `ld-wrapper' from adding NIX_LDFLAGS again). -#for i in $NIX_LDFLAGS_BEFORE; do -# extraBefore=(${extraBefore[@]} "-largs $i") -#done - -# Optionally print debug info. -if [ -n "$NIX_DEBUG" ]; then - echo "original flags to @prog@:" >&2 - for i in "$@"; do - echo " $i" >&2 - done - echo "extraBefore flags to @prog@:" >&2 - for i in ${extraBefore[@]}; do - echo " $i" >&2 - done - echo "extraAfter flags to @prog@:" >&2 - for i in ${extraAfter[@]}; do - echo " $i" >&2 - done -fi - -if [ -n "$NIX_GNAT_WRAPPER_EXEC_HOOK" ]; then - source "$NIX_GNAT_WRAPPER_EXEC_HOOK" -fi - -exec @prog@ ${extraBefore[@]} "$@" ${extraAfter[@]} diff --git a/bsc/cc-wrapper-bbg/ld-solaris-wrapper.sh b/bsc/cc-wrapper-bbg/ld-solaris-wrapper.sh deleted file mode 100644 index 9216ea3..0000000 --- a/bsc/cc-wrapper-bbg/ld-solaris-wrapper.sh +++ /dev/null @@ -1,40 +0,0 @@ -#!/bin/bash - -set -e -set -u - -# I've also tried adding -z direct and -z lazyload, but it gave too many problems with C++ exceptions :'( -# Also made sure libgcc would not be lazy-loaded, as suggested here: https://www.illumos.org/issues/2534#note-3 -# but still no success. -cmd="@prog@ -z ignore" - -args=("$@"); - -# This loop makes sure all -L arguments are before -l arguments, or ld may complain it cannot find a library. -# GNU binutils does not have this problem: -# http://stackoverflow.com/questions/5817269/does-the-order-of-l-and-l-options-in-the-gnu-linker-matter -i=0; -while [[ $i -lt $# ]]; do - case "${args[$i]}" in - -L) cmd="$cmd ${args[$i]} ${args[($i+1)]}"; i=($i+1); ;; - -L*) cmd="$cmd ${args[$i]}" ;; - *) ;; - esac - i=($i+1); -done - -i=0; -while [[ $i -lt $# ]]; do - case "${args[$i]}" in - -L) i=($i+1); ;; - -L*) ;; - *) cmd="$cmd ${args[$i]}" ;; - esac - i=($i+1); -done - -# Trace: -set -x -exec $cmd - -exit 0 diff --git a/bsc/cc-wrapper-bbg/ld-wrapper.sh b/bsc/cc-wrapper-bbg/ld-wrapper.sh deleted file mode 100644 index 30c531b..0000000 --- a/bsc/cc-wrapper-bbg/ld-wrapper.sh +++ /dev/null @@ -1,166 +0,0 @@ -#! @shell@ -e - -if [ -n "$NIX_LD_WRAPPER_START_HOOK" ]; then - source "$NIX_LD_WRAPPER_START_HOOK" -fi - -if [ -z "$NIX_CC_WRAPPER_FLAGS_SET" ]; then - source @out@/nix-support/add-flags.sh -fi - -source @out@/nix-support/utils.sh - - -# Optionally filter out paths not refering to the store. -params=("$@") -if [ "$NIX_ENFORCE_PURITY" = 1 -a -n "$NIX_STORE" \ - -a \( -z "$NIX_IGNORE_LD_THROUGH_GCC" -o -z "$NIX_LDFLAGS_SET" \) ]; then - rest=() - n=0 - while [ $n -lt ${#params[*]} ]; do - p=${params[n]} - p2=${params[$((n+1))]} - if [ "${p:0:3}" = -L/ ] && badPath "${p:2}"; then - skip $p - elif [ "$p" = -L ] && badPath "$p2"; then - n=$((n + 1)); skip $p2 - elif [ "$p" = -rpath ] && badPath "$p2"; then - n=$((n + 1)); skip $p2 - elif [ "$p" = -dynamic-linker ] && badPath "$p2"; then - n=$((n + 1)); skip $p2 - elif [ "${p:0:1}" = / ] && badPath "$p"; then - # We cannot skip this; barf. - echo "impure path \`$p' used in link" >&2 - exit 1 - elif [ "${p:0:9}" = --sysroot ]; then - # Our ld is not built with sysroot support (Can we fix that?) - : - else - rest=("${rest[@]}" "$p") - fi - n=$((n + 1)) - done - params=("${rest[@]}") -fi - - -extra=() -extraBefore=() - -if [ -z "$NIX_LDFLAGS_SET" ]; then - extra+=($NIX_LDFLAGS) - extraBefore+=($NIX_LDFLAGS_BEFORE) -fi - -extra+=($NIX_LDFLAGS_AFTER) - - -# Add all used dynamic libraries to the rpath. -if [ "$NIX_DONT_SET_RPATH" != 1 ]; then - - libPath="" - addToLibPath() { - local path="$1" - if [ "${path:0:1}" != / ]; then return 0; fi - case "$path" in - *..*|*./*|*/.*|*//*) - local path2 - if path2=$(readlink -f "$path"); then - path="$path2" - fi - ;; - esac - case $libPath in - *\ $path\ *) return 0 ;; - esac - libPath="$libPath $path " - } - - addToRPath() { - # If the path is not in the store, don't add it to the rpath. - # This typically happens for libraries in /tmp that are later - # copied to $out/lib. If not, we're screwed. - if [ "${1:0:${#NIX_STORE}}" != "$NIX_STORE" ]; then return 0; fi - case $rpath in - *\ $1\ *) return 0 ;; - esac - rpath="$rpath $1 " - } - - libs="" - addToLibs() { - libs="$libs $1" - } - - rpath="" - - # First, find all -L... switches. - allParams=("${params[@]}" ${extra[@]}) - n=0 - while [ $n -lt ${#allParams[*]} ]; do - p=${allParams[n]} - p2=${allParams[$((n+1))]} - if [ "${p:0:3}" = -L/ ]; then - addToLibPath ${p:2} - elif [ "$p" = -L ]; then - addToLibPath ${p2} - n=$((n + 1)) - elif [ "$p" = -l ]; then - addToLibs ${p2} - n=$((n + 1)) - elif [ "${p:0:2}" = -l ]; then - addToLibs ${p:2} - elif [ "$p" = -dynamic-linker ]; then - # Ignore the dynamic linker argument, or it - # will get into the next 'elif'. We don't want - # the dynamic linker path rpath to go always first. - n=$((n + 1)) - elif [[ "$p" =~ ^[^-].*\.so($|\.) ]]; then - # This is a direct reference to a shared library, so add - # its directory to the rpath. - path="$(dirname "$p")"; - addToRPath "${path}" - fi - n=$((n + 1)) - done - - # Second, for each directory in the library search path (-L...), - # see if it contains a dynamic library used by a -l... flag. If - # so, add the directory to the rpath. - # It's important to add the rpath in the order of -L..., so - # the link time chosen objects will be those of runtime linking. - - for i in $libPath; do - for j in $libs; do - if [ -f "$i/lib$j.so" ]; then - addToRPath $i - break - fi - done - done - - - # Finally, add `-rpath' switches. - for i in $rpath; do - extra=(${extra[@]} -rpath $i) - done -fi - - -# Optionally print debug info. -if [ -n "$NIX_DEBUG" ]; then - echo "original flags to @prog@:" >&2 - for i in "${params[@]}"; do - echo " $i" >&2 - done - echo "extra flags to @prog@:" >&2 - for i in ${extra[@]}; do - echo " $i" >&2 - done -fi - -if [ -n "$NIX_LD_WRAPPER_EXEC_HOOK" ]; then - source "$NIX_LD_WRAPPER_EXEC_HOOK" -fi - -exec @prog@ ${extraBefore[@]} "${params[@]}" ${extra[@]} diff --git a/bsc/cc-wrapper-bbg/setup-hook.sh b/bsc/cc-wrapper-bbg/setup-hook.sh deleted file mode 100644 index 3d0b2fd..0000000 --- a/bsc/cc-wrapper-bbg/setup-hook.sh +++ /dev/null @@ -1,47 +0,0 @@ -export NIX_CC=@out@ - -addCVars () { - if [ -d $1/include ]; then - export NIX_CFLAGS_COMPILE+=" ${ccIncludeFlag:--isystem} $1/include" - fi - - if [ -d $1/lib64 -a ! -L $1/lib64 ]; then - export NIX_LDFLAGS+=" -L$1/lib64" - fi - - if [ -d $1/lib ]; then - export NIX_LDFLAGS+=" -L$1/lib" - fi - - if test -d $1/Library/Frameworks; then - export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -F$1/Library/Frameworks" - fi -} - -envHooks+=(addCVars) - -# Note: these come *after* $out in the PATH (see setup.sh). - -if [ -n "@cc@" ]; then - addToSearchPath PATH @cc@/bin -fi - -if [ -n "@binutils@" ]; then - addToSearchPath PATH @binutils@/bin -fi - -if [ -n "@libc@" ]; then - addToSearchPath PATH @libc@/bin -fi - -if [ -n "@coreutils@" ]; then - addToSearchPath PATH @coreutils@/bin -fi - -if [ -z "$crossConfig" ]; then - export CC=@real_cc@ - export CXX=@real_cxx@ -else - export BUILD_CC=@real_cc@ - export BUILD_CXX=@real_cxx@ -fi diff --git a/bsc/cc-wrapper-bbg/utils.sh b/bsc/cc-wrapper-bbg/utils.sh deleted file mode 100644 index 3ab512d..0000000 --- a/bsc/cc-wrapper-bbg/utils.sh +++ /dev/null @@ -1,24 +0,0 @@ -skip () { - if [ -n "$NIX_DEBUG" ]; then - echo "skipping impure path $1" >&2 - fi -} - - -# Checks whether a path is impure. E.g., `/lib/foo.so' is impure, but -# `/nix/store/.../lib/foo.so' isn't. -badPath() { - local p=$1 - - # Relative paths are okay (since they're presumably relative to - # the temporary build directory). - if [ "${p:0:1}" != / ]; then return 1; fi - - # Otherwise, the path should refer to the store or some temporary - # directory (including the build directory). - test \ - "$p" != "/dev/null" -a \ - "${p:0:${#NIX_STORE}}" != "$NIX_STORE" -a \ - "${p:0:4}" != "/tmp" -a \ - "${p:0:${#NIX_BUILD_TOP}}" != "$NIX_BUILD_TOP" -} diff --git a/bsc/cc-wrapper/add-flags.sh b/bsc/cc-wrapper/add-flags.sh deleted file mode 100644 index 323ea5b..0000000 --- a/bsc/cc-wrapper/add-flags.sh +++ /dev/null @@ -1,57 +0,0 @@ -# N.B. It may be a surprise that the derivation-specific variables are exported, -# since this is just sourced by the wrapped binaries---the end consumers. This -# is because one wrapper binary may invoke another (e.g. cc invoking ld). In -# that case, it is cheaper/better to not repeat this step and let the forked -# wrapped binary just inherit the work of the forker's wrapper script. - -var_templates_list=( - NIX+CFLAGS_COMPILE - NIX+CFLAGS_COMPILE_BEFORE - NIX+CFLAGS_LINK - NIX+CXXSTDLIB_COMPILE - NIX+CXXSTDLIB_LINK - NIX+GNATFLAGS_COMPILE -) -var_templates_bool=( - NIX+ENFORCE_NO_NATIVE -) - -accumulateRoles - -# We need to mangle names for hygiene, but also take parameters/overrides -# from the environment. -for var in "${var_templates_list[@]}"; do - mangleVarList "$var" ${role_infixes[@]+"${role_infixes[@]}"} -done -for var in "${var_templates_bool[@]}"; do - mangleVarBool "$var" ${role_infixes[@]+"${role_infixes[@]}"} -done - -# `-B@out@/bin' forces cc to use ld-wrapper.sh when calling ld. -NIX_@infixSalt@_CFLAGS_COMPILE="-B@out@/bin/ $NIX_@infixSalt@_CFLAGS_COMPILE" - -# Export and assign separately in order that a failing $(..) will fail -# the script. - -if [ -e @out@/nix-support/libc-cflags ]; then - NIX_@infixSalt@_CFLAGS_COMPILE="$(< @out@/nix-support/libc-cflags) $NIX_@infixSalt@_CFLAGS_COMPILE" -fi - -if [ -e @out@/nix-support/cc-cflags ]; then - NIX_@infixSalt@_CFLAGS_COMPILE="$(< @out@/nix-support/cc-cflags) $NIX_@infixSalt@_CFLAGS_COMPILE" -fi - -if [ -e @out@/nix-support/gnat-cflags ]; then - NIX_@infixSalt@_GNATFLAGS_COMPILE="$(< @out@/nix-support/gnat-cflags) $NIX_@infixSalt@_GNATFLAGS_COMPILE" -fi - -if [ -e @out@/nix-support/cc-ldflags ]; then - NIX_@infixSalt@_LDFLAGS+=" $(< @out@/nix-support/cc-ldflags)" -fi - -if [ -e @out@/nix-support/cc-cflags-before ]; then - NIX_@infixSalt@_CFLAGS_COMPILE_BEFORE="$(< @out@/nix-support/cc-cflags-before) $NIX_@infixSalt@_CFLAGS_COMPILE_BEFORE" -fi - -# That way forked processes will not extend these environment variables again. -export NIX_CC_WRAPPER_@infixSalt@_FLAGS_SET=1 diff --git a/bsc/cc-wrapper/add-hardening.sh b/bsc/cc-wrapper/add-hardening.sh deleted file mode 100644 index fc40fe7..0000000 --- a/bsc/cc-wrapper/add-hardening.sh +++ /dev/null @@ -1,72 +0,0 @@ -declare -a hardeningCFlags=() - -declare -A hardeningEnableMap=() - -# Intentionally word-split in case 'NIX_HARDENING_ENABLE' is defined in Nix. The -# array expansion also prevents undefined variables from causing trouble with -# `set -u`. -for flag in ${NIX_@infixSalt@_HARDENING_ENABLE-}; do - hardeningEnableMap["$flag"]=1 -done - -# Remove unsupported flags. -for flag in @hardening_unsupported_flags@; do - unset -v "hardeningEnableMap[$flag]" -done - -if (( "${NIX_DEBUG:-0}" >= 1 )); then - declare -a allHardeningFlags=(fortify stackprotector pie pic strictoverflow format) - declare -A hardeningDisableMap=() - - # Determine which flags were effectively disabled so we can report below. - for flag in "${allHardeningFlags[@]}"; do - if [[ -z "${hardeningEnableMap[$flag]-}" ]]; then - hardeningDisableMap["$flag"]=1 - fi - done - - printf 'HARDENING: disabled flags:' >&2 - (( "${#hardeningDisableMap[@]}" )) && printf ' %q' "${!hardeningDisableMap[@]}" >&2 - echo >&2 - - if (( "${#hardeningEnableMap[@]}" )); then - echo 'HARDENING: Is active (not completely disabled with "all" flag)' >&2; - fi -fi - -for flag in "${!hardeningEnableMap[@]}"; do - case $flag in - fortify) - if (( "${NIX_DEBUG:-0}" >= 1 )); then echo HARDENING: enabling fortify >&2; fi - hardeningCFlags+=('-O2' '-D_FORTIFY_SOURCE=2') - ;; - stackprotector) - if (( "${NIX_DEBUG:-0}" >= 1 )); then echo HARDENING: enabling stackprotector >&2; fi - hardeningCFlags+=('-fstack-protector-strong' '--param' 'ssp-buffer-size=4') - ;; - pie) - if (( "${NIX_DEBUG:-0}" >= 1 )); then echo HARDENING: enabling CFlags -fPIE >&2; fi - hardeningCFlags+=('-fPIE') - if [[ ! ("$*" =~ " -shared " || "$*" =~ " -static ") ]]; then - if (( "${NIX_DEBUG:-0}" >= 1 )); then echo HARDENING: enabling LDFlags -pie >&2; fi - hardeningCFlags+=('-pie') - fi - ;; - pic) - if (( "${NIX_DEBUG:-0}" >= 1 )); then echo HARDENING: enabling pic >&2; fi - hardeningCFlags+=('-fPIC') - ;; - strictoverflow) - if (( "${NIX_DEBUG:-0}" >= 1 )); then echo HARDENING: enabling strictoverflow >&2; fi - hardeningCFlags+=('-fno-strict-overflow') - ;; - format) - if (( "${NIX_DEBUG:-0}" >= 1 )); then echo HARDENING: enabling format >&2; fi - hardeningCFlags+=('-Wformat' '-Wformat-security' '-Werror=format-security') - ;; - *) - # Ignore unsupported. Checked in Nix that at least *some* - # tool supports each flag. - ;; - esac -done diff --git a/bsc/cc-wrapper/cc-wrapper.sh b/bsc/cc-wrapper/cc-wrapper.sh deleted file mode 100644 index ba3dfc9..0000000 --- a/bsc/cc-wrapper/cc-wrapper.sh +++ /dev/null @@ -1,197 +0,0 @@ -#! @shell@ -set -eu -o pipefail +o posix -shopt -s nullglob - -if (( "${NIX_DEBUG:-0}" >= 7 )); then - set -x -fi - -path_backup="$PATH" - -# That @-vars are substituted separately from bash evaluation makes -# shellcheck think this, and others like it, are useless conditionals. -# shellcheck disable=SC2157 -if [[ -n "@coreutils_bin@" && -n "@gnugrep_bin@" ]]; then - PATH="@coreutils_bin@/bin:@gnugrep_bin@/bin" -fi - -source @out@/nix-support/utils.bash - -# Flirting with a layer violation here. -if [ -z "${NIX_BINTOOLS_WRAPPER_@infixSalt@_FLAGS_SET:-}" ]; then - source @bintools@/nix-support/add-flags.sh -fi - -# Put this one second so libc ldflags take priority. -if [ -z "${NIX_CC_WRAPPER_@infixSalt@_FLAGS_SET:-}" ]; then - source @out@/nix-support/add-flags.sh -fi - - -# Parse command line options and set several variables. -# For instance, figure out if linker flags should be passed. -# GCC prints annoying warnings when they are not needed. -dontLink=0 -nonFlagArgs=0 -cc1=0 -# shellcheck disable=SC2193 -[[ "@prog@" = *++ ]] && isCpp=1 || isCpp=0 -cppInclude=1 - -expandResponseParams "$@" -declare -i n=0 -nParams=${#params[@]} -while (( "$n" < "$nParams" )); do - p=${params[n]} - p2=${params[n+1]:-} # handle `p` being last one - if [ "$p" = -c ]; then - dontLink=1 - elif [ "$p" = -S ]; then - dontLink=1 - elif [ "$p" = -E ]; then - dontLink=1 - elif [ "$p" = -E ]; then - dontLink=1 - elif [ "$p" = -M ]; then - dontLink=1 - elif [ "$p" = -MM ]; then - dontLink=1 - elif [[ "$p" = -x && "$p2" = *-header ]]; then - dontLink=1 - elif [[ "$p" = -x && "$p2" = c++* && "$isCpp" = 0 ]]; then - isCpp=1 - elif [ "$p" = -nostdlib ]; then - isCpp=-1 - elif [ "$p" = -nostdinc ]; then - cppInclude=0 - elif [ "$p" = -nostdinc++ ]; then - cppInclude=0 - elif [[ "$p" != -?* ]]; then - # A dash alone signifies standard input; it is not a flag - nonFlagArgs=1 - elif [ "$p" = -cc1 ]; then - cc1=1 - fi - n+=1 -done - -# If we pass a flag like -Wl, then gcc will call the linker unless it -# can figure out that it has to do something else (e.g., because of a -# "-c" flag). So if no non-flag arguments are given, don't pass any -# linker flags. This catches cases like "gcc" (should just print -# "gcc: no input files") and "gcc -v" (should print the version). -if [ "$nonFlagArgs" = 0 ]; then - dontLink=1 -fi - -# Optionally filter out paths not refering to the store. -if [[ "${NIX_ENFORCE_PURITY:-}" = 1 && -n "$NIX_STORE" ]]; then - rest=() - nParams=${#params[@]} - declare -i n=0 - while (( "$n" < "$nParams" )); do - p=${params[n]} - p2=${params[n+1]:-} # handle `p` being last one - if [ "${p:0:3}" = -L/ ] && badPath "${p:2}"; then - skip "${p:2}" - elif [ "$p" = -L ] && badPath "$p2"; then - n+=1; skip "$p2" - elif [ "${p:0:3}" = -I/ ] && badPath "${p:2}"; then - skip "${p:2}" - elif [ "$p" = -I ] && badPath "$p2"; then - n+=1; skip "$p2" - elif [ "$p" = -isystem ] && badPath "$p2"; then - n+=1; skip "$p2" - else - rest+=("$p") - fi - n+=1 - done - # Old bash empty array hack - params=(${rest+"${rest[@]}"}) -fi - - -# Clear march/mtune=native -- they bring impurity. -if [ "$NIX_@infixSalt@_ENFORCE_NO_NATIVE" = 1 ]; then - rest=() - # Old bash empty array hack - for p in ${params+"${params[@]}"}; do - if [[ "$p" = -m*=native ]]; then - skip "$p" - else - rest+=("$p") - fi - done - # Old bash empty array hack - params=(${rest+"${rest[@]}"}) -fi - -if [[ "$isCpp" = 1 ]]; then - if [[ "$cppInclude" = 1 ]]; then - NIX_@infixSalt@_CFLAGS_COMPILE+=" ${NIX_@infixSalt@_CXXSTDLIB_COMPILE:-@default_cxx_stdlib_compile@}" - fi - NIX_@infixSalt@_CFLAGS_LINK+=" $NIX_@infixSalt@_CXXSTDLIB_LINK" -fi - -source @out@/nix-support/add-hardening.sh - -# Add the flags for the C compiler proper. -extraAfter=($NIX_@infixSalt@_CFLAGS_COMPILE) -extraBefore=(${hardeningCFlags[@]+"${hardeningCFlags[@]}"} $NIX_@infixSalt@_CFLAGS_COMPILE_BEFORE) - -if [ "$dontLink" != 1 ]; then - - # Add the flags that should only be passed to the compiler when - # linking. - extraAfter+=($NIX_@infixSalt@_CFLAGS_LINK) - - # Add the flags that should be passed to the linker (and prevent - # `ld-wrapper' from adding NIX_@infixSalt@_LDFLAGS again). - for i in $NIX_@infixSalt@_LDFLAGS_BEFORE; do - extraBefore+=("-Wl,$i") - done - for i in $NIX_@infixSalt@_LDFLAGS; do - if [ "${i:0:3}" = -L/ ]; then - extraAfter+=("$i") - else - extraAfter+=("-Wl,$i") - fi - done - export NIX_@infixSalt@_LDFLAGS_SET=1 -fi - -# As a very special hack, if the arguments are just `-v', then don't -# add anything. This is to prevent `gcc -v' (which normally prints -# out the version number and returns exit code 0) from printing out -# `No input files specified' and returning exit code 1. -if [ "$*" = -v ]; then - extraAfter=() - extraBefore=() -fi - -# clang's -cc1 mode is not compatible with most options -# that we would pass. Rather than trying to pass only -# options that would work, let's just remove all of them. -if [ "$cc1" = 1 ]; then - extraAfter=() - extraBefore=() -fi - -# Optionally print debug info. -if (( "${NIX_DEBUG:-0}" >= 1 )); then - # Old bash workaround, see ld-wrapper for explanation. - echo "extra flags before to @prog@:" >&2 - printf " %q\n" ${extraBefore+"${extraBefore[@]}"} >&2 - echo "original flags to @prog@:" >&2 - printf " %q\n" ${params+"${params[@]}"} >&2 - echo "extra flags after to @prog@:" >&2 - printf " %q\n" ${extraAfter+"${extraAfter[@]}"} >&2 -fi - -PATH="$path_backup" -# Old bash workaround, see above. -exec @prog@ \ - ${extraBefore+"${extraBefore[@]}"} \ - ${params+"${params[@]}"} \ - ${extraAfter+"${extraAfter[@]}"} diff --git a/bsc/cc-wrapper/default.nix b/bsc/cc-wrapper/default.nix deleted file mode 100644 index f3c3a8c..0000000 --- a/bsc/cc-wrapper/default.nix +++ /dev/null @@ -1,420 +0,0 @@ -# The Nixpkgs CC is not directly usable, since it doesn't know where -# the C library and standard header files are. Therefore the compiler -# produced by that package cannot be installed directly in a user -# environment and used from the command line. So we use a wrapper -# script that sets up the right environment variables so that the -# compiler and the linker just "work". - -{ name ? "" -, stdenvNoCC -, cc ? null, libc ? null, bintools, coreutils ? null, shell ? stdenvNoCC.shell -, zlib ? null -, nativeTools, noLibc ? false, nativeLibc, nativePrefix ? "" -, propagateDoc ? cc != null && cc ? man -, extraTools ? [], extraPackages ? [], extraBuildCommands ? "" -, isGNU ? false, isClang ? cc.isClang or false, gnugrep ? null -, buildPackages ? {} -, libcxx ? null -}: - -with stdenvNoCC.lib; - -assert nativeTools -> !propagateDoc && nativePrefix != ""; -assert !nativeTools -> - cc != null && coreutils != null && gnugrep != null; -assert !(nativeLibc && noLibc); -assert (noLibc || nativeLibc) == (libc == null); - -let - stdenv = stdenvNoCC; - inherit (stdenv) hostPlatform targetPlatform; - - # Prefix for binaries. Customarily ends with a dash separator. - # - # TODO(@Ericson2314) Make unconditional, or optional but always true by - # default. - targetPrefix = stdenv.lib.optionalString (targetPlatform != hostPlatform) - (targetPlatform.config + "-"); - - ccVersion = stdenv.lib.getVersion cc; - ccName = stdenv.lib.removePrefix targetPrefix (stdenv.lib.getName cc); - - libc_bin = if libc == null then null else getBin libc; - libc_dev = if libc == null then null else getDev libc; - libc_lib = if libc == null then null else getLib libc; - cc_solib = getLib cc - + optionalString (targetPlatform != hostPlatform) "/${targetPlatform.config}"; - - # The wrapper scripts use 'cat' and 'grep', so we may need coreutils. - coreutils_bin = if nativeTools then "" else getBin coreutils; - - default_cxx_stdlib_compile = if (targetPlatform.isLinux && !(cc.isGNU or false) && !nativeTools && cc ? gcc) && !(targetPlatform.useLLVM or false) then - "-isystem $(echo -n ${cc.gcc}/include/c++/*) -isystem $(echo -n ${cc.gcc}/include/c++/*)/${targetPlatform.config}" - else if targetPlatform.isDarwin && (libcxx != null) && (cc.isClang or false) && !(targetPlatform.useLLVM or false) then - "-isystem ${libcxx}/include/c++/v1" - else ""; - - # The "infix salt" is a arbitrary string added in the middle of env vars - # defined by cc-wrapper's hooks so that multiple cc-wrappers can be used - # without interfering. For the moment, it is defined as the target triple, - # adjusted to be a valid bash identifier. This should be considered an - # unstable implementation detail, however. - infixSalt = replaceStrings ["-" "."] ["_" "_"] targetPlatform.config; - - expand-response-params = ""; -# if buildPackages.stdenv.hasCC && buildPackages.stdenv.cc != "/dev/null" -# then import ../expand-response-params { inherit (buildPackages) stdenv; } -# else ""; - - # older compilers (for example bootstrap's GCC 5) fail with -march=too-modern-cpu - isGccArchSupported = arch: - if cc.isGNU or false then - { skylake = versionAtLeast ccVersion "6.0"; - skylake-avx512 = versionAtLeast ccVersion "6.0"; - cannonlake = versionAtLeast ccVersion "8.0"; - icelake-client = versionAtLeast ccVersion "8.0"; - icelake-server = versionAtLeast ccVersion "8.0"; - knm = versionAtLeast ccVersion "8.0"; - }.${arch} or true - else if cc.isClang or false then - { cannonlake = versionAtLeast ccVersion "5.0"; - icelake-client = versionAtLeast ccVersion "7.0"; - icelake-server = versionAtLeast ccVersion "7.0"; - knm = versionAtLeast ccVersion "7.0"; - }.${arch} or true - else - false; - -in - -# Ensure bintools matches -assert libc_bin == bintools.libc_bin; -assert libc_dev == bintools.libc_dev; -assert libc_lib == bintools.libc_lib; -assert nativeTools == bintools.nativeTools; -assert nativeLibc == bintools.nativeLibc; -assert nativePrefix == bintools.nativePrefix; - -stdenv.mkDerivation { - pname = targetPrefix - + (if name != "" then name else "${ccName}-wrapper"); - version = if cc == null then null else ccVersion; - - preferLocalBuild = true; - - inherit cc libc_bin libc_dev libc_lib bintools coreutils_bin; - shell = getBin shell + shell.shellPath or ""; - gnugrep_bin = if nativeTools then "" else gnugrep; - - inherit targetPrefix infixSalt; - - outputs = [ "out" ] ++ optionals propagateDoc [ "man" "info" ]; - - passthru = { - # "cc" is the generic name for a C compiler, but there is no one for package - # providing the linker and related tools. The two we use now are GNU - # Binutils, and Apple's "cctools"; "bintools" as an attempt to find an - # unused middle-ground name that evokes both. - inherit bintools; - inherit libc nativeTools nativeLibc nativePrefix isGNU isClang default_cxx_stdlib_compile; - - emacsBufferSetup = pkgs: '' - ; We should handle propagation here too - (mapc - (lambda (arg) - (when (file-directory-p (concat arg "/include")) - (setenv "NIX_${infixSalt}_CFLAGS_COMPILE" (concat (getenv "NIX_${infixSalt}_CFLAGS_COMPILE") " -isystem " arg "/include")))) - '(${concatStringsSep " " (map (pkg: "\"${pkg}\"") pkgs)})) - ''; - }; - - dontBuild = true; - dontConfigure = true; - - unpackPhase = '' - src=$PWD - ''; - - wrapper = ./cc-wrapper.sh; - - installPhase = - '' - mkdir -p $out/bin $out/nix-support - - wrap() { - local dst="$1" - local wrapper="$2" - export prog="$3" - substituteAll "$wrapper" "$out/bin/$dst" - chmod +x "$out/bin/$dst" - } - '' - - + (if nativeTools then '' - echo ${if targetPlatform.isDarwin then cc else nativePrefix} > $out/nix-support/orig-cc - - ccPath="${if targetPlatform.isDarwin then cc else nativePrefix}/bin" - '' else '' - echo $cc > $out/nix-support/orig-cc - - ccPath="${cc}/bin" - '') - - + '' - # Create symlinks to everything in the bintools wrapper. - for bbin in $bintools/bin/*; do - mkdir -p "$out/bin" - ln -s "$bbin" "$out/bin/$(basename $bbin)" - done - - # We export environment variables pointing to the wrapped nonstandard - # cmds, lest some lousy configure script use those to guess compiler - # version. - export named_cc=${targetPrefix}cc - export named_cxx=${targetPrefix}c++ - - export default_cxx_stdlib_compile="${default_cxx_stdlib_compile}" - - if [ -e $ccPath/${targetPrefix}gcc ]; then - wrap ${targetPrefix}gcc $wrapper $ccPath/${targetPrefix}gcc - ln -s ${targetPrefix}gcc $out/bin/${targetPrefix}cc - export named_cc=${targetPrefix}gcc - export named_cxx=${targetPrefix}g++ - elif [ -e $ccPath/clang ]; then - wrap ${targetPrefix}clang $wrapper $ccPath/clang - ln -s ${targetPrefix}clang $out/bin/${targetPrefix}cc - export named_cc=${targetPrefix}clang - export named_cxx=${targetPrefix}clang++ - fi - - if [ -e $ccPath/${targetPrefix}g++ ]; then - wrap ${targetPrefix}g++ $wrapper $ccPath/${targetPrefix}g++ - ln -s ${targetPrefix}g++ $out/bin/${targetPrefix}c++ - elif [ -e $ccPath/clang++ ]; then - wrap ${targetPrefix}clang++ $wrapper $ccPath/clang++ - ln -s ${targetPrefix}clang++ $out/bin/${targetPrefix}c++ - fi - - if [ -e $ccPath/cpp ]; then - wrap ${targetPrefix}cpp $wrapper $ccPath/cpp - fi - '' - - + optionalString cc.langAda or false '' - wrap ${targetPrefix}gnatmake ${./gnat-wrapper.sh} $ccPath/${targetPrefix}gnatmake - wrap ${targetPrefix}gnatbind ${./gnat-wrapper.sh} $ccPath/${targetPrefix}gnatbind - wrap ${targetPrefix}gnatlink ${./gnat-wrapper.sh} $ccPath/${targetPrefix}gnatlink - '' - - + optionalString cc.langD or false '' - wrap ${targetPrefix}gdc $wrapper $ccPath/${targetPrefix}gdc - '' - - + optionalString cc.langFortran or false '' - wrap ${targetPrefix}gfortran $wrapper $ccPath/${targetPrefix}gfortran - ln -sv ${targetPrefix}gfortran $out/bin/${targetPrefix}g77 - ln -sv ${targetPrefix}gfortran $out/bin/${targetPrefix}f77 - '' - - + optionalString cc.langJava or false '' - wrap ${targetPrefix}gcj $wrapper $ccPath/${targetPrefix}gcj - '' - - + optionalString cc.langGo or false '' - wrap ${targetPrefix}gccgo $wrapper $ccPath/${targetPrefix}gccgo - ''; - - strictDeps = true; - propagatedBuildInputs = [ bintools ] ++ extraTools ++ optionals cc.langD or false [ zlib ]; - depsTargetTargetPropagated = extraPackages; - - wrapperName = "CC_WRAPPER"; - - setupHooks = [ - ../setup-hooks/role.bash - ./setup-hook.sh - ]; - - postFixup = - '' - # Backwards compatability for packages expecting this file, e.g. with - # `$NIX_CC/nix-support/dynamic-linker`. - # - # TODO(@Ericson2314): Remove this after stable release and force - # everyone to refer to bintools-wrapper directly. - if [[ -f "$bintools/nix-support/dynamic-linker" ]]; then - ln -s "$bintools/nix-support/dynamic-linker" "$out/nix-support" - fi - if [[ -f "$bintools/nix-support/dynamic-linker-m32" ]]; then - ln -s "$bintools/nix-support/dynamic-linker-m32" "$out/nix-support" - fi - '' - - + optionalString (libc != null) ('' - ## - ## General libc support - ## - - # The "-B${libc_lib}/lib/" flag is a quick hack to force gcc to link - # against the crt1.o from our own glibc, rather than the one in - # /usr/lib. (This is only an issue when using an `impure' - # compiler/linker, i.e., one that searches /usr/lib and so on.) - # - # Unfortunately, setting -B appears to override the default search - # path. Thus, the gcc-specific "../includes-fixed" directory is - # now longer searched and glibc's header fails to - # compile, because it uses "#include_next " to find the - # limits.h file in ../includes-fixed. To remedy the problem, - # another -idirafter is necessary to add that directory again. - echo "-B${libc_lib}${libc.libdir or "/lib/"}" >> $out/nix-support/libc-cflags - '' + optionalString (!(cc.langD or false)) '' - echo "-idirafter ${libc_dev}${libc.incdir or "/include"}" >> $out/nix-support/libc-cflags - '' + optionalString (isGNU && (!(cc.langD or false))) '' - for dir in "${cc}"/lib/gcc/*/*/include-fixed; do - echo '-idirafter' ''${dir} >> $out/nix-support/libc-cflags - done - '' + '' - - echo "${libc_lib}" > $out/nix-support/orig-libc - echo "${libc_dev}" > $out/nix-support/orig-libc-dev - '') - - + optionalString (!nativeTools) '' - ## - ## Initial CFLAGS - ## - - # GCC shows ${cc_solib}/lib in `gcc -print-search-dirs', but not - # ${cc_solib}/lib64 (even though it does actually search there...).. - # This confuses libtool. So add it to the compiler tool search - # path explicitly. - if [ -e "${cc_solib}/lib64" -a ! -L "${cc_solib}/lib64" ]; then - ccLDFlags+=" -L${cc_solib}/lib64" - ccCFlags+=" -B${cc_solib}/lib64" - fi - ccLDFlags+=" -L${cc_solib}/lib" - ccCFlags+=" -B${cc_solib}/lib" - - '' + optionalString cc.langAda or false '' - basePath=$(echo $cc/lib/*/*/*) - ccCFlags+=" -B$basePath -I$basePath/adainclude" - gnatCFlags="-I$basePath/adainclude -I$basePath/adalib" - - echo "$gnatCFlags" > $out/nix-support/gnat-cflags - '' + '' - echo "$ccLDFlags" > $out/nix-support/cc-ldflags - echo "$ccCFlags" > $out/nix-support/cc-cflags - '' + optionalString (targetPlatform.isDarwin && (libcxx != null) && (cc.isClang or false)) '' - echo " -L${libcxx}/lib" >> $out/nix-support/cc-ldflags - '' + optionalString propagateDoc '' - ## - ## Man page and info support - ## - - ln -s ${cc.man} $man - ln -s ${cc.info} $info - '' + optionalString (cc.langD or false) '' - echo "-B${zlib}${zlib.libdir or "/lib/"}" >> $out/nix-support/libc-cflags - '' - - + '' - ## - ## Hardening support - ## - - export hardening_unsupported_flags="${builtins.concatStringsSep " " (cc.hardeningUnsupportedFlags or [])}" - '' - - # Machine flags. These are necessary to support - - # TODO: We should make a way to support miscellaneous machine - # flags and other gcc flags as well. - - # Always add -march based on cpu in triple. Sometimes there is a - # discrepency (x86_64 vs. x86-64), so we provide an "arch" arg in - # that case. - + optionalString ((targetPlatform ? platform.gcc.arch) && - isGccArchSupported targetPlatform.platform.gcc.arch) '' - echo "-march=${targetPlatform.platform.gcc.arch}" >> $out/nix-support/cc-cflags-before - '' - - # -mcpu is not very useful. You should use mtune and march - # instead. It’s provided here for backwards compatibility. - + optionalString (targetPlatform ? platform.gcc.cpu) '' - echo "-mcpu=${targetPlatform.platform.gcc.cpu}" >> $out/nix-support/cc-cflags-before - '' - - # -mfloat-abi only matters on arm32 but we set it here - # unconditionally just in case. If the abi specifically sets hard - # vs. soft floats we use it here. - + optionalString (targetPlatform ? platform.gcc.float-abi) '' - echo "-mfloat-abi=${targetPlatform.platform.gcc.float-abi}" >> $out/nix-support/cc-cflags-before - '' - + optionalString (targetPlatform ? platform.gcc.fpu) '' - echo "-mfpu=${targetPlatform.platform.gcc.fpu}" >> $out/nix-support/cc-cflags-before - '' - + optionalString (targetPlatform ? platform.gcc.mode) '' - echo "-mmode=${targetPlatform.platform.gcc.mode}" >> $out/nix-support/cc-cflags-before - '' - + optionalString (targetPlatform ? platform.gcc.tune && - isGccArchSupported targetPlatform.platform.gcc.tune) '' - echo "-mtune=${targetPlatform.platform.gcc.tune}" >> $out/nix-support/cc-cflags-before - '' - - # TODO: categorize these and figure out a better place for them - + optionalString hostPlatform.isCygwin '' - hardening_unsupported_flags+=" pic" - '' + optionalString targetPlatform.isMinGW '' - hardening_unsupported_flags+=" stackprotector" - '' + optionalString targetPlatform.isAvr '' - hardening_unsupported_flags+=" stackprotector pic" - '' + optionalString (targetPlatform.libc == "newlib") '' - hardening_unsupported_flags+=" stackprotector fortify pie pic" - '' + optionalString targetPlatform.isNetBSD '' - hardening_unsupported_flags+=" stackprotector fortify" - '' + optionalString cc.langAda or false '' - hardening_unsupported_flags+=" stackprotector strictoverflow" - '' + optionalString cc.langD or false '' - hardening_unsupported_flags+=" format" - '' + optionalString targetPlatform.isWasm '' - hardening_unsupported_flags+=" stackprotector fortify pie pic" - '' - - + optionalString (libc != null && targetPlatform.isAvr) '' - for isa in avr5 avr3 avr4 avr6 avr25 avr31 avr35 avr51 avrxmega2 avrxmega4 avrxmega5 avrxmega6 avrxmega7 tiny-stack; do - echo "-B${getLib libc}/avr/lib/$isa" >> $out/nix-support/libc-cflags - done - '' - - # There are a few tools (to name one libstdcxx5) which do not work - # well with multi line flags, so make the flags single line again - + '' - if [ -e "$out/nix-support/libc-cflags" ]; then - substituteInPlace "$out/nix-support/libc-cflags" --replace $'\n' ' ' - fi - - substituteAll ${./add-flags.sh} $out/nix-support/add-flags.sh - substituteAll ${./add-hardening.sh} $out/nix-support/add-hardening.sh - substituteAll ${../wrapper-common/utils.bash} $out/nix-support/utils.bash - - ## - ## Extra custom steps - ## - '' - - + extraBuildCommands; - - inherit expand-response-params; - - # for substitution in utils.bash - expandResponseParams = "${expand-response-params}/bin/expand-response-params"; - - meta = - let cc_ = if cc != null then cc else {}; in - (if cc_ ? meta then removeAttrs cc.meta ["priority"] else {}) // - { description = - stdenv.lib.attrByPath ["meta" "description"] "System C compiler" cc_ - + " (wrapper script)"; - priority = 10; - }; -} diff --git a/bsc/cc-wrapper/gnat-wrapper.sh b/bsc/cc-wrapper/gnat-wrapper.sh deleted file mode 100644 index 15b53d7..0000000 --- a/bsc/cc-wrapper/gnat-wrapper.sh +++ /dev/null @@ -1,165 +0,0 @@ -#! @shell@ -set -eu -o pipefail +o posix -shopt -s nullglob - -if (( "${NIX_DEBUG:-0}" >= 7 )); then - set -x -fi - -path_backup="$PATH" - -# That @-vars are substituted separately from bash evaluation makes -# shellcheck think this, and others like it, are useless conditionals. -# shellcheck disable=SC2157 -if [[ -n "@coreutils_bin@" && -n "@gnugrep_bin@" ]]; then - PATH="@coreutils_bin@/bin:@gnugrep_bin@/bin" -fi - -source @out@/nix-support/utils.bash - -# Flirting with a layer violation here. -if [ -z "${NIX_BINTOOLS_WRAPPER_@infixSalt@_FLAGS_SET:-}" ]; then - source @bintools@/nix-support/add-flags.sh -fi - -# Put this one second so libc ldflags take priority. -if [ -z "${NIX_CC_WRAPPER_@infixSalt@_FLAGS_SET:-}" ]; then - source @out@/nix-support/add-flags.sh -fi - - -# Parse command line options and set several variables. -# For instance, figure out if linker flags should be passed. -# GCC prints annoying warnings when they are not needed. -dontLink=0 -nonFlagArgs=0 -# shellcheck disable=SC2193 - -expandResponseParams "$@" -declare -i n=0 -nParams=${#params[@]} -while (( "$n" < "$nParams" )); do - p=${params[n]} - p2=${params[n+1]:-} # handle `p` being last one - if [ "$p" = -c ]; then - dontLink=1 - elif [ "$p" = -S ]; then - dontLink=1 - elif [ "$p" = -E ]; then - dontLink=1 - elif [ "$p" = -E ]; then - dontLink=1 - elif [ "$p" = -M ]; then - dontLink=1 - elif [ "$p" = -MM ]; then - dontLink=1 - elif [[ "$p" = -x && "$p2" = *-header ]]; then - dontLink=1 - elif [[ "$p" != -?* ]]; then - # A dash alone signifies standard input; it is not a flag - nonFlagArgs=1 - fi - n+=1 -done - -# If we pass a flag like -Wl, then gcc will call the linker unless it -# can figure out that it has to do something else (e.g., because of a -# "-c" flag). So if no non-flag arguments are given, don't pass any -# linker flags. This catches cases like "gcc" (should just print -# "gcc: no input files") and "gcc -v" (should print the version). -if [ "$nonFlagArgs" = 0 ]; then - dontLink=1 -fi - -# Optionally filter out paths not refering to the store. -if [[ "${NIX_ENFORCE_PURITY:-}" = 1 && -n "$NIX_STORE" ]]; then - rest=() - nParams=${#params[@]} - declare -i n=0 - while (( "$n" < "$nParams" )); do - p=${params[n]} - p2=${params[n+1]:-} # handle `p` being last one - if [ "${p:0:3}" = -L/ ] && badPath "${p:2}"; then - skip "${p:2}" - elif [ "$p" = -L ] && badPath "$p2"; then - n+=1; skip "$p2" - elif [ "${p:0:3}" = -I/ ] && badPath "${p:2}"; then - skip "${p:2}" - elif [ "$p" = -I ] && badPath "$p2"; then - n+=1; skip "$p2" - elif [ "${p:0:4}" = -aI/ ] && badPath "${p:3}"; then - skip "${p:3}" - elif [ "$p" = -aI ] && badPath "$p2"; then - n+=1; skip "$p2" - elif [ "${p:0:4}" = -aO/ ] && badPath "${p:3}"; then - skip "${p:3}" - elif [ "$p" = -aO ] && badPath "$p2"; then - n+=1; skip "$p2" - elif [ "$p" = -isystem ] && badPath "$p2"; then - n+=1; skip "$p2" - else - rest+=("$p") - fi - n+=1 - done - # Old bash empty array hack - params=(${rest+"${rest[@]}"}) -fi - - -# Clear march/mtune=native -- they bring impurity. -if [ "$NIX_@infixSalt@_ENFORCE_NO_NATIVE" = 1 ]; then - rest=() - # Old bash empty array hack - for p in ${params+"${params[@]}"}; do - if [[ "$p" = -m*=native ]]; then - skip "$p" - else - rest+=("$p") - fi - done - # Old bash empty array hack - params=(${rest+"${rest[@]}"}) -fi - -if [ "$(basename $0)x" = "gnatmakex" ]; then - extraBefore=("--GNATBIND=@out@/bin/gnatbind" "--GNATLINK=@out@/bin/gnatlink") - extraAfter=($NIX_@infixSalt@_GNATFLAGS_COMPILE) -fi - -if [ "$(basename $0)x" = "gnatbindx" ]; then - extraBefore=() - extraAfter=($NIX_@infixSalt@_GNATFLAGS_COMPILE) -fi - -if [ "$(basename $0)x" = "gnatlinkx" ]; then - extraBefore=() - extraAfter=("--GCC=@out@/bin/gcc") -fi - -# As a very special hack, if the arguments are just `-v', then don't -# add anything. This is to prevent `gcc -v' (which normally prints -# out the version number and returns exit code 0) from printing out -# `No input files specified' and returning exit code 1. -if [ "$*" = -v ]; then - extraAfter=() - extraBefore=() -fi - -# Optionally print debug info. -if (( "${NIX_DEBUG:-0}" >= 1 )); then - # Old bash workaround, see ld-wrapper for explanation. - echo "extra flags before to @prog@:" >&2 - printf " %q\n" ${extraBefore+"${extraBefore[@]}"} >&2 - echo "original flags to @prog@:" >&2 - printf " %q\n" ${params+"${params[@]}"} >&2 - echo "extra flags after to @prog@:" >&2 - printf " %q\n" ${extraAfter+"${extraAfter[@]}"} >&2 -fi - -PATH="$path_backup" -# Old bash workaround, see above. -exec @prog@ \ - ${extraBefore+"${extraBefore[@]}"} \ - ${params+"${params[@]}"} \ - ${extraAfter+"${extraAfter[@]}"} diff --git a/bsc/cc-wrapper/setup-hook.sh b/bsc/cc-wrapper/setup-hook.sh deleted file mode 100644 index 5b13f26..0000000 --- a/bsc/cc-wrapper/setup-hook.sh +++ /dev/null @@ -1,120 +0,0 @@ -# CC Wrapper hygiene -# -# For at least cross compilation, we need to depend on multiple cc-wrappers at -# once---specifically up to one per sort of dependency. This follows from having -# different tools targeting different platforms, and different flags for those -# tools. For example: -# -# # Flags for compiling (whether or not linking) C code for the... -# NIX_BUILD_CFLAGS_COMPILE # ...build platform -# NIX_CFLAGS_COMPILE # ...host platform -# NIX_TARGET_CFLAGS_COMPILE # ...target platform -# -# Notice that these platforms are the 3 *relative* to the package using -# cc-wrapper, not absolute like `x86_64-pc-linux-gnu`. -# -# The simplest solution would be to have separate cc-wrappers per (3 intended -# use-cases * n absolute concrete platforms). For the use-case axis, we would -# @-splice in 'BUILD_' '' 'TARGET_' to use the write environment variables when -# building the cc-wrapper, and likewise prefix the binaries' names so they didn't -# clobber each other on the PATH. But the need for 3x cc-wrappers, along with -# non-standard name prefixes, is annoying and liable to break packages' build -# systems. -# -# Instead, we opt to have just one cc-wrapper per absolute platform. Matching -# convention, the binaries' names can just be prefixed with their target -# platform. On the other hand, that means packages will depend on not just -# multiple cc-wrappers, but the exact same cc-wrapper derivation multiple ways. -# That means the exact same cc-wrapper derivation must be able to avoid -# conflicting with itself, despite the fact that `setup-hook.sh`, the `addCvars` -# function, and `add-flags.sh` are all communicating with each other with -# environment variables. Yuck. -# -# The basic strategy is: -# -# - Everyone exclusively *adds information* to relative-platform-specific -# environment variables, like `NIX_TARGET_CFLAGS_COMPILE`, to communicate -# with the wrapped binaries. -# -# - The wrapped binaries will exclusively *read* cc-wrapper-derivation-specific -# environment variables distinguished with with `infixSalt`, like -# `NIX_@infixSalt@_CFLAGS_COMPILE`. -# -# - `add-flags`, beyond its old task of reading extra flags stuck inside the -# cc-wrapper derivation, will convert the relative-platform-specific -# variables to cc-wrapper-derivation-specific variables. This conversion is -# the only time all but one of the cc-wrapper-derivation-specific variables -# are set. -# -# This ensures the flow of information is exclusive from -# relative-platform-specific variables to cc-wrapper-derivation-specific -# variables. This allows us to support the general case of a many--many relation -# between relative platforms and cc-wrapper derivations. -# -# For more details, read the individual files where the mechanisms used to -# accomplish this will be individually documented. - -# Skip setup hook if we're neither a build-time dep, nor, temporarily, doing a -# native compile. -# -# TODO(@Ericson2314): No native exception -[[ -z ${strictDeps-} ]] || (( "$hostOffset" < 0 )) || return 0 - -# It's fine that any other cc-wrapper will redefine this. Bash functions close -# over no state, and there's no @-substitutions within, so any redefined -# function is guaranteed to be exactly the same. -ccWrapper_addCVars () { - # See ../setup-hooks/role.bash - local role_post role_pre - getHostRoleEnvHook - - if [ -d "$1/include" ]; then - export NIX_${role_pre}CFLAGS_COMPILE+=" -isystem $1/include" - fi - - if [ -d "$1/Library/Frameworks" ]; then - export NIX_${role_pre}CFLAGS_COMPILE+=" -iframework $1/Library/Frameworks" - fi -} - -# See ../setup-hooks/role.bash -getTargetRole -getTargetRoleWrapper - -# We use the `targetOffset` to choose the right env hook to accumulate the right -# sort of deps (those with that offset). -addEnvHooks "$targetOffset" ccWrapper_addCVars - -# Note 1: these come *after* $out in the PATH (see setup.sh). -# Note 2: phase separation makes this look useless to shellcheck. - -# shellcheck disable=SC2157 -if [ -n "@cc@" ]; then - addToSearchPath _PATH @cc@/bin -fi - -# shellcheck disable=SC2157 -if [ -n "@libc_bin@" ]; then - addToSearchPath _PATH @libc_bin@/bin -fi - -# shellcheck disable=SC2157 -if [ -n "@coreutils_bin@" ]; then - addToSearchPath _PATH @coreutils_bin@/bin -fi - -# Export tool environment variables so various build systems use the right ones. - -export NIX_${role_pre}CC=@out@ - -export ${role_pre}CC=@named_cc@ -export ${role_pre}CXX=@named_cxx@ -export CC${role_post}=@named_cc@ -export CXX${role_post}=@named_cxx@ - -# If unset, assume the default hardening flags. -: ${NIX_HARDENING_ENABLE="fortify stackprotector pic strictoverflow format relro bindnow"} -export NIX_HARDENING_ENABLE - -# No local scope in sourced file -unset -v role_pre role_post diff --git a/bsc/setup-hooks/audit-blas.sh b/bsc/setup-hooks/audit-blas.sh deleted file mode 100644 index 6a40073..0000000 --- a/bsc/setup-hooks/audit-blas.sh +++ /dev/null @@ -1,37 +0,0 @@ -# Ensure that we are always linking against “libblas.so.3” and -# “liblapack.so.3”. - -auditBlas() { - local dir="$prefix" - [ -e "$dir" ] || return 0 - - local i - while IFS= read -r -d $'\0' i; do - if ! isELF "$i"; then continue; fi - - if $OBJDUMP -p "$i" | grep 'NEEDED' | awk '{ print $2; }' | grep -q '\(libmkl_rt.so\|libopenblas.so.0\)'; then - echo "$i refers to a specific implementation of BLAS or LAPACK." - echo "This prevents users from switching BLAS/LAPACK implementations." - echo "Add \`blas' or \`lapack' to buildInputs instead of \`mkl' or \`openblas'." - exit 1 - fi - - (IFS=: - for dir in "$(patchelf --print-rpath "$i")"; do - if [ -f "$dir/libblas.so.3" ] || [ -f "$dir/libblas.so" ]; then - if [ "$dir" != "@blas@/lib" ]; then - echo "$dir is not allowed to contain a library named libblas.so.3" - exit 1 - fi - fi - if [ -f "$dir/liblapack.so.3" ] || [ -f "$dir/liblapack.so" ]; then - if [ "$dir" != "@lapack@/lib" ]; then - echo "$dir is not allowed to contain a library named liblapack.so.3" - exit 1 - fi - fi - done) - done < <(find "$dir" -type f -print0) -} - -fixupOutputHooks+=(auditBlas) diff --git a/bsc/setup-hooks/audit-tmpdir.sh b/bsc/setup-hooks/audit-tmpdir.sh deleted file mode 100644 index c9dd32d..0000000 --- a/bsc/setup-hooks/audit-tmpdir.sh +++ /dev/null @@ -1,41 +0,0 @@ -# Check whether RPATHs or wrapper scripts contain references to -# $TMPDIR. This is a serious security bug because it allows any user -# to inject files into search paths of other users' processes. -# -# It might be better to have Nix scan build output for any occurrence -# of $TMPDIR (which would also be good for reproducibility), but at -# the moment that would produce too many spurious errors (e.g. debug -# info or assertion messages that refer to $TMPDIR). - -fixupOutputHooks+=('if [[ -z "${noAuditTmpdir-}" && -e "$prefix" ]]; then auditTmpdir "$prefix"; fi') - -auditTmpdir() { - local dir="$1" - [ -e "$dir" ] || return 0 - - header "checking for references to $TMPDIR/ in $dir..." - - local i - while IFS= read -r -d $'\0' i; do - if [[ "$i" =~ .build-id ]]; then continue; fi - - if isELF "$i"; then - if { printf :; patchelf --print-rpath "$i"; } | grep -q -F ":$TMPDIR/"; then - echo "RPATH of binary $i contains a forbidden reference to $TMPDIR/" - exit 1 - fi - fi - - if isScript "$i"; then - if [ -e "$(dirname "$i")/.$(basename "$i")-wrapped" ]; then - if grep -q -F "$TMPDIR/" "$i"; then - echo "wrapper script $i contains a forbidden reference to $TMPDIR/" - exit 1 - fi - fi - fi - - done < <(find "$dir" -type f -print0) - - stopNest -} diff --git a/bsc/setup-hooks/auto-patchelf.sh b/bsc/setup-hooks/auto-patchelf.sh deleted file mode 100644 index 7297062..0000000 --- a/bsc/setup-hooks/auto-patchelf.sh +++ /dev/null @@ -1,237 +0,0 @@ -declare -a autoPatchelfLibs - -gatherLibraries() { - autoPatchelfLibs+=("$1/lib") -} - -addEnvHooks "$targetOffset" gatherLibraries - -isExecutable() { - # For dynamically linked ELF files it would be enough to check just for the - # INTERP section. However, we won't catch statically linked executables as - # they only have an ELF type of EXEC but no INTERP. - # - # So what we do here is just check whether *either* the ELF type is EXEC - # *or* there is an INTERP section. This also catches position-independent - # executables, as they typically have an INTERP section but their ELF type - # is DYN. - isExeResult="$(LANG=C $READELF -h -l "$1" 2> /dev/null \ - | grep '^ *Type: *EXEC\>\|^ *INTERP\>')" - # not using grep -q, because it can cause Broken pipe - [ -n "$isExeResult" ] -} - -# We cache dependencies so that we don't need to search through all of them on -# every consecutive call to findDependency. -declare -a cachedDependencies - -addToDepCache() { - local existing - for existing in "${cachedDependencies[@]}"; do - if [ "$existing" = "$1" ]; then return; fi - done - cachedDependencies+=("$1") -} - -declare -gi depCacheInitialised=0 -declare -gi doneRecursiveSearch=0 -declare -g foundDependency - -getDepsFromSo() { - ldd "$1" 2> /dev/null | sed -n -e 's/[^=]*=> *\(.\+\) \+([^)]*)$/\1/p' -} - -populateCacheWithRecursiveDeps() { - local so found foundso - for so in "${cachedDependencies[@]}"; do - for found in $(getDepsFromSo "$so"); do - local libdir="${found%/*}" - local base="${found##*/}" - local soname="${base%.so*}" - for foundso in "${found%/*}/$soname".so*; do - addToDepCache "$foundso" - done - done - done -} - -getSoArch() { - objdump -f "$1" | sed -ne 's/^architecture: *\([^,]\+\).*/\1/p' -} - -# NOTE: If you want to use this function outside of the autoPatchelf function, -# keep in mind that the dependency cache is only valid inside the subshell -# spawned by the autoPatchelf function, so invoking this directly will possibly -# rebuild the dependency cache. See the autoPatchelf function below for more -# information. -findDependency() { - local filename="$1" - local arch="$2" - local lib dep - - if [ $depCacheInitialised -eq 0 ]; then - for lib in "${autoPatchelfLibs[@]}"; do - for so in "$lib/"*.so*; do addToDepCache "$so"; done - done - depCacheInitialised=1 - fi - - for dep in "${cachedDependencies[@]}"; do - if [ "$filename" = "${dep##*/}" ]; then - if [ "$(getSoArch "$dep")" = "$arch" ]; then - foundDependency="$dep" - return 0 - fi - fi - done - - # Populate the dependency cache with recursive dependencies *only* if we - # didn't find the right dependency so far and afterwards run findDependency - # again, but this time with $doneRecursiveSearch set to 1 so that it won't - # recurse again (and thus infinitely). - if [ $doneRecursiveSearch -eq 0 ]; then - populateCacheWithRecursiveDeps - doneRecursiveSearch=1 - findDependency "$filename" "$arch" || return 1 - return 0 - fi - return 1 -} - -autoPatchelfFile() { - local dep rpath="" toPatch="$1" - - local interpreter="$(< "$NIX_CC/nix-support/dynamic-linker")" - if isExecutable "$toPatch"; then - patchelf --set-interpreter "$interpreter" "$toPatch" - if [ -n "$runtimeDependencies" ]; then - for dep in $runtimeDependencies; do - rpath="$rpath${rpath:+:}$dep/lib" - done - fi - fi - - echo "searching for dependencies of $toPatch" >&2 - - # We're going to find all dependencies based on ldd output, so we need to - # clear the RPATH first. - patchelf --remove-rpath "$toPatch" - - local missing="$( - ldd "$toPatch" 2> /dev/null | \ - sed -n -e 's/^[\t ]*\([^ ]\+\) => not found.*/\1/p' - )" - - # This ensures that we get the output of all missing dependencies instead - # of failing at the first one, because it's more useful when working on a - # new package where you don't yet know its dependencies. - local -i depNotFound=0 - - for dep in $missing; do - echo -n " $dep -> " >&2 - if findDependency "$dep" "$(getSoArch "$toPatch")"; then - rpath="$rpath${rpath:+:}${foundDependency%/*}" - echo "found: $foundDependency" >&2 - else - echo "not found!" >&2 - depNotFound=1 - fi - done - - # This makes sure the builder fails if we didn't find a dependency, because - # the stdenv setup script is run with set -e. The actual error is emitted - # earlier in the previous loop. - [ $depNotFound -eq 0 ] - - if [ -n "$rpath" ]; then - echo "setting RPATH to: $rpath" >&2 - patchelf --set-rpath "$rpath" "$toPatch" - fi -} - -# Can be used to manually add additional directories with shared object files -# to be included for the next autoPatchelf invocation. -addAutoPatchelfSearchPath() { - local -a findOpts=() - - # XXX: Somewhat similar to the one in the autoPatchelf function, maybe make - # it DRY someday... - while [ $# -gt 0 ]; do - case "$1" in - --) shift; break;; - --no-recurse) shift; findOpts+=("-maxdepth" 1);; - --*) - echo "addAutoPatchelfSearchPath: ERROR: Invalid command line" \ - "argument: $1" >&2 - return 1;; - *) break;; - esac - done - - cachedDependencies+=( - $(find "$@" "${findOpts[@]}" \! -type d \ - \( -name '*.so' -o -name '*.so.*' \)) - ) -} - -autoPatchelf() { - local norecurse= - - while [ $# -gt 0 ]; do - case "$1" in - --) shift; break;; - --no-recurse) shift; norecurse=1;; - --*) - echo "autoPatchelf: ERROR: Invalid command line" \ - "argument: $1" >&2 - return 1;; - *) break;; - esac - done - - if [ $# -eq 0 ]; then - echo "autoPatchelf: No paths to patch specified." >&2 - return 1 - fi - - echo "automatically fixing dependencies for ELF files" >&2 - - # Add all shared objects of the current output path to the start of - # cachedDependencies so that it's choosen first in findDependency. - addAutoPatchelfSearchPath ${norecurse:+--no-recurse} -- "$@" - - # Here we actually have a subshell, which also means that - # $cachedDependencies is final at this point, so whenever we want to run - # findDependency outside of this, the dependency cache needs to be rebuilt - # from scratch, so keep this in mind if you want to run findDependency - # outside of this function. - while IFS= read -r -d $'\0' file; do - isELF "$file" || continue - segmentHeaders="$(LANG=C $READELF -l "$file")" - # Skip if the ELF file doesn't have segment headers (eg. object files). - # not using grep -q, because it can cause Broken pipe - [ -n "$(echo "$segmentHeaders" | grep '^Program Headers:')" ] || continue - if isExecutable "$file"; then - # Skip if the executable is statically linked. - [ -n "$(echo "$segmentHeaders" | grep "^ *INTERP\\>")" ] || continue - fi - autoPatchelfFile "$file" - done < <(find "$@" ${norecurse:+-maxdepth 1} -type f -print0) -} - -# XXX: This should ultimately use fixupOutputHooks but we currently don't have -# a way to enforce the order. If we have $runtimeDependencies set, the setup -# hook of patchelf is going to ruin everything and strip out those additional -# RPATHs. -# -# So what we do here is basically run in postFixup and emulate the same -# behaviour as fixupOutputHooks because the setup hook for patchelf is run in -# fixupOutput and the postFixup hook runs later. -postFixupHooks+=(' - if [ -z "${dontAutoPatchelf-}" ]; then - autoPatchelf -- $(for output in $outputs; do - [ -e "${!output}" ] || continue - echo "${!output}" - done) - fi -') diff --git a/bsc/setup-hooks/autoreconf.sh b/bsc/setup-hooks/autoreconf.sh deleted file mode 100644 index c08cab1..0000000 --- a/bsc/setup-hooks/autoreconf.sh +++ /dev/null @@ -1,7 +0,0 @@ -preConfigurePhases+=" autoreconfPhase" - -autoreconfPhase() { - runHook preAutoreconf - autoreconf ${autoreconfFlags:---install --force --verbose} - runHook postAutoreconf -} diff --git a/bsc/setup-hooks/breakpoint-hook.sh b/bsc/setup-hooks/breakpoint-hook.sh deleted file mode 100644 index 6bef786..0000000 --- a/bsc/setup-hooks/breakpoint-hook.sh +++ /dev/null @@ -1,9 +0,0 @@ -breakpointHook() { - local red='\033[0;31m' - local no_color='\033[0m' - - echo -e "${red}build failed in ${curPhase} with exit code ${exitCode}${no_color}" - printf "To attach install cntr and run the following command as root:\n\n" - sh -c "echo ' cntr attach -t command cntr-${out}'; while true; do sleep 99999999; done" -} -failureHooks+=(breakpointHook) diff --git a/bsc/setup-hooks/compress-man-pages.sh b/bsc/setup-hooks/compress-man-pages.sh deleted file mode 100644 index 82e48cd..0000000 --- a/bsc/setup-hooks/compress-man-pages.sh +++ /dev/null @@ -1,32 +0,0 @@ -fixupOutputHooks+=('if [ -z "${dontGzipMan-}" ]; then compressManPages "$prefix"; fi') - -compressManPages() { - local dir="$1" - - if [ -L "$dir"/share ] || [ -L "$dir"/share/man ] || [ ! -d "$dir/share/man" ] - then return - fi - echo "gzipping man pages under $dir/share/man/" - - # Compress all uncompressed manpages. Don't follow symlinks, etc. - find "$dir"/share/man/ -type f -a '!' -regex '.*\.\(bz2\|gz\)$' -print0 \ - | while IFS= read -r -d $'\0' f - do - if gzip -c -n "$f" > "$f".gz; then - rm "$f" - else - rm "$f".gz - fi - done - - # Point symlinks to compressed manpages. - find "$dir"/share/man/ -type l -a '!' -regex '.*\.\(bz2\|gz\)$' -print0 \ - | while IFS= read -r -d $'\0' f - do - local target - target="$(readlink -f "$f")" - if [ -f "$target".gz ]; then - ln -sf "$target".gz "$f".gz && rm "$f" - fi - done -} diff --git a/bsc/setup-hooks/die.sh b/bsc/setup-hooks/die.sh deleted file mode 100644 index 0db41e0..0000000 --- a/bsc/setup-hooks/die.sh +++ /dev/null @@ -1,21 +0,0 @@ -# Exit with backtrace and error message -# -# Usage: die "Error message" -die() { - # Let us be a little sloppy with errors, because otherwise the final - # invocation of `caller` below will cause the script to exit. - set +e - - # Print our error message - printf "\nBuilder called die: %b\n" "$*" - printf "Backtrace:\n" - - # Print a backtrace. - local frame=0 - while caller $frame; do - ((frame++)); - done - printf "\n" - - exit 1 -} diff --git a/bsc/setup-hooks/enable-coverage-instrumentation.sh b/bsc/setup-hooks/enable-coverage-instrumentation.sh deleted file mode 100644 index 2b48fea..0000000 --- a/bsc/setup-hooks/enable-coverage-instrumentation.sh +++ /dev/null @@ -1,20 +0,0 @@ -postPhases+=" cleanupBuildDir" - -# Force GCC to build with coverage instrumentation. Also disable -# optimisation, since it may confuse things. -export NIX_CFLAGS_COMPILE="${NIX_CFLAGS_COMPILE:-} -O0 --coverage" - -# Get rid of everything that isn't a gcno file or a C source file. -# Also strip the `.tmp_' prefix from gcno files. (The Linux kernel -# creates these.) -cleanupBuildDir() { - if ! [ -e $out/.build ]; then return; fi - - find $out/.build/ -type f -a ! \ - \( -name "*.c" -o -name "*.cc" -o -name "*.cpp" -o -name "*.h" -o -name "*.hh" -o -name "*.y" -o -name "*.l" -o -name "*.gcno" \) \ - | xargs rm -f -- - - for i in $(find $out/.build/ -name ".tmp_*.gcno"); do - mv "$i" "$(echo $i | sed s/.tmp_//)" - done -} diff --git a/bsc/setup-hooks/find-xml-catalogs.sh b/bsc/setup-hooks/find-xml-catalogs.sh deleted file mode 100644 index f446a6f..0000000 --- a/bsc/setup-hooks/find-xml-catalogs.sh +++ /dev/null @@ -1,22 +0,0 @@ -addXMLCatalogs () { - local d i - # ‘xml/dtd’ and ‘xml/xsl’ are deprecated. Catalogs should be - # installed underneath ‘share/xml’. - for d in $1/share/xml $1/xml/dtd $1/xml/xsl; do - if [ -d $d ]; then - for i in $(find $d -name catalog.xml); do - XML_CATALOG_FILES+=" $i" - done - fi - done -} - -if [ -z "${libxmlHookDone-}" ]; then - libxmlHookDone=1 - - # Set up XML_CATALOG_FILES. An empty initial value prevents - # xmllint and xsltproc from looking in /etc/xml/catalog. - export XML_CATALOG_FILES='' - if [ -z "$XML_CATALOG_FILES" ]; then XML_CATALOG_FILES=" "; fi - addEnvHooks "$hostOffset" addXMLCatalogs -fi diff --git a/bsc/setup-hooks/fix-darwin-dylib-names.sh b/bsc/setup-hooks/fix-darwin-dylib-names.sh deleted file mode 100644 index af2ff0c..0000000 --- a/bsc/setup-hooks/fix-darwin-dylib-names.sh +++ /dev/null @@ -1,40 +0,0 @@ -# On macOS, binaries refer to dynamic library dependencies using -# either relative paths (e.g. "libicudata.dylib", searched relative to -# $DYLD_LIBRARY_PATH) or absolute paths -# (e.g. "/nix/store/.../lib/libicudata.dylib"). In Nix, the latter is -# preferred since it allows programs to just work. When linking -# against a library (e.g. "-licudata"), the linker uses the install -# name embedded in the dylib (which can be shown using "otool -D"). -# Most packages create dylibs with absolute install names, but some do -# not. This setup hook fixes dylibs by setting their install names to -# their absolute path (using "install_name_tool -id"). It also -# rewrites references in other dylibs to absolute paths. - -fixupOutputHooks+=('fixDarwinDylibNamesIn $prefix') - -fixDarwinDylibNames() { - local flags=() - local old_id - - for fn in "$@"; do - flags+=(-change "$(basename "$fn")" "$fn") - done - - for fn in "$@"; do - if [ -L "$fn" ]; then continue; fi - echo "$fn: fixing dylib" - int_out=$(install_name_tool -id "$fn" "${flags[@]}" "$fn" 2>&1) - result=$? - if [ "$result" -ne 0 ] && - ! grep "shared library stub file and can't be changed" <<< "$out" - then - echo "$int_out" >&2 - exit "$result" - fi - done -} - -fixDarwinDylibNamesIn() { - local dir="$1" - fixDarwinDylibNames $(find "$dir" -name "*.dylib") -} diff --git a/bsc/setup-hooks/gog-unpack.sh b/bsc/setup-hooks/gog-unpack.sh deleted file mode 100644 index 559b543..0000000 --- a/bsc/setup-hooks/gog-unpack.sh +++ /dev/null @@ -1,11 +0,0 @@ -unpackPhase="unpackGog" - -unpackGog() { - runHook preUnpackGog - - innoextract --silent --extract --exclude-temp "${src}" - - find . -depth -print -execdir rename -f 'y/A-Z/a-z/' '{}' \; - - runHook postUnpackGog -} diff --git a/bsc/setup-hooks/install-shell-files.sh b/bsc/setup-hooks/install-shell-files.sh deleted file mode 100644 index e0ea1f7..0000000 --- a/bsc/setup-hooks/install-shell-files.sh +++ /dev/null @@ -1,165 +0,0 @@ -#!/bin/bash -# Setup hook for the `installShellFiles` package. -# -# Example usage in a derivation: -# -# { …, installShellFiles, … }: -# stdenv.mkDerivation { -# … -# nativeBuildInputs = [ installShellFiles ]; -# postInstall = '' -# installManPage share/doc/foobar.1 -# installShellCompletion share/completions/foobar.{bash,fish,zsh} -# ''; -# … -# } -# -# See comments on each function for more details. - -# installManPage [...] -# -# Each argument is checked for its man section suffix and installed into the appropriate -# share/man/ directory. The function returns an error if any paths don't have the man section -# suffix (with optional .gz compression). -installManPage() { - local path - for path in "$@"; do - if (( "${NIX_DEBUG:-0}" >= 1 )); then - echo "installManPage: installing $path" - fi - if test -z "$path"; then - echo "installManPage: error: path cannot be empty" >&2 - return 1 - fi - local basename - basename=$(stripHash "$path") # use stripHash in case it's a nix store path - local trimmed=${basename%.gz} # don't get fooled by compressed manpages - local suffix=${trimmed##*.} - if test -z "$suffix" -o "$suffix" = "$trimmed"; then - echo "installManPage: error: path missing manpage section suffix: $path" >&2 - return 1 - fi - local outRoot - if test "$suffix" = 3; then - outRoot=${!outputDevman:?} - else - outRoot=${!outputMan:?} - fi - install -Dm644 -T "$path" "${outRoot}/share/man/man$suffix/$basename" || return - done -} - -# installShellCompletion [--bash|--fish|--zsh] ([--name ] )... -# -# Each path is installed into the appropriate directory for shell completions for the given shell. -# If one of `--bash`, `--fish`, or `--zsh` is given the path is assumed to belong to that shell. -# Otherwise the file extension will be examined to pick a shell. If the shell is unknown a warning -# will be logged and the command will return a non-zero status code after processing any remaining -# paths. Any of the shell flags will affect all subsequent paths (unless another shell flag is -# given). -# -# If the shell completion needs to be renamed before installing the optional `--name ` flag -# may be given. Any name provided with this flag only applies to the next path. -# -# For zsh completions, if the `--name` flag is not given, the path will be automatically renamed -# such that `foobar.zsh` becomes `_foobar`. -# -# This command accepts multiple shell flags in conjunction with multiple paths if you wish to -# install them all in one command: -# -# installShellCompletion share/completions/foobar.{bash,fish} --zsh share/completions/_foobar -# -# However it may be easier to read if each shell is split into its own invocation, especially when -# renaming is involved: -# -# installShellCompletion --bash --name foobar.bash share/completions.bash -# installShellCompletion --fish --name foobar.fish share/completions.fish -# installShellCompletion --zsh --name _foobar share/completions.zsh -# -# If any argument is `--` the remaining arguments will be treated as paths. -installShellCompletion() { - local shell='' name='' retval=0 parseArgs=1 arg - while { arg=$1; shift; }; do - # Parse arguments - if (( parseArgs )); then - case "$arg" in - --bash|--fish|--zsh) - shell=${arg#--} - continue;; - --name) - name=$1 - shift || { - echo 'installShellCompletion: error: --name flag expected an argument' >&2 - return 1 - } - continue;; - --name=*) - # treat `--name=foo` the same as `--name foo` - name=${arg#--name=} - continue;; - --?*) - echo "installShellCompletion: warning: unknown flag ${arg%%=*}" >&2 - retval=2 - continue;; - --) - # treat remaining args as paths - parseArgs=0 - continue;; - esac - fi - if (( "${NIX_DEBUG:-0}" >= 1 )); then - echo "installShellCompletion: installing $arg${name:+ as $name}" - fi - # if we get here, this is a path - # Identify shell - local basename - basename=$(stripHash "$arg") - local curShell=$shell - if [[ -z "$curShell" ]]; then - # auto-detect the shell - case "$basename" in - ?*.bash) curShell=bash;; - ?*.fish) curShell=fish;; - ?*.zsh) curShell=zsh;; - *) - if [[ "$basename" = _* && "$basename" != *.* ]]; then - # probably zsh - echo "installShellCompletion: warning: assuming path \`$arg' is zsh; please specify with --zsh" >&2 - curShell=zsh - else - echo "installShellCompletion: warning: unknown shell for path: $arg" >&2 - retval=2 - continue - fi;; - esac - fi - # Identify output path - local outName sharePath - outName=${name:-$basename} - case "$curShell" in - bash) sharePath=bash-completion/completions;; - fish) sharePath=fish/vendor_completions.d;; - zsh) - sharePath=zsh/site-functions - # only apply automatic renaming if we didn't have a manual rename - if test -z "$name"; then - # convert a name like `foo.zsh` into `_foo` - outName=${outName%.zsh} - outName=_${outName#_} - fi;; - *) - # Our list of shells is out of sync with the flags we accept or extensions we detect. - echo 'installShellCompletion: internal error' >&2 - return 1;; - esac - # Install file - install -Dm644 -T "$arg" "${!outputBin:?}/share/$sharePath/$outName" || return - # Clear the name, it only applies to one path - name= - done - if [[ -n "$name" ]]; then - echo 'installShellCompletion: error: --name flag given with no path' >&2 - return 1 - fi - return $retval -} diff --git a/bsc/setup-hooks/keep-build-tree.sh b/bsc/setup-hooks/keep-build-tree.sh deleted file mode 100644 index 754900b..0000000 --- a/bsc/setup-hooks/keep-build-tree.sh +++ /dev/null @@ -1,6 +0,0 @@ -prePhases+=" moveBuildDir" - -moveBuildDir() { - mkdir -p $out/.build - cd $out/.build -} diff --git a/bsc/setup-hooks/ld-is-cc-hook.sh b/bsc/setup-hooks/ld-is-cc-hook.sh deleted file mode 100644 index b53e184..0000000 --- a/bsc/setup-hooks/ld-is-cc-hook.sh +++ /dev/null @@ -1,5 +0,0 @@ -ld-is-cc-hook() { - LD=$CC -} - -preConfigureHooks+=(ld-is-cc-hook) diff --git a/bsc/setup-hooks/make-coverage-analysis-report.sh b/bsc/setup-hooks/make-coverage-analysis-report.sh deleted file mode 100644 index 9108b4c..0000000 --- a/bsc/setup-hooks/make-coverage-analysis-report.sh +++ /dev/null @@ -1,25 +0,0 @@ -postPhases+=" coverageReportPhase" - -coverageReportPhase() { - lcov --directory . --capture --output-file app.info - set -o noglob - lcov --remove app.info ${lcovFilter:-"/nix/store/*"} > app2.info - set +o noglob - mv app2.info app.info - - mkdir -p $out/coverage - genhtml app.info $lcovExtraTraceFiles -o $out/coverage > log - - # Grab the overall coverage percentage so that Hydra can plot it over time. - mkdir -p $out/nix-support - lineCoverage="$(sed 's/.*lines\.*: \([0-9\.]\+\)%.*/\1/; t ; d' log)" - functionCoverage="$(sed 's/.*functions\.*: \([0-9\.]\+\)%.*/\1/; t ; d' log)" - if [ -z "$lineCoverage" -o -z "$functionCoverage" ]; then - echo "failed to get coverage statistics" - exit 1 - fi - echo "lineCoverage $lineCoverage %" >> $out/nix-support/hydra-metrics - echo "functionCoverage $functionCoverage %" >> $out/nix-support/hydra-metrics - - echo "report coverage $out/coverage" >> $out/nix-support/hydra-build-products -} diff --git a/bsc/setup-hooks/make-symlinks-relative.sh b/bsc/setup-hooks/make-symlinks-relative.sh deleted file mode 100644 index 0608d3c..0000000 --- a/bsc/setup-hooks/make-symlinks-relative.sh +++ /dev/null @@ -1,28 +0,0 @@ -fixupOutputHooks+=(_makeSymlinksRelative) - -# For every symlink in $output that refers to another file in $output -# ensure that the symlink is relative. This removes references to the output -# has from the resulting store paths and thus the NAR files. -_makeSymlinksRelative() { - local symlinkTarget - - if [ -n "${dontRewriteSymlinks-}" ]; then - return 0 - fi - - while IFS= read -r -d $'\0' f; do - symlinkTarget=$(readlink "$f") - if [[ "$symlinkTarget"/ != "$prefix"/* ]]; then - # skip this symlink as it doesn't point to $prefix - continue - fi - - if [ ! -e "$symlinkTarget" ]; then - echo "the symlink $f is broken, it points to $symlinkTarget (which is missing)" - fi - - echo "rewriting symlink $f to be relative to $prefix" - ln -snrf "$symlinkTarget" "$f" - - done < <(find $prefix -type l -print0) -} diff --git a/bsc/setup-hooks/make-wrapper.sh b/bsc/setup-hooks/make-wrapper.sh deleted file mode 100644 index 8b70126..0000000 --- a/bsc/setup-hooks/make-wrapper.sh +++ /dev/null @@ -1,146 +0,0 @@ -# Assert that FILE exists and is executable -# -# assertExecutable FILE -assertExecutable() { - local file="$1" - [[ -f "$file" && -x "$file" ]] || \ - die "Cannot wrap '$file' because it is not an executable file" -} - -# construct an executable file that wraps the actual executable -# makeWrapper EXECUTABLE OUT_PATH ARGS - -# ARGS: -# --argv0 NAME : set name of executed process to NAME -# (otherwise it’s called …-wrapped) -# --set VAR VAL : add VAR with value VAL to the executable’s -# environment -# --set-default VAR VAL : like --set, but only adds VAR if not already set in -# the environment -# --unset VAR : remove VAR from the environment -# --run COMMAND : run command before the executable -# --add-flags FLAGS : add FLAGS to invocation of executable - -# --prefix ENV SEP VAL : suffix/prefix ENV with VAL, separated by SEP -# --suffix -# --suffix-each ENV SEP VALS : like --suffix, but VALS is a list -# --prefix-contents ENV SEP FILES : like --suffix-each, but contents of FILES -# are read first and used as VALS -# --suffix-contents -makeWrapper() { - local original="$1" - local wrapper="$2" - local params varName value command separator n fileNames - local argv0 flagsBefore flags - - assertExecutable "$original" - - mkdir -p "$(dirname "$wrapper")" - - echo "#! @shell@ -e" > "$wrapper" - - params=("$@") - for ((n = 2; n < ${#params[*]}; n += 1)); do - p="${params[$n]}" - - if [[ "$p" == "--set" ]]; then - varName="${params[$((n + 1))]}" - value="${params[$((n + 2))]}" - n=$((n + 2)) - echo "export $varName=${value@Q}" >> "$wrapper" - elif [[ "$p" == "--set-default" ]]; then - varName="${params[$((n + 1))]}" - value="${params[$((n + 2))]}" - n=$((n + 2)) - echo "export $varName=\${$varName-${value@Q}}" >> "$wrapper" - elif [[ "$p" == "--unset" ]]; then - varName="${params[$((n + 1))]}" - n=$((n + 1)) - echo "unset $varName" >> "$wrapper" - elif [[ "$p" == "--run" ]]; then - command="${params[$((n + 1))]}" - n=$((n + 1)) - echo "$command" >> "$wrapper" - elif [[ ("$p" == "--suffix") || ("$p" == "--prefix") ]]; then - varName="${params[$((n + 1))]}" - separator="${params[$((n + 2))]}" - value="${params[$((n + 3))]}" - n=$((n + 3)) - if test -n "$value"; then - if test "$p" = "--suffix"; then - echo "export $varName=\$$varName\${$varName:+${separator@Q}}${value@Q}" >> "$wrapper" - else - echo "export $varName=${value@Q}\${$varName:+${separator@Q}}\$$varName" >> "$wrapper" - fi - fi - elif [[ "$p" == "--suffix-each" ]]; then - varName="${params[$((n + 1))]}" - separator="${params[$((n + 2))]}" - values="${params[$((n + 3))]}" - n=$((n + 3)) - for value in $values; do - echo "export $varName=\$$varName\${$varName:+$separator}${value@Q}" >> "$wrapper" - done - elif [[ ("$p" == "--suffix-contents") || ("$p" == "--prefix-contents") ]]; then - varName="${params[$((n + 1))]}" - separator="${params[$((n + 2))]}" - fileNames="${params[$((n + 3))]}" - n=$((n + 3)) - for fileName in $fileNames; do - contents="$(cat "$fileName")" - if test "$p" = "--suffix-contents"; then - echo "export $varName=\$$varName\${$varName:+$separator}${contents@Q}" >> "$wrapper" - else - echo "export $varName=${contents@Q}\${$varName:+$separator}\$$varName" >> "$wrapper" - fi - done - elif [[ "$p" == "--add-flags" ]]; then - flags="${params[$((n + 1))]}" - n=$((n + 1)) - flagsBefore="$flagsBefore $flags" - elif [[ "$p" == "--argv0" ]]; then - argv0="${params[$((n + 1))]}" - n=$((n + 1)) - else - die "makeWrapper doesn't understand the arg $p" - fi - done - - echo exec ${argv0:+-a \"$argv0\"} \""$original"\" \ - "$flagsBefore" '"$@"' >> "$wrapper" - - chmod +x "$wrapper" -} - -addSuffix() { - suffix="$1" - shift - for name in "$@"; do - echo "$name$suffix" - done -} - -filterExisting() { - for fn in "$@"; do - if test -e "$fn"; then - echo "$fn" - fi - done -} - -# Syntax: wrapProgram -wrapProgram() { - local prog="$1" - local hidden - - assertExecutable "$prog" - - hidden="$(dirname "$prog")/.$(basename "$prog")"-wrapped - while [ -e "$hidden" ]; do - hidden="${hidden}_" - done - mv "$prog" "$hidden" - # Silence warning about unexpanded $0: - # shellcheck disable=SC2016 - makeWrapper "$hidden" "$prog" --argv0 '$0' "${@:2}" -} diff --git a/bsc/setup-hooks/move-docs.sh b/bsc/setup-hooks/move-docs.sh deleted file mode 100644 index ef31dcd..0000000 --- a/bsc/setup-hooks/move-docs.sh +++ /dev/null @@ -1,23 +0,0 @@ -# This setup hook moves $out/{man,doc,info} to $out/share; moves -# $out/share/man to $man/share/man; and moves $out/share/doc to -# $man/share/doc. - -preFixupHooks+=(_moveToShare) - -_moveToShare() { - forceShare=${forceShare:=man doc info} - if [ -z "$forceShare" -o -z "$out" ]; then return; fi - - for d in $forceShare; do - if [ -d "$out/$d" ]; then - if [ -d "$out/share/$d" ]; then - echo "both $d/ and share/$d/ exist!" - else - echo "moving $out/$d to $out/share/$d" - mkdir -p $out/share - mv $out/$d $out/share/ - fi - fi - done -} - diff --git a/bsc/setup-hooks/move-lib64.sh b/bsc/setup-hooks/move-lib64.sh deleted file mode 100644 index 9517af7..0000000 --- a/bsc/setup-hooks/move-lib64.sh +++ /dev/null @@ -1,22 +0,0 @@ -# This setup hook, for each output, moves everything in $output/lib64 -# to $output/lib, and replaces $output/lib64 with a symlink to -# $output/lib. The rationale is that lib64 directories are unnecessary -# in Nix (since 32-bit and 64-bit builds of a package are in different -# store paths anyway). -# If the move would overwrite anything, it should fail on rmdir. - -fixupOutputHooks+=(_moveLib64) - -_moveLib64() { - if [ "${dontMoveLib64-}" = 1 ]; then return; fi - if [ ! -e "$prefix/lib64" -o -L "$prefix/lib64" ]; then return; fi - echo "moving $prefix/lib64/* to $prefix/lib" - mkdir -p $prefix/lib - shopt -s dotglob - for i in $prefix/lib64/*; do - mv --no-clobber "$i" $prefix/lib - done - shopt -u dotglob - rmdir $prefix/lib64 - ln -s lib $prefix/lib64 -} diff --git a/bsc/setup-hooks/move-sbin.sh b/bsc/setup-hooks/move-sbin.sh deleted file mode 100644 index 1c0c4dc..0000000 --- a/bsc/setup-hooks/move-sbin.sh +++ /dev/null @@ -1,19 +0,0 @@ -# This setup hook, for each output, moves everything in $output/sbin -# to $output/bin, and replaces $output/sbin with a symlink to -# $output/bin. - -fixupOutputHooks+=(_moveSbin) - -_moveSbin() { - if [ "${dontMoveSbin-}" = 1 ]; then return; fi - if [ ! -e "$prefix/sbin" -o -L "$prefix/sbin" ]; then return; fi - echo "moving $prefix/sbin/* to $prefix/bin" - mkdir -p $prefix/bin - shopt -s dotglob - for i in $prefix/sbin/*; do - mv "$i" $prefix/bin - done - shopt -u dotglob - rmdir $prefix/sbin - ln -s bin $prefix/sbin -} diff --git a/bsc/setup-hooks/multiple-outputs.sh b/bsc/setup-hooks/multiple-outputs.sh deleted file mode 100644 index 2e95495..0000000 --- a/bsc/setup-hooks/multiple-outputs.sh +++ /dev/null @@ -1,199 +0,0 @@ -# The base package for automatic multiple-output splitting. Used in stdenv as well. -preConfigureHooks+=(_multioutConfig) -preFixupHooks+=(_multioutDocs) -preFixupHooks+=(_multioutDevs) -postFixupHooks+=(_multioutPropagateDev) - -# Assign the first string containing nonempty variable to the variable named $1 -_assignFirst() { - local varName="$1" - local REMOVE=REMOVE # slightly hacky - we allow REMOVE (i.e. not a variable name) - shift - while (( $# )); do - if [ -n "${!1-}" ]; then eval "${varName}"="$1"; return; fi - shift - done - echo "Error: _assignFirst found no valid variant!" - return 1 # none found -} - -# Same as _assignFirst, but only if "$1" = "" -_overrideFirst() { - if [ -z "${!1-}" ]; then - _assignFirst "$@" - fi -} - - -# Setup chains of sane default values with easy overridability. -# The variables are global to be usable anywhere during the build. -# Typical usage in package is defining outputBin = "dev"; - -_overrideFirst outputDev "dev" "out" -_overrideFirst outputBin "bin" "out" - -_overrideFirst outputInclude "$outputDev" - -# so-libs are often among the main things to keep, and so go to $out -_overrideFirst outputLib "lib" "out" - -_overrideFirst outputDoc "doc" "out" -_overrideFirst outputDevdoc "devdoc" REMOVE # documentation for developers -# man and info pages are small and often useful to distribute with binaries -_overrideFirst outputMan "man" "$outputBin" -_overrideFirst outputDevman "devman" "devdoc" "$outputMan" -_overrideFirst outputInfo "info" "$outputBin" - - -# Add standard flags to put files into the desired outputs. -_multioutConfig() { - if [ "$outputs" = "out" ] || [ -z "${setOutputFlags-1}" ]; then return; fi; - - # try to detect share/doc/${shareDocName} - # Note: sadly, $configureScript detection comes later in configurePhase, - # and reordering would cause more trouble than worth. - if [ -z "$shareDocName" ]; then - local confScript="$configureScript" - if [ -z "$confScript" ] && [ -x ./configure ]; then - confScript=./configure - fi - if [ -f "$confScript" ]; then - local shareDocName="$(sed -n "s/^PACKAGE_TARNAME='\(.*\)'$/\1/p" < "$confScript")" - fi - # PACKAGE_TARNAME sometimes contains garbage. - if [ -n "$shareDocName" ] || echo "$shareDocName" | grep -q '[^a-zA-Z0-9_-]'; then - shareDocName="$(echo "$name" | sed 's/-[^a-zA-Z].*//')" - fi - fi - - configureFlags="\ - --bindir=${!outputBin}/bin --sbindir=${!outputBin}/sbin \ - --includedir=${!outputInclude}/include --oldincludedir=${!outputInclude}/include \ - --mandir=${!outputMan}/share/man --infodir=${!outputInfo}/share/info \ - --docdir=${!outputDoc}/share/doc/${shareDocName} \ - --libdir=${!outputLib}/lib --libexecdir=${!outputLib}/libexec \ - --localedir=${!outputLib}/share/locale \ - $configureFlags" - - installFlags="\ - pkgconfigdir=${!outputDev}/lib/pkgconfig \ - m4datadir=${!outputDev}/share/aclocal aclocaldir=${!outputDev}/share/aclocal \ - $installFlags" -} - - -# Add rpath prefixes to library paths, and avoid stdenv doing it for $out. -_addRpathPrefix "${!outputLib}" -NIX_NO_SELF_RPATH=1 - - -# Move subpaths that match pattern $1 from under any output/ to the $2 output/ -# Beware: only globbing patterns are accepted, e.g.: * ? {foo,bar} -# A special target "REMOVE" is allowed: moveToOutput foo REMOVE -moveToOutput() { - local patt="$1" - local dstOut="$2" - local output - for output in $outputs; do - if [ "${!output}" = "$dstOut" ]; then continue; fi - local srcPath - for srcPath in "${!output}"/$patt; do - # apply to existing files/dirs, *including* broken symlinks - if [ ! -e "$srcPath" ] && [ ! -L "$srcPath" ]; then continue; fi - - if [ "$dstOut" = REMOVE ]; then - echo "Removing $srcPath" - rm -r "$srcPath" - else - local dstPath="$dstOut${srcPath#${!output}}" - echo "Moving $srcPath to $dstPath" - - if [ -d "$dstPath" ] && [ -d "$srcPath" ] - then # attempt directory merge - # check the case of trying to move an empty directory - rmdir "$srcPath" --ignore-fail-on-non-empty - if [ -d "$srcPath" ]; then - mv -t "$dstPath" "$srcPath"/* - rmdir "$srcPath" - fi - else # usual move - mkdir -p "$(readlink -m "$dstPath/..")" - mv "$srcPath" "$dstPath" - fi - fi - - # remove empty directories, printing iff at least one gets removed - local srcParent="$(readlink -m "$srcPath/..")" - if rmdir "$srcParent"; then - echo "Removing empty $srcParent/ and (possibly) its parents" - rmdir -p --ignore-fail-on-non-empty "$(readlink -m "$srcParent/..")" \ - 2> /dev/null || true # doesn't ignore failure for some reason - fi - done - done -} - -# Move documentation to the desired outputs. -_multioutDocs() { - local REMOVE=REMOVE # slightly hacky - we expand ${!outputFoo} - - moveToOutput share/info "${!outputInfo}" - moveToOutput share/doc "${!outputDoc}" - moveToOutput share/gtk-doc "${!outputDevdoc}" - moveToOutput share/devhelp/books "${!outputDevdoc}" - - # the default outputMan is in $bin - moveToOutput share/man "${!outputMan}" - moveToOutput share/man/man3 "${!outputDevman}" -} - -# Move development-only stuff to the desired outputs. -_multioutDevs() { - if [ "$outputs" = "out" ] || [ -z "${moveToDev-1}" ]; then return; fi; - moveToOutput include "${!outputInclude}" - # these files are sometimes provided even without using the corresponding tool - moveToOutput lib/pkgconfig "${!outputDev}" - moveToOutput share/pkgconfig "${!outputDev}" - moveToOutput lib/cmake "${!outputDev}" - moveToOutput share/aclocal "${!outputDev}" - # don't move *.la, as libtool needs them in the directory of the library - - for f in "${!outputDev}"/{lib,share}/pkgconfig/*.pc; do - echo "Patching '$f' includedir to output ${!outputInclude}" - sed -i "/^includedir=/s,=\${prefix},=${!outputInclude}," "$f" - done -} - -# Make the "dev" propagate other outputs needed for development. -_multioutPropagateDev() { - if [ "$outputs" = "out" ]; then return; fi; - - local outputFirst - for outputFirst in $outputs; do - break - done - local propagaterOutput="$outputDev" - if [ -z "$propagaterOutput" ]; then - propagaterOutput="$outputFirst" - fi - - # Default value: propagate binaries, includes and libraries - if [ -z "${propagatedBuildOutputs+1}" ]; then - local po_dirty="$outputBin $outputInclude $outputLib" - set +o pipefail - propagatedBuildOutputs=`echo "$po_dirty" \ - | tr -s ' ' '\n' | grep -v -F "$propagaterOutput" \ - | sort -u | tr '\n' ' ' ` - set -o pipefail - fi - - # The variable was explicitly set to empty or we resolved it so - if [ -z "$propagatedBuildOutputs" ]; then - return - fi - - mkdir -p "${!propagaterOutput}"/nix-support - for output in $propagatedBuildOutputs; do - echo -n " ${!output}" >> "${!propagaterOutput}"/nix-support/propagated-build-inputs - done -} diff --git a/bsc/setup-hooks/patch-shebangs.sh b/bsc/setup-hooks/patch-shebangs.sh deleted file mode 100644 index b48b0c5..0000000 --- a/bsc/setup-hooks/patch-shebangs.sh +++ /dev/null @@ -1,119 +0,0 @@ -# This setup hook causes the fixup phase to rewrite all script -# interpreter file names (`#! /path') to paths found in $PATH. E.g., -# /bin/sh will be rewritten to /nix/store/-some-bash/bin/sh. -# /usr/bin/env gets special treatment so that ".../bin/env python" is -# rewritten to /nix/store//bin/python. Interpreters that are -# already in the store are left untouched. -# A script file must be marked as executable, otherwise it will not be -# considered. - -fixupOutputHooks+=(patchShebangsAuto) - -# Run patch shebangs on a directory or file. -# Can take multiple paths as arguments. -# patchShebangs [--build | --host] PATH... - -# Flags: -# --build : Lookup commands available at build-time -# --host : Lookup commands available at runtime - -# Example use cases, -# $ patchShebangs --host /nix/store/...-hello-1.0/bin -# $ patchShebangs --build configure - -patchShebangs() { - local pathName - - if [ "$1" = "--host" ]; then - pathName=HOST_PATH - shift - elif [ "$1" = "--build" ]; then - pathName=PATH - shift - fi - - echo "patching script interpreter paths in $@" - local f - local oldPath - local newPath - local arg0 - local args - local oldInterpreterLine - local newInterpreterLine - - if [ $# -eq 0 ]; then - echo "No arguments supplied to patchShebangs" >&2 - return 0 - fi - - local f - while IFS= read -r -d $'\0' f; do - isScript "$f" || continue - - oldInterpreterLine=$(head -1 "$f" | tail -c+3) - read -r oldPath arg0 args <<< "$oldInterpreterLine" - - if [ -z "$pathName" ]; then - if [ -n "$strictDeps" ] && [[ "$f" = "$NIX_STORE"* ]]; then - pathName=HOST_PATH - else - pathName=PATH - fi - fi - - if $(echo "$oldPath" | grep -q "/bin/env$"); then - # Check for unsupported 'env' functionality: - # - options: something starting with a '-' - # - environment variables: foo=bar - if $(echo "$arg0" | grep -q -- "^-.*\|.*=.*"); then - echo "$f: unsupported interpreter directive \"$oldInterpreterLine\" (set dontPatchShebangs=1 and handle shebang patching yourself)" >&2 - exit 1 - fi - - newPath="$(PATH="${!pathName}" command -v "$arg0" || true)" - else - if [ "$oldPath" = "" ]; then - # If no interpreter is specified linux will use /bin/sh. Set - # oldpath="/bin/sh" so that we get /nix/store/.../sh. - oldPath="/bin/sh" - fi - - newPath="$(PATH="${!pathName}" command -v "$(basename "$oldPath")" || true)" - - args="$arg0 $args" - fi - - # Strip trailing whitespace introduced when no arguments are present - newInterpreterLine="$(echo "$newPath $args" | sed 's/[[:space:]]*$//')" - - if [ -n "$oldPath" -a "${oldPath:0:${#NIX_STORE}}" != "$NIX_STORE" ]; then - if [ -n "$newPath" -a "$newPath" != "$oldPath" ]; then - echo "$f: interpreter directive changed from \"$oldInterpreterLine\" to \"$newInterpreterLine\"" - # escape the escape chars so that sed doesn't interpret them - escapedInterpreterLine=$(echo "$newInterpreterLine" | sed 's|\\|\\\\|g') - # Preserve times, see: https://github.com/NixOS/nixpkgs/pull/33281 - timestamp=$(mktemp) - touch -r "$f" "$timestamp" - sed -i -e "1 s|.*|#\!$escapedInterpreterLine|" "$f" - touch -r "$timestamp" "$f" - rm "$timestamp" - fi - fi - done < <(find "$@" -type f -perm -0100 -print0) - - stopNest -} - -patchShebangsAuto () { - if [ -z "${dontPatchShebangs-}" -a -e "$prefix" ]; then - - # Dev output will end up being run on the build platform. An - # example case of this is sdl2-config. Otherwise, we can just - # use the runtime path (--host). - if [ "$output" != out ] && [ "$output" = "$outputDev" ]; then - patchShebangs --build "$prefix" - else - patchShebangs --host "$prefix" - fi - fi -} diff --git a/bsc/setup-hooks/prune-libtool-files.sh b/bsc/setup-hooks/prune-libtool-files.sh deleted file mode 100644 index 0ec5654..0000000 --- a/bsc/setup-hooks/prune-libtool-files.sh +++ /dev/null @@ -1,22 +0,0 @@ -# Clear dependency_libs in libtool files for shared libraries. - -# Shared libraries already encode their dependencies with locations. .la -# files do not always encode those locations, and sometimes encode the -# locations in the wrong Nix output. .la files are not needed for shared -# libraries, but without dependency_libs they do not hurt either. - -fixupOutputHooks+=(_pruneLibtoolFiles) - -_pruneLibtoolFiles() { - if [ "${dontPruneLibtoolFiles-}" ] || [ ! -e "$prefix" ]; then - return - fi - - # Libtool uses "dlname" and "library_names" fields for shared libraries and - # the "old_library" field for static libraries. We are processing only - # those .la files that do not describe static libraries. - find "$prefix" -type f -name '*.la' \ - -exec grep -q '^# Generated by .*libtool' {} \; \ - -exec grep -q "^old_library=''" {} \; \ - -exec sed -i {} -e "/^dependency_libs='[^']/ c dependency_libs='' #pruned" \; -} diff --git a/bsc/setup-hooks/role.bash b/bsc/setup-hooks/role.bash deleted file mode 100644 index 6f1c36f..0000000 --- a/bsc/setup-hooks/role.bash +++ /dev/null @@ -1,75 +0,0 @@ -# Since the same derivation can be depend on in multiple ways, we need to -# accumulate *each* role (i.e. host and target platforms relative the depending -# derivation) in which the derivation is used. -# -# The role is intened to be use as part of other variables names like -# - $NIX_${role_pre}_SOMETHING -# - $NIX_SOMETHING_${role_post} - -function getRole() { - case $1 in - -1) - role_pre='BUILD_' - role_post='_FOR_BUILD' - ;; - 0) - role_pre='' - role_post='' - ;; - 1) - role_pre='TARGET_' - role_post='_FOR_TARGET' - ;; - *) - echo "@name@: used as improper sort of dependency" >2 - return 1 - ;; - esac -} - -# `hostOffset` describes how the host platform of the package is slid relative -# to the depending package. `targetOffset` likewise describes the target -# platform of the package. Both are brought into scope of the setup hook defined -# for dependency whose setup hook is being processed relative to the package -# being built. - -function getHostRole() { - getRole "$hostOffset" -} -function getTargetRole() { - getRole "$targetOffset" -} - -# `depHostOffset` describes how the host platform of the dependencies are slid -# relative to the depending package. `depTargetOffset` likewise describes the -# target platform of dependenices. Both are brought into scope of the -# environment hook defined for the dependency being applied relative to the -# package being built. - -function getHostRoleEnvHook() { - getRole "$depHostOffset" -} -function getTargetRoleEnvHook() { - getRole "$depTargetOffset" -} - -# This variant is inteneded specifically for code-prodocing tool wrapper scripts -# `NIX_@wrapperName@_@infixSalt@_TARGET_*` tracks this (needs to be an exported -# env var so can't use fancier data structures). -function getTargetRoleWrapper() { - case $targetOffset in - -1) - export NIX_@wrapperName@_@infixSalt@_TARGET_BUILD=1 - ;; - 0) - export NIX_@wrapperName@_@infixSalt@_TARGET_HOST=1 - ;; - 1) - export NIX_@wrapperName@_@infixSalt@_TARGET_TARGET=1 - ;; - *) - echo "@name@: used as improper sort of dependency" >2 - return 1 - ;; - esac -} diff --git a/bsc/setup-hooks/separate-debug-info.sh b/bsc/setup-hooks/separate-debug-info.sh deleted file mode 100644 index 19dbb10..0000000 --- a/bsc/setup-hooks/separate-debug-info.sh +++ /dev/null @@ -1,37 +0,0 @@ -export NIX_SET_BUILD_ID=1 -export NIX_LDFLAGS+=" --compress-debug-sections=zlib" -export NIX_CFLAGS_COMPILE+=" -ggdb -Wa,--compress-debug-sections" -dontStrip=1 - -fixupOutputHooks+=(_separateDebugInfo) - -_separateDebugInfo() { - [ -e "$prefix" ] || return 0 - - local dst="${debug:-$out}" - if [ "$prefix" = "$dst" ]; then return 0; fi - - dst="$dst/lib/debug/.build-id" - - # Find executables and dynamic libraries. - local i magic - while IFS= read -r -d $'\0' i; do - if ! isELF "$i"; then continue; fi - - # Extract the Build ID. FIXME: there's probably a cleaner way. - local id="$($READELF -n "$i" | sed 's/.*Build ID: \([0-9a-f]*\).*/\1/; t; d')" - if [ "${#id}" != 40 ]; then - echo "could not find build ID of $i, skipping" >&2 - continue - fi - - # Extract the debug info. - header "separating debug info from $i (build ID $id)" - mkdir -p "$dst/${id:0:2}" - $OBJCOPY --only-keep-debug "$i" "$dst/${id:0:2}/${id:2}.debug" - $STRIP --strip-debug "$i" - - # Also a create a symlink .debug. - ln -sfn ".build-id/${id:0:2}/${id:2}.debug" "$dst/../$(basename "$i")" - done < <(find "$prefix" -type f -print0) -} diff --git a/bsc/setup-hooks/set-java-classpath.sh b/bsc/setup-hooks/set-java-classpath.sh deleted file mode 100644 index 445fa56..0000000 --- a/bsc/setup-hooks/set-java-classpath.sh +++ /dev/null @@ -1,13 +0,0 @@ -# This setup hook adds every JAR in the share/java subdirectories of -# the build inputs to $CLASSPATH. - -export CLASSPATH - -addPkgToClassPath () { - local jar - for jar in $1/share/java/*.jar; do - export CLASSPATH=''${CLASSPATH-}''${CLASSPATH:+:}''${jar} - done -} - -addEnvHooks "$targetOffset" addPkgToClassPath diff --git a/bsc/setup-hooks/set-source-date-epoch-to-latest.sh b/bsc/setup-hooks/set-source-date-epoch-to-latest.sh deleted file mode 100644 index ae34ffe..0000000 --- a/bsc/setup-hooks/set-source-date-epoch-to-latest.sh +++ /dev/null @@ -1,34 +0,0 @@ -updateSourceDateEpoch() { - local path="$1" - - # Get the last modification time of all regular files, sort them, - # and get the most recent. Maybe we should use - # https://github.com/0-wiz-0/findnewest here. - local -a res=($(find "$path" -type f -not -newer "$NIX_BUILD_TOP/.." -printf '%T@ %p\0' \ - | sort -n --zero-terminated | tail -n1 --zero-terminated | head -c -1)) - local time="${res[0]//\.[0-9]*/}" # remove the fraction part - local newestFile="${res[1]}" - - # Update $SOURCE_DATE_EPOCH if the most recent file we found is newer. - if [ "${time:-0}" -gt "$SOURCE_DATE_EPOCH" ]; then - echo "setting SOURCE_DATE_EPOCH to timestamp $time of file $newestFile" - export SOURCE_DATE_EPOCH="$time" - - # Warn if the new timestamp is too close to the present. This - # may indicate that we were being applied to a file generated - # during the build, or that an unpacker didn't restore - # timestamps properly. - local now="$(date +%s)" - if [ "$time" -gt $((now - 60)) ]; then - echo "warning: file $newestFile may be generated; SOURCE_DATE_EPOCH may be non-deterministic" - fi - fi -} - -postUnpackHooks+=(_updateSourceDateEpochFromSourceRoot) - -_updateSourceDateEpochFromSourceRoot() { - if [ -n "$sourceRoot" ]; then - updateSourceDateEpoch "$sourceRoot" - fi -} diff --git a/bsc/setup-hooks/setup-debug-info-dirs.sh b/bsc/setup-hooks/setup-debug-info-dirs.sh deleted file mode 100644 index 96bf48c..0000000 --- a/bsc/setup-hooks/setup-debug-info-dirs.sh +++ /dev/null @@ -1,5 +0,0 @@ -setupDebugInfoDirs () { - addToSearchPath NIX_DEBUG_INFO_DIRS $1/lib/debug -} - -addEnvHooks "$targetOffset" setupDebugInfoDirs diff --git a/bsc/setup-hooks/shorten-perl-shebang.sh b/bsc/setup-hooks/shorten-perl-shebang.sh deleted file mode 100644 index 4bf7c0f..0000000 --- a/bsc/setup-hooks/shorten-perl-shebang.sh +++ /dev/null @@ -1,88 +0,0 @@ -# This setup hook modifies a Perl script so that any "-I" flags in its shebang -# line are rewritten into a "use lib ..." statement on the next line. This gets -# around a limitation in Darwin, which will not properly handle a script whose -# shebang line exceeds 511 characters. -# -# Each occurrence of "-I /path/to/lib1" or "-I/path/to/lib2" is removed from -# the shebang line, along with the single space that preceded it. These library -# paths are placed into a new line of the form -# -# use lib "/path/to/lib1", "/path/to/lib2"; -# -# immediately following the shebang line. If a library appeared in the original -# list more than once, only its first occurrence will appear in the output -# list. In other words, the libraries are deduplicated, but the ordering of the -# first appearance of each one is preserved. -# -# Any flags other than "-I" in the shebang line are left as-is, and the -# interpreter is also left alone (although the script will abort if the -# interpreter does not seem to be either "perl" or else "env" with "perl" as -# its argument). Each line after the shebang line is left unchanged. Each file -# is modified in place. -# -# Usage: -# shortenPerlShebang SCRIPT... - -shortenPerlShebang() { - while [ $# -gt 0 ]; do - _shortenPerlShebang "$1" - shift - done -} - -_shortenPerlShebang() { - local program="$1" - - echo "shortenPerlShebang: rewriting shebang line in $program" - - if ! isScript "$program"; then - die "shortenPerlShebang: refusing to modify $program because it is not a script" - fi - - local temp="$(mktemp)" - - gawk ' - (NR == 1) { - if (!($0 ~ /\/(perl|env +perl)\>/)) { - print "shortenPerlShebang: script does not seem to be a Perl script" > "/dev/stderr" - exit 1 - } - idx = 0 - while (match($0, / -I ?([^ ]+)/, pieces)) { - matches[idx] = pieces[1] - idx++ - $0 = gensub(/ -I ?[^ ]+/, "", 1, $0) - } - print $0 - if (idx > 0) { - prefix = "use lib " - for (idx in matches) { - path = matches[idx] - if (!(path in seen)) { - printf "%s\"%s\"", prefix, path - seen[path] = 1 - prefix = ", " - } - } - print ";" - } - } - (NR > 1 ) { - print - } - ' "$program" > "$temp" || die - # Preserve the mode of the original file - cp --preserve=mode --attributes-only "$program" "$temp" - mv "$temp" "$program" - - # Measure the new shebang line length and make sure it's okay. We subtract - # one to account for the trailing newline that "head" included in its - # output. - local new_length=$(( $(head -n 1 "$program" | wc -c) - 1 )) - - # Darwin is okay when the shebang line contains 511 characters, but not - # when it contains 512 characters. - if [ $new_length -ge 512 ]; then - die "shortenPerlShebang: shebang line is $new_length characters--still too long for Darwin!" - fi -} diff --git a/bsc/setup-hooks/strip.sh b/bsc/setup-hooks/strip.sh deleted file mode 100644 index f5fa937..0000000 --- a/bsc/setup-hooks/strip.sh +++ /dev/null @@ -1,57 +0,0 @@ -# This setup hook strips libraries and executables in the fixup phase. - -fixupOutputHooks+=(_doStrip) - -_doStrip() { - # We don't bother to strip build platform code because it shouldn't make it - # to $out anyways---if it does, that's a bigger problem that a lack of - # stripping will help catch. - local -ra flags=(dontStripHost dontStripTarget) - local -ra stripCmds=(STRIP TARGET_STRIP) - - # Optimization - if [[ "${STRIP-}" == "${TARGET_STRIP-}" ]]; then - dontStripTarget+=1 - fi - - local i - for i in ${!stripCmds[@]}; do - local -n flag="${flags[$i]}" - local -n stripCmd="${stripCmds[$i]}" - - # `dontStrip` disables them all - if [[ "${dontStrip-}" || "${flag-}" ]] || ! type -f "${stripCmd-}" 2>/dev/null - then continue; fi - - stripDebugList=${stripDebugList:-lib lib32 lib64 libexec bin sbin} - if [ -n "$stripDebugList" ]; then - stripDirs "$stripCmd" "$stripDebugList" "${stripDebugFlags:--S}" - fi - - stripAllList=${stripAllList:-} - if [ -n "$stripAllList" ]; then - stripDirs "$stripCmd" "$stripAllList" "${stripAllFlags:--s}" - fi - done -} - -stripDirs() { - local cmd="$1" - local dirs="$2" - local stripFlags="$3" - local dirsNew= - - local d - for d in ${dirs}; do - if [ -d "$prefix/$d" ]; then - dirsNew="${dirsNew} $prefix/$d " - fi - done - dirs=${dirsNew} - - if [ -n "${dirs}" ]; then - header "stripping (with command $cmd and flags $stripFlags) in$dirs" - find $dirs -type f -print0 | xargs -0 ${xargsFlags:--r} $cmd $commonStripFlags $stripFlags 2>/dev/null || true - stopNest - fi -} diff --git a/bsc/setup-hooks/update-autotools-gnu-config-scripts.sh b/bsc/setup-hooks/update-autotools-gnu-config-scripts.sh deleted file mode 100644 index ebd3afa..0000000 --- a/bsc/setup-hooks/update-autotools-gnu-config-scripts.sh +++ /dev/null @@ -1,12 +0,0 @@ -preConfigurePhases+=" updateAutotoolsGnuConfigScriptsPhase" - -updateAutotoolsGnuConfigScriptsPhase() { - if [ -n "${dontUpdateAutotoolsGnuConfigScripts-}" ]; then return; fi - - for script in config.sub config.guess; do - for f in $(find . -type f -name "$script"); do - echo "Updating Autotools / GNU config script to a newer upstream version: $f" - cp -f "@gnu_config@/$script" "$f" - done - done -} diff --git a/bsc/setup-hooks/use-old-cxx-abi.sh b/bsc/setup-hooks/use-old-cxx-abi.sh deleted file mode 100644 index 53335d7..0000000 --- a/bsc/setup-hooks/use-old-cxx-abi.sh +++ /dev/null @@ -1 +0,0 @@ -export NIX_CFLAGS_COMPILE+=" -D_GLIBCXX_USE_CXX11_ABI=0" diff --git a/bsc/setup-hooks/validate-pkg-config.sh b/bsc/setup-hooks/validate-pkg-config.sh deleted file mode 100644 index 54fc9cc..0000000 --- a/bsc/setup-hooks/validate-pkg-config.sh +++ /dev/null @@ -1,19 +0,0 @@ -# This setup hook validates each pkgconfig file in each output. - -fixupOutputHooks+=(_validatePkgConfig) - -_validatePkgConfig() { - for pc in $(find "$prefix" -name '*.pc'); do - local bail=0 - - # Do not fail immediately. It's nice to see all errors when - # there are multiple pkgconfig files. - if ! pkg-config --validate "$pc"; then - bail=1 - fi - done - - if [ $bail -eq 1 ]; then - exit 1 - fi -} diff --git a/bsc/setup-hooks/win-dll-link.sh b/bsc/setup-hooks/win-dll-link.sh deleted file mode 100644 index 6130f32..0000000 --- a/bsc/setup-hooks/win-dll-link.sh +++ /dev/null @@ -1,45 +0,0 @@ - -fixupOutputHooks+=(_linkDLLs) - -# For every *.{exe,dll} in $output/bin/ we try to find all (potential) -# transitive dependencies and symlink those DLLs into $output/bin -# so they are found on invocation. -# (DLLs are first searched in the directory of the running exe file.) -# The links are relative, so relocating whole /nix/store won't break them. -_linkDLLs() { -( - if [ ! -d "$prefix/bin" ]; then exit; fi - cd "$prefix/bin" - - # Compose path list where DLLs should be located: - # prefix $PATH by currently-built outputs - local DLLPATH="" - local outName - for outName in $outputs; do - addToSearchPath DLLPATH "${!outName}/bin" - done - DLLPATH="$DLLPATH:$PATH" - - echo DLLPATH="'$DLLPATH'" - - linkCount=0 - # Iterate over any DLL that we depend on. - local dll - for dll in $($OBJDUMP -p *.{exe,dll} | sed -n 's/.*DLL Name: \(.*\)/\1/p' | sort -u); do - if [ -e "./$dll" ]; then continue; fi - # Locate the DLL - it should be an *executable* file on $DLLPATH. - local dllPath="$(PATH="$DLLPATH" type -P "$dll")" - if [ -z "$dllPath" ]; then continue; fi - # That DLL might have its own (transitive) dependencies, - # so add also all DLLs from its directory to be sure. - local dllPath2 - for dllPath2 in "$dllPath" "$(dirname $(readlink "$dllPath" || echo "$dllPath"))"/*.dll; do - if [ -e ./"$(basename "$dllPath2")" ]; then continue; fi - CYGWIN+=\ winsymlinks:nativestrict ln -sr "$dllPath2" . - linkCount=$(($linkCount+1)) - done - done - echo "Created $linkCount DLL link(s) in $prefix/bin" -) -} - diff --git a/bsc/setup-hooks/wrap-gapps-hook.sh b/bsc/setup-hooks/wrap-gapps-hook.sh deleted file mode 100644 index 1a46e07..0000000 --- a/bsc/setup-hooks/wrap-gapps-hook.sh +++ /dev/null @@ -1,93 +0,0 @@ -# shellcheck shell=bash -gappsWrapperArgs=() - -find_gio_modules() { - if [ -d "$1/lib/gio/modules" ] && [ -n "$(ls -A "$1/lib/gio/modules")" ] ; then - gappsWrapperArgs+=(--prefix GIO_EXTRA_MODULES : "$1/lib/gio/modules") - fi -} - -addEnvHooks "${targetOffset:?}" find_gio_modules - -gappsWrapperArgsHook() { - if [ -n "$GDK_PIXBUF_MODULE_FILE" ]; then - gappsWrapperArgs+=(--set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE") - fi - - if [ -n "$XDG_ICON_DIRS" ]; then - gappsWrapperArgs+=(--prefix XDG_DATA_DIRS : "$XDG_ICON_DIRS") - fi - - if [ -n "$GSETTINGS_SCHEMAS_PATH" ]; then - gappsWrapperArgs+=(--prefix XDG_DATA_DIRS : "$GSETTINGS_SCHEMAS_PATH") - fi - - # Check for prefix as well - if [ -d "${prefix:?}/share" ]; then - gappsWrapperArgs+=(--prefix XDG_DATA_DIRS : "$prefix/share") - fi - - if [ -d "$prefix/lib/gio/modules" ] && [ -n "$(ls -A "$prefix/lib/gio/modules")" ]; then - gappsWrapperArgs+=(--prefix GIO_EXTRA_MODULES : "$prefix/lib/gio/modules") - fi - - for v in ${wrapPrefixVariables:-} GST_PLUGIN_SYSTEM_PATH_1_0 GI_TYPELIB_PATH GRL_PLUGIN_PATH; do - if [ -n "${!v}" ]; then - gappsWrapperArgs+=(--prefix "$v" : "${!v}") - fi - done -} - -preFixupPhases+=" gappsWrapperArgsHook" - -wrapGApp() { - local program="$1" - shift 1 - wrapProgram "$program" "${gappsWrapperArgs[@]}" "$@" -} - -# Note: $gappsWrapperArgs still gets defined even if ${dontWrapGApps-} is set. -wrapGAppsHook() { - # guard against running multiple times (e.g. due to propagation) - [ -z "$wrapGAppsHookHasRun" ] || return 0 - wrapGAppsHookHasRun=1 - - if [[ -z "${dontWrapGApps:-}" ]]; then - targetDirsThatExist=() - targetDirsRealPath=() - - # wrap binaries - targetDirs=("${prefix}/bin" "${prefix}/libexec") - for targetDir in "${targetDirs[@]}"; do - if [[ -d "${targetDir}" ]]; then - targetDirsThatExist+=("${targetDir}") - targetDirsRealPath+=("$(realpath "${targetDir}")/") - find "${targetDir}" -type f -executable -print0 | - while IFS= read -r -d '' file; do - echo "Wrapping program '${file}'" - wrapGApp "${file}" - done - fi - done - - # wrap links to binaries that point outside targetDirs - # Note: links to binaries within targetDirs do not need - # to be wrapped as the binaries have already been wrapped - if [[ ${#targetDirsThatExist[@]} -ne 0 ]]; then - find "${targetDirsThatExist[@]}" -type l -xtype f -executable -print0 | - while IFS= read -r -d '' linkPath; do - linkPathReal=$(realpath "${linkPath}") - for targetPath in "${targetDirsRealPath[@]}"; do - if [[ "$linkPathReal" == "$targetPath"* ]]; then - echo "Not wrapping link: '$linkPath' (already wrapped)" - continue 2 - fi - done - echo "Wrapping link: '$linkPath'" - wrapGApp "${linkPath}" - done - fi - fi -} - -fixupOutputHooks+=(wrapGAppsHook) diff --git a/bsc/wrapper-common/utils.bash b/bsc/wrapper-common/utils.bash deleted file mode 100644 index 4fd5716..0000000 --- a/bsc/wrapper-common/utils.bash +++ /dev/null @@ -1,92 +0,0 @@ -# Accumulate infixes for taking in the right input parameters with the `mangle*` -# functions below. See setup-hook for details. -accumulateRoles() { - declare -ga role_infixes=() - if [ "${NIX_@wrapperName@_@infixSalt@_TARGET_BUILD:-}" ]; then - role_infixes+=(_BUILD_) - fi - if [ "${NIX_@wrapperName@_@infixSalt@_TARGET_HOST:-}" ]; then - role_infixes+=(_) - fi - if [ "${NIX_@wrapperName@_@infixSalt@_TARGET_TARGET:-}" ]; then - role_infixes+=(_TARGET_) - fi -} - -mangleVarList() { - local var="$1" - shift - local -a role_infixes=("$@") - - local outputVar="${var/+/_@infixSalt@_}" - declare -gx ${outputVar}+='' - # For each role we serve, we accumulate the input parameters into our own - # cc-wrapper-derivation-specific environment variables. - for infix in "${role_infixes[@]}"; do - local inputVar="${var/+/${infix}}" - if [ -v "$inputVar" ]; then - export ${outputVar}+="${!outputVar:+ }${!inputVar}" - fi - done -} - -mangleVarBool() { - local var="$1" - shift - local -a role_infixes=("$@") - - local outputVar="${var/+/_@infixSalt@_}" - declare -gxi ${outputVar}+=0 - for infix in "${role_infixes[@]}"; do - local inputVar="${var/+/${infix}}" - if [ -v "$inputVar" ]; then - # "1" in the end makes `let` return success error code when - # expression itself evaluates to zero. - # We don't use `|| true` because that would silence actual - # syntax errors from bad variable values. - let "${outputVar} |= ${!inputVar:-0}" "1" - fi - done -} - -skip () { - if (( "${NIX_DEBUG:-0}" >= 1 )); then - echo "skipping impure path $1" >&2 - fi -} - - -# Checks whether a path is impure. E.g., `/lib/foo.so' is impure, but -# `/nix/store/.../lib/foo.so' isn't. -badPath() { - local p=$1 - - # Relative paths are okay (since they're presumably relative to - # the temporary build directory). - if [ "${p:0:1}" != / ]; then return 1; fi - - # Otherwise, the path should refer to the store or some temporary - # directory (including the build directory). - test \ - "$p" != "/dev/null" -a \ - "${p:0:${#NIX_STORE}}" != "$NIX_STORE" -a \ - "${p:0:4}" != "/tmp" -a \ - "${p:0:${#NIX_BUILD_TOP}}" != "$NIX_BUILD_TOP" -} - -expandResponseParams() { - declare -ga params=("$@") - local arg - for arg in "$@"; do - if [[ "$arg" == @* ]]; then - # phase separation makes this look useless - # shellcheck disable=SC2157 - if [ -x "@expandResponseParams@" ]; then - # params is used by caller - #shellcheck disable=SC2034 - readarray -d '' params < <("@expandResponseParams@" "$@") - return 0 - fi - fi - done -} From 57f09c1967caa2eb5c730c19a5463a802d0db81e Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Date: Wed, 17 Jun 2020 13:23:59 +0200 Subject: [PATCH 021/987] Ignore result build folder --- .gitignore | 1 + 1 file changed, 1 insertion(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b2be92b --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +result From f5484cf5c3b5f62772518dd350a7f84f8b2aa00d Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Date: Wed, 17 Jun 2020 13:26:14 +0200 Subject: [PATCH 022/987] Clean unused derivations --- default.nix | 81 ++--------------------------------------------------- 1 file changed, 3 insertions(+), 78 deletions(-) diff --git a/default.nix b/default.nix index a420226..4b41ab4 100644 --- a/default.nix +++ b/default.nix @@ -3,7 +3,6 @@ let inherit (pkgs.lib) callPackageWith; inherit (pkgs.lib) callPackagesWith; - #callPackage = callPackageWith (pkgs); callPackage = callPackageWith (pkgs // self.bsc); callPackages = callPackagesWith (pkgs // self.bsc); @@ -48,83 +47,11 @@ let extrae = extrae; }; -# -# clang-ompss2 = import ./bsc/cc-wrapper/default.nix { -## inherit stdenv binutils coreutils ; -## stdenv = bsc.stdenv; -# coreutils = pkgs.coreutils; -# bintools = pkgs.binutils; -# gnugrep = pkgs.gnugrep; -# stdenvNoCC = pkgs.stdenvNoCC; -# libc = pkgs.glibc; -# nativeTools = false; -# nativeLibc = false; -# cc = clang-ompss2-unwrapped; -# }; - - - - -# gcc = lib.makeOverridable (import ./bsc/cc-wrapper/default.nix) { -# nativeTools = false; -# nativeLibc = false; -# isGNU = true; -# buildPackages = { -# inherit (prevStage) stdenv; -# }; -# cc = prevStage.gcc-unwrapped; -# bintools = self.binutils; -# libc = getLibc self; -# inherit (self) stdenvNoCC coreutils gnugrep; -# shell = self.bash + "/bin/bash"; -# }; - - #stdenv = stdenvClangOmpss; - -# WrappedICC = import ../patches/cc-wrapper { -# inherit stdenv binutils coreutils ; -# libc = glibc; -# nativeTools = false; -# nativeLibc = false; -# cc = icc-native; -# }; -# -# -# stdenvICC = (overrideCC stdenv WrappedICC) // { isICC = true; }; -# -# stdenvIntelfSupported = if (WrappedICC != null) then stdenvICC else stdenv; -# -# stdenvIntelIfSupportedElseClang = if (WrappedICC != null) then stdenvICC else clangStdenv; -# -# intelMKLIfSupported = if (WrappedICC != null) then intel-mkl else pkgs.blas; -# }; - -# llvmPackages_10 = callPackage ../development/compilers/llvm/10 ({ -# inherit (stdenvAdapters) overrideCC; -# buildLlvmTools = buildPackages.llvmPackages_10.tools; -# targetLlvmLibraries = targetPackages.llvmPackages_10.libraries; -# } // stdenv.lib.optionalAttrs (stdenv.hostPlatform.isi686 && buildPackages.stdenv.cc.isGNU) { -# stdenv = gcc7Stdenv; -# }); - -# llvmPackages_latest = llvmPackages_10; - -# -# cpic = callPackage ./bsc/cpic/default.nix { -# stdenv = stdenv_nanos6; -# tampi = tampi; -# mpi = mpi; -# nanos6 = nanos6-git; -## llvm-ompss2 = llvm-ompss2; -# }; - dummy = callPackage ./bsc/dummy/default.nix { }; - chroot = callPackage ./test/chroot.nix {}; - -# llvmOmpss2Packages = callPackage bsc/llvm-ompss2/11/default.nix {}; - + chroot = callPackage ./test/chroot.nix { + }; clang-ompss2-unwrapped = callPackage ./bsc/llvm-ompss2/clang.nix { stdenv = pkgs.llvmPackages_10.stdenv; @@ -147,10 +74,8 @@ let cpic = callPackage ./bsc/cpic/default.nix { stdenv = stdenv-nanos6; - tampi = tampi; - mpi = mpi; nanos6 = nanos6-git; -# llvm-ompss2 = llvm-ompss2; + inherit mpi tampi; }; }; From 210e7056539a72e8944ad42479ddba5c84797c62 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Date: Wed, 17 Jun 2020 16:31:05 +0200 Subject: [PATCH 023/987] Quiet cpic compilation --- bsc/cpic/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bsc/cpic/default.nix b/bsc/cpic/default.nix index a03e239..a2b5131 100644 --- a/bsc/cpic/default.nix +++ b/bsc/cpic/default.nix @@ -22,7 +22,7 @@ stdenv.mkDerivation rec { # }; postConfigure = '' - env + #env ''; preConfigure = '' From 040f205538dfe8e583dcca834346786d1e938dac Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Date: Wed, 17 Jun 2020 16:39:04 +0200 Subject: [PATCH 024/987] Use cpic from git --- bsc/cpic/default.nix | 21 ++++++--------------- 1 file changed, 6 insertions(+), 15 deletions(-) diff --git a/bsc/cpic/default.nix b/bsc/cpic/default.nix index a2b5131..b6b1480 100644 --- a/bsc/cpic/default.nix +++ b/bsc/cpic/default.nix @@ -13,22 +13,13 @@ stdenv.mkDerivation rec { name = "cpic"; # Use my current cpic version, so I can test changes without commits - src = /home/Computational/rarias/cpic; + #src = /home/Computational/rarias/cpic; -# src = builtins.fetchGit { -# url = "https://github.com/rodarima/cpic"; -## rev = "73bd70448587f0925b89e24c8f17e412ea3958e6"; -# ref = "master"; -# }; - - postConfigure = '' - #env - ''; - - preConfigure = '' - export TAMPI_HOME="${tampi}" - #export NIX_DEBUG=5 - ''; + src = builtins.fetchGit { + url = "https://github.com/rodarima/cpic"; +# rev = "73bd70448587f0925b89e24c8f17e412ea3958e6"; + ref = "simd"; + }; enableParallelBuilding = true; dontStrip = true; From 6dc2f8045d38f53f68114b262651edeb153e17f6 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Date: Wed, 17 Jun 2020 17:10:41 +0200 Subject: [PATCH 025/987] Update nanos6 --- bsc/nanos6/git.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bsc/nanos6/git.nix b/bsc/nanos6/git.nix index 26ad27e..6b5b8cf 100644 --- a/bsc/nanos6/git.nix +++ b/bsc/nanos6/git.nix @@ -22,7 +22,7 @@ stdenv.mkDerivation rec { src = builtins.fetchGit { url = "git@bscpm02.bsc.es:rarias/nanos6"; - rev = "61ba5d39d7f9c99ca41b74fff34e0284bf039881"; + rev = "a471bb29023ae526ecfc5db95cf06cabf800d842"; ref = branch; }; From 6b5e5aafa9839d4024879147a70ffbf671eede8a Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Date: Thu, 25 Jun 2020 15:13:20 +0200 Subject: [PATCH 026/987] Add patched nix for BeeGFS --- bsc/nix/default.nix | 219 ++++++++++++++++++++++++++++++++++++++++++++ default.nix | 6 ++ 2 files changed, 225 insertions(+) create mode 100644 bsc/nix/default.nix diff --git a/bsc/nix/default.nix b/bsc/nix/default.nix new file mode 100644 index 0000000..78c5c3e --- /dev/null +++ b/bsc/nix/default.nix @@ -0,0 +1,219 @@ +{ lib, fetchurl, fetchFromGitHub, callPackage +, storeDir ? "/nix/store" +, stateDir ? "/nix/var" +, confDir ? "/etc" +, boehmgc +, stdenv, llvmPackages_6 +}: + +let + +common = + { lib, stdenv, fetchpatch, perl, curl, bzip2, sqlite, openssl ? null, xz + , bash, coreutils, gzip, gnutar + , pkgconfig, boehmgc, perlPackages, libsodium, brotli, boost, editline, nlohmann_json + , autoreconfHook, autoconf-archive, bison, flex, libxml2, libxslt, docbook5, docbook_xsl_ns + , jq, libarchive, rustc, cargo + # Used by tests + , gmock + , busybox-sandbox-shell + , storeDir + , stateDir + , confDir + , withLibseccomp ? lib.any (lib.meta.platformMatch stdenv.hostPlatform) libseccomp.meta.platforms, libseccomp + , withAWS ? stdenv.isLinux || stdenv.isDarwin, aws-sdk-cpp + + , name, suffix ? "", src, crates ? null + + }: + let + sh = busybox-sandbox-shell; + nix = stdenv.mkDerivation rec { + inherit name src; + version = lib.getVersion name; + + is24 = lib.versionAtLeast version "2.4pre"; + isExactly23 = lib.versionAtLeast version "2.3" && lib.versionOlder version "2.4"; + + VERSION_SUFFIX = suffix; + + outputs = [ "out" "dev" "man" "doc" ]; + + nativeBuildInputs = + [ pkgconfig ] + ++ lib.optionals is24 [ autoreconfHook autoconf-archive bison flex libxml2 libxslt + docbook5 docbook_xsl_ns jq gmock ]; + + buildInputs = + [ curl openssl sqlite xz bzip2 nlohmann_json + brotli boost editline + ] + ++ lib.optional (stdenv.isLinux || stdenv.isDarwin) libsodium + ++ lib.optionals is24 [ libarchive rustc cargo ] + ++ lib.optional withLibseccomp libseccomp + ++ lib.optional withAWS + ((aws-sdk-cpp.override { + apis = ["s3" "transfer"]; + customMemoryManagement = false; + }).overrideDerivation (args: { + patches = args.patches or [] ++ [(fetchpatch { + url = "https://github.com/edolstra/aws-sdk-cpp/commit/7d58e303159b2fb343af9a1ec4512238efa147c7.patch"; + sha256 = "103phn6kyvs1yc7fibyin3lgxz699qakhw671kl207484im55id1"; + })]; + })); + + propagatedBuildInputs = [ boehmgc ]; + + # Seems to be required when using std::atomic with 64-bit types + NIX_LDFLAGS = lib.optionalString (stdenv.hostPlatform.system == "armv5tel-linux" || stdenv.hostPlatform.system == "armv6l-linux") "-latomic"; + + preConfigure = + # Copy libboost_context so we don't get all of Boost in our closure. + # https://github.com/NixOS/nixpkgs/issues/45462 + '' + mkdir -p $out/lib + cp -pd ${boost}/lib/{libboost_context*,libboost_thread*,libboost_system*} $out/lib + rm -f $out/lib/*.a + ${lib.optionalString stdenv.isLinux '' + chmod u+w $out/lib/*.so.* + patchelf --set-rpath $out/lib:${stdenv.cc.cc.lib}/lib $out/lib/libboost_thread.so.* + ''} + '' + + # Unpack the Rust crates. + lib.optionalString is24 '' + tar xvf ${crates} -C nix-rust/ + mv nix-rust/nix-vendored-crates* nix-rust/vendor + '' + + # For Nix-2.3, patch around an issue where the Nix configure step pulls in the + # build system's bash and other utilities when cross-compiling + lib.optionalString (stdenv.buildPlatform != stdenv.hostPlatform && isExactly23) '' + mkdir tmp/ + substitute corepkgs/config.nix.in tmp/config.nix.in \ + --subst-var-by bash ${bash}/bin/bash \ + --subst-var-by coreutils ${coreutils}/bin \ + --subst-var-by bzip2 ${bzip2}/bin/bzip2 \ + --subst-var-by gzip ${gzip}/bin/gzip \ + --subst-var-by xz ${xz}/bin/xz \ + --subst-var-by tar ${gnutar}/bin/tar \ + --subst-var-by tr ${coreutils}/bin/tr + mv tmp/config.nix.in corepkgs/config.nix.in + ''; + + configureFlags = + [ "--with-store-dir=${storeDir}" + "--localstatedir=${stateDir}" + "--sysconfdir=${confDir}" + "--disable-init-state" + "--enable-gc" + ] + ++ lib.optionals stdenv.isLinux [ + "--with-sandbox-shell=${sh}/bin/busybox" + ] + ++ lib.optional ( + stdenv.hostPlatform != stdenv.buildPlatform && stdenv.hostPlatform ? nix && stdenv.hostPlatform.nix ? system + ) ''--with-system=${stdenv.hostPlatform.nix.system}'' + # RISC-V support in progress https://github.com/seccomp/libseccomp/pull/50 + ++ lib.optional (!withLibseccomp) "--disable-seccomp-sandboxing"; + + makeFlags = [ "profiledir=$(out)/etc/profile.d" ]; + + installFlags = [ "sysconfdir=$(out)/etc" ]; + + doInstallCheck = false; + + # socket path becomes too long otherwise + #preInstallCheck = lib.optional stdenv.isDarwin '' + # export TMPDIR=$NIX_BUILD_TOP + #''; + + separateDebugInfo = stdenv.isLinux; + + enableParallelBuilding = true; + + meta = { + description = "Powerful package manager that makes package management reliable and reproducible"; + longDescription = '' + Nix is a powerful package manager for Linux and other Unix systems that + makes package management reliable and reproducible. It provides atomic + upgrades and rollbacks, side-by-side installation of multiple versions of + a package, multi-user package management and easy setup of build + environments. + ''; + homepage = "https://nixos.org/"; + license = stdenv.lib.licenses.lgpl2Plus; + maintainers = [ stdenv.lib.maintainers.eelco ]; + platforms = stdenv.lib.platforms.unix; + outputsToInstall = [ "out" "man" ]; + }; + + passthru = { + perl-bindings = stdenv.mkDerivation { + pname = "nix-perl"; + inherit version; + + inherit src; + + postUnpack = "sourceRoot=$sourceRoot/perl"; + + # This is not cross-compile safe, don't have time to fix right now + # but noting for future travellers. + nativeBuildInputs = + [ perl pkgconfig curl nix libsodium boost autoreconfHook autoconf-archive ]; + + configureFlags = + [ "--with-dbi=${perlPackages.DBI}/${perl.libPrefix}" + "--with-dbd-sqlite=${perlPackages.DBDSQLite}/${perl.libPrefix}" + ]; + + preConfigure = "export NIX_STATE_DIR=$TMPDIR"; + + preBuild = "unset NIX_INDENT_MAKE"; + }; + }; + }; + in nix; + +in rec { + + nix = nixUnstable; + + nixUnstable = lib.lowPrio (callPackage common rec { + name = "nix-2.4${suffix}"; + suffix = "pre7534_b92f58f6"; + + #src = /home/Computational/rarias/nix/nix-rodarima; + src = fetchFromGitHub { + owner = "rodarima"; + repo = "nix"; + rev = "3a642187c33ed46d952d3a50a83b2576b704fab7"; + sha256 = "0s8is2czpkcj1x1kcjqgbnsbbl03w3fwjjiclsd44zh1ij3wb90s"; + }; + + crates = fetchurl { + url = "https://hydra.nixos.org/build/118797694/download/1/nix-vendored-crates-2.4pre7534_b92f58f6.tar.xz"; + sha256 = "a4c2612bbd81732bbb899bc0c230e07b16f6b6150ffbb19c4907dedbbc2bf9fc"; + }; + + inherit storeDir stateDir confDir boehmgc; + }); + + nixFlakes = lib.lowPrio (callPackage common rec { + name = "nix-2.4${suffix}"; + suffix = "pre20200521_00b562c"; + + src = fetchFromGitHub { + owner = "NixOS"; + repo = "nix"; + rev = "00b562c87ec4c3bbe514f5dc1f4d1c41f66f66bf"; + sha256 = "0s8is2czpkcj1x1kcjqgbnsbbl03w3fwjjiclsd44zh1ij3wb90s"; + }; + + crates = fetchurl { + url = "https://hydra.nixos.org/build/118093786/download/1/nix-vendored-crates-2.4pre20200501_941f952.tar.xz"; + sha256 = "060f4n5srdbb8vsj0m14aqch7im79a4h5g3nrs41p1xc602vhcdl"; + }; + + inherit storeDir stateDir confDir boehmgc; + }); + +} diff --git a/default.nix b/default.nix index 4b41ab4..ffd2af3 100644 --- a/default.nix +++ b/default.nix @@ -78,6 +78,12 @@ let inherit mpi tampi; }; + inherit (callPackage ./bsc/nix { + storeDir = "/nix/store"; + stateDir = "/nix/var"; + boehmgc = pkgs.boehmgc.override { enableLargeConfig = true; }; + }) + nix; }; in pkgs // self From 53aebe58469fe9edf6807aeb724b951771107a26 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Date: Thu, 25 Jun 2020 20:05:12 +0200 Subject: [PATCH 027/987] Use new format for urls --- bsc/llvm-ompss2/clang.nix | 2 +- bsc/nanos6/git.nix | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/bsc/llvm-ompss2/clang.nix b/bsc/llvm-ompss2/clang.nix index 7ea8e60..9bf4978 100644 --- a/bsc/llvm-ompss2/clang.nix +++ b/bsc/llvm-ompss2/clang.nix @@ -61,7 +61,7 @@ stdenv.mkDerivation rec { # and specify nanos6 at run time. src = builtins.fetchGit { - url = "git@bscpm02.bsc.es:llvm-ompss/llvm-mono.git"; + url = "ssh://git@bscpm02.bsc.es/llvm-ompss/llvm-mono.git"; rev = "38e2e6aac04d40b6b2823751ce25f6b414f52263"; ref = "master"; }; diff --git a/bsc/nanos6/git.nix b/bsc/nanos6/git.nix index 6b5b8cf..b657a4c 100644 --- a/bsc/nanos6/git.nix +++ b/bsc/nanos6/git.nix @@ -21,7 +21,7 @@ stdenv.mkDerivation rec { cacheline-width = "64"; src = builtins.fetchGit { - url = "git@bscpm02.bsc.es:rarias/nanos6"; + url = "ssh://git@bscpm02.bsc.es/rarias/nanos6"; rev = "a471bb29023ae526ecfc5db95cf06cabf800d842"; ref = branch; }; From a83627890e48a8333bca54ea49c30c772f1dbdf2 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Date: Thu, 25 Jun 2020 20:43:35 +0200 Subject: [PATCH 028/987] Place packages together --- default.nix | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/default.nix b/default.nix index ffd2af3..aad0972 100644 --- a/default.nix +++ b/default.nix @@ -8,11 +8,6 @@ let self.bsc = rec { - # Custom OpenMPI with mpi_cxx enabled for TAMPI - openmpi = callPackage ./bsc/openmpi/default.nix { - enableCxx = true; - }; - # Load the default implementation #mpi = pkgs.mpich; #mpi = pkgs.openmpi; @@ -27,6 +22,15 @@ let binutils = pkgs.binutils; coreutils = pkgs.coreutils; + # --------------------------------------------------------- # + # BSC Packages + # --------------------------------------------------------- # + + # Custom OpenMPI with mpi_cxx enabled for TAMPI + openmpi = callPackage ./bsc/openmpi/default.nix { + enableCxx = true; + }; + fftw = callPackage ./bsc/fftw/default.nix { mpi = mpi; }; @@ -78,12 +82,14 @@ let inherit mpi tampi; }; - inherit (callPackage ./bsc/nix { + inherit (callPackage ./bsc/nix/default.nix { storeDir = "/nix/store"; stateDir = "/nix/var"; boehmgc = pkgs.boehmgc.override { enableLargeConfig = true; }; }) - nix; + nix + nixUnstable + nixFlakes; }; in pkgs // self From 67c692b648da03c6713a05ea9fc97b5dc26587b7 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Date: Thu, 25 Jun 2020 21:02:49 +0200 Subject: [PATCH 029/987] Add test subset --- default.nix | 22 +++++++++++++--------- test/compilers/clang-ompss2.nix | 2 +- test/security/internet.nix | 20 ++++++++++++++++++++ 3 files changed, 34 insertions(+), 10 deletions(-) create mode 100644 test/security/internet.nix diff --git a/default.nix b/default.nix index aad0972..d7a4aab 100644 --- a/default.nix +++ b/default.nix @@ -54,9 +54,6 @@ let dummy = callPackage ./bsc/dummy/default.nix { }; - chroot = callPackage ./test/chroot.nix { - }; - clang-ompss2-unwrapped = callPackage ./bsc/llvm-ompss2/clang.nix { stdenv = pkgs.llvmPackages_10.stdenv; }; @@ -70,18 +67,13 @@ let cc = clang-ompss2; }; - test-clang-ompss2 = callPackage ./test/compilers/clang-ompss2.nix { - stdenv = stdenv-nanos6; - nanos6 = nanos6-git; - inherit clang-ompss2; - }; - cpic = callPackage ./bsc/cpic/default.nix { stdenv = stdenv-nanos6; nanos6 = nanos6-git; inherit mpi tampi; }; + # Patched nix for deep cluster inherit (callPackage ./bsc/nix/default.nix { storeDir = "/nix/store"; stateDir = "/nix/var"; @@ -90,6 +82,18 @@ let nix nixUnstable nixFlakes; + + test = { + chroot = callPackage ./test/chroot.nix { }; + + internet = callPackage ./test/security/internet.nix { }; + + clang-ompss2 = callPackage ./test/compilers/clang-ompss2.nix { + stdenv = stdenv-nanos6; + nanos6 = nanos6-git; + inherit clang-ompss2; + }; + }; }; in pkgs // self diff --git a/test/compilers/clang-ompss2.nix b/test/compilers/clang-ompss2.nix index 6fe0e45..db7e820 100644 --- a/test/compilers/clang-ompss2.nix +++ b/test/compilers/clang-ompss2.nix @@ -7,7 +7,7 @@ stdenv.mkDerivation rec { buildInputs = [ clang-ompss2 nanos6 ]; buildPhase = '' - export NIX_DEBUG=6 + #export NIX_DEBUG=6 clang -fompss-2 hello.c -o hello ./hello clang -fompss-2 hello.cc -o hello diff --git a/test/security/internet.nix b/test/security/internet.nix new file mode 100644 index 0000000..3fa4be3 --- /dev/null +++ b/test/security/internet.nix @@ -0,0 +1,20 @@ +{stdenv, curl, coreutils}: + +stdenv.mkDerivation rec { + version = "0.0.1"; + name = "internet-test"; + src = ./internet.nix; + dontUnpack = true; + buildInputs = [ curl coreutils ]; + buildPhase = '' + cat /proc/self/mounts + ls -l /proc + ls -l / + ip addr + ${curl}/bin/curl https://www.bsc.es/ + ''; + + installPhase = '' + mkdir -p $out + ''; +} From bd9788961b4c1e08e4fa7ceda4377ee77deed02b Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Date: Fri, 26 Jun 2020 10:16:41 +0200 Subject: [PATCH 030/987] Use autoreconfHook for TAMPI --- bsc/tampi/default.nix | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/bsc/tampi/default.nix b/bsc/tampi/default.nix index 4f60930..fb241eb 100644 --- a/bsc/tampi/default.nix +++ b/bsc/tampi/default.nix @@ -7,18 +7,15 @@ , gnumake , boost , mpi -, gcc}: +, gcc +, autoreconfHook +}: stdenv.mkDerivation rec { version = "1.0.1"; name = "tampi-${version}"; enableParallelBuilding = true; - buildInputs = [ automake autoconf libtool gnumake boost mpi gcc ]; - #hardeningDisable = [ "format" ]; - preConfigure = '' - autoreconf -fiv - ''; - + buildInputs = [ autoreconfHook automake autoconf libtool gnumake boost mpi gcc ]; dontDisableStatic = true; configureFlags = [ "--disable-mpi-mt-check" ]; src = fetchurl { From a4d20edd8b77727eab005167be6b25198bb93da2 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Date: Mon, 29 Jun 2020 14:44:17 +0200 Subject: [PATCH 031/987] Update nanos6 git --- bsc/nanos6/git.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bsc/nanos6/git.nix b/bsc/nanos6/git.nix index b657a4c..2f803ff 100644 --- a/bsc/nanos6/git.nix +++ b/bsc/nanos6/git.nix @@ -16,13 +16,13 @@ with stdenv.lib; stdenv.mkDerivation rec { pname = "nanos6"; - version = "2.3.2"; + version = "2.4-nix-526b0e14"; branch = "master"; cacheline-width = "64"; src = builtins.fetchGit { url = "ssh://git@bscpm02.bsc.es/rarias/nanos6"; - rev = "a471bb29023ae526ecfc5db95cf06cabf800d842"; + rev = "526b0e1418e445115d79cca402a387a88ea61bb9"; ref = branch; }; From 9a5759c45e3bff5ba7126f3be75ace6915735b68 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 29 Jun 2020 16:41:17 +0200 Subject: [PATCH 032/987] Update nanos6-git version --- bsc/nanos6/git.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bsc/nanos6/git.nix b/bsc/nanos6/git.nix index 2f803ff..53a9a7f 100644 --- a/bsc/nanos6/git.nix +++ b/bsc/nanos6/git.nix @@ -16,13 +16,13 @@ with stdenv.lib; stdenv.mkDerivation rec { pname = "nanos6"; - version = "2.4-nix-526b0e14"; + version = "2.4+nix_526b0e14"; branch = "master"; cacheline-width = "64"; src = builtins.fetchGit { url = "ssh://git@bscpm02.bsc.es/rarias/nanos6"; - rev = "526b0e1418e445115d79cca402a387a88ea61bb9"; + rev = "a8372abf9fc7cbc2db0778de80512ad4af244c29"; ref = branch; }; From 08a3512bf150c47efcc15bcb8cff6de814955dec Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 29 Jun 2020 16:42:25 +0200 Subject: [PATCH 033/987] Add nbody package (not working yet) --- bsc/apps/nbody/default.nix | 29 +++++++++++++++++++++++++++++ default.nix | 7 +++++++ 2 files changed, 36 insertions(+) create mode 100644 bsc/apps/nbody/default.nix diff --git a/bsc/apps/nbody/default.nix b/bsc/apps/nbody/default.nix new file mode 100644 index 0000000..4c8130d --- /dev/null +++ b/bsc/apps/nbody/default.nix @@ -0,0 +1,29 @@ +{ + stdenv +, nanos6 +, mpi +, tampi +}: + +stdenv.mkDerivation rec { + name = "nbody"; + + src = builtins.fetchGit { + url = "ssh://git@bscpm02.bsc.es/benchmarks/ompss-2/nbody-conflict-kevin.git"; + #rev = "a8372abf9fc7cbc2db0778de80512ad4af244c29"; + ref = "master"; + }; + + dontStrip = true; + + buildInputs = [ + nanos6 + mpi + tampi + ]; + + installPhase = '' + mkdir -p $out/bin + cp nbody_* $out/bin/ + ''; +} diff --git a/default.nix b/default.nix index d7a4aab..3b6bbc1 100644 --- a/default.nix +++ b/default.nix @@ -73,6 +73,13 @@ let inherit mpi tampi; }; + # Apps for Garlic + nbody = callPackage ./bsc/apps/nbody/default.nix { + stdenv = pkgs.gcc9Stdenv; + inherit mpi tampi; + nanos6 = nanos6-git; + }; + # Patched nix for deep cluster inherit (callPackage ./bsc/nix/default.nix { storeDir = "/nix/store"; From d6093681cc09db311443e5d8c64ef5d549452c14 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 29 Jun 2020 16:53:37 +0200 Subject: [PATCH 034/987] Move cpic to apps directory --- bsc/{ => apps}/cpic/default.nix | 0 default.nix | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) rename bsc/{ => apps}/cpic/default.nix (100%) diff --git a/bsc/cpic/default.nix b/bsc/apps/cpic/default.nix similarity index 100% rename from bsc/cpic/default.nix rename to bsc/apps/cpic/default.nix diff --git a/default.nix b/default.nix index 3b6bbc1..229cede 100644 --- a/default.nix +++ b/default.nix @@ -67,7 +67,7 @@ let cc = clang-ompss2; }; - cpic = callPackage ./bsc/cpic/default.nix { + cpic = callPackage ./bsc/apps/cpic/default.nix { stdenv = stdenv-nanos6; nanos6 = nanos6-git; inherit mpi tampi; From 19c18627be687c15d89005f7134fdbe847f2b33a Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 29 Jun 2020 16:53:57 +0200 Subject: [PATCH 035/987] Update nanos6 to last release (not working) --- bsc/nanos6/default.nix | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/bsc/nanos6/default.nix b/bsc/nanos6/default.nix index 1201af7..a0d7abd 100644 --- a/bsc/nanos6/default.nix +++ b/bsc/nanos6/default.nix @@ -17,14 +17,14 @@ with stdenv.lib; stdenv.mkDerivation rec { pname = "nanos6"; - version = "2.3.2"; + version = "2.4"; src = fetchurl { - url = "https://pm.bsc.es/ftp/ompss-2/releases/ompss-2-2019.11.2.tar.gz"; - sha256 = "03v1kpggdch25m1wfrdjl6crq252dgy6pms8h94d5jwcjh06fbf8"; + url = "https://pm.bsc.es/ftp/ompss-2/releases/ompss-2-2020.06.tar.gz"; + sha256 = "0f9hy2avblv31wi4910x81wc47dwx8x9nd72y02lgrhl7fc9i2sf"; }; - enableParallelBuilding = true; + enableParallelBuilding = false; preConfigure = '' cd ${pname}-${version} sed -i 's|/bin/echo|echo|g' loader/scripts/common.sh loader/scripts/lint/common.sh From 71430b35520ca193a4a2d0a61ffd779e3562df9b Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 29 Jun 2020 17:32:30 +0200 Subject: [PATCH 036/987] Add mercurium mcxx compiler --- bsc/mcxx/default.nix | 54 ++++++++++++++++++++++++++++++++++++++++++++ default.nix | 4 ++++ 2 files changed, 58 insertions(+) create mode 100644 bsc/mcxx/default.nix diff --git a/bsc/mcxx/default.nix b/bsc/mcxx/default.nix new file mode 100644 index 0000000..0424b32 --- /dev/null +++ b/bsc/mcxx/default.nix @@ -0,0 +1,54 @@ +{ stdenv +, fetchgit +, autoreconfHook +, nanos6 +, gperf +, python +, gfortran +, pkg-config +, sqlite +, flex +, bison +, gcc +}: + +stdenv.mkDerivation rec { + name = "mcxx"; + #version attribute ignored when using fetchgit: + #version = "2.2.0-70a299cf"; + + # Use patched Extrae version + src = fetchgit { + url = "https://github.com/bsc-pm/mcxx"; + rev = "70a299cfeb1f96735e6b9835aee946451f1913b2"; + sha256 = "1n8y0h47jm2ll67xbz930372xkl9647z12lfwz2472j3y86yxpmw"; + }; + + enableParallelBuilding = true; + + # Use full path for the backend compilers + preConfigure = '' + export GCC=${gcc}/bin/gcc + export GXX=${gcc}/bin/g++ + export GFORTRAN=${gfortran}/bin/gfortran + ''; + + buildInputs = [ + autoreconfHook + nanos6 + gperf + python + gfortran + pkg-config + sqlite.dev + bison + flex + gcc + ]; + + configureFlags = [ + "--enable-ompss-2" + "--with-nanos6=${nanos6}" + ]; + +} diff --git a/default.nix b/default.nix index 229cede..eda3cde 100644 --- a/default.nix +++ b/default.nix @@ -43,6 +43,10 @@ let mpi = mpi; }; + mcxx = callPackage ./bsc/mcxx/default.nix { + nanos6 = nanos6-git; + }; + nanos6 = callPackage ./bsc/nanos6/default.nix { extrae = extrae; }; From 3ddd1721f4ad5ea3414b2751497b99672703dbc2 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 29 Jun 2020 17:39:12 +0200 Subject: [PATCH 037/987] Use gcc9 to compile mcxx --- default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/default.nix b/default.nix index eda3cde..7a998ad 100644 --- a/default.nix +++ b/default.nix @@ -44,6 +44,7 @@ let }; mcxx = callPackage ./bsc/mcxx/default.nix { + stdenv = pkgs.gcc9Stdenv; nanos6 = nanos6-git; }; From 5064170b31de4c25f8b8287d3a921014a72ba78c Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 29 Jun 2020 17:40:25 +0200 Subject: [PATCH 038/987] Add mcxx to nbody: now builds --- bsc/apps/nbody/default.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/bsc/apps/nbody/default.nix b/bsc/apps/nbody/default.nix index 4c8130d..840635d 100644 --- a/bsc/apps/nbody/default.nix +++ b/bsc/apps/nbody/default.nix @@ -3,6 +3,7 @@ , nanos6 , mpi , tampi +, mcxx }: stdenv.mkDerivation rec { @@ -20,6 +21,7 @@ stdenv.mkDerivation rec { nanos6 mpi tampi + mcxx ]; installPhase = '' From 74222706bf4dd5a5ee7004c2823c1206ef80f214 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 29 Jun 2020 20:46:30 +0200 Subject: [PATCH 039/987] Add Intel MPI --- bsc/intel-mpi/default.nix | 73 +++++++++++++++++++++++++++++++++++++++ default.nix | 13 ++++++- 2 files changed, 85 insertions(+), 1 deletion(-) create mode 100644 bsc/intel-mpi/default.nix diff --git a/bsc/intel-mpi/default.nix b/bsc/intel-mpi/default.nix new file mode 100644 index 0000000..82b0f79 --- /dev/null +++ b/bsc/intel-mpi/default.nix @@ -0,0 +1,73 @@ +{ stdenv +, requireFile +, rpmextract +, libfabric +, patchelf +, enableDebug ? false +}: + + +stdenv.mkDerivation rec { + name = "intel-mpi-${version}"; + version = "2019.7.217"; + + lib_variant = (if enableDebug then "debug" else "release"); + + src = requireFile { + name = "l_mpi_2019.7.217.tgz"; + sha256 = "01wwmiqff5lad7cdi8i57bs3kiphpjfv52sxll1w0jpq4c03nf4h"; + message = '' + The package with Intel MPI cannot be redistributed freely, so you must do it + manually. Go to: + + https://software.intel.com/content/www/us/en/develop/tools/mpi-library.html + + And register in order to download Intel MPI (is free of charge). Then you will + be allowed to download it. Copy the url and use: + + nix-prefetch-url http://registrationcenter-download.intel.com/...../l_mpi_2019.7.217.tgz + + To add it to the store. Then try again building this derivation. + ''; + }; + + dontBuild = true; + installPhase = '' + mkdir -p $out + rpmextract rpm/intel-mpi-*.rpm + cd opt/intel/compilers_and_libraries_2020.1.217/linux/mpi/intel64 + + for i in bin/mpi* ; do + sed -i "s:I_MPI_SUBSTITUTE_INSTALLDIR:$out:g" $i + done + + mv etc $out + mv bin $out + mv include $out + + mkdir $out/lib + cp -a lib/lib* $out/lib + cp -a lib/${lib_variant}_mt/lib* $out/lib + + + ''; + + preFixup = '' + echo $out/lib contains: + ls -l $out/lib + echo ---------------------- + find $out/bin -type f -executable -exec \ + patchelf \ + --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \ + '{}' \; + + find $out/lib -name '*.so' -exec \ + patchelf --set-rpath "$out/lib:${stdenv.cc}/lib:${stdenv.glibc}/lib:${libfabric}/lib" '{}' \; + ''; + + buildInputs = [ + rpmextract + libfabric + patchelf + ]; +} diff --git a/default.nix b/default.nix index 7a998ad..daafccf 100644 --- a/default.nix +++ b/default.nix @@ -12,6 +12,7 @@ let #mpi = pkgs.mpich; #mpi = pkgs.openmpi; mpi = openmpi; # Our OpenMPI variant + #mpi = intel-mpi; # Load the default compiler #stdenv = pkgs.gcc7Stdenv; @@ -31,6 +32,15 @@ let enableCxx = true; }; + intel-mpi-2019 = callPackage ./bsc/intel-mpi/default.nix { + # Intel MPI provides a debug version of the MPI library, but + # by default we use the release variant for performance + enableDebug = false; + }; + + # Default Intel MPI version is 2019 (the last one) + intel-mpi = intel-mpi-2019; + fftw = callPackage ./bsc/fftw/default.nix { mpi = mpi; }; @@ -81,7 +91,8 @@ let # Apps for Garlic nbody = callPackage ./bsc/apps/nbody/default.nix { stdenv = pkgs.gcc9Stdenv; - inherit mpi tampi; + mpi = mpi; + tampi = tampi; nanos6 = nanos6-git; }; From a1f33444b584d2d0f169620c2309f46099452cb0 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 30 Jun 2020 12:19:36 +0200 Subject: [PATCH 040/987] Testing saiph app --- bsc/apps/nbody/default.nix | 4 ++ bsc/apps/saiph/default.nix | 45 ++++++++++++++++++++++ bsc/vtk/default.nix | 76 ++++++++++++++++++++++++++++++++++++++ default.nix | 25 +++++++++++-- 4 files changed, 146 insertions(+), 4 deletions(-) create mode 100644 bsc/apps/saiph/default.nix create mode 100644 bsc/vtk/default.nix diff --git a/bsc/apps/nbody/default.nix b/bsc/apps/nbody/default.nix index 840635d..2bee99a 100644 --- a/bsc/apps/nbody/default.nix +++ b/bsc/apps/nbody/default.nix @@ -17,6 +17,10 @@ stdenv.mkDerivation rec { dontStrip = true; + patchPhase = '' + sed -i 's/mpicc/mpigcc/g' Makefile + ''; + buildInputs = [ nanos6 mpi diff --git a/bsc/apps/saiph/default.nix b/bsc/apps/saiph/default.nix new file mode 100644 index 0000000..fb46fda --- /dev/null +++ b/bsc/apps/saiph/default.nix @@ -0,0 +1,45 @@ +{ + stdenv +, nanos6 +, mpi +, tampi +, mcxx +, vtk +, boost +}: + +stdenv.mkDerivation rec { + name = "nbody"; + + src = builtins.fetchGit { + url = "ssh://git@bscpm02.bsc.es/DSLs/saiph.git"; + #rev = "a8372abf9fc7cbc2db0778de80512ad4af244c29"; + ref = "VectorisationSupport"; + }; + + #dontStrip = true; + +# preBuild = '' +# cd saiphv2/cpp/src +# ''; + + buildInputs = [ + nanos6 + mpi + tampi + mcxx + vtk + boost + ]; + + buildPhase = '' + pwd + cd saiphv2/cpp/src + make -f Makefile.clang apps=ExHeat + ''; + + installPhase = '' + mkdir -p $out/bin + #cp nbody_* $out/bin/ + ''; +} diff --git a/bsc/vtk/default.nix b/bsc/vtk/default.nix new file mode 100644 index 0000000..9bf9aa3 --- /dev/null +++ b/bsc/vtk/default.nix @@ -0,0 +1,76 @@ +{ + stdenv +, fetchurl +, cmake +, libGLU +, libGL +, libX11 +, xorgproto +, libXt +, libtiff +, qtLib ? null +, enablePython ? false, python ? null +, mpi ? null +}: + +with stdenv.lib; + +let + os = stdenv.lib.optionalString; + majorVersion = "8.2"; + minorVersion = "0"; + version = "${majorVersion}.${minorVersion}"; +in + +stdenv.mkDerivation rec { + name = "vtk-${os (qtLib != null) "qvtk-"}${version}"; + src = fetchurl { + url = "${meta.homepage}files/release/${majorVersion}/VTK-${version}.tar.gz"; + sha256 = "1fspgp8k0myr6p2a6wkc21ldcswb4bvmb484m12mxgk1a9vxrhrl"; + }; + + nativeBuildInputs = [ cmake ]; + + buildInputs = [ libtiff ] + ++ optionals (qtLib != null) (with qtLib; [ qtbase qtx11extras qttools ]) + ++ optional (qtLib != null) (with qtLib; [ qtbase qtx11extras qttools ]) + ++ optionals stdenv.isLinux [ libGLU libGL libX11 xorgproto libXt ] + ++ optional enablePython [ python ] + ++ optional (mpi != null) [ mpi ]; + + preBuild = '' + export LD_LIBRARY_PATH="$(pwd)/lib"; + ''; + + # Shared libraries don't work, because of rpath troubles with the current + # nixpkgs cmake approach. It wants to call a binary at build time, just + # built and requiring one of the shared objects. + # At least, we use -fPIC for other packages to be able to use this in shared + # objects. + cmakeFlags = [ + "-DCMAKE_C_FLAGS=-fPIC" + "-DCMAKE_CXX_FLAGS=-fPIC" + "-DVTK_USE_SYSTEM_TIFF=1" + "-DVTK_Group_MPI=ON" + "-DBUILD_SHARED_LIBS=ON" + "-DOPENGL_INCLUDE_DIR=${libGL}/include" + ] + ++ optional (mpi != null) [ + "-DVTK_Group_MPI=ON" ] + ++ optional (qtLib != null) [ + "-DVTK_Group_Qt:BOOL=ON" ] + ++ optional stdenv.isDarwin [ + "-DOPENGL_INCLUDE_DIR=${OpenGL}/Library/Frameworks" ] + ++ optional enablePython [ + "-DVTK_WRAP_PYTHON:BOOL=ON" ]; + + enableParallelBuilding = true; + + meta = { + description = "Open source libraries for 3D computer graphics, image processing and visualization"; + homepage = "https://www.vtk.org/"; + license = stdenv.lib.licenses.bsd3; + maintainers = with stdenv.lib.maintainers; [ knedlsepp ]; + platforms = with stdenv.lib.platforms; unix; + }; +} diff --git a/default.nix b/default.nix index daafccf..ab3f4a8 100644 --- a/default.nix +++ b/default.nix @@ -15,10 +15,13 @@ let #mpi = intel-mpi; # Load the default compiler - #stdenv = pkgs.gcc7Stdenv; - #stdenv = pkgs.gcc9Stdenv; #stdenv = pkgs.gcc10Stdenv; - stdenv = pkgs.clangStdenv; + #stdenv = pkgs.gcc9Stdenv; + #stdenv = pkgs.gcc7Stdenv; + stdenv = pkgs.llvmPackages_10.stdenv; + #stdenv = pkgs.llvmPackages_9.stdenv; + #stdenv = pkgs.llvmPackages_8.stdenv; + #stdenv = pkgs.llvmPackages_7.stdenv; binutils = pkgs.binutils; coreutils = pkgs.coreutils; @@ -66,6 +69,11 @@ let extrae = extrae; }; + vtk = callPackage ./bsc/vtk/default.nix { + mpi = mpi; + inherit (pkgs.xorg) libX11 xorgproto libXt; + }; + dummy = callPackage ./bsc/dummy/default.nix { }; @@ -91,11 +99,20 @@ let # Apps for Garlic nbody = callPackage ./bsc/apps/nbody/default.nix { stdenv = pkgs.gcc9Stdenv; - mpi = mpi; + mpi = intel-mpi; tampi = tampi; nanos6 = nanos6-git; }; + saiph = callPackage ./bsc/apps/saiph/default.nix { + stdenv = stdenv-nanos6; + mpi = intel-mpi; + tampi = tampi; + nanos6 = nanos6-git; + inherit vtk; + boost = pkgs.boost; + }; + # Patched nix for deep cluster inherit (callPackage ./bsc/nix/default.nix { storeDir = "/nix/store"; From 33a46f41ce5a108a518cfa5e01cd0570f9d57411 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 30 Jun 2020 15:41:18 +0200 Subject: [PATCH 041/987] Add support for mcc and clang in Intel mpicc --- bsc/intel-mpi/default.nix | 41 +++++++++++++++++++++----------------- bsc/intel-mpi/mpicc.patch | 20 +++++++++++++++++++ bsc/intel-mpi/mpicxx.patch | 28 ++++++++++++++++++++++++++ 3 files changed, 71 insertions(+), 18 deletions(-) create mode 100644 bsc/intel-mpi/mpicc.patch create mode 100644 bsc/intel-mpi/mpicxx.patch diff --git a/bsc/intel-mpi/default.nix b/bsc/intel-mpi/default.nix index 82b0f79..1f6f511 100644 --- a/bsc/intel-mpi/default.nix +++ b/bsc/intel-mpi/default.nix @@ -6,7 +6,6 @@ , enableDebug ? false }: - stdenv.mkDerivation rec { name = "intel-mpi-${version}"; version = "2019.7.217"; @@ -31,31 +30,43 @@ stdenv.mkDerivation rec { ''; }; - dontBuild = true; - installPhase = '' - mkdir -p $out - rpmextract rpm/intel-mpi-*.rpm - cd opt/intel/compilers_and_libraries_2020.1.217/linux/mpi/intel64 + buildInputs = [ + rpmextract + libfabric + patchelf + ]; + postUnpack = '' + pushd $sourceRoot + rpmextract rpm/intel-mpi-*.rpm + popd + ''; + + patches = [ + ./mpicc.patch + ./mpicxx.patch + ]; + + postPatch = '' for i in bin/mpi* ; do sed -i "s:I_MPI_SUBSTITUTE_INSTALLDIR:$out:g" $i done + ''; + dontBuild = true; + + installPhase = '' + cd opt/intel/compilers_and_libraries_2020.1.217/linux/mpi/intel64 + mkdir -p $out mv etc $out mv bin $out mv include $out - mkdir $out/lib cp -a lib/lib* $out/lib cp -a lib/${lib_variant}_mt/lib* $out/lib - - ''; preFixup = '' - echo $out/lib contains: - ls -l $out/lib - echo ---------------------- find $out/bin -type f -executable -exec \ patchelf \ --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \ @@ -64,10 +75,4 @@ stdenv.mkDerivation rec { find $out/lib -name '*.so' -exec \ patchelf --set-rpath "$out/lib:${stdenv.cc}/lib:${stdenv.glibc}/lib:${libfabric}/lib" '{}' \; ''; - - buildInputs = [ - rpmextract - libfabric - patchelf - ]; } diff --git a/bsc/intel-mpi/mpicc.patch b/bsc/intel-mpi/mpicc.patch new file mode 100644 index 0000000..953b4f7 --- /dev/null +++ b/bsc/intel-mpi/mpicc.patch @@ -0,0 +1,20 @@ +--- a/opt/intel/compilers_and_libraries_2020.1.217/linux/mpi/intel64/bin/mpicc 2020-06-30 14:22:04.510566478 +0200 ++++ b/opt/intel/compilers_and_libraries_2020.1.217/linux/mpi/intel64/bin/mpicc 2020-06-30 14:24:58.250998988 +0200 +@@ -50,7 +50,7 @@ + if [ x"$opt_args" == x"" ]; then + case "${compiler_short_name}" in + icc) $dir/mpiicc -cc=$compiler_name "$@" ;; +- cc|*gcc*) $dir/mpigcc -cc=$compiler_name "$@" ;; ++ cc|*gcc*|mcc|clang) $dir/mpigcc -cc=$compiler_name "$@" ;; + mpicc) $dir/mpigcc "$@" ;; + *) + echo "Error: unsupported compiler name '$compiler_name'." +@@ -60,7 +60,7 @@ + else + case "${compiler_short_name}" in + icc) $dir/mpiicc -cc=$compiler_name "$@" $opt_args ;; +- cc|*gcc*) $dir/mpigcc -cc=$compiler_name "$@" $opt_args ;; ++ cc|*gcc*|mcc|clang) $dir/mpigcc -cc=$compiler_name "$@" $opt_args ;; + mpicc) $dir/mpigcc "$@" $opt_args ;; + *) + echo "Error: unsupported compiler name '$compiler_name'." diff --git a/bsc/intel-mpi/mpicxx.patch b/bsc/intel-mpi/mpicxx.patch new file mode 100644 index 0000000..a386007 --- /dev/null +++ b/bsc/intel-mpi/mpicxx.patch @@ -0,0 +1,28 @@ +--- a/opt/intel/compilers_and_libraries_2020.1.217/linux/mpi/intel64/bin/mpicxx 2020-06-30 14:26:14.619723932 +0200 ++++ b/opt/intel/compilers_and_libraries_2020.1.217/linux/mpi/intel64/bin/mpicxx 2020-06-30 14:27:56.644687134 +0200 +@@ -49,9 +49,9 @@ + + if [ x"$opt_args" == x"" ]; then + case "${compiler_short_name}" in +- icc|icpc) $dir/mpiicpc -cxx=$compiler_name "$@" ;; +- *g++*) $dir/mpigxx -cxx=$compiler_name "$@" ;; +- mpicxx) $dir/mpigxx "$@" ;; ++ icc|icpc) $dir/mpiicpc -cxx=$compiler_name "$@" ;; ++ *g++*|clang*++|mcxx) $dir/mpigxx -cxx=$compiler_name "$@" ;; ++ mpicxx) $dir/mpigxx "$@" ;; + *) + echo "Error: unsupported compiler name '$compiler_name'." + echo "Check -cxx= command line option and I_MPI_CXX='$I_MPI_CXX' and MPICH_CXX='$MPICH_CXX' variables."; +@@ -59,9 +59,9 @@ + esac + else + case "${compiler_short_name}" in +- icc|icpc) $dir/mpiicpc -cxx=$compiler_name "$@" $opt_args ;; +- *g++*) $dir/mpigxx -cxx=$compiler_name "$@" $opt_args ;; +- mpicxx) $dir/mpigxx "$@" $opt_args ;; ++ icc|icpc) $dir/mpiicpc -cxx=$compiler_name "$@" $opt_args ;; ++ *g++*|clang*++|mcxx) $dir/mpigxx -cxx=$compiler_name "$@" $opt_args ;; ++ mpicxx) $dir/mpigxx "$@" $opt_args ;; + *) + echo "Error: unsupported compiler name '$compiler_name'." + echo "Check -cxx= command line option and I_MPI_CXX='$I_MPI_CXX' and MPICH_CXX='$MPICH_CXX' variables."; From 61c799e7e418717418d2d3c0baf52f5c4f2fd3da Mon Sep 17 00:00:00 2001 From: Rodrigo Date: Wed, 1 Jul 2020 10:25:33 +0200 Subject: [PATCH 042/987] Intel compiler stub --- bsc/intel-compiler/default.nix | 17 +++++++++++++++++ default.nix | 7 +++++-- 2 files changed, 22 insertions(+), 2 deletions(-) create mode 100644 bsc/intel-compiler/default.nix diff --git a/bsc/intel-compiler/default.nix b/bsc/intel-compiler/default.nix new file mode 100644 index 0000000..9b46d01 --- /dev/null +++ b/bsc/intel-compiler/default.nix @@ -0,0 +1,17 @@ +{ stdenv +, fetchurl +}: + +stdenv.mkDerivation rec { + version = "2019.1.217"; + name = "intel-compiler-${version}"; + + # From Arch Linux PKGBUILD + dir_nr="16526"; + tgz="parallel_studio_xe_2020_update1_cluster_edition.tgz"; + + src = fetchurl { + url = "http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/${dir_nr}/${tgz}"; + sha256 = "01wwmiqff5lad7cdi8i57bs3kiphpjfv52sxll1w0jpq4c03nf4h"; + }; +} diff --git a/default.nix b/default.nix index ab3f4a8..a593fb2 100644 --- a/default.nix +++ b/default.nix @@ -35,14 +35,17 @@ let enableCxx = true; }; + # Default Intel MPI version is 2019 (the last one) + intel-mpi = intel-mpi-2019; intel-mpi-2019 = callPackage ./bsc/intel-mpi/default.nix { # Intel MPI provides a debug version of the MPI library, but # by default we use the release variant for performance enableDebug = false; }; - # Default Intel MPI version is 2019 (the last one) - intel-mpi = intel-mpi-2019; + intel-compiler = intel-compiler-2020; + intel-compiler-2020 = callPackage ./bsc/intel-compiler/default.nix { + }; fftw = callPackage ./bsc/fftw/default.nix { mpi = mpi; From 9d65f2ae2c10450a7ebe95947541cabd2e6751d6 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Date: Wed, 1 Jul 2020 13:08:05 +0200 Subject: [PATCH 043/987] Add icc bin to out dir --- bsc/intel-compiler/default.nix | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/bsc/intel-compiler/default.nix b/bsc/intel-compiler/default.nix index 9b46d01..875b72e 100644 --- a/bsc/intel-compiler/default.nix +++ b/bsc/intel-compiler/default.nix @@ -1,5 +1,6 @@ { stdenv , fetchurl +, rpmextract }: stdenv.mkDerivation rec { @@ -8,10 +9,32 @@ stdenv.mkDerivation rec { # From Arch Linux PKGBUILD dir_nr="16526"; - tgz="parallel_studio_xe_2020_update1_cluster_edition.tgz"; + year="2020"; + v_a="1"; + v_b="217"; + update="1"; + composer_xe_dir="compilers_and_libraries_${year}.${v_a}.${v_b}"; + tgz="parallel_studio_xe_2020_update${update}_cluster_edition.tgz"; + # sha256-/RHY3nKyvWBHT4vOe0Y+TLsiVZabnq8k9olXWqKiq6s= src = fetchurl { url = "http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/${dir_nr}/${tgz}"; - sha256 = "01wwmiqff5lad7cdi8i57bs3kiphpjfv52sxll1w0jpq4c03nf4h"; + sha256 = "1axblai5lmw9yqjaz7lvjraj5fsc7r37pklb9x3n1gdjfbgdh4gx"; }; + + buildInputs = [ + rpmextract + ]; + + installPhase = '' + rpmextract rpm/intel-icc-*.rpm + rpmextract rpm/intel-comp-*.rpm + + mkdir -p $out/{bin,lib,include} + + pushd ./opt/intel/${composer_xe_dir}/linux/ + cp -a bin/intel64/* $out/bin/ + cp -a compiler/include/* $out/include/ + popd + ''; } From 9ca29d5cf85b9020957d0f42c81009fe2f507a7f Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 1 Jul 2020 17:57:31 +0200 Subject: [PATCH 044/987] Use autoPatchelfHook for Intel MPI --- bsc/intel-mpi/default.nix | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/bsc/intel-mpi/default.nix b/bsc/intel-mpi/default.nix index 1f6f511..a1ea2e3 100644 --- a/bsc/intel-mpi/default.nix +++ b/bsc/intel-mpi/default.nix @@ -3,6 +3,9 @@ , rpmextract , libfabric , patchelf +, gcc +, zlib +, autoPatchelfHook , enableDebug ? false }: @@ -34,6 +37,9 @@ stdenv.mkDerivation rec { rpmextract libfabric patchelf + autoPatchelfHook + gcc.cc.lib + zlib ]; postUnpack = '' @@ -64,15 +70,6 @@ stdenv.mkDerivation rec { mkdir $out/lib cp -a lib/lib* $out/lib cp -a lib/${lib_variant}_mt/lib* $out/lib - ''; - - preFixup = '' - find $out/bin -type f -executable -exec \ - patchelf \ - --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \ - '{}' \; - - find $out/lib -name '*.so' -exec \ - patchelf --set-rpath "$out/lib:${stdenv.cc}/lib:${stdenv.glibc}/lib:${libfabric}/lib" '{}' \; + rm $out/lib/libmpi.dbg ''; } From 1f3674345921cbdd03f628eced7ede052ae4778a Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 1 Jul 2020 17:58:29 +0200 Subject: [PATCH 045/987] Add intel compiler --- bsc/apps/nbody/default.nix | 7 +++-- bsc/intel-compiler/default.nix | 57 ++++++++++++++-------------------- bsc/intel-compiler/icc.nix | 47 ++++++++++++++++++++++++++++ bsc/intel-compiler/license.nix | 39 +++++++++++++++++++++++ default.nix | 10 ++++-- 5 files changed, 121 insertions(+), 39 deletions(-) create mode 100644 bsc/intel-compiler/icc.nix create mode 100644 bsc/intel-compiler/license.nix diff --git a/bsc/apps/nbody/default.nix b/bsc/apps/nbody/default.nix index 2bee99a..49e8597 100644 --- a/bsc/apps/nbody/default.nix +++ b/bsc/apps/nbody/default.nix @@ -4,6 +4,7 @@ , mpi , tampi , mcxx +, icc }: stdenv.mkDerivation rec { @@ -15,15 +16,14 @@ stdenv.mkDerivation rec { ref = "master"; }; - dontStrip = true; - patchPhase = '' - sed -i 's/mpicc/mpigcc/g' Makefile + #sed -i 's/gcc/icc/g' Makefile ''; buildInputs = [ nanos6 mpi + icc tampi mcxx ]; @@ -32,4 +32,5 @@ stdenv.mkDerivation rec { mkdir -p $out/bin cp nbody_* $out/bin/ ''; + } diff --git a/bsc/intel-compiler/default.nix b/bsc/intel-compiler/default.nix index 875b72e..f9964a8 100644 --- a/bsc/intel-compiler/default.nix +++ b/bsc/intel-compiler/default.nix @@ -1,40 +1,29 @@ -{ stdenv -, fetchurl -, rpmextract +{ + stdenv +, gcc +, nanos6 +, icc-unwrapped +, wrapCCWith +, libstdcxxHook +, intel-license }: -stdenv.mkDerivation rec { - version = "2019.1.217"; - name = "intel-compiler-${version}"; +let + targetConfig = stdenv.targetPlatform.config; + inherit gcc; +in wrapCCWith rec { + cc = icc-unwrapped; + extraPackages = [ libstdcxxHook ]; + extraBuildCommands = '' + echo "-B${gcc.cc}/lib/gcc/${targetConfig}/${gcc.version}" >> $out/nix-support/cc-cflags + echo "-L${gcc.cc}/lib/gcc/${targetConfig}/${gcc.version}" >> $out/nix-support/cc-ldflags + echo "-L${gcc.cc.lib}/lib" >> $out/nix-support/cc-ldflags - # From Arch Linux PKGBUILD - dir_nr="16526"; - year="2020"; - v_a="1"; - v_b="217"; - update="1"; - composer_xe_dir="compilers_and_libraries_${year}.${v_a}.${v_b}"; - tgz="parallel_studio_xe_2020_update${update}_cluster_edition.tgz"; - - # sha256-/RHY3nKyvWBHT4vOe0Y+TLsiVZabnq8k9olXWqKiq6s= - src = fetchurl { - url = "http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/${dir_nr}/${tgz}"; - sha256 = "1axblai5lmw9yqjaz7lvjraj5fsc7r37pklb9x3n1gdjfbgdh4gx"; - }; + echo "export INTEL_LICENSE_FILE=${intel-license}" \ + >> $out/nix-support/setup-hook - buildInputs = [ - rpmextract - ]; - - installPhase = '' - rpmextract rpm/intel-icc-*.rpm - rpmextract rpm/intel-comp-*.rpm - - mkdir -p $out/{bin,lib,include} - - pushd ./opt/intel/${composer_xe_dir}/linux/ - cp -a bin/intel64/* $out/bin/ - cp -a compiler/include/* $out/include/ - popd + # Create the wrappers for icc and icpc + wrap icc $wrapper $ccPath/icc + wrap icpc $wrapper $ccPath/icpc ''; } diff --git a/bsc/intel-compiler/icc.nix b/bsc/intel-compiler/icc.nix new file mode 100644 index 0000000..620e3dc --- /dev/null +++ b/bsc/intel-compiler/icc.nix @@ -0,0 +1,47 @@ +{ stdenv +, fetchurl +, rpmextract +, autoPatchelfHook +, gcc +}: + +stdenv.mkDerivation rec { + version = "2019.1.217"; + name = "intel-compiler-${version}"; + + # From Arch Linux PKGBUILD + dir_nr="16526"; + year="2020"; + v_a="1"; + v_b="217"; + update="1"; + composer_xe_dir="compilers_and_libraries_${year}.${v_a}.${v_b}"; + tgz="parallel_studio_xe_2020_update${update}_cluster_edition.tgz"; + + src = fetchurl { + url = "http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/${dir_nr}/${tgz}"; + sha256 = "1axblai5lmw9yqjaz7lvjraj5fsc7r37pklb9x3n1gdjfbgdh4gx"; + }; + + buildInputs = [ + rpmextract + autoPatchelfHook + gcc.cc.lib + ]; + + installPhase = '' + rpmextract rpm/intel-icc-*.rpm + rpmextract rpm/intel-comp-*.rpm + rpmextract rpm/intel-c-comp-*.rpm + rpmextract rpm/intel-openmp*.rpm + + mkdir -p $out/{bin,lib,include} + + pushd ./opt/intel/${composer_xe_dir}/linux/ + cp -a bin/intel64/* $out/bin/ + cp -a compiler/include/* $out/include/ + cp -a compiler/lib/intel64_lin/* $out/lib/ + rm $out/lib/*.dbg + popd + ''; +} diff --git a/bsc/intel-compiler/license.nix b/bsc/intel-compiler/license.nix new file mode 100644 index 0000000..acfba21 --- /dev/null +++ b/bsc/intel-compiler/license.nix @@ -0,0 +1,39 @@ +{ stdenv +, requireFile +}: + +stdenv.mkDerivation rec { + name = "intel-compiler-license"; + version = "2019.7.217"; + + src = requireFile { + name = "license.lic"; + sha256 = "06g2xgm1lch6zqfkhb768wacdx46kf61mfvj5wfpyssw0anr0x9q"; + message = '' + The Intel Compiler requires a license. You can get one (free of charge) if + you meet the requeriments at the website: + + https://software.intel.com/content/www/us/en/develop/articles/qualify-for-free-software.html#opensourcecontributor + + Or you can use your own license. Add it to the store with: + + $ nix-store --add-fixed sha256 license.lic + /nix/store/2p9v0nvsl3scshjx348z6j32rh7ac0db-license.lic + + Notice that the name must match exactly "license.lic". + + Then update the hash in the bsc/intel-compiler/license.nix file using the + nix-hash command with: + + $ nix-hash --type sha256 --base32 --flat /nix/store/2p9v0nvsl3scshjx348z6j32rh7ac0db-license.lic + 06g2xgm1lch6zqfkhb768wacdx46kf61mfvj5wfpyssw0anr0x9q + ''; + }; + + dontUnpack = true; + + installPhase = '' + mkdir -p $out + cp $src $out/ + ''; +} diff --git a/default.nix b/default.nix index a593fb2..ec25a8a 100644 --- a/default.nix +++ b/default.nix @@ -43,8 +43,14 @@ let enableDebug = false; }; - intel-compiler = intel-compiler-2020; - intel-compiler-2020 = callPackage ./bsc/intel-compiler/default.nix { + icc-unwrapped = callPackage ./bsc/intel-compiler/icc.nix { + }; + + icc = callPackage bsc/intel-compiler/default.nix { + intel-license = icc-license; + }; + + icc-license = callPackage bsc/intel-compiler/license.nix { }; fftw = callPackage ./bsc/fftw/default.nix { From 9662ff413873030a5f38faf15bdd3249a4cffb47 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 2 Jul 2020 12:35:21 +0200 Subject: [PATCH 046/987] Test nbody with icc --- bsc/apps/nbody/default.nix | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/bsc/apps/nbody/default.nix b/bsc/apps/nbody/default.nix index 49e8597..8c5b37b 100644 --- a/bsc/apps/nbody/default.nix +++ b/bsc/apps/nbody/default.nix @@ -17,7 +17,8 @@ stdenv.mkDerivation rec { }; patchPhase = '' - #sed -i 's/gcc/icc/g' Makefile + sed -i 's/gcc/icc/g' Makefile + export NIX_DEBUG=6 ''; buildInputs = [ From 61f055e258e95592c68a03fcb6516824b31c2986 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 2 Jul 2020 12:59:37 +0200 Subject: [PATCH 047/987] Remove nix debug from nbody --- bsc/apps/nbody/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bsc/apps/nbody/default.nix b/bsc/apps/nbody/default.nix index 8c5b37b..06d823b 100644 --- a/bsc/apps/nbody/default.nix +++ b/bsc/apps/nbody/default.nix @@ -18,7 +18,7 @@ stdenv.mkDerivation rec { patchPhase = '' sed -i 's/gcc/icc/g' Makefile - export NIX_DEBUG=6 + #export NIX_DEBUG=6 ''; buildInputs = [ From 21894366199287549992c83992390f0a889252bb Mon Sep 17 00:00:00 2001 From: sandra Date: Thu, 2 Jul 2020 14:47:10 +0200 Subject: [PATCH 048/987] Saiph compilation details --- bsc/apps/saiph/default.nix | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/bsc/apps/saiph/default.nix b/bsc/apps/saiph/default.nix index fb46fda..0b0e468 100644 --- a/bsc/apps/saiph/default.nix +++ b/bsc/apps/saiph/default.nix @@ -9,7 +9,7 @@ }: stdenv.mkDerivation rec { - name = "nbody"; + name = "saiph"; src = builtins.fetchGit { url = "ssh://git@bscpm02.bsc.es/DSLs/saiph.git"; @@ -17,11 +17,9 @@ stdenv.mkDerivation rec { ref = "VectorisationSupport"; }; - #dontStrip = true; -# preBuild = '' -# cd saiphv2/cpp/src -# ''; + enableParallelBuilding = true; + dontStrip = true; buildInputs = [ nanos6 @@ -35,11 +33,17 @@ stdenv.mkDerivation rec { buildPhase = '' pwd cd saiphv2/cpp/src - make -f Makefile.clang apps=ExHeat + export VTK_VERSION=8.2 + export VTK_HOME=${vtk} + export SAIPH_HOME=. + make -f Makefile.clang + make -f Makefile.clang apps APP=ExHeat -j ''; installPhase = '' + mkdir -p $out/lib mkdir -p $out/bin - #cp nbody_* $out/bin/ + cp obj/libsaiphv2.so $out/lib/ + cp bin/ExHeat $out/bin/ ''; } From 940c494d8ed7411971278abb4a49150cb693bcf4 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 2 Jul 2020 15:32:52 +0200 Subject: [PATCH 049/987] Use last intel compiler 2020 version --- bsc/intel-compiler/default.nix | 4 ++-- bsc/intel-compiler/{icc.nix => icc2020.nix} | 4 ++-- default.nix | 8 ++++++-- 3 files changed, 10 insertions(+), 6 deletions(-) rename bsc/intel-compiler/{icc.nix => icc2020.nix} (94%) diff --git a/bsc/intel-compiler/default.nix b/bsc/intel-compiler/default.nix index f9964a8..e51f63d 100644 --- a/bsc/intel-compiler/default.nix +++ b/bsc/intel-compiler/default.nix @@ -5,7 +5,7 @@ , icc-unwrapped , wrapCCWith , libstdcxxHook -, intel-license +, icc-license }: let @@ -19,7 +19,7 @@ in wrapCCWith rec { echo "-L${gcc.cc}/lib/gcc/${targetConfig}/${gcc.version}" >> $out/nix-support/cc-ldflags echo "-L${gcc.cc.lib}/lib" >> $out/nix-support/cc-ldflags - echo "export INTEL_LICENSE_FILE=${intel-license}" \ + echo "export INTEL_LICENSE_FILE=${icc-license}" \ >> $out/nix-support/setup-hook # Create the wrappers for icc and icpc diff --git a/bsc/intel-compiler/icc.nix b/bsc/intel-compiler/icc2020.nix similarity index 94% rename from bsc/intel-compiler/icc.nix rename to bsc/intel-compiler/icc2020.nix index 620e3dc..b830d8e 100644 --- a/bsc/intel-compiler/icc.nix +++ b/bsc/intel-compiler/icc2020.nix @@ -6,11 +6,11 @@ }: stdenv.mkDerivation rec { - version = "2019.1.217"; + version = "${year}.${v_a}.${v_b}"; name = "intel-compiler-${version}"; # From Arch Linux PKGBUILD - dir_nr="16526"; + dir_nr="16527"; year="2020"; v_a="1"; v_b="217"; diff --git a/default.nix b/default.nix index ec25a8a..82c866c 100644 --- a/default.nix +++ b/default.nix @@ -43,11 +43,15 @@ let enableDebug = false; }; - icc-unwrapped = callPackage ./bsc/intel-compiler/icc.nix { + # By default we use Intel compiler 2020 update 1 + icc-unwrapped = icc2020-unwrapped; + icc2020-unwrapped = callPackage ./bsc/intel-compiler/icc2020.nix { }; + # A wrapper script that puts all the flags and environment vars properly and + # calls the intel compiler binary icc = callPackage bsc/intel-compiler/default.nix { - intel-license = icc-license; + inherit icc-unwrapped icc-license; }; icc-license = callPackage bsc/intel-compiler/license.nix { From e0c5a3ebcab05a01519f33c3e653bf59f17ac9b5 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 2 Jul 2020 15:54:41 +0200 Subject: [PATCH 050/987] Prefer makeFlags and use local directory --- bsc/apps/saiph/default.nix | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/bsc/apps/saiph/default.nix b/bsc/apps/saiph/default.nix index 0b0e468..3405431 100644 --- a/bsc/apps/saiph/default.nix +++ b/bsc/apps/saiph/default.nix @@ -11,12 +11,13 @@ stdenv.mkDerivation rec { name = "saiph"; - src = builtins.fetchGit { - url = "ssh://git@bscpm02.bsc.es/DSLs/saiph.git"; - #rev = "a8372abf9fc7cbc2db0778de80512ad4af244c29"; - ref = "VectorisationSupport"; - }; +# src = builtins.fetchGit { +# url = "ssh://git@bscpm02.bsc.es/DSLs/saiph.git"; +# #rev = "a8372abf9fc7cbc2db0778de80512ad4af244c29"; +# ref = "VectorisationSupport"; +# }; + src = /tmp/saiph; enableParallelBuilding = true; dontStrip = true; @@ -30,16 +31,19 @@ stdenv.mkDerivation rec { boost ]; - buildPhase = '' - pwd + preBuild = '' cd saiphv2/cpp/src export VTK_VERSION=8.2 export VTK_HOME=${vtk} export SAIPH_HOME=. - make -f Makefile.clang - make -f Makefile.clang apps APP=ExHeat -j ''; + makeFlags = [ + "-f" "Makefile.clang" + "apps" + "APP=ExHeat" + ]; + installPhase = '' mkdir -p $out/lib mkdir -p $out/bin From 1e02ac9023e62dee7275bb026e316fc11598607d Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 2 Jul 2020 21:10:44 +0200 Subject: [PATCH 051/987] Enable compiler-rt for asan and update clang-ompss2 --- bsc/llvm-ompss2/clang.nix | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/bsc/llvm-ompss2/clang.nix b/bsc/llvm-ompss2/clang.nix index 9bf4978..4caabc1 100644 --- a/bsc/llvm-ompss2/clang.nix +++ b/bsc/llvm-ompss2/clang.nix @@ -36,6 +36,8 @@ stdenv.mkDerivation rec { pkg-config ]; + hardeningDisable = [ "fortify" ]; + cmakeBuildType = if enableDebug then "Debug" else "Release"; dontUseCmakeBuildDir = true; @@ -49,7 +51,7 @@ stdenv.mkDerivation rec { "-DCMAKE_CXX_FLAGS_DEBUG=-g -ggnu-pubnames" "-DCMAKE_EXE_LINKER_FLAGS_DEBUG=-Wl,-gdb-index" "-DLLVM_LIT_ARGS=-sv --xunit-xml-output=xunit.xml" - "-DLLVM_ENABLE_PROJECTS=clang;openmp" + "-DLLVM_ENABLE_PROJECTS=clang;openmp;compiler-rt" "-DLLVM_ENABLE_ASSERTIONS=ON" "-DLLVM_INSTALL_TOOLCHAIN_ONLY=ON" ) @@ -62,7 +64,7 @@ stdenv.mkDerivation rec { src = builtins.fetchGit { url = "ssh://git@bscpm02.bsc.es/llvm-ompss/llvm-mono.git"; - rev = "38e2e6aac04d40b6b2823751ce25f6b414f52263"; + rev = "e1c73c3691d2685a99d99e14c6110d2c880662c6"; ref = "master"; }; } From 7d8f86eaad9a1da035026bebea5c40d9030fa6d6 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 3 Jul 2020 11:13:41 +0200 Subject: [PATCH 052/987] saiph: sanitize address and compile for avx2 --- bsc/apps/saiph/.default.nix.swp | Bin 0 -> 12288 bytes bsc/apps/saiph/default.nix | 15 +++++++++------ 2 files changed, 9 insertions(+), 6 deletions(-) create mode 100644 bsc/apps/saiph/.default.nix.swp diff --git a/bsc/apps/saiph/.default.nix.swp b/bsc/apps/saiph/.default.nix.swp new file mode 100644 index 0000000000000000000000000000000000000000..da7dcd725b35345098f20e653362681cc44a5b85 GIT binary patch literal 12288 zcmYc?2=nw+u+TGNU|?VnU|_iO^BS(nequpEv3_x4Wzs;RPQ9!xcUT zhFyFN3_JN47?$%fFwEg&V3@+kz|h6Vz|hFYz);D@z>v?!z>vkqz>vwuz!1sDz~IEk zz~IQoz`)PP!0?5af#D`E1H(aH28JG928K3X28LE%28L2z28L)}28IA$1_pax1_mo$ z1_n!B1_o7L1_pj!28N$J3=G$J7#Mc(FfeT4f%x@0$iG7{zDAuq8UmvsFd71*Aut*O zqaiRF0;3@?8UiCL1Zo)+6x7wN859&06p{-Rk}~u3T`N3N6H63S@=HtfL4258eo~fx zPG%B#X>pm6UU5D|Nls>xK3GX^c1mWEf^GpsI4Ls^i)c<}5`%(5W?pegVopv#Mq+WQ zf~|tOIs=1(LM+4)N{#^mwh$*MfelasEog=^b<>m-lzbDjQ`0hYQuUH^67$kQGP#M_ zsct!m>BS1R3eh05U_MH%D9A4=QSkGOhuRe9b_i5FEW{fks#0B6k_`$!xE7F9m}^k5 zr@x;qXc0IlP>WMj6m&BciuH@LD{~UFQ*{%|DohQH^po?8z-%M^bOo4?v_NiGP)JTu zfCjRDazTN9aZxgZfCFSQAmw??@R+0^-bCWA7z>Jc_+=5In3r6Q9 z=H(ZgF(@b`fsFFZD=002hgoV~Vp2}3OKMVSdU|GFx`M4jNl|GkC{j}L^GbqCiZTn3 z#2~5z5{nXZa#C}^E<@JDprD{!T$HR}tDs+!TL4*(ZVmEXEyzFxg`(6n1zQEBu+-#| z{G!a_#FEVXyx`ITP;4ndRFoFwfK(J0XISa$r)QQpBo!wYRfjsiS1A!adDGXMZyXFnGJ literal 0 HcmV?d00001 diff --git a/bsc/apps/saiph/default.nix b/bsc/apps/saiph/default.nix index 3405431..45abfd9 100644 --- a/bsc/apps/saiph/default.nix +++ b/bsc/apps/saiph/default.nix @@ -11,16 +11,16 @@ stdenv.mkDerivation rec { name = "saiph"; -# src = builtins.fetchGit { -# url = "ssh://git@bscpm02.bsc.es/DSLs/saiph.git"; -# #rev = "a8372abf9fc7cbc2db0778de80512ad4af244c29"; -# ref = "VectorisationSupport"; -# }; + src = builtins.fetchGit { + url = "ssh://git@bscpm02.bsc.es/DSLs/saiph.git"; + ref = "VectorisationSupport"; + }; - src = /tmp/saiph; + #src = /tmp/saiph; enableParallelBuilding = true; dontStrip = true; + enableDebugging = true; buildInputs = [ nanos6 @@ -33,9 +33,12 @@ stdenv.mkDerivation rec { preBuild = '' cd saiphv2/cpp/src + + sed -i s/skylake-avx512/core-avx2/g Makefile* export VTK_VERSION=8.2 export VTK_HOME=${vtk} export SAIPH_HOME=. + export NIX_CFLAGS_COMPILE+=" -fsanitize=address" ''; makeFlags = [ From bdfcb65b7e8311eece0e90212d50555cf6baf512 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 3 Jul 2020 15:12:57 +0200 Subject: [PATCH 053/987] Delete .swp file --- bsc/apps/saiph/.default.nix.swp | Bin 12288 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 bsc/apps/saiph/.default.nix.swp diff --git a/bsc/apps/saiph/.default.nix.swp b/bsc/apps/saiph/.default.nix.swp deleted file mode 100644 index da7dcd725b35345098f20e653362681cc44a5b85..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12288 zcmYc?2=nw+u+TGNU|?VnU|_iO^BS(nequpEv3_x4Wzs;RPQ9!xcUT zhFyFN3_JN47?$%fFwEg&V3@+kz|h6Vz|hFYz);D@z>v?!z>vkqz>vwuz!1sDz~IEk zz~IQoz`)PP!0?5af#D`E1H(aH28JG928K3X28LE%28L2z28L)}28IA$1_pax1_mo$ z1_n!B1_o7L1_pj!28N$J3=G$J7#Mc(FfeT4f%x@0$iG7{zDAuq8UmvsFd71*Aut*O zqaiRF0;3@?8UiCL1Zo)+6x7wN859&06p{-Rk}~u3T`N3N6H63S@=HtfL4258eo~fx zPG%B#X>pm6UU5D|Nls>xK3GX^c1mWEf^GpsI4Ls^i)c<}5`%(5W?pegVopv#Mq+WQ zf~|tOIs=1(LM+4)N{#^mwh$*MfelasEog=^b<>m-lzbDjQ`0hYQuUH^67$kQGP#M_ zsct!m>BS1R3eh05U_MH%D9A4=QSkGOhuRe9b_i5FEW{fks#0B6k_`$!xE7F9m}^k5 zr@x;qXc0IlP>WMj6m&BciuH@LD{~UFQ*{%|DohQH^po?8z-%M^bOo4?v_NiGP)JTu zfCjRDazTN9aZxgZfCFSQAmw??@R+0^-bCWA7z>Jc_+=5In3r6Q9 z=H(ZgF(@b`fsFFZD=002hgoV~Vp2}3OKMVSdU|GFx`M4jNl|GkC{j}L^GbqCiZTn3 z#2~5z5{nXZa#C}^E<@JDprD{!T$HR}tDs+!TL4*(ZVmEXEyzFxg`(6n1zQEBu+-#| z{G!a_#FEVXyx`ITP;4ndRFoFwfK(J0XISa$r)QQpBo!wYRfjsiS1A!adDGXMZyXFnGJ From 0663895b3fcc8eae6473310051e584dba6d3803a Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 3 Jul 2020 15:14:08 +0200 Subject: [PATCH 054/987] Ignore vim swap files --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index b2be92b..1fd51a1 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ result +**.swp From 91c38d70a816dddf3dff31468ae44b1da6ea8c5e Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 3 Jul 2020 18:25:22 +0200 Subject: [PATCH 055/987] Add README --- README | 348 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 348 insertions(+) create mode 100644 README diff --git a/README b/README new file mode 100644 index 0000000..666376b --- /dev/null +++ b/README @@ -0,0 +1,348 @@ + + + BSC Nixpkgs: User guide + + +1 Introduction + + This repository contains a set of nix packages used in the Barcelona + Supercomputing Center by the Programming Models group. + + Some preliminary steps must be done manually to be able to build and + install packages (derivations in nix jargon). + +1.1 Network access + + In order to use nix you need to be able to download the sources from + Internet. Usually the download requires the ports 22, 80 and 443 to be + open for outgoing traffic. + + Unfortunately, in some clusters (as is the case in xeon07) access to + Internet is disabled. However you can tunnel the connection by SSH to + your local machine, and then reach the Internet. + + There are some guides on how to prepare the proxy server and the + tunnel in SSH such as: + + https://www.seniorlinuxadmin.co.uk/ssh-over-proxy.html + + In order to instruct nix to use the proxy connection, you will need to + export the https_proxy and http_proxy variables. In the xeon07 node is + already configured and you can automatically set those variables to + the correct address by loading: + + $ . /scratch/nix/internet + + Consider adding the command to your ~/.bashrc file so you don't need + to do it every time you want to use nix. + + Now you should be able to reach the outside world by running: + + $ curl google.com + + 301 Moved +

301 Moved

+ The document has moved + here. + + +1.1 Prepare SSH keys + + Package sources are usually downloaded directly from the git server, + so you must be able to access all repositories without a password + prompt. + + Most repositories at https://pm.bsc.es/gitlab are open to read for + logged users, but there are some exceptions for example the nanos6 + repository where you must have explicitly granted read access. + + If you don't have a ssh key at ~/.ssh/*.pub create a new one without + password protection by running: + + $ ssh-keygen + Generating public/private rsa key pair. + Enter file in which to save the key (~/.ssh/id_rsa): + Enter passphrase (empty for no passphrase): + Enter same passphrase again: + Your identification has been saved in ~/.ssh/id_rsa. + Your public key has been saved in ~/.ssh/id_rsa.pub. + ... + + By default it will create the private key at ~/.ssh/id_rsa. Copy the + contents of your public ssh key in ~/.ssh/id_rsa.pub and paste it in + GitLab at: + + https://pm.bsc.es/gitlab/profile/keys + + If you want to select another key rather than the default + ~/.ssh/id_rsa then you must configure it for use in the ~/.ssh/config + file, adding: + + Host bscpm02.bsc.es + IdentityFile ~/.ssh/your-private-key + + Finally verify the SSH connection to the server works and you get a + greeting from the GitLab server with your username: + + $ ssh git@bscpm02.bsc.es + PTY allocation request failed on channel 0 + Welcome to GitLab, @rarias! + Connection to bscpm02.bsc.es closed. + + Verify that you can access rarias/nanos6 repository (otherwise you + first need to ask to be granted read access), at: + + https://pm.bsc.es/gitlab/rarias/nanos6 + + Finally, you should be able to download the rarias/nanos6 git + repository without any password interaction by running: + + $ git clone git@bscpm02-bsc-es:rarias/nanos6.git + +1.3 Prepare the bsc-nixpkgs repo + + Once you have Internet and you have granted access to the PM GitLab + repositories you can begin down the rabbit hole of nix. First ensure + that the nix binaries are available in your machine: + + $ nix --version + nix (Nix) 2.3.6 + + Now you are set to install packages with nix. Clone the bsc-nixpkgs + repository: + + $ git clone git@bscpm02-bsc-es:rarias/bsc-nixpkgs.git + + Nix looks in the current folder for a file named "default.nix" for + packages, so go to the repo: + + $ cd bsc-nixpkgs + + Now you should be able to build nanos6 from the git repository: + + $ nix-build -A bsc.nanos6-git + + The output is placed in the "result" symlink. + + +2. Basic usage of nix + + Nix is a package manager which handles easily reproducibility and + configuration of packages and dependencies. See more info here: + + https://nixos.org/nix/manual/ + + We will only cover the basic usage of nix for the BSC packages. + +2.1 The user environment + + All nix packages are stored under the /nix directory. When you need to + "install" some binary from nix, a symlink is added to a folder + included in the $PATH variable. In particular, you should have the + something similar added to your $PATH: + + $ echo $PATH | sed 's/:/\n/g' | grep nix + /home/Computational/rarias/.nix-profile/bin + /nix/var/nix/profiles/default/bin + + The first one is your custom installation of packages that are stored + in your home directory and the second one is the default installation + which contains the nix tools (which are installed in the /nix + directory as well). + + When you need a program that is not available in your environment, + much like when you use "module load ..." you can use nix-env to modify + what is currently loaded. For example: + + $ nix-env -iA nixpkgs.cowsay + + The command will download (if not found already in the nix store), + compile (if necessary) and load the program `cowsay` from the nixpkgs + repository in the environment. You should be able to run it as: + + $ cowsay "hello world" + _____________ + < hello world > + ------------- + \ ^__^ + \ (oo)\_______ + (__)\ )\/\ + ||----w | + || || + + You can inspect now the ~/.nix-profile/bin folder, and see that a new + symlink was added to the actual installation of the binary: + + $ file ~/.nix-profile/bin/cowsay + /home/Computational/rarias/.nix-profile/bin/cowsay: symbolic link to + `/nix/store/673gczmhr5b449521srz2n7g1klykz6n-cowsay-3.03+dfsg2/bin/cowsay' + + You can list the current packages installed in your environment by + running: + + $ nix-env -q + cowsay-3.03+dfsg2 + nix-2.3.6 + + Notice that this setup only affects your user environment. Also, it is + permanent for any new session until you modify the environment again + and is immediate, all sessions will have the new environment + instantaneously. + + You can remove any package from the environment using: + + $ nix-env -e cowsay + + See the manual with `nix-env --help` if you want to know more details. + +2.2 Building packages + + Usually, all official packages are already compiled and distributed + from a cache server so you don't need to rebuild them again. However, + BSC packages are distributed only in source code form as we don't have + any binary cache server yet. + + Nix will handle the build process without any user interaction (with a + few exceptions stated later, which you shouldn't have to worry). If + any other user has already built the package then the build process is + not needed, and the package is used as is. + + In order to build a BSC package go to the `bsc-nixpkgs` directory, and + run: + + $ nix-build -A bsc.dummy + + The package will be built and installed in the /nix directory, then a + symlink is placed in the result directory: + + $ find result/ -type f + result/ + result/bin + result/bin/dummy + + The way in which nix handles the packages and dependencies ensures + that the output of a compilation of any package is exactly the same. + You can check the reproducibility of the build by adding the "--check" + flag, which will rebuild the package and compare the checksum of every + file with the ones installed: + + $ nix-build -A bsc.dummy --check + ... + $ echo $? + 0 + + A return code of zero ensures the output is bit by bit identical to + the one installed. There are some packages that try to include + non-reproducible information in the build process as the timestamp + which will produce an error. Those packages must be patched to ensure + the output is deterministic. + + Notice that if you "cd" into the result/ directory you will be at /nix + directory (as you follow the symlink) where you don't have write + permission. Therefore if your program attempts to write to the current + directory it will fail. It is recommended to instead run your program + from the top directory: + + $ result/bin/dummy + Hello world! + + Or you can install it in the environment: + + $ nix-env -i ./result + + And "cd" into any directory where you want to output some files and + just run it by the name: + + $ cd /tmp + $ dummy + Hello world! + + Finally, you can remove it from the environment if you don't need it: + + $ nix-env -e dummy + + If you want to know more details use "nix-build --help" to see the + manual. + +2.3 The build process + + Each package is built following a programmable configuration + description in the nix language. Build in nix are performed under very + strict conditions. No access any file in the file system is allowed, + unless stated in the dependencies of the package which are then + available in the build environment. + + There is no network access in the build process and other restrictions + are enforced that the build is deterministic. See more details here: + + https://nixos.wiki/wiki/Nix#Sandboxing + + In the "default.nix" file of the bsc-nixpkgs you can see the + definition for each package, for example the nbody app: + + nbody = callPackage ./bsc/apps/nbody/default.nix { + stdenv = pkgs.gcc9Stdenv; + mpi = intel-mpi; + icc = icc; + tampi = tampi; + nanos6 = nanos6-git; + }; + + The compilation details are specified in the + "bsc/apps/nbody/default.nix" file. You can configure the package by + changing the inputs, for example, what specific implementation of + nanos6 or MPI you want to use. To change the MPI implementation to the + official MPICH package use: + + nbody = callPackage ./bsc/apps/nbody/default.nix { + stdenv = pkgs.gcc9Stdenv; + mpi = pkgs.mpich; # Notice pkgs prefix for official packages + icc = icc; + tampi = tampi; + nanos6 = nanos6-git; + }; + + Then you can rebuild the nbody package: + + $ nix-build -A bsc.nbody + ... + + And verify that the binary is indeed linked to MPICH now: + + $ ldd result/bin/nbody_mpi.N2.2048.exe | grep mpi + libmpi.so.12 => /nix/store/dwkkcv78a5bs8smflpx9ppp3klhz3i98-mpich-3.3.2/lib/libmpi.so.12 (0x00007f6be0f07000) + + If you modify a package which another package requires as a + dependency, nix will rebuild all required packages to propagate your + changes on demand. + + However, if you come back to the original configuration, the package + will still be in the /nix store (unless the garbage collector was + manually run and removed your old build), so you don't need to rebuild + it again. + + For example if nbody is configured back to use Intel MPI: + + nbody = callPackage ./bsc/apps/nbody/default.nix { + stdenv = pkgs.gcc9Stdenv; + mpi = intel-mpi; + icc = icc; + tampi = tampi; + nanos6 = nanos6-git; + }; + + The build process now is not required: + + $ nix-build -A bsc.nbody + /nix/store/rbq7wrjcmg6fzd6yhrlnkfvzcavdbdpc-nbody + $ ldd result/bin/nbody_mpi.N2.2048.exe | grep mpi + libmpifort.so.12 => /nix/store/jvsjvxj2a08340fpdrqbqix9z3mpp3bd-intel-mpi-2019.7.217/lib/libmpifort.so.12 (0x00007f3a00402000) + libmpi.so.12 => /nix/store/jvsjvxj2a08340fpdrqbqix9z3mpp3bd-intel-mpi-2019.7.217/lib/libmpi.so.12 (0x00007f39fed34000) + + Take a look at the different package description files in the + bsc-nixpkgs repository if you want to understand more details. Also + the nix pills are a very good reference: + + https://nixos.org/nixos/nix-pills/ + +/* vim: set ts=2 sw=2 tw=72 fo=watqc expandtab spell autoindent: */ From 0f2b4754fda102e1badf2a201c898b63e4c684e5 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 3 Jul 2020 18:26:04 +0200 Subject: [PATCH 056/987] Add a dummy bin for the examples --- bsc/dummy/default.nix | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/bsc/dummy/default.nix b/bsc/dummy/default.nix index 00d0874..39b5b7b 100644 --- a/bsc/dummy/default.nix +++ b/bsc/dummy/default.nix @@ -8,10 +8,17 @@ src = null; dontUnpack = true; + dontBuild = true; - buildPhase = '' - ls -l / - echo "${stdenv}" + installPhase = '' + mkdir -p $out/bin + + cat > $out/bin/dummy < Date: Fri, 3 Jul 2020 18:34:57 +0200 Subject: [PATCH 057/987] Disable assertions in clang --- bsc/llvm-ompss2/clang.nix | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/bsc/llvm-ompss2/clang.nix b/bsc/llvm-ompss2/clang.nix index 4caabc1..0e0f215 100644 --- a/bsc/llvm-ompss2/clang.nix +++ b/bsc/llvm-ompss2/clang.nix @@ -41,6 +41,7 @@ stdenv.mkDerivation rec { cmakeBuildType = if enableDebug then "Debug" else "Release"; dontUseCmakeBuildDir = true; + enableAssertions = "OFF"; preConfigure = '' mkdir -p build @@ -52,7 +53,7 @@ stdenv.mkDerivation rec { "-DCMAKE_EXE_LINKER_FLAGS_DEBUG=-Wl,-gdb-index" "-DLLVM_LIT_ARGS=-sv --xunit-xml-output=xunit.xml" "-DLLVM_ENABLE_PROJECTS=clang;openmp;compiler-rt" - "-DLLVM_ENABLE_ASSERTIONS=ON" + "-DLLVM_ENABLE_ASSERTIONS=${enableAssertions}" "-DLLVM_INSTALL_TOOLCHAIN_ONLY=ON" ) ''; From 018bebc2649b0ae5e4795ac2301e67530d694cce Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 6 Jul 2020 11:15:55 +0200 Subject: [PATCH 058/987] Disable debug in clang+ompss2 compiler --- bsc/llvm-ompss2/clang-bad.nix | 69 +++++++++++++++++++++++++++++++++++ bsc/llvm-ompss2/clang.nix | 2 +- default.nix | 1 + 3 files changed, 71 insertions(+), 1 deletion(-) create mode 100644 bsc/llvm-ompss2/clang-bad.nix diff --git a/bsc/llvm-ompss2/clang-bad.nix b/bsc/llvm-ompss2/clang-bad.nix new file mode 100644 index 0000000..114cb34 --- /dev/null +++ b/bsc/llvm-ompss2/clang-bad.nix @@ -0,0 +1,69 @@ +{ + stdenv +, fetchgit +, cmake +, lld +, bash +, python3 +, perl +, clang +, which +, libelf +, libffi +, pkg-config +, enableDebug ? false +}: + +stdenv.mkDerivation rec { + version = "11.0.0"; + pname = "clang-ompss2"; + enableParallelBuilding = true; + isClang = true; + isClangWithOmpss = true; + + buildInputs = [ + which + clang + bash + python3 + perl + cmake + lld + libelf + libffi + pkg-config + ]; + + hardeningDisable = [ "fortify" ]; + + cmakeBuildType = if enableDebug then "Debug" else "Release"; + + dontUseCmakeBuildDir = true; + + preConfigure = '' + mkdir -p build + cd build + ''; + + cmakeDir="../llvm"; + cmakeFlagsArray=[ + "-DLLVM_ENABLE_LLD=ON" + "-DCMAKE_CXX_FLAGS_DEBUG=-g -ggnu-pubnames" + "-DCMAKE_EXE_LINKER_FLAGS_DEBUG=-Wl,-gdb-index" + "-DLLVM_LIT_ARGS=-sv --xunit-xml-output=xunit.xml" + "-DLLVM_ENABLE_PROJECTS=clang;openmp;compiler-rt" + "-DLLVM_INSTALL_TOOLCHAIN_ONLY=ON" + (if enableDebug then "-DLLVM_ENABLE_ASSERTIONS=ON" else "") + ]; + +# About "-DCLANG_DEFAULT_NANOS6_HOME=${nanos6}", we could specify a default +# nanos6 installation, but this is would require a recompilation of clang each +# time nanos6 is changed. Better to use the environment variable NANOS6_HOME, +# and specify nanos6 at run time. + + src = builtins.fetchGit { + url = "ssh://git@bscpm02.bsc.es/llvm-ompss/llvm-mono.git"; + rev = "e1c73c3691d2685a99d99e14c6110d2c880662c6"; + ref = "master"; + }; +} diff --git a/bsc/llvm-ompss2/clang.nix b/bsc/llvm-ompss2/clang.nix index 0e0f215..bc01b0a 100644 --- a/bsc/llvm-ompss2/clang.nix +++ b/bsc/llvm-ompss2/clang.nix @@ -41,7 +41,7 @@ stdenv.mkDerivation rec { cmakeBuildType = if enableDebug then "Debug" else "Release"; dontUseCmakeBuildDir = true; - enableAssertions = "OFF"; + enableAssertions = if enableDebug then "ON" else "OFF"; preConfigure = '' mkdir -p build diff --git a/default.nix b/default.nix index 82c866c..683da82 100644 --- a/default.nix +++ b/default.nix @@ -92,6 +92,7 @@ let clang-ompss2-unwrapped = callPackage ./bsc/llvm-ompss2/clang.nix { stdenv = pkgs.llvmPackages_10.stdenv; + enableDebug = false; }; clang-ompss2 = callPackage bsc/llvm-ompss2/default.nix { From a95f7fa35ec0d8403a80613ccfabfd5806c8af5f Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 6 Jul 2020 11:19:20 +0200 Subject: [PATCH 059/987] Add details for xeon07 --- README | 194 ++++++++++++++++++++++++++++++++++----------------------- 1 file changed, 116 insertions(+), 78 deletions(-) diff --git a/README b/README index 666376b..fbdbf98 100644 --- a/README +++ b/README @@ -1,6 +1,6 @@ - BSC Nixpkgs: User guide + BSC Nixpkgs: User guide 1 Introduction @@ -11,34 +11,50 @@ Some preliminary steps must be done manually to be able to build and install packages (derivations in nix jargon). + This guide is specific for the nix installation in the xeon07 node, + accessed by the ssfhead.bsc.es login node, but it may be used in other + machines as well. + + To easily connect to xeon07 in one step, setup the SSH (for version + 7.3 and upwards) configuration file in ~/.ssh/config adding these + lines: + + Host cobi + HostName ssflogin.bsc.es + User your-username-here + + Host xeon07 + ProxyJump cobi + HostName xeon07 + User your-username-here + + You should be able to connect with: + + $ ssh xeon07 + 1.1 Network access - In order to use nix you need to be able to download the sources from - Internet. Usually the download requires the ports 22, 80 and 443 to be - open for outgoing traffic. + In order to use nix would you need to be able to download the sources + from Internet. Usually the download requires the ports 22, 80 and 443 + to be open for outgoing traffic. Unfortunately, in some clusters (as is the case in xeon07) access to Internet is disabled. However you can tunnel the connection by SSH to your local machine, and then reach the Internet. - There are some guides on how to prepare the proxy server and the - tunnel in SSH such as: + In order to tell nix to use the proxy connection, you will need to + export the "https_proxy" and "http_proxy" variables. A proxy + connection is already configured in xeon07 and you can automatically + set those variables to the correct address by loading: - https://www.seniorlinuxadmin.co.uk/ssh-over-proxy.html - - In order to instruct nix to use the proxy connection, you will need to - export the https_proxy and http_proxy variables. In the xeon07 node is - already configured and you can automatically set those variables to - the correct address by loading: - - $ . /scratch/nix/internet + xeon07$ . /scratch/nix/internet Consider adding the command to your ~/.bashrc file so you don't need to do it every time you want to use nix. Now you should be able to reach the outside world by running: - $ curl google.com + xeon07$ curl google.com 301 Moved

301 Moved

@@ -53,13 +69,13 @@ prompt. Most repositories at https://pm.bsc.es/gitlab are open to read for - logged users, but there are some exceptions for example the nanos6 - repository where you must have explicitly granted read access. + logged in users, but there are some exceptions (for example the nanos6 + repository) where you must have explicitly granted read access. - If you don't have a ssh key at ~/.ssh/*.pub create a new one without - password protection by running: + If you don't have a ssh key at ~/.ssh/*.pub in xeon07 create a new one + without password protection by running: - $ ssh-keygen + xeon07$ ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (~/.ssh/id_rsa): Enter passphrase (empty for no passphrase): @@ -74,17 +90,15 @@ https://pm.bsc.es/gitlab/profile/keys - If you want to select another key rather than the default - ~/.ssh/id_rsa then you must configure it for use in the ~/.ssh/config - file, adding: + Then, configure it for use in the ~/.ssh/config file, adding: Host bscpm02.bsc.es - IdentityFile ~/.ssh/your-private-key + IdentityFile ~/.ssh/id_rsa Finally verify the SSH connection to the server works and you get a greeting from the GitLab server with your username: - $ ssh git@bscpm02.bsc.es + xeon07$ ssh git@bscpm02.bsc.es PTY allocation request failed on channel 0 Welcome to GitLab, @rarias! Connection to bscpm02.bsc.es closed. @@ -97,32 +111,32 @@ Finally, you should be able to download the rarias/nanos6 git repository without any password interaction by running: - $ git clone git@bscpm02-bsc-es:rarias/nanos6.git + xeon07$ git clone git@bscpm02-bsc-es:rarias/nanos6.git 1.3 Prepare the bsc-nixpkgs repo Once you have Internet and you have granted access to the PM GitLab repositories you can begin down the rabbit hole of nix. First ensure - that the nix binaries are available in your machine: + that the nix binaries are available from your shell in xeon07: - $ nix --version + xeon07$ nix --version nix (Nix) 2.3.6 Now you are set to install packages with nix. Clone the bsc-nixpkgs repository: - $ git clone git@bscpm02-bsc-es:rarias/bsc-nixpkgs.git + xeon07$ git clone git@bscpm02-bsc-es:rarias/bsc-nixpkgs.git Nix looks in the current folder for a file named "default.nix" for packages, so go to the repo: - $ cd bsc-nixpkgs + xeon07$ cd bsc-nixpkgs Now you should be able to build nanos6 from the git repository: - $ nix-build -A bsc.nanos6-git + xeon07$ nix-build -A bsc.nanos6-git - The output is placed in the "result" symlink. + The output is placed in the "result" symbolic link. 2. Basic usage of nix @@ -138,10 +152,10 @@ All nix packages are stored under the /nix directory. When you need to "install" some binary from nix, a symlink is added to a folder - included in the $PATH variable. In particular, you should have the + included in the $PATH variable. In particular, you should have something similar added to your $PATH: - $ echo $PATH | sed 's/:/\n/g' | grep nix + xeon07$ echo $PATH | sed 's/:/\n/g' | grep nix /home/Computational/rarias/.nix-profile/bin /nix/var/nix/profiles/default/bin @@ -150,17 +164,35 @@ which contains the nix tools (which are installed in the /nix directory as well). + Use `nix search` to look for official packages in the "nixpkgs" + channel (the default repository of packages): + + xeon07$ nix search cowsay + warning: using cached results; pass '-u' to update the cache + * cowsay (cowsay) + A program which generates ASCII pictures of a cow with a message + + * neo-cowsay (neo-cowsay) + Cowsay reborn, written in Go + + * ponysay (ponysay-3.0.3) + Cowsay reimplemention for ponies + + * tewisay (tewisay-unstable-2017-04-14) + Cowsay replacement with unicode and partial ansi escape support + When you need a program that is not available in your environment, much like when you use "module load ..." you can use nix-env to modify what is currently loaded. For example: - $ nix-env -iA nixpkgs.cowsay + xeon07$ nix-env -iA nixpkgs.cowsay - The command will download (if not found already in the nix store), - compile (if necessary) and load the program `cowsay` from the nixpkgs + Notice that you should specify the prefix "nixpkgs." before. The + command will download (if not found already in the nix store), compile + (if necessary) and load the program `cowsay` from the nixpkgs repository in the environment. You should be able to run it as: - $ cowsay "hello world" + xeon07$ cowsay "hello world" _____________ < hello world > ------------- @@ -170,17 +202,17 @@ ||----w | || || - You can inspect now the ~/.nix-profile/bin folder, and see that a new + You can now inspect the ~/.nix-profile/bin folder, and see that a new symlink was added to the actual installation of the binary: - $ file ~/.nix-profile/bin/cowsay + xeon07$ file ~/.nix-profile/bin/cowsay /home/Computational/rarias/.nix-profile/bin/cowsay: symbolic link to `/nix/store/673gczmhr5b449521srz2n7g1klykz6n-cowsay-3.03+dfsg2/bin/cowsay' You can list the current packages installed in your environment by running: - $ nix-env -q + xeon07$ nix-env -q cowsay-3.03+dfsg2 nix-2.3.6 @@ -191,7 +223,7 @@ You can remove any package from the environment using: - $ nix-env -e cowsay + xeon07$ nix-env -e cowsay See the manual with `nix-env --help` if you want to know more details. @@ -203,63 +235,67 @@ any binary cache server yet. Nix will handle the build process without any user interaction (with a - few exceptions stated later, which you shouldn't have to worry). If - any other user has already built the package then the build process is - not needed, and the package is used as is. + few exceptions which you shouldn't have to worry). If any other user + has already built the package then the build process is not needed, + and the package is used as is. In order to build a BSC package go to the `bsc-nixpkgs` directory, and run: - $ nix-build -A bsc.dummy + xeon07$ nix-build -A bsc.dummy - The package will be built and installed in the /nix directory, then a - symlink is placed in the result directory: + Notice the "bsc." prefix for BSC packages. The package will be built + and installed in the /nix directory, then a symlink is placed in the + result directory: - $ find result/ -type f + xeon07$ find result/ -type f result/ result/bin result/bin/dummy The way in which nix handles the packages and dependencies ensures - that the output of a compilation of any package is exactly the same. + that the environment of the build process of any package is exactly + the same, so the generated output should be the same if the builds are + deterministic. + You can check the reproducibility of the build by adding the "--check" flag, which will rebuild the package and compare the checksum of every - file with the ones installed: + file with the ones previously built: - $ nix-build -A bsc.dummy --check + xeon07$ nix-build -A bsc.dummy --check ... - $ echo $? + xeon07$ echo $? 0 A return code of zero ensures the output is bit by bit identical to - the one installed. There are some packages that try to include - non-reproducible information in the build process as the timestamp - which will produce an error. Those packages must be patched to ensure - the output is deterministic. + the one installed. There are some packages that include + indeterministic information in the build process (such as the + timestamp of the current time) which will produce an error. Those + packages must be patched to ensure the output is deterministic. - Notice that if you "cd" into the result/ directory you will be at /nix - directory (as you follow the symlink) where you don't have write - permission. Therefore if your program attempts to write to the current - directory it will fail. It is recommended to instead run your program - from the top directory: + Notice that if you "cd" into the "result/" directory you will be at + /nix directory (as you have follow the symlink) where you don't have + write permission. Therefore if your program attempts to write to the + current directory it will fail. It is recommended to instead run your + program from the top directory: - $ result/bin/dummy + xeon07$ result/bin/dummy Hello world! Or you can install it in the environment: - $ nix-env -i ./result + xeon07$ nix-env -i ./result And "cd" into any directory where you want to output some files and just run it by the name: - $ cd /tmp - $ dummy + xeon07$ cd /tmp + xeon07$ dummy Hello world! Finally, you can remove it from the environment if you don't need it: - $ nix-env -e dummy + xeon07$ nix-env -e dummy If you want to know more details use "nix-build --help" to see the manual. @@ -267,18 +303,20 @@ 2.3 The build process Each package is built following a programmable configuration - description in the nix language. Build in nix are performed under very - strict conditions. No access any file in the file system is allowed, - unless stated in the dependencies of the package which are then - available in the build environment. + description in the nix language. Builds in nix are performed under + very strict conditions. No access to any file in the file system is + allowed, unless stated in the dependencies, which are in the /nix + store only. There is no network access in the build process and other restrictions - are enforced that the build is deterministic. See more details here: + are enforced so that the build environment is reproducible. See more + details here: https://nixos.wiki/wiki/Nix#Sandboxing - In the "default.nix" file of the bsc-nixpkgs you can see the - definition for each package, for example the nbody app: + The top level "default.nix" file of the bsc-nixpkgs serves as a index + of all BSC packages. You can see the definition for each package, for + example the nbody app: nbody = callPackage ./bsc/apps/nbody/default.nix { stdenv = pkgs.gcc9Stdenv; @@ -304,12 +342,12 @@ Then you can rebuild the nbody package: - $ nix-build -A bsc.nbody + xeon07$ nix-build -A bsc.nbody ... And verify that the binary is indeed linked to MPICH now: - $ ldd result/bin/nbody_mpi.N2.2048.exe | grep mpi + xeon07$ ldd result/bin/nbody_mpi.N2.2048.exe | grep mpi libmpi.so.12 => /nix/store/dwkkcv78a5bs8smflpx9ppp3klhz3i98-mpich-3.3.2/lib/libmpi.so.12 (0x00007f6be0f07000) If you modify a package which another package requires as a @@ -333,9 +371,9 @@ The build process now is not required: - $ nix-build -A bsc.nbody + xeon07$ nix-build -A bsc.nbody /nix/store/rbq7wrjcmg6fzd6yhrlnkfvzcavdbdpc-nbody - $ ldd result/bin/nbody_mpi.N2.2048.exe | grep mpi + xeon07$ ldd result/bin/nbody_mpi.N2.2048.exe | grep mpi libmpifort.so.12 => /nix/store/jvsjvxj2a08340fpdrqbqix9z3mpp3bd-intel-mpi-2019.7.217/lib/libmpifort.so.12 (0x00007f3a00402000) libmpi.so.12 => /nix/store/jvsjvxj2a08340fpdrqbqix9z3mpp3bd-intel-mpi-2019.7.217/lib/libmpi.so.12 (0x00007f39fed34000) From c03ac6d05a426400853f1e4a7a794dbaea4f2b8d Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 6 Jul 2020 15:32:55 +0200 Subject: [PATCH 060/987] Remove unused clang nix file --- bsc/llvm-ompss2/clang-bad.nix | 69 ----------------------------------- 1 file changed, 69 deletions(-) delete mode 100644 bsc/llvm-ompss2/clang-bad.nix diff --git a/bsc/llvm-ompss2/clang-bad.nix b/bsc/llvm-ompss2/clang-bad.nix deleted file mode 100644 index 114cb34..0000000 --- a/bsc/llvm-ompss2/clang-bad.nix +++ /dev/null @@ -1,69 +0,0 @@ -{ - stdenv -, fetchgit -, cmake -, lld -, bash -, python3 -, perl -, clang -, which -, libelf -, libffi -, pkg-config -, enableDebug ? false -}: - -stdenv.mkDerivation rec { - version = "11.0.0"; - pname = "clang-ompss2"; - enableParallelBuilding = true; - isClang = true; - isClangWithOmpss = true; - - buildInputs = [ - which - clang - bash - python3 - perl - cmake - lld - libelf - libffi - pkg-config - ]; - - hardeningDisable = [ "fortify" ]; - - cmakeBuildType = if enableDebug then "Debug" else "Release"; - - dontUseCmakeBuildDir = true; - - preConfigure = '' - mkdir -p build - cd build - ''; - - cmakeDir="../llvm"; - cmakeFlagsArray=[ - "-DLLVM_ENABLE_LLD=ON" - "-DCMAKE_CXX_FLAGS_DEBUG=-g -ggnu-pubnames" - "-DCMAKE_EXE_LINKER_FLAGS_DEBUG=-Wl,-gdb-index" - "-DLLVM_LIT_ARGS=-sv --xunit-xml-output=xunit.xml" - "-DLLVM_ENABLE_PROJECTS=clang;openmp;compiler-rt" - "-DLLVM_INSTALL_TOOLCHAIN_ONLY=ON" - (if enableDebug then "-DLLVM_ENABLE_ASSERTIONS=ON" else "") - ]; - -# About "-DCLANG_DEFAULT_NANOS6_HOME=${nanos6}", we could specify a default -# nanos6 installation, but this is would require a recompilation of clang each -# time nanos6 is changed. Better to use the environment variable NANOS6_HOME, -# and specify nanos6 at run time. - - src = builtins.fetchGit { - url = "ssh://git@bscpm02.bsc.es/llvm-ompss/llvm-mono.git"; - rev = "e1c73c3691d2685a99d99e14c6110d2c880662c6"; - ref = "master"; - }; -} From 599e504f1a5b0fc0f88472fd1bbc244b5eba0bd8 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 6 Jul 2020 15:58:09 +0200 Subject: [PATCH 061/987] Remove libgomp and libiomp from clang --- bsc/llvm-ompss2/clang.nix | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/bsc/llvm-ompss2/clang.nix b/bsc/llvm-ompss2/clang.nix index bc01b0a..f9d6d34 100644 --- a/bsc/llvm-ompss2/clang.nix +++ b/bsc/llvm-ompss2/clang.nix @@ -58,6 +58,12 @@ stdenv.mkDerivation rec { ) ''; + # Remove support for GNU and Intel Openmp + postInstall = '' + rm $out/lib/libgomp* + rm $out/lib/libiomp* + ''; + # About "-DCLANG_DEFAULT_NANOS6_HOME=${nanos6}", we could specify a default # nanos6 installation, but this is would require a recompilation of clang each # time nanos6 is changed. Better to use the environment variable NANOS6_HOME, From 6f06022aa5d672c4c9e1ae45cf87fa9b17e797a4 Mon Sep 17 00:00:00 2001 From: Rodrigo Date: Wed, 8 Jul 2020 12:16:59 +0200 Subject: [PATCH 062/987] Typo in git repo --- README | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README b/README index fbdbf98..d3d5eb7 100644 --- a/README +++ b/README @@ -111,7 +111,7 @@ Finally, you should be able to download the rarias/nanos6 git repository without any password interaction by running: - xeon07$ git clone git@bscpm02-bsc-es:rarias/nanos6.git + xeon07$ git clone git@bscpm02.bsc.es:rarias/nanos6.git 1.3 Prepare the bsc-nixpkgs repo @@ -125,7 +125,7 @@ Now you are set to install packages with nix. Clone the bsc-nixpkgs repository: - xeon07$ git clone git@bscpm02-bsc-es:rarias/bsc-nixpkgs.git + xeon07$ git clone git@bscpm02.bsc.es:rarias/bsc-nixpkgs.git Nix looks in the current folder for a file named "default.nix" for packages, so go to the repo: From 7b2c88be786c0c57b64ca9daff2abbd1abe6c20a Mon Sep 17 00:00:00 2001 From: Kevin Sala Date: Wed, 8 Jul 2020 13:33:45 +0200 Subject: [PATCH 063/987] Adding Gauss-Seidel benchmark. It does not work yet due to a gcc compilation issue. --- bsc/apps/gauss-seidel/default.nix | 38 +++++++++++++++++++++++++++++++ default.nix | 7 ++++++ 2 files changed, 45 insertions(+) create mode 100644 bsc/apps/gauss-seidel/default.nix diff --git a/bsc/apps/gauss-seidel/default.nix b/bsc/apps/gauss-seidel/default.nix new file mode 100644 index 0000000..035e017 --- /dev/null +++ b/bsc/apps/gauss-seidel/default.nix @@ -0,0 +1,38 @@ +{ + stdenv +, nanos6 +, mpi +, tampi +, mcxx +, icc +}: + +stdenv.mkDerivation rec { + name = "gauss-seidel"; + + src = builtins.fetchGit { + url = "ssh://git@bscpm02.bsc.es/benchmarks/ompss-2/heat-conflict-kevin.git"; + #rev = "25fde23e5ad5f5e2e58418ed269bc2b44642aa17"; + ref = "master"; + }; + + patchPhase = '' + sed -i 's/gcc/icc/g' Makefile + export NIX_DEBUG=6 + g++ --version + ''; + + buildInputs = [ + nanos6 + mpi + icc + tampi + mcxx + ]; + + installPhase = '' + mkdir -p $out/bin + cp heat_* $out/bin/ + ''; + +} diff --git a/default.nix b/default.nix index 683da82..9549f1a 100644 --- a/default.nix +++ b/default.nix @@ -118,6 +118,13 @@ let nanos6 = nanos6-git; }; + gauss-seidel = callPackage ./bsc/apps/gauss-seidel/default.nix { + stdenv = pkgs.gcc7Stdenv; + mpi = intel-mpi; + tampi = tampi; + nanos6 = nanos6-git; + }; + saiph = callPackage ./bsc/apps/saiph/default.nix { stdenv = stdenv-nanos6; mpi = intel-mpi; From 5df94bfc6631208665d843f20f34fccd61eb7865 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 8 Jul 2020 14:59:19 +0200 Subject: [PATCH 064/987] Use current gcc version with mcxx --- bsc/mcxx/default.nix | 7 ------- 1 file changed, 7 deletions(-) diff --git a/bsc/mcxx/default.nix b/bsc/mcxx/default.nix index 0424b32..511ea1e 100644 --- a/bsc/mcxx/default.nix +++ b/bsc/mcxx/default.nix @@ -26,13 +26,6 @@ stdenv.mkDerivation rec { enableParallelBuilding = true; - # Use full path for the backend compilers - preConfigure = '' - export GCC=${gcc}/bin/gcc - export GXX=${gcc}/bin/g++ - export GFORTRAN=${gfortran}/bin/gfortran - ''; - buildInputs = [ autoreconfHook nanos6 From fdc8b68d9afa31d229d88b28487e3e27e6cbb15f Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 8 Jul 2020 15:00:39 +0200 Subject: [PATCH 065/987] Disable libstdcxxHook --- bsc/intel-compiler/default.nix | 1 - 1 file changed, 1 deletion(-) diff --git a/bsc/intel-compiler/default.nix b/bsc/intel-compiler/default.nix index e51f63d..ff2336c 100644 --- a/bsc/intel-compiler/default.nix +++ b/bsc/intel-compiler/default.nix @@ -13,7 +13,6 @@ let inherit gcc; in wrapCCWith rec { cc = icc-unwrapped; - extraPackages = [ libstdcxxHook ]; extraBuildCommands = '' echo "-B${gcc.cc}/lib/gcc/${targetConfig}/${gcc.version}" >> $out/nix-support/cc-cflags echo "-L${gcc.cc}/lib/gcc/${targetConfig}/${gcc.version}" >> $out/nix-support/cc-ldflags From 114a6b081ffdd1536dd5e1553f7cf49629f6e54c Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 10 Jul 2020 13:17:45 +0200 Subject: [PATCH 066/987] Add icc in mcxx to enable imc* wrappers --- bsc/mcxx/default.nix | 2 ++ default.nix | 2 ++ 2 files changed, 4 insertions(+) diff --git a/bsc/mcxx/default.nix b/bsc/mcxx/default.nix index 511ea1e..e021e17 100644 --- a/bsc/mcxx/default.nix +++ b/bsc/mcxx/default.nix @@ -10,6 +10,7 @@ , flex , bison , gcc +, icc }: stdenv.mkDerivation rec { @@ -37,6 +38,7 @@ stdenv.mkDerivation rec { bison flex gcc + icc ]; configureFlags = [ diff --git a/default.nix b/default.nix index 9549f1a..87c3837 100644 --- a/default.nix +++ b/default.nix @@ -36,6 +36,7 @@ let }; # Default Intel MPI version is 2019 (the last one) + impi = intel-mpi; intel-mpi = intel-mpi-2019; intel-mpi-2019 = callPackage ./bsc/intel-mpi/default.nix { # Intel MPI provides a debug version of the MPI library, but @@ -70,6 +71,7 @@ let }; mcxx = callPackage ./bsc/mcxx/default.nix { + icc = icc; stdenv = pkgs.gcc9Stdenv; nanos6 = nanos6-git; }; From 0daa0b9c3542cea6f7827136eed917295cb1825a Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 10 Jul 2020 13:19:48 +0200 Subject: [PATCH 067/987] Remove patch phase for gauss seidel app --- bsc/apps/gauss-seidel/default.nix | 6 ------ 1 file changed, 6 deletions(-) diff --git a/bsc/apps/gauss-seidel/default.nix b/bsc/apps/gauss-seidel/default.nix index 035e017..6c32a90 100644 --- a/bsc/apps/gauss-seidel/default.nix +++ b/bsc/apps/gauss-seidel/default.nix @@ -16,12 +16,6 @@ stdenv.mkDerivation rec { ref = "master"; }; - patchPhase = '' - sed -i 's/gcc/icc/g' Makefile - export NIX_DEBUG=6 - g++ --version - ''; - buildInputs = [ nanos6 mpi From 261d304961f20f095fb9ef3ac2961674c590fdd9 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 10 Jul 2020 13:42:55 +0200 Subject: [PATCH 068/987] Add ifort to intel compilers --- bsc/intel-compiler/default.nix | 4 ++-- bsc/intel-compiler/icc2020.nix | 3 +++ default.nix | 5 +++-- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/bsc/intel-compiler/default.nix b/bsc/intel-compiler/default.nix index ff2336c..1a5dd83 100644 --- a/bsc/intel-compiler/default.nix +++ b/bsc/intel-compiler/default.nix @@ -5,7 +5,7 @@ , icc-unwrapped , wrapCCWith , libstdcxxHook -, icc-license +, intel-license }: let @@ -18,7 +18,7 @@ in wrapCCWith rec { echo "-L${gcc.cc}/lib/gcc/${targetConfig}/${gcc.version}" >> $out/nix-support/cc-ldflags echo "-L${gcc.cc.lib}/lib" >> $out/nix-support/cc-ldflags - echo "export INTEL_LICENSE_FILE=${icc-license}" \ + echo "export INTEL_LICENSE_FILE=${intel-license}" \ >> $out/nix-support/setup-hook # Create the wrappers for icc and icpc diff --git a/bsc/intel-compiler/icc2020.nix b/bsc/intel-compiler/icc2020.nix index b830d8e..6d92011 100644 --- a/bsc/intel-compiler/icc2020.nix +++ b/bsc/intel-compiler/icc2020.nix @@ -3,6 +3,7 @@ , rpmextract , autoPatchelfHook , gcc +, intel-mpi }: stdenv.mkDerivation rec { @@ -27,6 +28,7 @@ stdenv.mkDerivation rec { rpmextract autoPatchelfHook gcc.cc.lib + intel-mpi ]; installPhase = '' @@ -34,6 +36,7 @@ stdenv.mkDerivation rec { rpmextract rpm/intel-comp-*.rpm rpmextract rpm/intel-c-comp-*.rpm rpmextract rpm/intel-openmp*.rpm + rpmextract rpm/intel-ifort*.rpm mkdir -p $out/{bin,lib,include} diff --git a/default.nix b/default.nix index 87c3837..1e10e04 100644 --- a/default.nix +++ b/default.nix @@ -47,15 +47,16 @@ let # By default we use Intel compiler 2020 update 1 icc-unwrapped = icc2020-unwrapped; icc2020-unwrapped = callPackage ./bsc/intel-compiler/icc2020.nix { + intel-mpi = intel-mpi-2019; }; # A wrapper script that puts all the flags and environment vars properly and # calls the intel compiler binary icc = callPackage bsc/intel-compiler/default.nix { - inherit icc-unwrapped icc-license; + inherit icc-unwrapped intel-license; }; - icc-license = callPackage bsc/intel-compiler/license.nix { + intel-license = callPackage bsc/intel-compiler/license.nix { }; fftw = callPackage ./bsc/fftw/default.nix { From 7c68efe743cce3831d083e5af780f2fc440ac0e8 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 10 Jul 2020 16:42:33 +0200 Subject: [PATCH 069/987] mcxx: remove build dependency with icc --- bsc/mcxx/default.nix | 11 ++++++++--- bsc/mcxx/intel.patch | 19 +++++++++++++++++++ default.nix | 1 - 3 files changed, 27 insertions(+), 4 deletions(-) create mode 100644 bsc/mcxx/intel.patch diff --git a/bsc/mcxx/default.nix b/bsc/mcxx/default.nix index e021e17..7766567 100644 --- a/bsc/mcxx/default.nix +++ b/bsc/mcxx/default.nix @@ -10,7 +10,6 @@ , flex , bison , gcc -, icc }: stdenv.mkDerivation rec { @@ -38,12 +37,18 @@ stdenv.mkDerivation rec { bison flex gcc - icc ]; + patches = [ ./intel.patch ]; + + preConfigure = '' + export ICC=icc + export ICPC=icpc + export IFORT=ifort + ''; + configureFlags = [ "--enable-ompss-2" "--with-nanos6=${nanos6}" ]; - } diff --git a/bsc/mcxx/intel.patch b/bsc/mcxx/intel.patch new file mode 100644 index 0000000..85429cb --- /dev/null +++ b/bsc/mcxx/intel.patch @@ -0,0 +1,19 @@ +--- a/configure.ac 2020-07-10 16:15:11.431606455 +0200 ++++ b/configure.ac 2020-07-10 16:15:24.291586572 +0200 +@@ -367,16 +367,6 @@ + [ enable_intel_compilers="yes"]) + AC_MSG_RESULT([$enable_intel_compilers]) + +- +-IFORT= +-ICC= +-ICPC= +-if test x"$enable_intel_compilers" = x"yes"; +-then +- AC_CHECK_PROG([IFORT], [ifort], [ifort]) +- AC_CHECK_PROG([ICC], [icc], [icc]) +- AC_CHECK_PROG([ICPC], [icpc], [icpc]) +-fi + dnl --------------- END Intel Compilers --------------------- + + mic_compilation="no" diff --git a/default.nix b/default.nix index 1e10e04..3574ec0 100644 --- a/default.nix +++ b/default.nix @@ -72,7 +72,6 @@ let }; mcxx = callPackage ./bsc/mcxx/default.nix { - icc = icc; stdenv = pkgs.gcc9Stdenv; nanos6 = nanos6-git; }; From 577a7c3190ee2a0146b25b2235275c4d1c914c40 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 10 Jul 2020 16:49:39 +0200 Subject: [PATCH 070/987] Add CREAMS app --- bsc/apps/creams/default.nix | 41 +++++++++++++++++++++++++++++++++++++ default.nix | 9 ++++++++ 2 files changed, 50 insertions(+) create mode 100644 bsc/apps/creams/default.nix diff --git a/bsc/apps/creams/default.nix b/bsc/apps/creams/default.nix new file mode 100644 index 0000000..1819579 --- /dev/null +++ b/bsc/apps/creams/default.nix @@ -0,0 +1,41 @@ +{ + stdenv +, nanos6 +, mpi +, tampi +, mcxx +, icc +, strace +}: + +stdenv.mkDerivation rec { + name = "creams"; + + src = builtins.fetchGit { + url = "ssh://git@bscpm02.bsc.es/pmartin1/creams-simplified.git"; + ref = "MPI+OmpSs-2+TAMPI"; + }; + + buildInputs = [ + nanos6 + mpi + icc + tampi + mcxx + strace + ]; + + hardeningDisable = [ "all" ]; + + preBuild = '' + #export NIX_DEBUG=6 + export TAMPI_HOME=${tampi} + . etc/bashrc + ''; + + installPhase = '' + mkdir -p $out/bin + cp -a build/* $out/bin + ''; + +} diff --git a/default.nix b/default.nix index 3574ec0..7a40ddf 100644 --- a/default.nix +++ b/default.nix @@ -136,6 +136,15 @@ let boost = pkgs.boost; }; + creams = callPackage ./bsc/apps/creams/default.nix { + stdenv = pkgs.gcc9Stdenv; + mpi = intel-mpi; + tampi = tampi.override { + mpi = intel-mpi; + }; + nanos6 = nanos6-git; + }; + # Patched nix for deep cluster inherit (callPackage ./bsc/nix/default.nix { storeDir = "/nix/store"; From dc12cbe045334a9d85a6668e490cc1fb247309f3 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 10 Jul 2020 17:02:33 +0200 Subject: [PATCH 071/987] creams: Cleaning unused dependencies --- bsc/apps/creams/default.nix | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/bsc/apps/creams/default.nix b/bsc/apps/creams/default.nix index 1819579..3e8d822 100644 --- a/bsc/apps/creams/default.nix +++ b/bsc/apps/creams/default.nix @@ -5,7 +5,6 @@ , tampi , mcxx , icc -, strace }: stdenv.mkDerivation rec { @@ -22,13 +21,11 @@ stdenv.mkDerivation rec { icc tampi mcxx - strace ]; hardeningDisable = [ "all" ]; - preBuild = '' - #export NIX_DEBUG=6 + configurePhase = '' export TAMPI_HOME=${tampi} . etc/bashrc ''; From a78f0caec993c9ec014797d208c05c5955382c75 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 10 Jul 2020 17:04:21 +0200 Subject: [PATCH 072/987] intel: Enable ifort compiler --- bsc/intel-compiler/default.nix | 3 +++ bsc/intel-compiler/icc2020.nix | 1 + 2 files changed, 4 insertions(+) diff --git a/bsc/intel-compiler/default.nix b/bsc/intel-compiler/default.nix index 1a5dd83..946fa24 100644 --- a/bsc/intel-compiler/default.nix +++ b/bsc/intel-compiler/default.nix @@ -15,6 +15,8 @@ in wrapCCWith rec { cc = icc-unwrapped; extraBuildCommands = '' echo "-B${gcc.cc}/lib/gcc/${targetConfig}/${gcc.version}" >> $out/nix-support/cc-cflags + echo "-isystem ${icc-unwrapped}/include" >> $out/nix-support/cc-cflags + echo "-isystem ${icc-unwrapped}/include/intel64" >> $out/nix-support/cc-cflags echo "-L${gcc.cc}/lib/gcc/${targetConfig}/${gcc.version}" >> $out/nix-support/cc-ldflags echo "-L${gcc.cc.lib}/lib" >> $out/nix-support/cc-ldflags @@ -24,5 +26,6 @@ in wrapCCWith rec { # Create the wrappers for icc and icpc wrap icc $wrapper $ccPath/icc wrap icpc $wrapper $ccPath/icpc + wrap ifort $wrapper $ccPath/ifort ''; } diff --git a/bsc/intel-compiler/icc2020.nix b/bsc/intel-compiler/icc2020.nix index 6d92011..08c6906 100644 --- a/bsc/intel-compiler/icc2020.nix +++ b/bsc/intel-compiler/icc2020.nix @@ -44,6 +44,7 @@ stdenv.mkDerivation rec { cp -a bin/intel64/* $out/bin/ cp -a compiler/include/* $out/include/ cp -a compiler/lib/intel64_lin/* $out/lib/ + ln -s lib $out/lib_lin rm $out/lib/*.dbg popd ''; From 99b716db87f9b33ed5a8c6eb01d03ea4fa9f963a Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 13 Jul 2020 14:07:24 +0200 Subject: [PATCH 073/987] icc: Propagate gcc as is required to build --- bsc/intel-compiler/default.nix | 3 +++ bsc/intel-compiler/icc2020.nix | 4 ++++ 2 files changed, 7 insertions(+) diff --git a/bsc/intel-compiler/default.nix b/bsc/intel-compiler/default.nix index 946fa24..2c6f82b 100644 --- a/bsc/intel-compiler/default.nix +++ b/bsc/intel-compiler/default.nix @@ -20,6 +20,9 @@ in wrapCCWith rec { echo "-L${gcc.cc}/lib/gcc/${targetConfig}/${gcc.version}" >> $out/nix-support/cc-ldflags echo "-L${gcc.cc.lib}/lib" >> $out/nix-support/cc-ldflags + cat "${icc-unwrapped}/nix-support/propagated-build-inputs" >> \ + $out/nix-support/propagated-build-inputs + echo "export INTEL_LICENSE_FILE=${intel-license}" \ >> $out/nix-support/setup-hook diff --git a/bsc/intel-compiler/icc2020.nix b/bsc/intel-compiler/icc2020.nix index 08c6906..b25ee37 100644 --- a/bsc/intel-compiler/icc2020.nix +++ b/bsc/intel-compiler/icc2020.nix @@ -28,9 +28,13 @@ stdenv.mkDerivation rec { rpmextract autoPatchelfHook gcc.cc.lib + gcc intel-mpi ]; + # The gcc package is required for building other programs + propagatedBuildInputs = [ gcc ]; + installPhase = '' rpmextract rpm/intel-icc-*.rpm rpmextract rpm/intel-comp-*.rpm From 3298c5442ca10507bf5f662910d09e50ff642e8a Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 13 Jul 2020 14:09:20 +0200 Subject: [PATCH 074/987] Add lulesh app --- bsc/apps/lulesh/default.nix | 31 +++++++++++++++++++++++++++++++ default.nix | 4 ++++ 2 files changed, 35 insertions(+) create mode 100644 bsc/apps/lulesh/default.nix diff --git a/bsc/apps/lulesh/default.nix b/bsc/apps/lulesh/default.nix new file mode 100644 index 0000000..7d8d487 --- /dev/null +++ b/bsc/apps/lulesh/default.nix @@ -0,0 +1,31 @@ +{ + stdenv +, mpi +, mcxx +, icc +}: + +stdenv.mkDerivation rec { + name = "lulesh"; + + src = builtins.fetchGit { + url = "ssh://git@bscpm02.bsc.es/mmaronas/lulesh.git"; + ref = "master"; + }; + + dontConfigure = true; + + buildInputs = [ + mpi + icc + mcxx + ]; + + enableParallelBuilding = true; + + installPhase = '' + mkdir -p $out/bin + find . -name 'lulesh*' -type f -executable -exec cp \{\} $out/bin/ \; + ''; + +} diff --git a/default.nix b/default.nix index 7a40ddf..ad7c974 100644 --- a/default.nix +++ b/default.nix @@ -145,6 +145,10 @@ let nanos6 = nanos6-git; }; + lulesh = callPackage ./bsc/apps/lulesh/default.nix { + mpi = intel-mpi; + }; + # Patched nix for deep cluster inherit (callPackage ./bsc/nix/default.nix { storeDir = "/nix/store"; From 0b2f9df3ea9bdb42a7ccf924e2919d381c6a7af8 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 13 Jul 2020 16:45:36 +0200 Subject: [PATCH 075/987] lulesh: Use nanos6 from git --- default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/default.nix b/default.nix index ad7c974..712e043 100644 --- a/default.nix +++ b/default.nix @@ -147,6 +147,7 @@ let lulesh = callPackage ./bsc/apps/lulesh/default.nix { mpi = intel-mpi; + nanos6 = nanos6-git; }; # Patched nix for deep cluster From cd409677b02cbeff2aa994f82e9a5fb879eadf2f Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 13 Jul 2020 16:46:44 +0200 Subject: [PATCH 076/987] Add hpcg app --- bsc/apps/hpcg/default.nix | 46 +++++++++++++++++++++++++++++++++++++++ default.nix | 8 +++++++ 2 files changed, 54 insertions(+) create mode 100644 bsc/apps/hpcg/default.nix diff --git a/bsc/apps/hpcg/default.nix b/bsc/apps/hpcg/default.nix new file mode 100644 index 0000000..f311804 --- /dev/null +++ b/bsc/apps/hpcg/default.nix @@ -0,0 +1,46 @@ +{ + stdenv +, nanos6 +, mpi +, mcxx +, tampi +, icc +}: + +stdenv.mkDerivation rec { + name = "hpcg"; + + src = builtins.fetchGit { + url = "ssh://git@bscpm02.bsc.es/rpenacob/hpcg.git"; + ref = "symgs_coloring_more_than_one_block_per_task_halos_blocking_discreete"; + }; + + prePatch = '' + #export NIX_DEBUG=6 + ''; + + patches = [ ./tampi.patch ]; + + buildInputs = [ + nanos6 + mpi + icc + tampi + mcxx + ]; + + enableParallelBuilding = true; + + configurePhase = '' + export TAMPI_HOME=${tampi} + mkdir build + cd build + ../configure MPI_ICPC_OSS + ''; + + installPhase = '' + mkdir -p $out/bin + cp bin/* $out/bin/ + ''; + +} diff --git a/default.nix b/default.nix index 712e043..5e66368 100644 --- a/default.nix +++ b/default.nix @@ -150,6 +150,14 @@ let nanos6 = nanos6-git; }; + hpcg = callPackage ./bsc/apps/hpcg/default.nix { + mpi = intel-mpi; + nanos6 = nanos6-git; + tampi = tampi.override { + mpi = intel-mpi; + }; + }; + # Patched nix for deep cluster inherit (callPackage ./bsc/nix/default.nix { storeDir = "/nix/store"; From d634538223bca6a9720c1e9a8114fc0558dd2dc8 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 15 Jul 2020 12:21:48 +0200 Subject: [PATCH 077/987] Use upstream nanos6 from git and disable hardening The bindnow hardening option is incompatible with the ifunc symbol resolution mechanism. All hardening is disabled as well. --- bsc/nanos6/git.nix | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/bsc/nanos6/git.nix b/bsc/nanos6/git.nix index 53a9a7f..c540596 100644 --- a/bsc/nanos6/git.nix +++ b/bsc/nanos6/git.nix @@ -16,30 +16,26 @@ with stdenv.lib; stdenv.mkDerivation rec { pname = "nanos6"; - version = "2.4+nix_526b0e14"; + version = "2.4-${src.shortRev}"; branch = "master"; cacheline-width = "64"; src = builtins.fetchGit { - url = "ssh://git@bscpm02.bsc.es/rarias/nanos6"; - rev = "a8372abf9fc7cbc2db0778de80512ad4af244c29"; + url = "ssh://git@bscpm02.bsc.es/nanos6/nanos6"; ref = branch; }; enableParallelBuilding = true; - patchPhase = '' - export NANOS6_GIT_VERSION=${src.rev} - export NANOS6_GIT_BRANCH=${branch} - scripts/gen-version.sh - ''; preConfigure = '' export CACHELINE_WIDTH=${cacheline-width} + export NANOS6_GIT_VERSION=${src.rev} + export NANOS6_GIT_BRANCH=${branch} ''; - configureFlags = [ - "--with-symbol-resolution=indirect" - ]; + # The "bindnow" flags are incompatible with ifunc resolution mechanism. We + # disable all by default, which includes bindnow. + hardeningDisable = [ "all" ]; buildInputs = [ autoreconfHook @@ -52,5 +48,4 @@ stdenv.mkDerivation rec { hwloc papi ] ++ (if (extrae != null) then [extrae] else []); - } From 11b165261721a469db34d3f25654911ae2ac8214 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 20 Jul 2020 11:59:58 +0200 Subject: [PATCH 078/987] Unify package versions --- default.nix | 35 +++++++++++++++-------------------- 1 file changed, 15 insertions(+), 20 deletions(-) diff --git a/default.nix b/default.nix index 5e66368..e7e6f76 100644 --- a/default.nix +++ b/default.nix @@ -11,20 +11,23 @@ let # Load the default implementation #mpi = pkgs.mpich; #mpi = pkgs.openmpi; - mpi = openmpi; # Our OpenMPI variant - #mpi = intel-mpi; + #mpi = openmpi; # Our OpenMPI variant + mpi = intel-mpi; # Load the default compiler #stdenv = pkgs.gcc10Stdenv; - #stdenv = pkgs.gcc9Stdenv; + stdenv = pkgs.gcc9Stdenv; #stdenv = pkgs.gcc7Stdenv; - stdenv = pkgs.llvmPackages_10.stdenv; + #stdenv = pkgs.llvmPackages_10.stdenv; #stdenv = pkgs.llvmPackages_9.stdenv; #stdenv = pkgs.llvmPackages_8.stdenv; #stdenv = pkgs.llvmPackages_7.stdenv; binutils = pkgs.binutils; coreutils = pkgs.coreutils; + gcc = stdenv.cc; + + nanos6 = nanos6-git; # --------------------------------------------------------- # # BSC Packages @@ -72,11 +75,12 @@ let }; mcxx = callPackage ./bsc/mcxx/default.nix { - stdenv = pkgs.gcc9Stdenv; - nanos6 = nanos6-git; }; - nanos6 = callPackage ./bsc/nanos6/default.nix { + mcxx-rarias = callPackage ./bsc/mcxx/rarias.nix { + }; + + nanos6-latest = callPackage ./bsc/nanos6/default.nix { extrae = extrae; }; @@ -84,6 +88,10 @@ let extrae = extrae; }; + nanos6-rarias = callPackage ./bsc/nanos6/rarias.nix { + extrae = extrae; + }; + vtk = callPackage ./bsc/vtk/default.nix { mpi = mpi; inherit (pkgs.xorg) libX11 xorgproto libXt; @@ -98,7 +106,6 @@ let }; clang-ompss2 = callPackage bsc/llvm-ompss2/default.nix { - nanos6 = nanos6-git; inherit clang-ompss2-unwrapped; }; @@ -108,7 +115,6 @@ let cpic = callPackage ./bsc/apps/cpic/default.nix { stdenv = stdenv-nanos6; - nanos6 = nanos6-git; inherit mpi tampi; }; @@ -117,21 +123,18 @@ let stdenv = pkgs.gcc9Stdenv; mpi = intel-mpi; tampi = tampi; - nanos6 = nanos6-git; }; gauss-seidel = callPackage ./bsc/apps/gauss-seidel/default.nix { stdenv = pkgs.gcc7Stdenv; mpi = intel-mpi; tampi = tampi; - nanos6 = nanos6-git; }; saiph = callPackage ./bsc/apps/saiph/default.nix { stdenv = stdenv-nanos6; mpi = intel-mpi; tampi = tampi; - nanos6 = nanos6-git; inherit vtk; boost = pkgs.boost; }; @@ -142,20 +145,13 @@ let tampi = tampi.override { mpi = intel-mpi; }; - nanos6 = nanos6-git; }; lulesh = callPackage ./bsc/apps/lulesh/default.nix { mpi = intel-mpi; - nanos6 = nanos6-git; }; hpcg = callPackage ./bsc/apps/hpcg/default.nix { - mpi = intel-mpi; - nanos6 = nanos6-git; - tampi = tampi.override { - mpi = intel-mpi; - }; }; # Patched nix for deep cluster @@ -175,7 +171,6 @@ let clang-ompss2 = callPackage ./test/compilers/clang-ompss2.nix { stdenv = stdenv-nanos6; - nanos6 = nanos6-git; inherit clang-ompss2; }; }; From 3b23b230ed2891017e69359c76167d48c9db3202 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 20 Jul 2020 12:04:15 +0200 Subject: [PATCH 079/987] Add hpccg app --- bsc/apps/hpccg/default.nix | 42 ++++++++++++++++++++++++++++++++++++++ default.nix | 3 +++ 2 files changed, 45 insertions(+) create mode 100644 bsc/apps/hpccg/default.nix diff --git a/bsc/apps/hpccg/default.nix b/bsc/apps/hpccg/default.nix new file mode 100644 index 0000000..7906f07 --- /dev/null +++ b/bsc/apps/hpccg/default.nix @@ -0,0 +1,42 @@ +{ + stdenv +, nanos6 +, mpi +, mcxx +, tampi +, icc +}: + +stdenv.mkDerivation rec { + name = "hpccg"; + + src = builtins.fetchGit { + url = "ssh://git@bscpm02.bsc.es/mmaronas/HPCCG.git"; + ref = "mmaronas-development"; + }; + + buildInputs = [ + nanos6 + mpi + icc + tampi + mcxx + ]; + + # The hpccg app fails to compile in parallel. Makefile must be fixed before. + enableParallelBuilding = false; + + postPatch = '' + sed -i 's/mpic++/mpiicpc/g' Makefile + mkdir obj + ''; + + makeFlags = [ + "USE_MPI=-DUSING_MPI" + "TAMPI_HOME=${tampi}" + ]; + + installPhase = '' + mkdir -p $out/bin + ''; +} diff --git a/default.nix b/default.nix index e7e6f76..9675c4a 100644 --- a/default.nix +++ b/default.nix @@ -154,6 +154,9 @@ let hpcg = callPackage ./bsc/apps/hpcg/default.nix { }; + hpccg = callPackage ./bsc/apps/hpccg/default.nix { + }; + # Patched nix for deep cluster inherit (callPackage ./bsc/nix/default.nix { storeDir = "/nix/store"; From 321bfa290c74589ae9e866d929d59c2e65e5809a Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 20 Jul 2020 12:06:22 +0200 Subject: [PATCH 080/987] Set serial compiler to Intel --- bsc/apps/hpccg/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/bsc/apps/hpccg/default.nix b/bsc/apps/hpccg/default.nix index 7906f07..2db4689 100644 --- a/bsc/apps/hpccg/default.nix +++ b/bsc/apps/hpccg/default.nix @@ -28,6 +28,7 @@ stdenv.mkDerivation rec { postPatch = '' sed -i 's/mpic++/mpiicpc/g' Makefile + sed -i 's/g++/icpc/g' Makefile mkdir obj ''; From 81bcf20419f6052400303e821152a038391a41ac Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 20 Jul 2020 12:39:39 +0200 Subject: [PATCH 081/987] hpccg: Copy binaries to output --- bsc/apps/hpccg/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/bsc/apps/hpccg/default.nix b/bsc/apps/hpccg/default.nix index 2db4689..55db352 100644 --- a/bsc/apps/hpccg/default.nix +++ b/bsc/apps/hpccg/default.nix @@ -39,5 +39,6 @@ stdenv.mkDerivation rec { installPhase = '' mkdir -p $out/bin + cp test_HPCCG* $out/bin ''; } From c50158e3beee77ca315dda84949a221c0dbede1c Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 20 Jul 2020 12:58:54 +0200 Subject: [PATCH 082/987] Add fwi app --- bsc/apps/fwi/default.nix | 33 +++++++++++++++++++++++++++++++++ default.nix | 3 +++ 2 files changed, 36 insertions(+) create mode 100644 bsc/apps/fwi/default.nix diff --git a/bsc/apps/fwi/default.nix b/bsc/apps/fwi/default.nix new file mode 100644 index 0000000..3909bf3 --- /dev/null +++ b/bsc/apps/fwi/default.nix @@ -0,0 +1,33 @@ +{ + stdenv +, nanos6 +, mpi +, tampi +, mcxx +, icc +}: + +stdenv.mkDerivation rec { + name = "nbody"; + + src = builtins.fetchGit { + url = "https://gitlab.com/srodrb/BSC-FWI.git"; + ref = "ompss"; + }; + + postUnpack = "sourceRoot=$sourceRoot/3_ompss"; + + buildInputs = [ + nanos6 + mpi + icc + tampi + mcxx + ]; + + installPhase = '' + mkdir -p $out/bin + cp fwi.* $out/bin + cp ModelGenerator $out/bin + ''; +} diff --git a/default.nix b/default.nix index 9675c4a..1aaa754 100644 --- a/default.nix +++ b/default.nix @@ -157,6 +157,9 @@ let hpccg = callPackage ./bsc/apps/hpccg/default.nix { }; + fwi = callPackage ./bsc/apps/fwi/default.nix { + }; + # Patched nix for deep cluster inherit (callPackage ./bsc/nix/default.nix { storeDir = "/nix/store"; From 60fdba40ae6e81231308bfeb38ca528c23ed1468 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 20 Jul 2020 15:32:00 +0200 Subject: [PATCH 083/987] fwi: Use 4_MPI_ompss variant. The -D_GNU_SOURCE define is required before mcc includes nanos6.h --- bsc/apps/fwi/default.nix | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/bsc/apps/fwi/default.nix b/bsc/apps/fwi/default.nix index 3909bf3..2a97508 100644 --- a/bsc/apps/fwi/default.nix +++ b/bsc/apps/fwi/default.nix @@ -9,13 +9,16 @@ stdenv.mkDerivation rec { name = "nbody"; + variant = "4_MPI_ompss"; src = builtins.fetchGit { url = "https://gitlab.com/srodrb/BSC-FWI.git"; - ref = "ompss"; + ref = "ompss-mpi-nocache"; }; - postUnpack = "sourceRoot=$sourceRoot/3_ompss"; + postUnpack = "sourceRoot=$sourceRoot/${variant}"; + + enableParallelBuilding = true; buildInputs = [ nanos6 @@ -25,6 +28,22 @@ stdenv.mkDerivation rec { mcxx ]; + # FIXME: This is an ugly hack. + # When using _GNU_SOURCE or any other definition used in features.h, we need + # to define them before mcc includes nanos6.h from the command line. So the + # only chance is by setting it at the command line with -D. Using the DEFINES + # below, reaches the command line of the preprocessing stage with gcc. + preBuild = '' + export DEFINES=-D_GNU_SOURCE + ''; + + makeFlags = [ + "NZF=108" + "NXF=108" + "NYF=208" + "PRECISION=float" + ]; + installPhase = '' mkdir -p $out/bin cp fwi.* $out/bin From 528cd7d2058e22a5369c1c59563291208d71698a Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 20 Jul 2020 15:58:06 +0200 Subject: [PATCH 084/987] hpcg: Missing TAMPI patch --- bsc/apps/hpcg/tampi.patch | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 bsc/apps/hpcg/tampi.patch diff --git a/bsc/apps/hpcg/tampi.patch b/bsc/apps/hpcg/tampi.patch new file mode 100644 index 0000000..c233dfc --- /dev/null +++ b/bsc/apps/hpcg/tampi.patch @@ -0,0 +1,13 @@ +--- a/setup/Make.MPI_ICPC_OSS 2020-07-13 16:02:33.272257865 +0200 ++++ b/setup/Make.MPI_ICPC_OSS 2020-07-13 16:04:34.344413390 +0200 +@@ -91,8 +91,8 @@ + # - HPCG includes / libraries / specifics ------------------------------- + # ---------------------------------------------------------------------- + # +-HPCG_INCLUDES = -I$(INCdir) -I$(INCdir)/$(arch) $(MPinc) -I{TAMPI_HOME}/include +-HPCG_LIBS = ${TAMPI_HOME}/lib/libtampi.a ++HPCG_INCLUDES = -I$(INCdir) -I$(INCdir)/$(arch) $(MPinc) -I$(TAMPI_HOME)/include ++HPCG_LIBS = -l:libtampi.a + # + # - Compile time options ----------------------------------------------- + # From ba13d376943a767c6464d69bb88254ffba3e8205 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 20 Jul 2020 16:05:32 +0200 Subject: [PATCH 085/987] Remove custom nanos6 --- default.nix | 4 ---- 1 file changed, 4 deletions(-) diff --git a/default.nix b/default.nix index 1aaa754..23215e9 100644 --- a/default.nix +++ b/default.nix @@ -88,10 +88,6 @@ let extrae = extrae; }; - nanos6-rarias = callPackage ./bsc/nanos6/rarias.nix { - extrae = extrae; - }; - vtk = callPackage ./bsc/vtk/default.nix { mpi = mpi; inherit (pkgs.xorg) libX11 xorgproto libXt; From f20ef93c5661e3ca2bd32ebcc60034c524a64558 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 20 Jul 2020 16:06:00 +0200 Subject: [PATCH 086/987] impi: allow echo as compiler for mpitool --- bsc/intel-mpi/mpicc.patch | 4 ++-- bsc/intel-mpi/mpicxx.patch | 12 ++++++------ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/bsc/intel-mpi/mpicc.patch b/bsc/intel-mpi/mpicc.patch index 953b4f7..c98dffb 100644 --- a/bsc/intel-mpi/mpicc.patch +++ b/bsc/intel-mpi/mpicc.patch @@ -5,7 +5,7 @@ case "${compiler_short_name}" in icc) $dir/mpiicc -cc=$compiler_name "$@" ;; - cc|*gcc*) $dir/mpigcc -cc=$compiler_name "$@" ;; -+ cc|*gcc*|mcc|clang) $dir/mpigcc -cc=$compiler_name "$@" ;; ++ cc|*gcc*|mcc|clang|echo) $dir/mpigcc -cc=$compiler_name "$@" ;; mpicc) $dir/mpigcc "$@" ;; *) echo "Error: unsupported compiler name '$compiler_name'." @@ -14,7 +14,7 @@ case "${compiler_short_name}" in icc) $dir/mpiicc -cc=$compiler_name "$@" $opt_args ;; - cc|*gcc*) $dir/mpigcc -cc=$compiler_name "$@" $opt_args ;; -+ cc|*gcc*|mcc|clang) $dir/mpigcc -cc=$compiler_name "$@" $opt_args ;; ++ cc|*gcc*|mcc|clang|echo) $dir/mpigcc -cc=$compiler_name "$@" $opt_args ;; mpicc) $dir/mpigcc "$@" $opt_args ;; *) echo "Error: unsupported compiler name '$compiler_name'." diff --git a/bsc/intel-mpi/mpicxx.patch b/bsc/intel-mpi/mpicxx.patch index a386007..16602f8 100644 --- a/bsc/intel-mpi/mpicxx.patch +++ b/bsc/intel-mpi/mpicxx.patch @@ -7,9 +7,9 @@ - icc|icpc) $dir/mpiicpc -cxx=$compiler_name "$@" ;; - *g++*) $dir/mpigxx -cxx=$compiler_name "$@" ;; - mpicxx) $dir/mpigxx "$@" ;; -+ icc|icpc) $dir/mpiicpc -cxx=$compiler_name "$@" ;; -+ *g++*|clang*++|mcxx) $dir/mpigxx -cxx=$compiler_name "$@" ;; -+ mpicxx) $dir/mpigxx "$@" ;; ++ icc|icpc) $dir/mpiicpc -cxx=$compiler_name "$@" ;; ++ *g++*|clang*++|mcxx|echo) $dir/mpigxx -cxx=$compiler_name "$@" ;; ++ mpicxx) $dir/mpigxx "$@" ;; *) echo "Error: unsupported compiler name '$compiler_name'." echo "Check -cxx= command line option and I_MPI_CXX='$I_MPI_CXX' and MPICH_CXX='$MPICH_CXX' variables."; @@ -20,9 +20,9 @@ - icc|icpc) $dir/mpiicpc -cxx=$compiler_name "$@" $opt_args ;; - *g++*) $dir/mpigxx -cxx=$compiler_name "$@" $opt_args ;; - mpicxx) $dir/mpigxx "$@" $opt_args ;; -+ icc|icpc) $dir/mpiicpc -cxx=$compiler_name "$@" $opt_args ;; -+ *g++*|clang*++|mcxx) $dir/mpigxx -cxx=$compiler_name "$@" $opt_args ;; -+ mpicxx) $dir/mpigxx "$@" $opt_args ;; ++ icc|icpc) $dir/mpiicpc -cxx=$compiler_name "$@" $opt_args ;; ++ *g++*|clang*++|mcxx|echo) $dir/mpigxx -cxx=$compiler_name "$@" $opt_args ;; ++ mpicxx) $dir/mpigxx "$@" $opt_args ;; *) echo "Error: unsupported compiler name '$compiler_name'." echo "Check -cxx= command line option and I_MPI_CXX='$I_MPI_CXX' and MPICH_CXX='$MPICH_CXX' variables."; From b8d15e7d84202a65d542036d7e27088be7d2b872 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 20 Jul 2020 16:07:26 +0200 Subject: [PATCH 087/987] Ignore source folder --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 1fd51a1..c0199ee 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ +source result **.swp From ca0c1445ba7bda712d971ab1e9639aebbb13edfb Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 20 Jul 2020 16:08:15 +0200 Subject: [PATCH 088/987] Add custom mcxx version --- bsc/mcxx/rarias.nix | 58 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 bsc/mcxx/rarias.nix diff --git a/bsc/mcxx/rarias.nix b/bsc/mcxx/rarias.nix new file mode 100644 index 0000000..47a5f6c --- /dev/null +++ b/bsc/mcxx/rarias.nix @@ -0,0 +1,58 @@ +{ stdenv +, fetchgit +, autoreconfHook +, nanos6 +, gperf +, python +, gfortran +, pkg-config +, sqlite +, flex +, bison +, gcc +}: + +stdenv.mkDerivation rec { + name = "mcxx-rarias"; + #version attribute ignored when using fetchgit: + #version = "2.2.0-70a299cf"; + + #src = /home/Computational/rarias/mcxx; + src = builtins.fetchGit { + url = "ssh://git@bscpm02.bsc.es/rarias/mcxx"; + rev = "44129a6ac05b8f78b06e9e2eff71438b5ca4d29f"; + }; + + enableParallelBuilding = true; + + buildInputs = [ + autoreconfHook + nanos6 + gperf + python + gfortran + pkg-config + sqlite.dev + bison + flex + gcc + ]; + + patches = [ ./intel.patch ]; + + preConfigure = '' + export ICC=icc + export ICPC=icpc + export IFORT=ifort + ''; + + configureFlags = [ + "--enable-ompss-2" + "--with-nanos6=${nanos6}" + ]; + + # Regenerate ia32 builtins to add the ones for gcc9 + #preBuild = '' + # make generate_builtins_ia32 GXX_X86_BUILTINS=${gcc}/bin/g++ + #''; +} From f07d87e97e46e1212e8ac72b7de50ae6c35d0510 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 20 Jul 2020 16:05:00 +0200 Subject: [PATCH 089/987] impi: fix sed path and add link to intel64 --- bsc/intel-mpi/default.nix | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/bsc/intel-mpi/default.nix b/bsc/intel-mpi/default.nix index a1ea2e3..55b45b6 100644 --- a/bsc/intel-mpi/default.nix +++ b/bsc/intel-mpi/default.nix @@ -2,7 +2,6 @@ , requireFile , rpmextract , libfabric -, patchelf , gcc , zlib , autoPatchelfHook @@ -36,7 +35,6 @@ stdenv.mkDerivation rec { buildInputs = [ rpmextract libfabric - patchelf autoPatchelfHook gcc.cc.lib zlib @@ -54,9 +52,12 @@ stdenv.mkDerivation rec { ]; postPatch = '' - for i in bin/mpi* ; do - sed -i "s:I_MPI_SUBSTITUTE_INSTALLDIR:$out:g" $i - done + pushd opt/intel/compilers_and_libraries_2020.1.217/linux/mpi/intel64/bin + for i in mpi* ; do + echo "Fixing paths in $i" + sed -i "s:I_MPI_SUBSTITUTE_INSTALLDIR:$out:g" "$i" + done + popd ''; dontBuild = true; @@ -70,6 +71,7 @@ stdenv.mkDerivation rec { mkdir $out/lib cp -a lib/lib* $out/lib cp -a lib/${lib_variant}_mt/lib* $out/lib + ln -s . $out/intel64 rm $out/lib/libmpi.dbg ''; } From ab0aa7459016dddbad443c90c087e8fd893a49d4 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 20 Jul 2020 17:31:07 +0200 Subject: [PATCH 090/987] Add garlic group with all apps --- default.nix | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/default.nix b/default.nix index 23215e9..df6f9a7 100644 --- a/default.nix +++ b/default.nix @@ -156,6 +156,12 @@ let fwi = callPackage ./bsc/apps/fwi/default.nix { }; + garlic = pkgs.buildEnv { + name = "garlic"; + paths = [ nbody gauss-seidel saiph creams lulesh hpcg hpccg fwi ]; + }; + + # Patched nix for deep cluster inherit (callPackage ./bsc/nix/default.nix { storeDir = "/nix/store"; From 10b061aa96c5ff0bd75938ba0277d06226773f30 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 21 Jul 2020 09:33:41 +0200 Subject: [PATCH 091/987] icc: Fix updated url --- bsc/intel-compiler/icc2020.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bsc/intel-compiler/icc2020.nix b/bsc/intel-compiler/icc2020.nix index b25ee37..e88f67e 100644 --- a/bsc/intel-compiler/icc2020.nix +++ b/bsc/intel-compiler/icc2020.nix @@ -11,7 +11,7 @@ stdenv.mkDerivation rec { name = "intel-compiler-${version}"; # From Arch Linux PKGBUILD - dir_nr="16527"; + dir_nr="16526"; year="2020"; v_a="1"; v_b="217"; From 1e54fbdc43edf9dc7f5f3734fec9b8754626673f Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 21 Jul 2020 16:31:31 +0200 Subject: [PATCH 092/987] Fix libcxx include path --- bsc/intel-compiler/default.nix | 1 - bsc/llvm-ompss2/clang.nix | 2 +- bsc/llvm-ompss2/default.nix | 10 ++++++++-- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/bsc/intel-compiler/default.nix b/bsc/intel-compiler/default.nix index 2c6f82b..14ae4b8 100644 --- a/bsc/intel-compiler/default.nix +++ b/bsc/intel-compiler/default.nix @@ -4,7 +4,6 @@ , nanos6 , icc-unwrapped , wrapCCWith -, libstdcxxHook , intel-license }: diff --git a/bsc/llvm-ompss2/clang.nix b/bsc/llvm-ompss2/clang.nix index f9d6d34..b418760 100644 --- a/bsc/llvm-ompss2/clang.nix +++ b/bsc/llvm-ompss2/clang.nix @@ -18,7 +18,7 @@ stdenv.mkDerivation rec { version = "11.0.0"; pname = "clang-ompss2"; enableParallelBuilding = true; - #isClang = true; + isClang = true; #isGNU = true; isClangWithOmpss = true; diff --git a/bsc/llvm-ompss2/default.nix b/bsc/llvm-ompss2/default.nix index fdd789a..78c7e94 100644 --- a/bsc/llvm-ompss2/default.nix +++ b/bsc/llvm-ompss2/default.nix @@ -4,7 +4,6 @@ , nanos6 , clang-ompss2-unwrapped , wrapCCWith -, libstdcxxHook }: @@ -13,12 +12,19 @@ let inherit gcc nanos6; in wrapCCWith rec { cc = clang-ompss2-unwrapped; - extraPackages = [ libstdcxxHook ]; extraBuildCommands = '' echo "-target ${targetConfig}" >> $out/nix-support/cc-cflags echo "-B${gcc.cc}/lib/gcc/${targetConfig}/${gcc.version}" >> $out/nix-support/cc-cflags echo "-L${gcc.cc}/lib/gcc/${targetConfig}/${gcc.version}" >> $out/nix-support/cc-ldflags echo "-L${gcc.cc.lib}/lib" >> $out/nix-support/cc-ldflags + + for dir in ${gcc.cc}/include/c++/*; do + echo "-isystem $dir" >> $out/nix-support/libcxx-cxxflags + done + for dir in ${gcc.cc}/include/c++/*/${targetConfig}; do + echo "-isystem $dir" >> $out/nix-support/libcxx-cxxflags + done + echo "--gcc-toolchain=${gcc}" >> $out/nix-support/cc-cflags echo "# Hack to include NANOS6_HOME" >> $out/nix-support/setup-hook From 0a09affbc4634d3c605c33ca39a83f338284ee17 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Date: Thu, 23 Jul 2020 18:47:20 +0200 Subject: [PATCH 093/987] impi: use fetchTarball --- bsc/intel-mpi/default.nix | 21 ++++----------------- 1 file changed, 4 insertions(+), 17 deletions(-) diff --git a/bsc/intel-mpi/default.nix b/bsc/intel-mpi/default.nix index 55b45b6..38608b7 100644 --- a/bsc/intel-mpi/default.nix +++ b/bsc/intel-mpi/default.nix @@ -1,5 +1,4 @@ { stdenv -, requireFile , rpmextract , libfabric , gcc @@ -11,25 +10,13 @@ stdenv.mkDerivation rec { name = "intel-mpi-${version}"; version = "2019.7.217"; + dir_nr = "16546"; lib_variant = (if enableDebug then "debug" else "release"); - src = requireFile { - name = "l_mpi_2019.7.217.tgz"; - sha256 = "01wwmiqff5lad7cdi8i57bs3kiphpjfv52sxll1w0jpq4c03nf4h"; - message = '' - The package with Intel MPI cannot be redistributed freely, so you must do it - manually. Go to: - - https://software.intel.com/content/www/us/en/develop/tools/mpi-library.html - - And register in order to download Intel MPI (is free of charge). Then you will - be allowed to download it. Copy the url and use: - - nix-prefetch-url http://registrationcenter-download.intel.com/...../l_mpi_2019.7.217.tgz - - To add it to the store. Then try again building this derivation. - ''; + src = builtins.fetchTarball { + url = "http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/${dir_nr}/l_mpi_${version}.tgz"; + sha256 = "19l995aavbn5lkiz9sxl6iwmjsrvjgjp14nn0qi1hjqs705db5li"; }; buildInputs = [ From 215b104174e7bdcf9dfe6727683261eea54d036f Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 23 Jul 2020 19:00:03 +0200 Subject: [PATCH 094/987] icc: use fetchTarball --- bsc/intel-compiler/icc2020.nix | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/bsc/intel-compiler/icc2020.nix b/bsc/intel-compiler/icc2020.nix index e88f67e..6a82902 100644 --- a/bsc/intel-compiler/icc2020.nix +++ b/bsc/intel-compiler/icc2020.nix @@ -1,5 +1,4 @@ { stdenv -, fetchurl , rpmextract , autoPatchelfHook , gcc @@ -19,9 +18,9 @@ stdenv.mkDerivation rec { composer_xe_dir="compilers_and_libraries_${year}.${v_a}.${v_b}"; tgz="parallel_studio_xe_2020_update${update}_cluster_edition.tgz"; - src = fetchurl { + src = builtins.fetchTarball { url = "http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/${dir_nr}/${tgz}"; - sha256 = "1axblai5lmw9yqjaz7lvjraj5fsc7r37pklb9x3n1gdjfbgdh4gx"; + sha256 = "1yg2q01ra37ywd7mmgcvkxpsvjz31af91ibybndxn2s0fz7lxibp"; }; buildInputs = [ From 419418781fcd8b20660916c4775dc91929f03c3d Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 23 Jul 2020 19:10:37 +0200 Subject: [PATCH 095/987] Revert "icc: use fetchTarball" This reverts commit 215b104174e7bdcf9dfe6727683261eea54d036f. --- bsc/intel-compiler/icc2020.nix | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/bsc/intel-compiler/icc2020.nix b/bsc/intel-compiler/icc2020.nix index 6a82902..e88f67e 100644 --- a/bsc/intel-compiler/icc2020.nix +++ b/bsc/intel-compiler/icc2020.nix @@ -1,4 +1,5 @@ { stdenv +, fetchurl , rpmextract , autoPatchelfHook , gcc @@ -18,9 +19,9 @@ stdenv.mkDerivation rec { composer_xe_dir="compilers_and_libraries_${year}.${v_a}.${v_b}"; tgz="parallel_studio_xe_2020_update${update}_cluster_edition.tgz"; - src = builtins.fetchTarball { + src = fetchurl { url = "http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/${dir_nr}/${tgz}"; - sha256 = "1yg2q01ra37ywd7mmgcvkxpsvjz31af91ibybndxn2s0fz7lxibp"; + sha256 = "1axblai5lmw9yqjaz7lvjraj5fsc7r37pklb9x3n1gdjfbgdh4gx"; }; buildInputs = [ From cf72d526ee13594c3dcc8bbea7b460b6c948fa89 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Date: Fri, 24 Jul 2020 11:33:05 +0200 Subject: [PATCH 096/987] Add mpptest --- bsc/mpptest/default.nix | 16 ++++++++++++++++ default.nix | 3 +++ 2 files changed, 19 insertions(+) create mode 100644 bsc/mpptest/default.nix diff --git a/bsc/mpptest/default.nix b/bsc/mpptest/default.nix new file mode 100644 index 0000000..39e187f --- /dev/null +++ b/bsc/mpptest/default.nix @@ -0,0 +1,16 @@ +{ + stdenv +, mpi +, fetchurl +}: + +stdenv.mkDerivation { + name = "mpptest"; + + src = fetchurl { + url = "ftp://ftp.mcs.anl.gov/pub/mpi/tools/perftest.tar.gz"; + sha256 = "11i22lq3pch3pvmhnbsgxzd8ap4yvpvlhy2f7k8x3krdwjhl0jvl"; + }; + + buildInputs = [ mpi ]; +} diff --git a/default.nix b/default.nix index df6f9a7..fd37fd4 100644 --- a/default.nix +++ b/default.nix @@ -114,6 +114,9 @@ let inherit mpi tampi; }; + mpptest = callPackage ./bsc/mpptest/default.nix { + }; + # Apps for Garlic nbody = callPackage ./bsc/apps/nbody/default.nix { stdenv = pkgs.gcc9Stdenv; From bad6f3c76174dd7dfcfa11c248f37398f270f9dd Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 24 Jul 2020 13:24:30 +0200 Subject: [PATCH 097/987] Add garlic group --- bsc/garlic/default.nix | 14 ++++++++++++++ bsc/{ => garlic}/mpptest/default.nix | 2 +- bsc/garlic/ppong/default.nix | 24 ++++++++++++++++++++++++ default.nix | 7 +++---- 4 files changed, 42 insertions(+), 5 deletions(-) create mode 100644 bsc/garlic/default.nix rename bsc/{ => garlic}/mpptest/default.nix (74%) create mode 100644 bsc/garlic/ppong/default.nix diff --git a/bsc/garlic/default.nix b/bsc/garlic/default.nix new file mode 100644 index 0000000..c22f3b0 --- /dev/null +++ b/bsc/garlic/default.nix @@ -0,0 +1,14 @@ +{ + pkgs +, bsc +}: + +let + callPackage = pkgs.lib.callPackageWith (pkgs // bsc // garlic); + callPackages = pkgs.lib.callPackagesWith (pkgs // bsc // garlic); + garlic = rec { + mpptest = callPackage ./mpptest/default.nix { }; + ppong = callPackage ./ppong/default.nix { }; + }; +in + garlic diff --git a/bsc/mpptest/default.nix b/bsc/garlic/mpptest/default.nix similarity index 74% rename from bsc/mpptest/default.nix rename to bsc/garlic/mpptest/default.nix index 39e187f..c142667 100644 --- a/bsc/mpptest/default.nix +++ b/bsc/garlic/mpptest/default.nix @@ -8,7 +8,7 @@ stdenv.mkDerivation { name = "mpptest"; src = fetchurl { - url = "ftp://ftp.mcs.anl.gov/pub/mpi/tools/perftest.tar.gz"; + url = "http://ftp.mcs.anl.gov/pub/mpi/tools/perftest.tar.gz"; sha256 = "11i22lq3pch3pvmhnbsgxzd8ap4yvpvlhy2f7k8x3krdwjhl0jvl"; }; diff --git a/bsc/garlic/ppong/default.nix b/bsc/garlic/ppong/default.nix new file mode 100644 index 0000000..89cdcdc --- /dev/null +++ b/bsc/garlic/ppong/default.nix @@ -0,0 +1,24 @@ +{ + stdenv +, mpi +, fetchurl +}: + +stdenv.mkDerivation { + name = "ppong"; + + src = fetchurl { + url = "http://www.csl.mtu.edu/cs4331/common/PPong.c"; + sha256 = "0d1w72gq9627448cb7ykknhgp2wszwd117dlbalbrpf7d0la8yc0"; + }; + + dontUnpack = true; + + buildPhase = '' + pwd + ls -la + mpicc PPong.c -o ppong + ''; + + buildInputs = [ mpi ]; +} diff --git a/default.nix b/default.nix index fd37fd4..46a9412 100644 --- a/default.nix +++ b/default.nix @@ -159,12 +159,11 @@ let fwi = callPackage ./bsc/apps/fwi/default.nix { }; - garlic = pkgs.buildEnv { - name = "garlic"; - paths = [ nbody gauss-seidel saiph creams lulesh hpcg hpccg fwi ]; + garlic = callPackage ./bsc/garlic/default.nix { + pkgs = pkgs; + bsc = self.bsc; }; - # Patched nix for deep cluster inherit (callPackage ./bsc/nix/default.nix { storeDir = "/nix/store"; From 9cba2d609c0fddb8dab7722d8b01af098071f3e1 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Date: Fri, 24 Jul 2020 15:30:28 +0200 Subject: [PATCH 098/987] Working proof of concept for garlic experiments --- bsc/garlic/default.nix | 14 +++++++++-- bsc/garlic/experiments/default.nix | 39 ++++++++++++++++++++++++++++++ bsc/garlic/ppong/default.nix | 18 +++++++++++--- 3 files changed, 65 insertions(+), 6 deletions(-) create mode 100644 bsc/garlic/experiments/default.nix diff --git a/bsc/garlic/default.nix b/bsc/garlic/default.nix index c22f3b0..e2c6475 100644 --- a/bsc/garlic/default.nix +++ b/bsc/garlic/default.nix @@ -7,8 +7,18 @@ let callPackage = pkgs.lib.callPackageWith (pkgs // bsc // garlic); callPackages = pkgs.lib.callPackagesWith (pkgs // bsc // garlic); garlic = rec { - mpptest = callPackage ./mpptest/default.nix { }; - ppong = callPackage ./ppong/default.nix { }; + + mpptest = callPackage ./mpptest { }; + + ppong = callPackage ./ppong { }; + + experiments = callPackage ./experiments { + apps = [ + (ppong.override { mpi=bsc.intel-mpi;}) + (ppong.override { mpi=pkgs.mpich;}) + ]; + }; + }; in garlic diff --git a/bsc/garlic/experiments/default.nix b/bsc/garlic/experiments/default.nix new file mode 100644 index 0000000..64754e1 --- /dev/null +++ b/bsc/garlic/experiments/default.nix @@ -0,0 +1,39 @@ +{ + stdenv +, mpi +, fetchurl +, apps +}: + +stdenv.mkDerivation { + name = "garlic-experiments"; + + src = ./.; + + buildInputs = [] ++ apps; + apps = apps; + + buildPhase = '' + for app in $apps; do + test -e $app/bin/run || (echo $app/bin/run not found; exit 1) + done + ''; + + installPhase = '' + mkdir -p $out/apps + for app in $apps; do + ln -s $app $out/apps/$(basename $app) + done + + mkdir -p $out/bin + cat > $out/bin/run < Date: Fri, 24 Jul 2020 18:34:18 +0200 Subject: [PATCH 099/987] Add config generation --- bsc/garlic/experiments/config.nix | 61 +++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 bsc/garlic/experiments/config.nix diff --git a/bsc/garlic/experiments/config.nix b/bsc/garlic/experiments/config.nix new file mode 100644 index 0000000..7681a8c --- /dev/null +++ b/bsc/garlic/experiments/config.nix @@ -0,0 +1,61 @@ +let + lib = import ; + + inputParams = { + # MPI implementation + mpi = [ + "impi" + "mpich" + ]; + + # Gcc compiler + gcc = [ + "gcc9" + "gcc7" + ]; + + # Additional cflags + cflags = [ + ["-O3" "-fnobugs"] + ["-Ofast"] + ]; + + # Which git branches +# branches = [ +# "mpi+seq" +# "seq" +# ]; + }; + + apps = [ + "dummy" + ]; + + # genAttrSets "a" ["hello" "world"] + # [ { a = "hello"; } { a = "world"; } ] + genAttrSets = (name: arr: (map (x: {${name}=x; })) arr); + + # addAttrSets "a" [1 2] {e=4;} + # [ { a = 1; e = 4; } { a = 2; e = 4; } ] + addAttrSets = (name: arr: set: (map (x: set // {${name}=x; })) arr); + + # attrToList {a=1;} + # [ { name = "a"; value = 1; } ] + attrToList = (set: map (name: {name=name; value=set.${name};} ) (builtins.attrNames set)); + + # mergeConfig [{e=1;}] {name="a"; value=[1 2] + # [ { a = 1; e = 1; } { a = 2; e = 1; } ] + mergeConfig = (arr: new: lib.flatten ( map (x: addAttrSets new.name new.value x) arr)); + + # genConfigs {a=[1 2]; b=[3 4];} + # [ { a = 1; b = 3; } { a = 1; b = 4; } { a = 2; b = 3; } { a = 2; b = 4; } ] + genConfigs = (config: lib.foldl mergeConfig [{}] (attrToList config)); + + + # Generates all configs from inputParams + allConfigs = (genConfigs inputParams); + +in + { + inherit allConfigs; + } From 979888eede1d53c1c31eed7380a8d5c1fe5737d1 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Date: Mon, 27 Jul 2020 11:14:33 +0200 Subject: [PATCH 100/987] Add generators for experiments --- bsc/garlic/default.nix | 19 +++++++++++++------ bsc/garlic/gen.nix | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 47 insertions(+), 6 deletions(-) create mode 100644 bsc/garlic/gen.nix diff --git a/bsc/garlic/default.nix b/bsc/garlic/default.nix index e2c6475..aa5ff95 100644 --- a/bsc/garlic/default.nix +++ b/bsc/garlic/default.nix @@ -6,19 +6,26 @@ let callPackage = pkgs.lib.callPackageWith (pkgs // bsc // garlic); callPackages = pkgs.lib.callPackagesWith (pkgs // bsc // garlic); + + # Load some helper functions to generate app variants + inherit (import ./gen.nix) genApps genConfigs; + garlic = rec { mpptest = callPackage ./mpptest { }; ppong = callPackage ./ppong { }; - experiments = callPackage ./experiments { - apps = [ - (ppong.override { mpi=bsc.intel-mpi;}) - (ppong.override { mpi=pkgs.mpich;}) - ]; + exp = { + mpiImpl = callPackage ./experiments { + apps = genApps [ ppong ] ( + genConfigs { + mpi = [ bsc.intel-mpi pkgs.mpich pkgs.openmpi ]; + } + ); + }; }; - }; + in garlic diff --git a/bsc/garlic/gen.nix b/bsc/garlic/gen.nix new file mode 100644 index 0000000..adac866 --- /dev/null +++ b/bsc/garlic/gen.nix @@ -0,0 +1,34 @@ +let + lib = import ; + + gen = rec { + # genAttrSets "a" ["hello" "world"] + # [ { a = "hello"; } { a = "world"; } ] + genAttrSets = (name: arr: (map (x: {${name}=x; })) arr); + + # addAttrSets "a" [1 2] {e=4;} + # [ { a = 1; e = 4; } { a = 2; e = 4; } ] + addAttrSets = (name: arr: set: (map (x: set // {${name}=x; })) arr); + + # attrToList {a=1;} + # [ { name = "a"; value = 1; } ] + attrToList = (set: map (name: {name=name; value=set.${name};} ) (builtins.attrNames set)); + + # mergeConfig [{e=1;}] {name="a"; value=[1 2] + # [ { a = 1; e = 1; } { a = 2; e = 1; } ] + mergeConfig = (arr: new: lib.flatten ( map (x: addAttrSets new.name new.value x) arr)); + + # genConfigs {a=[1 2]; b=[3 4];} + # [ { a = 1; b = 3; } { a = 1; b = 4; } { a = 2; b = 3; } { a = 2; b = 4; } ] + genConfigs = (config: lib.foldl mergeConfig [{}] (attrToList config)); + + # Generate multiple app versions by override with each config + genApp = (app: configs: map (conf: app.override conf) configs); + + # Generate app version from an array of apps + genApps = (apps: configs: + lib.flatten (map (app: genApp app configs) apps)); + + }; +in + gen From 11901e77de03fa347f511748698590636af81193 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 27 Jul 2020 13:17:08 +0200 Subject: [PATCH 101/987] Rename gauss-seidel to heat --- bsc/apps/{gauss-seidel => heat}/default.nix | 2 +- default.nix | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) rename bsc/apps/{gauss-seidel => heat}/default.nix (94%) diff --git a/bsc/apps/gauss-seidel/default.nix b/bsc/apps/heat/default.nix similarity index 94% rename from bsc/apps/gauss-seidel/default.nix rename to bsc/apps/heat/default.nix index 6c32a90..c249b41 100644 --- a/bsc/apps/gauss-seidel/default.nix +++ b/bsc/apps/heat/default.nix @@ -8,7 +8,7 @@ }: stdenv.mkDerivation rec { - name = "gauss-seidel"; + name = "heat"; src = builtins.fetchGit { url = "ssh://git@bscpm02.bsc.es/benchmarks/ompss-2/heat-conflict-kevin.git"; diff --git a/default.nix b/default.nix index 46a9412..e003f67 100644 --- a/default.nix +++ b/default.nix @@ -124,7 +124,7 @@ let tampi = tampi; }; - gauss-seidel = callPackage ./bsc/apps/gauss-seidel/default.nix { + heat = callPackage ./bsc/apps/heat/default.nix { stdenv = pkgs.gcc7Stdenv; mpi = intel-mpi; tampi = tampi; From 76ec5d5f16f296c1ac070108261ba8b303ba860b Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 27 Jul 2020 13:17:52 +0200 Subject: [PATCH 102/987] Add dummy app --- bsc/apps/dummy/default.nix | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 bsc/apps/dummy/default.nix diff --git a/bsc/apps/dummy/default.nix b/bsc/apps/dummy/default.nix new file mode 100644 index 0000000..79fb138 --- /dev/null +++ b/bsc/apps/dummy/default.nix @@ -0,0 +1,18 @@ +{ + stdenv +, branch ? null +, srcPath ? null +}: + +#assert if srcPath == null then branch != null else true; + +stdenv.mkDerivation rec { + name = "dummy"; + + src = (if srcPath != null then srcPath else + builtins.fetchGit { + url = "ssh://git@bscpm02.bsc.es/rarias/dummy.git"; + ref = "${branch}"; + } + ); +} From 97d69d25ee05551257dca60c186ab6fbb5640b9f Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Date: Mon, 27 Jul 2020 15:23:42 +0200 Subject: [PATCH 103/987] Fix Intel URLs Fixes #5 --- bsc/intel-compiler/icc2020.nix | 2 +- bsc/intel-mpi/default.nix | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/bsc/intel-compiler/icc2020.nix b/bsc/intel-compiler/icc2020.nix index e88f67e..7258b3f 100644 --- a/bsc/intel-compiler/icc2020.nix +++ b/bsc/intel-compiler/icc2020.nix @@ -20,7 +20,7 @@ stdenv.mkDerivation rec { tgz="parallel_studio_xe_2020_update${update}_cluster_edition.tgz"; src = fetchurl { - url = "http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/${dir_nr}/${tgz}"; + url = "http://registrationcenter-download.intel.com/akdlm/IRC_NAS/tec/${dir_nr}/${tgz}"; sha256 = "1axblai5lmw9yqjaz7lvjraj5fsc7r37pklb9x3n1gdjfbgdh4gx"; }; diff --git a/bsc/intel-mpi/default.nix b/bsc/intel-mpi/default.nix index 38608b7..0b30487 100644 --- a/bsc/intel-mpi/default.nix +++ b/bsc/intel-mpi/default.nix @@ -15,7 +15,7 @@ stdenv.mkDerivation rec { lib_variant = (if enableDebug then "debug" else "release"); src = builtins.fetchTarball { - url = "http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/${dir_nr}/l_mpi_${version}.tgz"; + url = "http://registrationcenter-download.intel.com/akdlm/IRC_NAS/tec/${dir_nr}/l_mpi_${version}.tgz"; sha256 = "19l995aavbn5lkiz9sxl6iwmjsrvjgjp14nn0qi1hjqs705db5li"; }; From b042e783e51ab1646058943cbe72d77132a014dc Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Date: Mon, 27 Jul 2020 17:55:35 +0200 Subject: [PATCH 104/987] Add CC and CXX names to compilers passthru --- bsc/intel-compiler/icc2020.nix | 5 +++++ bsc/llvm-ompss2/clang.nix | 5 +++++ bsc/mcxx/default.nix | 5 +++++ 3 files changed, 15 insertions(+) diff --git a/bsc/intel-compiler/icc2020.nix b/bsc/intel-compiler/icc2020.nix index 7258b3f..17fe3e1 100644 --- a/bsc/intel-compiler/icc2020.nix +++ b/bsc/intel-compiler/icc2020.nix @@ -10,6 +10,11 @@ stdenv.mkDerivation rec { version = "${year}.${v_a}.${v_b}"; name = "intel-compiler-${version}"; + passthru = { + CC = "icc"; + CXX = "icpc"; + }; + # From Arch Linux PKGBUILD dir_nr="16526"; year="2020"; diff --git a/bsc/llvm-ompss2/clang.nix b/bsc/llvm-ompss2/clang.nix index b418760..6c45c36 100644 --- a/bsc/llvm-ompss2/clang.nix +++ b/bsc/llvm-ompss2/clang.nix @@ -21,6 +21,11 @@ stdenv.mkDerivation rec { isClang = true; #isGNU = true; + passthru = { + CC = "clang"; + CXX = "clang++"; + }; + isClangWithOmpss = true; buildInputs = [ diff --git a/bsc/mcxx/default.nix b/bsc/mcxx/default.nix index 7766567..50ba72c 100644 --- a/bsc/mcxx/default.nix +++ b/bsc/mcxx/default.nix @@ -17,6 +17,11 @@ stdenv.mkDerivation rec { #version attribute ignored when using fetchgit: #version = "2.2.0-70a299cf"; + passthru = { + CC = "mcc"; + CXX = "mcxx"; + }; + # Use patched Extrae version src = fetchgit { url = "https://github.com/bsc-pm/mcxx"; From b93851ba93a66b260642e6bb3ba145eb231b5722 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Date: Mon, 27 Jul 2020 17:55:56 +0200 Subject: [PATCH 105/987] Testing experiments with nbody --- bsc/garlic/default.nix | 26 +++++++++++++++++++++ bsc/garlic/nbody/default.nix | 44 ++++++++++++++++++++++++++++++++++++ 2 files changed, 70 insertions(+) create mode 100644 bsc/garlic/nbody/default.nix diff --git a/bsc/garlic/default.nix b/bsc/garlic/default.nix index aa5ff95..97cba0b 100644 --- a/bsc/garlic/default.nix +++ b/bsc/garlic/default.nix @@ -16,6 +16,11 @@ let ppong = callPackage ./ppong { }; + nbody = callPackage ./nbody { + cc = pkgs.gcc7; + gitBranch = "garlic/seq"; + }; + exp = { mpiImpl = callPackage ./experiments { apps = genApps [ ppong ] ( @@ -24,6 +29,27 @@ let } ); }; + + nbody = callPackage ./experiments { + apps = genApps [ nbody ] ( + genConfigs { + cc = [ pkgs.gcc7 pkgs.gcc9 ]; + gitBranch = [ "garlic/seq" ]; + } + ); + }; + + # Test if there is any difference between intel -march and -xCORE + # with target avx2. + march = callPackage ./experiments { + apps = genApps [ nbody ] (( genConfigs { + cc = [ bsc.icc ]; + cflags = [ "-march=core-avx2" "-xCORE-AVX2" ]; + }) ++ ( genConfigs { + cc = [ bsc.clang-ompss2 ]; + cflags = [ "-march=core-avx2" ]; + })); + }; }; }; diff --git a/bsc/garlic/nbody/default.nix b/bsc/garlic/nbody/default.nix new file mode 100644 index 0000000..aa0a39b --- /dev/null +++ b/bsc/garlic/nbody/default.nix @@ -0,0 +1,44 @@ +{ + stdenv +, cc +, cflags ? null +, gitBranch +, blocksize ? "2048" +, particles ? "16384" +, timesteps ? "10" +}: + +stdenv.mkDerivation { + name = "nbody"; + + src = builtins.fetchGit { + url = "ssh://git@bscpm02.bsc.es/rarias/nbody.git"; + ref = gitBranch; + }; + + buildInputs = [ + cc + ]; + + preBuild = (if cflags != null then '' + makeFlagsArray+=(CFLAGS=${cflags}) + '' else ""); + + makeFlags = [ + "CC=${cc.cc.CC}" + "BS=${blocksize}" + ]; + + installPhase = '' + mkdir -p $out/bin + cp nbody $out/bin/ + + cat > $out/bin/run < Date: Mon, 27 Jul 2020 19:13:11 +0200 Subject: [PATCH 106/987] Allow multiple space-separated flags --- bsc/garlic/nbody/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bsc/garlic/nbody/default.nix b/bsc/garlic/nbody/default.nix index aa0a39b..56a5c20 100644 --- a/bsc/garlic/nbody/default.nix +++ b/bsc/garlic/nbody/default.nix @@ -21,7 +21,7 @@ stdenv.mkDerivation { ]; preBuild = (if cflags != null then '' - makeFlagsArray+=(CFLAGS=${cflags}) + makeFlagsArray+=(CFLAGS="${cflags}") '' else ""); makeFlags = [ From f1e891b6bf95271f5191310d08197b4131e378f9 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Date: Mon, 27 Jul 2020 19:13:21 +0200 Subject: [PATCH 107/987] Show loop optimization problems --- bsc/garlic/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bsc/garlic/default.nix b/bsc/garlic/default.nix index 97cba0b..4cf41cb 100644 --- a/bsc/garlic/default.nix +++ b/bsc/garlic/default.nix @@ -47,7 +47,7 @@ let cflags = [ "-march=core-avx2" "-xCORE-AVX2" ]; }) ++ ( genConfigs { cc = [ bsc.clang-ompss2 ]; - cflags = [ "-march=core-avx2" ]; + cflags = [ "-march=core-avx2 -Rpass-analysis=loop-vectorize" ]; })); }; }; From 272511f05844913870de6ef8aaafb9bd2aadd572 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Date: Mon, 27 Jul 2020 19:14:29 +0200 Subject: [PATCH 108/987] Use local build for experiments --- bsc/garlic/experiments/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/bsc/garlic/experiments/default.nix b/bsc/garlic/experiments/default.nix index 64754e1..1bbff43 100644 --- a/bsc/garlic/experiments/default.nix +++ b/bsc/garlic/experiments/default.nix @@ -7,6 +7,7 @@ stdenv.mkDerivation { name = "garlic-experiments"; + preferLocalBuild = true; src = ./.; From 5df174f24ed8e76416cb24ae0510aa68d31988a9 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Date: Wed, 29 Jul 2020 18:36:35 +0200 Subject: [PATCH 109/987] Print the app being run --- bsc/garlic/experiments/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/bsc/garlic/experiments/default.nix b/bsc/garlic/experiments/default.nix index 1bbff43..e7c165f 100644 --- a/bsc/garlic/experiments/default.nix +++ b/bsc/garlic/experiments/default.nix @@ -31,6 +31,7 @@ stdenv.mkDerivation { #!/bin/bash for app in $out/apps/*; do + echo "running \$app" \$app/bin/run done EOF From 7c92f713cd4ac295edce7bcecb221d665809dd83 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Date: Wed, 29 Jul 2020 18:38:27 +0200 Subject: [PATCH 110/987] Add ParaStation MPI implementation --- bsc/parastation/pscom.nix | 22 ++++++++++++++++++++++ bsc/parastation/psmpi.nix | 33 +++++++++++++++++++++++++++++++++ default.nix | 4 ++++ 3 files changed, 59 insertions(+) create mode 100644 bsc/parastation/pscom.nix create mode 100644 bsc/parastation/psmpi.nix diff --git a/bsc/parastation/pscom.nix b/bsc/parastation/pscom.nix new file mode 100644 index 0000000..00434e6 --- /dev/null +++ b/bsc/parastation/pscom.nix @@ -0,0 +1,22 @@ +{ stdenv +, popt +}: + +stdenv.mkDerivation rec { + pname = "pscom"; + version = "5.4.6-1"; + + src = builtins.fetchTarball { + url = "https://github.com/ParaStation/${pname}/archive/${version}.tar.gz"; + sha256 = "1n9ic0j94iy09j287cfpfy0dd2bk17qakf1ml669jkibxbc5fqk8"; + }; + + postPatch = '' + patchShebangs ./ + ''; + + buildInputs = [ popt ]; + preferLocalBuild = true; + + enableParallelBuilding = false; +} diff --git a/bsc/parastation/psmpi.nix b/bsc/parastation/psmpi.nix new file mode 100644 index 0000000..e7950e2 --- /dev/null +++ b/bsc/parastation/psmpi.nix @@ -0,0 +1,33 @@ +{ stdenv +, pscom +, perl +}: + +stdenv.mkDerivation rec { + pname = "psmpi"; + version = "5.4.6-1"; + + src = builtins.fetchTarball { + url = "https://github.com/ParaStation/${pname}/archive/${version}.tar.gz"; + sha256 = "1kr624216fz8pmfgbwdb3ks77pr6zhrssmn16j3pwaq5mkf3i9wc"; + }; + + postPatch = '' + patchShebangs ./ + echo "${version}" > VERSION + ''; + + preferLocalBuild = true; + buildInputs = [ pscom ]; + nativeBuildInputs = [ perl ]; + #makeFlags = [ "V=1" ]; + + configureFlags = [ + "--with-confset=default" + "--with-threading" + "--disable-fortran" + "MPICH2_LDFLAGS=-lpsco" + ]; + + enableParallelBuilding = false; +} diff --git a/default.nix b/default.nix index e003f67..ef392d7 100644 --- a/default.nix +++ b/default.nix @@ -38,6 +38,10 @@ let enableCxx = true; }; + # ParaStation MPI + pscom = callPackage ./bsc/parastation/pscom.nix { }; + psmpi = callPackage ./bsc/parastation/psmpi.nix { }; + # Default Intel MPI version is 2019 (the last one) impi = intel-mpi; intel-mpi = intel-mpi-2019; From c7c8d858f4f358b101278d7e3d45d2efd0805295 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Date: Wed, 29 Jul 2020 18:38:39 +0200 Subject: [PATCH 111/987] Test runner script WIP --- bsc/garlic/default.nix | 26 +++++++++++++++++++------- bsc/garlic/gen.nix | 2 +- bsc/garlic/runner.nix | 27 +++++++++++++++++++++++++++ 3 files changed, 47 insertions(+), 8 deletions(-) create mode 100644 bsc/garlic/runner.nix diff --git a/bsc/garlic/default.nix b/bsc/garlic/default.nix index 4cf41cb..e8c5244 100644 --- a/bsc/garlic/default.nix +++ b/bsc/garlic/default.nix @@ -8,7 +8,7 @@ let callPackages = pkgs.lib.callPackagesWith (pkgs // bsc // garlic); # Load some helper functions to generate app variants - inherit (import ./gen.nix) genApps genConfigs; + inherit (import ./gen.nix) genApps genApp genConfigs; garlic = rec { @@ -21,6 +21,10 @@ let gitBranch = "garlic/seq"; }; + runner = callPackage ./runner.nix { + app = null; + }; + exp = { mpiImpl = callPackage ./experiments { apps = genApps [ ppong ] ( @@ -31,12 +35,20 @@ let }; nbody = callPackage ./experiments { - apps = genApps [ nbody ] ( + apps = genApp nbody [ + { cc=bsc.icc; + cflags="-march=core-avx2"; } + { cc=bsc.clang-ompss2; + cflags="-O3 -march=core-avx2 -ffast-math -Rpass-analysis=loop-vectorize"; } + ]; + }; + + nbody-blocksize = callPackage ./experiments { + apps = genApp nbody ( genConfigs { - cc = [ pkgs.gcc7 pkgs.gcc9 ]; - gitBranch = [ "garlic/seq" ]; - } - ); + cc = [ bsc.icc ]; + blocksize = [ "1024" "2048" ]; + }); }; # Test if there is any difference between intel -march and -xCORE @@ -47,7 +59,7 @@ let cflags = [ "-march=core-avx2" "-xCORE-AVX2" ]; }) ++ ( genConfigs { cc = [ bsc.clang-ompss2 ]; - cflags = [ "-march=core-avx2 -Rpass-analysis=loop-vectorize" ]; + cflags = [ "-O3 -march=core-avx2 -Rpass-analysis=loop-vectorize" ]; })); }; }; diff --git a/bsc/garlic/gen.nix b/bsc/garlic/gen.nix index adac866..0c20f9c 100644 --- a/bsc/garlic/gen.nix +++ b/bsc/garlic/gen.nix @@ -23,7 +23,7 @@ let genConfigs = (config: lib.foldl mergeConfig [{}] (attrToList config)); # Generate multiple app versions by override with each config - genApp = (app: configs: map (conf: app.override conf) configs); + genApp = (app: configs: map (conf: app.override conf // {conf=conf;}) configs); # Generate app version from an array of apps genApps = (apps: configs: diff --git a/bsc/garlic/runner.nix b/bsc/garlic/runner.nix new file mode 100644 index 0000000..bbaaa54 --- /dev/null +++ b/bsc/garlic/runner.nix @@ -0,0 +1,27 @@ +{ + stdenv +, app +, argv ? "" +, binary ? "/bin/run" +}: + +stdenv.mkDerivation { + name = "${app.name}-runner"; + preferLocalBuild = true; + + src = ./.; + + buildInputs = [ app ]; + + installPhase = '' + mkdir -p $out/bin + + cat > $out/bin/run < Date: Fri, 31 Jul 2020 18:47:33 +0200 Subject: [PATCH 112/987] Testing sbatch job --- bsc/garlic/default.nix | 10 ++++--- bsc/garlic/runner.nix | 27 ----------------- bsc/garlic/srunner.nix | 68 ++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 74 insertions(+), 31 deletions(-) delete mode 100644 bsc/garlic/runner.nix create mode 100644 bsc/garlic/srunner.nix diff --git a/bsc/garlic/default.nix b/bsc/garlic/default.nix index e8c5244..5753b89 100644 --- a/bsc/garlic/default.nix +++ b/bsc/garlic/default.nix @@ -14,16 +14,18 @@ let mpptest = callPackage ./mpptest { }; - ppong = callPackage ./ppong { }; + ppong = callPackage ./ppong { + mpi = bsc.mpi; + }; nbody = callPackage ./nbody { cc = pkgs.gcc7; gitBranch = "garlic/seq"; }; - runner = callPackage ./runner.nix { - app = null; - }; + srunner = callPackage ./srunner.nix { }; + + ppong-job = srunner { app=ppong; }; exp = { mpiImpl = callPackage ./experiments { diff --git a/bsc/garlic/runner.nix b/bsc/garlic/runner.nix deleted file mode 100644 index bbaaa54..0000000 --- a/bsc/garlic/runner.nix +++ /dev/null @@ -1,27 +0,0 @@ -{ - stdenv -, app -, argv ? "" -, binary ? "/bin/run" -}: - -stdenv.mkDerivation { - name = "${app.name}-runner"; - preferLocalBuild = true; - - src = ./.; - - buildInputs = [ app ]; - - installPhase = '' - mkdir -p $out/bin - - cat > $out/bin/run < $out < Date: Tue, 4 Aug 2020 11:51:09 +0200 Subject: [PATCH 113/987] Testing SLURM jobs with ppong --- bsc/garlic/default.nix | 10 ++++++++++ bsc/garlic/srunner.nix | 12 ++++++------ 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/bsc/garlic/default.nix b/bsc/garlic/default.nix index 5753b89..bdc0ede 100644 --- a/bsc/garlic/default.nix +++ b/bsc/garlic/default.nix @@ -28,6 +28,16 @@ let ppong-job = srunner { app=ppong; }; exp = { + jobs = callPackage ./experiments { + apps = map (app: srunner {app=app;}) ( + genApps [ ppong ] ( + genConfigs { + mpi = [ bsc.intel-mpi pkgs.mpich pkgs.openmpi ]; + } + ) + ); + }; + mpiImpl = callPackage ./experiments { apps = genApps [ ppong ] ( genConfigs { diff --git a/bsc/garlic/srunner.nix b/bsc/garlic/srunner.nix index 08c99f3..46c0765 100644 --- a/bsc/garlic/srunner.nix +++ b/bsc/garlic/srunner.nix @@ -1,5 +1,6 @@ { stdenv +, numactl }: { @@ -41,7 +42,8 @@ stdenv.mkDerivation rec { dontBuild = true; installPhase = '' - cat > $out < $out/bin/run < Date: Tue, 4 Aug 2020 18:38:33 +0200 Subject: [PATCH 114/987] First successful execution with SLURM --- bsc/garlic/default.nix | 19 ++++++++++++++++--- bsc/garlic/dispatcher.nix | 32 ++++++++++++++++++++++++++++++++ bsc/garlic/nbody/default.nix | 10 +++++----- bsc/garlic/srunner.nix | 11 ++++------- 4 files changed, 57 insertions(+), 15 deletions(-) create mode 100644 bsc/garlic/dispatcher.nix diff --git a/bsc/garlic/default.nix b/bsc/garlic/default.nix index bdc0ede..8518514 100644 --- a/bsc/garlic/default.nix +++ b/bsc/garlic/default.nix @@ -28,6 +28,7 @@ let ppong-job = srunner { app=ppong; }; exp = { + jobs = callPackage ./experiments { apps = map (app: srunner {app=app;}) ( genApps [ ppong ] ( @@ -46,7 +47,7 @@ let ); }; - nbody = callPackage ./experiments { + nbodyExp = callPackage ./experiments { apps = genApp nbody [ { cc=bsc.icc; cflags="-march=core-avx2"; } @@ -55,14 +56,26 @@ let ]; }; - nbody-blocksize = callPackage ./experiments { + nbodyBS = callPackage ./experiments { apps = genApp nbody ( genConfigs { cc = [ bsc.icc ]; - blocksize = [ "1024" "2048" ]; + blocksize = [ 1024 2048 4096 ]; }); }; + nbodyBSjob = callPackage ./dispatcher.nix { + jobs = map (app: srunner {app=app;}) ( + genApp nbody ( + genConfigs { + cc = [ bsc.icc ]; + blocksize = [ 1024 2048 4096 ]; + } + ) + ); + }; + + # Test if there is any difference between intel -march and -xCORE # with target avx2. march = callPackage ./experiments { diff --git a/bsc/garlic/dispatcher.nix b/bsc/garlic/dispatcher.nix new file mode 100644 index 0000000..4594b34 --- /dev/null +++ b/bsc/garlic/dispatcher.nix @@ -0,0 +1,32 @@ +{ + stdenv +, jobs +}: + +stdenv.mkDerivation { + name = "slurm-dispatcher"; + preferLocalBuild = true; + + buildInputs = [] ++ jobs; + jobs = jobs; + phases = [ "installPhase" ]; + + installPhase = '' + mkdir -p $out/jobs + for j in $jobs; do + ln -s $j/job $out/jobs/$(basename $j) + done + + mkdir -p $out/bin + cat > $out/bin/execute-all-jobs < $out/bin/run < $out/bin/run < $out/job < Date: Wed, 5 Aug 2020 10:57:05 +0200 Subject: [PATCH 115/987] Add slurm 17.11.9-2, builds ok. --- bsc/slurm/default.nix | 70 +++++++++++++++++++++++++++++++++++++++++++ default.nix | 2 ++ 2 files changed, 72 insertions(+) create mode 100644 bsc/slurm/default.nix diff --git a/bsc/slurm/default.nix b/bsc/slurm/default.nix new file mode 100644 index 0000000..17beab9 --- /dev/null +++ b/bsc/slurm/default.nix @@ -0,0 +1,70 @@ +{ stdenv, fetchFromGitHub, pkgconfig, libtool, curl +, python, munge, perl, pam, openssl +, ncurses, libmysqlclient, gtk2, lua, hwloc, numactl +, readline, freeipmi, libssh2, xorg +# enable internal X11 support via libssh2 +, enableX11 ? true +}: + +stdenv.mkDerivation rec { + name = "slurm-${version}"; + version = "17.11.9-2"; + + # N.B. We use github release tags instead of https://www.schedmd.com/downloads.php + # because the latter does not keep older releases. + src = fetchFromGitHub { + owner = "SchedMD"; + repo = "slurm"; + # The release tags use - instead of . + rev = "${builtins.replaceStrings ["."] ["-"] name}"; + sha256 = "1lq4ac6yjai6wh979dciw8v3d99zbd3w36rfh0vpncqm672fg1qy"; + }; + + outputs = [ "out" "dev" ]; + + prePatch = stdenv.lib.optional enableX11 '' + substituteInPlace src/common/x11_util.c \ + --replace '"/usr/bin/xauth"' '"${xorg.xauth}/bin/xauth"' + ''; + + # nixos test fails to start slurmd with 'undefined symbol: slurm_job_preempt_mode' + # https://groups.google.com/forum/#!topic/slurm-devel/QHOajQ84_Es + # this doesn't fix tests completely at least makes slurmd to launch + hardeningDisable = [ "bindnow" ]; + + nativeBuildInputs = [ pkgconfig libtool ]; + buildInputs = [ + curl python munge perl pam openssl + libmysqlclient ncurses gtk2 + lua hwloc numactl readline freeipmi + ] ++ stdenv.lib.optionals enableX11 [ libssh2 xorg.xauth ]; + + configureFlags = with stdenv.lib; + [ "--with-munge=${munge}" + "--with-ssl=${openssl.dev}" + "--with-hwloc=${hwloc.dev}" + "--with-freeipmi=${freeipmi}" + "--sysconfdir=/etc/slurm" + ] ++ (optional (gtk2 == null) "--disable-gtktest") + ++ (optional enableX11 "--with-libssh2=${libssh2.dev}"); + + + preConfigure = '' + patchShebangs ./doc/html/shtml2html.py + patchShebangs ./doc/man/man2html.py + ''; + + postInstall = '' + rm -f $out/lib/*.la $out/lib/slurm/*.la + ''; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + homepage = http://www.schedmd.com/; + description = "Simple Linux Utility for Resource Management"; + platforms = platforms.linux; + license = licenses.gpl2; + maintainers = with maintainers; [ jagajaga markuskowa ]; + }; +} diff --git a/default.nix b/default.nix index ef392d7..0fed8c4 100644 --- a/default.nix +++ b/default.nix @@ -66,6 +66,8 @@ let intel-license = callPackage bsc/intel-compiler/license.nix { }; + slurm17 = callPackage ./bsc/slurm/default.nix { }; + fftw = callPackage ./bsc/fftw/default.nix { mpi = mpi; }; From f4cbd654e22a561301ae81666241a21a140b3438 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Date: Wed, 5 Aug 2020 17:44:03 +0200 Subject: [PATCH 116/987] slurm17: Add pmix library --- bsc/slurm/default.nix | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/bsc/slurm/default.nix b/bsc/slurm/default.nix index 17beab9..d75fd78 100644 --- a/bsc/slurm/default.nix +++ b/bsc/slurm/default.nix @@ -2,6 +2,7 @@ , python, munge, perl, pam, openssl , ncurses, libmysqlclient, gtk2, lua, hwloc, numactl , readline, freeipmi, libssh2, xorg +, pmix # enable internal X11 support via libssh2 , enableX11 ? true }: @@ -37,6 +38,7 @@ stdenv.mkDerivation rec { curl python munge perl pam openssl libmysqlclient ncurses gtk2 lua hwloc numactl readline freeipmi + pmix ] ++ stdenv.lib.optionals enableX11 [ libssh2 xorg.xauth ]; configureFlags = with stdenv.lib; @@ -45,6 +47,7 @@ stdenv.mkDerivation rec { "--with-hwloc=${hwloc.dev}" "--with-freeipmi=${freeipmi}" "--sysconfdir=/etc/slurm" + "--with-pmix=${pmix}" ] ++ (optional (gtk2 == null) "--disable-gtktest") ++ (optional enableX11 "--with-libssh2=${libssh2.dev}"); @@ -52,6 +55,7 @@ stdenv.mkDerivation rec { preConfigure = '' patchShebangs ./doc/html/shtml2html.py patchShebangs ./doc/man/man2html.py + patchShebangs ./configure ''; postInstall = '' From b9e9409a59f3579a617dd64c0912b29ba6fc05f1 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Date: Mon, 10 Aug 2020 14:13:28 +0200 Subject: [PATCH 117/987] Success sbatch launch in MN4 with nbody seq --- bsc/garlic/default.nix | 8 +++++++- bsc/garlic/dispatcher.nix | 2 +- bsc/garlic/nbody/default.nix | 15 ++++++++++++++- bsc/garlic/srunner.nix | 9 ++++----- 4 files changed, 26 insertions(+), 8 deletions(-) diff --git a/bsc/garlic/default.nix b/bsc/garlic/default.nix index 8518514..90b2ad2 100644 --- a/bsc/garlic/default.nix +++ b/bsc/garlic/default.nix @@ -65,7 +65,13 @@ let }; nbodyBSjob = callPackage ./dispatcher.nix { - jobs = map (app: srunner {app=app;}) ( + jobs = map (app: srunner { + app=app; + prefix="/gpfs/projects/bsc15/nix"; + exclusive=false; + ntasks = "1"; + } + ) ( genApp nbody ( genConfigs { cc = [ bsc.icc ]; diff --git a/bsc/garlic/dispatcher.nix b/bsc/garlic/dispatcher.nix index 4594b34..6400916 100644 --- a/bsc/garlic/dispatcher.nix +++ b/bsc/garlic/dispatcher.nix @@ -19,7 +19,7 @@ stdenv.mkDerivation { mkdir -p $out/bin cat > $out/bin/execute-all-jobs < $out/bin/run < Date: Mon, 10 Aug 2020 15:27:46 +0200 Subject: [PATCH 118/987] Tidy nbody experiment --- bsc/garlic/default.nix | 79 +++---------------- bsc/garlic/exp/nbody/bs.nix | 38 +++++++++ bsc/garlic/experiments/config.nix | 61 -------------- bsc/garlic/experiments/default.nix | 41 ---------- .../{dispatcher.nix => sbatch-launcher.nix} | 9 ++- bsc/garlic/{srunner.nix => sbatch.nix} | 0 6 files changed, 52 insertions(+), 176 deletions(-) create mode 100644 bsc/garlic/exp/nbody/bs.nix delete mode 100644 bsc/garlic/experiments/config.nix delete mode 100644 bsc/garlic/experiments/default.nix rename bsc/garlic/{dispatcher.nix => sbatch-launcher.nix} (77%) rename bsc/garlic/{srunner.nix => sbatch.nix} (100%) diff --git a/bsc/garlic/default.nix b/bsc/garlic/default.nix index 90b2ad2..0485cc0 100644 --- a/bsc/garlic/default.nix +++ b/bsc/garlic/default.nix @@ -7,11 +7,11 @@ let callPackage = pkgs.lib.callPackageWith (pkgs // bsc // garlic); callPackages = pkgs.lib.callPackagesWith (pkgs // bsc // garlic); - # Load some helper functions to generate app variants - inherit (import ./gen.nix) genApps genApp genConfigs; - garlic = rec { + # Load some helper functions to generate app variants + inherit (import ./gen.nix) genApps genApp genConfigs; + mpptest = callPackage ./mpptest { }; ppong = callPackage ./ppong { @@ -23,75 +23,14 @@ let gitBranch = "garlic/seq"; }; - srunner = callPackage ./srunner.nix { }; - - ppong-job = srunner { app=ppong; }; + sbatch = callPackage ./sbatch.nix { }; + sbatchLauncher = callPackage ./sbatch-launcher.nix { }; exp = { - - jobs = callPackage ./experiments { - apps = map (app: srunner {app=app;}) ( - genApps [ ppong ] ( - genConfigs { - mpi = [ bsc.intel-mpi pkgs.mpich pkgs.openmpi ]; - } - ) - ); - }; - - mpiImpl = callPackage ./experiments { - apps = genApps [ ppong ] ( - genConfigs { - mpi = [ bsc.intel-mpi pkgs.mpich pkgs.openmpi ]; - } - ); - }; - - nbodyExp = callPackage ./experiments { - apps = genApp nbody [ - { cc=bsc.icc; - cflags="-march=core-avx2"; } - { cc=bsc.clang-ompss2; - cflags="-O3 -march=core-avx2 -ffast-math -Rpass-analysis=loop-vectorize"; } - ]; - }; - - nbodyBS = callPackage ./experiments { - apps = genApp nbody ( - genConfigs { - cc = [ bsc.icc ]; - blocksize = [ 1024 2048 4096 ]; - }); - }; - - nbodyBSjob = callPackage ./dispatcher.nix { - jobs = map (app: srunner { - app=app; - prefix="/gpfs/projects/bsc15/nix"; - exclusive=false; - ntasks = "1"; - } - ) ( - genApp nbody ( - genConfigs { - cc = [ bsc.icc ]; - blocksize = [ 1024 2048 4096 ]; - } - ) - ); - }; - - - # Test if there is any difference between intel -march and -xCORE - # with target avx2. - march = callPackage ./experiments { - apps = genApps [ nbody ] (( genConfigs { - cc = [ bsc.icc ]; - cflags = [ "-march=core-avx2" "-xCORE-AVX2" ]; - }) ++ ( genConfigs { - cc = [ bsc.clang-ompss2 ]; - cflags = [ "-O3 -march=core-avx2 -Rpass-analysis=loop-vectorize" ]; - })); + nbody = { + bs = callPackage ./exp/nbody/bs.nix { + inherit bsc; + }; }; }; }; diff --git a/bsc/garlic/exp/nbody/bs.nix b/bsc/garlic/exp/nbody/bs.nix new file mode 100644 index 0000000..e34453d --- /dev/null +++ b/bsc/garlic/exp/nbody/bs.nix @@ -0,0 +1,38 @@ +{ + bsc +, nbody +, genApp +, genConfigs +, sbatch +, sbatchLauncher +}: + +let + # Set the configuration for the experiment + config = { + cc = [ bsc.icc ]; + blocksize = [ 1024 2048 4096 ]; + }; + + # Compute the cartesian product of all configurations + configList = genConfigs config; + # Generate each app variant via override + appList = genApp nbody configList; + + # Job generator helper function + genJobs = map (app: + sbatch { + app = app; + prefix = "/gpfs/projects/bsc15/nix"; + exclusive = false; + ntasks = "1"; + } + ); + + # Generate one job for each app variant + jobList = genJobs appList; + + # And merge all jobs in a script to lauch them all with sbatch + launcher = sbatchLauncher jobList; +in + launcher diff --git a/bsc/garlic/experiments/config.nix b/bsc/garlic/experiments/config.nix deleted file mode 100644 index 7681a8c..0000000 --- a/bsc/garlic/experiments/config.nix +++ /dev/null @@ -1,61 +0,0 @@ -let - lib = import ; - - inputParams = { - # MPI implementation - mpi = [ - "impi" - "mpich" - ]; - - # Gcc compiler - gcc = [ - "gcc9" - "gcc7" - ]; - - # Additional cflags - cflags = [ - ["-O3" "-fnobugs"] - ["-Ofast"] - ]; - - # Which git branches -# branches = [ -# "mpi+seq" -# "seq" -# ]; - }; - - apps = [ - "dummy" - ]; - - # genAttrSets "a" ["hello" "world"] - # [ { a = "hello"; } { a = "world"; } ] - genAttrSets = (name: arr: (map (x: {${name}=x; })) arr); - - # addAttrSets "a" [1 2] {e=4;} - # [ { a = 1; e = 4; } { a = 2; e = 4; } ] - addAttrSets = (name: arr: set: (map (x: set // {${name}=x; })) arr); - - # attrToList {a=1;} - # [ { name = "a"; value = 1; } ] - attrToList = (set: map (name: {name=name; value=set.${name};} ) (builtins.attrNames set)); - - # mergeConfig [{e=1;}] {name="a"; value=[1 2] - # [ { a = 1; e = 1; } { a = 2; e = 1; } ] - mergeConfig = (arr: new: lib.flatten ( map (x: addAttrSets new.name new.value x) arr)); - - # genConfigs {a=[1 2]; b=[3 4];} - # [ { a = 1; b = 3; } { a = 1; b = 4; } { a = 2; b = 3; } { a = 2; b = 4; } ] - genConfigs = (config: lib.foldl mergeConfig [{}] (attrToList config)); - - - # Generates all configs from inputParams - allConfigs = (genConfigs inputParams); - -in - { - inherit allConfigs; - } diff --git a/bsc/garlic/experiments/default.nix b/bsc/garlic/experiments/default.nix deleted file mode 100644 index e7c165f..0000000 --- a/bsc/garlic/experiments/default.nix +++ /dev/null @@ -1,41 +0,0 @@ -{ - stdenv -, mpi -, fetchurl -, apps -}: - -stdenv.mkDerivation { - name = "garlic-experiments"; - preferLocalBuild = true; - - src = ./.; - - buildInputs = [] ++ apps; - apps = apps; - - buildPhase = '' - for app in $apps; do - test -e $app/bin/run || (echo $app/bin/run not found; exit 1) - done - ''; - - installPhase = '' - mkdir -p $out/apps - for app in $apps; do - ln -s $app $out/apps/$(basename $app) - done - - mkdir -p $out/bin - cat > $out/bin/run < $out/bin/execute-all-jobs < $out/bin/run < Date: Mon, 10 Aug 2020 18:25:53 +0200 Subject: [PATCH 119/987] Run each experiment in a unique directory --- bsc/garlic/default.nix | 2 +- bsc/garlic/exp/nbody/bs.nix | 11 +++++---- .../{sbatch-launcher.nix => launcher.nix} | 18 +++++++------- bsc/garlic/sbatch.nix | 24 +++++++++++++++---- 4 files changed, 35 insertions(+), 20 deletions(-) rename bsc/garlic/{sbatch-launcher.nix => launcher.nix} (55%) diff --git a/bsc/garlic/default.nix b/bsc/garlic/default.nix index 0485cc0..191da96 100644 --- a/bsc/garlic/default.nix +++ b/bsc/garlic/default.nix @@ -24,7 +24,7 @@ let }; sbatch = callPackage ./sbatch.nix { }; - sbatchLauncher = callPackage ./sbatch-launcher.nix { }; + launcher = callPackage ./launcher.nix { }; exp = { nbody = { diff --git a/bsc/garlic/exp/nbody/bs.nix b/bsc/garlic/exp/nbody/bs.nix index e34453d..9a32b26 100644 --- a/bsc/garlic/exp/nbody/bs.nix +++ b/bsc/garlic/exp/nbody/bs.nix @@ -4,7 +4,7 @@ , genApp , genConfigs , sbatch -, sbatchLauncher +, launcher }: let @@ -23,16 +23,17 @@ let genJobs = map (app: sbatch { app = app; - prefix = "/gpfs/projects/bsc15/nix"; + nixPrefix = "/gpfs/projects/bsc15/nix"; exclusive = false; ntasks = "1"; + chdirPrefix = "/home/bsc15/bsc15557/bsc-nixpkgs/out"; } ); # Generate one job for each app variant jobList = genJobs appList; - # And merge all jobs in a script to lauch them all with sbatch - launcher = sbatchLauncher jobList; + # And execute them all + main = launcher jobList; in - launcher + main diff --git a/bsc/garlic/sbatch-launcher.nix b/bsc/garlic/launcher.nix similarity index 55% rename from bsc/garlic/sbatch-launcher.nix rename to bsc/garlic/launcher.nix index e85557f..034b814 100644 --- a/bsc/garlic/sbatch-launcher.nix +++ b/bsc/garlic/launcher.nix @@ -2,29 +2,29 @@ stdenv }: -jobs: +apps: stdenv.mkDerivation { name = "launcher"; preferLocalBuild = true; - buildInputs = [] ++ jobs; - jobs = jobs; + buildInputs = [] ++ apps; + apps = apps; phases = [ "installPhase" ]; + dontPatchShebangs = true; installPhase = '' - mkdir -p $out/jobs - for j in $jobs; do - ln -s $j/job $out/jobs/$(basename $j) + mkdir -p $out/apps + for j in $apps; do + ln -s $j $out/apps/$(basename $j) done mkdir -p $out/bin cat > $out/bin/run < $out/job < $out/bin/run <&2 echo "Execution aborted: '${chdirPrefix}/$(basename $out)' already exists" + exit 1 + fi + mkdir -p "${chdirPrefix}/$(basename $out)" + echo sbatch ${nixPrefix}$out/job + sbatch ${nixPrefix}$out/job + EOF + chmod +x $out/bin/run ''; } From 338736d25781d4461b55777a330afa9dc480caa8 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Date: Tue, 11 Aug 2020 12:05:43 +0200 Subject: [PATCH 120/987] Add control and nix-setup layers --- bsc/garlic/control.nix | 23 +++++++++++++++++++++++ bsc/garlic/default.nix | 2 ++ bsc/garlic/exp/nbody/bs.nix | 4 +++- bsc/garlic/nbody/default.nix | 10 ---------- bsc/garlic/nix-setup.nix | 29 +++++++++++++++++++++++++++++ 5 files changed, 57 insertions(+), 11 deletions(-) create mode 100644 bsc/garlic/control.nix create mode 100644 bsc/garlic/nix-setup.nix diff --git a/bsc/garlic/control.nix b/bsc/garlic/control.nix new file mode 100644 index 0000000..cee9edb --- /dev/null +++ b/bsc/garlic/control.nix @@ -0,0 +1,23 @@ +{ + stdenv +}: + +program: + +stdenv.mkDerivation { + inherit program; + name = "${program.name}-control"; + preferLocalBuild = true; + phases = [ "installPhase" ]; + dontPatchShebangs = true; + installPhase = '' + mkdir -p $out/bin + cat > $out/bin/run < $out/bin/run < $out/bin/run <&2 echo "running nix-setup \$0" + exec nix-setup \$0 + fi + + exec $program/bin/run + EOF + chmod +x $out/bin/run + ''; +} From df18435dfc59781aebd2ca76524cdde4e281d5ff Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Date: Wed, 12 Aug 2020 14:00:04 +0200 Subject: [PATCH 121/987] Provide argvWrapper --- bsc/garlic/argv.nix | 25 +++++++++++++ bsc/garlic/default.nix | 9 +++-- bsc/garlic/exp/nbody/bs.nix | 71 ++++++++++++++++++++++++------------ bsc/garlic/launcher.nix | 13 ++++++- bsc/garlic/nbody/argv.nix | 29 +++++++++++++++ bsc/garlic/nbody/default.nix | 17 ++------- 6 files changed, 122 insertions(+), 42 deletions(-) create mode 100644 bsc/garlic/argv.nix create mode 100644 bsc/garlic/nbody/argv.nix diff --git a/bsc/garlic/argv.nix b/bsc/garlic/argv.nix new file mode 100644 index 0000000..5978cb3 --- /dev/null +++ b/bsc/garlic/argv.nix @@ -0,0 +1,25 @@ +{ + stdenv +}: + +{ + app +, argv # bash array as string, example: argv=''(-f "file with spaces" -t 10)'' +}: + +stdenv.mkDerivation { + inherit argv; + name = "${app.name}-argv"; + preferLocalBuild = true; + phases = [ "installPhase" ]; + dontPatchShebangs = true; + installPhase = '' + mkdir -p $out/bin + cat > $out/bin/run < $out/bin/run < $out/bin/run < Date: Mon, 17 Aug 2020 18:50:18 +0200 Subject: [PATCH 122/987] Add srun wrapper and use pmi2 --- bsc/garlic/argv.nix | 9 +++- bsc/garlic/default.nix | 9 ++-- bsc/garlic/exp/nbody/bs.nix | 25 +++++++---- bsc/garlic/exp/nbody/mpi.nix | 81 ++++++++++++++++++++++++++++++++++++ bsc/garlic/nbody/default.nix | 8 +++- bsc/garlic/sbatch.nix | 4 +- bsc/garlic/srun.nix | 20 +++++++++ 7 files changed, 138 insertions(+), 18 deletions(-) create mode 100644 bsc/garlic/exp/nbody/mpi.nix create mode 100644 bsc/garlic/srun.nix diff --git a/bsc/garlic/argv.nix b/bsc/garlic/argv.nix index 5978cb3..701b8d7 100644 --- a/bsc/garlic/argv.nix +++ b/bsc/garlic/argv.nix @@ -1,9 +1,11 @@ { stdenv +, bash }: { app +, env ? "" , argv # bash array as string, example: argv=''(-f "file with spaces" -t 10)'' }: @@ -12,11 +14,14 @@ stdenv.mkDerivation { name = "${app.name}-argv"; preferLocalBuild = true; phases = [ "installPhase" ]; - dontPatchShebangs = true; installPhase = '' mkdir -p $out/bin cat > $out/bin/run < $out/bin/run < Date: Mon, 17 Aug 2020 18:51:51 +0200 Subject: [PATCH 123/987] Update and fix Intel MPI, fixes #9 --- bsc/intel-mpi/default.nix | 43 +++++++++++++++++++++++++++++++------- bsc/intel-mpi/mpicc.patch | 4 ++-- bsc/intel-mpi/mpicxx.patch | 4 ++-- 3 files changed, 39 insertions(+), 12 deletions(-) diff --git a/bsc/intel-mpi/default.nix b/bsc/intel-mpi/default.nix index 0b30487..261654a 100644 --- a/bsc/intel-mpi/default.nix +++ b/bsc/intel-mpi/default.nix @@ -1,30 +1,39 @@ { stdenv , rpmextract -, libfabric , gcc , zlib +, ucx +, numactl +, rdma-core +, libpsm2 +, patchelf , autoPatchelfHook , enableDebug ? false }: stdenv.mkDerivation rec { name = "intel-mpi-${version}"; - version = "2019.7.217"; - dir_nr = "16546"; + version = "2019.8.254"; + dir_nr = "16814"; + internal-ver = "2020.2.254"; lib_variant = (if enableDebug then "debug" else "release"); src = builtins.fetchTarball { - url = "http://registrationcenter-download.intel.com/akdlm/IRC_NAS/tec/${dir_nr}/l_mpi_${version}.tgz"; - sha256 = "19l995aavbn5lkiz9sxl6iwmjsrvjgjp14nn0qi1hjqs705db5li"; + url = "http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/${dir_nr}/l_mpi_${version}.tgz"; + sha256 = "1za4zyvxm5bfkrca843na6sxq2gq7qb87s0zysa7dnyqjwa11n45"; }; buildInputs = [ rpmextract - libfabric autoPatchelfHook gcc.cc.lib zlib + ucx + numactl + rdma-core + libpsm2 + patchelf ]; postUnpack = '' @@ -39,7 +48,7 @@ stdenv.mkDerivation rec { ]; postPatch = '' - pushd opt/intel/compilers_and_libraries_2020.1.217/linux/mpi/intel64/bin + pushd opt/intel/compilers_and_libraries_${internal-ver}/linux/mpi/intel64/bin for i in mpi* ; do echo "Fixing paths in $i" sed -i "s:I_MPI_SUBSTITUTE_INSTALLDIR:$out:g" "$i" @@ -50,7 +59,7 @@ stdenv.mkDerivation rec { dontBuild = true; installPhase = '' - cd opt/intel/compilers_and_libraries_2020.1.217/linux/mpi/intel64 + cd opt/intel/compilers_and_libraries_${internal-ver}/linux/mpi/intel64 mkdir -p $out mv etc $out mv bin $out @@ -58,7 +67,25 @@ stdenv.mkDerivation rec { mkdir $out/lib cp -a lib/lib* $out/lib cp -a lib/${lib_variant}_mt/lib* $out/lib + cp -a libfabric/lib/* $out/lib + cp -a libfabric/lib/prov/* $out/lib + cp -a libfabric/bin/* $out/bin ln -s . $out/intel64 rm $out/lib/libmpi.dbg + + # Fixup Intel PSM2 library missing (now located at PSMX2) + ln -s $out/lib/libpsmx2-fi.so $out/lib/libpsm2-fi.so + ''; + + dontAutoPatchelf = true; + + # The rpath of libfabric.so bundled with Intel MPI is patched to include the + # rdma-core lib path, as is required for dlopen to find the rdma components. + # TODO: Try the upstream libfabric library with rdma support, so we can avoid + # this hack. + postFixup = '' + autoPatchelf -- $out + patchelf --set-rpath "$out/lib:${rdma-core}/lib:${libpsm2}/lib" $out/lib/libfabric.so + echo "Patched RPATH in libfabric.so to: $(patchelf --print-rpath $out/lib/libfabric.so)" ''; } diff --git a/bsc/intel-mpi/mpicc.patch b/bsc/intel-mpi/mpicc.patch index c98dffb..c252490 100644 --- a/bsc/intel-mpi/mpicc.patch +++ b/bsc/intel-mpi/mpicc.patch @@ -1,5 +1,5 @@ ---- a/opt/intel/compilers_and_libraries_2020.1.217/linux/mpi/intel64/bin/mpicc 2020-06-30 14:22:04.510566478 +0200 -+++ b/opt/intel/compilers_and_libraries_2020.1.217/linux/mpi/intel64/bin/mpicc 2020-06-30 14:24:58.250998988 +0200 +--- a/opt/intel/compilers_and_libraries_2020.2.254/linux/mpi/intel64/bin/mpicc 2020-06-30 14:22:04.510566478 +0200 ++++ b/opt/intel/compilers_and_libraries_2020.2.254/linux/mpi/intel64/bin/mpicc 2020-06-30 14:24:58.250998988 +0200 @@ -50,7 +50,7 @@ if [ x"$opt_args" == x"" ]; then case "${compiler_short_name}" in diff --git a/bsc/intel-mpi/mpicxx.patch b/bsc/intel-mpi/mpicxx.patch index 16602f8..a51d170 100644 --- a/bsc/intel-mpi/mpicxx.patch +++ b/bsc/intel-mpi/mpicxx.patch @@ -1,5 +1,5 @@ ---- a/opt/intel/compilers_and_libraries_2020.1.217/linux/mpi/intel64/bin/mpicxx 2020-06-30 14:26:14.619723932 +0200 -+++ b/opt/intel/compilers_and_libraries_2020.1.217/linux/mpi/intel64/bin/mpicxx 2020-06-30 14:27:56.644687134 +0200 +--- a/opt/intel/compilers_and_libraries_2020.2.254/linux/mpi/intel64/bin/mpicxx 2020-06-30 14:26:14.619723932 +0200 ++++ b/opt/intel/compilers_and_libraries_2020.2.254/linux/mpi/intel64/bin/mpicxx 2020-06-30 14:27:56.644687134 +0200 @@ -49,9 +49,9 @@ if [ x"$opt_args" == x"" ]; then From ecc01e43142e55f5b25869b7b862a677b02380cc Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Date: Mon, 17 Aug 2020 18:55:01 +0200 Subject: [PATCH 124/987] Add old SLURM, pmix and pmi2 versions --- bsc/openmpi/default.nix | 17 ++++-- bsc/openmpi/with-slurm.nix | 117 +++++++++++++++++++++++++++++++++++++ bsc/pmix/pmix2.nix | 48 +++++++++++++++ bsc/slurm/default.nix | 6 ++ bsc/slurm/pmi2.nix | 82 ++++++++++++++++++++++++++ default.nix | 23 ++++++-- 6 files changed, 281 insertions(+), 12 deletions(-) create mode 100644 bsc/openmpi/with-slurm.nix create mode 100644 bsc/pmix/pmix2.nix create mode 100644 bsc/slurm/pmi2.nix diff --git a/bsc/openmpi/default.nix b/bsc/openmpi/default.nix index 1cea9bb..5787d8e 100644 --- a/bsc/openmpi/default.nix +++ b/bsc/openmpi/default.nix @@ -1,6 +1,6 @@ { stdenv, fetchurl, fetchpatch, gfortran, perl, libnl , rdma-core, zlib, numactl, libevent, hwloc, targetPackages, symlinkJoin -, libpsm2, libfabric +, libpsm2, libfabric, pmix, pmi2, ucx # Enable CUDA support , cudaSupport ? false, cudatoolkit ? null @@ -22,7 +22,7 @@ assert !cudaSupport || cudatoolkit != null; let - version = "4.0.3"; + version = "4.0.4"; cudatoolkit_joined = symlinkJoin { name = "${cudatoolkit.name}-unsplit"; @@ -34,7 +34,7 @@ in stdenv.mkDerivation rec { src = with stdenv.lib.versions; fetchurl { url = "https://www.open-mpi.org/software/ompi/v${major version}.${minor version}/downloads/${pname}-${version}.tar.bz2"; - sha256 = "00zxcw99gr5n693cmcmn4f6a47vx1ywna895p0x7p163v37gw0hl"; + sha256 = "1i0slg2dxjdgw513aml1n9dsbdxn2fimi2b5712d5r9z4ar4xqj7"; }; postPatch = '' @@ -49,7 +49,7 @@ in stdenv.mkDerivation rec { ''; buildInputs = with stdenv; [ gfortran zlib ] - ++ lib.optionals isLinux [ libnl numactl ] + ++ lib.optionals isLinux [ libnl numactl pmix ucx ] ++ lib.optionals cudaSupport [ cudatoolkit ] ++ [ libevent hwloc ] ++ lib.optional (isLinux || isFreeBSD) rdma-core @@ -58,8 +58,13 @@ in stdenv.mkDerivation rec { nativeBuildInputs = [ perl ]; configureFlags = with stdenv; lib.optional (!cudaSupport) "--disable-mca-dso" - ++ lib.optional isLinux "--with-libnl=${libnl.dev}" - ++ lib.optional enableSGE "--with-sge" + ++ lib.optionals isLinux [ + "--with-libnl=${libnl.dev}" + "--with-pmix=${pmix}" + "--with-pmix-libdir=${pmix}/lib" + "--with-pmi=${pmi2}" + "--with-pmi-libdir=${pmi2}/lib" + ] ++ lib.optional enableSGE "--with-sge" ++ lib.optional enablePrefix "--enable-mpirun-prefix-by-default" # TODO: add UCX support, which is recommended to use with cuda for the most robust OpenMPI build # https://github.com/openucx/ucx diff --git a/bsc/openmpi/with-slurm.nix b/bsc/openmpi/with-slurm.nix new file mode 100644 index 0000000..f987c00 --- /dev/null +++ b/bsc/openmpi/with-slurm.nix @@ -0,0 +1,117 @@ +{ stdenv, fetchurl, fetchpatch, gfortran, perl, libnl +, rdma-core, zlib, numactl, libevent, hwloc, targetPackages, symlinkJoin +, libpsm2, libfabric + +# Enable CUDA support +, cudaSupport ? false, cudatoolkit ? null + +# Enable the Sun Grid Engine bindings +, enableSGE ? false + +# Pass PATH/LD_LIBRARY_PATH to point to current mpirun by default +, enablePrefix ? false + +# Enable libfabric support (necessary for Omnipath networks) on x86_64 linux +, fabricSupport ? stdenv.isLinux && stdenv.isx86_64 + +# Enable mpi_cxx.so +, enableCxx ? false + +, slurm + +}: + +assert !cudaSupport || cudatoolkit != null; + +let + version = "4.0.3"; + + cudatoolkit_joined = symlinkJoin { + name = "${cudatoolkit.name}-unsplit"; + paths = [ cudatoolkit.out cudatoolkit.lib ]; + }; +in stdenv.mkDerivation rec { + pname = "openmpi"; + inherit version; + + src = with stdenv.lib.versions; fetchurl { + url = "https://www.open-mpi.org/software/ompi/v${major version}.${minor version}/downloads/${pname}-${version}.tar.bz2"; + sha256 = "00zxcw99gr5n693cmcmn4f6a47vx1ywna895p0x7p163v37gw0hl"; + }; + + postPatch = '' + patchShebangs ./ + + # Ensure build is reproducible + ts=`date -d @$SOURCE_DATE_EPOCH` + sed -i 's/OPAL_CONFIGURE_USER=.*/OPAL_CONFIGURE_USER="nixbld"/' configure + sed -i 's/OPAL_CONFIGURE_HOST=.*/OPAL_CONFIGURE_HOST="localhost"/' configure + sed -i "s/OPAL_CONFIGURE_DATE=.*/OPAL_CONFIGURE_DATE=\"$ts\"/" configure + find -name "Makefile.in" -exec sed -i "s/\`date\`/$ts/" \{} \; + ''; + + buildInputs = with stdenv; [ gfortran zlib ] + ++ lib.optionals isLinux [ libnl numactl ] + ++ lib.optionals cudaSupport [ cudatoolkit ] + ++ [ libevent hwloc ] + ++ lib.optional (isLinux || isFreeBSD) rdma-core + ++ lib.optional fabricSupport [ libpsm2 libfabric ] + ++ [ slurm ]; + + nativeBuildInputs = [ perl ]; + + configureFlags = with stdenv; lib.optional (!cudaSupport) "--disable-mca-dso" + ++ lib.optional isLinux "--with-libnl=${libnl.dev}" + ++ lib.optional enableSGE "--with-sge" + ++ lib.optional enablePrefix "--enable-mpirun-prefix-by-default" + # TODO: add UCX support, which is recommended to use with cuda for the most robust OpenMPI build + # https://github.com/openucx/ucx + # https://www.open-mpi.org/faq/?category=buildcuda + ++ lib.optionals cudaSupport [ "--with-cuda=${cudatoolkit_joined}" "--enable-dlopen" ] + ++ lib.optionals fabricSupport [ "--with-psm2=${libpsm2}" "--with-libfabric=${libfabric}" ] + ++ lib.optional enableCxx "--enable-mpi-cxx" + ++ [ "--with-slurm=${slurm}" "--with-pmi" "--enable-static" "--disable-dlopen" ] + ; + + enableParallelBuilding = true; + + postInstall = '' + rm -f $out/lib/*.la + ''; + + postFixup = '' + # default compilers should be indentical to the + # compilers at build time + + sed -i 's:compiler=.*:compiler=${targetPackages.stdenv.cc}/bin/${targetPackages.stdenv.cc.targetPrefix}cc:' \ + $out/share/openmpi/mpicc-wrapper-data.txt + + sed -i 's:compiler=.*:compiler=${targetPackages.stdenv.cc}/bin/${targetPackages.stdenv.cc.targetPrefix}cc:' \ + $out/share/openmpi/ortecc-wrapper-data.txt + + sed -i 's:compiler=.*:compiler=${targetPackages.stdenv.cc}/bin/${targetPackages.stdenv.cc.targetPrefix}c++:' \ + $out/share/openmpi/mpic++-wrapper-data.txt + + sed -i 's:compiler=.*:compiler=${gfortran}/bin/${gfortran.targetPrefix}gfortran:' \ + $out/share/openmpi/mpifort-wrapper-data.txt + ''; + + doCheck = true; + + passthru = { + inherit cudaSupport cudatoolkit; + }; + + meta = with stdenv.lib; { + homepage = "https://www.open-mpi.org/"; + description = "Open source MPI-3 implementation"; + longDescription = "The Open MPI Project is an open source MPI-3 implementation that is developed and maintained by a consortium of academic, research, and industry partners. Open MPI is therefore able to combine the expertise, technologies, and resources from all across the High Performance Computing community in order to build the best MPI library available. Open MPI offers advantages for system and software vendors, application developers and computer science researchers."; + maintainers = with maintainers; [ markuskowa ]; + license = licenses.bsd3; + platforms = platforms.unix; + # In order to use OpenMPI with Extrae we need to keep the Extrae libraries + # rather than the ones from OpenMPI. This happens with libompitrace.so, so + # we set to a lower priority (higher value) the OpenMPI package. + priority = 10; + }; +} diff --git a/bsc/pmix/pmix2.nix b/bsc/pmix/pmix2.nix new file mode 100644 index 0000000..6598fce --- /dev/null +++ b/bsc/pmix/pmix2.nix @@ -0,0 +1,48 @@ +{ stdenv, fetchFromGitHub, perl, autoconf, automake +, libtool, flex, libevent, hwloc, munge, zlib +} : + +let + version = "2.2.4"; + +in stdenv.mkDerivation { + pname = "pmix"; + inherit version; + + src = fetchFromGitHub { + repo = "openpmix"; + owner = "openpmix"; + rev = "v${version}"; + sha256 = "1wc4sbnbg20lp6l6pk1sawrf5wrdajcijd1cmrpp1d6h9nv23ggv"; + }; + + postPatch = '' + patchShebangs ./autogen.pl + patchShebangs ./config + ''; + + nativeBuildInputs = [ perl autoconf automake libtool flex ]; + + buildInputs = [ libevent hwloc munge zlib ]; + + configureFlags = [ + "--with-libevent=${libevent.dev}" + "--with-munge=${munge}" + "--with-hwloc=${hwloc.dev}" + ]; + + preConfigure = '' + ./autogen.pl + ''; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + description = "Process Management Interface for HPC environments"; + homepage = "https://openpmix.github.io/"; + license = licenses.bsd3; + maintainers = [ maintainers.markuskowa ]; + platforms = platforms.linux; + }; +} + diff --git a/bsc/slurm/default.nix b/bsc/slurm/default.nix index d75fd78..a82a52f 100644 --- a/bsc/slurm/default.nix +++ b/bsc/slurm/default.nix @@ -58,6 +58,12 @@ stdenv.mkDerivation rec { patchShebangs ./configure ''; +# postBuild = '' +# pushd contrib/pmi2 +# make -j install +# popd +# ''; + postInstall = '' rm -f $out/lib/*.la $out/lib/slurm/*.la ''; diff --git a/bsc/slurm/pmi2.nix b/bsc/slurm/pmi2.nix new file mode 100644 index 0000000..36f337f --- /dev/null +++ b/bsc/slurm/pmi2.nix @@ -0,0 +1,82 @@ +{ stdenv, fetchFromGitHub, pkgconfig, libtool, curl +, python, munge, perl, pam, openssl +, ncurses, libmysqlclient, gtk2, lua, hwloc, numactl +, readline, freeipmi, libssh2, xorg +, pmix +# enable internal X11 support via libssh2 +, enableX11 ? true +}: + +stdenv.mkDerivation rec { + name = "slurm-libpmi2-${version}"; + version = "17.11.9-2"; + + # N.B. We use github release tags instead of https://www.schedmd.com/downloads.php + # because the latter does not keep older releases. + src = fetchFromGitHub { + owner = "SchedMD"; + repo = "slurm"; + # The release tags use - instead of . + rev = "${builtins.replaceStrings ["."] ["-"] name}"; + sha256 = "1lq4ac6yjai6wh979dciw8v3d99zbd3w36rfh0vpncqm672fg1qy"; + }; + + outputs = [ "out" ]; + + prePatch = stdenv.lib.optional enableX11 '' + substituteInPlace src/common/x11_util.c \ + --replace '"/usr/bin/xauth"' '"${xorg.xauth}/bin/xauth"' + ''; + + # nixos test fails to start slurmd with 'undefined symbol: slurm_job_preempt_mode' + # https://groups.google.com/forum/#!topic/slurm-devel/QHOajQ84_Es + # this doesn't fix tests completely at least makes slurmd to launch + hardeningDisable = [ "bindnow" ]; + + nativeBuildInputs = [ pkgconfig libtool ]; + buildInputs = [ + curl python munge perl pam openssl + libmysqlclient ncurses gtk2 + lua hwloc numactl readline freeipmi + pmix + ] ++ stdenv.lib.optionals enableX11 [ libssh2 xorg.xauth ]; + + configureFlags = with stdenv.lib; + [ "--with-munge=${munge}" + "--with-ssl=${openssl.dev}" + "--with-hwloc=${hwloc.dev}" + "--with-freeipmi=${freeipmi}" + "--sysconfdir=/etc/slurm" + "--with-pmix=${pmix}" + ] ++ (optional (gtk2 == null) "--disable-gtktest") + ++ (optional enableX11 "--with-libssh2=${libssh2.dev}"); + + + preConfigure = '' + patchShebangs ./doc/html/shtml2html.py + patchShebangs ./doc/man/man2html.py + patchShebangs ./configure + ''; + + preBuild = ''cd contribs/pmi2''; + + #buildPhase = '' + # pushd contrib/pmi2 + # make -j install SHELL=${SHELL} + # popd + #''; + + postInstall = '' + rm -f $out/lib/*.la $out/lib/slurm/*.la + ''; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + homepage = http://www.schedmd.com/; + description = "Simple Linux Utility for Resource Management"; + platforms = platforms.linux; + license = licenses.gpl2; + maintainers = with maintainers; [ jagajaga markuskowa ]; + }; +} diff --git a/default.nix b/default.nix index 0fed8c4..e28070d 100644 --- a/default.nix +++ b/default.nix @@ -33,11 +33,6 @@ let # BSC Packages # --------------------------------------------------------- # - # Custom OpenMPI with mpi_cxx enabled for TAMPI - openmpi = callPackage ./bsc/openmpi/default.nix { - enableCxx = true; - }; - # ParaStation MPI pscom = callPackage ./bsc/parastation/pscom.nix { }; psmpi = callPackage ./bsc/parastation/psmpi.nix { }; @@ -66,7 +61,23 @@ let intel-license = callPackage bsc/intel-compiler/license.nix { }; - slurm17 = callPackage ./bsc/slurm/default.nix { }; + pmix2 = callPackage ./bsc/pmix/pmix2.nix { }; + + slurm17 = callPackage ./bsc/slurm/default.nix { + pmix = pmix2; + }; + + slurm17-libpmi2 = callPackage ./bsc/slurm/pmi2.nix { + pmix = pmix2; + }; + + openmpi-mn4 = callPackage ./bsc/openmpi/default.nix { + pmix = pmix2; + pmi2 = slurm17-libpmi2; + enableCxx = true; + }; + + openmpi = openmpi-mn4; fftw = callPackage ./bsc/fftw/default.nix { mpi = mpi; From 1e07be863ac4d542fb5d0b02ed21a73600433d73 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Date: Tue, 18 Aug 2020 18:28:30 +0200 Subject: [PATCH 125/987] Add OSU test benchmarks --- bsc/garlic/argv.nix | 3 +- bsc/garlic/default.nix | 3 ++ bsc/garlic/exp/nbody/mpi.nix | 19 ++++++--- bsc/garlic/exp/osu/latency.nix | 70 ++++++++++++++++++++++++++++++++++ bsc/garlic/sbatch.nix | 2 + bsc/osu/default.nix | 38 ++++++++++++++++++ default.nix | 9 +++-- 7 files changed, 134 insertions(+), 10 deletions(-) create mode 100644 bsc/garlic/exp/osu/latency.nix create mode 100644 bsc/osu/default.nix diff --git a/bsc/garlic/argv.nix b/bsc/garlic/argv.nix index 701b8d7..73adc16 100644 --- a/bsc/garlic/argv.nix +++ b/bsc/garlic/argv.nix @@ -7,6 +7,7 @@ app , env ? "" , argv # bash array as string, example: argv=''(-f "file with spaces" -t 10)'' +, program ? "bin/run" }: stdenv.mkDerivation { @@ -23,7 +24,7 @@ stdenv.mkDerivation { ${env} argv=${argv} - exec ${app}/bin/run \''${argv[@]} + exec ${app}/${program} \''${argv[@]} EOF chmod +x $out/bin/run ''; diff --git a/bsc/garlic/default.nix b/bsc/garlic/default.nix index c975b25..38d7e73 100644 --- a/bsc/garlic/default.nix +++ b/bsc/garlic/default.nix @@ -36,6 +36,9 @@ let bs = callPackage ./exp/nbody/bs.nix { }; mpi = callPackage ./exp/nbody/mpi.nix { }; }; + osu = { + latency = callPackage ./exp/osu/latency.nix { }; + }; }; }; diff --git a/bsc/garlic/exp/nbody/mpi.nix b/bsc/garlic/exp/nbody/mpi.nix index 64f1279..a618f85 100644 --- a/bsc/garlic/exp/nbody/mpi.nix +++ b/bsc/garlic/exp/nbody/mpi.nix @@ -18,13 +18,17 @@ let config = { cc = [ bsc.icc ]; blocksize = [ 2048 ]; + mpi = [ bsc.impi bsc.openmpi bsc.mpich ]; }; extraConfig = { - particles = 16384; + particles = 32*1024; timesteps = 10; - ntasks = 2; - mpi = bsc.impi; + ntasksPerNode = 2; + nodes = 1; + time = "00:10:00"; + qos = "debug"; + #mpi = bsc.impi; #mpi = bsc.openmpi; gitBranch = "garlic/mpi+send"; gitURL = "ssh://git@bscpm02.bsc.es/garlic/apps/nbody.git"; @@ -37,7 +41,10 @@ let app = app; nixPrefix = "/gpfs/projects/bsc15/nix"; exclusive = false; - ntasks = "${toString conf.ntasks}"; + ntasksPerNode = "${toString conf.ntasksPerNode}"; + nodes = "${toString conf.nodes}"; + time = conf.time; + qos = conf.qos; chdirPrefix = "/home/bsc15/bsc15557/bsc-nixpkgs/out"; }; @@ -61,7 +68,7 @@ let nbody.override { inherit cc mpi blocksize gitBranch gitURL; }; pipeline = conf: -# sbatch conf ( + sbatch conf ( srun ( nixsetupWrapper ( argv conf ( @@ -69,7 +76,7 @@ let ) ) ) -# ) + ) ; # Ideally it should look like this: diff --git a/bsc/garlic/exp/osu/latency.nix b/bsc/garlic/exp/osu/latency.nix new file mode 100644 index 0000000..f3a0145 --- /dev/null +++ b/bsc/garlic/exp/osu/latency.nix @@ -0,0 +1,70 @@ +{ + bsc +, genApp +, genConfigs + +# Wrappers +, launchWrapper +, sbatchWrapper +, srunWrapper +, argvWrapper +, controlWrapper +, nixsetupWrapper +}: + +let + # Set the configuration for the experiment + config = { + mpi = [ bsc.impi bsc.openmpi bsc.mpich ]; + }; + + extraConfig = { + ntasksPerNode = 1; + nodes = 2; + time = "00:10:00"; + qos = "debug"; + }; + + # Compute the cartesian product of all configurations + configs = map (conf: conf // extraConfig) (genConfigs config); + + sbatch = conf: app: sbatchWrapper { + app = app; + nixPrefix = "/gpfs/projects/bsc15/nix"; + exclusive = false; + ntasksPerNode = "${toString conf.ntasksPerNode}"; + nodes = "${toString conf.nodes}"; + time = conf.time; + qos = conf.qos; + chdirPrefix = "/home/bsc15/bsc15557/bsc-nixpkgs/out"; + }; + + srun = app: srunWrapper { + app = app; + nixPrefix = "/gpfs/projects/bsc15/nix"; + }; + + argv = app: + argvWrapper { + app = app; + program = "bin/osu_latency"; + argv = "()"; + env = '' + export I_MPI_THREAD_SPLIT=1 + ''; + }; + + osumbFn = conf: + with conf; + bsc.osumb.override { inherit mpi; }; + + pipeline = conf: srun (nixsetupWrapper (argv (osumbFn conf))); + #pipeline = conf: sbatch conf (srun (nixsetupWrapper (argv bsc.osumb))); + + # Ideally it should look like this: + #pipeline = sbatch nixsetup control argv nbodyFn; + + jobs = map pipeline configs; + +in + launchWrapper jobs diff --git a/bsc/garlic/sbatch.nix b/bsc/garlic/sbatch.nix index f503e23..13092ba 100644 --- a/bsc/garlic/sbatch.nix +++ b/bsc/garlic/sbatch.nix @@ -10,6 +10,7 @@ , argv ? "" , binary ? "/bin/run" , ntasks ? null +, ntasksPerNode ? null , nodes ? null , exclusive ? true # By default we run in exclusive mode , qos ? null @@ -51,6 +52,7 @@ stdenv.mkDerivation rec { #SBATCH --job-name="${name}" '' + sbatchOpt "ntasks" ntasks + + sbatchOpt "ntasks-per-node" ntasksPerNode + sbatchOpt "nodes" nodes + sbatchOpt "chdir" "${chdirPrefix}/$(basename $out)" + sbatchOpt "output" output diff --git a/bsc/osu/default.nix b/bsc/osu/default.nix new file mode 100644 index 0000000..bbe8dc1 --- /dev/null +++ b/bsc/osu/default.nix @@ -0,0 +1,38 @@ +{ + stdenv, + fetchurl, + mpi +}: + +stdenv.mkDerivation rec { + version = "5.6.3"; + name = "osu-micro-benchmarks-${version}"; + + src = fetchurl { + url = "http://mvapich.cse.ohio-state.edu/download/mvapich/osu-micro-benchmarks-${version}.tar.gz"; + sha256 = "1f5fc252c0k4rd26xh1v5017wfbbsr2w7jm49x8yigc6n32sisn5"; + }; + + doCheck = true; + enableParallelBuilding = true; + buildInputs = [ mpi ]; + configureFlags = [ + "CC=${mpi}/bin/mpicc" + "CXX=${mpi}/bin/mpicxx" + ]; + + postInstall = '' + mkdir -p $out/bin + cp $out/libexec/osu-micro-benchmarks/mpi/one-sided/* $out/bin/ + cp $out/libexec/osu-micro-benchmarks/mpi/collective/* $out/bin/ + cp $out/libexec/osu-micro-benchmarks/mpi/pt2pt/* $out/bin/ + cp $out/libexec/osu-micro-benchmarks/mpi/startup/* $out/bin/ + ''; + + meta = { + description = "OSU Micro-Benchmarks"; + homepage = http://mvapich.cse.ohio-state.edu/benchmarks/; + maintainers = [ ]; + platforms = stdenv.lib.platforms.all; + }; +} diff --git a/default.nix b/default.nix index e28070d..44e919e 100644 --- a/default.nix +++ b/default.nix @@ -9,9 +9,8 @@ let self.bsc = rec { # Load the default implementation - #mpi = pkgs.mpich; - #mpi = pkgs.openmpi; - #mpi = openmpi; # Our OpenMPI variant + #mpi = mpich; + #mpi = openmpi; mpi = intel-mpi; # Load the default compiler @@ -37,6 +36,10 @@ let pscom = callPackage ./bsc/parastation/pscom.nix { }; psmpi = callPackage ./bsc/parastation/psmpi.nix { }; + osumb = callPackage ./bsc/osu/default.nix { }; + + mpich = pkgs.mpich; + # Default Intel MPI version is 2019 (the last one) impi = intel-mpi; intel-mpi = intel-mpi-2019; From c70d35cd50a7ec05f9b6a1b736ca5c81e6b9132a Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Date: Wed, 19 Aug 2020 11:06:23 +0200 Subject: [PATCH 126/987] Add MPICH with libfabric enabled --- bsc/mpich/default.nix | 62 +++++++++++++++++++++++++++++++++++++++++++ default.nix | 2 +- 2 files changed, 63 insertions(+), 1 deletion(-) create mode 100644 bsc/mpich/default.nix diff --git a/bsc/mpich/default.nix b/bsc/mpich/default.nix new file mode 100644 index 0000000..bf406c1 --- /dev/null +++ b/bsc/mpich/default.nix @@ -0,0 +1,62 @@ +{ + stdenv, + fetchurl, + perl, + gfortran, + openssh, + hwloc, + libfabric +}: + +stdenv.mkDerivation rec { + pname = "mpich"; + version = "3.3.2"; + + src = fetchurl { + url = "https://www.mpich.org/static/downloads/${version}/mpich-${version}.tar.gz"; + sha256 = "1farz5zfx4cd0c3a0wb9pgfypzw0xxql1j1294z1sxslga1ziyjb"; + }; + + configureFlags = [ + "--enable-shared" + "--enable-sharedlib" + "--with-device=ch4:ofi" + "--with-libfabric=${libfabric}" + ]; + + enableParallelBuilding = true; + + buildInputs = [ perl gfortran openssh hwloc libfabric ]; + + # doCheck = true; # Fails + + preFixup = '' + # Ensure the default compilers are the ones mpich was built with + sed -i 's:CC="gcc":CC=${stdenv.cc}/bin/gcc:' $out/bin/mpicc + sed -i 's:CXX="g++":CXX=${stdenv.cc}/bin/g++:' $out/bin/mpicxx + sed -i 's:FC="gfortran":FC=${gfortran}/bin/gfortran:' $out/bin/mpifort + '' + + stdenv.lib.optionalString (!stdenv.isDarwin) '' + # /tmp/nix-build... ends up in the RPATH, fix it manually + for entry in $out/bin/mpichversion $out/bin/mpivars; do + echo "fix rpath: $entry" + patchelf --set-rpath "$out/lib" $entry + done + ''; + + meta = with stdenv.lib; { + description = "Implementation of the Message Passing Interface (MPI) standard"; + + longDescription = '' + MPICH is a high-performance and widely portable implementation of + the Message Passing Interface (MPI) standard (MPI-1, MPI-2 and MPI-3). + ''; + homepage = "http://www.mpich.org"; + license = { + url = "https://github.com/pmodels/mpich/blob/v${version}/COPYRIGHT"; + fullName = "MPICH license (permissive)"; + }; + maintainers = [ ]; + platforms = platforms.linux ++ platforms.darwin; + }; +} diff --git a/default.nix b/default.nix index 44e919e..3abc476 100644 --- a/default.nix +++ b/default.nix @@ -38,7 +38,7 @@ let osumb = callPackage ./bsc/osu/default.nix { }; - mpich = pkgs.mpich; + mpich = callPackage ./bsc/mpich/default.nix { }; # Default Intel MPI version is 2019 (the last one) impi = intel-mpi; From 14684040a526fd9b3a257feb85062d16202dc08f Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Date: Wed, 19 Aug 2020 11:07:21 +0200 Subject: [PATCH 127/987] Intra/inter node latency tests --- bsc/garlic/default.nix | 8 ++++++-- bsc/garlic/exp/osu/latency.nix | 14 ++++++++++---- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/bsc/garlic/default.nix b/bsc/garlic/default.nix index 38d7e73..8e96d65 100644 --- a/bsc/garlic/default.nix +++ b/bsc/garlic/default.nix @@ -36,8 +36,12 @@ let bs = callPackage ./exp/nbody/bs.nix { }; mpi = callPackage ./exp/nbody/mpi.nix { }; }; - osu = { - latency = callPackage ./exp/osu/latency.nix { }; + osu = rec { + latency-internode = callPackage ./exp/osu/latency.nix { }; + latency-intranode = callPackage ./exp/osu/latency.nix { + interNode = false; + }; + latency = latency-internode; }; }; }; diff --git a/bsc/garlic/exp/osu/latency.nix b/bsc/garlic/exp/osu/latency.nix index f3a0145..3a3a777 100644 --- a/bsc/garlic/exp/osu/latency.nix +++ b/bsc/garlic/exp/osu/latency.nix @@ -10,6 +10,12 @@ , argvWrapper , controlWrapper , nixsetupWrapper + +# Should we test the network (true) or the shared memory (false)? +, interNode ? true + +# Enable multiple threads? +, multiThread ? false }: let @@ -19,8 +25,8 @@ let }; extraConfig = { - ntasksPerNode = 1; - nodes = 2; + nodes = if interNode then 2 else 1; + ntasksPerNode = if interNode then 1 else 2; time = "00:10:00"; qos = "debug"; }; @@ -31,7 +37,7 @@ let sbatch = conf: app: sbatchWrapper { app = app; nixPrefix = "/gpfs/projects/bsc15/nix"; - exclusive = false; + exclusive = true; ntasksPerNode = "${toString conf.ntasksPerNode}"; nodes = "${toString conf.nodes}"; time = conf.time; @@ -58,7 +64,7 @@ let with conf; bsc.osumb.override { inherit mpi; }; - pipeline = conf: srun (nixsetupWrapper (argv (osumbFn conf))); + pipeline = conf: sbatch conf (srun (nixsetupWrapper (argv (osumbFn conf)))); #pipeline = conf: sbatch conf (srun (nixsetupWrapper (argv bsc.osumb))); # Ideally it should look like this: From 5314f343b6338d58f44c8084e36d75a1be8ba0fa Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Date: Wed, 19 Aug 2020 18:16:00 +0200 Subject: [PATCH 128/987] Add static nix with shell set to /bin/sh --- bsc/nix/static.nix | 214 +++++++++++++++++++++++++++++++++++++++++++++ default.nix | 9 ++ 2 files changed, 223 insertions(+) create mode 100644 bsc/nix/static.nix diff --git a/bsc/nix/static.nix b/bsc/nix/static.nix new file mode 100644 index 0000000..8dd10fc --- /dev/null +++ b/bsc/nix/static.nix @@ -0,0 +1,214 @@ +{ lib, fetchurl, fetchFromGitHub, callPackage +, storeDir ? "/nix/store" +, stateDir ? "/nix/var" +, confDir ? "/etc" +, boehmgc +, stdenv, llvmPackages_6 +, sandbox-shell ? "/bin/sh" +}: + +let + +enableStatic = true; + +common = + { lib, stdenv, fetchpatch, perl, curl, bzip2, sqlite, openssl ? null, xz + , bash, coreutils, gzip, gnutar + , pkgconfig, boehmgc, perlPackages, libsodium, brotli, boost, editline, nlohmann_json + , autoreconfHook, autoconf-archive, bison, flex, libxml2, libxslt, docbook5, docbook_xsl_ns + , jq, libarchive + # Used by tests + , gmock + , storeDir + , stateDir + , confDir + , withLibseccomp ? lib.any (lib.meta.platformMatch stdenv.hostPlatform) libseccomp.meta.platforms, libseccomp + , withAWS ? !enableStatic && (stdenv.isLinux || stdenv.isDarwin), aws-sdk-cpp + , enableStatic ? true + , name, suffix ? "", src + + }: + let + nix = stdenv.mkDerivation rec { + inherit name src; + version = lib.getVersion name; + + is24 = lib.versionAtLeast version "2.4pre"; + isExactly23 = lib.versionAtLeast version "2.3" && lib.versionOlder version "2.4"; + + VERSION_SUFFIX = suffix; + + outputs = [ "out" "dev" "man" "doc" ]; + + nativeBuildInputs = + [ pkgconfig ] + ++ lib.optionals is24 [ autoreconfHook autoconf-archive bison flex libxml2 libxslt + docbook5 docbook_xsl_ns jq ]; + + buildInputs = + [ curl openssl sqlite xz bzip2 nlohmann_json + brotli boost editline boehmgc + ] + ++ lib.optional (stdenv.isLinux || stdenv.isDarwin) libsodium + ++ lib.optionals is24 [ libarchive gmock ] + ++ lib.optional withLibseccomp libseccomp + ++ lib.optional withAWS + ((aws-sdk-cpp.override { + apis = ["s3" "transfer"]; + customMemoryManagement = false; + }).overrideDerivation (args: { + patches = args.patches or [] ++ [(fetchpatch { + url = "https://github.com/edolstra/aws-sdk-cpp/commit/7d58e303159b2fb343af9a1ec4512238efa147c7.patch"; + sha256 = "103phn6kyvs1yc7fibyin3lgxz699qakhw671kl207484im55id1"; + })]; + })); + + propagatedBuildInputs = [ boehmgc ]; + + # Seems to be required when using std::atomic with 64-bit types + NIX_LDFLAGS = + # need to list libraries individually until + # https://github.com/NixOS/nix/commit/3e85c57a6cbf46d5f0fe8a89b368a43abd26daba + # is in a release + lib.optionalString enableStatic "-lssl -lbrotlicommon -lssh2 -lz -lnghttp2 -lcrypto" + + # need to detect it here until + # https://github.com/NixOS/nix/commits/74b4737d8f0e1922ef5314a158271acf81cd79f8 + # is in a release + + lib.optionalString (stdenv.hostPlatform.system == "armv5tel-linux" || stdenv.hostPlatform.system == "armv6l-linux") "-latomic"; + + preConfigure = + # Copy libboost_context so we don't get all of Boost in our closure. + # https://github.com/NixOS/nixpkgs/issues/45462 + lib.optionalString (!enableStatic) '' + mkdir -p $out/lib + cp -pd ${boost}/lib/{libboost_context*,libboost_thread*,libboost_system*} $out/lib + rm -f $out/lib/*.a + ${lib.optionalString stdenv.isLinux '' + chmod u+w $out/lib/*.so.* + patchelf --set-rpath $out/lib:${stdenv.cc.cc.lib}/lib $out/lib/libboost_thread.so.* + ''} + '' + + # For Nix-2.3, patch around an issue where the Nix configure step pulls in the + # build system's bash and other utilities when cross-compiling + lib.optionalString (stdenv.buildPlatform != stdenv.hostPlatform && isExactly23) '' + mkdir tmp/ + substitute corepkgs/config.nix.in tmp/config.nix.in \ + --subst-var-by bash ${bash}/bin/bash \ + --subst-var-by coreutils ${coreutils}/bin \ + --subst-var-by bzip2 ${bzip2}/bin/bzip2 \ + --subst-var-by gzip ${gzip}/bin/gzip \ + --subst-var-by xz ${xz}/bin/xz \ + --subst-var-by tar ${gnutar}/bin/tar \ + --subst-var-by tr ${coreutils}/bin/tr + mv tmp/config.nix.in corepkgs/config.nix.in + ''; + + configureFlags = + [ "--with-store-dir=${storeDir}" + "--localstatedir=${stateDir}" + "--sysconfdir=${confDir}" + "--disable-init-state" + "--enable-gc" + ] + ++ lib.optionals stdenv.isLinux [ + "--with-sandbox-shell=${sandbox-shell}" + ] + ++ lib.optional ( + stdenv.hostPlatform != stdenv.buildPlatform && stdenv.hostPlatform ? nix && stdenv.hostPlatform.nix ? system + ) ''--with-system=${stdenv.hostPlatform.nix.system}'' + # RISC-V support in progress https://github.com/seccomp/libseccomp/pull/50 + ++ lib.optional (!withLibseccomp) "--disable-seccomp-sandboxing"; + + makeFlags = [ "profiledir=$(out)/etc/profile.d" ] + ++ lib.optional (stdenv.hostPlatform != stdenv.buildPlatform) "PRECOMPILE_HEADERS=0"; + + installFlags = [ "sysconfdir=$(out)/etc" ]; + + doInstallCheck = true; # not cross + + # socket path becomes too long otherwise + preInstallCheck = lib.optional stdenv.isDarwin '' + export TMPDIR=$NIX_BUILD_TOP + ''; + + separateDebugInfo = stdenv.isLinux; + + enableParallelBuilding = true; + + meta = { + description = "Powerful package manager that makes package management reliable and reproducible"; + longDescription = '' + Nix is a powerful package manager for Linux and other Unix systems that + makes package management reliable and reproducible. It provides atomic + upgrades and rollbacks, side-by-side installation of multiple versions of + a package, multi-user package management and easy setup of build + environments. + ''; + homepage = "https://nixos.org/"; + license = stdenv.lib.licenses.lgpl2Plus; + maintainers = [ stdenv.lib.maintainers.eelco ]; + platforms = stdenv.lib.platforms.unix; + outputsToInstall = [ "out" "man" ]; + }; + + passthru = { + perl-bindings = stdenv.mkDerivation { + pname = "nix-perl"; + inherit version; + + inherit src; + + postUnpack = "sourceRoot=$sourceRoot/perl"; + + # This is not cross-compile safe, don't have time to fix right now + # but noting for future travellers. + nativeBuildInputs = + [ perl pkgconfig curl nix libsodium boost autoreconfHook autoconf-archive ]; + + configureFlags = + [ "--with-dbi=${perlPackages.DBI}/${perl.libPrefix}" + "--with-dbd-sqlite=${perlPackages.DBDSQLite}/${perl.libPrefix}" + ]; + + preConfigure = "export NIX_STATE_DIR=$TMPDIR"; + + preBuild = "unset NIX_INDENT_MAKE"; + }; + }; + }; + in nix; + +in rec { + + nix = nixStable; + + nixStable = callPackage common (rec { + name = "nix-2.3.7"; + src = fetchurl { + url = "https://nixos.org/releases/nix/${name}/${name}.tar.xz"; + sha256 = "dd8f52849414e5a878afe7e797aa4e22bab77c875d9da5a38d5f1bada704e596"; + }; + + inherit storeDir stateDir confDir boehmgc; + } // stdenv.lib.optionalAttrs stdenv.cc.isClang { + stdenv = llvmPackages_6.stdenv; + }); + + nixUnstable = lib.lowPrio (callPackage common rec { + name = "nix-2.4${suffix}"; + suffix = "pre20200721_ff314f1"; + + src = fetchFromGitHub { + owner = "NixOS"; + repo = "nix"; + rev = "ff314f186e3f91d87af6ad96c0ae3b472494b940"; + hash = "sha256-QibpLo4/gf2xYGoeQcgjZzH/qy5TBRVH+QCHgqOwur0="; + }; + + inherit storeDir stateDir confDir boehmgc; + }); + + nixFlakes = nixUnstable; + +} diff --git a/default.nix b/default.nix index 3abc476..048fdcb 100644 --- a/default.nix +++ b/default.nix @@ -4,6 +4,7 @@ let inherit (pkgs.lib) callPackageWith; inherit (pkgs.lib) callPackagesWith; callPackage = callPackageWith (pkgs // self.bsc); + callPackageStatic = callPackageWith (pkgs.pkgsStatic); callPackages = callPackagesWith (pkgs // self.bsc); self.bsc = rec { @@ -194,6 +195,14 @@ let nixUnstable nixFlakes; + nixStatic = (callPackageStatic ./bsc/nix/static.nix { + callPackage = callPackageWith (pkgs.pkgsStatic); + storeDir = "/nix/store"; + stateDir = "/nix/var"; + sandbox-shell = "/bin/sh"; + boehmgc = pkgs.pkgsStatic.boehmgc.override { enableLargeConfig = true; }; + }).nix; + test = { chroot = callPackage ./test/chroot.nix { }; From 4b27ceec6d18e754fdcdc60bc76b8a0417ee5cdb Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 21 Aug 2020 19:49:23 +0200 Subject: [PATCH 129/987] Add clsync tool --- bsc/clsync/default.nix | 54 ++++++++++++++++++++++++++++++++++++++++++ default.nix | 5 ++++ 2 files changed, 59 insertions(+) create mode 100644 bsc/clsync/default.nix diff --git a/bsc/clsync/default.nix b/bsc/clsync/default.nix new file mode 100644 index 0000000..4c2a80d --- /dev/null +++ b/bsc/clsync/default.nix @@ -0,0 +1,54 @@ +{ stdenv +, fetchFromGitHub +, libcap +, libcgroup +, libmhash +, doxygen +, graphviz +, autoreconfHook +, pkg-config +, glib +}: + +let + version = "0.4.4"; + +in stdenv.mkDerivation { + pname = "clsync"; + inherit version; + + src = fetchFromGitHub { + repo = "clsync"; + owner = "clsync"; + rev = "v${version}"; + sha256 = "0sdiyfwp0iqr6l1sirm51pirzmhi4jzgky5pzfj24nn71q3fwqgz"; + }; + + outputs = [ "out" "dev" ]; + + buildInputs = [ + autoreconfHook + libcap + libcgroup + libmhash + doxygen + graphviz + pkg-config + glib + ]; + + preConfigure = '' + ./configure --help + ''; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + description = "File live sync daemon based on inotify/kqueue/bsm (Linux, FreeBSD), written in GNU C"; + homepage = "https://github.com/clsync/clsync"; + license = licenses.gpl3Plus; + maintainers = [ ]; + platforms = platforms.linux; + }; +} + diff --git a/default.nix b/default.nix index 048fdcb..a3a2028 100644 --- a/default.nix +++ b/default.nix @@ -9,6 +9,9 @@ let self.bsc = rec { + nixpkgs = pkgs; + + # Load the default implementation #mpi = mpich; #mpi = openmpi; @@ -195,6 +198,8 @@ let nixUnstable nixFlakes; + clsync = callPackage ./bsc/clsync/default.nix { }; + nixStatic = (callPackageStatic ./bsc/nix/static.nix { callPackage = callPackageWith (pkgs.pkgsStatic); storeDir = "/nix/store"; From 147387456389e6bcefb4fc2d2d540179933f2091 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 24 Aug 2020 18:06:47 +0200 Subject: [PATCH 130/987] Use relative path in sbatch --- bsc/garlic/exp/nbody/bs.nix | 1 - bsc/garlic/sbatch.nix | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/bsc/garlic/exp/nbody/bs.nix b/bsc/garlic/exp/nbody/bs.nix index 979b925..0b41d34 100644 --- a/bsc/garlic/exp/nbody/bs.nix +++ b/bsc/garlic/exp/nbody/bs.nix @@ -37,7 +37,6 @@ let nixPrefix = "/gpfs/projects/bsc15/nix"; exclusive = false; ntasks = "${toString conf.ntasks}"; - chdirPrefix = "/home/bsc15/bsc15557/bsc-nixpkgs/out"; }; srun = app: srunWrapper { diff --git a/bsc/garlic/sbatch.nix b/bsc/garlic/sbatch.nix index 13092ba..dfdc313 100644 --- a/bsc/garlic/sbatch.nix +++ b/bsc/garlic/sbatch.nix @@ -5,7 +5,7 @@ { app -, chdirPrefix +, chdirPrefix ? "." , nixPrefix ? "" , argv ? "" , binary ? "/bin/run" From 76b0a239e3e75fc647141794da81ee5ed8ceefef Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 24 Aug 2020 18:07:09 +0200 Subject: [PATCH 131/987] sbatch: Add reservation flag --- bsc/garlic/sbatch.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/bsc/garlic/sbatch.nix b/bsc/garlic/sbatch.nix index dfdc313..41bffb1 100644 --- a/bsc/garlic/sbatch.nix +++ b/bsc/garlic/sbatch.nix @@ -14,6 +14,7 @@ , nodes ? null , exclusive ? true # By default we run in exclusive mode , qos ? null +, reservation ? null , time ? null , output ? "job_%j.out" , error ? "job_%j.err" @@ -60,6 +61,7 @@ stdenv.mkDerivation rec { + sbatchEnable "exclusive" exclusive + sbatchOpt "time" time + sbatchOpt "qos" qos + + sbatchOpt "reservation" reservation + optionalString (extra!=null) extra + '' From 5b1a296640a468f655a286a1f1f1b089c987cab7 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Date: Tue, 25 Aug 2020 12:59:44 +0200 Subject: [PATCH 132/987] Add build debug section --- README | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/README b/README index d3d5eb7..582f0c3 100644 --- a/README +++ b/README @@ -383,4 +383,40 @@ https://nixos.org/nixos/nix-pills/ +2.4 Debugging the build process + + It may happen that the build process fails in an unexpected way. Most + problems are related to missing dependencies and can be easily found + by looking at the error messages. + + Other build problems are more subtle and require more debugging time. + One way of inspecting a build problem is by adding the breakpointHook + hook to the nativeBuildInputs array in a nix derivation (see + https://nixos.org/nixpkgs/manual/#ssec-setup-hooks for more info), + which will stop the build process and allow a shell to be attached to + the sandbox. + + xeon07$ nix-build -A bsc.nbody + ... + /nix/store/gvqm2yc9xx4vh3nglgckz8siya66jnkx-stdenv-linux/setup: line + 83: fake-missing-command: command not found + build failed in buildPhase with exit code 127 + To attach install cntr and run the following command as root: + + cntr attach -t command \ + cntr-/nix/store/sk2nsj7xfr62cjk6m3725ydfyswqz7n1-nbody + + The command must run as root user, so you can use `sudo -i` to run it, + (the -i option is required to load the shell profile which provides + the nix path containing the cntr tool): + + xeon$ sudo -i cntr attach -t command \ + cntr-/nix/store/sk2nsj7xfr62cjk6m3725ydfyswqz7n1-nbody + nixbld@localhost:/var/lib/cntr> ls + bin build dev etc nix proc tmp var + + Then you can inspect the build environment to see why the build + failed. Source the build/env-vars file to get the same environment + variables (which include the $PATH) of the build process. + /* vim: set ts=2 sw=2 tw=72 fo=watqc expandtab spell autoindent: */ From cff653d16486c09250267fe55eeb3b6dd4ff18d2 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 25 Aug 2020 14:52:18 +0200 Subject: [PATCH 133/987] Simplify dummy --- bsc/dummy/default.nix | 28 +++++++++++++--------------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/bsc/dummy/default.nix b/bsc/dummy/default.nix index 39b5b7b..b063516 100644 --- a/bsc/dummy/default.nix +++ b/bsc/dummy/default.nix @@ -2,23 +2,21 @@ stdenv }: -{ - hello = stdenv.mkDerivation rec { - name = "dummy"; +stdenv.mkDerivation rec { + name = "dummy"; - src = null; - dontUnpack = true; - dontBuild = true; + src = null; + dontUnpack = true; + dontBuild = true; - installPhase = '' - mkdir -p $out/bin + installPhase = '' + mkdir -p $out/bin - cat > $out/bin/dummy < $out/bin/dummy < Date: Tue, 25 Aug 2020 15:16:19 +0200 Subject: [PATCH 134/987] Use nix copy to upload to mn4, fixes #15 --- bsc/nix/upload.sh | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100755 bsc/nix/upload.sh diff --git a/bsc/nix/upload.sh b/bsc/nix/upload.sh new file mode 100755 index 0000000..00286e5 --- /dev/null +++ b/bsc/nix/upload.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +# This post build hook sends the closure of the just built derivation to the +# target machine. In our case this is the MareNostrum4 cluster. + +# set -e fails as the profile runs some erroring programs +# We need the profile to load nix in the $PATH +. /etc/profile + +set -eu +set -f # disable globbing +export IFS=' ' +nixroot=/gpfs/projects/bsc15/nix +store=$nixroot/nix/store +target=ssh://mn + +nix copy --to $target $OUT_PATHS From d1e152a917633cac33f0fe84928191c51ac31210 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 25 Aug 2020 18:35:58 +0200 Subject: [PATCH 135/987] Exit on error in control script --- bsc/garlic/control.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/bsc/garlic/control.nix b/bsc/garlic/control.nix index cee9edb..0e5daa8 100644 --- a/bsc/garlic/control.nix +++ b/bsc/garlic/control.nix @@ -14,6 +14,7 @@ stdenv.mkDerivation { mkdir -p $out/bin cat > $out/bin/run < Date: Tue, 25 Aug 2020 18:36:33 +0200 Subject: [PATCH 136/987] Remove nix-setup verbose info --- bsc/garlic/nix-setup.nix | 1 - 1 file changed, 1 deletion(-) diff --git a/bsc/garlic/nix-setup.nix b/bsc/garlic/nix-setup.nix index 8ae89bc..6f5e100 100644 --- a/bsc/garlic/nix-setup.nix +++ b/bsc/garlic/nix-setup.nix @@ -18,7 +18,6 @@ stdenv.mkDerivation { # We need to enter the nix namespace first, in order to have /nix # available, so we use this hack: if [ ! -e /nix ]; then - >&2 echo "running nix-setup \$0" exec nix-setup \$0 fi From 27fbecf970cce6381299040423c68f7b94349583 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 25 Aug 2020 18:37:50 +0200 Subject: [PATCH 137/987] nbody: Use garlic git URL --- bsc/garlic/nbody/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bsc/garlic/nbody/default.nix b/bsc/garlic/nbody/default.nix index 5f0a3d0..3de6e2e 100644 --- a/bsc/garlic/nbody/default.nix +++ b/bsc/garlic/nbody/default.nix @@ -4,7 +4,7 @@ , mpi ? null , cflags ? null , gitBranch -, gitURL ? "ssh://git@bscpm02.bsc.es/rarias/nbody.git" +, gitURL ? "ssh://git@bscpm02.bsc.es/garlic/apps/nbody.git" , blocksize ? 2048 }: From cfa51879885b46dab29cf2480098826ceb7f07e3 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 25 Aug 2020 18:38:31 +0200 Subject: [PATCH 138/987] nbody: use intel cc and mpi by default --- bsc/garlic/default.nix | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/bsc/garlic/default.nix b/bsc/garlic/default.nix index 8e96d65..214b237 100644 --- a/bsc/garlic/default.nix +++ b/bsc/garlic/default.nix @@ -20,7 +20,8 @@ let }; nbody = callPackage ./nbody { - cc = pkgs.gcc7; + cc = bsc.icc; + mpi = bsc.impi; gitBranch = "garlic/seq"; }; From 09c2b9005a6d19dfbe545ee73c7c2271149708e7 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 25 Aug 2020 18:39:31 +0200 Subject: [PATCH 139/987] Testing nbody blocksize with impi Weird run times with srun: Two exceed 20%. Relative times: 0.998649 0.998936 0.999409 1.00018 1.00191 0.998684 0.998936 0.999432 1.00041 1.00222 0.998776 0.999065 0.999527 1.00126 1.0024 0.998786 0.999084 0.999558 1.00138 1.00242 0.998856 0.999102 0.999727 1.00155 1.25585 0.998895 0.9992 0.999849 1.0018 1.27138 --- bsc/garlic/exp/nbody/bs.nix | 35 ++++++++++++++++++++++------------- 1 file changed, 22 insertions(+), 13 deletions(-) diff --git a/bsc/garlic/exp/nbody/bs.nix b/bsc/garlic/exp/nbody/bs.nix index 0b41d34..088d49a 100644 --- a/bsc/garlic/exp/nbody/bs.nix +++ b/bsc/garlic/exp/nbody/bs.nix @@ -17,14 +17,18 @@ let # Set the configuration for the experiment config = { cc = [ bsc.icc ]; - blocksize = [ 1024 2048 4096 8192 ]; + blocksize = [ 1024 ]; }; extraConfig = { - particles = 16384; + gitBranch = "garlic/mpi+send"; + mpi = bsc.impi; + particles = 1024*128; timesteps = 10; - ntasks = 1; - nnodes = 1; + ntasksPerNode = "48"; + nodes = "1"; + time = "02:00:00"; + qos = "debug"; }; # Compute the cartesian product of all configurations @@ -32,11 +36,11 @@ let filteredConfigs = with builtins; filter (c: c.blocksize <= 4096) allConfigs; configs = map (conf: conf // extraConfig) filteredConfigs; - sbatch = conf: app: sbatchWrapper { + sbatch = conf: app: with conf; sbatchWrapper { app = app; nixPrefix = "/gpfs/projects/bsc15/nix"; - exclusive = false; - ntasks = "${toString conf.ntasks}"; + exclusive = true; + inherit ntasksPerNode nodes time qos; }; srun = app: srunWrapper { @@ -48,20 +52,25 @@ let with conf; argvWrapper { app = app; + env = '' + set -e + export I_MPI_THREAD_SPLIT=1 + ''; argv = ''(-t ${toString timesteps} -p ${toString particles})''; }; nbodyFn = conf: with conf; - nbody.override { inherit cc blocksize; }; + nbody.override { inherit cc mpi blocksize gitBranch; }; pipeline = conf: sbatch conf ( - srun ( - nixsetupWrapper ( - controlWrapper ( - argv conf ( - nbodyFn conf))))); + nixsetupWrapper ( + controlWrapper ( + srun ( + nixsetupWrapper ( + argv conf ( + nbodyFn conf)))))); # Ideally it should look like this: #pipeline = sbatch nixsetup control argv nbodyFn; From 87809ef903dbef7c1c33612f134a50dd355fdcf7 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 26 Aug 2020 19:20:17 +0200 Subject: [PATCH 140/987] Update extrae and enable man pages --- bsc/extrae/default.nix | 33 ++++++++++++++++++++++++++------- 1 file changed, 26 insertions(+), 7 deletions(-) diff --git a/bsc/extrae/default.nix b/bsc/extrae/default.nix index a47bef4..6ce9fa8 100644 --- a/bsc/extrae/default.nix +++ b/bsc/extrae/default.nix @@ -1,5 +1,5 @@ { stdenv -, fetchgit +, fetchFromGitHub , boost , libdwarf , libelf @@ -10,30 +10,37 @@ , libiberty , gfortran , xml2 +, which , mpi ? null , cuda ? null , llvmPackages , autoreconfHook +, python37Packages +, installShellFiles }: stdenv.mkDerivation rec { name = "extrae"; - version = "3.7.1"; + version = "3.8.3"; # src = fetchurl { # url = "https://ftp.tools.bsc.es/extrae/${name}-${version}-src.tar.bz2"; # sha256 = "0y036qc7y30pfj1mnb9nzv2vmxy6xxiy4pgfci6l3jc0lccdsgf8"; # }; - # Use patched Extrae version - src = fetchgit { - url = "https://github.com/rodarima/extrae"; - rev = "15883516d6bd802e5b76ff28c4b4a3a5cb113880"; - sha256 = "1hmf6400kw5k3j6xdbbd0yw4xhrjhk1kibp6m7r2i000qjgha8v6"; + src = fetchFromGitHub { + owner = "rodarima"; + #owner = "bsc-performance-tools"; + repo = "extrae"; + rev = "a8ec6882c03d130f88b09f2114887101ca9f6b09"; + #rev = "${version}"; + sha256 = "02gwl17r63kica6lxycyn10a0r2ciycf6g3cdq5cna5zl351qf31"; }; enableParallelBuilding = true; + nativeBuildInputs = [ installShellFiles ]; + buildInputs = [ autoreconfHook gfortran @@ -44,7 +51,9 @@ stdenv.mkDerivation rec { libiberty mpi xml2 + which libxml2.dev + python37Packages.sphinx ] ++ stdenv.lib.optional stdenv.cc.isClang llvmPackages.openmp; @@ -71,6 +80,16 @@ stdenv.mkDerivation rec { --without-dyninst) ''; + # Install the manuals only by hand, as we don't want to pull the complete + # LaTeX world + postBuild = '' + make -C docs man + ''; + + postInstall = '' + installManPage docs/builds/man/*/* + ''; + # ++ ( # if (openmp) # then [ "--enable-openmp" ] From 196b6815864f9463d5e7f9f185f8007a3d230bf9 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 26 Aug 2020 19:21:14 +0200 Subject: [PATCH 141/987] mpich: add enableDebug option --- bsc/mpich/default.nix | 20 ++++++++++++-------- default.nix | 1 + 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/bsc/mpich/default.nix b/bsc/mpich/default.nix index bf406c1..3f174c4 100644 --- a/bsc/mpich/default.nix +++ b/bsc/mpich/default.nix @@ -1,13 +1,16 @@ { - stdenv, - fetchurl, - perl, - gfortran, - openssh, - hwloc, - libfabric + stdenv +, fetchurl +, perl +, gfortran +, openssh +, hwloc +, libfabric +, enableDebug ? false }: +with stdenv.lib; + stdenv.mkDerivation rec { pname = "mpich"; version = "3.3.2"; @@ -22,7 +25,8 @@ stdenv.mkDerivation rec { "--enable-sharedlib" "--with-device=ch4:ofi" "--with-libfabric=${libfabric}" - ]; + ] + ++ optional enableDebug "--enable-g=dbg,log"; enableParallelBuilding = true; diff --git a/default.nix b/default.nix index a3a2028..2eabca1 100644 --- a/default.nix +++ b/default.nix @@ -43,6 +43,7 @@ let osumb = callPackage ./bsc/osu/default.nix { }; mpich = callPackage ./bsc/mpich/default.nix { }; + mpichDbg = callPackage ./bsc/mpich/default.nix { enableDebug = true; }; # Default Intel MPI version is 2019 (the last one) impi = intel-mpi; From 0cc5fe92e5b8549fef8587d402b5b7b97ac56552 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 28 Aug 2020 20:01:58 +0200 Subject: [PATCH 142/987] Add documentation on sources of variability --- NOISE | 85 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 NOISE diff --git a/NOISE b/NOISE new file mode 100644 index 0000000..913d33a --- /dev/null +++ b/NOISE @@ -0,0 +1,85 @@ + + Known sources of noise + in MareNostrum 4 + + +ABSTRACT + + The experiments run at MareNostrum 4 show that there are several + factors that can affect the execution time. Some may even become the + dominant part of the time, rendering the experiment invalid. + + This document lists all known sources of variability and tries to give + an overview on how to detect and correct the problems. + +1. Notable sources of variability + + Usually all sources were found in the MareNostrum 4 cluster, but they + may apply to other machines. Some may have a detection mechanism so + the effect can be neglected, but others don't. Also, some problems + only occur with low probability. + + Other sources of variability with a low effect, say lower than 1% of + the mean time, are not listed here. + +1.1 The daemon slurmstepd eats sys CPU in a new thread + + For a period of about 10 seconds a thread is created from the + slurmstepd process when a job is running, which uses quite a lot of + CPU. This event happens from time to time with unknown frequency. It + was first observed in the nbody program, as it almost doubles the time + per iteration, as the other processes are waiting for the one with + slow CPU to continue to the next iteration. The SLURM version was + 17.11.7 and the program was executed with sbatch+srun. See the issue + for more details: + + https://pm.bsc.es/gitlab/rarias/bsc-nixpkgs/-/issues/19 + + It can be detected by looking at the cycles per us view with Extrae, + with the PAPI counters enabled. It shows a slowdown in one process + when the problem occurs. Also, perf-sched(1) can be used to trace + context switches to other programs but requires access to the debugfs. + +1.2 MPICH uses ethernet rather than infiniband + + Some MPI implementations (like MPICH) can silently use non-optimal + fabrics like the ethernet rather than infiniband because the are + misconfigured. + + Can be detected by running latency benchmarks like the OSU micro + benchmark, which should report a low latency. It can also be reported + by using strace to ensure which network card is being used. + +1.3 CPU binding + + A thread may switch between CPUs when running, leading to a drop in + performance. To ensure that it remains in the same process it can be + binded with srun(1) or sbatch(1) using the --cpu-bind option, or using + taskset(1). + + It can be detected by running the program with Extrae and using the + General/view/executing_cpu.cfg configuration in Paraver. After + adjusting the scale, all processes must have a different color from + each other (the assigned CPU) and keep it constant. Otherwise changes + of CPUs are happening. + +1.4 Libraries that use dlopen(3) + + Some libraries or programs try to determine which components are + available in a system by looking for specific libraries in the search + path determined at runtime. + + This behavior can cause a program to change the execution time + depending on the environment variables like LD_LIBRARY_PATH. + + It can be detected by setting LD_DEBUG=all (see ld.so(8)) or using + strace(1) when running the program. + +1.5 Intel MPI library selection + + The Intel MPI library has several variants which are loaded at run + time: debug, release, debug_mt and release_mt. Of which the + I_MPI_THREAD_SPLIT controls whether the multithread capabilities are + enabled or not. + +/* vim: set ts=2 sw=2 tw=72 fo=watqc expandtab spell autoindent: */ From 86132533951c4c722f2722705f7f48c7e5d10865 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 31 Aug 2020 17:29:32 +0200 Subject: [PATCH 143/987] Add MN4 section and rename --- README | 127 +++++++++++++++++++++++++++++++++++++-------------------- 1 file changed, 82 insertions(+), 45 deletions(-) diff --git a/README b/README index 582f0c3..d88ef87 100644 --- a/README +++ b/README @@ -3,17 +3,19 @@ BSC Nixpkgs: User guide -1 Introduction +ABSTRACT This repository contains a set of nix packages used in the Barcelona Supercomputing Center by the Programming Models group. + The current setup uses the xeon07 machine to build packages, which are + automatically uploaded to MareNostrum4, due to lack of permissions in + the latter to perform the build safely. + Some preliminary steps must be done manually to be able to build and install packages (derivations in nix jargon). - This guide is specific for the nix installation in the xeon07 node, - accessed by the ssfhead.bsc.es login node, but it may be used in other - machines as well. +1. Introduction To easily connect to xeon07 in one step, setup the SSH (for version 7.3 and upwards) configuration file in ~/.ssh/config adding these @@ -30,39 +32,22 @@ You should be able to connect with: - $ ssh xeon07 + laptop$ ssh xeon07 1.1 Network access - In order to use nix would you need to be able to download the sources + In order to use nix you would need to be able to download the sources from Internet. Usually the download requires the ports 22, 80 and 443 to be open for outgoing traffic. - Unfortunately, in some clusters (as is the case in xeon07) access to - Internet is disabled. However you can tunnel the connection by SSH to - your local machine, and then reach the Internet. + Check that you have network access in xeon07 provided by the + environment variables "http_proxy" and "https_proxy". Try to fetch a + webpage with curl, to ensure the proxy is working: - In order to tell nix to use the proxy connection, you will need to - export the "https_proxy" and "http_proxy" variables. A proxy - connection is already configured in xeon07 and you can automatically - set those variables to the correct address by loading: + xeon07$ curl x.com + x - xeon07$ . /scratch/nix/internet - - Consider adding the command to your ~/.bashrc file so you don't need - to do it every time you want to use nix. - - Now you should be able to reach the outside world by running: - - xeon07$ curl google.com - - 301 Moved -

301 Moved

- The document has moved - here. - - -1.1 Prepare SSH keys +1.2 SSH keys Package sources are usually downloaded directly from the git server, so you must be able to access all repositories without a password @@ -103,41 +88,76 @@ Welcome to GitLab, @rarias! Connection to bscpm02.bsc.es closed. - Verify that you can access rarias/nanos6 repository (otherwise you + Verify that you can access nanos6/nanos6 repository (otherwise you first need to ask to be granted read access), at: - https://pm.bsc.es/gitlab/rarias/nanos6 + https://pm.bsc.es/gitlab/nanos6/nanos6 - Finally, you should be able to download the rarias/nanos6 git + Finally, you should be able to download the nanos6/nanos6 git repository without any password interaction by running: - xeon07$ git clone git@bscpm02.bsc.es:rarias/nanos6.git + xeon07$ git clone git@bscpm02.bsc.es:nanos6/nanos6.git -1.3 Prepare the bsc-nixpkgs repo +1.3 The bscpkgs repo Once you have Internet and you have granted access to the PM GitLab - repositories you can begin down the rabbit hole of nix. First ensure + repositories you can begin building software with nix. First ensure that the nix binaries are available from your shell in xeon07: xeon07$ nix --version nix (Nix) 2.3.6 - Now you are set to install packages with nix. Clone the bsc-nixpkgs - repository: + Now you are ready to build and install packages with nix. Clone the + bscpkgs repository: - xeon07$ git clone git@bscpm02.bsc.es:rarias/bsc-nixpkgs.git + xeon07$ git clone git@bscpm02.bsc.es:nanos6/bscpkgs.git Nix looks in the current folder for a file named "default.nix" for - packages, so go to the repo: + packages, so go to the repo directory: - xeon07$ cd bsc-nixpkgs + xeon07$ cd bscpkgs Now you should be able to build nanos6 from the git repository: - xeon07$ nix-build -A bsc.nanos6-git + xeon07$ nix-build -A bsc.nanos6 + .. + /nix/store/3i0qkdywm9xjv2cm1ldx9smb552sf6r1-nanos6-2.4-6f10a32 - The output is placed in the "result" symbolic link. + The installation is placed in the nix store, with the "result" + symbolic link pointing to the same location: + xeon07$ readlink result + /nix/store/3i0qkdywm9xjv2cm1ldx9smb552sf6r1-nanos6-2.4-6f10a32 + +1.4 Configuration of mn4 (MareNostrum 4) + + In order to execute the programs built at xeon07, you first need to + enter nix environment. To do so, add to the end of the file ~/.profile + in mn4 the following line: + + export PATH=/gpfs/projects/bsc15/nix/bin:$PATH + + Then logout and login again (our source the ~/.profile file) and you + will now have the `nix-setup` command available. This command executes + a new shell where the /nix store is available. To execute it: + + mn4$ nix-setup + + Now you will see a new shell, where you can access the nix store: + + nix|mn4$ ls /nix + gcroots profiles store var + + The last build of nanos6 can be also found in mn4 at the same + location: + + /nix/store/3i0qkdywm9xjv2cm1ldx9smb552sf6r1-nanos6-2.4-6f10a32 + + Remember to enter the nix environment by running `nix-setup` when you + need something from the nix store. + + You cannot perform any build operations from mn4: to do so use the + xeon07 machine. 2. Basic usage of nix @@ -239,7 +259,7 @@ has already built the package then the build process is not needed, and the package is used as is. - In order to build a BSC package go to the `bsc-nixpkgs` directory, and + In order to build a BSC package go to the `bscpkgs` directory, and run: xeon07$ nix-build -A bsc.dummy @@ -314,7 +334,7 @@ https://nixos.wiki/wiki/Nix#Sandboxing - The top level "default.nix" file of the bsc-nixpkgs serves as a index + The top level "default.nix" file of the bscpkgs serves as a index of all BSC packages. You can see the definition for each package, for example the nbody app: @@ -378,7 +398,7 @@ libmpi.so.12 => /nix/store/jvsjvxj2a08340fpdrqbqix9z3mpp3bd-intel-mpi-2019.7.217/lib/libmpi.so.12 (0x00007f39fed34000) Take a look at the different package description files in the - bsc-nixpkgs repository if you want to understand more details. Also + bscpkgs repository if you want to understand more details. Also the nix pills are a very good reference: https://nixos.org/nixos/nix-pills/ @@ -419,4 +439,21 @@ failed. Source the build/env-vars file to get the same environment variables (which include the $PATH) of the build process. +3. Running programs in MN4 + + + + After a successful build, the result is automatically uploaded to MN4, + and is ready to be used. You could see a line stating that the upload + process was successful, and were the output was placed: + + xeon07$ nix-build -A bsc.dummy + ... + running post-build-hook '/etc/nix/upload.sh'... + post-build-hook: Upload complete + /nix/store/pk1pzhnciynh8k6w5fhdn70zxq06k5kh-dummy + /nix/store/pk1pzhnciynh8k6w5fhdn70zxq06k5kh-dummy + + . + /* vim: set ts=2 sw=2 tw=72 fo=watqc expandtab spell autoindent: */ From 4fa8d8f6830264984122ec9e5caa3d48129e533a Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 31 Aug 2020 17:33:37 +0200 Subject: [PATCH 144/987] Remove duplicated section --- README | 17 ----------------- 1 file changed, 17 deletions(-) diff --git a/README b/README index d88ef87..b338308 100644 --- a/README +++ b/README @@ -439,21 +439,4 @@ ABSTRACT failed. Source the build/env-vars file to get the same environment variables (which include the $PATH) of the build process. -3. Running programs in MN4 - - - - After a successful build, the result is automatically uploaded to MN4, - and is ready to be used. You could see a line stating that the upload - process was successful, and were the output was placed: - - xeon07$ nix-build -A bsc.dummy - ... - running post-build-hook '/etc/nix/upload.sh'... - post-build-hook: Upload complete - /nix/store/pk1pzhnciynh8k6w5fhdn70zxq06k5kh-dummy - /nix/store/pk1pzhnciynh8k6w5fhdn70zxq06k5kh-dummy - - . - /* vim: set ts=2 sw=2 tw=72 fo=watqc expandtab spell autoindent: */ From 68c86919165aeaae76a9cad40f03c5d8106f8640 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 31 Aug 2020 17:34:37 +0200 Subject: [PATCH 145/987] Update title --- README | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README b/README index b338308..3feea1a 100644 --- a/README +++ b/README @@ -1,6 +1,6 @@ - BSC Nixpkgs: User guide + bscpkgs: User guide ABSTRACT From d05d32edbf7e6c928f41a4eb45b201fef5af2a56 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 31 Aug 2020 17:56:58 +0200 Subject: [PATCH 146/987] Fix repo path and bashrc --- README | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/README b/README index 3feea1a..14c2cf4 100644 --- a/README +++ b/README @@ -110,21 +110,22 @@ ABSTRACT Now you are ready to build and install packages with nix. Clone the bscpkgs repository: - xeon07$ git clone git@bscpm02.bsc.es:nanos6/bscpkgs.git + xeon07$ git clone git@bscpm02.bsc.es:rarias/bscpkgs.git Nix looks in the current folder for a file named "default.nix" for packages, so go to the repo directory: xeon07$ cd bscpkgs - Now you should be able to build nanos6 from the git repository: + Now you should be able to build nanos6: xeon07$ nix-build -A bsc.nanos6 .. /nix/store/3i0qkdywm9xjv2cm1ldx9smb552sf6r1-nanos6-2.4-6f10a32 - The installation is placed in the nix store, with the "result" - symbolic link pointing to the same location: + The installation is placed in the nix store (with the path stated in + the last line of the build process), with the "result" symbolic link + pointing to the same location: xeon07$ readlink result /nix/store/3i0qkdywm9xjv2cm1ldx9smb552sf6r1-nanos6-2.4-6f10a32 @@ -132,12 +133,12 @@ ABSTRACT 1.4 Configuration of mn4 (MareNostrum 4) In order to execute the programs built at xeon07, you first need to - enter nix environment. To do so, add to the end of the file ~/.profile + enter nix environment. To do so, add to the end of the file ~/.bashrc in mn4 the following line: export PATH=/gpfs/projects/bsc15/nix/bin:$PATH - Then logout and login again (our source the ~/.profile file) and you + Then logout and login again (our source the ~/.bashrc file) and you will now have the `nix-setup` command available. This command executes a new shell where the /nix store is available. To execute it: From d469ccd59daab0bfe1f2b15a6e75bde96b4a02ad Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 2 Sep 2020 10:44:13 +0200 Subject: [PATCH 147/987] Add extrae and perf stages --- bsc/garlic/control.nix | 2 +- bsc/garlic/default.nix | 8 ++ bsc/garlic/exp/nbody/bs.nix | 45 ++++++- bsc/garlic/exp/nbody/extrae.xml | 211 ++++++++++++++++++++++++++++++++ bsc/garlic/exp/osu/latency.nix | 12 +- bsc/garlic/extrae.nix | 30 +++++ bsc/garlic/nbody/default.nix | 10 +- bsc/garlic/perf.nix | 26 ++++ bsc/garlic/sbatch.nix | 1 + bsc/garlic/srun.nix | 8 +- bsc/garlic/statspy.nix | 29 +++++ 11 files changed, 368 insertions(+), 14 deletions(-) create mode 100644 bsc/garlic/exp/nbody/extrae.xml create mode 100644 bsc/garlic/extrae.nix create mode 100644 bsc/garlic/perf.nix create mode 100644 bsc/garlic/statspy.nix diff --git a/bsc/garlic/control.nix b/bsc/garlic/control.nix index 0e5daa8..268c928 100644 --- a/bsc/garlic/control.nix +++ b/bsc/garlic/control.nix @@ -14,7 +14,7 @@ stdenv.mkDerivation { mkdir -p $out/bin cat > $out/bin/run < + + + + + + + + + + + + + + + + 1-3 + + 1-5 + + 1-3 + + 1-3 + + 1-3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + PAPI_TOT_INS,PAPI_TOT_CYC + + + + + + + + + + + + + + + + + TRACE + + 5 + + /scratch + + /gpfs/scratch/bsc41/bsc41273 + + + + + + 5000000 + + + + + + + + /gpfs/scratch/bsc41/bsc41273/control + + + + + + + 10M + + + + + + + + + + + 500u + + + + + + + + + + + + + + + + + + + + diff --git a/bsc/garlic/exp/osu/latency.nix b/bsc/garlic/exp/osu/latency.nix index 3a3a777..77970c6 100644 --- a/bsc/garlic/exp/osu/latency.nix +++ b/bsc/garlic/exp/osu/latency.nix @@ -64,7 +64,17 @@ let with conf; bsc.osumb.override { inherit mpi; }; - pipeline = conf: sbatch conf (srun (nixsetupWrapper (argv (osumbFn conf)))); + + pipeline = conf: + sbatch conf ( + nixsetupWrapper ( + controlWrapper ( + srun ( + nixsetupWrapper ( + argv ( + osumbFn conf)))))); + + #pipeline = conf: sbatch conf (srun (nixsetupWrapper (argv (osumbFn conf)))); #pipeline = conf: sbatch conf (srun (nixsetupWrapper (argv bsc.osumb))); # Ideally it should look like this: diff --git a/bsc/garlic/extrae.nix b/bsc/garlic/extrae.nix new file mode 100644 index 0000000..174636f --- /dev/null +++ b/bsc/garlic/extrae.nix @@ -0,0 +1,30 @@ +{ + stdenv +, bash +, extrae +}: + +{ + app +, traceLib ? "mpi" +, configFile +, program ? "bin/run" +}: + +stdenv.mkDerivation { + name = "${app.name}-extrae"; + preferLocalBuild = true; + phases = [ "installPhase" ]; + installPhase = '' + mkdir -p $out/bin + cat > $out/bin/run < $out/bin/run < $out/bin/run < $out/bin/run < ${outputDir}/statspy.\$(date +%s.%3N).begin + ${app}/${program} + cat /proc/[0-9]*/stat | sort -n > ${outputDir}/statspy.\$(date +%s.%3N).end + + EOF + chmod +x $out/bin/run + ''; +} From 8110bc2976437fa80f5a54a6e4d5a947204f5c71 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 2 Sep 2020 17:07:09 +0200 Subject: [PATCH 148/987] New stage design --- bsc/garlic/argv.nix | 13 +-- bsc/garlic/control.nix | 14 +-- bsc/garlic/default.nix | 19 ++-- bsc/garlic/exp/nbody/bs.nix | 172 +++++++++++++++++++---------------- bsc/garlic/extrae.nix | 25 +++-- bsc/garlic/nbody/default.nix | 4 +- bsc/garlic/nix-setup.nix | 14 +-- bsc/garlic/perf.nix | 12 +-- bsc/garlic/sbatch.nix | 19 ++-- bsc/garlic/srun.nix | 12 +-- bsc/garlic/stagen.nix | 55 +++++++++++ bsc/garlic/statspy.nix | 12 +-- 12 files changed, 221 insertions(+), 150 deletions(-) create mode 100644 bsc/garlic/stagen.nix diff --git a/bsc/garlic/argv.nix b/bsc/garlic/argv.nix index 73adc16..071bfd5 100644 --- a/bsc/garlic/argv.nix +++ b/bsc/garlic/argv.nix @@ -4,28 +4,25 @@ }: { - app + program , env ? "" , argv # bash array as string, example: argv=''(-f "file with spaces" -t 10)'' -, program ? "bin/run" }: stdenv.mkDerivation { - inherit argv; - name = "${app.name}-argv"; + name = "argv"; preferLocalBuild = true; phases = [ "installPhase" ]; installPhase = '' - mkdir -p $out/bin - cat > $out/bin/run < $out < $out/bin/run < $out < libtracempi.so + configFile = ./extrae.xml; + }; - nbodyFn = conf: - with conf; - nbody.override { inherit cc mpi blocksize gitBranch; }; + argv = {stage, conf, ...}: w.argv { + program = stageProgram stage; + env = '' + set -e + export I_MPI_THREAD_SPLIT=1 + ''; + argv = ''( -t ${toString conf.timesteps} + -p ${toString conf.particles} )''; + }; - pipeline = conf: -# sbatch conf ( -# nixsetupWrapper ( -# controlWrapper ( - srun ( - nixsetupWrapper ( -# extrae ( -# perf ( - argv conf ( - nbodyFn conf - ) -# ) -# ) - ) - ) -# ) -# ) -# ) - ; + nbodyFn = {stage, conf, ...}: with conf; nbody.override { + inherit cc blocksize mpi gitBranch; + }; - # Ideally it should look like this: - #pipeline = sbatch nixsetup control argv nbodyFn; + stages = with common; [] + # Use sbatch to request resources first + ++ optional enableSbatch sbatch - jobs = map pipeline configs; + # Repeats the next stages N times + ++ optionals enableControl [ nixsetup control ] + + # Executes srun to launch the program in the requested nodes, and + # immediately after enters the nix environment again, as slurmstepd launches + # the next stages from outside the namespace. + ++ [ srun nixsetup ] + + # Intrumentation with extrae + ++ optional enableExtrae extrae + + # Optionally profile the next stages with perf + ++ optional enablePerf perf + + # Execute the nbody app with the argv and env vars + ++ [ argv nbodyFn ]; + + # List of actual programs to be executed + jobs = map (conf: w.stagen { inherit conf stages; }) configs; in - launchWrapper jobs + # We simply run each program one after another + w.launch jobs diff --git a/bsc/garlic/extrae.nix b/bsc/garlic/extrae.nix index 174636f..4c38bd3 100644 --- a/bsc/garlic/extrae.nix +++ b/bsc/garlic/extrae.nix @@ -2,29 +2,36 @@ stdenv , bash , extrae +#, writeShellScriptBin }: { - app -, traceLib ? "mpi" + program , configFile -, program ? "bin/run" +, traceLib }: +#writeShellScriptBin "extraeWrapper" '' +# export EXTRAE_HOME=${extrae} +# export LD_PRELOAD=${extrae}/lib/lib${traceLib}trace.so:$LD_PRELOAD +# export EXTRAE_CONFIG_FILE=${configFile} +# exec ${program} +#'' + stdenv.mkDerivation { - name = "${app.name}-extrae"; + name = "extrae"; preferLocalBuild = true; phases = [ "installPhase" ]; installPhase = '' - mkdir -p $out/bin - cat > $out/bin/run < $out < $out/bin/run < $out < $out/bin/run < $out < $out/job < $out/bin/run < $out/${name} <&2 echo "Execution aborted: '${chdirPrefix}/$(basename $out)' already exists" @@ -80,6 +77,6 @@ stdenv.mkDerivation rec { echo sbatch ${nixPrefix}$out/job sbatch ${nixPrefix}$out/job EOF - chmod +x $out/bin/run + chmod +x $out/${name} ''; } diff --git a/bsc/garlic/srun.nix b/bsc/garlic/srun.nix index e304fc7..48558b9 100644 --- a/bsc/garlic/srun.nix +++ b/bsc/garlic/srun.nix @@ -2,23 +2,21 @@ stdenv }: { - app + program , nixPrefix ? "" , srunOptions ? "" }: stdenv.mkDerivation rec { - name = "${app.name}-srun"; + name = "srun"; preferLocalBuild = true; phases = [ "installPhase" ]; - buildInputs = [ app ]; dontPatchShebangs = true; installPhase = '' - mkdir -p $out/bin - cat > $out/bin/run < $out < $out/config.raw << EOF + ${builtins.toJSON conf} + EOF + jq . $out/config.raw > $out/config.json + rm $out/config.raw + ''; +} diff --git a/bsc/garlic/statspy.nix b/bsc/garlic/statspy.nix index d039353..06e75e9 100644 --- a/bsc/garlic/statspy.nix +++ b/bsc/garlic/statspy.nix @@ -4,26 +4,26 @@ }: { - app + program , outputDir ? "." -, program ? "bin/run" }: stdenv.mkDerivation { - name = "${app.name}-statspy"; + name = "statspy"; preferLocalBuild = true; phases = [ "installPhase" ]; + programPath = "/bin/${name}"; installPhase = '' mkdir -p $out/bin - cat > $out/bin/run < $out/bin/${name} < ${outputDir}/statspy.\$(date +%s.%3N).begin - ${app}/${program} + ${program} cat /proc/[0-9]*/stat | sort -n > ${outputDir}/statspy.\$(date +%s.%3N).end EOF - chmod +x $out/bin/run + chmod +x $out/bin/${name} ''; } From bdc221ba81dba867d3b160c98bb74faf8f25ab42 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 2 Sep 2020 17:07:34 +0200 Subject: [PATCH 149/987] Add perf for linux 4.9 --- bsc/perf/default.nix | 84 ++++++++++++++++++++++++++++++++++++++++++++ default.nix | 5 +++ 2 files changed, 89 insertions(+) create mode 100644 bsc/perf/default.nix diff --git a/bsc/perf/default.nix b/bsc/perf/default.nix new file mode 100644 index 0000000..cce96f3 --- /dev/null +++ b/bsc/perf/default.nix @@ -0,0 +1,84 @@ +{ lib, stdenv, kernel, elfutils, python2, python3, perl, newt, slang, asciidoc, xmlto, makeWrapper +, docbook_xsl, docbook_xml_dtd_45, libxslt, flex, bison, pkgconfig, libunwind, binutils +, libiberty, audit, libbfd, libopcodes, openssl, systemtap, numactl +, zlib, withGtk ? false, gtk2 ? null +, babeltrace +}: + +with lib; + +assert withGtk -> gtk2 != null; +assert versionAtLeast kernel.version "3.12"; + +stdenv.mkDerivation { + name = "perf-linux-${kernel.version}"; + + inherit (kernel) src; + + preConfigure = '' + cd tools/perf + + substituteInPlace Makefile \ + --replace /usr/include/elfutils $elfutils/include/elfutils + + for x in util/build-id.c util/dso.c; do + substituteInPlace $x --replace /usr/lib/debug /run/current-system/sw/lib/debug + done + + if [ -f bash_completion ]; then + sed -i 's,^have perf,_have perf,' bash_completion + fi + ''; + + makeFlags = [ + "prefix=$(out)" + "WERROR=0" + "LIBBABELTRACE=1" + "LIBBABELTRACE_DIR=${babeltrace}" + ] ++ kernel.makeFlags; + + hardeningDisable = [ "format" ]; + + # perf refers both to newt and slang + nativeBuildInputs = [ + asciidoc xmlto docbook_xsl docbook_xml_dtd_45 libxslt + flex bison libiberty audit makeWrapper pkgconfig python3 + ]; + buildInputs = [ + elfutils newt slang libunwind libbfd zlib openssl systemtap.stapBuild numactl + libopcodes python3 perl babeltrace + ] ++ stdenv.lib.optional withGtk gtk2 + ++ (if (versionAtLeast kernel.version "4.19") then [ python3 ] else [ python2 ]); + + # Note: we don't add elfutils to buildInputs, since it provides a + # bad `ld' and other stuff. + NIX_CFLAGS_COMPILE = toString [ + "-Wno-error=cpp" + "-Wno-error=bool-compare" + "-Wno-error=deprecated-declarations" + "-DOBJDUMP_PATH=\"${binutils}/bin/objdump\"" + "-Wno-error=stringop-truncation" + ]; + + postPatch = '' + patchShebangs scripts/bpf_helpers_doc.py + ''; + + doCheck = false; # requires "sparse" + doInstallCheck = false; # same + + separateDebugInfo = true; + installFlags = [ "install" "install-man" "ASCIIDOC8=1" "prefix=$(out)" ]; + + preFixup = '' + wrapProgram $out/bin/perf \ + --prefix PATH : "${binutils}/bin" + ''; + + meta = { + homepage = "https://perf.wiki.kernel.org/"; + description = "Linux tools to profile with performance counters"; + maintainers = with stdenv.lib.maintainers; [viric]; + platforms = with stdenv.lib.platforms; linux; + }; +} diff --git a/default.nix b/default.nix index 2eabca1..9ff9f0c 100644 --- a/default.nix +++ b/default.nix @@ -36,6 +36,11 @@ let # BSC Packages # --------------------------------------------------------- # + perf = callPackage ./bsc/perf/default.nix { + kernel = pkgs.linuxPackages_4_9.kernel; + systemtap = pkgs.linuxPackages_4_9.systemtap; + }; + # ParaStation MPI pscom = callPackage ./bsc/parastation/pscom.nix { }; psmpi = callPackage ./bsc/parastation/psmpi.nix { }; From be95827927fc49bc76c256780f12747a0910809b Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 3 Sep 2020 16:18:50 +0200 Subject: [PATCH 150/987] Add loops param to control stage --- bsc/garlic/control.nix | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/bsc/garlic/control.nix b/bsc/garlic/control.nix index fa213d2..e03f198 100644 --- a/bsc/garlic/control.nix +++ b/bsc/garlic/control.nix @@ -4,6 +4,7 @@ { program +, loops ? 30 }: stdenv.mkDerivation { @@ -15,7 +16,7 @@ stdenv.mkDerivation { cat > $out < Date: Thu, 3 Sep 2020 16:19:19 +0200 Subject: [PATCH 151/987] Add acctg-freq to sbatch stage --- bsc/garlic/sbatch.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/bsc/garlic/sbatch.nix b/bsc/garlic/sbatch.nix index f65585e..19a5776 100644 --- a/bsc/garlic/sbatch.nix +++ b/bsc/garlic/sbatch.nix @@ -20,6 +20,7 @@ , error ? "job_%j.err" , contiguous ? null , extra ? null +, acctgFreq ? null }: with stdenv.lib; @@ -61,6 +62,7 @@ stdenv.mkDerivation rec { + sbatchOpt "time" time + sbatchOpt "qos" qos + sbatchOpt "reservation" reservation + + sbatchOpt "acctg-freq" acctgFreq + optionalString (extra!=null) extra + '' From 847b5b3e0a3df859770e4f6cc85cda8767935b99 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 3 Sep 2020 16:19:52 +0200 Subject: [PATCH 152/987] Add noise experiment with nbody --- bsc/garlic/default.nix | 1 + bsc/garlic/exp/noise.nix | 132 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 133 insertions(+) create mode 100644 bsc/garlic/exp/noise.nix diff --git a/bsc/garlic/default.nix b/bsc/garlic/default.nix index 29cc8b3..ec6c1f3 100644 --- a/bsc/garlic/default.nix +++ b/bsc/garlic/default.nix @@ -44,6 +44,7 @@ let }; exp = { + noise = callPackage ./exp/noise.nix { }; nbody = { bs = callPackage ./exp/nbody/bs.nix { }; mpi = callPackage ./exp/nbody/mpi.nix { }; diff --git a/bsc/garlic/exp/noise.nix b/bsc/garlic/exp/noise.nix new file mode 100644 index 0000000..b3e9444 --- /dev/null +++ b/bsc/garlic/exp/noise.nix @@ -0,0 +1,132 @@ +{ + bsc +, stdenv +, nbody +, genApp +, genConfigs +, runWrappers +}: + +with stdenv.lib; + +let + # Set variable configuration for the experiment + varConfig = { + cc = [ bsc.icc ]; + blocksize = [ 1024 ]; + }; + + # Common configuration + common = { + # Compile time nbody config + gitBranch = "garlic/mpi+send"; + mpi = bsc.impi; + + # nbody runtime options + particles = 1024*128; + timesteps = 20; + loops = 1000; + + # Resources + ntasksPerNode = "48"; + nodes = "1"; + + # Stage configuration + enableSbatch = true; + enableControl = true; + enableExtrae = false; + enablePerf = false; + + # MN4 path + nixPrefix = "/gpfs/projects/bsc15/nix"; + }; + + # Compute the cartesian product of all configurations + configs = map (conf: conf // common) (genConfigs varConfig); + + stageProgram = stage: + if stage ? programPath + then "${stage}${stage.programPath}" else "${stage}"; + + w = runWrappers; + + sbatch = {stage, conf, ...}: with conf; w.sbatch { + program = stageProgram stage; + exclusive = true; + time = "02:00:00"; + qos = "debug"; + jobName = "nbody-bs"; + inherit nixPrefix nodes ntasksPerNode; + }; + + control = {stage, conf, ...}: with conf; w.control { + program = stageProgram stage; + inherit loops; + }; + + srun = {stage, conf, ...}: with conf; w.srun { + program = stageProgram stage; + srunOptions = "--cpu-bind=verbose,rank"; + inherit nixPrefix; + }; + + statspy = {stage, conf, ...}: with conf; w.statspy { + program = stageProgram stage; + }; + + perf = {stage, conf, ...}: with conf; w.perf { + program = stageProgram stage; + perfArgs = "sched record -a"; + }; + + nixsetup = {stage, conf, ...}: with conf; w.nixsetup { + program = stageProgram stage; + }; + + extrae = {stage, conf, ...}: w.extrae { + program = stageProgram stage; + traceLib = "mpi"; # mpi -> libtracempi.so + configFile = ./extrae.xml; + }; + + argv = {stage, conf, ...}: w.argv { + program = stageProgram stage; + env = '' + set -e + export I_MPI_THREAD_SPLIT=1 + ''; + argv = ''( -t ${toString conf.timesteps} + -p ${toString conf.particles} )''; + }; + + nbodyFn = {stage, conf, ...}: with conf; nbody.override { + inherit cc blocksize mpi gitBranch; + }; + + stages = with common; [] + # Use sbatch to request resources first + ++ optional enableSbatch sbatch + + # Repeats the next stages N times + ++ optionals enableControl [ nixsetup control ] + + # Executes srun to launch the program in the requested nodes, and + # immediately after enters the nix environment again, as slurmstepd launches + # the next stages from outside the namespace. + ++ [ srun nixsetup ] + + # Intrumentation with extrae + ++ optional enableExtrae extrae + + # Optionally profile the next stages with perf + ++ optional enablePerf perf + + # Execute the nbody app with the argv and env vars + ++ [ argv nbodyFn ]; + + # List of actual programs to be executed + jobs = map (conf: w.stagen { inherit conf stages; }) configs; + +in + # We simply run each program one after another + w.launch jobs From dba1cc22bcc4ff9e2c2b0ca86b24e5b9da15c9f6 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 16 Sep 2020 12:22:55 +0200 Subject: [PATCH 153/987] New design with overlays --- bsc/garlic/default.nix | 23 ++-- bsc/garlic/exp/nbody/bs.nix | 35 ++++- bsc/garlic/nbody/default.nix | 2 + bsc/intel-compiler/default.nix | 14 +- default.nix | 230 +-------------------------------- overlay.nix | 196 ++++++++++++++++++++++++++++ 6 files changed, 249 insertions(+), 251 deletions(-) create mode 100644 overlay.nix diff --git a/bsc/garlic/default.nix b/bsc/garlic/default.nix index ec6c1f3..f5d727e 100644 --- a/bsc/garlic/default.nix +++ b/bsc/garlic/default.nix @@ -1,27 +1,26 @@ { pkgs -, bsc +, callPackage +, callPackages }: let - callPackage = pkgs.lib.callPackageWith (pkgs // bsc // garlic); - callPackages = pkgs.lib.callPackagesWith (pkgs // bsc // garlic); - garlic = rec { + garlic = { # Load some helper functions to generate app variants inherit (import ./gen.nix) genApps genApp genConfigs; - inherit bsc; mpptest = callPackage ./mpptest { }; ppong = callPackage ./ppong { - mpi = bsc.mpi; + mpi = pkgs.mpi; }; nbody = callPackage ./nbody { - cc = bsc.icc; - mpi = bsc.impi; + cc = pkgs.icc; + mpi = pkgs.impi; + tampi = pkgs.tampi; gitBranch = "garlic/seq"; }; @@ -38,15 +37,17 @@ let }; # Perf is tied to a linux kernel specific version - linuxPackages = bsc.linuxPackages_4_4; + linuxPackages = pkgs.linuxPackages_4_4; perfWrapper = callPackage ./perf.nix { - perf = linuxPackages.perf; + perf = pkgs.linuxPackages.perf; }; exp = { noise = callPackage ./exp/noise.nix { }; nbody = { - bs = callPackage ./exp/nbody/bs.nix { }; + bs = callPackage ./exp/nbody/bs.nix { + pkgs = pkgs // garlic; + }; mpi = callPackage ./exp/nbody/mpi.nix { }; }; osu = rec { diff --git a/bsc/garlic/exp/nbody/bs.nix b/bsc/garlic/exp/nbody/bs.nix index e1591a8..718eb1b 100644 --- a/bsc/garlic/exp/nbody/bs.nix +++ b/bsc/garlic/exp/nbody/bs.nix @@ -1,7 +1,7 @@ { - bsc -, stdenv -, nbody + stdenv +, nixpkgs +, pkgs , genApp , genConfigs , runWrappers @@ -12,7 +12,7 @@ with stdenv.lib; let # Set variable configuration for the experiment varConfig = { - cc = [ bsc.icc ]; + cc = [ pkgs.bsc.icc ]; blocksize = [ 1024 ]; }; @@ -20,7 +20,7 @@ let common = { # Compile time nbody config gitBranch = "garlic/mpi+send"; - mpi = bsc.impi; + mpi = pkgs.bsc.impi; # nbody runtime options particles = 1024*128; @@ -97,10 +97,31 @@ let -p ${toString conf.particles} )''; }; - nbodyFn = {stage, conf, ...}: with conf; nbody.override { - inherit cc blocksize mpi gitBranch; + bscOverlay = import ../../../../overlay.nix; + + genPkgs = newOverlay: nixpkgs { + overlays = [ + bscOverlay + newOverlay + ]; }; + # We may be able to use overlays by invoking the fix function directly, but we + # have to get the definition of the bsc packages and the garlic ones as + # overlays. + + nbodyFn = {stage, conf, ...}: with conf; + let + # We set the mpi implementation to the one specified in the conf, so all + # packages in bsc will use that one. + customPkgs = genPkgs (self: super: { + bsc = super.bsc // { mpi = conf.mpi; }; + }); + in + customPkgs.bsc.garlic.nbody.override { + inherit cc blocksize mpi gitBranch; + }; + stages = with common; [] # Use sbatch to request resources first ++ optional enableSbatch sbatch diff --git a/bsc/garlic/nbody/default.nix b/bsc/garlic/nbody/default.nix index 4955187..b592391 100644 --- a/bsc/garlic/nbody/default.nix +++ b/bsc/garlic/nbody/default.nix @@ -1,6 +1,7 @@ { stdenv , cc +, tampi ? null , mpi ? null , cflags ? null , gitBranch @@ -37,6 +38,7 @@ stdenv.mkDerivation rec { dontPatchShebangs = true; installPhase = '' + echo ${tampi} mkdir -p $out/bin cp nbody* $out/bin/${name} ''; diff --git a/bsc/intel-compiler/default.nix b/bsc/intel-compiler/default.nix index 14ae4b8..17296ad 100644 --- a/bsc/intel-compiler/default.nix +++ b/bsc/intel-compiler/default.nix @@ -2,27 +2,27 @@ stdenv , gcc , nanos6 -, icc-unwrapped +, iccUnwrapped , wrapCCWith -, intel-license +, intelLicense }: let targetConfig = stdenv.targetPlatform.config; inherit gcc; in wrapCCWith rec { - cc = icc-unwrapped; + cc = iccUnwrapped; extraBuildCommands = '' echo "-B${gcc.cc}/lib/gcc/${targetConfig}/${gcc.version}" >> $out/nix-support/cc-cflags - echo "-isystem ${icc-unwrapped}/include" >> $out/nix-support/cc-cflags - echo "-isystem ${icc-unwrapped}/include/intel64" >> $out/nix-support/cc-cflags + echo "-isystem ${iccUnwrapped}/include" >> $out/nix-support/cc-cflags + echo "-isystem ${iccUnwrapped}/include/intel64" >> $out/nix-support/cc-cflags echo "-L${gcc.cc}/lib/gcc/${targetConfig}/${gcc.version}" >> $out/nix-support/cc-ldflags echo "-L${gcc.cc.lib}/lib" >> $out/nix-support/cc-ldflags - cat "${icc-unwrapped}/nix-support/propagated-build-inputs" >> \ + cat "${iccUnwrapped}/nix-support/propagated-build-inputs" >> \ $out/nix-support/propagated-build-inputs - echo "export INTEL_LICENSE_FILE=${intel-license}" \ + echo "export INTEL_LICENSE_FILE=${intelLicense}" \ >> $out/nix-support/setup-hook # Create the wrappers for icc and icpc diff --git a/default.nix b/default.nix index 9ff9f0c..0077d5f 100644 --- a/default.nix +++ b/default.nix @@ -1,229 +1,7 @@ -{ pkgs ? import {} }: - let - inherit (pkgs.lib) callPackageWith; - inherit (pkgs.lib) callPackagesWith; - callPackage = callPackageWith (pkgs // self.bsc); - callPackageStatic = callPackageWith (pkgs.pkgsStatic); - callPackages = callPackagesWith (pkgs // self.bsc); - - self.bsc = rec { - - nixpkgs = pkgs; - - - # Load the default implementation - #mpi = mpich; - #mpi = openmpi; - mpi = intel-mpi; - - # Load the default compiler - #stdenv = pkgs.gcc10Stdenv; - stdenv = pkgs.gcc9Stdenv; - #stdenv = pkgs.gcc7Stdenv; - #stdenv = pkgs.llvmPackages_10.stdenv; - #stdenv = pkgs.llvmPackages_9.stdenv; - #stdenv = pkgs.llvmPackages_8.stdenv; - #stdenv = pkgs.llvmPackages_7.stdenv; - - binutils = pkgs.binutils; - coreutils = pkgs.coreutils; - gcc = stdenv.cc; - - nanos6 = nanos6-git; - - # --------------------------------------------------------- # - # BSC Packages - # --------------------------------------------------------- # - - perf = callPackage ./bsc/perf/default.nix { - kernel = pkgs.linuxPackages_4_9.kernel; - systemtap = pkgs.linuxPackages_4_9.systemtap; - }; - - # ParaStation MPI - pscom = callPackage ./bsc/parastation/pscom.nix { }; - psmpi = callPackage ./bsc/parastation/psmpi.nix { }; - - osumb = callPackage ./bsc/osu/default.nix { }; - - mpich = callPackage ./bsc/mpich/default.nix { }; - mpichDbg = callPackage ./bsc/mpich/default.nix { enableDebug = true; }; - - # Default Intel MPI version is 2019 (the last one) - impi = intel-mpi; - intel-mpi = intel-mpi-2019; - intel-mpi-2019 = callPackage ./bsc/intel-mpi/default.nix { - # Intel MPI provides a debug version of the MPI library, but - # by default we use the release variant for performance - enableDebug = false; - }; - - # By default we use Intel compiler 2020 update 1 - icc-unwrapped = icc2020-unwrapped; - icc2020-unwrapped = callPackage ./bsc/intel-compiler/icc2020.nix { - intel-mpi = intel-mpi-2019; - }; - - # A wrapper script that puts all the flags and environment vars properly and - # calls the intel compiler binary - icc = callPackage bsc/intel-compiler/default.nix { - inherit icc-unwrapped intel-license; - }; - - intel-license = callPackage bsc/intel-compiler/license.nix { - }; - - pmix2 = callPackage ./bsc/pmix/pmix2.nix { }; - - slurm17 = callPackage ./bsc/slurm/default.nix { - pmix = pmix2; - }; - - slurm17-libpmi2 = callPackage ./bsc/slurm/pmi2.nix { - pmix = pmix2; - }; - - openmpi-mn4 = callPackage ./bsc/openmpi/default.nix { - pmix = pmix2; - pmi2 = slurm17-libpmi2; - enableCxx = true; - }; - - openmpi = openmpi-mn4; - - fftw = callPackage ./bsc/fftw/default.nix { - mpi = mpi; - }; - - extrae = callPackage ./bsc/extrae/default.nix { - mpi = mpi; - }; - - tampi = callPackage ./bsc/tampi/default.nix { - mpi = mpi; - }; - - mcxx = callPackage ./bsc/mcxx/default.nix { - }; - - mcxx-rarias = callPackage ./bsc/mcxx/rarias.nix { - }; - - nanos6-latest = callPackage ./bsc/nanos6/default.nix { - extrae = extrae; - }; - - nanos6-git = callPackage ./bsc/nanos6/git.nix { - extrae = extrae; - }; - - vtk = callPackage ./bsc/vtk/default.nix { - mpi = mpi; - inherit (pkgs.xorg) libX11 xorgproto libXt; - }; - - dummy = callPackage ./bsc/dummy/default.nix { - }; - - clang-ompss2-unwrapped = callPackage ./bsc/llvm-ompss2/clang.nix { - stdenv = pkgs.llvmPackages_10.stdenv; - enableDebug = false; - }; - - clang-ompss2 = callPackage bsc/llvm-ompss2/default.nix { - inherit clang-ompss2-unwrapped; - }; - - stdenv-nanos6 = pkgs.clangStdenv.override { - cc = clang-ompss2; - }; - - cpic = callPackage ./bsc/apps/cpic/default.nix { - stdenv = stdenv-nanos6; - inherit mpi tampi; - }; - - mpptest = callPackage ./bsc/mpptest/default.nix { - }; - - # Apps for Garlic - nbody = callPackage ./bsc/apps/nbody/default.nix { - stdenv = pkgs.gcc9Stdenv; - mpi = intel-mpi; - tampi = tampi; - }; - - heat = callPackage ./bsc/apps/heat/default.nix { - stdenv = pkgs.gcc7Stdenv; - mpi = intel-mpi; - tampi = tampi; - }; - - saiph = callPackage ./bsc/apps/saiph/default.nix { - stdenv = stdenv-nanos6; - mpi = intel-mpi; - tampi = tampi; - inherit vtk; - boost = pkgs.boost; - }; - - creams = callPackage ./bsc/apps/creams/default.nix { - stdenv = pkgs.gcc9Stdenv; - mpi = intel-mpi; - tampi = tampi.override { - mpi = intel-mpi; - }; - }; - - lulesh = callPackage ./bsc/apps/lulesh/default.nix { - mpi = intel-mpi; - }; - - hpcg = callPackage ./bsc/apps/hpcg/default.nix { - }; - - hpccg = callPackage ./bsc/apps/hpccg/default.nix { - }; - - fwi = callPackage ./bsc/apps/fwi/default.nix { - }; - - garlic = callPackage ./bsc/garlic/default.nix { - pkgs = pkgs; - bsc = self.bsc; - }; - - # Patched nix for deep cluster - inherit (callPackage ./bsc/nix/default.nix { - storeDir = "/nix/store"; - stateDir = "/nix/var"; - boehmgc = pkgs.boehmgc.override { enableLargeConfig = true; }; - }) - nix - nixUnstable - nixFlakes; - - clsync = callPackage ./bsc/clsync/default.nix { }; - - nixStatic = (callPackageStatic ./bsc/nix/static.nix { - callPackage = callPackageWith (pkgs.pkgsStatic); - storeDir = "/nix/store"; - stateDir = "/nix/var"; - sandbox-shell = "/bin/sh"; - boehmgc = pkgs.pkgsStatic.boehmgc.override { enableLargeConfig = true; }; - }).nix; - - test = { - chroot = callPackage ./test/chroot.nix { }; - - internet = callPackage ./test/security/internet.nix { }; - - clang-ompss2 = callPackage ./test/compilers/clang-ompss2.nix { - stdenv = stdenv-nanos6; - inherit clang-ompss2; - }; - }; + bscOverlay = import ./overlay.nix; + pkgs = import { + overlays = [ bscOverlay ]; }; -in pkgs // self +in pkgs diff --git a/overlay.nix b/overlay.nix new file mode 100644 index 0000000..ab77d56 --- /dev/null +++ b/overlay.nix @@ -0,0 +1,196 @@ +self: /* Future last stage */ +super: /* Previous stage */ + +let + #callPackage = self.callPackage; + inherit (self.lib) callPackageWith; + inherit (self.lib) callPackagesWith; + callPackage = callPackageWith (self // self.bsc); + + bsc = { + # Default MPI implementation to use. Will be overwritten by the + # experiments. + mpi = self.bsc.openmpi; + + # --------------------------------------------------------- # + # BSC Packages + # --------------------------------------------------------- # + + perf = callPackage ./bsc/perf/default.nix { + kernel = self.linuxPackages_4_9.kernel; + systemtap = self.linuxPackages_4_9.systemtap; + }; + + # ParaStation MPI + pscom = callPackage ./bsc/parastation/pscom.nix { }; + psmpi = callPackage ./bsc/parastation/psmpi.nix { }; + + osumb = callPackage ./bsc/osu/default.nix { }; + + mpich = callPackage ./bsc/mpich/default.nix { }; + + mpichDebug = self.mpich.override { enableDebug = true; }; + + # Default Intel MPI version is 2019 (the last one) + impi = self.bsc.intelMpi; + + intelMpi = self.bsc.intelMpi2019; + + intelMpi2019 = callPackage ./bsc/intel-mpi/default.nix { + # Intel MPI provides a debug version of the MPI library, but + # by default we use the release variant for performance + enableDebug = false; + }; + + # By default we use Intel compiler 2020 update 1 + iccUnwrapped = self.bsc.icc2020Unwrapped; + + icc2020Unwrapped = callPackage ./bsc/intel-compiler/icc2020.nix { + intel-mpi = self.bsc.intelMpi; + }; + + # A wrapper script that puts all the flags and environment vars properly and + # calls the intel compiler binary + icc = callPackage ./bsc/intel-compiler/default.nix { + iccUnwrapped = self.bsc.iccUnwrapped; + intelLicense = self.bsc.intelLicense; + }; + + intelLicense = callPackage ./bsc/intel-compiler/license.nix { }; + + pmix2 = callPackage ./bsc/pmix/pmix2.nix { }; + + slurm17 = callPackage ./bsc/slurm/default.nix { + pmix = self.bsc.pmix2; + }; + + slurm17-libpmi2 = callPackage ./bsc/slurm/pmi2.nix { + pmix = self.bsc.pmix2; + }; + + openmpi-mn4 = callPackage ./bsc/openmpi/default.nix { + pmix = self.bsc.pmix2; + pmi2 = self.bsc.slurm17-libpmi2; + enableCxx = true; + }; + + openmpi = self.bsc.openmpi-mn4; + + fftw = callPackage ./bsc/fftw/default.nix { + mpi = self.bsc.mpi; + }; + + extrae = callPackage ./bsc/extrae/default.nix { + mpi = self.bsc.mpi; + }; + + tampi = callPackage ./bsc/tampi/default.nix { + mpi = self.bsc.mpi; + }; + + mcxx = callPackage ./bsc/mcxx/default.nix { }; + + mcxx-rarias = callPackage ./bsc/mcxx/rarias.nix { }; + + # Use nanos6 git by default + nanos6 = self.nanos6-git; + nanos6-latest = callPackage ./bsc/nanos6/default.nix { + extrae = self.bsc.extrae; + }; + + nanos6-git = callPackage ./bsc/nanos6/git.nix { + extrae = self.bsc.extrae; + }; + + vtk = callPackage ./bsc/vtk/default.nix { + mpi = self.bsc.mpi; + inherit (self.xorg) libX11 xorgproto libXt; + }; + + dummy = callPackage ./bsc/dummy/default.nix { }; + + clang-ompss2-unwrapped = callPackage ./bsc/llvm-ompss2/clang.nix { + stdenv = self.llvmPackages_10.stdenv; + enableDebug = false; + }; + + clang-ompss2 = callPackage bsc/llvm-ompss2/default.nix { + clang-ompss2-unwrapped = self.bsc.clang-ompss2-unwrapped; + }; + + stdenvOmpss2 = self.clangStdenv.override { + cc = self.bsc.clang-ompss2; + }; + + cpic = callPackage ./bsc/apps/cpic/default.nix { + stdenv = self.bsc.stdenvOmpss2; + mpi = self.bsc.mpi; + tampi = self.bsc.tampi; + }; + + mpptest = callPackage ./bsc/mpptest/default.nix { }; + + + garlic = { + + # Load some helper functions to generate app variants + inherit (import ./bsc/garlic/gen.nix) genApps genApp genConfigs; + + mpptest = callPackage ./bsc/garlic/mpptest { }; + + ppong = callPackage ./bsc/garlic/ppong { + mpi = self.bsc.mpi; + }; + + nbody = callPackage ./bsc/garlic/nbody { + cc = self.bsc.icc; + mpi = self.bsc.impi; + tampi = self.bsc.tampi; + gitBranch = "garlic/seq"; + }; + + runWrappers = { + sbatch = callPackage ./bsc/garlic/sbatch.nix { }; + srun = callPackage ./bsc/garlic/srun.nix { }; + launch = callPackage ./bsc/garlic/launcher.nix { }; + control = callPackage ./bsc/garlic/control.nix { }; + nixsetup= callPackage ./bsc/garlic/nix-setup.nix { }; + argv = callPackage ./bsc/garlic/argv.nix { }; + statspy = callPackage ./bsc/garlic/statspy.nix { }; + extrae = callPackage ./bsc/garlic/extrae.nix { }; + stagen = callPackage ./bsc/garlic/stagen.nix { }; + }; + + # Perf is tied to a linux kernel specific version + linuxPackages = self.linuxPackages_4_4; + perfWrapper = callPackage ./bsc/garlic/perf.nix { + perf = self.linuxPackages.perf; + }; + + exp = { + noise = callPackage ./bsc/garlic/exp/noise.nix { }; + nbody = { + bs = callPackage ./bsc/garlic/exp/nbody/bs.nix { + pkgs = self // self.bsc.garlic; + nixpkgs = import ; + genApp = self.bsc.garlic.genApp; + genConfigs = self.bsc.garlic.genConfigs; + runWrappers = self.bsc.garlic.runWrappers; + }; +# mpi = callPackage ./bsc/garlic/exp/nbody/mpi.nix { }; + }; + osu = rec { + latency-internode = callPackage ./bsc/garlic/exp/osu/latency.nix { }; + latency-intranode = callPackage ./bsc/garlic/exp/osu/latency.nix { + interNode = false; + }; + latency = latency-internode; + }; + }; + }; + }; + +in + { + bsc = bsc; + } From 126f05e92cb0949e35da8fc6625bdc55e72ef5bb Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 21 Sep 2020 14:34:08 +0200 Subject: [PATCH 154/987] Simplify paths --- bsc/garlic/nbody/default.nix | 46 ------ garlic/exp/default.nix | 64 ++++++++ {bsc/garlic => garlic}/exp/nbody/bs.nix | 2 +- {bsc/garlic => garlic}/exp/nbody/extrae.xml | 0 {bsc/garlic => garlic}/exp/nbody/mpi.nix | 0 garlic/exp/nbody/tampi.nix | 165 ++++++++++++++++++++ {bsc/garlic => garlic}/exp/noise.nix | 0 {bsc/garlic => garlic}/exp/osu/latency.nix | 0 {bsc/garlic => garlic}/gen.nix | 0 {bsc/garlic => garlic}/mpptest/default.nix | 0 {bsc/garlic => garlic}/nbody/argv.nix | 0 garlic/nbody/default.nix | 68 ++++++++ {bsc/garlic => garlic}/ppong/default.nix | 0 {bsc/garlic => garlic/stages}/argv.nix | 4 +- {bsc/garlic => garlic/stages}/control.nix | 0 {bsc/garlic => garlic/stages}/default.nix | 0 {bsc/garlic => garlic/stages}/extrae.nix | 0 garlic/stages/gen.nix | 34 ++++ {bsc/garlic => garlic/stages}/launcher.nix | 0 {bsc/garlic => garlic/stages}/nix-setup.nix | 0 {bsc/garlic => garlic/stages}/perf.nix | 0 {bsc/garlic => garlic/stages}/sbatch.nix | 0 {bsc/garlic => garlic/stages}/srun.nix | 0 {bsc/garlic => garlic/stages}/stagen.nix | 0 {bsc/garlic => garlic/stages}/statspy.nix | 0 overlay.nix | 104 ++++++------ 26 files changed, 392 insertions(+), 95 deletions(-) delete mode 100644 bsc/garlic/nbody/default.nix create mode 100644 garlic/exp/default.nix rename {bsc/garlic => garlic}/exp/nbody/bs.nix (98%) rename {bsc/garlic => garlic}/exp/nbody/extrae.xml (100%) rename {bsc/garlic => garlic}/exp/nbody/mpi.nix (100%) create mode 100644 garlic/exp/nbody/tampi.nix rename {bsc/garlic => garlic}/exp/noise.nix (100%) rename {bsc/garlic => garlic}/exp/osu/latency.nix (100%) rename {bsc/garlic => garlic}/gen.nix (100%) rename {bsc/garlic => garlic}/mpptest/default.nix (100%) rename {bsc/garlic => garlic}/nbody/argv.nix (100%) create mode 100644 garlic/nbody/default.nix rename {bsc/garlic => garlic}/ppong/default.nix (100%) rename {bsc/garlic => garlic/stages}/argv.nix (79%) rename {bsc/garlic => garlic/stages}/control.nix (100%) rename {bsc/garlic => garlic/stages}/default.nix (100%) rename {bsc/garlic => garlic/stages}/extrae.nix (100%) create mode 100644 garlic/stages/gen.nix rename {bsc/garlic => garlic/stages}/launcher.nix (100%) rename {bsc/garlic => garlic/stages}/nix-setup.nix (100%) rename {bsc/garlic => garlic/stages}/perf.nix (100%) rename {bsc/garlic => garlic/stages}/sbatch.nix (100%) rename {bsc/garlic => garlic/stages}/srun.nix (100%) rename {bsc/garlic => garlic/stages}/stagen.nix (100%) rename {bsc/garlic => garlic/stages}/statspy.nix (100%) diff --git a/bsc/garlic/nbody/default.nix b/bsc/garlic/nbody/default.nix deleted file mode 100644 index b592391..0000000 --- a/bsc/garlic/nbody/default.nix +++ /dev/null @@ -1,46 +0,0 @@ -{ - stdenv -, cc -, tampi ? null -, mpi ? null -, cflags ? null -, gitBranch -, gitURL ? "ssh://git@bscpm02.bsc.es/garlic/apps/nbody.git" -, blocksize ? 2048 -}: - -with stdenv.lib; -stdenv.mkDerivation rec { - name = "nbody"; - - src = /home/Computational/rarias/bscpkgs/manual/nbody; - - #src = builtins.fetchGit { - # url = "${gitURL}"; - # ref = "${gitBranch}"; - #}; - programPath = "/bin/nbody"; - - buildInputs = [ - cc - ] - ++ optional (mpi != null) [ mpi ]; - - preBuild = (if cflags != null then '' - makeFlagsArray+=(CFLAGS="${cflags}") - '' else ""); - - makeFlags = [ - "CC=${cc.cc.CC}" - "BS=${toString blocksize}" - ]; - - dontPatchShebangs = true; - - installPhase = '' - echo ${tampi} - mkdir -p $out/bin - cp nbody* $out/bin/${name} - ''; - -} diff --git a/garlic/exp/default.nix b/garlic/exp/default.nix new file mode 100644 index 0000000..79e775b --- /dev/null +++ b/garlic/exp/default.nix @@ -0,0 +1,64 @@ +{ + pkgs +, callPackage +, callPackages +}: + +let + + garlic = { + + # Load some helper functions to generate app variants + inherit (import ./gen.nix) genApps genApp genConfigs; + + mpptest = callPackage ./mpptest { }; + + ppong = callPackage ./ppong { + mpi = pkgs.mpi; + }; + + nbody = callPackage ./nbody { + cc = pkgs.icc; + mpi = pkgs.impi; + tampi = pkgs.tampi; + gitBranch = "garlic/seq"; + }; + + runWrappers = { + sbatch = callPackage ./stages/sbatch.nix { }; + srun = callPackage ./stages/srun.nix { }; + launch = callPackage ./stages/launcher.nix { }; + control = callPackage ./stages/control.nix { }; + nixsetup= callPackage ./stages/nix-setup.nix { }; + argv = callPackage ./stages/argv.nix { }; + statspy = callPackage ./stages/statspy.nix { }; + extrae = callPackage ./stages/extrae.nix { }; + stagen = callPackage ./stages/stagen.nix { }; + }; + + # Perf is tied to a linux kernel specific version + linuxPackages = pkgs.linuxPackages_4_4; + perfWrapper = callPackage ./perf.nix { + perf = pkgs.linuxPackages.perf; + }; + + exp = { + noise = callPackage ./exp/noise.nix { }; + nbody = { + bs = callPackage ./exp/nbody/bs.nix { + pkgs = pkgs // garlic; + }; + mpi = callPackage ./exp/nbody/mpi.nix { }; + }; + osu = rec { + latency-internode = callPackage ./exp/osu/latency.nix { }; + latency-intranode = callPackage ./exp/osu/latency.nix { + interNode = false; + }; + latency = latency-internode; + }; + }; + }; + +in + garlic diff --git a/bsc/garlic/exp/nbody/bs.nix b/garlic/exp/nbody/bs.nix similarity index 98% rename from bsc/garlic/exp/nbody/bs.nix rename to garlic/exp/nbody/bs.nix index 718eb1b..be956fd 100644 --- a/bsc/garlic/exp/nbody/bs.nix +++ b/garlic/exp/nbody/bs.nix @@ -97,7 +97,7 @@ let -p ${toString conf.particles} )''; }; - bscOverlay = import ../../../../overlay.nix; + bscOverlay = import ../../../overlay.nix; genPkgs = newOverlay: nixpkgs { overlays = [ diff --git a/bsc/garlic/exp/nbody/extrae.xml b/garlic/exp/nbody/extrae.xml similarity index 100% rename from bsc/garlic/exp/nbody/extrae.xml rename to garlic/exp/nbody/extrae.xml diff --git a/bsc/garlic/exp/nbody/mpi.nix b/garlic/exp/nbody/mpi.nix similarity index 100% rename from bsc/garlic/exp/nbody/mpi.nix rename to garlic/exp/nbody/mpi.nix diff --git a/garlic/exp/nbody/tampi.nix b/garlic/exp/nbody/tampi.nix new file mode 100644 index 0000000..4ec5d49 --- /dev/null +++ b/garlic/exp/nbody/tampi.nix @@ -0,0 +1,165 @@ +{ + stdenv +, nixpkgs +, pkgs +, genApp +, genConfigs +, runWrappers +}: + +with stdenv.lib; + +let + bsc = pkgs.bsc; + + # Set variable configuration for the experiment + varConfig = { + cc = [ bsc.icc ]; + mpi = [ bsc.impi bsc.openmpi ]; + blocksize = [ 1024 ]; + }; + + # Common configuration + common = { + # Compile time nbody config + gitBranch = "garlic/tampi+send+oss+task"; + + # nbody runtime options + particles = 1024*128; + timesteps = 20; + + # Resources + ntasksPerNode = "48"; + nodes = "1"; + + # Stage configuration + enableSbatch = true; + enableControl = true; + enableExtrae = false; + enablePerf = false; + enableCtf = false; + + # MN4 path + nixPrefix = "/gpfs/projects/bsc15/nix"; + }; + + # Compute the cartesian product of all configurations + configs = map (conf: conf // common) (genConfigs varConfig); + + stageProgram = stage: + if stage ? programPath + then "${stage}${stage.programPath}" else "${stage}"; + + w = runWrappers; + + sbatch = {stage, conf, ...}: with conf; w.sbatch { + program = stageProgram stage; + exclusive = true; + time = "02:00:00"; + qos = "debug"; + jobName = "nbody-bs"; + inherit nixPrefix nodes ntasksPerNode; + }; + + control = {stage, conf, ...}: with conf; w.control { + program = stageProgram stage; + }; + + srun = {stage, conf, ...}: with conf; w.srun { + program = stageProgram stage; + srunOptions = "--cpu-bind=verbose,rank"; + inherit nixPrefix; + }; + + statspy = {stage, conf, ...}: with conf; w.statspy { + program = stageProgram stage; + }; + + perf = {stage, conf, ...}: with conf; w.perf { + program = stageProgram stage; + perfArgs = "sched record -a"; + }; + + nixsetup = {stage, conf, ...}: with conf; w.nixsetup { + program = stageProgram stage; + }; + + extrae = {stage, conf, ...}: w.extrae { + program = stageProgram stage; + traceLib = "mpi"; # mpi -> libtracempi.so + configFile = ./extrae.xml; + }; + + ctf = {stage, conf, ...}: w.argv { + program = stageProgram stage; + env = '' + export NANOS6=ctf + export NANOS6_CTF2PRV=0 + ''; + }; + + argv = {stage, conf, ...}: w.argv { + program = stageProgram stage; + env = '' + set -e + export I_MPI_THREAD_SPLIT=1 + ''; + argv = ''( -t ${toString conf.timesteps} + -p ${toString conf.particles} )''; + }; + + bscOverlay = import ../../../overlay.nix; + + genPkgs = newOverlay: nixpkgs { + overlays = [ + bscOverlay + newOverlay + ]; + }; + + # We may be able to use overlays by invoking the fix function directly, but we + # have to get the definition of the bsc packages and the garlic ones as + # overlays. + + nbodyFn = {stage, conf, ...}: with conf; + let + # We set the mpi implementation to the one specified in the conf, so all + # packages in bsc will use that one. + customPkgs = genPkgs (self: super: { + bsc = super.bsc // { mpi = conf.mpi; }; + }); + in + customPkgs.bsc.garlic.nbody.override { + inherit cc blocksize mpi gitBranch; + }; + + stages = with common; [] + # Use sbatch to request resources first + ++ optional enableSbatch sbatch + + # Repeats the next stages N times + ++ optionals enableControl [ nixsetup control ] + + # Executes srun to launch the program in the requested nodes, and + # immediately after enters the nix environment again, as slurmstepd launches + # the next stages from outside the namespace. + ++ [ srun nixsetup ] + + # Intrumentation with extrae + ++ optional enableExtrae extrae + + # Optionally profile the next stages with perf + ++ optional enablePerf perf + + # Optionally profile nanos6 with the new ctf + ++ optional enableCtf ctf + + # Execute the nbody app with the argv and env vars + ++ [ argv nbodyFn ]; + + # List of actual programs to be executed + jobs = map (conf: w.stagen { inherit conf stages; }) configs; + +in + # We simply run each program one after another + w.launch jobs diff --git a/bsc/garlic/exp/noise.nix b/garlic/exp/noise.nix similarity index 100% rename from bsc/garlic/exp/noise.nix rename to garlic/exp/noise.nix diff --git a/bsc/garlic/exp/osu/latency.nix b/garlic/exp/osu/latency.nix similarity index 100% rename from bsc/garlic/exp/osu/latency.nix rename to garlic/exp/osu/latency.nix diff --git a/bsc/garlic/gen.nix b/garlic/gen.nix similarity index 100% rename from bsc/garlic/gen.nix rename to garlic/gen.nix diff --git a/bsc/garlic/mpptest/default.nix b/garlic/mpptest/default.nix similarity index 100% rename from bsc/garlic/mpptest/default.nix rename to garlic/mpptest/default.nix diff --git a/bsc/garlic/nbody/argv.nix b/garlic/nbody/argv.nix similarity index 100% rename from bsc/garlic/nbody/argv.nix rename to garlic/nbody/argv.nix diff --git a/garlic/nbody/default.nix b/garlic/nbody/default.nix new file mode 100644 index 0000000..b45a852 --- /dev/null +++ b/garlic/nbody/default.nix @@ -0,0 +1,68 @@ +{ + stdenv +, cc +, mpi ? null +, tampi ? null +, mcxx ? null +, cflags ? null +, gitBranch +, gitURL ? "ssh://git@bscpm02.bsc.es/garlic/apps/nbody.git" +, blocksize ? 2048 +}: + +assert !(tampi != null && mcxx == null); + +with stdenv.lib; +stdenv.mkDerivation rec { + name = "nbody"; + + #src = /home/Computational/rarias/bscpkgs/manual/nbody; + + src = builtins.fetchGit { + url = "${gitURL}"; + ref = "${gitBranch}"; + }; + programPath = "/bin/nbody"; + + buildInputs = [ + cc + ] + ++ optional (mpi != null) mpi + ++ optional (tampi != null) tampi + ++ optional (mcxx != null) mcxx; + + preBuild = (if cflags != null then '' + makeFlagsArray+=(CFLAGS="${cflags}") + '' else ""); + + postPatch = "" + + # This should be fixed in the Makefile as well. + + ''sed -i 's/libtampi.a/libtampi-c.a/g' Makefile + '' + # Dirty HACK until the nbody issue at: + # https://pm.bsc.es/gitlab/garlic/apps/nbody/-/issues/1 + # is properly fixed. + + + (if (mpi.pname or "unknown") == "openmpi" then + ''sed -i 's/-lstdc++/-lstdc++ -lmpi_cxx/g' Makefile + '' + else + "" + ); + + makeFlags = [ + "CC=${cc.cc.CC}" + "BS=${toString blocksize}" + ] + ++ optional (tampi != null) "TAMPI_HOME=${tampi}"; + + dontPatchShebangs = true; + + installPhase = '' + echo ${tampi} + mkdir -p $out/bin + cp nbody* $out/bin/${name} + ''; + +} diff --git a/bsc/garlic/ppong/default.nix b/garlic/ppong/default.nix similarity index 100% rename from bsc/garlic/ppong/default.nix rename to garlic/ppong/default.nix diff --git a/bsc/garlic/argv.nix b/garlic/stages/argv.nix similarity index 79% rename from bsc/garlic/argv.nix rename to garlic/stages/argv.nix index 071bfd5..5060661 100644 --- a/bsc/garlic/argv.nix +++ b/garlic/stages/argv.nix @@ -6,7 +6,9 @@ { program , env ? "" -, argv # bash array as string, example: argv=''(-f "file with spaces" -t 10)'' + +# bash array as string, example: argv=''(-f "file with spaces" -t 10)'' +, argv ? "()" }: stdenv.mkDerivation { diff --git a/bsc/garlic/control.nix b/garlic/stages/control.nix similarity index 100% rename from bsc/garlic/control.nix rename to garlic/stages/control.nix diff --git a/bsc/garlic/default.nix b/garlic/stages/default.nix similarity index 100% rename from bsc/garlic/default.nix rename to garlic/stages/default.nix diff --git a/bsc/garlic/extrae.nix b/garlic/stages/extrae.nix similarity index 100% rename from bsc/garlic/extrae.nix rename to garlic/stages/extrae.nix diff --git a/garlic/stages/gen.nix b/garlic/stages/gen.nix new file mode 100644 index 0000000..0c20f9c --- /dev/null +++ b/garlic/stages/gen.nix @@ -0,0 +1,34 @@ +let + lib = import ; + + gen = rec { + # genAttrSets "a" ["hello" "world"] + # [ { a = "hello"; } { a = "world"; } ] + genAttrSets = (name: arr: (map (x: {${name}=x; })) arr); + + # addAttrSets "a" [1 2] {e=4;} + # [ { a = 1; e = 4; } { a = 2; e = 4; } ] + addAttrSets = (name: arr: set: (map (x: set // {${name}=x; })) arr); + + # attrToList {a=1;} + # [ { name = "a"; value = 1; } ] + attrToList = (set: map (name: {name=name; value=set.${name};} ) (builtins.attrNames set)); + + # mergeConfig [{e=1;}] {name="a"; value=[1 2] + # [ { a = 1; e = 1; } { a = 2; e = 1; } ] + mergeConfig = (arr: new: lib.flatten ( map (x: addAttrSets new.name new.value x) arr)); + + # genConfigs {a=[1 2]; b=[3 4];} + # [ { a = 1; b = 3; } { a = 1; b = 4; } { a = 2; b = 3; } { a = 2; b = 4; } ] + genConfigs = (config: lib.foldl mergeConfig [{}] (attrToList config)); + + # Generate multiple app versions by override with each config + genApp = (app: configs: map (conf: app.override conf // {conf=conf;}) configs); + + # Generate app version from an array of apps + genApps = (apps: configs: + lib.flatten (map (app: genApp app configs) apps)); + + }; +in + gen diff --git a/bsc/garlic/launcher.nix b/garlic/stages/launcher.nix similarity index 100% rename from bsc/garlic/launcher.nix rename to garlic/stages/launcher.nix diff --git a/bsc/garlic/nix-setup.nix b/garlic/stages/nix-setup.nix similarity index 100% rename from bsc/garlic/nix-setup.nix rename to garlic/stages/nix-setup.nix diff --git a/bsc/garlic/perf.nix b/garlic/stages/perf.nix similarity index 100% rename from bsc/garlic/perf.nix rename to garlic/stages/perf.nix diff --git a/bsc/garlic/sbatch.nix b/garlic/stages/sbatch.nix similarity index 100% rename from bsc/garlic/sbatch.nix rename to garlic/stages/sbatch.nix diff --git a/bsc/garlic/srun.nix b/garlic/stages/srun.nix similarity index 100% rename from bsc/garlic/srun.nix rename to garlic/stages/srun.nix diff --git a/bsc/garlic/stagen.nix b/garlic/stages/stagen.nix similarity index 100% rename from bsc/garlic/stagen.nix rename to garlic/stages/stagen.nix diff --git a/bsc/garlic/statspy.nix b/garlic/stages/statspy.nix similarity index 100% rename from bsc/garlic/statspy.nix rename to garlic/stages/statspy.nix diff --git a/overlay.nix b/overlay.nix index ab77d56..81f5d50 100644 --- a/overlay.nix +++ b/overlay.nix @@ -2,20 +2,19 @@ self: /* Future last stage */ super: /* Previous stage */ let - #callPackage = self.callPackage; inherit (self.lib) callPackageWith; inherit (self.lib) callPackagesWith; callPackage = callPackageWith (self // self.bsc); + # --------------------------------------------------------- # + # BSC Packages + # --------------------------------------------------------- # + bsc = { # Default MPI implementation to use. Will be overwritten by the # experiments. mpi = self.bsc.openmpi; - # --------------------------------------------------------- # - # BSC Packages - # --------------------------------------------------------- # - perf = callPackage ./bsc/perf/default.nix { kernel = self.linuxPackages_4_9.kernel; systemtap = self.linuxPackages_4_9.systemtap; @@ -76,34 +75,29 @@ let openmpi = self.bsc.openmpi-mn4; - fftw = callPackage ./bsc/fftw/default.nix { - mpi = self.bsc.mpi; + fftw = callPackage ./bsc/fftw/default.nix { }; + + extrae = callPackage ./bsc/extrae/default.nix { }; + + tampi = callPackage ./bsc/tampi/default.nix { }; + + mcxxGit = callPackage ./bsc/mcxx/default.nix { + bison = self.bison_3_5; }; - extrae = callPackage ./bsc/extrae/default.nix { - mpi = self.bsc.mpi; + mcxxRarias = callPackage ./bsc/mcxx/rarias.nix { + bison = self.bison_3_5; }; - tampi = callPackage ./bsc/tampi/default.nix { - mpi = self.bsc.mpi; - }; - - mcxx = callPackage ./bsc/mcxx/default.nix { }; - - mcxx-rarias = callPackage ./bsc/mcxx/rarias.nix { }; + mcxx = self.bsc.mcxxGit; # Use nanos6 git by default - nanos6 = self.nanos6-git; - nanos6-latest = callPackage ./bsc/nanos6/default.nix { - extrae = self.bsc.extrae; - }; + nanos6 = self.bsc.nanos6-git; + nanos6-latest = callPackage ./bsc/nanos6/default.nix { }; - nanos6-git = callPackage ./bsc/nanos6/git.nix { - extrae = self.bsc.extrae; - }; + nanos6-git = callPackage ./bsc/nanos6/git.nix { }; vtk = callPackage ./bsc/vtk/default.nix { - mpi = self.bsc.mpi; inherit (self.xorg) libX11 xorgproto libXt; }; @@ -130,47 +124,57 @@ let mpptest = callPackage ./bsc/mpptest/default.nix { }; - garlic = { # Load some helper functions to generate app variants - inherit (import ./bsc/garlic/gen.nix) genApps genApp genConfigs; + inherit (import ./garlic/gen.nix) genApps genApp genConfigs; - mpptest = callPackage ./bsc/garlic/mpptest { }; + mpptest = callPackage ./garlic/mpptest { }; - ppong = callPackage ./bsc/garlic/ppong { + ppong = callPackage ./garlic/ppong { mpi = self.bsc.mpi; }; - nbody = callPackage ./bsc/garlic/nbody { + nbody = callPackage ./garlic/nbody { cc = self.bsc.icc; - mpi = self.bsc.impi; + mpi = self.bsc.mpi; tampi = self.bsc.tampi; + mcxx = self.bsc.mcxx; gitBranch = "garlic/seq"; }; + # Execution wrappers runWrappers = { - sbatch = callPackage ./bsc/garlic/sbatch.nix { }; - srun = callPackage ./bsc/garlic/srun.nix { }; - launch = callPackage ./bsc/garlic/launcher.nix { }; - control = callPackage ./bsc/garlic/control.nix { }; - nixsetup= callPackage ./bsc/garlic/nix-setup.nix { }; - argv = callPackage ./bsc/garlic/argv.nix { }; - statspy = callPackage ./bsc/garlic/statspy.nix { }; - extrae = callPackage ./bsc/garlic/extrae.nix { }; - stagen = callPackage ./bsc/garlic/stagen.nix { }; + sbatch = callPackage ./garlic/stages/sbatch.nix { }; + srun = callPackage ./garlic/stages/srun.nix { }; + launch = callPackage ./garlic/stages/launcher.nix { }; + control = callPackage ./garlic/stages/control.nix { }; + nixsetup = callPackage ./garlic/stages/nix-setup.nix { }; + argv = callPackage ./garlic/stages/argv.nix { }; + statspy = callPackage ./garlic/stages/statspy.nix { }; + extrae = callPackage ./garlic/stages/extrae.nix { }; + stagen = callPackage ./garlic/stages/stagen.nix { }; + perf = callPackage ./garlic/stages/perf.nix { }; }; # Perf is tied to a linux kernel specific version - linuxPackages = self.linuxPackages_4_4; - perfWrapper = callPackage ./bsc/garlic/perf.nix { - perf = self.linuxPackages.perf; - }; + #linuxPackages = self.linuxPackages_4_4; + #perfWrapper = callPackage ./garlic/perf.nix { + # perf = self.linuxPackages.perf; + #}; exp = { - noise = callPackage ./bsc/garlic/exp/noise.nix { }; + noise = callPackage ./garlic/exp/noise.nix { }; nbody = { - bs = callPackage ./bsc/garlic/exp/nbody/bs.nix { + bs = callPackage ./garlic/exp/nbody/bs.nix { + pkgs = self // self.bsc.garlic; + nixpkgs = import ; + genApp = self.bsc.garlic.genApp; + genConfigs = self.bsc.garlic.genConfigs; + runWrappers = self.bsc.garlic.runWrappers; + }; + + tampi = callPackage ./garlic/exp/nbody/tampi.nix { pkgs = self // self.bsc.garlic; nixpkgs = import ; genApp = self.bsc.garlic.genApp; @@ -180,8 +184,8 @@ let # mpi = callPackage ./bsc/garlic/exp/nbody/mpi.nix { }; }; osu = rec { - latency-internode = callPackage ./bsc/garlic/exp/osu/latency.nix { }; - latency-intranode = callPackage ./bsc/garlic/exp/osu/latency.nix { + latency-internode = callPackage ./garlic/exp/osu/latency.nix { }; + latency-intranode = callPackage ./garlic/exp/osu/latency.nix { interNode = false; }; latency = latency-internode; @@ -193,4 +197,10 @@ let in { bsc = bsc; + + # Alias + garlic = bsc.garlic; + + # Alias + exp = bsc.garlic.exp; } From cc101ad1d394beb5e6334f82f63a178b55ee4027 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 21 Sep 2020 17:30:24 +0200 Subject: [PATCH 155/987] Add saiph experiments --- bsc/dummy/default.nix | 3 +- bsc/llvm-ompss2/clang.nix | 1 - bsc/llvm-ompss2/default.nix | 4 +- bsc/mcxx/default.nix | 13 +- bsc/mcxx/rarias.nix | 1 + garlic/exp/saiph/extrae.xml | 211 +++++++++++++++++++++++++ garlic/exp/saiph/mpi.nix | 88 +++++++++++ garlic/exp/saiph/numcomm.nix | 136 ++++++++++++++++ garlic/exp/saiph/tampi.nix | 165 +++++++++++++++++++ {bsc/apps => garlic}/saiph/default.nix | 26 ++- garlic/stages/sbatch.nix | 2 + overlay.nix | 30 +++- 12 files changed, 655 insertions(+), 25 deletions(-) create mode 100644 garlic/exp/saiph/extrae.xml create mode 100644 garlic/exp/saiph/mpi.nix create mode 100644 garlic/exp/saiph/numcomm.nix create mode 100644 garlic/exp/saiph/tampi.nix rename {bsc/apps => garlic}/saiph/default.nix (55%) diff --git a/bsc/dummy/default.nix b/bsc/dummy/default.nix index b063516..be4b21c 100644 --- a/bsc/dummy/default.nix +++ b/bsc/dummy/default.nix @@ -14,7 +14,8 @@ stdenv.mkDerivation rec { cat > $out/bin/dummy <> $out/nix-support/cc-cflags echo "-B${gcc.cc}/lib/gcc/${targetConfig}/${gcc.version}" >> $out/nix-support/cc-cflags diff --git a/bsc/mcxx/default.nix b/bsc/mcxx/default.nix index 50ba72c..4b05ca3 100644 --- a/bsc/mcxx/default.nix +++ b/bsc/mcxx/default.nix @@ -1,5 +1,4 @@ { stdenv -, fetchgit , autoreconfHook , nanos6 , gperf @@ -13,9 +12,8 @@ }: stdenv.mkDerivation rec { - name = "mcxx"; - #version attribute ignored when using fetchgit: - #version = "2.2.0-70a299cf"; + pname = "mcxx"; + version = "${src.shortRev}"; passthru = { CC = "mcc"; @@ -23,10 +21,9 @@ stdenv.mkDerivation rec { }; # Use patched Extrae version - src = fetchgit { + src = builtins.fetchGit { url = "https://github.com/bsc-pm/mcxx"; - rev = "70a299cfeb1f96735e6b9835aee946451f1913b2"; - sha256 = "1n8y0h47jm2ll67xbz930372xkl9647z12lfwz2472j3y86yxpmw"; + ref = "master"; }; enableParallelBuilding = true; @@ -55,5 +52,7 @@ stdenv.mkDerivation rec { configureFlags = [ "--enable-ompss-2" "--with-nanos6=${nanos6}" +# Fails with "memory exhausted" with bison 3.7.1 +# "--enable-bison-regeneration" ]; } diff --git a/bsc/mcxx/rarias.nix b/bsc/mcxx/rarias.nix index 47a5f6c..d44db2a 100644 --- a/bsc/mcxx/rarias.nix +++ b/bsc/mcxx/rarias.nix @@ -49,6 +49,7 @@ stdenv.mkDerivation rec { configureFlags = [ "--enable-ompss-2" "--with-nanos6=${nanos6}" +# "--enable-bison-regeneration" ]; # Regenerate ia32 builtins to add the ones for gcc9 diff --git a/garlic/exp/saiph/extrae.xml b/garlic/exp/saiph/extrae.xml new file mode 100644 index 0000000..b9af29b --- /dev/null +++ b/garlic/exp/saiph/extrae.xml @@ -0,0 +1,211 @@ + + + + + + + + + + + + + + + + + 1-3 + + 1-5 + + 1-3 + + 1-3 + + 1-3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + PAPI_TOT_INS,PAPI_TOT_CYC + + + + + + + + + + + + + + + + + TRACE + + 5 + + /scratch + + /gpfs/scratch/bsc41/bsc41273 + + + + + + 5000000 + + + + + + + + /gpfs/scratch/bsc41/bsc41273/control + + + + + + + 10M + + + + + + + + + + + 500u + + + + + + + + + + + + + + + + + + + + diff --git a/garlic/exp/saiph/mpi.nix b/garlic/exp/saiph/mpi.nix new file mode 100644 index 0000000..a618f85 --- /dev/null +++ b/garlic/exp/saiph/mpi.nix @@ -0,0 +1,88 @@ +{ + bsc +, nbody +, genApp +, genConfigs + +# Wrappers +, launchWrapper +, sbatchWrapper +, srunWrapper +, argvWrapper +, controlWrapper +, nixsetupWrapper +}: + +let + # Set the configuration for the experiment + config = { + cc = [ bsc.icc ]; + blocksize = [ 2048 ]; + mpi = [ bsc.impi bsc.openmpi bsc.mpich ]; + }; + + extraConfig = { + particles = 32*1024; + timesteps = 10; + ntasksPerNode = 2; + nodes = 1; + time = "00:10:00"; + qos = "debug"; + #mpi = bsc.impi; + #mpi = bsc.openmpi; + gitBranch = "garlic/mpi+send"; + gitURL = "ssh://git@bscpm02.bsc.es/garlic/apps/nbody.git"; + }; + + # Compute the cartesian product of all configurations + configs = map (conf: conf // extraConfig) (genConfigs config); + + sbatch = conf: app: sbatchWrapper { + app = app; + nixPrefix = "/gpfs/projects/bsc15/nix"; + exclusive = false; + ntasksPerNode = "${toString conf.ntasksPerNode}"; + nodes = "${toString conf.nodes}"; + time = conf.time; + qos = conf.qos; + chdirPrefix = "/home/bsc15/bsc15557/bsc-nixpkgs/out"; + }; + + srun = app: srunWrapper { + app = app; + nixPrefix = "/gpfs/projects/bsc15/nix"; + }; + + argv = conf: app: + with conf; + argvWrapper { + app = app; + argv = ''(-t ${toString timesteps} -p ${toString particles})''; + env = '' + export I_MPI_THREAD_SPLIT=1 + ''; + }; + + nbodyFn = conf: + with conf; + nbody.override { inherit cc mpi blocksize gitBranch gitURL; }; + + pipeline = conf: + sbatch conf ( + srun ( + nixsetupWrapper ( + argv conf ( + nbodyFn conf + ) + ) + ) + ) + ; + + # Ideally it should look like this: + #pipeline = sbatch nixsetup control argv nbodyFn; + + jobs = map pipeline configs; + +in + launchWrapper jobs diff --git a/garlic/exp/saiph/numcomm.nix b/garlic/exp/saiph/numcomm.nix new file mode 100644 index 0000000..0bf21c5 --- /dev/null +++ b/garlic/exp/saiph/numcomm.nix @@ -0,0 +1,136 @@ +{ + stdenv +, nixpkgs +, pkgs +, genApp +, genConfigs +, runWrappers +}: + +with stdenv.lib; + +let + # Set variable configuration for the experiment + varConfig = { + numComm = [ 1 ]; + }; + + # Common configuration + common = { + # Compile time nbody config + gitBranch = "Saiph_TAMPI_OMPSS"; + mpi = pkgs.bsc.impi; + + # Resources + ntasksPerSocket = "1"; + nodes = "2"; + + # Stage configuration + enableSbatch = true; + enableControl = true; + enableExtrae = false; + enablePerf = false; + + # MN4 path + nixPrefix = "/gpfs/projects/bsc15/nix"; + }; + + # Compute the cartesian product of all configurations + configs = map (conf: conf // common) (genConfigs varConfig); + + stageProgram = stage: + if stage ? programPath + then "${stage}${stage.programPath}" else "${stage}"; + + w = runWrappers; + + sbatch = {stage, conf, ...}: with conf; w.sbatch { + program = stageProgram stage; + exclusive = true; + time = "02:00:00"; + qos = "debug"; + jobName = "saiph"; + inherit nixPrefix nodes ntasksPerSocket; + }; + + control = {stage, conf, ...}: with conf; w.control { + program = stageProgram stage; + }; + + srun = {stage, conf, ...}: with conf; w.srun { + program = stageProgram stage; + srunOptions = "--cpu-bind=verbose,sockets"; + inherit nixPrefix; + }; + + statspy = {stage, conf, ...}: with conf; w.statspy { + program = stageProgram stage; + }; + + perf = {stage, conf, ...}: with conf; w.perf { + program = stageProgram stage; + perfArgs = "sched record -a"; + }; + + nixsetup = {stage, conf, ...}: with conf; w.nixsetup { + program = stageProgram stage; + }; + + extrae = {stage, conf, ...}: w.extrae { + program = stageProgram stage; + traceLib = "mpi"; # mpi -> libtracempi.so + configFile = ./extrae.xml; + }; + + bscOverlay = import ../../../overlay.nix; + + genPkgs = newOverlay: nixpkgs { + overlays = [ + bscOverlay + newOverlay + ]; + }; + + # We may be able to use overlays by invoking the fix function directly, but we + # have to get the definition of the bsc packages and the garlic ones as + # overlays. + + saiphFn = {stage, conf, ...}: with conf; + let + # We set the mpi implementation to the one specified in the conf, so all + # packages in bsc will use that one. + customPkgs = genPkgs (self: super: { + bsc = super.bsc // { mpi = conf.mpi; }; + }); + in + customPkgs.bsc.garlic.saiph.override { + inherit numComm mpi gitBranch; + }; + + stages = with common; [] + # Use sbatch to request resources first + ++ optional enableSbatch sbatch + + # Repeats the next stages N times + ++ optionals enableControl [ nixsetup control ] + + # Executes srun to launch the program in the requested nodes, and + # immediately after enters the nix environment again, as slurmstepd launches + # the next stages from outside the namespace. + ++ [ srun nixsetup ] + + # Intrumentation with extrae + ++ optional enableExtrae extrae + + # Optionally profile the next stages with perf + ++ optional enablePerf perf + + # Execute the nbody app with the argv and env vars + ++ [ saiphFn ]; + + # List of actual programs to be executed + jobs = map (conf: w.stagen { inherit conf stages; }) configs; + +in + # We simply run each program one after another + w.launch jobs diff --git a/garlic/exp/saiph/tampi.nix b/garlic/exp/saiph/tampi.nix new file mode 100644 index 0000000..4ec5d49 --- /dev/null +++ b/garlic/exp/saiph/tampi.nix @@ -0,0 +1,165 @@ +{ + stdenv +, nixpkgs +, pkgs +, genApp +, genConfigs +, runWrappers +}: + +with stdenv.lib; + +let + bsc = pkgs.bsc; + + # Set variable configuration for the experiment + varConfig = { + cc = [ bsc.icc ]; + mpi = [ bsc.impi bsc.openmpi ]; + blocksize = [ 1024 ]; + }; + + # Common configuration + common = { + # Compile time nbody config + gitBranch = "garlic/tampi+send+oss+task"; + + # nbody runtime options + particles = 1024*128; + timesteps = 20; + + # Resources + ntasksPerNode = "48"; + nodes = "1"; + + # Stage configuration + enableSbatch = true; + enableControl = true; + enableExtrae = false; + enablePerf = false; + enableCtf = false; + + # MN4 path + nixPrefix = "/gpfs/projects/bsc15/nix"; + }; + + # Compute the cartesian product of all configurations + configs = map (conf: conf // common) (genConfigs varConfig); + + stageProgram = stage: + if stage ? programPath + then "${stage}${stage.programPath}" else "${stage}"; + + w = runWrappers; + + sbatch = {stage, conf, ...}: with conf; w.sbatch { + program = stageProgram stage; + exclusive = true; + time = "02:00:00"; + qos = "debug"; + jobName = "nbody-bs"; + inherit nixPrefix nodes ntasksPerNode; + }; + + control = {stage, conf, ...}: with conf; w.control { + program = stageProgram stage; + }; + + srun = {stage, conf, ...}: with conf; w.srun { + program = stageProgram stage; + srunOptions = "--cpu-bind=verbose,rank"; + inherit nixPrefix; + }; + + statspy = {stage, conf, ...}: with conf; w.statspy { + program = stageProgram stage; + }; + + perf = {stage, conf, ...}: with conf; w.perf { + program = stageProgram stage; + perfArgs = "sched record -a"; + }; + + nixsetup = {stage, conf, ...}: with conf; w.nixsetup { + program = stageProgram stage; + }; + + extrae = {stage, conf, ...}: w.extrae { + program = stageProgram stage; + traceLib = "mpi"; # mpi -> libtracempi.so + configFile = ./extrae.xml; + }; + + ctf = {stage, conf, ...}: w.argv { + program = stageProgram stage; + env = '' + export NANOS6=ctf + export NANOS6_CTF2PRV=0 + ''; + }; + + argv = {stage, conf, ...}: w.argv { + program = stageProgram stage; + env = '' + set -e + export I_MPI_THREAD_SPLIT=1 + ''; + argv = ''( -t ${toString conf.timesteps} + -p ${toString conf.particles} )''; + }; + + bscOverlay = import ../../../overlay.nix; + + genPkgs = newOverlay: nixpkgs { + overlays = [ + bscOverlay + newOverlay + ]; + }; + + # We may be able to use overlays by invoking the fix function directly, but we + # have to get the definition of the bsc packages and the garlic ones as + # overlays. + + nbodyFn = {stage, conf, ...}: with conf; + let + # We set the mpi implementation to the one specified in the conf, so all + # packages in bsc will use that one. + customPkgs = genPkgs (self: super: { + bsc = super.bsc // { mpi = conf.mpi; }; + }); + in + customPkgs.bsc.garlic.nbody.override { + inherit cc blocksize mpi gitBranch; + }; + + stages = with common; [] + # Use sbatch to request resources first + ++ optional enableSbatch sbatch + + # Repeats the next stages N times + ++ optionals enableControl [ nixsetup control ] + + # Executes srun to launch the program in the requested nodes, and + # immediately after enters the nix environment again, as slurmstepd launches + # the next stages from outside the namespace. + ++ [ srun nixsetup ] + + # Intrumentation with extrae + ++ optional enableExtrae extrae + + # Optionally profile the next stages with perf + ++ optional enablePerf perf + + # Optionally profile nanos6 with the new ctf + ++ optional enableCtf ctf + + # Execute the nbody app with the argv and env vars + ++ [ argv nbodyFn ]; + + # List of actual programs to be executed + jobs = map (conf: w.stagen { inherit conf stages; }) configs; + +in + # We simply run each program one after another + w.launch jobs diff --git a/bsc/apps/saiph/default.nix b/garlic/saiph/default.nix similarity index 55% rename from bsc/apps/saiph/default.nix rename to garlic/saiph/default.nix index 45abfd9..4f04f40 100644 --- a/bsc/apps/saiph/default.nix +++ b/garlic/saiph/default.nix @@ -6,6 +6,8 @@ , mcxx , vtk , boost +, gitBranch ? "master" +, numComm ? null }: stdenv.mkDerivation rec { @@ -13,12 +15,14 @@ stdenv.mkDerivation rec { src = builtins.fetchGit { url = "ssh://git@bscpm02.bsc.es/DSLs/saiph.git"; - ref = "VectorisationSupport"; + ref = "${gitBranch}"; }; #src = /tmp/saiph; + + programPath = "/bin/ExHeat3D"; - enableParallelBuilding = true; + enableParallelBuilding = false; dontStrip = true; enableDebugging = true; @@ -31,26 +35,36 @@ stdenv.mkDerivation rec { boost ]; + hardeningDisable = [ "all" ]; + + hardeningEnable = [ "stackprotector" ]; + + postPatch = '' + + sed -i 's/^SANITIZE_FLAGS=/SANITIZE_FLAGS=$(DEBUG_FLAGS)/g' \ + saiphv2/cpp/src/Makefile.clang + ''; + preBuild = '' cd saiphv2/cpp/src - sed -i s/skylake-avx512/core-avx2/g Makefile* export VTK_VERSION=8.2 export VTK_HOME=${vtk} + export BOOST_HOME=${boost} export SAIPH_HOME=. - export NIX_CFLAGS_COMPILE+=" -fsanitize=address" ''; makeFlags = [ "-f" "Makefile.clang" "apps" - "APP=ExHeat" + "APP=ExHeat3D" + ( if (numComm != null) then "NUM_COMM=${toString numComm}" else "" ) ]; installPhase = '' mkdir -p $out/lib mkdir -p $out/bin cp obj/libsaiphv2.so $out/lib/ - cp bin/ExHeat $out/bin/ + cp bin/ExHeat3D $out/bin/ ''; } diff --git a/garlic/stages/sbatch.nix b/garlic/stages/sbatch.nix index 19a5776..8cbddfd 100644 --- a/garlic/stages/sbatch.nix +++ b/garlic/stages/sbatch.nix @@ -11,6 +11,7 @@ , binary ? "/bin/run" , ntasks ? null , ntasksPerNode ? null +, ntasksPerSocket ? null , nodes ? null , exclusive ? true # By default we run in exclusive mode , qos ? null @@ -54,6 +55,7 @@ stdenv.mkDerivation rec { '' + sbatchOpt "ntasks" ntasks + sbatchOpt "ntasks-per-node" ntasksPerNode + + sbatchOpt "ntasks-per-socket" ntasksPerSocket + sbatchOpt "nodes" nodes + sbatchOpt "chdir" "${chdirPrefix}/$(basename $out)" + sbatchOpt "output" output diff --git a/overlay.nix b/overlay.nix index 81f5d50..da0f5fd 100644 --- a/overlay.nix +++ b/overlay.nix @@ -92,10 +92,9 @@ let mcxx = self.bsc.mcxxGit; # Use nanos6 git by default - nanos6 = self.bsc.nanos6-git; - nanos6-latest = callPackage ./bsc/nanos6/default.nix { }; - - nanos6-git = callPackage ./bsc/nanos6/git.nix { }; + nanos6 = self.bsc.nanos6Git; + nanos6Latest = callPackage ./bsc/nanos6/default.nix { }; + nanos6Git = callPackage ./bsc/nanos6/git.nix { }; vtk = callPackage ./bsc/vtk/default.nix { inherit (self.xorg) libX11 xorgproto libXt; @@ -103,17 +102,17 @@ let dummy = callPackage ./bsc/dummy/default.nix { }; - clang-ompss2-unwrapped = callPackage ./bsc/llvm-ompss2/clang.nix { + clangOmpss2Unwrapped = callPackage ./bsc/llvm-ompss2/clang.nix { stdenv = self.llvmPackages_10.stdenv; enableDebug = false; }; - clang-ompss2 = callPackage bsc/llvm-ompss2/default.nix { - clang-ompss2-unwrapped = self.bsc.clang-ompss2-unwrapped; + clangOmpss2 = callPackage bsc/llvm-ompss2/default.nix { + clangOmpss2Unwrapped = self.bsc.clangOmpss2Unwrapped; }; stdenvOmpss2 = self.clangStdenv.override { - cc = self.bsc.clang-ompss2; + cc = self.bsc.clangOmpss2; }; cpic = callPackage ./bsc/apps/cpic/default.nix { @@ -143,6 +142,10 @@ let gitBranch = "garlic/seq"; }; + saiph = callPackage ./garlic/saiph { + stdenv = self.bsc.stdenvOmpss2; + }; + # Execution wrappers runWrappers = { sbatch = callPackage ./garlic/stages/sbatch.nix { }; @@ -183,6 +186,17 @@ let }; # mpi = callPackage ./bsc/garlic/exp/nbody/mpi.nix { }; }; + + saiph = { + numcomm = callPackage ./garlic/exp/saiph/numcomm.nix { + pkgs = self // self.bsc.garlic; + nixpkgs = import ; + genApp = self.bsc.garlic.genApp; + genConfigs = self.bsc.garlic.genConfigs; + runWrappers = self.bsc.garlic.runWrappers; + }; + }; + osu = rec { latency-internode = callPackage ./garlic/exp/osu/latency.nix { }; latency-intranode = callPackage ./garlic/exp/osu/latency.nix { From 5920c964d2a981231113d24eb032b302cafc29ca Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 21 Sep 2020 19:23:17 +0200 Subject: [PATCH 156/987] saiph: fix hardening and affinity --- garlic/exp/saiph/numcomm.nix | 4 ++-- garlic/saiph/default.nix | 17 ++++++++--------- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/garlic/exp/saiph/numcomm.nix b/garlic/exp/saiph/numcomm.nix index 0bf21c5..384c346 100644 --- a/garlic/exp/saiph/numcomm.nix +++ b/garlic/exp/saiph/numcomm.nix @@ -22,7 +22,7 @@ let mpi = pkgs.bsc.impi; # Resources - ntasksPerSocket = "1"; + ntasksPerNode = "2"; nodes = "2"; # Stage configuration @@ -50,7 +50,7 @@ let time = "02:00:00"; qos = "debug"; jobName = "saiph"; - inherit nixPrefix nodes ntasksPerSocket; + inherit nixPrefix nodes ntasksPerNode; }; control = {stage, conf, ...}: with conf; w.control { diff --git a/garlic/saiph/default.nix b/garlic/saiph/default.nix index 4f04f40..c4c646a 100644 --- a/garlic/saiph/default.nix +++ b/garlic/saiph/default.nix @@ -22,7 +22,7 @@ stdenv.mkDerivation rec { programPath = "/bin/ExHeat3D"; - enableParallelBuilding = false; + enableParallelBuilding = true; dontStrip = true; enableDebugging = true; @@ -35,15 +35,14 @@ stdenv.mkDerivation rec { boost ]; - hardeningDisable = [ "all" ]; + # Required for nanos6 + hardeningDisable = [ "bindnow" ]; - hardeningEnable = [ "stackprotector" ]; - - postPatch = '' - - sed -i 's/^SANITIZE_FLAGS=/SANITIZE_FLAGS=$(DEBUG_FLAGS)/g' \ - saiphv2/cpp/src/Makefile.clang - ''; +# Enable debug +# postPatch = '' +# sed -i 's/^SANITIZE_FLAGS=/SANITIZE_FLAGS=$(DEBUG_FLAGS)/g' \ +# saiphv2/cpp/src/Makefile.clang +# ''; preBuild = '' cd saiphv2/cpp/src From ad4df5e05d9bc71145354adb313c65e89290885d Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 21 Sep 2020 19:54:12 +0200 Subject: [PATCH 157/987] saiph: Up to 4 numcomm experiment --- garlic/exp/saiph/numcomm.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/garlic/exp/saiph/numcomm.nix b/garlic/exp/saiph/numcomm.nix index 384c346..ac17d9d 100644 --- a/garlic/exp/saiph/numcomm.nix +++ b/garlic/exp/saiph/numcomm.nix @@ -12,7 +12,7 @@ with stdenv.lib; let # Set variable configuration for the experiment varConfig = { - numComm = [ 1 ]; + numComm = [ 1 2 3 4 ]; }; # Common configuration From cd37d513e8ad585273a932cab80791de0b80223f Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 22 Sep 2020 14:26:01 +0200 Subject: [PATCH 158/987] saiph: Extrae with the correct MPI --- garlic/exp/saiph/numcomm.nix | 27 +++++++++++++++++++-------- garlic/stages/extrae.nix | 2 +- 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/garlic/exp/saiph/numcomm.nix b/garlic/exp/saiph/numcomm.nix index ac17d9d..541ab0f 100644 --- a/garlic/exp/saiph/numcomm.nix +++ b/garlic/exp/saiph/numcomm.nix @@ -12,7 +12,7 @@ with stdenv.lib; let # Set variable configuration for the experiment varConfig = { - numComm = [ 1 2 3 4 ]; + numComm = [ 1 ]; }; # Common configuration @@ -27,8 +27,8 @@ let # Stage configuration enableSbatch = true; - enableControl = true; - enableExtrae = false; + enableControl = false; + enableExtrae = true; enablePerf = false; # MN4 path @@ -76,11 +76,22 @@ let program = stageProgram stage; }; - extrae = {stage, conf, ...}: w.extrae { - program = stageProgram stage; - traceLib = "mpi"; # mpi -> libtracempi.so - configFile = ./extrae.xml; - }; + extrae = {stage, conf, ...}: + let + # We set the mpi implementation to the one specified in the conf, so all + # packages in bsc will use that one. + customPkgs = genPkgs (self: super: { + bsc = super.bsc // { mpi = conf.mpi; }; + }); + + extrae = customPkgs.bsc.extrae; + in + w.extrae { + program = stageProgram stage; + extrae = extrae; + traceLib = "nanosmpi"; # mpi -> libtracempi.so + configFile = ./extrae.xml; + }; bscOverlay = import ../../../overlay.nix; diff --git a/garlic/stages/extrae.nix b/garlic/stages/extrae.nix index 4c38bd3..a450ca9 100644 --- a/garlic/stages/extrae.nix +++ b/garlic/stages/extrae.nix @@ -1,7 +1,6 @@ { stdenv , bash -, extrae #, writeShellScriptBin }: @@ -9,6 +8,7 @@ program , configFile , traceLib +, extrae }: #writeShellScriptBin "extraeWrapper" '' From edf429c932ae8f33aa6c45786d60ce93dbfec6cb Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 22 Sep 2020 17:39:26 +0200 Subject: [PATCH 159/987] Avoid loading .bashrc --- garlic/exp/saiph/numcomm.nix | 20 ++++++++++++++++++-- garlic/stages/argv.nix | 2 +- garlic/stages/broom.nix | 23 +++++++++++++++++++++++ garlic/stages/control.nix | 1 - garlic/stages/envRecord.nix | 25 +++++++++++++++++++++++++ garlic/stages/extrae.nix | 3 +-- garlic/stages/nix-setup.nix | 3 ++- garlic/stages/perf.nix | 2 +- garlic/stages/statspy.nix | 2 +- 9 files changed, 72 insertions(+), 9 deletions(-) create mode 100644 garlic/stages/broom.nix create mode 100644 garlic/stages/envRecord.nix diff --git a/garlic/exp/saiph/numcomm.nix b/garlic/exp/saiph/numcomm.nix index 541ab0f..7bc37fc 100644 --- a/garlic/exp/saiph/numcomm.nix +++ b/garlic/exp/saiph/numcomm.nix @@ -74,6 +74,7 @@ let nixsetup = {stage, conf, ...}: with conf; w.nixsetup { program = stageProgram stage; + nixsetup = "${nixPrefix}/bin/nix-setup"; }; extrae = {stage, conf, ...}: @@ -102,6 +103,14 @@ let ]; }; + # Print the environment to ensure we don't get anything nasty + envRecord = {stage, conf, ...}: w.envRecord { + program = stageProgram stage; + }; + + broom = {stage, conf, ...}: w.broom { + program = stageProgram stage; + }; # We may be able to use overlays by invoking the fix function directly, but we # have to get the definition of the bsc packages and the garlic ones as # overlays. @@ -119,11 +128,18 @@ let }; stages = with common; [] + # Cleans ALL environment variables + ++ [ broom ] + # Use sbatch to request resources first ++ optional enableSbatch sbatch - # Repeats the next stages N times - ++ optionals enableControl [ nixsetup control ] + # Record the current env vars set by SLURM to verify we don't have something + # nasty (like sourcing .bashrc). Take a look at #26 + ++ [ envRecord ] + + # Repeats the next stages N=30 times + ++ optional enableControl control # Executes srun to launch the program in the requested nodes, and # immediately after enters the nix environment again, as slurmstepd launches diff --git a/garlic/stages/argv.nix b/garlic/stages/argv.nix index 5060661..e879851 100644 --- a/garlic/stages/argv.nix +++ b/garlic/stages/argv.nix @@ -17,7 +17,7 @@ stdenv.mkDerivation { phases = [ "installPhase" ]; installPhase = '' cat > $out < $out < $out < $out < $out < $out < $out/bin/${name} < ${outputDir}/statspy.\$(date +%s.%3N).begin From c5e225c7782139dc78178f53f349867bd1a574ba Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 22 Sep 2020 17:40:26 +0200 Subject: [PATCH 160/987] saiph:Remove old experiments --- garlic/exp/saiph/mpi.nix | 88 -------------------- garlic/exp/saiph/tampi.nix | 165 ------------------------------------- 2 files changed, 253 deletions(-) delete mode 100644 garlic/exp/saiph/mpi.nix delete mode 100644 garlic/exp/saiph/tampi.nix diff --git a/garlic/exp/saiph/mpi.nix b/garlic/exp/saiph/mpi.nix deleted file mode 100644 index a618f85..0000000 --- a/garlic/exp/saiph/mpi.nix +++ /dev/null @@ -1,88 +0,0 @@ -{ - bsc -, nbody -, genApp -, genConfigs - -# Wrappers -, launchWrapper -, sbatchWrapper -, srunWrapper -, argvWrapper -, controlWrapper -, nixsetupWrapper -}: - -let - # Set the configuration for the experiment - config = { - cc = [ bsc.icc ]; - blocksize = [ 2048 ]; - mpi = [ bsc.impi bsc.openmpi bsc.mpich ]; - }; - - extraConfig = { - particles = 32*1024; - timesteps = 10; - ntasksPerNode = 2; - nodes = 1; - time = "00:10:00"; - qos = "debug"; - #mpi = bsc.impi; - #mpi = bsc.openmpi; - gitBranch = "garlic/mpi+send"; - gitURL = "ssh://git@bscpm02.bsc.es/garlic/apps/nbody.git"; - }; - - # Compute the cartesian product of all configurations - configs = map (conf: conf // extraConfig) (genConfigs config); - - sbatch = conf: app: sbatchWrapper { - app = app; - nixPrefix = "/gpfs/projects/bsc15/nix"; - exclusive = false; - ntasksPerNode = "${toString conf.ntasksPerNode}"; - nodes = "${toString conf.nodes}"; - time = conf.time; - qos = conf.qos; - chdirPrefix = "/home/bsc15/bsc15557/bsc-nixpkgs/out"; - }; - - srun = app: srunWrapper { - app = app; - nixPrefix = "/gpfs/projects/bsc15/nix"; - }; - - argv = conf: app: - with conf; - argvWrapper { - app = app; - argv = ''(-t ${toString timesteps} -p ${toString particles})''; - env = '' - export I_MPI_THREAD_SPLIT=1 - ''; - }; - - nbodyFn = conf: - with conf; - nbody.override { inherit cc mpi blocksize gitBranch gitURL; }; - - pipeline = conf: - sbatch conf ( - srun ( - nixsetupWrapper ( - argv conf ( - nbodyFn conf - ) - ) - ) - ) - ; - - # Ideally it should look like this: - #pipeline = sbatch nixsetup control argv nbodyFn; - - jobs = map pipeline configs; - -in - launchWrapper jobs diff --git a/garlic/exp/saiph/tampi.nix b/garlic/exp/saiph/tampi.nix deleted file mode 100644 index 4ec5d49..0000000 --- a/garlic/exp/saiph/tampi.nix +++ /dev/null @@ -1,165 +0,0 @@ -{ - stdenv -, nixpkgs -, pkgs -, genApp -, genConfigs -, runWrappers -}: - -with stdenv.lib; - -let - bsc = pkgs.bsc; - - # Set variable configuration for the experiment - varConfig = { - cc = [ bsc.icc ]; - mpi = [ bsc.impi bsc.openmpi ]; - blocksize = [ 1024 ]; - }; - - # Common configuration - common = { - # Compile time nbody config - gitBranch = "garlic/tampi+send+oss+task"; - - # nbody runtime options - particles = 1024*128; - timesteps = 20; - - # Resources - ntasksPerNode = "48"; - nodes = "1"; - - # Stage configuration - enableSbatch = true; - enableControl = true; - enableExtrae = false; - enablePerf = false; - enableCtf = false; - - # MN4 path - nixPrefix = "/gpfs/projects/bsc15/nix"; - }; - - # Compute the cartesian product of all configurations - configs = map (conf: conf // common) (genConfigs varConfig); - - stageProgram = stage: - if stage ? programPath - then "${stage}${stage.programPath}" else "${stage}"; - - w = runWrappers; - - sbatch = {stage, conf, ...}: with conf; w.sbatch { - program = stageProgram stage; - exclusive = true; - time = "02:00:00"; - qos = "debug"; - jobName = "nbody-bs"; - inherit nixPrefix nodes ntasksPerNode; - }; - - control = {stage, conf, ...}: with conf; w.control { - program = stageProgram stage; - }; - - srun = {stage, conf, ...}: with conf; w.srun { - program = stageProgram stage; - srunOptions = "--cpu-bind=verbose,rank"; - inherit nixPrefix; - }; - - statspy = {stage, conf, ...}: with conf; w.statspy { - program = stageProgram stage; - }; - - perf = {stage, conf, ...}: with conf; w.perf { - program = stageProgram stage; - perfArgs = "sched record -a"; - }; - - nixsetup = {stage, conf, ...}: with conf; w.nixsetup { - program = stageProgram stage; - }; - - extrae = {stage, conf, ...}: w.extrae { - program = stageProgram stage; - traceLib = "mpi"; # mpi -> libtracempi.so - configFile = ./extrae.xml; - }; - - ctf = {stage, conf, ...}: w.argv { - program = stageProgram stage; - env = '' - export NANOS6=ctf - export NANOS6_CTF2PRV=0 - ''; - }; - - argv = {stage, conf, ...}: w.argv { - program = stageProgram stage; - env = '' - set -e - export I_MPI_THREAD_SPLIT=1 - ''; - argv = ''( -t ${toString conf.timesteps} - -p ${toString conf.particles} )''; - }; - - bscOverlay = import ../../../overlay.nix; - - genPkgs = newOverlay: nixpkgs { - overlays = [ - bscOverlay - newOverlay - ]; - }; - - # We may be able to use overlays by invoking the fix function directly, but we - # have to get the definition of the bsc packages and the garlic ones as - # overlays. - - nbodyFn = {stage, conf, ...}: with conf; - let - # We set the mpi implementation to the one specified in the conf, so all - # packages in bsc will use that one. - customPkgs = genPkgs (self: super: { - bsc = super.bsc // { mpi = conf.mpi; }; - }); - in - customPkgs.bsc.garlic.nbody.override { - inherit cc blocksize mpi gitBranch; - }; - - stages = with common; [] - # Use sbatch to request resources first - ++ optional enableSbatch sbatch - - # Repeats the next stages N times - ++ optionals enableControl [ nixsetup control ] - - # Executes srun to launch the program in the requested nodes, and - # immediately after enters the nix environment again, as slurmstepd launches - # the next stages from outside the namespace. - ++ [ srun nixsetup ] - - # Intrumentation with extrae - ++ optional enableExtrae extrae - - # Optionally profile the next stages with perf - ++ optional enablePerf perf - - # Optionally profile nanos6 with the new ctf - ++ optional enableCtf ctf - - # Execute the nbody app with the argv and env vars - ++ [ argv nbodyFn ]; - - # List of actual programs to be executed - jobs = map (conf: w.stagen { inherit conf stages; }) configs; - -in - # We simply run each program one after another - w.launch jobs From 58e6c76349dce84ef2751569869fdaef01c84f73 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 22 Sep 2020 17:41:40 +0200 Subject: [PATCH 161/987] Move apps to garlic --- {bsc/apps => garlic}/cpic/default.nix | 0 {bsc/apps => garlic}/creams/default.nix | 0 {bsc/apps => garlic}/fwi/default.nix | 0 {bsc/apps => garlic}/heat/default.nix | 0 {bsc/apps => garlic}/hpccg/default.nix | 0 {bsc/apps => garlic}/hpcg/default.nix | 0 {bsc/apps => garlic}/hpcg/tampi.patch | 0 {bsc/apps => garlic}/lulesh/default.nix | 0 garlic/mkDerivation.nix | 19 +++++++++++ overlay.nix | 43 +++++++++++++++++++------ 10 files changed, 53 insertions(+), 9 deletions(-) rename {bsc/apps => garlic}/cpic/default.nix (100%) rename {bsc/apps => garlic}/creams/default.nix (100%) rename {bsc/apps => garlic}/fwi/default.nix (100%) rename {bsc/apps => garlic}/heat/default.nix (100%) rename {bsc/apps => garlic}/hpccg/default.nix (100%) rename {bsc/apps => garlic}/hpcg/default.nix (100%) rename {bsc/apps => garlic}/hpcg/tampi.patch (100%) rename {bsc/apps => garlic}/lulesh/default.nix (100%) create mode 100644 garlic/mkDerivation.nix diff --git a/bsc/apps/cpic/default.nix b/garlic/cpic/default.nix similarity index 100% rename from bsc/apps/cpic/default.nix rename to garlic/cpic/default.nix diff --git a/bsc/apps/creams/default.nix b/garlic/creams/default.nix similarity index 100% rename from bsc/apps/creams/default.nix rename to garlic/creams/default.nix diff --git a/bsc/apps/fwi/default.nix b/garlic/fwi/default.nix similarity index 100% rename from bsc/apps/fwi/default.nix rename to garlic/fwi/default.nix diff --git a/bsc/apps/heat/default.nix b/garlic/heat/default.nix similarity index 100% rename from bsc/apps/heat/default.nix rename to garlic/heat/default.nix diff --git a/bsc/apps/hpccg/default.nix b/garlic/hpccg/default.nix similarity index 100% rename from bsc/apps/hpccg/default.nix rename to garlic/hpccg/default.nix diff --git a/bsc/apps/hpcg/default.nix b/garlic/hpcg/default.nix similarity index 100% rename from bsc/apps/hpcg/default.nix rename to garlic/hpcg/default.nix diff --git a/bsc/apps/hpcg/tampi.patch b/garlic/hpcg/tampi.patch similarity index 100% rename from bsc/apps/hpcg/tampi.patch rename to garlic/hpcg/tampi.patch diff --git a/bsc/apps/lulesh/default.nix b/garlic/lulesh/default.nix similarity index 100% rename from bsc/apps/lulesh/default.nix rename to garlic/lulesh/default.nix diff --git a/garlic/mkDerivation.nix b/garlic/mkDerivation.nix new file mode 100644 index 0000000..31b3e02 --- /dev/null +++ b/garlic/mkDerivation.nix @@ -0,0 +1,19 @@ +{ lib }: + +let inherit (lib) optional; in + +mkDerivation: + +args: + +let + args_ = { + + enableParallelBuilding = args.enableParallelBuilding or true; + + hardeningDisable = [ "all" ]; + + }; +in + +mkDerivation (args // args_) diff --git a/overlay.nix b/overlay.nix index da0f5fd..d367137 100644 --- a/overlay.nix +++ b/overlay.nix @@ -128,11 +128,33 @@ let # Load some helper functions to generate app variants inherit (import ./garlic/gen.nix) genApps genApp genConfigs; - mpptest = callPackage ./garlic/mpptest { }; + # Override the hardening flags and parallel build by default (TODO) + #mkDerivation = callPackage ./garlic/mkDerivation.nix { }; - ppong = callPackage ./garlic/ppong { - mpi = self.bsc.mpi; - }; + # Apps for Garlic +# heat = callPackage ./garlic/heat { +# stdenv = pkgs.gcc7Stdenv; +# mpi = intel-mpi; +# tampi = tampi; +# }; +# +# creams = callPackage ./garlic/creams { +# stdenv = pkgs.gcc9Stdenv; +# mpi = intel-mpi; +# tampi = tampi.override { +# mpi = intel-mpi; +# }; +# }; +# +# lulesh = callPackage ./garlic/lulesh { +# mpi = intel-mpi; +# }; +# +# hpcg = callPackage ./garlic/hpcg { }; +# +# hpccg = callPackage ./garlic/hpccg { }; +# +# fwi = callPackage ./garlic/fwi { }; nbody = callPackage ./garlic/nbody { cc = self.bsc.icc; @@ -158,13 +180,16 @@ let extrae = callPackage ./garlic/stages/extrae.nix { }; stagen = callPackage ./garlic/stages/stagen.nix { }; perf = callPackage ./garlic/stages/perf.nix { }; + broom = callPackage ./garlic/stages/broom.nix { }; + envRecord = callPackage ./garlic/stages/envRecord.nix { }; }; - # Perf is tied to a linux kernel specific version - #linuxPackages = self.linuxPackages_4_4; - #perfWrapper = callPackage ./garlic/perf.nix { - # perf = self.linuxPackages.perf; - #}; + # Tests (move to bsc ?) + mpptest = callPackage ./garlic/mpptest { }; + + ppong = callPackage ./garlic/ppong { + mpi = self.bsc.mpi; + }; exp = { noise = callPackage ./garlic/exp/noise.nix { }; From 7de0593e4b2688432a5008c2e967bc04c4ed3ce5 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 22 Sep 2020 17:42:36 +0200 Subject: [PATCH 162/987] nanos6: Use git commit hash as version only --- bsc/nanos6/git.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bsc/nanos6/git.nix b/bsc/nanos6/git.nix index c540596..85fb128 100644 --- a/bsc/nanos6/git.nix +++ b/bsc/nanos6/git.nix @@ -16,7 +16,7 @@ with stdenv.lib; stdenv.mkDerivation rec { pname = "nanos6"; - version = "2.4-${src.shortRev}"; + version = "${src.shortRev}"; branch = "master"; cacheline-width = "64"; From e044ce918ea0988dfa5fbf9fe4384b8a88ccd64b Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 22 Sep 2020 18:01:42 +0200 Subject: [PATCH 163/987] Add OpenMP noise section --- NOISE | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/NOISE b/NOISE index 913d33a..2f4ded6 100644 --- a/NOISE +++ b/NOISE @@ -82,4 +82,22 @@ ABSTRACT I_MPI_THREAD_SPLIT controls whether the multithread capabilities are enabled or not. +1.6 LLVM and OpenMP problem + + The LLVM OpenMP implementation is installed in libomp.so, however two + symbolic links are created for libgomp.so and libiomp5.so. + + libgomp.so -> libomp.so + libiomp5.so -> libomp.so + libomp.so + + So applications compiled with OpenMP by other compilers may end up + using the LLVM implementation. This can be observed by setting + LD_DEBUG=all of using strace(1) and looking for the libomp.so library + being loaded. + + In bscpkgs the symbolic links have been removed for the clangOmpss2 + compiler. + + /* vim: set ts=2 sw=2 tw=72 fo=watqc expandtab spell autoindent: */ From ebd947c5447d39370f434f43ac1a13f1f18144b8 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 22 Sep 2020 18:02:32 +0200 Subject: [PATCH 164/987] Set default mpi implementation to Intel MPI --- overlay.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/overlay.nix b/overlay.nix index d367137..5b836ec 100644 --- a/overlay.nix +++ b/overlay.nix @@ -13,7 +13,7 @@ let bsc = { # Default MPI implementation to use. Will be overwritten by the # experiments. - mpi = self.bsc.openmpi; + mpi = self.bsc.impi; perf = callPackage ./bsc/perf/default.nix { kernel = self.linuxPackages_4_9.kernel; From e3623b05fdc1dce273f2767a00107929f24559b8 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 22 Sep 2020 18:38:25 +0200 Subject: [PATCH 165/987] Print the env via stderr --- garlic/stages/envRecord.nix | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/garlic/stages/envRecord.nix b/garlic/stages/envRecord.nix index 4d9a312..352162f 100644 --- a/garlic/stages/envRecord.nix +++ b/garlic/stages/envRecord.nix @@ -7,16 +7,16 @@ }: stdenv.mkDerivation { - name = "argv"; + name = "envRecord"; preferLocalBuild = true; phases = [ "installPhase" ]; installPhase = '' cat > $out <&2 echo ----- ENV BEGIN ------- + >&2 /usr/bin/env + >&2 echo ----- ENV END ------- exec ${program} \''${argv[@]} EOF From 1d5b528cd0a8bed552577fc6a89ee7b1e5838f32 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 22 Sep 2020 18:38:37 +0200 Subject: [PATCH 166/987] Change output log files --- garlic/stages/sbatch.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/garlic/stages/sbatch.nix b/garlic/stages/sbatch.nix index 8cbddfd..c9d0bb9 100644 --- a/garlic/stages/sbatch.nix +++ b/garlic/stages/sbatch.nix @@ -17,8 +17,8 @@ , qos ? null , reservation ? null , time ? null -, output ? "job_%j.out" -, error ? "job_%j.err" +, output ? "stdout.log" +, error ? "stderr.log" , contiguous ? null , extra ? null , acctgFreq ? null From ed7f6e3e97b1794c77c8afdebc085670c6d17f25 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 22 Sep 2020 18:39:11 +0200 Subject: [PATCH 167/987] nbody: Clean environment --- garlic/exp/nbody/bs.nix | 49 ++++++++++++++++++++++++++++++++--------- 1 file changed, 38 insertions(+), 11 deletions(-) diff --git a/garlic/exp/nbody/bs.nix b/garlic/exp/nbody/bs.nix index be956fd..0505950 100644 --- a/garlic/exp/nbody/bs.nix +++ b/garlic/exp/nbody/bs.nix @@ -23,8 +23,8 @@ let mpi = pkgs.bsc.impi; # nbody runtime options - particles = 1024*128; - timesteps = 20; + particles = 1024*64; + timesteps = 10; # Resources ntasksPerNode = "48"; @@ -79,13 +79,25 @@ let nixsetup = {stage, conf, ...}: with conf; w.nixsetup { program = stageProgram stage; + nixsetup = "${nixPrefix}/bin/nix-setup"; }; - extrae = {stage, conf, ...}: w.extrae { - program = stageProgram stage; - traceLib = "mpi"; # mpi -> libtracempi.so - configFile = ./extrae.xml; - }; + extrae = {stage, conf, ...}: + let + # We set the mpi implementation to the one specified in the conf, so all + # packages in bsc will use that one. + customPkgs = genPkgs (self: super: { + bsc = super.bsc // { mpi = conf.mpi; }; + }); + + extrae = customPkgs.bsc.extrae; + in + w.extrae { + program = stageProgram stage; + extrae = extrae; + traceLib = "mpi"; # mpi -> libtracempi.so + configFile = ./extrae.xml; + }; argv = {stage, conf, ...}: w.argv { program = stageProgram stage; @@ -106,6 +118,14 @@ let ]; }; + # Print the environment to ensure we don't get anything nasty + envRecord = {stage, conf, ...}: w.envRecord { + program = stageProgram stage; + }; + + broom = {stage, conf, ...}: w.broom { + program = stageProgram stage; + }; # We may be able to use overlays by invoking the fix function directly, but we # have to get the definition of the bsc packages and the garlic ones as # overlays. @@ -123,11 +143,18 @@ let }; stages = with common; [] - # Use sbatch to request resources first - ++ optional enableSbatch sbatch + # Cleans ALL environment variables + ++ [ broom ] - # Repeats the next stages N times - ++ optionals enableControl [ nixsetup control ] + # Use sbatch to request resources first + ++ optionals enableSbatch [ sbatch nixsetup ] + + # Record the current env vars set by SLURM to verify we don't have something + # nasty (like sourcing .bashrc). Take a look at #26 + ++ [ envRecord ] + + # Repeats the next stages N=30 times + ++ optional enableControl control # Executes srun to launch the program in the requested nodes, and # immediately after enters the nix environment again, as slurmstepd launches From 79fae204c2c24c463bdc57bacb041dbae5faf0a4 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 22 Sep 2020 18:39:29 +0200 Subject: [PATCH 168/987] Typo --- garlic/exp/saiph/numcomm.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/garlic/exp/saiph/numcomm.nix b/garlic/exp/saiph/numcomm.nix index 7bc37fc..560853a 100644 --- a/garlic/exp/saiph/numcomm.nix +++ b/garlic/exp/saiph/numcomm.nix @@ -152,7 +152,7 @@ let # Optionally profile the next stages with perf ++ optional enablePerf perf - # Execute the nbody app with the argv and env vars + # Execute the saiph example app ++ [ saiphFn ]; # List of actual programs to be executed From 32ac89b97fb1c9cb7462abafb7e8f2208d3bd1f6 Mon Sep 17 00:00:00 2001 From: sandra Date: Wed, 23 Sep 2020 12:58:51 +0200 Subject: [PATCH 169/987] Saiph: cc is a parameter of the app, not defined at stdenv anymore [its default value is clangOmpss2] --- overlay.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/overlay.nix b/overlay.nix index 5b836ec..5ab4530 100644 --- a/overlay.nix +++ b/overlay.nix @@ -165,7 +165,7 @@ let }; saiph = callPackage ./garlic/saiph { - stdenv = self.bsc.stdenvOmpss2; + cc = self.bsc.clangOmpss2; }; # Execution wrappers From 3419db1fc6a5243a2e5a888cbabbb3def7df5159 Mon Sep 17 00:00:00 2001 From: sandra Date: Wed, 23 Sep 2020 13:06:16 +0200 Subject: [PATCH 170/987] saiph: nixsetup to re-enter nix after the new added stage --- garlic/exp/saiph/numcomm.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/garlic/exp/saiph/numcomm.nix b/garlic/exp/saiph/numcomm.nix index 560853a..de853ac 100644 --- a/garlic/exp/saiph/numcomm.nix +++ b/garlic/exp/saiph/numcomm.nix @@ -132,7 +132,7 @@ let ++ [ broom ] # Use sbatch to request resources first - ++ optional enableSbatch sbatch + ++ optionals enableSbatch [ sbatch nixsetup ] # Record the current env vars set by SLURM to verify we don't have something # nasty (like sourcing .bashrc). Take a look at #26 From c8915dfc8940438254ff674be32b8b90a67f772e Mon Sep 17 00:00:00 2001 From: sandra Date: Wed, 23 Sep 2020 13:10:12 +0200 Subject: [PATCH 171/987] saiph: cc is a experiment parameter --- garlic/saiph/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/garlic/saiph/default.nix b/garlic/saiph/default.nix index c4c646a..91a1c36 100644 --- a/garlic/saiph/default.nix +++ b/garlic/saiph/default.nix @@ -3,7 +3,7 @@ , nanos6 , mpi , tampi -, mcxx +, cc , vtk , boost , gitBranch ? "master" @@ -30,7 +30,7 @@ stdenv.mkDerivation rec { nanos6 mpi tampi - mcxx + cc vtk boost ]; @@ -54,7 +54,7 @@ stdenv.mkDerivation rec { ''; makeFlags = [ - "-f" "Makefile.clang" + "-f" "Makefile.${cc.cc.CC}" "apps" "APP=ExHeat3D" ( if (numComm != null) then "NUM_COMM=${toString numComm}" else "" ) From c1b64e88974bc510e316671237d4b458dce61464 Mon Sep 17 00:00:00 2001 From: sandra Date: Wed, 23 Sep 2020 13:13:51 +0200 Subject: [PATCH 172/987] saiph: if extrae add some env var --- garlic/exp/saiph/numcomm.nix | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/garlic/exp/saiph/numcomm.nix b/garlic/exp/saiph/numcomm.nix index de853ac..15709f6 100644 --- a/garlic/exp/saiph/numcomm.nix +++ b/garlic/exp/saiph/numcomm.nix @@ -115,6 +115,18 @@ let # have to get the definition of the bsc packages and the garlic ones as # overlays. + argv = {stage, conf, ...}: with conf; w.argv { + program = stageProgram stage; + env = '' + export NANOS6_REPORT_PREFIX="#" + export I_MPI_THREAD_SPLIT=1 + '' + + optionalString enableExtrae + ''export NANOS6=extrae + export NANOS6_EXTRAE_AS_THREADS=0 + ''; + }; + saiphFn = {stage, conf, ...}: with conf; let # We set the mpi implementation to the one specified in the conf, so all @@ -153,7 +165,7 @@ let ++ optional enablePerf perf # Execute the saiph example app - ++ [ saiphFn ]; + ++ [ argv saiphFn ]; # List of actual programs to be executed jobs = map (conf: w.stagen { inherit conf stages; }) configs; From 724b8f232a7f68fd8bc9e0616750d911a0fd340a Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 28 Sep 2020 12:21:41 +0200 Subject: [PATCH 173/987] Intel MPI: release_mt -> release Fixes issue #28 --- bsc/intel-mpi/default.nix | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/bsc/intel-mpi/default.nix b/bsc/intel-mpi/default.nix index 261654a..da36620 100644 --- a/bsc/intel-mpi/default.nix +++ b/bsc/intel-mpi/default.nix @@ -9,16 +9,30 @@ , patchelf , autoPatchelfHook , enableDebug ? false +# The _mt version seems to cause seg-faults and deadlocks with the libpsm2 +# provider library with programs that call the MPI library without any locking +# mechanism. See https://pm.bsc.es/gitlab/rarias/bscpkgs/-/issues/28. By +# default, we use the non-mt variant, which provides a big lock. If you want to +# use it, take a look at the I_MPI_THREAD_SPLIT env-var as well. +, enableMt ? false }: +let + + lib_variant = (if enableDebug then "debug" else "release"); + + # See https://software.intel.com/content/www/us/en/develop/documentation/mpi-developer-reference-linux/top/environment-variable-reference/other-environment-variables.html + lib_mt = (if enableMt then "_mt" else ""); + lib_name = "${lib_variant}${lib_mt}"; + +in + stdenv.mkDerivation rec { name = "intel-mpi-${version}"; version = "2019.8.254"; dir_nr = "16814"; internal-ver = "2020.2.254"; - lib_variant = (if enableDebug then "debug" else "release"); - src = builtins.fetchTarball { url = "http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/${dir_nr}/l_mpi_${version}.tgz"; sha256 = "1za4zyvxm5bfkrca843na6sxq2gq7qb87s0zysa7dnyqjwa11n45"; @@ -66,7 +80,7 @@ stdenv.mkDerivation rec { mv include $out mkdir $out/lib cp -a lib/lib* $out/lib - cp -a lib/${lib_variant}_mt/lib* $out/lib + cp -a lib/${lib_name}/lib* $out/lib cp -a libfabric/lib/* $out/lib cp -a libfabric/lib/prov/* $out/lib cp -a libfabric/bin/* $out/bin From 985091130dc9e72bedcc4d912275a5d37347ef88 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 28 Sep 2020 12:56:13 +0200 Subject: [PATCH 174/987] clang: use the commit hash as version --- bsc/llvm-ompss2/clang.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bsc/llvm-ompss2/clang.nix b/bsc/llvm-ompss2/clang.nix index 0b2edae..c0a4b38 100644 --- a/bsc/llvm-ompss2/clang.nix +++ b/bsc/llvm-ompss2/clang.nix @@ -15,7 +15,7 @@ }: stdenv.mkDerivation rec { - version = "11.0.0"; + version = "${src.shortRev}"; pname = "clang-ompss2"; enableParallelBuilding = true; isClang = true; From ff4d39233abacb07bc7ddd542e1d6ecca945852c Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 28 Sep 2020 13:00:59 +0200 Subject: [PATCH 175/987] Add valgrind stage --- garlic/stages/valgrind.nix | 23 +++++++++++++++++++++++ overlay.nix | 1 + 2 files changed, 24 insertions(+) create mode 100644 garlic/stages/valgrind.nix diff --git a/garlic/stages/valgrind.nix b/garlic/stages/valgrind.nix new file mode 100644 index 0000000..5743206 --- /dev/null +++ b/garlic/stages/valgrind.nix @@ -0,0 +1,23 @@ +{ + stdenv +, bash +, valgrind +}: + +{ + program +}: + +stdenv.mkDerivation { + name = "valgrind"; + preferLocalBuild = true; + phases = [ "installPhase" ]; + installPhase = '' + cat > $out < Date: Mon, 28 Sep 2020 13:01:31 +0200 Subject: [PATCH 176/987] Update libpsm2: disabled by now --- bsc/libpsm2/default.nix | 44 +++++++++++++++++++++++++++++++++++++++++ overlay.nix | 3 +++ 2 files changed, 47 insertions(+) create mode 100644 bsc/libpsm2/default.nix diff --git a/bsc/libpsm2/default.nix b/bsc/libpsm2/default.nix new file mode 100644 index 0000000..cf59010 --- /dev/null +++ b/bsc/libpsm2/default.nix @@ -0,0 +1,44 @@ +{ stdenv, fetchFromGitHub, numactl, pkgconfig }: + +let + version = "11.2.185"; +in +stdenv.mkDerivation { + pname = "libpsm2"; + inherit version; + + preConfigure= '' + export UDEVDIR=$out/etc/udev + substituteInPlace ./Makefile --replace "udevrulesdir}" "prefix}/etc/udev"; + ''; + + enableParallelBuilding = true; + + buildInputs = [ numactl pkgconfig ]; + + installFlags = [ + "DESTDIR=$(out)" + "UDEVDIR=/etc/udev" + "LIBPSM2_COMPAT_CONF_DIR=/etc" + ]; + + src = fetchFromGitHub { + owner = "intel"; + repo = "opa-psm2"; + rev = "PSM2_${version}"; + sha256 = "062hg4r6gz7pla9df70nqs5i2a3mp1wszmp4l0g771fykhhrxsjg"; + }; + + postInstall = '' + mv $out/usr/* $out + rmdir $out/usr + ''; + + meta = with stdenv.lib; { + homepage = "https://github.com/intel/opa-psm2"; + description = "The PSM2 library supports a number of fabric media and stacks"; + license = with licenses; [ gpl2 bsd3 ]; + platforms = [ "x86_64-linux" ]; + maintainers = [ maintainers.bzizou ]; + }; +} diff --git a/overlay.nix b/overlay.nix index 298369a..f646302 100644 --- a/overlay.nix +++ b/overlay.nix @@ -30,6 +30,9 @@ let mpichDebug = self.mpich.override { enableDebug = true; }; + # Updated version of libpsm2: TODO push upstream. + #libpsm2 = callPackage ./bsc/libpsm2/default.nix { }; + # Default Intel MPI version is 2019 (the last one) impi = self.bsc.intelMpi; From ae2cdf8790681a80b970ffa40127c730071bac9d Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 28 Sep 2020 13:06:35 +0200 Subject: [PATCH 177/987] numcomm: disable extrae --- garlic/exp/saiph/numcomm.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/garlic/exp/saiph/numcomm.nix b/garlic/exp/saiph/numcomm.nix index 15709f6..ed75d8d 100644 --- a/garlic/exp/saiph/numcomm.nix +++ b/garlic/exp/saiph/numcomm.nix @@ -28,7 +28,7 @@ let # Stage configuration enableSbatch = true; enableControl = false; - enableExtrae = true; + enableExtrae = false; enablePerf = false; # MN4 path From f72a4e9bc8fd6789c7d0e128065c18253c8b8ea9 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 28 Sep 2020 13:07:07 +0200 Subject: [PATCH 178/987] Enable symbolizer for asan --- garlic/exp/saiph/numcomm.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/garlic/exp/saiph/numcomm.nix b/garlic/exp/saiph/numcomm.nix index ed75d8d..0755147 100644 --- a/garlic/exp/saiph/numcomm.nix +++ b/garlic/exp/saiph/numcomm.nix @@ -120,6 +120,7 @@ let env = '' export NANOS6_REPORT_PREFIX="#" export I_MPI_THREAD_SPLIT=1 + export ASAN_SYMBOLIZER_PATH=${pkgs.bsc.clangOmpss2Unwrapped}/bin/llvm-symbolizer '' + optionalString enableExtrae ''export NANOS6=extrae From fa734deacab0342ca36a299b795e4da8e7280fce Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 28 Sep 2020 14:11:14 +0200 Subject: [PATCH 179/987] extrae: remove home path from the xml --- garlic/exp/saiph/extrae.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/garlic/exp/saiph/extrae.xml b/garlic/exp/saiph/extrae.xml index b9af29b..45a7574 100644 --- a/garlic/exp/saiph/extrae.xml +++ b/garlic/exp/saiph/extrae.xml @@ -7,7 +7,6 @@ From eb46e8f41bc9824c83a85e406db34f4e482d8101 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 29 Sep 2020 16:55:14 +0200 Subject: [PATCH 180/987] tampi: Disable the C++ MPI interface for OpenMPI Fixes #30 --- bsc/tampi/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bsc/tampi/default.nix b/bsc/tampi/default.nix index fb241eb..211e0e5 100644 --- a/bsc/tampi/default.nix +++ b/bsc/tampi/default.nix @@ -17,7 +17,7 @@ stdenv.mkDerivation rec { enableParallelBuilding = true; buildInputs = [ autoreconfHook automake autoconf libtool gnumake boost mpi gcc ]; dontDisableStatic = true; - configureFlags = [ "--disable-mpi-mt-check" ]; + configureFlags = [ "--disable-mpi-mt-check" "CXXFLAGS=-DOMPI_SKIP_MPICXX=1" ]; src = fetchurl { url = "https://github.com/bsc-pm/tampi/archive/v${version}.tar.gz"; sha256 = "8608a74325939d2a6b56e82f7f6788efbc67731e2d64793bac69475f5b4b9704"; From 69b1dcf08aae31fd1be87f0b51606870b06f4228 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 30 Sep 2020 09:24:14 +0200 Subject: [PATCH 181/987] nbody: forgot nixsetup attr --- garlic/exp/nbody/tampi.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/garlic/exp/nbody/tampi.nix b/garlic/exp/nbody/tampi.nix index 4ec5d49..ae40a7f 100644 --- a/garlic/exp/nbody/tampi.nix +++ b/garlic/exp/nbody/tampi.nix @@ -82,6 +82,7 @@ let nixsetup = {stage, conf, ...}: with conf; w.nixsetup { program = stageProgram stage; + nixsetup = "${nixPrefix}/bin/nix-setup"; }; extrae = {stage, conf, ...}: w.extrae { From ec21ba98b5a4b474708a1339514a97d0f8daa41b Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 30 Sep 2020 09:32:25 +0200 Subject: [PATCH 182/987] nbody: Allow custom reservation --- garlic/exp/nbody/tampi.nix | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/garlic/exp/nbody/tampi.nix b/garlic/exp/nbody/tampi.nix index ae40a7f..7992150 100644 --- a/garlic/exp/nbody/tampi.nix +++ b/garlic/exp/nbody/tampi.nix @@ -52,14 +52,23 @@ let w = runWrappers; - sbatch = {stage, conf, ...}: with conf; w.sbatch { - program = stageProgram stage; - exclusive = true; - time = "02:00:00"; - qos = "debug"; - jobName = "nbody-bs"; - inherit nixPrefix nodes ntasksPerNode; - }; + sbatch = {stage, conf, ...}: with conf; w.sbatch ( + # Allow a user to define a custom reservation for the job in MareNostrum4, + # by setting the garlic.sbatch.reservation attribute in the + # ~/.config/nixpkgs/config.nix file. If the attribute is not set, no + # reservation is used. The user reservation may be overwritten by the + # experiment, if the reservation is set like with nodes or ntasksPerNode. + optionalAttrs (pkgs.config ? garlic.sbatch.reservation) { + inherit (pkgs.config.garlic.sbatch) reservation; + } // { + program = stageProgram stage; + exclusive = true; + time = "02:00:00"; + qos = "debug"; + jobName = "nbody-tampi"; + inherit nixPrefix nodes ntasksPerNode; + } + ); control = {stage, conf, ...}: with conf; w.control { program = stageProgram stage; From a227084e3991ff39112c569b905e08ce6f2371f5 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 30 Sep 2020 09:35:23 +0200 Subject: [PATCH 183/987] tampi: add gitlab repo in tampiGit --- bsc/tampi/git.nix | 26 ++++++++++++++++++++++++++ overlay.nix | 4 +++- 2 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 bsc/tampi/git.nix diff --git a/bsc/tampi/git.nix b/bsc/tampi/git.nix new file mode 100644 index 0000000..d27ad3e --- /dev/null +++ b/bsc/tampi/git.nix @@ -0,0 +1,26 @@ +{ + stdenv +, fetchurl +, automake +, autoconf +, libtool +, gnumake +, boost +, mpi +, gcc +, autoreconfHook +}: + +stdenv.mkDerivation rec { + pname = "tampi"; + version = "${src.shortRev}"; + enableParallelBuilding = true; + buildInputs = [ autoreconfHook automake autoconf libtool gnumake boost mpi gcc ]; + dontDisableStatic = true; + configureFlags = [ "--disable-mpi-mt-check" "CXXFLAGS=-DOMPI_SKIP_MPICXX=1" ]; + + src = builtins.fetchGit { + url = "ssh://git@bscpm02.bsc.es/interoperability/tampi"; + ref = "master"; + }; +} diff --git a/overlay.nix b/overlay.nix index f646302..f6007bd 100644 --- a/overlay.nix +++ b/overlay.nix @@ -82,7 +82,9 @@ let extrae = callPackage ./bsc/extrae/default.nix { }; - tampi = callPackage ./bsc/tampi/default.nix { }; + tampi = self.bsc.tampiRelease; + tampiRelease = callPackage ./bsc/tampi/default.nix { }; + tampiGit = callPackage ./bsc/tampi/git.nix { }; mcxxGit = callPackage ./bsc/mcxx/default.nix { bison = self.bison_3_5; From 35f4ba545a03b2b5d9689e89000582e6d5eea99f Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 30 Sep 2020 16:00:34 +0200 Subject: [PATCH 184/987] Experimental GDB stage --- garlic/stages/pgdb.nix | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 garlic/stages/pgdb.nix diff --git a/garlic/stages/pgdb.nix b/garlic/stages/pgdb.nix new file mode 100644 index 0000000..7ac3c99 --- /dev/null +++ b/garlic/stages/pgdb.nix @@ -0,0 +1,30 @@ +{ + stdenv +, bash +, screen +, gdb +}: + +{ + program +, gdbArgs ? "-ex run" +}: + +stdenv.mkDerivation { + name = "pgdb"; + preferLocalBuild = true; + phases = [ "installPhase" ]; + installPhase = '' + cat > $out < Date: Thu, 1 Oct 2020 10:48:54 +0200 Subject: [PATCH 185/987] Mark the launcher for upload --- garlic/stages/launcher.nix | 3 +++ 1 file changed, 3 insertions(+) diff --git a/garlic/stages/launcher.nix b/garlic/stages/launcher.nix index 6f4e463..8b32d1e 100644 --- a/garlic/stages/launcher.nix +++ b/garlic/stages/launcher.nix @@ -38,5 +38,8 @@ stdenv.mkDerivation { EOF chmod +x $out/bin/run + + # Mark the launcher for upload + touch $out/.upload-to-mn ''; } From ef592c060f991079533eddeb4a38c414484922e2 Mon Sep 17 00:00:00 2001 From: Sandra Date: Wed, 30 Sep 2020 17:49:58 +0200 Subject: [PATCH 186/987] Saiph: saiph shell --- garlic/saiph/shell.nix | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 garlic/saiph/shell.nix diff --git a/garlic/saiph/shell.nix b/garlic/saiph/shell.nix new file mode 100644 index 0000000..2033d20 --- /dev/null +++ b/garlic/saiph/shell.nix @@ -0,0 +1,14 @@ +with (import ../../default.nix); +with bsc; + +stdenv.mkDerivation rec { + name = "shell"; + buildInputs = [ + clangOmpss2 + impi + nanos6 + tampi + vtk + boost + ]; +} From e3349bb86483b875c84dc739fab3d37ba314b4af Mon Sep 17 00:00:00 2001 From: Sandra Date: Wed, 30 Sep 2020 17:53:13 +0200 Subject: [PATCH 187/987] saiph: exp: adding extrae config files --- garlic/exp/saiph/extraeOPENMPI_OMP.xml | 83 +++++++++++++++++++ garlic/exp/saiph/extraeOPENMPI_OMPSS.xml | 100 +++++++++++++++++++++++ garlic/exp/saiph/myextrae.xml | 0 3 files changed, 183 insertions(+) create mode 100644 garlic/exp/saiph/extraeOPENMPI_OMP.xml create mode 100644 garlic/exp/saiph/extraeOPENMPI_OMPSS.xml create mode 100644 garlic/exp/saiph/myextrae.xml diff --git a/garlic/exp/saiph/extraeOPENMPI_OMP.xml b/garlic/exp/saiph/extraeOPENMPI_OMP.xml new file mode 100644 index 0000000..0cd470c --- /dev/null +++ b/garlic/exp/saiph/extraeOPENMPI_OMP.xml @@ -0,0 +1,83 @@ + + + + + + + + + + + + + + + + + + + PAPI_TOT_INS,PAPI_TOT_CYC,PAPI_L1_DCM,PAPI_L2_DCM,PAPI_L3_TCM,PAPI_BR_INS,PAPI_BR_MSP,RESOURCE_STALLS + + + PAPI_TOT_INS,PAPI_TOT_CYC,PAPI_VEC_SP,PAPI_SR_INS,PAPI_LD_INS,PAPI_FP_INS + PAPI_TOT_CYC + + + + + + + + + + + + TRACE + 5 + /scratch + /gpfs/scratch/bsc41/bsc41273 + + + + 5000000 + + + + + /gpfs/scratch/bsc41/bsc41273/control + + + + + 10M + + + + + + + + + + + + + + + diff --git a/garlic/exp/saiph/extraeOPENMPI_OMPSS.xml b/garlic/exp/saiph/extraeOPENMPI_OMPSS.xml new file mode 100644 index 0000000..3349d29 --- /dev/null +++ b/garlic/exp/saiph/extraeOPENMPI_OMPSS.xml @@ -0,0 +1,100 @@ + + + + + + + + + + + + + + + + + 1-3 + 1-5 + 1-3 + 1-3 + 1-3 + + + + + + + + + + PAPI_TOT_INS,PAPI_TOT_CYC,PAPI_L1_DCM,PAPI_L2_DCM,PAPI_L3_TCM,PAPI_BR_INS,PAPI_BR_MSP,RESOURCE_STALLS + + + PAPI_TOT_INS,PAPI_TOT_CYC,PAPI_VEC_SP,PAPI_SR_INS,PAPI_LD_INS,PAPI_FP_INS + PAPI_TOT_CYC + + + + + + + + + + + + TRACE + 5 + /scratch + /gpfs/scratch/bsc41/bsc41273 + + + + 5000000 + + + + + /gpfs/scratch/bsc41/bsc41273/control + + + + + 10M + + + + + + 500u + + + + + + + + + + + + + + diff --git a/garlic/exp/saiph/myextrae.xml b/garlic/exp/saiph/myextrae.xml new file mode 100644 index 0000000..e69de29 From 8f5c5146b37d60c5a230166a2f0c379e82dbcd79 Mon Sep 17 00:00:00 2001 From: Sandra Date: Wed, 30 Sep 2020 18:33:08 +0200 Subject: [PATCH 188/987] Saiph: update branchname according to garlic nomenclature --- garlic/exp/saiph/numcomm.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/garlic/exp/saiph/numcomm.nix b/garlic/exp/saiph/numcomm.nix index 0755147..9c306dc 100644 --- a/garlic/exp/saiph/numcomm.nix +++ b/garlic/exp/saiph/numcomm.nix @@ -18,7 +18,7 @@ let # Common configuration common = { # Compile time nbody config - gitBranch = "Saiph_TAMPI_OMPSS"; + gitBranch = "garlic/tampi+isend+oss+task+simd"; mpi = pkgs.bsc.impi; # Resources From 6a2d865225510a4c56dad2bb7e86a703b05c534d Mon Sep 17 00:00:00 2001 From: Sandra Date: Wed, 30 Sep 2020 18:33:27 +0200 Subject: [PATCH 189/987] saiph: adding ministat app to saiph shell --- garlic/saiph/shell.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/garlic/saiph/shell.nix b/garlic/saiph/shell.nix index 2033d20..24cbb42 100644 --- a/garlic/saiph/shell.nix +++ b/garlic/saiph/shell.nix @@ -10,5 +10,6 @@ stdenv.mkDerivation rec { tampi vtk boost + ministat ]; } From 78b96c1bc6c9b1b64e1fc456f4ccc71d906000d4 Mon Sep 17 00:00:00 2001 From: Sandra Date: Wed, 30 Sep 2020 18:34:14 +0200 Subject: [PATCH 190/987] saiph: including reservation option --- garlic/exp/saiph/numcomm.nix | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/garlic/exp/saiph/numcomm.nix b/garlic/exp/saiph/numcomm.nix index 9c306dc..07e108c 100644 --- a/garlic/exp/saiph/numcomm.nix +++ b/garlic/exp/saiph/numcomm.nix @@ -44,14 +44,23 @@ let w = runWrappers; - sbatch = {stage, conf, ...}: with conf; w.sbatch { - program = stageProgram stage; - exclusive = true; - time = "02:00:00"; - qos = "debug"; - jobName = "saiph"; - inherit nixPrefix nodes ntasksPerNode; - }; + sbatch = {stage, conf, ...}: with conf; w.sbatch ( + # Allow a user to define a custom reservation for the job in MareNostrum4, + # by setting the garlic.sbatch.reservation attribute in the + # ~/.config/nixpkgs/config.nix file. If the attribute is not set, no + # reservation is used. The user reservation may be overwritten by the + # experiment, if the reservation is set like with nodes or ntasksPerNode. + optionalAttrs (pkgs.config ? garlic.sbatch.reservation) { + inherit (pkgs.config.garlic.sbatch) reservation; + } // { + program = stageProgram stage; + exclusive = true; + time = "02:00:00"; + qos = "debug"; + jobName = "saiph"; + inherit nixPrefix nodes ntasksPerNode; + } + ); control = {stage, conf, ...}: with conf; w.control { program = stageProgram stage; From ce7566cf7afb7807b286bdf8fd40d3d1095028dd Mon Sep 17 00:00:00 2001 From: Sandra Date: Thu, 1 Oct 2020 17:45:40 +0200 Subject: [PATCH 191/987] saiph: removing useless exports --- garlic/saiph/default.nix | 8 -------- 1 file changed, 8 deletions(-) diff --git a/garlic/saiph/default.nix b/garlic/saiph/default.nix index 91a1c36..3028042 100644 --- a/garlic/saiph/default.nix +++ b/garlic/saiph/default.nix @@ -38,19 +38,11 @@ stdenv.mkDerivation rec { # Required for nanos6 hardeningDisable = [ "bindnow" ]; -# Enable debug -# postPatch = '' -# sed -i 's/^SANITIZE_FLAGS=/SANITIZE_FLAGS=$(DEBUG_FLAGS)/g' \ -# saiphv2/cpp/src/Makefile.clang -# ''; - preBuild = '' cd saiphv2/cpp/src export VTK_VERSION=8.2 export VTK_HOME=${vtk} - export BOOST_HOME=${boost} - export SAIPH_HOME=. ''; makeFlags = [ From dcf64bd1f6eaedd6b20e3d5e00c0775089e55afa Mon Sep 17 00:00:00 2001 From: Sandra Date: Thu, 1 Oct 2020 17:49:27 +0200 Subject: [PATCH 192/987] adding NOISE point --- NOISE | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/NOISE b/NOISE index 2f4ded6..cab9f35 100644 --- a/NOISE +++ b/NOISE @@ -99,5 +99,12 @@ ABSTRACT In bscpkgs the symbolic links have been removed for the clangOmpss2 compiler. +1.7 Nix-shell does not allow isolation + + Nix-shell is not isolated, the compilation process tries then to + use headers and libs from /usr. + + This can induce compilation errors not happening inside nix-build. + Do not use to ensure reproducibility. /* vim: set ts=2 sw=2 tw=72 fo=watqc expandtab spell autoindent: */ From cec7a280c02ba606783cb5686cbdad79d9a2b251 Mon Sep 17 00:00:00 2001 From: Sandra Date: Thu, 1 Oct 2020 17:50:07 +0200 Subject: [PATCH 193/987] saiph: removing nix-shell to avoid its use!! --- garlic/saiph/shell.nix | 15 --------------- 1 file changed, 15 deletions(-) delete mode 100644 garlic/saiph/shell.nix diff --git a/garlic/saiph/shell.nix b/garlic/saiph/shell.nix deleted file mode 100644 index 24cbb42..0000000 --- a/garlic/saiph/shell.nix +++ /dev/null @@ -1,15 +0,0 @@ -with (import ../../default.nix); -with bsc; - -stdenv.mkDerivation rec { - name = "shell"; - buildInputs = [ - clangOmpss2 - impi - nanos6 - tampi - vtk - boost - ministat - ]; -} From 79a4a4d16b671a1d40ec4af4a009ec4ff18507ad Mon Sep 17 00:00:00 2001 From: Sandra Date: Fri, 2 Oct 2020 10:46:56 +0200 Subject: [PATCH 194/987] saiph: removing home paths --- garlic/exp/saiph/extraeOPENMPI_OMP.xml | 1 - garlic/exp/saiph/extraeOPENMPI_OMPSS.xml | 1 - 2 files changed, 2 deletions(-) diff --git a/garlic/exp/saiph/extraeOPENMPI_OMP.xml b/garlic/exp/saiph/extraeOPENMPI_OMP.xml index 0cd470c..a8e46e3 100644 --- a/garlic/exp/saiph/extraeOPENMPI_OMP.xml +++ b/garlic/exp/saiph/extraeOPENMPI_OMP.xml @@ -1,7 +1,6 @@ diff --git a/garlic/exp/saiph/extraeOPENMPI_OMPSS.xml b/garlic/exp/saiph/extraeOPENMPI_OMPSS.xml index 3349d29..7cd2fdc 100644 --- a/garlic/exp/saiph/extraeOPENMPI_OMPSS.xml +++ b/garlic/exp/saiph/extraeOPENMPI_OMPSS.xml @@ -1,7 +1,6 @@ From 61a2db03dc0fb2677bdf70b29e4703ff7af61cd1 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 2 Oct 2020 11:58:04 +0200 Subject: [PATCH 195/987] Add postprocessing hist tool --- garlic/postprocess/hist/default.nix | 25 ++++++++++++++++++++ garlic/postprocess/hist/hist.sh | 36 +++++++++++++++++++++++++++++ overlay.nix | 3 +++ 3 files changed, 64 insertions(+) create mode 100644 garlic/postprocess/hist/default.nix create mode 100644 garlic/postprocess/hist/hist.sh diff --git a/garlic/postprocess/hist/default.nix b/garlic/postprocess/hist/default.nix new file mode 100644 index 0000000..4a3d464 --- /dev/null +++ b/garlic/postprocess/hist/default.nix @@ -0,0 +1,25 @@ +{ + stdenv +, ministat +}: + +stdenv.mkDerivation { + name = "hist"; + preferLocalBuild = true; + src = ./.; + + dontBuild = true; + dontConfigure = true; + + inherit ministat; + + patchPhase = '' + substituteAllInPlace hist.sh + ''; + + installPhase = '' + mkdir -p $out/bin + cp hist.sh $out/bin/hist + chmod +x $out/bin/hist + ''; +} diff --git a/garlic/postprocess/hist/hist.sh b/garlic/postprocess/hist/hist.sh new file mode 100644 index 0000000..55d54c8 --- /dev/null +++ b/garlic/postprocess/hist/hist.sh @@ -0,0 +1,36 @@ +#!/bin/sh + +# Use it either reading from stdin or by specifing +# multiple files as arguments + +# xeon07$ hist stdout.log +# x +# +------------------------------------------------------------------------+ +# | x | +# | x | +# | x | +# | x | +# | x | +# | xxx | +# | xxx | +# | xxxxx | +# | xxxxxx | +# | xxxxxxx x| +# ||________M_A___________| | +# +------------------------------------------------------------------------+ +# N Min Max Median Avg Stddev +# x 30 3.585183 3.763913 3.591559 3.5973344 0.031719975 + +ministat=@ministat@/bin + +export PATH="$PATH:$ministat" + +files="$@" +if [ -z "$files" ]; then + files=/proc/self/fd/0 +fi + +for file in "$files"; do + awk '/^time /{print $2}' $file | \ + ministat -w72 +done diff --git a/overlay.nix b/overlay.nix index f6007bd..ce8ed51 100644 --- a/overlay.nix +++ b/overlay.nix @@ -197,6 +197,9 @@ let mpi = self.bsc.mpi; }; + # Post processing tools + hist = callPackage ./garlic/postprocess/hist { }; + exp = { noise = callPackage ./garlic/exp/noise.nix { }; nbody = { From 50eeca2257f5c7cf9c1a9d286fe3c6604a67ce8b Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 2 Oct 2020 15:30:55 +0200 Subject: [PATCH 196/987] hist: Add -S option and allow joined plots --- garlic/postprocess/hist/hist.sh | 61 ++++++++++++++++++++++++++++----- 1 file changed, 52 insertions(+), 9 deletions(-) mode change 100644 => 100755 garlic/postprocess/hist/hist.sh diff --git a/garlic/postprocess/hist/hist.sh b/garlic/postprocess/hist/hist.sh old mode 100644 new mode 100755 index 55d54c8..f3363b4 --- a/garlic/postprocess/hist/hist.sh +++ b/garlic/postprocess/hist/hist.sh @@ -1,4 +1,4 @@ -#!/bin/sh +#!/bin/bash # Use it either reading from stdin or by specifing # multiple files as arguments @@ -20,17 +20,60 @@ # +------------------------------------------------------------------------+ # N Min Max Median Avg Stddev # x 30 3.585183 3.763913 3.591559 3.5973344 0.031719975 +# +# Other ministat options can be passed as well. The -S option splits the results +# in multiple plots. + + +usage() { echo "Usage: hist [-hSAns] [-c confidence] [-w width] files..." 1>&2; exit 1; } + +function stat_files() { + tmpfiles=() + sedcmd="" + + for file in ${files[@]}; do + tmp=$(mktemp) + awk '/^time /{print $2}' "$file" > "$tmp" + sedcmd+="s:$tmp:$file:g;" + tmpfiles+=($tmp) + done + + if [ $split == 1 ]; then + for f in "${tmpfiles[@]}"; do + ministat $ministat_opt $f | sed -e "$sedcmd" + done + else + ministat $ministat_opt ${tmpfiles[@]} | sed -e "$sedcmd" + fi + + rm ${tmpfiles[@]} +} + +split=0 +ministat_opt="-w72" + +while getopts "hSAnsc:w:" o; do + case "${o}" in + S) split=1 ;; + c) ministat_opt+=" -c $OPTARG" ;; + w) ministat_opt+=" -w $OPTARG" ;; + A) ministat_opt+=" -$o" ;; + n) ministat_opt+=" -$o" ;; + s) ministat_opt+=" -$o" ;; + *) usage ;; + esac +done + +shift $((OPTIND-1)) ministat=@ministat@/bin +#ministat=/nix/store/sh9b484bnhkajxnblpwix7fhbkid6365-ministat-20150715-1/bin export PATH="$PATH:$ministat" -files="$@" -if [ -z "$files" ]; then - files=/proc/self/fd/0 +files=("$@") +if [[ -z "${files[@]}" ]]; then + awk '/^time /{print $2}' | ministat $ministat_opt +else + stat_files fi - -for file in "$files"; do - awk '/^time /{print $2}' $file | \ - ministat -w72 -done From 5cbc8e4fbbc9ab3ad3f5ee6ed2b0bb63094d7317 Mon Sep 17 00:00:00 2001 From: Pedro Martinez Date: Wed, 30 Sep 2020 17:32:49 +0200 Subject: [PATCH 197/987] First attempt to create an experiment with CREAMS: strong scaling from 1 to 16 nodes using the pure MPI version --- garlic/creams/default.nix | 30 ++++- garlic/creams/input.nix | 27 ++++ garlic/exp/creams/SS+mpi+send+seq.nix | 173 ++++++++++++++++++++++++++ garlic/exp/creams/test.nix | 173 ++++++++++++++++++++++++++ garlic/exp/creams/test.nix~ | 169 +++++++++++++++++++++++++ garlic/stages/sbatch.nix | 2 +- overlay.nix | 33 +++-- 7 files changed, 594 insertions(+), 13 deletions(-) create mode 100644 garlic/creams/input.nix create mode 100644 garlic/exp/creams/SS+mpi+send+seq.nix create mode 100644 garlic/exp/creams/test.nix create mode 100644 garlic/exp/creams/test.nix~ diff --git a/garlic/creams/default.nix b/garlic/creams/default.nix index 3e8d822..ac704c4 100644 --- a/garlic/creams/default.nix +++ b/garlic/creams/default.nix @@ -2,23 +2,39 @@ stdenv , nanos6 , mpi +, openmpi +, impi , tampi , mcxx -, icc +, cc +, gitBranch }: +assert (mpi == impi || mpi == openmpi); + +let + mpiName = (if mpi == openmpi then + "OpenMPI" + else + "IntelMPI"); + +in stdenv.mkDerivation rec { name = "creams"; + # src = /home/Computational/pmartin1/creams-simplified; + src = builtins.fetchGit { url = "ssh://git@bscpm02.bsc.es/pmartin1/creams-simplified.git"; - ref = "MPI+OmpSs-2+TAMPI"; + ref = "${gitBranch}"; }; + programPath = "/bin/creams.exe"; + buildInputs = [ nanos6 mpi - icc + cc tampi mcxx ]; @@ -27,12 +43,18 @@ stdenv.mkDerivation rec { configurePhase = '' export TAMPI_HOME=${tampi} + . etc/bashrc + #export FORTRAN_COMPILER=GNU # GCC compiler + export MPI_LIB=${mpiName} + + echo + + CREAMS_UPDATE_ENVIRONMENT ''; installPhase = '' mkdir -p $out/bin cp -a build/* $out/bin ''; - } diff --git a/garlic/creams/input.nix b/garlic/creams/input.nix new file mode 100644 index 0000000..33405e1 --- /dev/null +++ b/garlic/creams/input.nix @@ -0,0 +1,27 @@ +{ + stdenv +, nodes +, gitBranch +}: + +stdenv.mkDerivation rec { + name = "creams-input"; + + # src = /home/Computational/pmartin1/creams-simplified; + + src = builtins.fetchGit { + url = "ssh://git@bscpm02.bsc.es/pmartin1/creams-simplified.git"; + ref = "${gitBranch}"; + }; + + phases = [ "unpackPhase" "installPhase" ]; + + installPhase = '' + pushd SodTubeBenchmark + bash gridScript.sh 0 0 $((${toString nodes}*48)) 0 + popd + + mkdir -p $out + cp -a SodTubeBenchmark $out/ + ''; +} diff --git a/garlic/exp/creams/SS+mpi+send+seq.nix b/garlic/exp/creams/SS+mpi+send+seq.nix new file mode 100644 index 0000000..c4ade80 --- /dev/null +++ b/garlic/exp/creams/SS+mpi+send+seq.nix @@ -0,0 +1,173 @@ +{ + stdenv +, nixpkgs +, pkgs +, genApp +, genConfigs +, runWrappers +}: + +with stdenv.lib; + +let + bsc = pkgs.bsc; + + # Set variable configuration for the experiment + varConfig = { + # cc = [ self.gcc10 ]; # Does not work + # mpi = [ bsc.openmpi ]; # Does not work + # cc = [ bsc.icc ]; + # mpi = [ bsc.impi ]; + + nodes = [ 1 2 4 8 16 ]; + }; + + # Common configuration + common = { + gitBranch = "garlic/mpi+send+seq"; + + cc = bsc.icc ; + mpi = bsc.impi; + + # Resources + ntasksPerNode = 48; + #ntasksPerSocket = 24; // Add this variable to nix + + # Stage configuration + enableSbatch = true; + enableControl = true; + enableExtrae = false; + enablePerf = false; + enableCtf = false; + + # MN4 path + nixPrefix = "/gpfs/projects/bsc15/nix"; + }; + + # Compute the cartesian product of all configurations + configs = map (conf: conf // common) (genConfigs varConfig); + + stageProgram = stage: + if stage ? programPath + then "${stage}${stage.programPath}" else "${stage}"; + + w = runWrappers; + + sbatch = {stage, conf, ...}: with conf; w.sbatch { + program = stageProgram stage; + exclusive = true; + time = "02:00:00"; + qos = "debug"; + jobName = "nbody-bs"; + inherit nixPrefix nodes ntasksPerNode; + }; + + control = {stage, conf, ...}: with conf; w.control { + program = stageProgram stage; + }; + + srun = {stage, conf, ...}: with conf; w.srun { + program = stageProgram stage; + srunOptions = "--cpu-bind=verbose,rank"; + inherit nixPrefix; + }; + + statspy = {stage, conf, ...}: with conf; w.statspy { + program = stageProgram stage; + }; + + perf = {stage, conf, ...}: with conf; w.perf { + program = stageProgram stage; + perfArgs = "sched record -a"; + }; + + nixsetup = {stage, conf, ...}: with conf; w.nixsetup { + program = stageProgram stage; + nixsetup = "${nixPrefix}/bin/nix-setup"; + }; + + extrae = {stage, conf, ...}: w.extrae { + program = stageProgram stage; + traceLib = "mpi"; # mpi -> libtracempi.so + configFile = ./extrae.xml; + }; + + ctf = {stage, conf, ...}: w.argv { + program = stageProgram stage; + env = '' + export NANOS6=ctf + export NANOS6_CTF2PRV=0 + ''; + }; + + bscOverlay = import ../../../overlay.nix; + + genPkgs = newOverlay: nixpkgs { + overlays = [ + bscOverlay + newOverlay + ]; + }; + + inputDataset = {stage, conf, ...}: with conf; + let + input = bsc.garlic.creamsInput.override { + inherit gitBranch nodes; + }; + in w.argv + { + program = stageProgram stage; + env = '' + cp -r ${input}/SodTubeBenchmark/* . + + pwd + ls -l + ''; + }; + + # We may be able to use overlays by invoking the fix function directly, but we + # have to get the definition of the bsc packages and the garlic ones as + # overlays. + + creamsFn = {stage, conf, ...}: with conf; + let + # We set the mpi implementation to the one specified in the conf, so all + # packages in bsc will use that one. + customPkgs = genPkgs (self: super: { + bsc = super.bsc // { mpi = conf.mpi; }; + }); + in + customPkgs.bsc.garlic.creams.override { + inherit cc mpi gitBranch; + }; + + stages = with common; [] + # Use sbatch to request resources first + ++ optional enableSbatch sbatch + + # Repeats the next stages N times + ++ optionals enableControl [ nixsetup control ] + + # Executes srun to launch the program in the requested nodes, and + # immediately after enters the nix environment again, as slurmstepd launches + # the next stages from outside the namespace. + ++ [ srun nixsetup ] + + # Intrumentation with extrae + ++ optional enableExtrae extrae + + # Optionally profile the next stages with perf + ++ optional enablePerf perf + + # Optionally profile nanos6 with the new ctf + ++ optional enableCtf ctf + + # Execute the nbody app with the argv and env vars + ++ [ inputDataset creamsFn ]; + + # List of actual programs to be executed + jobs = map (conf: w.stagen { inherit conf stages; }) configs; + +in + # We simply run each program one after another + w.launch jobs diff --git a/garlic/exp/creams/test.nix b/garlic/exp/creams/test.nix new file mode 100644 index 0000000..c4ade80 --- /dev/null +++ b/garlic/exp/creams/test.nix @@ -0,0 +1,173 @@ +{ + stdenv +, nixpkgs +, pkgs +, genApp +, genConfigs +, runWrappers +}: + +with stdenv.lib; + +let + bsc = pkgs.bsc; + + # Set variable configuration for the experiment + varConfig = { + # cc = [ self.gcc10 ]; # Does not work + # mpi = [ bsc.openmpi ]; # Does not work + # cc = [ bsc.icc ]; + # mpi = [ bsc.impi ]; + + nodes = [ 1 2 4 8 16 ]; + }; + + # Common configuration + common = { + gitBranch = "garlic/mpi+send+seq"; + + cc = bsc.icc ; + mpi = bsc.impi; + + # Resources + ntasksPerNode = 48; + #ntasksPerSocket = 24; // Add this variable to nix + + # Stage configuration + enableSbatch = true; + enableControl = true; + enableExtrae = false; + enablePerf = false; + enableCtf = false; + + # MN4 path + nixPrefix = "/gpfs/projects/bsc15/nix"; + }; + + # Compute the cartesian product of all configurations + configs = map (conf: conf // common) (genConfigs varConfig); + + stageProgram = stage: + if stage ? programPath + then "${stage}${stage.programPath}" else "${stage}"; + + w = runWrappers; + + sbatch = {stage, conf, ...}: with conf; w.sbatch { + program = stageProgram stage; + exclusive = true; + time = "02:00:00"; + qos = "debug"; + jobName = "nbody-bs"; + inherit nixPrefix nodes ntasksPerNode; + }; + + control = {stage, conf, ...}: with conf; w.control { + program = stageProgram stage; + }; + + srun = {stage, conf, ...}: with conf; w.srun { + program = stageProgram stage; + srunOptions = "--cpu-bind=verbose,rank"; + inherit nixPrefix; + }; + + statspy = {stage, conf, ...}: with conf; w.statspy { + program = stageProgram stage; + }; + + perf = {stage, conf, ...}: with conf; w.perf { + program = stageProgram stage; + perfArgs = "sched record -a"; + }; + + nixsetup = {stage, conf, ...}: with conf; w.nixsetup { + program = stageProgram stage; + nixsetup = "${nixPrefix}/bin/nix-setup"; + }; + + extrae = {stage, conf, ...}: w.extrae { + program = stageProgram stage; + traceLib = "mpi"; # mpi -> libtracempi.so + configFile = ./extrae.xml; + }; + + ctf = {stage, conf, ...}: w.argv { + program = stageProgram stage; + env = '' + export NANOS6=ctf + export NANOS6_CTF2PRV=0 + ''; + }; + + bscOverlay = import ../../../overlay.nix; + + genPkgs = newOverlay: nixpkgs { + overlays = [ + bscOverlay + newOverlay + ]; + }; + + inputDataset = {stage, conf, ...}: with conf; + let + input = bsc.garlic.creamsInput.override { + inherit gitBranch nodes; + }; + in w.argv + { + program = stageProgram stage; + env = '' + cp -r ${input}/SodTubeBenchmark/* . + + pwd + ls -l + ''; + }; + + # We may be able to use overlays by invoking the fix function directly, but we + # have to get the definition of the bsc packages and the garlic ones as + # overlays. + + creamsFn = {stage, conf, ...}: with conf; + let + # We set the mpi implementation to the one specified in the conf, so all + # packages in bsc will use that one. + customPkgs = genPkgs (self: super: { + bsc = super.bsc // { mpi = conf.mpi; }; + }); + in + customPkgs.bsc.garlic.creams.override { + inherit cc mpi gitBranch; + }; + + stages = with common; [] + # Use sbatch to request resources first + ++ optional enableSbatch sbatch + + # Repeats the next stages N times + ++ optionals enableControl [ nixsetup control ] + + # Executes srun to launch the program in the requested nodes, and + # immediately after enters the nix environment again, as slurmstepd launches + # the next stages from outside the namespace. + ++ [ srun nixsetup ] + + # Intrumentation with extrae + ++ optional enableExtrae extrae + + # Optionally profile the next stages with perf + ++ optional enablePerf perf + + # Optionally profile nanos6 with the new ctf + ++ optional enableCtf ctf + + # Execute the nbody app with the argv and env vars + ++ [ inputDataset creamsFn ]; + + # List of actual programs to be executed + jobs = map (conf: w.stagen { inherit conf stages; }) configs; + +in + # We simply run each program one after another + w.launch jobs diff --git a/garlic/exp/creams/test.nix~ b/garlic/exp/creams/test.nix~ new file mode 100644 index 0000000..ac598d2 --- /dev/null +++ b/garlic/exp/creams/test.nix~ @@ -0,0 +1,169 @@ +{ + stdenv +, nixpkgs +, pkgs +, genApp +, genConfigs +, runWrappers +}: + +with stdenv.lib; + +let + bsc = pkgs.bsc; + + # Set variable configuration for the experiment + varConfig = { + mpi = [ bsc.impi bsc.openmpi ]; + nodes = [ 1 ]; + }; + + # Common configuration + common = { + # Compile time nbody config + gitBranch = "garlic/mpi+send+seq"; + + cc = bsc.icc; + + # Resources + ntasksPerNode = 48; + nodes = 1; + + # Stage configuration + enableSbatch = true; + enableControl = true; + enableExtrae = false; + enablePerf = false; + enableCtf = false; + + # MN4 path + nixPrefix = "/gpfs/projects/bsc15/nix"; + }; + + # Compute the cartesian product of all configurations + configs = map (conf: conf // common) (genConfigs varConfig); + + stageProgram = stage: + if stage ? programPath + then "${stage}${stage.programPath}" else "${stage}"; + + w = runWrappers; + + sbatch = {stage, conf, ...}: with conf; w.sbatch { + program = stageProgram stage; + exclusive = true; + time = "02:00:00"; + qos = "debug"; + jobName = "nbody-bs"; + inherit nixPrefix nodes ntasksPerNode; + }; + + control = {stage, conf, ...}: with conf; w.control { + program = stageProgram stage; + }; + + srun = {stage, conf, ...}: with conf; w.srun { + program = stageProgram stage; + srunOptions = "--cpu-bind=verbose,rank"; + inherit nixPrefix; + }; + + statspy = {stage, conf, ...}: with conf; w.statspy { + program = stageProgram stage; + }; + + perf = {stage, conf, ...}: with conf; w.perf { + program = stageProgram stage; + perfArgs = "sched record -a"; + }; + + nixsetup = {stage, conf, ...}: with conf; w.nixsetup { + program = stageProgram stage; + nixsetup = "${nixPrefix}/bin/nix-setup"; + }; + + extrae = {stage, conf, ...}: w.extrae { + program = stageProgram stage; + traceLib = "mpi"; # mpi -> libtracempi.so + configFile = ./extrae.xml; + }; + + ctf = {stage, conf, ...}: w.argv { + program = stageProgram stage; + env = '' + export NANOS6=ctf + export NANOS6_CTF2PRV=0 + ''; + }; + + bscOverlay = import ../../../overlay.nix; + + genPkgs = newOverlay: nixpkgs { + overlays = [ + bscOverlay + newOverlay + ]; + }; + + inputDataset = {stage, conf, ...}: with conf; + let + input = bsc.garlic.creamsInput.override { + inherit gitBranch nodes; + }; + in w.argv + { + program = stageProgram stage; + env = '' + cp -r ${input}/SodTubeBenchmark/* . + + pwd + ls -l + ''; + }; + + # We may be able to use overlays by invoking the fix function directly, but we + # have to get the definition of the bsc packages and the garlic ones as + # overlays. + + creamsFn = {stage, conf, ...}: with conf; + let + # We set the mpi implementation to the one specified in the conf, so all + # packages in bsc will use that one. + customPkgs = genPkgs (self: super: { + bsc = super.bsc // { mpi = conf.mpi; }; + }); + in + customPkgs.bsc.garlic.creams.override { + inherit cc mpi gitBranch; + }; + + stages = with common; [] + # Use sbatch to request resources first + ++ optional enableSbatch sbatch + + # Repeats the next stages N times + ++ optionals enableControl [ nixsetup control ] + + # Executes srun to launch the program in the requested nodes, and + # immediately after enters the nix environment again, as slurmstepd launches + # the next stages from outside the namespace. + ++ [ srun nixsetup ] + + # Intrumentation with extrae + ++ optional enableExtrae extrae + + # Optionally profile the next stages with perf + ++ optional enablePerf perf + + # Optionally profile nanos6 with the new ctf + ++ optional enableCtf ctf + + # Execute the nbody app with the argv and env vars + ++ [ inputDataset creamsFn ]; + + # List of actual programs to be executed + jobs = map (conf: w.stagen { inherit conf stages; }) configs; + +in + # We simply run each program one after another + w.launch jobs diff --git a/garlic/stages/sbatch.nix b/garlic/stages/sbatch.nix index c9d0bb9..d2a936d 100644 --- a/garlic/stages/sbatch.nix +++ b/garlic/stages/sbatch.nix @@ -28,7 +28,7 @@ with stdenv.lib; let sbatchOpt = name: value: optionalString (value!=null) - "#SBATCH --${name}=${value}\n"; + "#SBATCH --${name}=${toString value}\n"; sbatchEnable = name: value: optionalString (value!=null) "#SBATCH --${name}\n"; diff --git a/overlay.nix b/overlay.nix index ce8ed51..c01e311 100644 --- a/overlay.nix +++ b/overlay.nix @@ -143,14 +143,21 @@ let # tampi = tampi; # }; # -# creams = callPackage ./garlic/creams { -# stdenv = pkgs.gcc9Stdenv; -# mpi = intel-mpi; -# tampi = tampi.override { -# mpi = intel-mpi; -# }; -# }; -# + creams = callPackage ./garlic/creams { + gitBranch = "garlic/mpi+send+seq"; + + #cc = self.gcc10; # Does not work + #mpi = self.bsc.openmpi-mn4; # Does not work + + cc = self.bsc.icc; + mpi = self.bsc.mpi; + }; + + creamsInput = callPackage ./garlic/creams/input.nix { + gitBranch = "garlic/mpi+send+seq"; + nodes = 1; + }; + # lulesh = callPackage ./garlic/lulesh { # mpi = intel-mpi; # }; @@ -231,6 +238,16 @@ let }; }; + creams = { + SS_mpi_send_seq = callPackage ./garlic/exp/creams/SS+mpi+send+seq.nix { + pkgs = self // self.bsc.garlic; + nixpkgs = import ; + genApp = self.bsc.garlic.genApp; + genConfigs = self.bsc.garlic.genConfigs; + runWrappers = self.bsc.garlic.runWrappers; + }; + }; + osu = rec { latency-internode = callPackage ./garlic/exp/osu/latency.nix { }; latency-intranode = callPackage ./garlic/exp/osu/latency.nix { From 6ae71cc5e9dc065b64453228b220e45d98c0912a Mon Sep 17 00:00:00 2001 From: Pedro Martinez Date: Thu, 1 Oct 2020 16:48:35 +0200 Subject: [PATCH 198/987] Improvement the experiment based on CREAMS --- garlic/creams/default.nix | 11 +- garlic/creams/input.nix | 12 +- garlic/exp/creams/SS+mpi+send+seq.nix | 40 +++--- garlic/exp/creams/test.nix | 173 -------------------------- overlay.nix | 11 +- 5 files changed, 44 insertions(+), 203 deletions(-) delete mode 100644 garlic/exp/creams/test.nix diff --git a/garlic/creams/default.nix b/garlic/creams/default.nix index ac704c4..b1dd26e 100644 --- a/garlic/creams/default.nix +++ b/garlic/creams/default.nix @@ -6,6 +6,8 @@ , impi , tampi , mcxx +, gnuDef +, intelDef , cc , gitBranch }: @@ -18,12 +20,16 @@ let else "IntelMPI"); + compName = (if cc == intelDef then + "Intel" + else + "GNU"); + in stdenv.mkDerivation rec { name = "creams"; # src = /home/Computational/pmartin1/creams-simplified; - src = builtins.fetchGit { url = "ssh://git@bscpm02.bsc.es/pmartin1/creams-simplified.git"; ref = "${gitBranch}"; @@ -45,7 +51,8 @@ stdenv.mkDerivation rec { export TAMPI_HOME=${tampi} . etc/bashrc - #export FORTRAN_COMPILER=GNU # GCC compiler + + export FORTRAN_COMPILER=${compName} export MPI_LIB=${mpiName} echo diff --git a/garlic/creams/input.nix b/garlic/creams/input.nix index 33405e1..30da776 100644 --- a/garlic/creams/input.nix +++ b/garlic/creams/input.nix @@ -1,6 +1,7 @@ { stdenv -, nodes +, granul ? 0 +, nprocz ? 0 , gitBranch }: @@ -8,17 +9,20 @@ stdenv.mkDerivation rec { name = "creams-input"; # src = /home/Computational/pmartin1/creams-simplified; - src = builtins.fetchGit { url = "ssh://git@bscpm02.bsc.es/pmartin1/creams-simplified.git"; ref = "${gitBranch}"; }; - phases = [ "unpackPhase" "installPhase" ]; + phases = [ "unpackPhase" "patchPhase" "installPhase" ]; + + patchPhase = '' + patchShebangs SodTubeBenchmark/gridScript.sh + ''; installPhase = '' pushd SodTubeBenchmark - bash gridScript.sh 0 0 $((${toString nodes}*48)) 0 + ./gridScript.sh 0 0 ${toString nprocz} ${toString granul} popd mkdir -p $out diff --git a/garlic/exp/creams/SS+mpi+send+seq.nix b/garlic/exp/creams/SS+mpi+send+seq.nix index c4ade80..da49d46 100644 --- a/garlic/exp/creams/SS+mpi+send+seq.nix +++ b/garlic/exp/creams/SS+mpi+send+seq.nix @@ -14,21 +14,23 @@ let # Set variable configuration for the experiment varConfig = { - # cc = [ self.gcc10 ]; # Does not work - # mpi = [ bsc.openmpi ]; # Does not work - # cc = [ bsc.icc ]; - # mpi = [ bsc.impi ]; + cc = [ bsc.icc ]; # [ bsc.icc pkgs.gfortran10 ]; - nodes = [ 1 2 4 8 16 ]; + mpi = [ bsc.impi ]; # [ bsc.impi bsc.openmpi-mn4 ]; + + input = [ + { nodes=1 ; nprocz=48 ; granul=0; } + { nodes=2 ; nprocz=96 ; granul=0; } + { nodes=4 ; nprocz=192; granul=0; } + { nodes=8 ; nprocz=384; granul=0; } + { nodes=16; nprocz=768; granul=0; } + ]; }; # Common configuration common = { gitBranch = "garlic/mpi+send+seq"; - cc = bsc.icc ; - mpi = bsc.impi; - # Resources ntasksPerNode = 48; #ntasksPerSocket = 24; // Add this variable to nix @@ -56,10 +58,12 @@ let sbatch = {stage, conf, ...}: with conf; w.sbatch { program = stageProgram stage; exclusive = true; - time = "02:00:00"; - qos = "debug"; - jobName = "nbody-bs"; - inherit nixPrefix nodes ntasksPerNode; + time = "10:00:00"; + ####qos = "debug"; + jobName = "creams-ss-mpi+send+seq"; + inherit nixPrefix ntasksPerNode; + + nodes = input.nodes; }; control = {stage, conf, ...}: with conf; w.control { @@ -109,19 +113,19 @@ let ]; }; - inputDataset = {stage, conf, ...}: with conf; + inputDataset = {stage, conf, ...}: let input = bsc.garlic.creamsInput.override { - inherit gitBranch nodes; + gitBranch = conf.gitBranch; + granul = conf.input.granul; + nprocz = conf.input.nprocz; }; in w.argv { program = stageProgram stage; env = '' cp -r ${input}/SodTubeBenchmark/* . - - pwd - ls -l + chmod +w -R . ''; }; @@ -162,7 +166,7 @@ let # Optionally profile nanos6 with the new ctf ++ optional enableCtf ctf - # Execute the nbody app with the argv and env vars + # Execute the app with the argv and env vars ++ [ inputDataset creamsFn ]; # List of actual programs to be executed diff --git a/garlic/exp/creams/test.nix b/garlic/exp/creams/test.nix deleted file mode 100644 index c4ade80..0000000 --- a/garlic/exp/creams/test.nix +++ /dev/null @@ -1,173 +0,0 @@ -{ - stdenv -, nixpkgs -, pkgs -, genApp -, genConfigs -, runWrappers -}: - -with stdenv.lib; - -let - bsc = pkgs.bsc; - - # Set variable configuration for the experiment - varConfig = { - # cc = [ self.gcc10 ]; # Does not work - # mpi = [ bsc.openmpi ]; # Does not work - # cc = [ bsc.icc ]; - # mpi = [ bsc.impi ]; - - nodes = [ 1 2 4 8 16 ]; - }; - - # Common configuration - common = { - gitBranch = "garlic/mpi+send+seq"; - - cc = bsc.icc ; - mpi = bsc.impi; - - # Resources - ntasksPerNode = 48; - #ntasksPerSocket = 24; // Add this variable to nix - - # Stage configuration - enableSbatch = true; - enableControl = true; - enableExtrae = false; - enablePerf = false; - enableCtf = false; - - # MN4 path - nixPrefix = "/gpfs/projects/bsc15/nix"; - }; - - # Compute the cartesian product of all configurations - configs = map (conf: conf // common) (genConfigs varConfig); - - stageProgram = stage: - if stage ? programPath - then "${stage}${stage.programPath}" else "${stage}"; - - w = runWrappers; - - sbatch = {stage, conf, ...}: with conf; w.sbatch { - program = stageProgram stage; - exclusive = true; - time = "02:00:00"; - qos = "debug"; - jobName = "nbody-bs"; - inherit nixPrefix nodes ntasksPerNode; - }; - - control = {stage, conf, ...}: with conf; w.control { - program = stageProgram stage; - }; - - srun = {stage, conf, ...}: with conf; w.srun { - program = stageProgram stage; - srunOptions = "--cpu-bind=verbose,rank"; - inherit nixPrefix; - }; - - statspy = {stage, conf, ...}: with conf; w.statspy { - program = stageProgram stage; - }; - - perf = {stage, conf, ...}: with conf; w.perf { - program = stageProgram stage; - perfArgs = "sched record -a"; - }; - - nixsetup = {stage, conf, ...}: with conf; w.nixsetup { - program = stageProgram stage; - nixsetup = "${nixPrefix}/bin/nix-setup"; - }; - - extrae = {stage, conf, ...}: w.extrae { - program = stageProgram stage; - traceLib = "mpi"; # mpi -> libtracempi.so - configFile = ./extrae.xml; - }; - - ctf = {stage, conf, ...}: w.argv { - program = stageProgram stage; - env = '' - export NANOS6=ctf - export NANOS6_CTF2PRV=0 - ''; - }; - - bscOverlay = import ../../../overlay.nix; - - genPkgs = newOverlay: nixpkgs { - overlays = [ - bscOverlay - newOverlay - ]; - }; - - inputDataset = {stage, conf, ...}: with conf; - let - input = bsc.garlic.creamsInput.override { - inherit gitBranch nodes; - }; - in w.argv - { - program = stageProgram stage; - env = '' - cp -r ${input}/SodTubeBenchmark/* . - - pwd - ls -l - ''; - }; - - # We may be able to use overlays by invoking the fix function directly, but we - # have to get the definition of the bsc packages and the garlic ones as - # overlays. - - creamsFn = {stage, conf, ...}: with conf; - let - # We set the mpi implementation to the one specified in the conf, so all - # packages in bsc will use that one. - customPkgs = genPkgs (self: super: { - bsc = super.bsc // { mpi = conf.mpi; }; - }); - in - customPkgs.bsc.garlic.creams.override { - inherit cc mpi gitBranch; - }; - - stages = with common; [] - # Use sbatch to request resources first - ++ optional enableSbatch sbatch - - # Repeats the next stages N times - ++ optionals enableControl [ nixsetup control ] - - # Executes srun to launch the program in the requested nodes, and - # immediately after enters the nix environment again, as slurmstepd launches - # the next stages from outside the namespace. - ++ [ srun nixsetup ] - - # Intrumentation with extrae - ++ optional enableExtrae extrae - - # Optionally profile the next stages with perf - ++ optional enablePerf perf - - # Optionally profile nanos6 with the new ctf - ++ optional enableCtf ctf - - # Execute the nbody app with the argv and env vars - ++ [ inputDataset creamsFn ]; - - # List of actual programs to be executed - jobs = map (conf: w.stagen { inherit conf stages; }) configs; - -in - # We simply run each program one after another - w.launch jobs diff --git a/overlay.nix b/overlay.nix index c01e311..80a2aaa 100644 --- a/overlay.nix +++ b/overlay.nix @@ -144,18 +144,17 @@ let # }; # creams = callPackage ./garlic/creams { + gnuDef = self.gfortran10 ; # Default GNU compiler version + intelDef = self.bsc.icc ; # Default Intel compiler version + gitBranch = "garlic/mpi+send+seq"; - #cc = self.gcc10; # Does not work - #mpi = self.bsc.openmpi-mn4; # Does not work - - cc = self.bsc.icc; - mpi = self.bsc.mpi; + cc = self.bsc.icc; # self.bsc.icc OR self.gfortran10; + mpi = self.bsc.mpi; # self.bsc.mpi OR self.bsc.openmpi-mn4; }; creamsInput = callPackage ./garlic/creams/input.nix { gitBranch = "garlic/mpi+send+seq"; - nodes = 1; }; # lulesh = callPackage ./garlic/lulesh { From c85b2976ef13da5b50dfc2a2192643637e473622 Mon Sep 17 00:00:00 2001 From: Pedro Martinez Date: Fri, 2 Oct 2020 16:27:22 +0200 Subject: [PATCH 199/987] Fix non-hybrid strong scalability experiments --- .../{SS+mpi+send+seq.nix => SS+nohybrid.nix} | 23 ++- garlic/exp/creams/test.nix~ | 169 ------------------ overlay.nix | 4 +- 3 files changed, 13 insertions(+), 183 deletions(-) rename garlic/exp/creams/{SS+mpi+send+seq.nix => SS+nohybrid.nix} (89%) delete mode 100644 garlic/exp/creams/test.nix~ diff --git a/garlic/exp/creams/SS+mpi+send+seq.nix b/garlic/exp/creams/SS+nohybrid.nix similarity index 89% rename from garlic/exp/creams/SS+mpi+send+seq.nix rename to garlic/exp/creams/SS+nohybrid.nix index da49d46..a7efa5b 100644 --- a/garlic/exp/creams/SS+mpi+send+seq.nix +++ b/garlic/exp/creams/SS+nohybrid.nix @@ -19,18 +19,18 @@ let mpi = [ bsc.impi ]; # [ bsc.impi bsc.openmpi-mn4 ]; input = [ - { nodes=1 ; nprocz=48 ; granul=0; } - { nodes=2 ; nprocz=96 ; granul=0; } - { nodes=4 ; nprocz=192; granul=0; } - { nodes=8 ; nprocz=384; granul=0; } - { nodes=16; nprocz=768; granul=0; } + { nodes=1 ; nprocz=48 ; granul=0; time= "10:00:00"; } + { nodes=2 ; nprocz=96 ; granul=0; time= "05:00:00"; } + { nodes=4 ; nprocz=192; granul=0; time= "03:00:00"; } + { nodes=8 ; nprocz=384; granul=0; time= "02:00:00"; } + { nodes=16; nprocz=768; granul=0; time= "01:00:00"; } ]; + + gitBranch = [ "garlic/mpi+send+seq" ]; }; # Common configuration common = { - gitBranch = "garlic/mpi+send+seq"; - # Resources ntasksPerNode = 48; #ntasksPerSocket = 24; // Add this variable to nix @@ -56,14 +56,13 @@ let w = runWrappers; sbatch = {stage, conf, ...}: with conf; w.sbatch { + nodes = input.nodes; program = stageProgram stage; exclusive = true; - time = "10:00:00"; - ####qos = "debug"; - jobName = "creams-ss-mpi+send+seq"; + time = input.time; + #qos = "debug"; + jobName = "creams-ss-${toString input.nodes}-${toString gitBranch}"; inherit nixPrefix ntasksPerNode; - - nodes = input.nodes; }; control = {stage, conf, ...}: with conf; w.control { diff --git a/garlic/exp/creams/test.nix~ b/garlic/exp/creams/test.nix~ deleted file mode 100644 index ac598d2..0000000 --- a/garlic/exp/creams/test.nix~ +++ /dev/null @@ -1,169 +0,0 @@ -{ - stdenv -, nixpkgs -, pkgs -, genApp -, genConfigs -, runWrappers -}: - -with stdenv.lib; - -let - bsc = pkgs.bsc; - - # Set variable configuration for the experiment - varConfig = { - mpi = [ bsc.impi bsc.openmpi ]; - nodes = [ 1 ]; - }; - - # Common configuration - common = { - # Compile time nbody config - gitBranch = "garlic/mpi+send+seq"; - - cc = bsc.icc; - - # Resources - ntasksPerNode = 48; - nodes = 1; - - # Stage configuration - enableSbatch = true; - enableControl = true; - enableExtrae = false; - enablePerf = false; - enableCtf = false; - - # MN4 path - nixPrefix = "/gpfs/projects/bsc15/nix"; - }; - - # Compute the cartesian product of all configurations - configs = map (conf: conf // common) (genConfigs varConfig); - - stageProgram = stage: - if stage ? programPath - then "${stage}${stage.programPath}" else "${stage}"; - - w = runWrappers; - - sbatch = {stage, conf, ...}: with conf; w.sbatch { - program = stageProgram stage; - exclusive = true; - time = "02:00:00"; - qos = "debug"; - jobName = "nbody-bs"; - inherit nixPrefix nodes ntasksPerNode; - }; - - control = {stage, conf, ...}: with conf; w.control { - program = stageProgram stage; - }; - - srun = {stage, conf, ...}: with conf; w.srun { - program = stageProgram stage; - srunOptions = "--cpu-bind=verbose,rank"; - inherit nixPrefix; - }; - - statspy = {stage, conf, ...}: with conf; w.statspy { - program = stageProgram stage; - }; - - perf = {stage, conf, ...}: with conf; w.perf { - program = stageProgram stage; - perfArgs = "sched record -a"; - }; - - nixsetup = {stage, conf, ...}: with conf; w.nixsetup { - program = stageProgram stage; - nixsetup = "${nixPrefix}/bin/nix-setup"; - }; - - extrae = {stage, conf, ...}: w.extrae { - program = stageProgram stage; - traceLib = "mpi"; # mpi -> libtracempi.so - configFile = ./extrae.xml; - }; - - ctf = {stage, conf, ...}: w.argv { - program = stageProgram stage; - env = '' - export NANOS6=ctf - export NANOS6_CTF2PRV=0 - ''; - }; - - bscOverlay = import ../../../overlay.nix; - - genPkgs = newOverlay: nixpkgs { - overlays = [ - bscOverlay - newOverlay - ]; - }; - - inputDataset = {stage, conf, ...}: with conf; - let - input = bsc.garlic.creamsInput.override { - inherit gitBranch nodes; - }; - in w.argv - { - program = stageProgram stage; - env = '' - cp -r ${input}/SodTubeBenchmark/* . - - pwd - ls -l - ''; - }; - - # We may be able to use overlays by invoking the fix function directly, but we - # have to get the definition of the bsc packages and the garlic ones as - # overlays. - - creamsFn = {stage, conf, ...}: with conf; - let - # We set the mpi implementation to the one specified in the conf, so all - # packages in bsc will use that one. - customPkgs = genPkgs (self: super: { - bsc = super.bsc // { mpi = conf.mpi; }; - }); - in - customPkgs.bsc.garlic.creams.override { - inherit cc mpi gitBranch; - }; - - stages = with common; [] - # Use sbatch to request resources first - ++ optional enableSbatch sbatch - - # Repeats the next stages N times - ++ optionals enableControl [ nixsetup control ] - - # Executes srun to launch the program in the requested nodes, and - # immediately after enters the nix environment again, as slurmstepd launches - # the next stages from outside the namespace. - ++ [ srun nixsetup ] - - # Intrumentation with extrae - ++ optional enableExtrae extrae - - # Optionally profile the next stages with perf - ++ optional enablePerf perf - - # Optionally profile nanos6 with the new ctf - ++ optional enableCtf ctf - - # Execute the nbody app with the argv and env vars - ++ [ inputDataset creamsFn ]; - - # List of actual programs to be executed - jobs = map (conf: w.stagen { inherit conf stages; }) configs; - -in - # We simply run each program one after another - w.launch jobs diff --git a/overlay.nix b/overlay.nix index 80a2aaa..a520473 100644 --- a/overlay.nix +++ b/overlay.nix @@ -237,8 +237,8 @@ let }; }; - creams = { - SS_mpi_send_seq = callPackage ./garlic/exp/creams/SS+mpi+send+seq.nix { + creamsSS = { + nohybrid = callPackage ./garlic/exp/creams/SS+nohybrid.nix { pkgs = self // self.bsc.garlic; nixpkgs = import ; genApp = self.bsc.garlic.genApp; From b403fbefe139fdeff2aa9a751f41f338b4eb5639 Mon Sep 17 00:00:00 2001 From: Pedro Martinez Date: Fri, 2 Oct 2020 17:48:00 +0200 Subject: [PATCH 200/987] Add hybrid strong scalability experiments --- garlic/exp/creams/SS+hybrid.nix | 180 ++++++++++++++++++++++++++++++++ overlay.nix | 7 ++ 2 files changed, 187 insertions(+) create mode 100644 garlic/exp/creams/SS+hybrid.nix diff --git a/garlic/exp/creams/SS+hybrid.nix b/garlic/exp/creams/SS+hybrid.nix new file mode 100644 index 0000000..987f103 --- /dev/null +++ b/garlic/exp/creams/SS+hybrid.nix @@ -0,0 +1,180 @@ +{ + stdenv +, nixpkgs +, pkgs +, genApp +, genConfigs +, runWrappers +}: + +with stdenv.lib; + +let + bsc = pkgs.bsc; + + # Set variable configuration for the experiment + varConfig = { + cc = [ bsc.icc ]; # [ bsc.icc pkgs.gfortran10 ]; + + mpi = [ bsc.impi ]; # [ bsc.impi bsc.openmpi-mn4 ]; + + input = [ + { nodes=1 ; nprocz=2 ; granul=37; time= "10:00:00"; } + { nodes=2 ; nprocz=4 ; granul=19; time= "05:00:00"; } + { nodes=4 ; nprocz=8 ; granul=10; time= "03:00:00"; } + { nodes=8 ; nprocz=16; granul=9 ; time= "02:00:00"; } + { nodes=16; nprocz=32; granul=9 ; time= "01:00:00"; } + ]; + + gitBranch = [ "garlic/mpi+isend+oss+task" + "garlic/mpi+send+omp+fork" + "garlic/mpi+send+oss+task" + "garlic/tampi+isend+oss+task" + ]; + }; + + # Common configuration + common = { + # Resources + ntasksPerNode = 2; + #ntasksPerSocket = 1; // Add this variable to nix + + # Stage configuration + enableSbatch = true; + enableControl = true; + enableExtrae = false; + enablePerf = false; + enableCtf = false; + + # MN4 path + nixPrefix = "/gpfs/projects/bsc15/nix"; + }; + + # Compute the cartesian product of all configurations + configs = map (conf: conf // common) (genConfigs varConfig); + + stageProgram = stage: + if stage ? programPath + then "${stage}${stage.programPath}" else "${stage}"; + + w = runWrappers; + + sbatch = {stage, conf, ...}: with conf; w.sbatch { + nodes = input.nodes; + program = stageProgram stage; + exclusive = true; + time = input.time; + #qos = "debug"; + jobName = "creams-ss-${toString input.nodes}-${toString gitBranch}"; + inherit nixPrefix ntasksPerNode; + }; + + control = {stage, conf, ...}: with conf; w.control { + program = stageProgram stage; + }; + + srun = {stage, conf, ...}: with conf; w.srun { + program = stageProgram stage; + srunOptions = "--cpu-bind=verbose,socket"; + inherit nixPrefix; + }; + + statspy = {stage, conf, ...}: with conf; w.statspy { + program = stageProgram stage; + }; + + perf = {stage, conf, ...}: with conf; w.perf { + program = stageProgram stage; + perfArgs = "sched record -a"; + }; + + nixsetup = {stage, conf, ...}: with conf; w.nixsetup { + program = stageProgram stage; + nixsetup = "${nixPrefix}/bin/nix-setup"; + }; + + extrae = {stage, conf, ...}: w.extrae { + program = stageProgram stage; + traceLib = "mpi"; # mpi -> libtracempi.so + configFile = ./extrae.xml; + }; + + ctf = {stage, conf, ...}: w.argv { + program = stageProgram stage; + env = '' + export NANOS6=ctf + export NANOS6_CTF2PRV=0 + ''; + }; + + bscOverlay = import ../../../overlay.nix; + + genPkgs = newOverlay: nixpkgs { + overlays = [ + bscOverlay + newOverlay + ]; + }; + + inputDataset = {stage, conf, ...}: + let + input = bsc.garlic.creamsInput.override { + gitBranch = conf.gitBranch; + granul = conf.input.granul; + nprocz = conf.input.nprocz; + }; + in w.argv + { + program = stageProgram stage; + env = '' + cp -r ${input}/SodTubeBenchmark/* . + chmod +w -R . + ''; + }; + + # We may be able to use overlays by invoking the fix function directly, but we + # have to get the definition of the bsc packages and the garlic ones as + # overlays. + + creamsFn = {stage, conf, ...}: with conf; + let + # We set the mpi implementation to the one specified in the conf, so all + # packages in bsc will use that one. + customPkgs = genPkgs (self: super: { + bsc = super.bsc // { mpi = conf.mpi; }; + }); + in + customPkgs.bsc.garlic.creams.override { + inherit cc mpi gitBranch; + }; + + stages = with common; [] + # Use sbatch to request resources first + ++ optional enableSbatch sbatch + + # Repeats the next stages N times + ++ optionals enableControl [ nixsetup control ] + + # Executes srun to launch the program in the requested nodes, and + # immediately after enters the nix environment again, as slurmstepd launches + # the next stages from outside the namespace. + ++ [ srun nixsetup ] + + # Intrumentation with extrae + ++ optional enableExtrae extrae + + # Optionally profile the next stages with perf + ++ optional enablePerf perf + + # Optionally profile nanos6 with the new ctf + ++ optional enableCtf ctf + + # Execute the app with the argv and env vars + ++ [ inputDataset creamsFn ]; + + # List of actual programs to be executed + jobs = map (conf: w.stagen { inherit conf stages; }) configs; + +in + # We simply run each program one after another + w.launch jobs diff --git a/overlay.nix b/overlay.nix index a520473..4edc2d0 100644 --- a/overlay.nix +++ b/overlay.nix @@ -245,6 +245,13 @@ let genConfigs = self.bsc.garlic.genConfigs; runWrappers = self.bsc.garlic.runWrappers; }; + hybrid = callPackage ./garlic/exp/creams/SS+hybrid.nix { + pkgs = self // self.bsc.garlic; + nixpkgs = import ; + genApp = self.bsc.garlic.genApp; + genConfigs = self.bsc.garlic.genConfigs; + runWrappers = self.bsc.garlic.runWrappers; + }; }; osu = rec { From 231672a22226d93222c8588b1b51abba87d90176 Mon Sep 17 00:00:00 2001 From: Pedro Martinez Date: Fri, 2 Oct 2020 18:28:13 +0200 Subject: [PATCH 201/987] Rename files to improve consistency --- .../creams/{SS+hybrid.nix => ss+hybrid.nix} | 0 .../creams/{SS+nohybrid.nix => ss+pure.nix} | 0 overlay.nix | 30 ++++++++++--------- 3 files changed, 16 insertions(+), 14 deletions(-) rename garlic/exp/creams/{SS+hybrid.nix => ss+hybrid.nix} (100%) rename garlic/exp/creams/{SS+nohybrid.nix => ss+pure.nix} (100%) diff --git a/garlic/exp/creams/SS+hybrid.nix b/garlic/exp/creams/ss+hybrid.nix similarity index 100% rename from garlic/exp/creams/SS+hybrid.nix rename to garlic/exp/creams/ss+hybrid.nix diff --git a/garlic/exp/creams/SS+nohybrid.nix b/garlic/exp/creams/ss+pure.nix similarity index 100% rename from garlic/exp/creams/SS+nohybrid.nix rename to garlic/exp/creams/ss+pure.nix diff --git a/overlay.nix b/overlay.nix index 4edc2d0..2a3283f 100644 --- a/overlay.nix +++ b/overlay.nix @@ -237,20 +237,22 @@ let }; }; - creamsSS = { - nohybrid = callPackage ./garlic/exp/creams/SS+nohybrid.nix { - pkgs = self // self.bsc.garlic; - nixpkgs = import ; - genApp = self.bsc.garlic.genApp; - genConfigs = self.bsc.garlic.genConfigs; - runWrappers = self.bsc.garlic.runWrappers; - }; - hybrid = callPackage ./garlic/exp/creams/SS+hybrid.nix { - pkgs = self // self.bsc.garlic; - nixpkgs = import ; - genApp = self.bsc.garlic.genApp; - genConfigs = self.bsc.garlic.genConfigs; - runWrappers = self.bsc.garlic.runWrappers; + creams = { + ss = { + pure = callPackage ./garlic/exp/creams/ss+pure.nix { + pkgs = self // self.bsc.garlic; + nixpkgs = import ; + genApp = self.bsc.garlic.genApp; + genConfigs = self.bsc.garlic.genConfigs; + runWrappers = self.bsc.garlic.runWrappers; + }; + hybrid = callPackage ./garlic/exp/creams/ss+hybrid.nix { + pkgs = self // self.bsc.garlic; + nixpkgs = import ; + genApp = self.bsc.garlic.genApp; + genConfigs = self.bsc.garlic.genConfigs; + runWrappers = self.bsc.garlic.runWrappers; + }; }; }; From 368aa57cb7d7845e472b3e4698d56e29293a3549 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 5 Oct 2020 10:28:38 +0200 Subject: [PATCH 202/987] nbody: Remove OpenMPI dirty hack Was fixed in https://pm.bsc.es/gitlab/interoperability/tampi/-/commit/7e1a5128b6965242b0a4767ae95bc5ba0a1698f6 --- garlic/nbody/default.nix | 19 ++++--------------- 1 file changed, 4 insertions(+), 15 deletions(-) diff --git a/garlic/nbody/default.nix b/garlic/nbody/default.nix index b45a852..fc94825 100644 --- a/garlic/nbody/default.nix +++ b/garlic/nbody/default.nix @@ -35,21 +35,10 @@ stdenv.mkDerivation rec { makeFlagsArray+=(CFLAGS="${cflags}") '' else ""); - postPatch = "" - - # This should be fixed in the Makefile as well. - + ''sed -i 's/libtampi.a/libtampi-c.a/g' Makefile - '' - # Dirty HACK until the nbody issue at: - # https://pm.bsc.es/gitlab/garlic/apps/nbody/-/issues/1 - # is properly fixed. - + - (if (mpi.pname or "unknown") == "openmpi" then - ''sed -i 's/-lstdc++/-lstdc++ -lmpi_cxx/g' Makefile - '' - else - "" - ); + # HACK: This should be fixed in the Makefile. + postPatch = '' + sed -i 's/libtampi.a/libtampi-c.a/g' Makefile + ''; makeFlags = [ "CC=${cc.cc.CC}" From 3dd609f7dbee800513a7888da8c4ffb759f51048 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 5 Oct 2020 10:31:09 +0200 Subject: [PATCH 203/987] Switch to TAMPI from gitlab as default --- overlay.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/overlay.nix b/overlay.nix index ce8ed51..f840251 100644 --- a/overlay.nix +++ b/overlay.nix @@ -82,7 +82,7 @@ let extrae = callPackage ./bsc/extrae/default.nix { }; - tampi = self.bsc.tampiRelease; + tampi = self.bsc.tampiGit; tampiRelease = callPackage ./bsc/tampi/default.nix { }; tampiGit = callPackage ./bsc/tampi/git.nix { }; From d4ea0fe6078cf467c9164fb261f36b8c3d7fbdcc Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 5 Oct 2020 10:45:11 +0200 Subject: [PATCH 204/987] tampi: remove hacks from configure flags The verbose make flag is added to ensure the log contains the complete compilation line. --- bsc/tampi/git.nix | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/bsc/tampi/git.nix b/bsc/tampi/git.nix index d27ad3e..83f4614 100644 --- a/bsc/tampi/git.nix +++ b/bsc/tampi/git.nix @@ -17,8 +17,7 @@ stdenv.mkDerivation rec { enableParallelBuilding = true; buildInputs = [ autoreconfHook automake autoconf libtool gnumake boost mpi gcc ]; dontDisableStatic = true; - configureFlags = [ "--disable-mpi-mt-check" "CXXFLAGS=-DOMPI_SKIP_MPICXX=1" ]; - + makeFlags = [ "V=1" ]; src = builtins.fetchGit { url = "ssh://git@bscpm02.bsc.es/interoperability/tampi"; ref = "master"; From 533d8e976805c79c269d3a71d3a9eeb314592f0d Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 5 Oct 2020 10:47:16 +0200 Subject: [PATCH 205/987] Fix tampi experiment to use multiple CPUs per task --- garlic/exp/nbody/tampi.nix | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/garlic/exp/nbody/tampi.nix b/garlic/exp/nbody/tampi.nix index 7992150..7fe7c7e 100644 --- a/garlic/exp/nbody/tampi.nix +++ b/garlic/exp/nbody/tampi.nix @@ -25,12 +25,12 @@ let gitBranch = "garlic/tampi+send+oss+task"; # nbody runtime options - particles = 1024*128; - timesteps = 20; + particles = 1024*4; + timesteps = 10; # Resources - ntasksPerNode = "48"; - nodes = "1"; + ntasksPerNode = "2"; + nodes = "2"; # Stage configuration enableSbatch = true; @@ -76,7 +76,7 @@ let srun = {stage, conf, ...}: with conf; w.srun { program = stageProgram stage; - srunOptions = "--cpu-bind=verbose,rank"; + srunOptions = "--cpu-bind=verbose,socket"; inherit nixPrefix; }; From 6d413c946c3995ade5b3c5c3c7d54130f495b115 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 5 Oct 2020 12:39:34 +0200 Subject: [PATCH 206/987] nbody: Remove libtampi-c patch See #37 --- garlic/nbody/default.nix | 5 ----- 1 file changed, 5 deletions(-) diff --git a/garlic/nbody/default.nix b/garlic/nbody/default.nix index fc94825..9c7614d 100644 --- a/garlic/nbody/default.nix +++ b/garlic/nbody/default.nix @@ -35,11 +35,6 @@ stdenv.mkDerivation rec { makeFlagsArray+=(CFLAGS="${cflags}") '' else ""); - # HACK: This should be fixed in the Makefile. - postPatch = '' - sed -i 's/libtampi.a/libtampi-c.a/g' Makefile - ''; - makeFlags = [ "CC=${cc.cc.CC}" "BS=${toString blocksize}" From 30630a74be1c8256d6b412fdcdc3810a78c6d7b9 Mon Sep 17 00:00:00 2001 From: Sandra Date: Wed, 7 Oct 2020 11:38:02 +0200 Subject: [PATCH 207/987] Saiph: Vectorisation compiler info flags --- garlic/saiph/default.nix | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/garlic/saiph/default.nix b/garlic/saiph/default.nix index 3028042..c8a8a0a 100644 --- a/garlic/saiph/default.nix +++ b/garlic/saiph/default.nix @@ -8,6 +8,8 @@ , boost , gitBranch ? "master" , numComm ? null +, vectFlags ? null +#, breakpointHook }: stdenv.mkDerivation rec { @@ -33,6 +35,7 @@ stdenv.mkDerivation rec { cc vtk boost +# breakpointHook ]; # Required for nanos6 @@ -50,6 +53,7 @@ stdenv.mkDerivation rec { "apps" "APP=ExHeat3D" ( if (numComm != null) then "NUM_COMM=${toString numComm}" else "" ) + ( if (vectFlags != null) then "VECT_FLAGS=${toString vectFlags}" else "" ) ]; installPhase = '' From 8f650301617f8831840c2fdea14f4b2218633d62 Mon Sep 17 00:00:00 2001 From: Sandra Date: Wed, 7 Oct 2020 11:38:57 +0200 Subject: [PATCH 208/987] Saiph: numcomm experiment changes --- garlic/exp/saiph/numcomm.nix | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/garlic/exp/saiph/numcomm.nix b/garlic/exp/saiph/numcomm.nix index 07e108c..fe0e63a 100644 --- a/garlic/exp/saiph/numcomm.nix +++ b/garlic/exp/saiph/numcomm.nix @@ -23,11 +23,11 @@ let # Resources ntasksPerNode = "2"; - nodes = "2"; + nodes = "1"; # Stage configuration enableSbatch = true; - enableControl = false; + enableControl = true; enableExtrae = false; enablePerf = false; @@ -63,7 +63,8 @@ let ); control = {stage, conf, ...}: with conf; w.control { - program = stageProgram stage; + program = stageProgram stage; + loops = 100; }; srun = {stage, conf, ...}: with conf; w.srun { @@ -127,6 +128,7 @@ let argv = {stage, conf, ...}: with conf; w.argv { program = stageProgram stage; env = '' + export OMP_NUM_THREADS=24 export NANOS6_REPORT_PREFIX="#" export I_MPI_THREAD_SPLIT=1 export ASAN_SYMBOLIZER_PATH=${pkgs.bsc.clangOmpss2Unwrapped}/bin/llvm-symbolizer From ec555e59e7354d433dd57777479a07fc7e03383f Mon Sep 17 00:00:00 2001 From: Sandra Date: Wed, 7 Oct 2020 11:53:47 +0200 Subject: [PATCH 209/987] Setting a developer mode and its implication --- NOISE | 16 ++++++++++++++++ garlic/exp/saiph/numcomm.nix | 3 ++- garlic/saiph/default.nix | 20 +++++++++++--------- 3 files changed, 29 insertions(+), 10 deletions(-) diff --git a/NOISE b/NOISE index cab9f35..a4cf4cd 100644 --- a/NOISE +++ b/NOISE @@ -108,3 +108,19 @@ ABSTRACT Do not use to ensure reproducibility. /* vim: set ts=2 sw=2 tw=72 fo=watqc expandtab spell autoindent: */ + +1.8 Nix compilation environment + + When using local repo as src code, (e.g. developer mode on) a make + clean at the preBuild stage is required. + + Nix sets the current date to the files copied from repos. + Makefile checks the files modification date in order to call or not + the compilation instructions. + If any object/binary file exists out of Nix, at the time we build + within Nix, they will be copied with the current data and consequently + not updated during the Nix compilation process. + + See saiph devMode option and its implications at + bscpkgs/garlic/saiph/default.nix + diff --git a/garlic/exp/saiph/numcomm.nix b/garlic/exp/saiph/numcomm.nix index fe0e63a..7da9d9c 100644 --- a/garlic/exp/saiph/numcomm.nix +++ b/garlic/exp/saiph/numcomm.nix @@ -12,6 +12,7 @@ with stdenv.lib; let # Set variable configuration for the experiment varConfig = { + devMode = [ true ]; numComm = [ 1 ]; }; @@ -148,7 +149,7 @@ let }); in customPkgs.bsc.garlic.saiph.override { - inherit numComm mpi gitBranch; + inherit devMode numComm mpi gitBranch; }; stages = with common; [] diff --git a/garlic/saiph/default.nix b/garlic/saiph/default.nix index c8a8a0a..c9f3cad 100644 --- a/garlic/saiph/default.nix +++ b/garlic/saiph/default.nix @@ -6,6 +6,7 @@ , cc , vtk , boost +, devMode ? false , gitBranch ? "master" , numComm ? null , vectFlags ? null @@ -15,13 +16,13 @@ stdenv.mkDerivation rec { name = "saiph"; - src = builtins.fetchGit { - url = "ssh://git@bscpm02.bsc.es/DSLs/saiph.git"; - ref = "${gitBranch}"; - }; + src = (if (devMode == true) then ~/repos/saiph + else + builtins.fetchGit { + url = "ssh://git@bscpm02.bsc.es/DSLs/saiph.git"; + ref = "${gitBranch}"; + }); - #src = /tmp/saiph; - programPath = "/bin/ExHeat3D"; enableParallelBuilding = true; @@ -42,11 +43,12 @@ stdenv.mkDerivation rec { hardeningDisable = [ "bindnow" ]; preBuild = '' - cd saiphv2/cpp/src - + cd saiphv2/cpp/src export VTK_VERSION=8.2 export VTK_HOME=${vtk} - ''; + '' + + (if (devMode == true) then "make clean" else "") + ; makeFlags = [ "-f" "Makefile.${cc.cc.CC}" From c36fc8a08b03db37735bdedaa6f5f0f7f1cf444d Mon Sep 17 00:00:00 2001 From: Sandra Date: Wed, 7 Oct 2020 14:53:06 +0200 Subject: [PATCH 210/987] NOISE verbose fixes --- NOISE | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/NOISE b/NOISE index a4cf4cd..2d5cd6c 100644 --- a/NOISE +++ b/NOISE @@ -109,12 +109,12 @@ ABSTRACT /* vim: set ts=2 sw=2 tw=72 fo=watqc expandtab spell autoindent: */ -1.8 Nix compilation environment +1.8 Make doesn't rebuild objects When using local repo as src code, (e.g. developer mode on) a make clean at the preBuild stage is required. - Nix sets the current date to the files copied from repos. + Nix sets the same modification date (one second after the Epoch (1970-01-01 at 00:00:01 in UTC timezone) to all the files in the nix store (also those copied from repos). Makefile checks the files modification date in order to call or not the compilation instructions. If any object/binary file exists out of Nix, at the time we build From 0a26c72440fcdf1feea5f25ba4cd522c1fcdf41e Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 8 Oct 2020 18:34:20 +0200 Subject: [PATCH 211/987] extrae: Remove dangerous home --- garlic/exp/nbody/extrae.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/garlic/exp/nbody/extrae.xml b/garlic/exp/nbody/extrae.xml index b9af29b..45a7574 100644 --- a/garlic/exp/nbody/extrae.xml +++ b/garlic/exp/nbody/extrae.xml @@ -7,7 +7,6 @@ From 896ebd4ace4e0487c4a937032ece006d4c385e3f Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 5 Oct 2020 12:33:44 +0200 Subject: [PATCH 212/987] WIP nix-isolate --- bsc/nixtools/default.nix | 23 +++++++++++ garlic/exp/nbody/tampi.nix | 12 ++++-- .../{launcher.nix => launcher/default.nix} | 26 +++++++----- garlic/stages/launcher/run | 19 +++++++++ garlic/stages/launcher/stage2 | 12 ++++++ garlic/stages/nix-isolate.nix | 40 +++++++++++++++++++ garlic/stages/nix-setup.nix | 5 ++- garlic/stages/sbatch.nix | 9 +++-- garlic/stages/srun.nix | 6 ++- overlay.nix | 13 +++++- 10 files changed, 142 insertions(+), 23 deletions(-) create mode 100644 bsc/nixtools/default.nix rename garlic/stages/{launcher.nix => launcher/default.nix} (62%) create mode 100644 garlic/stages/launcher/run create mode 100644 garlic/stages/launcher/stage2 create mode 100644 garlic/stages/nix-isolate.nix diff --git a/bsc/nixtools/default.nix b/bsc/nixtools/default.nix new file mode 100644 index 0000000..dbf9770 --- /dev/null +++ b/bsc/nixtools/default.nix @@ -0,0 +1,23 @@ +{ + stdenv +, targetCluster +, nixPrefix +}: + +stdenv.mkDerivation rec { + name = "nixtools-${targetCluster}"; + #version = "${src.shortRev}"; + src = ~/nixtools; + makeFlags = [ "DESTDIR=$(out)" ]; + preBuild = "env"; + dontPatchShebangs = true; + inherit nixPrefix targetCluster; + postPatch = '' + substituteAllInPlace scripts/cobi/runexp + sed -i s:@nixtools@:$out:g scripts/cobi/runexp + ''; + #src = builtins.fetchGit { + # url = "ssh://git@bscpm02.bsc.es/rarias/nixtools"; + # ref = "master"; + #}; +} diff --git a/garlic/exp/nbody/tampi.nix b/garlic/exp/nbody/tampi.nix index 7fe7c7e..71f70e5 100644 --- a/garlic/exp/nbody/tampi.nix +++ b/garlic/exp/nbody/tampi.nix @@ -15,7 +15,7 @@ let # Set variable configuration for the experiment varConfig = { cc = [ bsc.icc ]; - mpi = [ bsc.impi bsc.openmpi ]; + mpi = [ bsc.impi ]; blocksize = [ 1024 ]; }; @@ -89,9 +89,9 @@ let perfArgs = "sched record -a"; }; - nixsetup = {stage, conf, ...}: with conf; w.nixsetup { + nixsetup = {stage, conf, ...}: with conf; w.nix-isolate { program = stageProgram stage; - nixsetup = "${nixPrefix}/bin/nix-setup"; + clusterName = "mn4"; }; extrae = {stage, conf, ...}: w.extrae { @@ -143,6 +143,10 @@ let inherit cc blocksize mpi gitBranch; }; + launch = w.launch.override { + nixPrefix = common.nixPrefix; + }; + stages = with common; [] # Use sbatch to request resources first ++ optional enableSbatch sbatch @@ -172,4 +176,4 @@ let in # We simply run each program one after another - w.launch jobs + launch jobs diff --git a/garlic/stages/launcher.nix b/garlic/stages/launcher/default.nix similarity index 62% rename from garlic/stages/launcher.nix rename to garlic/stages/launcher/default.nix index 8b32d1e..4b7fef8 100644 --- a/garlic/stages/launcher.nix +++ b/garlic/stages/launcher/default.nix @@ -1,5 +1,6 @@ { stdenv +, nixPrefix ? "" }: apps: # Each app must be unique @@ -10,9 +11,18 @@ stdenv.mkDerivation { buildInputs = [] ++ apps; apps = apps; - phases = [ "installPhase" ]; + phases = [ "unpackPhase" "patchPhase" "installPhase" ]; dontPatchShebangs = true; + src = ./.; + + inherit nixPrefix; + + patchPhase = '' + substituteAllInPlace run + substituteAllInPlace stage2 + ''; + installPhase = '' mkdir -p $out/apps for j in $apps; do @@ -29,17 +39,13 @@ stdenv.mkDerivation { done mkdir -p $out/bin - cat > $out/bin/run <&2 echo "Running launcher run stage" +env + +if [ -e /nix ]; then + >&2 echo "Cannot use the launcher inside nix environment!" + exit 1 +fi + +if [ -z "$GARLIC_OUT" ]; then + >&2 echo "GARLIC_OUT is not set" + exit 1 +fi + +mkdir -p "$GARLIC_OUT" +cd "$GARLIC_OUT" + +exec nix-isolate @nixPrefix@@out@/bin/stage2 diff --git a/garlic/stages/launcher/stage2 b/garlic/stages/launcher/stage2 new file mode 100644 index 0000000..dc0622b --- /dev/null +++ b/garlic/stages/launcher/stage2 @@ -0,0 +1,12 @@ +#!/bin/sh -ex + +>&2 echo "Running launcher stage2" + +if [ ! -e "/nix" ]; then + >&2 echo "Cannot execute stage2 outside from nix environment" + exit 1 +fi + +for j in @out@/apps/*; do + $j/bin/run +done diff --git a/garlic/stages/nix-isolate.nix b/garlic/stages/nix-isolate.nix new file mode 100644 index 0000000..1139477 --- /dev/null +++ b/garlic/stages/nix-isolate.nix @@ -0,0 +1,40 @@ +{ + stdenv +, nixtools +}: + +{ + program +, clusterName +}: + +stdenv.mkDerivation { + name = "nix-isolate"; + preferLocalBuild = true; + phases = [ "installPhase" ]; + dontPatchShebangs = true; + installPhase = '' + cat > $out <&2 echo Running nix-isolate stage + >&2 echo PATH=$PATH + >&2 echo Running env: + env + + # We need to enter the nix namespace first, in order to have /nix + # available, so we use this hack: + if [ ! -e /nix ]; then + exec ${nixtools}/bin/${clusterName}/nix-isolate \$0 + fi + + if [ -e /usr ]; then + >&2 echo "Environment not isolated, aborting" + exit 1 + fi + + exec ${program} + EOF + chmod +x $out + ''; +} diff --git a/garlic/stages/nix-setup.nix b/garlic/stages/nix-setup.nix index 600984c..b340b19 100644 --- a/garlic/stages/nix-setup.nix +++ b/garlic/stages/nix-setup.nix @@ -14,7 +14,10 @@ stdenv.mkDerivation { dontPatchShebangs = true; installPhase = '' cat > $out <&2 echo Running nixsetup stage + env # We need to enter the nix namespace first, in order to have /nix # available, so we use this hack: diff --git a/garlic/stages/sbatch.nix b/garlic/stages/sbatch.nix index d2a936d..2ba465a 100644 --- a/garlic/stages/sbatch.nix +++ b/garlic/stages/sbatch.nix @@ -1,6 +1,7 @@ { stdenv , numactl +, slurm }: { @@ -50,7 +51,7 @@ stdenv.mkDerivation rec { installPhase = '' mkdir -p $out cat > $out/job < $out/${name} <&2 echo "Execution aborted: '${chdirPrefix}/$(basename $out)' already exists" exit 1 fi mkdir -p "${chdirPrefix}/$(basename $out)" - echo sbatch ${nixPrefix}$out/job - sbatch ${nixPrefix}$out/job + echo ${slurm}/bin/sbatch ${nixPrefix}$out/job + ${slurm}/bin/sbatch ${nixPrefix}$out/job EOF chmod +x $out/${name} ''; diff --git a/garlic/stages/srun.nix b/garlic/stages/srun.nix index 48558b9..7c1d37e 100644 --- a/garlic/stages/srun.nix +++ b/garlic/stages/srun.nix @@ -1,5 +1,6 @@ { stdenv +, slurm }: { program @@ -14,8 +15,9 @@ stdenv.mkDerivation rec { dontPatchShebangs = true; installPhase = '' cat > $out < Date: Mon, 5 Oct 2020 16:40:22 +0200 Subject: [PATCH 213/987] WIP isolate execution --- bsc/nixtools/default.nix | 2 ++ garlic/exp/nbody/tampi.nix | 29 +++++++++++++++++++--- garlic/stages/isolate/default.nix | 30 ++++++++++++++++++++++ garlic/stages/isolate/stage1 | 23 +++++++++++++++++ garlic/stages/isolate/stage2 | 16 ++++++++++++ garlic/stages/launcher/default.nix | 3 +-- garlic/stages/launcher/run | 13 +++++----- garlic/stages/launcher/stage2 | 12 --------- garlic/stages/nix-isolate.nix | 40 ------------------------------ garlic/stages/runexp/default.nix | 25 +++++++++++++++++++ garlic/stages/runexp/runexp | 14 +++++++++++ overlay.nix | 3 ++- 12 files changed, 145 insertions(+), 65 deletions(-) create mode 100644 garlic/stages/isolate/default.nix create mode 100644 garlic/stages/isolate/stage1 create mode 100644 garlic/stages/isolate/stage2 delete mode 100644 garlic/stages/launcher/stage2 delete mode 100644 garlic/stages/nix-isolate.nix create mode 100644 garlic/stages/runexp/default.nix create mode 100755 garlic/stages/runexp/runexp diff --git a/bsc/nixtools/default.nix b/bsc/nixtools/default.nix index dbf9770..6cfc702 100644 --- a/bsc/nixtools/default.nix +++ b/bsc/nixtools/default.nix @@ -1,5 +1,6 @@ { stdenv +, glibc , targetCluster , nixPrefix }: @@ -8,6 +9,7 @@ stdenv.mkDerivation rec { name = "nixtools-${targetCluster}"; #version = "${src.shortRev}"; src = ~/nixtools; + buildInputs = [ glibc.static ]; makeFlags = [ "DESTDIR=$(out)" ]; preBuild = "env"; dontPatchShebangs = true; diff --git a/garlic/exp/nbody/tampi.nix b/garlic/exp/nbody/tampi.nix index 71f70e5..153c7c4 100644 --- a/garlic/exp/nbody/tampi.nix +++ b/garlic/exp/nbody/tampi.nix @@ -33,6 +33,7 @@ let nodes = "2"; # Stage configuration + enableRunexp = true; enableSbatch = true; enableControl = true; enableExtrae = false; @@ -89,9 +90,10 @@ let perfArgs = "sched record -a"; }; - nixsetup = {stage, conf, ...}: with conf; w.nix-isolate { + isolate = {stage, conf, ...}: with conf; w.isolate { program = stageProgram stage; clusterName = "mn4"; + inherit nixPrefix; }; extrae = {stage, conf, ...}: w.extrae { @@ -148,16 +150,19 @@ let }; stages = with common; [] + # Launch the experiment remotely + #++ optional enableRunexp runexp + # Use sbatch to request resources first ++ optional enableSbatch sbatch # Repeats the next stages N times - ++ optionals enableControl [ nixsetup control ] + ++ optionals enableControl [ isolate control ] # Executes srun to launch the program in the requested nodes, and # immediately after enters the nix environment again, as slurmstepd launches # the next stages from outside the namespace. - ++ [ srun nixsetup ] + ++ [ srun isolate ] # Intrumentation with extrae ++ optional enableExtrae extrae @@ -174,6 +179,22 @@ let # List of actual programs to be executed jobs = map (conf: w.stagen { inherit conf stages; }) configs; + launcher = launch jobs; + + runexp = stage: w.runexp { + program = stageProgram stage; + nixPrefix = common.nixPrefix; + }; + + isolatedRun = stage: isolate { + inherit stage; + conf = common; + }; + + final = runexp (isolatedRun launcher); + + in # We simply run each program one after another - launch jobs + #launch jobs + final diff --git a/garlic/stages/isolate/default.nix b/garlic/stages/isolate/default.nix new file mode 100644 index 0000000..a8d0756 --- /dev/null +++ b/garlic/stages/isolate/default.nix @@ -0,0 +1,30 @@ +{ + stdenv +, nixtools +, busybox +}: + +{ + program +, nixPrefix +, clusterName +}: + +stdenv.mkDerivation { + name = "isolate"; + preferLocalBuild = true; + phases = [ "unpackPhase" "installPhase" ]; + src = ./.; + dontPatchShebangs = true; + programPath = "/bin/stage1"; + inherit program nixPrefix clusterName nixtools busybox; + out = "$out"; + installPhase = '' + substituteAllInPlace stage1 + substituteAllInPlace stage2 + + mkdir -p $out/bin + cp stage* $out/bin/ + chmod +x $out/bin/stage* + ''; +} diff --git a/garlic/stages/isolate/stage1 b/garlic/stages/isolate/stage1 new file mode 100644 index 0000000..3f2b546 --- /dev/null +++ b/garlic/stages/isolate/stage1 @@ -0,0 +1,23 @@ +#!/bin/sh -ex + +>&2 echo Running isolate stage1 +>&2 echo PATH=$PATH + +if [ -e /nix ]; then + >&2 echo "/nix found, aborting" + exit 1 +fi + +nixhome="@nixPrefix@/nix" +shell="@busybox@/bin/sh" +nixjoin="@nixPrefix@@nixtools@/bin/nix-join" + + +#-m @nixPrefix@ \ +join_flags=" + -m /etc \ + -m /var/run/munge \ + -m /gpfs/projects/bsc15 \ + -m /bin:@nixPrefix@@busybox@/bin" + +exec $nixjoin -i $join_flags $nixhome -- @out@/bin/stage2 diff --git a/garlic/stages/isolate/stage2 b/garlic/stages/isolate/stage2 new file mode 100644 index 0000000..a4ae039 --- /dev/null +++ b/garlic/stages/isolate/stage2 @@ -0,0 +1,16 @@ +#!/bin/sh -ex + +>&2 echo Running isolate stage2 +>&2 echo PATH=$PATH + +if [ ! -e /nix ]; then + >&2 echo "/nix not found, aborting" + exit 1 +fi + +if [ -e /usr ]; then + >&2 echo "Environment not isolated, aborting" + exit 1 +fi + +exec @program@ diff --git a/garlic/stages/launcher/default.nix b/garlic/stages/launcher/default.nix index 4b7fef8..763bdb4 100644 --- a/garlic/stages/launcher/default.nix +++ b/garlic/stages/launcher/default.nix @@ -13,6 +13,7 @@ stdenv.mkDerivation { apps = apps; phases = [ "unpackPhase" "patchPhase" "installPhase" ]; dontPatchShebangs = true; + programPath = "/bin/run"; src = ./.; @@ -20,7 +21,6 @@ stdenv.mkDerivation { patchPhase = '' substituteAllInPlace run - substituteAllInPlace stage2 ''; installPhase = '' @@ -40,7 +40,6 @@ stdenv.mkDerivation { mkdir -p $out/bin install -m755 run $out/bin/run - install -m755 stage2 $out/bin/stage2 chmod +x $out/bin/* # Mark the launcher for upload diff --git a/garlic/stages/launcher/run b/garlic/stages/launcher/run index 225cbda..3c98c2c 100644 --- a/garlic/stages/launcher/run +++ b/garlic/stages/launcher/run @@ -1,10 +1,9 @@ #!/bin/sh -ex ->&2 echo "Running launcher run stage" -env +>&2 echo "Running launcher" -if [ -e /nix ]; then - >&2 echo "Cannot use the launcher inside nix environment!" +if [ ! -e "/nix" ]; then + >&2 echo "missing /nix" exit 1 fi @@ -12,8 +11,10 @@ if [ -z "$GARLIC_OUT" ]; then >&2 echo "GARLIC_OUT is not set" exit 1 fi - + mkdir -p "$GARLIC_OUT" cd "$GARLIC_OUT" -exec nix-isolate @nixPrefix@@out@/bin/stage2 +for j in @out@/apps/*; do + $j/bin/run +done diff --git a/garlic/stages/launcher/stage2 b/garlic/stages/launcher/stage2 deleted file mode 100644 index dc0622b..0000000 --- a/garlic/stages/launcher/stage2 +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/sh -ex - ->&2 echo "Running launcher stage2" - -if [ ! -e "/nix" ]; then - >&2 echo "Cannot execute stage2 outside from nix environment" - exit 1 -fi - -for j in @out@/apps/*; do - $j/bin/run -done diff --git a/garlic/stages/nix-isolate.nix b/garlic/stages/nix-isolate.nix deleted file mode 100644 index 1139477..0000000 --- a/garlic/stages/nix-isolate.nix +++ /dev/null @@ -1,40 +0,0 @@ -{ - stdenv -, nixtools -}: - -{ - program -, clusterName -}: - -stdenv.mkDerivation { - name = "nix-isolate"; - preferLocalBuild = true; - phases = [ "installPhase" ]; - dontPatchShebangs = true; - installPhase = '' - cat > $out <&2 echo Running nix-isolate stage - >&2 echo PATH=$PATH - >&2 echo Running env: - env - - # We need to enter the nix namespace first, in order to have /nix - # available, so we use this hack: - if [ ! -e /nix ]; then - exec ${nixtools}/bin/${clusterName}/nix-isolate \$0 - fi - - if [ -e /usr ]; then - >&2 echo "Environment not isolated, aborting" - exit 1 - fi - - exec ${program} - EOF - chmod +x $out - ''; -} diff --git a/garlic/stages/runexp/default.nix b/garlic/stages/runexp/default.nix new file mode 100644 index 0000000..f576273 --- /dev/null +++ b/garlic/stages/runexp/default.nix @@ -0,0 +1,25 @@ +{ + stdenv +, nixtools +}: + +{ + program +, nixPrefix +, sshHost ? "mn" +, targetCluster ? "mn4" +}: + +stdenv.mkDerivation { + name = "runexp"; + preferLocalBuild = true; + phases = [ "unpackPhase" "installPhase" ]; + dontPatchShebangs = true; + src = ./.; + inherit sshHost nixPrefix nixtools targetCluster program; + installPhase = '' + substituteAllInPlace runexp + cp runexp $out + chmod +x $out + ''; +} diff --git a/garlic/stages/runexp/runexp b/garlic/stages/runexp/runexp new file mode 100755 index 0000000..9e69548 --- /dev/null +++ b/garlic/stages/runexp/runexp @@ -0,0 +1,14 @@ +#!/bin/sh +# @upload-to-mn@ + +# This program runs the current experiment in the ./result symlink in +# MareNostrum. Requires that you define a "mn" host in the ssh config file +# (usually in ~/.ssh/config). + +nixPrefix=@nixPrefix@ +nixtools=$nixPrefix@nixtools@/bin +runexp=$nixtools/@targetCluster@/runexp + +>&2 echo "Launching \"$runexp @program@\" in MN" + +ssh mn $runexp @program@ diff --git a/overlay.nix b/overlay.nix index 3486e8f..a099497 100644 --- a/overlay.nix +++ b/overlay.nix @@ -202,7 +202,8 @@ let broom = callPackage ./garlic/stages/broom.nix { }; envRecord = callPackage ./garlic/stages/envRecord.nix { }; valgrind = callPackage ./garlic/stages/valgrind.nix { }; - nix-isolate = callPackage ./garlic/stages/nix-isolate.nix { }; + isolate = callPackage ./garlic/stages/isolate { }; + runexp = callPackage ./garlic/stages/runexp { }; }; # Tests (move to bsc ?) From effcc2d20be69eb7466f0f5aec1c7cd2c0be0bca Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 5 Oct 2020 19:13:02 +0200 Subject: [PATCH 214/987] Working isolated environment --- garlic/exp/nbody/tampi.nix | 4 ---- garlic/stages/isolate/default.nix | 10 ++++++++++ garlic/stages/isolate/stage1 | 16 ++++++++++++---- overlay.nix | 4 ++++ 4 files changed, 26 insertions(+), 8 deletions(-) diff --git a/garlic/exp/nbody/tampi.nix b/garlic/exp/nbody/tampi.nix index 153c7c4..398d4b9 100644 --- a/garlic/exp/nbody/tampi.nix +++ b/garlic/exp/nbody/tampi.nix @@ -112,10 +112,6 @@ let argv = {stage, conf, ...}: w.argv { program = stageProgram stage; - env = '' - set -e - export I_MPI_THREAD_SPLIT=1 - ''; argv = ''( -t ${toString conf.timesteps} -p ${toString conf.particles} )''; }; diff --git a/garlic/stages/isolate/default.nix b/garlic/stages/isolate/default.nix index a8d0756..644d2c7 100644 --- a/garlic/stages/isolate/default.nix +++ b/garlic/stages/isolate/default.nix @@ -2,6 +2,7 @@ stdenv , nixtools , busybox +, strace }: { @@ -14,15 +15,24 @@ stdenv.mkDerivation { name = "isolate"; preferLocalBuild = true; phases = [ "unpackPhase" "installPhase" ]; + buildInputs = [ + #nixtools + #strace + ]; src = ./.; dontPatchShebangs = true; programPath = "/bin/stage1"; inherit program nixPrefix clusterName nixtools busybox; out = "$out"; installPhase = '' + + echo PATH=$PATH + substituteAllInPlace stage1 substituteAllInPlace stage2 + sed -i "s|@extraPath@|$PATH|g" stage1 + mkdir -p $out/bin cp stage* $out/bin/ chmod +x $out/bin/stage* diff --git a/garlic/stages/isolate/stage1 b/garlic/stages/isolate/stage1 index 3f2b546..ee8b4d8 100644 --- a/garlic/stages/isolate/stage1 +++ b/garlic/stages/isolate/stage1 @@ -1,4 +1,4 @@ -#!/bin/sh -ex +#!/bin/bash -ex >&2 echo Running isolate stage1 >&2 echo PATH=$PATH @@ -13,11 +13,19 @@ shell="@busybox@/bin/sh" nixjoin="@nixPrefix@@nixtools@/bin/nix-join" +env=( + PATH="@nixPrefix@@busybox@/bin:@busybox@/bin:@extraPath@" + $(env | grep ^SLURM || true) + $(env | grep ^GARLIC_OUT || true) +) + #-m @nixPrefix@ \ -join_flags=" - -m /etc \ +join_flags="-m /etc \ + -m /.statelite/tmpfs/etc \ + -m /sys \ -m /var/run/munge \ -m /gpfs/projects/bsc15 \ -m /bin:@nixPrefix@@busybox@/bin" -exec $nixjoin -i $join_flags $nixhome -- @out@/bin/stage2 +exec $nixjoin -v -i $join_flags $nixhome -- \ + env -i "${env[@]}" @out@/bin/stage2 diff --git a/overlay.nix b/overlay.nix index a099497..0c646b8 100644 --- a/overlay.nix +++ b/overlay.nix @@ -131,6 +131,10 @@ let mpptest = callPackage ./bsc/mpptest/default.nix { }; + busybox = self.busybox.override { + enableStatic = true; + }; + nixtools = callPackage ./bsc/nixtools/default.nix { targetCluster = "mn4"; nixPrefix = "/gpfs/projects/bsc15/nix"; From ba221c5200ef23a63d2f5dbd333666e29c776357 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 5 Oct 2020 19:24:58 +0200 Subject: [PATCH 215/987] Add rw test --- garlic/exp/test/extrae.xml | 211 +++++++++++++++++++++++++++++++++++++ garlic/exp/test/rw.nix | 180 +++++++++++++++++++++++++++++++ overlay.nix | 11 ++ 3 files changed, 402 insertions(+) create mode 100644 garlic/exp/test/extrae.xml create mode 100644 garlic/exp/test/rw.nix diff --git a/garlic/exp/test/extrae.xml b/garlic/exp/test/extrae.xml new file mode 100644 index 0000000..b9af29b --- /dev/null +++ b/garlic/exp/test/extrae.xml @@ -0,0 +1,211 @@ + + + + + + + + + + + + + + + + + 1-3 + + 1-5 + + 1-3 + + 1-3 + + 1-3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + PAPI_TOT_INS,PAPI_TOT_CYC + + + + + + + + + + + + + + + + + TRACE + + 5 + + /scratch + + /gpfs/scratch/bsc41/bsc41273 + + + + + + 5000000 + + + + + + + + /gpfs/scratch/bsc41/bsc41273/control + + + + + + + 10M + + + + + + + + + + + 500u + + + + + + + + + + + + + + + + + + + + diff --git a/garlic/exp/test/rw.nix b/garlic/exp/test/rw.nix new file mode 100644 index 0000000..b4aa73a --- /dev/null +++ b/garlic/exp/test/rw.nix @@ -0,0 +1,180 @@ +{ + stdenv +, nixpkgs +, pkgs +, genApp +, genConfigs +, runWrappers +}: + +with stdenv.lib; + +let + bsc = pkgs.bsc; + + # Set variable configuration for the experiment + varConfig = { + cc = [ bsc.icc ]; + mpi = [ bsc.impi ]; + blocksize = [ 1024 ]; + }; + + # Common configuration + common = { + + # nbody runtime options + particles = 1024*4; + timesteps = 10; + + # Resources + ntasksPerNode = "2"; + nodes = "2"; + + # Stage configuration + enableRunexp = true; + enableSbatch = true; + enableControl = true; + enableExtrae = false; + enablePerf = false; + enableCtf = false; + + # MN4 path + nixPrefix = "/gpfs/projects/bsc15/nix"; + }; + + # Compute the cartesian product of all configurations + configs = map (conf: conf // common) (genConfigs varConfig); + + stageProgram = stage: + if stage ? programPath + then "${stage}${stage.programPath}" else "${stage}"; + + w = runWrappers; + + sbatch = {stage, conf, ...}: with conf; w.sbatch ( + # Allow a user to define a custom reservation for the job in MareNostrum4, + # by setting the garlic.sbatch.reservation attribute in the + # ~/.config/nixpkgs/config.nix file. If the attribute is not set, no + # reservation is used. The user reservation may be overwritten by the + # experiment, if the reservation is set like with nodes or ntasksPerNode. + optionalAttrs (pkgs.config ? garlic.sbatch.reservation) { + inherit (pkgs.config.garlic.sbatch) reservation; + } // { + program = stageProgram stage; + exclusive = true; + time = "02:00:00"; + qos = "debug"; + jobName = "nbody-tampi"; + inherit nixPrefix nodes ntasksPerNode; + } + ); + + control = {stage, conf, ...}: with conf; w.control { + program = stageProgram stage; + }; + + srun = {stage, conf, ...}: with conf; w.srun { + program = stageProgram stage; + srunOptions = "--cpu-bind=verbose,socket"; + inherit nixPrefix; + }; + + statspy = {stage, conf, ...}: with conf; w.statspy { + program = stageProgram stage; + }; + + perf = {stage, conf, ...}: with conf; w.perf { + program = stageProgram stage; + perfArgs = "sched record -a"; + }; + + isolate = {stage, conf, ...}: with conf; w.isolate { + program = stageProgram stage; + clusterName = "mn4"; + inherit nixPrefix; + }; + + extrae = {stage, conf, ...}: w.extrae { + program = stageProgram stage; + traceLib = "mpi"; # mpi -> libtracempi.so + configFile = ./extrae.xml; + }; + + ctf = {stage, conf, ...}: w.argv { + program = stageProgram stage; + env = '' + export NANOS6=ctf + export NANOS6_CTF2PRV=0 + ''; + }; + + argv = {stage, conf, ...}: w.argv { + program = "${pkgs.coreutils}/bin/true"; + env = '' + set -x + pwd + echo hi > hi + ''; + }; + + bscOverlay = import ../../../overlay.nix; + + genPkgs = newOverlay: nixpkgs { + overlays = [ + bscOverlay + newOverlay + ]; + }; + + launch = w.launch.override { + nixPrefix = common.nixPrefix; + }; + + stages = with common; [] + # Launch the experiment remotely + #++ optional enableRunexp runexp + + # Use sbatch to request resources first + ++ optional enableSbatch sbatch + + # Repeats the next stages N times + ++ optionals enableControl [ isolate control ] + + # Executes srun to launch the program in the requested nodes, and + # immediately after enters the nix environment again, as slurmstepd launches + # the next stages from outside the namespace. + ++ [ srun isolate ] + + # Intrumentation with extrae + ++ optional enableExtrae extrae + + # Optionally profile the next stages with perf + ++ optional enablePerf perf + + # Optionally profile nanos6 with the new ctf + ++ optional enableCtf ctf + + ++ [ argv ]; + + # List of actual programs to be executed + jobs = map (conf: w.stagen { inherit conf stages; }) configs; + + launcher = launch jobs; + + runexp = stage: w.runexp { + program = stageProgram stage; + nixPrefix = common.nixPrefix; + }; + + isolatedRun = stage: isolate { + inherit stage; + conf = common; + }; + + final = runexp (isolatedRun launcher); + + +in + # We simply run each program one after another + #launch jobs + final diff --git a/overlay.nix b/overlay.nix index 0c646b8..cfe4bfa 100644 --- a/overlay.nix +++ b/overlay.nix @@ -277,6 +277,17 @@ let }; latency = latency-internode; }; + + test = { + rw = callPackage ./garlic/exp/test/rw.nix { + pkgs = self // self.bsc.garlic; + nixpkgs = import ; + genApp = self.bsc.garlic.genApp; + genConfigs = self.bsc.garlic.genConfigs; + runWrappers = self.bsc.garlic.runWrappers; + }; +# mpi = callPackage ./bsc/garlic/exp/nbody/mpi.nix { }; + }; }; }; }; From 4ea0d16926fbcb48ce6cea6be11a0bc07cc3da80 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 7 Oct 2020 09:49:42 +0200 Subject: [PATCH 216/987] WIP isolation --- garlic/exp/nbody/tampi.nix | 65 ++++++++++++++----- garlic/nbody/default.nix | 2 +- garlic/stages/isolate/stage1 | 29 +++++++-- garlic/stages/strace.nix | 23 +++++++ .../stages/{runexp => trebuchet}/default.nix | 6 +- .../{runexp/runexp => trebuchet/trebuchet} | 2 +- overlay.nix | 5 +- 7 files changed, 101 insertions(+), 31 deletions(-) create mode 100644 garlic/stages/strace.nix rename garlic/stages/{runexp => trebuchet}/default.nix (80%) rename garlic/stages/{runexp/runexp => trebuchet/trebuchet} (96%) diff --git a/garlic/exp/nbody/tampi.nix b/garlic/exp/nbody/tampi.nix index 398d4b9..a29280c 100644 --- a/garlic/exp/nbody/tampi.nix +++ b/garlic/exp/nbody/tampi.nix @@ -16,13 +16,15 @@ let varConfig = { cc = [ bsc.icc ]; mpi = [ bsc.impi ]; + #mpi = [ bsc.mpichDebug ]; blocksize = [ 1024 ]; }; # Common configuration common = { # Compile time nbody config - gitBranch = "garlic/tampi+send+oss+task"; + gitBranch = "garlic/mpi+send"; + #gitBranch = "garlic/tampi+send+oss+task"; # nbody runtime options particles = 1024*4; @@ -30,15 +32,16 @@ let # Resources ntasksPerNode = "2"; - nodes = "2"; + nodes = "1"; # Stage configuration - enableRunexp = true; - enableSbatch = true; - enableControl = true; - enableExtrae = false; - enablePerf = false; - enableCtf = false; + enableTrebuchet = true; + enableSbatch = true; + enableControl = true; + enableExtrae = false; + enablePerf = false; + enableCtf = false; + enableStrace = true; # MN4 path nixPrefix = "/gpfs/projects/bsc15/nix"; @@ -90,6 +93,11 @@ let perfArgs = "sched record -a"; }; + nixsetup = {stage, conf, ...}: with conf; w.nixsetup { + program = stageProgram stage; + nixsetup = "${nixPrefix}/bin/nix-setup"; + }; + isolate = {stage, conf, ...}: with conf; w.isolate { program = stageProgram stage; clusterName = "mn4"; @@ -110,8 +118,23 @@ let ''; }; + strace = {stage, conf, ...}: w.strace { + program = stageProgram stage; + }; + argv = {stage, conf, ...}: w.argv { program = stageProgram stage; + env = '' + #export I_MPI_PMI_LIBRARY=${bsc.slurm17-libpmi2}/lib/libpmi2.so + export I_MPI_DEBUG=+1000 + #export I_MPI_FABRICS=shm + + export MPICH_DBG_OUTPUT=VERBOSE + export MPICH_DBG_CLASS=ALL + export MPICH_DBG_OUTPUT=stdout + + export FI_LOG_LEVEL=Info + ''; argv = ''( -t ${toString conf.timesteps} -p ${toString conf.particles} )''; }; @@ -146,19 +169,25 @@ let }; stages = with common; [] - # Launch the experiment remotely - #++ optional enableRunexp runexp - # Use sbatch to request resources first - ++ optional enableSbatch sbatch + ++ optionals enableSbatch [ + sbatch + nixsetup + #isolate + ] # Repeats the next stages N times - ++ optionals enableControl [ isolate control ] + ++ optional enableControl control # Executes srun to launch the program in the requested nodes, and # immediately after enters the nix environment again, as slurmstepd launches # the next stages from outside the namespace. - ++ [ srun isolate ] + ++ [ + #strace + srun + nixsetup + #isolate + ] # Intrumentation with extrae ++ optional enableExtrae extrae @@ -169,6 +198,9 @@ let # Optionally profile nanos6 with the new ctf ++ optional enableCtf ctf + # Optionally enable strace + #++ optional enableStrace strace + # Execute the nbody app with the argv and env vars ++ [ argv nbodyFn ]; @@ -177,7 +209,7 @@ let launcher = launch jobs; - runexp = stage: w.runexp { + trebuchet = stage: w.trebuchet { program = stageProgram stage; nixPrefix = common.nixPrefix; }; @@ -187,8 +219,7 @@ let conf = common; }; - final = runexp (isolatedRun launcher); - + final = trebuchet (isolatedRun launcher); in # We simply run each program one after another diff --git a/garlic/nbody/default.nix b/garlic/nbody/default.nix index 9c7614d..70ece4b 100644 --- a/garlic/nbody/default.nix +++ b/garlic/nbody/default.nix @@ -16,7 +16,7 @@ with stdenv.lib; stdenv.mkDerivation rec { name = "nbody"; - #src = /home/Computational/rarias/bscpkgs/manual/nbody; + #src = ~/nbody; src = builtins.fetchGit { url = "${gitURL}"; diff --git a/garlic/stages/isolate/stage1 b/garlic/stages/isolate/stage1 index ee8b4d8..02ed71b 100644 --- a/garlic/stages/isolate/stage1 +++ b/garlic/stages/isolate/stage1 @@ -16,16 +16,31 @@ nixjoin="@nixPrefix@@nixtools@/bin/nix-join" env=( PATH="@nixPrefix@@busybox@/bin:@busybox@/bin:@extraPath@" $(env | grep ^SLURM || true) + $(env | grep ^PMI || true) $(env | grep ^GARLIC_OUT || true) + $(env | grep ^USER || true) + HOME="/homeless-shelter" ) -#-m @nixPrefix@ \ -join_flags="-m /etc \ - -m /.statelite/tmpfs/etc \ - -m /sys \ - -m /var/run/munge \ - -m /gpfs/projects/bsc15 \ - -m /bin:@nixPrefix@@busybox@/bin" +mounts=( + #-m @nixPrefix@ + #FIXME: Use only the strictly neccesary from /etc + -m /etc + # The /etc/hosts file is a symlink to this etc/ + -m /.statelite/tmpfs/etc + -m /sys + -m /dev + -m /proc + # nscd cache: doesn't exist (?) + #-m /var/run/nscd + # Needed for munge auth + -m /var/run/munge + # FIXME: We should only need nix and the output path + -m /gpfs/projects/bsc15 + -m /bin:@nixPrefix@@busybox@/bin +) + +join_flags="${mounts[@]}" exec $nixjoin -v -i $join_flags $nixhome -- \ env -i "${env[@]}" @out@/bin/stage2 diff --git a/garlic/stages/strace.nix b/garlic/stages/strace.nix new file mode 100644 index 0000000..56eb932 --- /dev/null +++ b/garlic/stages/strace.nix @@ -0,0 +1,23 @@ +{ + stdenv +, bash +, strace +}: + +{ + program +}: + +stdenv.mkDerivation { + name = "strace"; + preferLocalBuild = true; + phases = [ "installPhase" ]; + installPhase = '' + cat > $out < Date: Wed, 7 Oct 2020 10:55:40 +0200 Subject: [PATCH 217/987] control: Fix bashism --- garlic/stages/control.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/garlic/stages/control.nix b/garlic/stages/control.nix index 93b99b7..6ee5d70 100644 --- a/garlic/stages/control.nix +++ b/garlic/stages/control.nix @@ -15,7 +15,7 @@ stdenv.mkDerivation { installPhase = '' cat > $out < Date: Wed, 7 Oct 2020 18:34:08 +0200 Subject: [PATCH 218/987] Document the execution pipeline --- garlic/doc/Makefile | 9 ++ garlic/doc/execution.ms | 203 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 212 insertions(+) create mode 100644 garlic/doc/Makefile create mode 100644 garlic/doc/execution.ms diff --git a/garlic/doc/Makefile b/garlic/doc/Makefile new file mode 100644 index 0000000..f768139 --- /dev/null +++ b/garlic/doc/Makefile @@ -0,0 +1,9 @@ +all: execution.pdf execution.txt + +%.pdf: %.ms + groff -ms -tbl -Tpdf $^ > $@ + #pdfms $^ 2>&1 >$@ | sed 's/^troff: //g' + killall -HUP mupdf + +%.txt: %.ms + groff -ms -tbl -Tutf8 $^ > $@ diff --git a/garlic/doc/execution.ms b/garlic/doc/execution.ms new file mode 100644 index 0000000..b38f81c --- /dev/null +++ b/garlic/doc/execution.ms @@ -0,0 +1,203 @@ +.TL +Garlic execution +.AU +Rodrigo Arias Mallo +.AI +Barcelona Supercomputing Center +.AB +.LP +This document covers the execution of experiments in the Garlic +benchmark, which are performed under strict conditions. The several +stages of the execution are documented so the experimenter can have a +global overview of how the benchmark runs under the hood. +During the execution of the experiments, the results are +stored in a file which will be used in posterior processing steps. +.AE +.\"##################################################################### +.nr GROWPS 3 +.nr PSINCR 1.5p +.\".nr PD 0.5m +.nr PI 2m +\".2C +.\"##################################################################### +.NH 1 +Introduction +.LP +Every experiment in the Garlic +benchmark is controled by one +.I nix +file. +An experiment consists of several shell scripts which are executed +sequentially and perform several tasks to setup the +.I "execution environment" , +which finally launch the actual program that is being analyzed. +The scripts that prepare the environment and the program itself are +called the +.I stages +of the execution, which altogether form the +.I "execution pipeline" +or simply the +.I pipeline . +The experimenter must know with very good details all the stages +involved in the pipeline, as they can affect with great impact the +result of the execution. +.PP +The experiments have a very strong dependency on the cluster where they +run, as the results will be heavily affected. The software used for the +benchmark is carefully configured for the hardware used in the +execution. In particular, the experiments are designed to run in +MareNostrum 4 cluster with the SLURM workload manager. In the future we +plan to add support for other clusters, in order to execute the +experiments in other machines. +.\"##################################################################### +.NH 1 +Isolation +.LP +The benchmark is designed so that both the compilation of every software +package and the execution of the experiment is performed under strict +conditions. Therefore, we can provide a guarantee that two executions +of the same experiment are actually running the same program in the same +environment. +.PP +All the software used by an experiment is included in the +.I "nix store" +which is, by convention, located in the +.CW /nix +directory. Unfortunately, it is common for libraries to try to load +software from other paths like +.CW /usr +or +.CW /lib . +It is also common that configuration files are loaded from +.CW /etc +and from the home directory of the user that runs the experiment. +Additionally, some environment variables are recognized by the libraries +used in the experiment, which change their behavior. As we cannot +control the software and configuration files in those directories, we +coudn't guarantee that the execution behaves as intended. +.PP +In order to avoid this problem, we create a secure +.I sandbox +where only the files in the nix store are available (with some other +exceptions). Therefore, even if the libraries try to access any path +outside the nix store, they will find that the files are not there +anymore. +.\"##################################################################### +.NH 1 +Execution stages +.LP +There are several predefined stages which form the +.I standard +execution pipeline. The standard pipeline is divided in two main parts: +1) connecting to the target machine and submiting a job to SLURM, and 2) +executing the job itself. +.NH 2 +Job submission +.LP +Three stages are involved in the job submision. The +.I trebuchet +stage connects via +.I ssh +to the target machine and executes the next stage there. Once in the +target machine, the +.I isolate +stage is executed to enter the sandbox. Finally, the +.I sbatch +stage runs the +.I sbatch(1) +program with a job script with simply executes the next stage. The +sbatch program reads the +.CW /etc/slurm/slurm.conf +file from outside the sandbox, so we must explicitly allow this file to +be available as well as the +.I munge +socket, used for authentication. +.PP +The rationale behind running sbatch from the sandbox is that the options +provided in enviroment variables override the options from the job +script. Therefore, we avoid this problem by running sbatch from the +sandbox, where potentially dangerous environment variables were removed. +.NH 2 +Seting up the environment +.LP +Once the job has been selected for execution, the SLURM daemon allocates +the resources and then selects one of the nodes to run the job script +(is not executed in parallel). Additionally, the job script is executed +from a child process, forked from on of the SLURM processes, which is +outside the sandbox. Therefore, we first run the +.I isolate +stage +to enter the sandbox again. +.PP +The next stage is called +.I control +and determines if enough data has been generated by the experiment or if +it should continue repeating the execution. At the current time, is only +implemented as a simple loop that runs the next stage a fixed amount of +times. +.PP +The following stage is +.I srun +which usually launches several copies of the next stage to run in +parallel (when using more than one task). Runs one copy per task, +effectively creating one process per task. The set of CPUs available to +each process is computed by the parameter +.I --cpu-bind +and is crucial to set it correctly; is documented in the +.I srun(1) +manual. Apending the +.I verbose +value to the cpu bind option causes srun to print the assigned affinity +of each task so that it can be reviewed in the execution log. +.PP +The mechanism by which srun executes multiple processes is the same used +by sbatch, it forks from a SLURM daemon running in the computing nodes. +Therefore, the execution begins outside the sandbox. The next stage is +.I isolate +which enters again the sandbox in every task (from now on, all stages +are running in parallel). +.PP +At this point in the execution, we are ready to run the actual program +that is the matter of the experiment. Usually, the programs require some +argument options to be passed in the command line. The +.I argv +stage sets the arguments and optionally some environment variables and +executes the last stage, the +.I program . +.NH 2 +Stage overview +.LP +The standard execution pipeline contains the stages listed in the table +1, ordered by the execution time. Additional stages can be placed before +the argv stage, to modify the execution. Usually debugging programs and +other options can be included there. +.KF +.TS +center; +lB cB cB cB +l c c c. +_ +Stage Target Safe Copies +_ +trebuchet no no no +isolate yes no no +sbatch yes yes no +isolate yes no no +control yes yes no +srun yes yes no +isolate yes no yes +argv yes yes yes +program yes yes yes +_ +.TE +.QP +.B "Table 1" : +The stages of a standard execution pipeline. The +.B target +column determines whether the stage is running in the target cluster; +.B safe +states if the stage is running in the sandbox and +.B copies +if there are several instances of the stages running in parallel. +.QE +.KE From 66a5e06adab0553686038aa47ebceb4502aa81b6 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 7 Oct 2020 18:41:21 +0200 Subject: [PATCH 219/987] Generate trebuchet from nix --- garlic/stages/trebuchet/default.nix | 19 ++++++++++++++----- garlic/stages/trebuchet/trebuchet | 14 -------------- 2 files changed, 14 insertions(+), 19 deletions(-) delete mode 100755 garlic/stages/trebuchet/trebuchet diff --git a/garlic/stages/trebuchet/default.nix b/garlic/stages/trebuchet/default.nix index 7407b5a..68405f4 100644 --- a/garlic/stages/trebuchet/default.nix +++ b/garlic/stages/trebuchet/default.nix @@ -12,14 +12,23 @@ stdenv.mkDerivation { name = "trebuchet"; + phases = [ "installPhase" ]; preferLocalBuild = true; - phases = [ "unpackPhase" "installPhase" ]; dontPatchShebangs = true; - src = ./.; - inherit sshHost nixPrefix nixtools targetCluster program; installPhase = '' - substituteAllInPlace trebuchet - cp trebuchet $out + cat > $out <&2 echo "Launching \"\$runexp ${program}\" in MN4" + ssh ${sshHost} \$runexp ${program} + EOF chmod +x $out ''; } diff --git a/garlic/stages/trebuchet/trebuchet b/garlic/stages/trebuchet/trebuchet deleted file mode 100755 index 6191d4a..0000000 --- a/garlic/stages/trebuchet/trebuchet +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/sh -ex -# @upload-to-mn@ - -# This program runs the current experiment in the ./result symlink in -# MareNostrum. Requires that you define a "mn" host in the ssh config file -# (usually in ~/.ssh/config). - -nixPrefix=@nixPrefix@ -nixtools=$nixPrefix@nixtools@/bin -runexp=$nixtools/@targetCluster@/runexp - ->&2 echo "Launching \"$runexp @program@\" in MN" - -ssh mn $runexp @program@ From 26ea326ded0c5fc7dff89034acd88831b109f285 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 7 Oct 2020 19:01:34 +0200 Subject: [PATCH 220/987] Group stages --- garlic/exp/nbody/tampi.nix | 54 +++++++++++++++----------------------- 1 file changed, 21 insertions(+), 33 deletions(-) diff --git a/garlic/exp/nbody/tampi.nix b/garlic/exp/nbody/tampi.nix index a29280c..ca2745d 100644 --- a/garlic/exp/nbody/tampi.nix +++ b/garlic/exp/nbody/tampi.nix @@ -124,17 +124,17 @@ let argv = {stage, conf, ...}: w.argv { program = stageProgram stage; - env = '' - #export I_MPI_PMI_LIBRARY=${bsc.slurm17-libpmi2}/lib/libpmi2.so - export I_MPI_DEBUG=+1000 - #export I_MPI_FABRICS=shm + #env = '' + # #export I_MPI_PMI_LIBRARY=${bsc.slurm17-libpmi2}/lib/libpmi2.so + # export I_MPI_DEBUG=+1000 + # #export I_MPI_FABRICS=shm - export MPICH_DBG_OUTPUT=VERBOSE - export MPICH_DBG_CLASS=ALL - export MPICH_DBG_OUTPUT=stdout + # export MPICH_DBG_OUTPUT=VERBOSE + # export MPICH_DBG_CLASS=ALL + # export MPICH_DBG_OUTPUT=stdout - export FI_LOG_LEVEL=Info - ''; + # export FI_LOG_LEVEL=Info + #''; argv = ''( -t ${toString conf.timesteps} -p ${toString conf.particles} )''; }; @@ -168,27 +168,15 @@ let nixPrefix = common.nixPrefix; }; - stages = with common; [] - # Use sbatch to request resources first - ++ optionals enableSbatch [ - sbatch - nixsetup - #isolate - ] - - # Repeats the next stages N times - ++ optional enableControl control - - # Executes srun to launch the program in the requested nodes, and - # immediately after enters the nix environment again, as slurmstepd launches - # the next stages from outside the namespace. - ++ [ - #strace - srun - nixsetup - #isolate - ] + stdStages = [ + sbatch + isolate + control + srun + isolate + ]; + debugStages = with common; [] # Intrumentation with extrae ++ optional enableExtrae extrae @@ -198,11 +186,11 @@ let # Optionally profile nanos6 with the new ctf ++ optional enableCtf ctf - # Optionally enable strace - #++ optional enableStrace strace + # Optionally run the program with strace + ++ optional enableStrace strace + ; - # Execute the nbody app with the argv and env vars - ++ [ argv nbodyFn ]; + stages = stdStages ++ debugStages ++ [ argv nbodyFn ]; # List of actual programs to be executed jobs = map (conf: w.stagen { inherit conf stages; }) configs; From 697d4e652e702bff4e5e3b549bc9acf68f168eb6 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 8 Oct 2020 16:11:49 +0200 Subject: [PATCH 221/987] Ignore pdf and generated txt --- garlic/doc/.gitignore | 2 ++ garlic/doc/Makefile | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) create mode 100644 garlic/doc/.gitignore diff --git a/garlic/doc/.gitignore b/garlic/doc/.gitignore new file mode 100644 index 0000000..d62ddbb --- /dev/null +++ b/garlic/doc/.gitignore @@ -0,0 +1,2 @@ +*.pdf +*.txt diff --git a/garlic/doc/Makefile b/garlic/doc/Makefile index f768139..e30f27e 100644 --- a/garlic/doc/Makefile +++ b/garlic/doc/Makefile @@ -1,9 +1,9 @@ all: execution.pdf execution.txt %.pdf: %.ms - groff -ms -tbl -Tpdf $^ > $@ + groff -ms -t -p -Tpdf $^ > $@ #pdfms $^ 2>&1 >$@ | sed 's/^troff: //g' killall -HUP mupdf %.txt: %.ms - groff -ms -tbl -Tutf8 $^ > $@ + groff -ms -t -p -Tutf8 $^ > $@ From d599b8c52fd0783dc630c12c63a377bb2c6845ee Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 8 Oct 2020 19:00:55 +0200 Subject: [PATCH 222/987] New naming convention --- garlic/exp/nbody/tampi.nix | 12 +++--- garlic/stages/experiment/default.nix | 34 +++++++++++++++ garlic/stages/experiment/old.nix | 50 ++++++++++++++++++++++ garlic/stages/experiment/run | 20 +++++++++ garlic/stages/launcher/default.nix | 57 ++++++++++--------------- garlic/stages/launcher/old.nix | 50 ++++++++++++++++++++++ garlic/stages/trebuchet/default.nix | 35 ++++++++++++++++ garlic/stages/unit.nix | 62 ++++++++++++++++++++++++++++ overlay.nix | 2 + 9 files changed, 281 insertions(+), 41 deletions(-) create mode 100644 garlic/stages/experiment/default.nix create mode 100644 garlic/stages/experiment/old.nix create mode 100644 garlic/stages/experiment/run create mode 100644 garlic/stages/launcher/old.nix create mode 100644 garlic/stages/unit.nix diff --git a/garlic/exp/nbody/tampi.nix b/garlic/exp/nbody/tampi.nix index ca2745d..c5fd69f 100644 --- a/garlic/exp/nbody/tampi.nix +++ b/garlic/exp/nbody/tampi.nix @@ -17,7 +17,7 @@ let cc = [ bsc.icc ]; mpi = [ bsc.impi ]; #mpi = [ bsc.mpichDebug ]; - blocksize = [ 1024 ]; + blocksize = [ 1024 2048 ]; }; # Common configuration @@ -164,7 +164,7 @@ let inherit cc blocksize mpi gitBranch; }; - launch = w.launch.override { + experimentFn = w.experiment.override { nixPrefix = common.nixPrefix; }; @@ -193,13 +193,14 @@ let stages = stdStages ++ debugStages ++ [ argv nbodyFn ]; # List of actual programs to be executed - jobs = map (conf: w.stagen { inherit conf stages; }) configs; + units = map (conf: w.unit { inherit conf stages; }) configs; - launcher = launch jobs; + experiment = experimentFn units; trebuchet = stage: w.trebuchet { program = stageProgram stage; nixPrefix = common.nixPrefix; + experiment = experiment; }; isolatedRun = stage: isolate { @@ -207,9 +208,10 @@ let conf = common; }; - final = trebuchet (isolatedRun launcher); + final = trebuchet (isolatedRun experiment); in # We simply run each program one after another #launch jobs final + #jobs diff --git a/garlic/stages/experiment/default.nix b/garlic/stages/experiment/default.nix new file mode 100644 index 0000000..a397fbc --- /dev/null +++ b/garlic/stages/experiment/default.nix @@ -0,0 +1,34 @@ +{ + stdenv +, nixPrefix ? "" +}: + +units: + +with stdenv.lib; + +let + stageProgram = stage: + if stage ? programPath + then "${stage}${stage.programPath}" else "${stage}"; + + unitsString = builtins.concatStringsSep "\n" + (map (x: "${stageProgram x}") units); +in +stdenv.mkDerivation { + name = "experiment"; + phases = [ "installPhase" ]; + preferLocalBuild = true; + dontPatchShebangs = true; + inherit units; + + installPhase = '' + cat > $out << EOF + #!/bin/sh + + # This is an experiment formed by the following units: + ${unitsString} + EOF + chmod +x $out + ''; +} diff --git a/garlic/stages/experiment/old.nix b/garlic/stages/experiment/old.nix new file mode 100644 index 0000000..763bdb4 --- /dev/null +++ b/garlic/stages/experiment/old.nix @@ -0,0 +1,50 @@ +{ + stdenv +, nixPrefix ? "" +}: + +apps: # Each app must be unique + +stdenv.mkDerivation { + name = "launcher"; + preferLocalBuild = true; + + buildInputs = [] ++ apps; + apps = apps; + phases = [ "unpackPhase" "patchPhase" "installPhase" ]; + dontPatchShebangs = true; + programPath = "/bin/run"; + + src = ./.; + + inherit nixPrefix; + + patchPhase = '' + substituteAllInPlace run + ''; + + installPhase = '' + mkdir -p $out/apps + for j in $apps; do + target=$out/apps/$(basename $j) + if [ -e $target ]; then + echo "Duplicated app: $j" + echo + echo "Provided apps: " + printf "%s\n" $apps + echo + exit 1 + fi + ln -s $j $target + done + + mkdir -p $out/bin + install -m755 run $out/bin/run + chmod +x $out/bin/* + + # Mark the launcher for upload + touch $out/.upload-to-mn + # And mark it as an experiment + touch $out/.experiment + ''; +} diff --git a/garlic/stages/experiment/run b/garlic/stages/experiment/run new file mode 100644 index 0000000..3c98c2c --- /dev/null +++ b/garlic/stages/experiment/run @@ -0,0 +1,20 @@ +#!/bin/sh -ex + +>&2 echo "Running launcher" + +if [ ! -e "/nix" ]; then + >&2 echo "missing /nix" + exit 1 +fi + +if [ -z "$GARLIC_OUT" ]; then + >&2 echo "GARLIC_OUT is not set" + exit 1 +fi + +mkdir -p "$GARLIC_OUT" +cd "$GARLIC_OUT" + +for j in @out@/apps/*; do + $j/bin/run +done diff --git a/garlic/stages/launcher/default.nix b/garlic/stages/launcher/default.nix index 763bdb4..aa019da 100644 --- a/garlic/stages/launcher/default.nix +++ b/garlic/stages/launcher/default.nix @@ -3,48 +3,33 @@ , nixPrefix ? "" }: -apps: # Each app must be unique +units: +with stdenv.lib; + +let + + stageProgram = stage: + if stage ? programPath + then "${stage}${stage.programPath}" else "${stage}"; + + unitsString = builtins.concatStringsSep "\n" + (map (x: "${stageProgram x}") units); +in stdenv.mkDerivation { - name = "launcher"; + name = "experiment"; + phases = [ "installPhase" ]; preferLocalBuild = true; - - buildInputs = [] ++ apps; - apps = apps; - phases = [ "unpackPhase" "patchPhase" "installPhase" ]; dontPatchShebangs = true; - programPath = "/bin/run"; - - src = ./.; - - inherit nixPrefix; - - patchPhase = '' - substituteAllInPlace run - ''; + inherit units; installPhase = '' - mkdir -p $out/apps - for j in $apps; do - target=$out/apps/$(basename $j) - if [ -e $target ]; then - echo "Duplicated app: $j" - echo - echo "Provided apps: " - printf "%s\n" $apps - echo - exit 1 - fi - ln -s $j $target - done + cat > $out << EOF + #!/bin/sh - mkdir -p $out/bin - install -m755 run $out/bin/run - chmod +x $out/bin/* - - # Mark the launcher for upload - touch $out/.upload-to-mn - # And mark it as an experiment - touch $out/.experiment + # This is an experiment formed by the following units: + ${unitsString} + EOF + chmod +x $out ''; } diff --git a/garlic/stages/launcher/old.nix b/garlic/stages/launcher/old.nix new file mode 100644 index 0000000..763bdb4 --- /dev/null +++ b/garlic/stages/launcher/old.nix @@ -0,0 +1,50 @@ +{ + stdenv +, nixPrefix ? "" +}: + +apps: # Each app must be unique + +stdenv.mkDerivation { + name = "launcher"; + preferLocalBuild = true; + + buildInputs = [] ++ apps; + apps = apps; + phases = [ "unpackPhase" "patchPhase" "installPhase" ]; + dontPatchShebangs = true; + programPath = "/bin/run"; + + src = ./.; + + inherit nixPrefix; + + patchPhase = '' + substituteAllInPlace run + ''; + + installPhase = '' + mkdir -p $out/apps + for j in $apps; do + target=$out/apps/$(basename $j) + if [ -e $target ]; then + echo "Duplicated app: $j" + echo + echo "Provided apps: " + printf "%s\n" $apps + echo + exit 1 + fi + ln -s $j $target + done + + mkdir -p $out/bin + install -m755 run $out/bin/run + chmod +x $out/bin/* + + # Mark the launcher for upload + touch $out/.upload-to-mn + # And mark it as an experiment + touch $out/.experiment + ''; +} diff --git a/garlic/stages/trebuchet/default.nix b/garlic/stages/trebuchet/default.nix index 68405f4..6b397c7 100644 --- a/garlic/stages/trebuchet/default.nix +++ b/garlic/stages/trebuchet/default.nix @@ -8,8 +8,37 @@ , nixPrefix , sshHost ? "mn" , targetCluster ? "mn4" +, experiment ? "" }: +with stdenv.lib; + +let + + dStages = foldr (stageFn: {conf, prevStage, stages}: { + conf = conf; + prevStage = stageFn {stage=prevStage; conf=conf;}; + stages = [ (stageFn {stage=prevStage; conf=conf;}) ] ++ stages; + }) + {conf=conf; stages=[]; prevStage=null;} stages; + + stageProgram = stage: + if stage ? programPath + then "${stage}${stage.programPath}" else "${stage}"; + + linkStages = imap1 (i: s: { + num = "${toString i}"; + name = "${toString i}-${baseNameOf s.name}"; + stage = s; + programPath = stageProgram s; + }) dStages.stages; + + units = builtins.concatStringsSep "\n" + (map (x: "# ${x}") experiment.units); + + firstStage = (x: x.programPath) (elemAt linkStages 0); +in + stdenv.mkDerivation { name = "trebuchet"; phases = [ "installPhase" ]; @@ -23,6 +52,12 @@ stdenv.mkDerivation { # Take a look at ${program} # to see what is being executed. + # Executes the following experiment in MN4: + # ${experiment} + + # Which contains the following experiment units: + ${units} + nixtools=${nixPrefix}${nixtools}/bin runexp=\$nixtools/${targetCluster}/runexp diff --git a/garlic/stages/unit.nix b/garlic/stages/unit.nix new file mode 100644 index 0000000..f20a4dd --- /dev/null +++ b/garlic/stages/unit.nix @@ -0,0 +1,62 @@ +{ + stdenv +, bash +}: + +{ + stages +, conf +}: + +with stdenv.lib; + +let + + dStages = foldr (stageFn: {conf, prevStage, stages}: { + conf = conf; + prevStage = stageFn {stage=prevStage; conf=conf;}; + stages = [ (stageFn {stage=prevStage; conf=conf;}) ] ++ stages; + }) + {conf=conf; stages=[]; prevStage=null;} stages; + + stageProgram = stage: + if stage ? programPath + then "${stage}${stage.programPath}" else "${stage}"; + + linkStages = imap1 (i: s: { + num = "${toString i}"; + name = "${toString i}-${baseNameOf s.name}"; + stage = s; + programPath = stageProgram s; + }) dStages.stages; + + stageList = builtins.concatStringsSep "\n" + (map (x: "# ${x.stage}") linkStages); + + firstStage = (x: x.programPath) (elemAt linkStages 0); +in +stdenv.mkDerivation { + name = "unit"; + preferLocalBuild = true; + phases = [ "installPhase" ]; + installPhase = '' + cat > $out << EOF + #!/bin/sh -e + + # This script defines an experimental unit with the following stages: + ${stageList} + + # Set the experiment unit in the environment + export GARLIC_UNIT=$(basename $out) + + # And change the working directory + mkdir \$GARLIC_UNIT + cd \$GARLIC_UNIT + + # Finally, execute the first stage: + exec ${firstStage} + EOF + + chmod +x $out + ''; +} diff --git a/overlay.nix b/overlay.nix index 8b848fd..72de9e2 100644 --- a/overlay.nix +++ b/overlay.nix @@ -209,6 +209,8 @@ let isolate = callPackage ./garlic/stages/isolate { }; trebuchet = callPackage ./garlic/stages/trebuchet { }; strace = callPackage ./garlic/stages/strace.nix { }; + unit = callPackage ./garlic/stages/unit.nix { }; + experiment= callPackage ./garlic/stages/experiment/default.nix { }; }; # Tests (move to bsc ?) From 45afe7d391a939694e1667b87cb9617c27d835a8 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 8 Oct 2020 19:02:18 +0200 Subject: [PATCH 223/987] Simplify experiment stage --- .../default.nix => experiment.nix} | 0 garlic/stages/experiment/old.nix | 50 ------------------- garlic/stages/experiment/run | 20 -------- 3 files changed, 70 deletions(-) rename garlic/stages/{experiment/default.nix => experiment.nix} (100%) delete mode 100644 garlic/stages/experiment/old.nix delete mode 100644 garlic/stages/experiment/run diff --git a/garlic/stages/experiment/default.nix b/garlic/stages/experiment.nix similarity index 100% rename from garlic/stages/experiment/default.nix rename to garlic/stages/experiment.nix diff --git a/garlic/stages/experiment/old.nix b/garlic/stages/experiment/old.nix deleted file mode 100644 index 763bdb4..0000000 --- a/garlic/stages/experiment/old.nix +++ /dev/null @@ -1,50 +0,0 @@ -{ - stdenv -, nixPrefix ? "" -}: - -apps: # Each app must be unique - -stdenv.mkDerivation { - name = "launcher"; - preferLocalBuild = true; - - buildInputs = [] ++ apps; - apps = apps; - phases = [ "unpackPhase" "patchPhase" "installPhase" ]; - dontPatchShebangs = true; - programPath = "/bin/run"; - - src = ./.; - - inherit nixPrefix; - - patchPhase = '' - substituteAllInPlace run - ''; - - installPhase = '' - mkdir -p $out/apps - for j in $apps; do - target=$out/apps/$(basename $j) - if [ -e $target ]; then - echo "Duplicated app: $j" - echo - echo "Provided apps: " - printf "%s\n" $apps - echo - exit 1 - fi - ln -s $j $target - done - - mkdir -p $out/bin - install -m755 run $out/bin/run - chmod +x $out/bin/* - - # Mark the launcher for upload - touch $out/.upload-to-mn - # And mark it as an experiment - touch $out/.experiment - ''; -} diff --git a/garlic/stages/experiment/run b/garlic/stages/experiment/run deleted file mode 100644 index 3c98c2c..0000000 --- a/garlic/stages/experiment/run +++ /dev/null @@ -1,20 +0,0 @@ -#!/bin/sh -ex - ->&2 echo "Running launcher" - -if [ ! -e "/nix" ]; then - >&2 echo "missing /nix" - exit 1 -fi - -if [ -z "$GARLIC_OUT" ]; then - >&2 echo "GARLIC_OUT is not set" - exit 1 -fi - -mkdir -p "$GARLIC_OUT" -cd "$GARLIC_OUT" - -for j in @out@/apps/*; do - $j/bin/run -done From 654e243735933f4c542d01428af8ef58dae9acc4 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 8 Oct 2020 19:48:20 +0200 Subject: [PATCH 224/987] Include an index in the trebuchet --- garlic/exp/nbody/tampi.nix | 5 ++- garlic/stages/experiment.nix | 9 ++++ garlic/stages/isolate/default.nix | 2 + garlic/stages/launcher/default.nix | 35 --------------- garlic/stages/launcher/old.nix | 50 --------------------- garlic/stages/launcher/run | 20 --------- garlic/stages/trebuchet.nix | 38 ++++++++++++++++ garlic/stages/trebuchet/default.nix | 69 ----------------------------- garlic/stages/unit.nix | 9 ++-- overlay.nix | 4 +- 10 files changed, 59 insertions(+), 182 deletions(-) delete mode 100644 garlic/stages/launcher/default.nix delete mode 100644 garlic/stages/launcher/old.nix delete mode 100644 garlic/stages/launcher/run create mode 100644 garlic/stages/trebuchet.nix delete mode 100644 garlic/stages/trebuchet/default.nix diff --git a/garlic/exp/nbody/tampi.nix b/garlic/exp/nbody/tampi.nix index c5fd69f..90bdcca 100644 --- a/garlic/exp/nbody/tampi.nix +++ b/garlic/exp/nbody/tampi.nix @@ -101,7 +101,7 @@ let isolate = {stage, conf, ...}: with conf; w.isolate { program = stageProgram stage; clusterName = "mn4"; - inherit nixPrefix; + inherit stage nixPrefix; }; extrae = {stage, conf, ...}: w.extrae { @@ -200,7 +200,8 @@ let trebuchet = stage: w.trebuchet { program = stageProgram stage; nixPrefix = common.nixPrefix; - experiment = experiment; + #experiment = experiment; + inherit stage; }; isolatedRun = stage: isolate { diff --git a/garlic/stages/experiment.nix b/garlic/stages/experiment.nix index a397fbc..0be2d8f 100644 --- a/garlic/stages/experiment.nix +++ b/garlic/stages/experiment.nix @@ -14,6 +14,12 @@ let unitsString = builtins.concatStringsSep "\n" (map (x: "${stageProgram x}") units); + + desc = builtins.concatStringsSep "\n" + (map (x: '' + # ${x} + ${x.desc}'') units); + in stdenv.mkDerivation { name = "experiment"; @@ -21,11 +27,14 @@ stdenv.mkDerivation { preferLocalBuild = true; dontPatchShebangs = true; inherit units; + inherit desc; installPhase = '' cat > $out << EOF #!/bin/sh + ${desc} + # This is an experiment formed by the following units: ${unitsString} EOF diff --git a/garlic/stages/isolate/default.nix b/garlic/stages/isolate/default.nix index 644d2c7..d3a7211 100644 --- a/garlic/stages/isolate/default.nix +++ b/garlic/stages/isolate/default.nix @@ -7,6 +7,7 @@ { program +, stage , nixPrefix , clusterName }: @@ -23,6 +24,7 @@ stdenv.mkDerivation { dontPatchShebangs = true; programPath = "/bin/stage1"; inherit program nixPrefix clusterName nixtools busybox; + desc = "# $out\n" + (if builtins.hasAttr "desc" stage then stage.desc else ""); out = "$out"; installPhase = '' diff --git a/garlic/stages/launcher/default.nix b/garlic/stages/launcher/default.nix deleted file mode 100644 index aa019da..0000000 --- a/garlic/stages/launcher/default.nix +++ /dev/null @@ -1,35 +0,0 @@ -{ - stdenv -, nixPrefix ? "" -}: - -units: - -with stdenv.lib; - -let - - stageProgram = stage: - if stage ? programPath - then "${stage}${stage.programPath}" else "${stage}"; - - unitsString = builtins.concatStringsSep "\n" - (map (x: "${stageProgram x}") units); -in -stdenv.mkDerivation { - name = "experiment"; - phases = [ "installPhase" ]; - preferLocalBuild = true; - dontPatchShebangs = true; - inherit units; - - installPhase = '' - cat > $out << EOF - #!/bin/sh - - # This is an experiment formed by the following units: - ${unitsString} - EOF - chmod +x $out - ''; -} diff --git a/garlic/stages/launcher/old.nix b/garlic/stages/launcher/old.nix deleted file mode 100644 index 763bdb4..0000000 --- a/garlic/stages/launcher/old.nix +++ /dev/null @@ -1,50 +0,0 @@ -{ - stdenv -, nixPrefix ? "" -}: - -apps: # Each app must be unique - -stdenv.mkDerivation { - name = "launcher"; - preferLocalBuild = true; - - buildInputs = [] ++ apps; - apps = apps; - phases = [ "unpackPhase" "patchPhase" "installPhase" ]; - dontPatchShebangs = true; - programPath = "/bin/run"; - - src = ./.; - - inherit nixPrefix; - - patchPhase = '' - substituteAllInPlace run - ''; - - installPhase = '' - mkdir -p $out/apps - for j in $apps; do - target=$out/apps/$(basename $j) - if [ -e $target ]; then - echo "Duplicated app: $j" - echo - echo "Provided apps: " - printf "%s\n" $apps - echo - exit 1 - fi - ln -s $j $target - done - - mkdir -p $out/bin - install -m755 run $out/bin/run - chmod +x $out/bin/* - - # Mark the launcher for upload - touch $out/.upload-to-mn - # And mark it as an experiment - touch $out/.experiment - ''; -} diff --git a/garlic/stages/launcher/run b/garlic/stages/launcher/run deleted file mode 100644 index 3c98c2c..0000000 --- a/garlic/stages/launcher/run +++ /dev/null @@ -1,20 +0,0 @@ -#!/bin/sh -ex - ->&2 echo "Running launcher" - -if [ ! -e "/nix" ]; then - >&2 echo "missing /nix" - exit 1 -fi - -if [ -z "$GARLIC_OUT" ]; then - >&2 echo "GARLIC_OUT is not set" - exit 1 -fi - -mkdir -p "$GARLIC_OUT" -cd "$GARLIC_OUT" - -for j in @out@/apps/*; do - $j/bin/run -done diff --git a/garlic/stages/trebuchet.nix b/garlic/stages/trebuchet.nix new file mode 100644 index 0000000..85e6b05 --- /dev/null +++ b/garlic/stages/trebuchet.nix @@ -0,0 +1,38 @@ +{ + stdenv +, nixtools +}: + +{ + program +, nixPrefix +, sshHost ? "mn" +, targetCluster ? "mn4" +, stage +}: + +stdenv.mkDerivation { + name = "trebuchet"; + phases = [ "installPhase" ]; + preferLocalBuild = true; + dontPatchShebangs = true; + installPhase = '' + cat > $out <&2 echo "Launching \"\$runexp ${program}\" in MN4" + ssh ${sshHost} \$runexp ${program} + EOF + chmod +x $out + ''; +} diff --git a/garlic/stages/trebuchet/default.nix b/garlic/stages/trebuchet/default.nix deleted file mode 100644 index 6b397c7..0000000 --- a/garlic/stages/trebuchet/default.nix +++ /dev/null @@ -1,69 +0,0 @@ -{ - stdenv -, nixtools -}: - -{ - program -, nixPrefix -, sshHost ? "mn" -, targetCluster ? "mn4" -, experiment ? "" -}: - -with stdenv.lib; - -let - - dStages = foldr (stageFn: {conf, prevStage, stages}: { - conf = conf; - prevStage = stageFn {stage=prevStage; conf=conf;}; - stages = [ (stageFn {stage=prevStage; conf=conf;}) ] ++ stages; - }) - {conf=conf; stages=[]; prevStage=null;} stages; - - stageProgram = stage: - if stage ? programPath - then "${stage}${stage.programPath}" else "${stage}"; - - linkStages = imap1 (i: s: { - num = "${toString i}"; - name = "${toString i}-${baseNameOf s.name}"; - stage = s; - programPath = stageProgram s; - }) dStages.stages; - - units = builtins.concatStringsSep "\n" - (map (x: "# ${x}") experiment.units); - - firstStage = (x: x.programPath) (elemAt linkStages 0); -in - -stdenv.mkDerivation { - name = "trebuchet"; - phases = [ "installPhase" ]; - preferLocalBuild = true; - dontPatchShebangs = true; - installPhase = '' - cat > $out <&2 echo "Launching \"\$runexp ${program}\" in MN4" - ssh ${sshHost} \$runexp ${program} - EOF - chmod +x $out - ''; -} diff --git a/garlic/stages/unit.nix b/garlic/stages/unit.nix index f20a4dd..fd834dd 100644 --- a/garlic/stages/unit.nix +++ b/garlic/stages/unit.nix @@ -30,8 +30,9 @@ let programPath = stageProgram s; }) dStages.stages; - stageList = builtins.concatStringsSep "\n" - (map (x: "# ${x.stage}") linkStages); + desc = builtins.concatStringsSep "\n" + (map (x: "# ${x.stage}") linkStages); + firstStage = (x: x.programPath) (elemAt linkStages 0); in @@ -39,12 +40,12 @@ stdenv.mkDerivation { name = "unit"; preferLocalBuild = true; phases = [ "installPhase" ]; + inherit desc; installPhase = '' cat > $out << EOF #!/bin/sh -e - # This script defines an experimental unit with the following stages: - ${stageList} + ${desc} # Set the experiment unit in the environment export GARLIC_UNIT=$(basename $out) diff --git a/overlay.nix b/overlay.nix index 72de9e2..b329277 100644 --- a/overlay.nix +++ b/overlay.nix @@ -207,10 +207,10 @@ let envRecord = callPackage ./garlic/stages/envRecord.nix { }; valgrind = callPackage ./garlic/stages/valgrind.nix { }; isolate = callPackage ./garlic/stages/isolate { }; - trebuchet = callPackage ./garlic/stages/trebuchet { }; + trebuchet = callPackage ./garlic/stages/trebuchet.nix { }; strace = callPackage ./garlic/stages/strace.nix { }; unit = callPackage ./garlic/stages/unit.nix { }; - experiment= callPackage ./garlic/stages/experiment/default.nix { }; + experiment= callPackage ./garlic/stages/experiment.nix { }; }; # Tests (move to bsc ?) From a576be80313c45e5394b1ca7d5e61bba6c2143d7 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 9 Oct 2020 15:55:37 +0200 Subject: [PATCH 225/987] WIP stage redesign --- garlic/exp/nbody/common.nix | 74 +++++++++++++++++++++++++++ garlic/exp/nbody/test.nix | 75 +++++++++++++++++++++++++++ garlic/exp/stdexp.nix | 84 +++++++++++++++++++++++++++++++ garlic/machines.nix | 17 +++++++ garlic/stages/argv.nix | 30 ----------- garlic/stages/control.nix | 7 ++- garlic/stages/exec.nix | 31 ++++++++++++ garlic/stages/experiment.nix | 5 +- garlic/stages/isolate/default.nix | 11 ++-- garlic/stages/sbatch.nix | 7 ++- garlic/stages/srun.nix | 17 +++++-- garlic/stages/unit.nix | 4 +- garlic/{gen.nix => tools.nix} | 20 ++++++-- overlay.nix | 78 +++++++++++++++++----------- 14 files changed, 378 insertions(+), 82 deletions(-) create mode 100644 garlic/exp/nbody/common.nix create mode 100644 garlic/exp/nbody/test.nix create mode 100644 garlic/exp/stdexp.nix create mode 100644 garlic/machines.nix delete mode 100644 garlic/stages/argv.nix create mode 100644 garlic/stages/exec.nix rename garlic/{gen.nix => tools.nix} (69%) diff --git a/garlic/exp/nbody/common.nix b/garlic/exp/nbody/common.nix new file mode 100644 index 0000000..eb73c09 --- /dev/null +++ b/garlic/exp/nbody/common.nix @@ -0,0 +1,74 @@ +{ + stdenv +, nixpkgs +, pkgs +, stages +, machineConf +}: + +with stdenv.lib; + +let + bsc = pkgs.bsc; + w = runWrappers; +in +{ + /* Returns the path of the executable of a stage */ + stageProgram = stage: + if stage ? programPath + then "${stage}${stage.programPath}" + else "${stage}"; + + /* Takes a list of units and builds an experiment, after executing the + trebuchet and the isolate stages. Returns the trebuchet stage. */ + buildExperiment = {units, conf, ...}: stage.trebuchet { + inherit (machineConf) nixPrefix; + nextStage = stage.isolate { + inherit (machineConf) nixPrefix; + nextStage = stage.experiment { + inherit units; + } + } + }; + + sbatch = {nextStage, conf, ...}: with conf; w.sbatch ( + # Allow a user to define a custom reservation for the job in MareNostrum4, + # by setting the garlic.sbatch.reservation attribute in the + # ~/.config/nixpkgs/config.nix file. If the attribute is not set, no + # reservation is used. The user reservation may be overwritten by the + # experiment, if the reservation is set like with nodes or ntasksPerNode. + optionalAttrs (pkgs.config ? garlic.sbatch.reservation) { + inherit (pkgs.config.garlic.sbatch) reservation; + } // { + exclusive = true; + time = "02:00:00"; + qos = "debug"; + jobName = "nbody-tampi"; + inherit nextStage nixPrefix nodes ntasksPerNode; + } + ); + + control = {nextStage, conf, ...}: stages.control { + inherit (conf) loops; + inherit nextStage; + }; + + srun = {nextStage, conf, ...}: stages.srun { + inherit (conf) nixPrefix cpuBind; + inherit nextStage; + }; + + isolate = {nextStage, conf, ...}: stages.isolate { + clusterName = machineConf.name; + inherit (conf) nixPrefix; + inherit nextStage; + }; + + stdStages = [ + sbatch + isolate + control + srun + isolate + ]; +} diff --git a/garlic/exp/nbody/test.nix b/garlic/exp/nbody/test.nix new file mode 100644 index 0000000..e5e72ed --- /dev/null +++ b/garlic/exp/nbody/test.nix @@ -0,0 +1,75 @@ +{ + stdenv +, stdexp +, pkgs +, targetMachine +, stages +}: + +with stdenv.lib; + +let + bsc = pkgs.bsc; + + # Configurations for each unit (using the cartesian product) + confUnit = with bsc; { + blocksize = [ 1024 2048 ]; + }; + + # Configuration for the complete experiment + confExperiment = with bsc; { + # nbody options + particles = 1024 * 4; + timesteps = 10; + cc = icc; + mpi = impi; + gitBranch = "garlic/mpi+send"; + + # Repeat the execution of each unit 30 times + loops = 30; + + # Resources + ntasksPerNode = 2; + nodes = 1; + cpuBind = "sockets,verbose"; + }; + + confMachine = targetMachine.config; + + # Compute the array of configurations + configs = stdexp.buildConfigs { + var = confUnit; + fixed = confMachine // confExperiment; + }; + + exec = {nextStage, conf, ...}: with conf; stages.exec { + inherit nextStage; + argv = [ "-t" timesteps "-p" particles ]; + env = ""; + }; + + # We may be able to use overlays by invoking the fix function directly, but we + # have to get the definition of the bsc packages and the garlic ones as + # overlays. + program = {nextStage, conf, ...}: with conf; + let + # We set the mpi implementation to the one specified in the conf, so all + # packages in bsc will use that one. + customPkgs = stdexp.genPkgs (self: super: { + bsc = super.bsc // { mpi = conf.mpi; }; + }); + in + customPkgs.garlic.nbody.override { + inherit cc blocksize mpi gitBranch; + }; + + # Generate the experimental units + units = map (c: stages.unit { + conf = c; + stages = stdexp.stdStages ++ [ exec program ]; + }) configs; + +in + + elemAt units 0 + #buildExperiment units diff --git a/garlic/exp/stdexp.nix b/garlic/exp/stdexp.nix new file mode 100644 index 0000000..ef2b05a --- /dev/null +++ b/garlic/exp/stdexp.nix @@ -0,0 +1,84 @@ +{ + stdenv +, config +, stages +, targetMachine +, garlicTools +}: + +with stdenv.lib; +with garlicTools; + +let + machineConf = targetMachine.config; +in +rec { + /* Takes a list of units and builds an experiment, after executing the + trebuchet and the isolate stages. Returns the trebuchet stage. */ + buildExperiment = {units, conf, ...}: stage.trebuchet { + inherit (machineConf) nixPrefix; + nextStage = stage.isolate { + inherit (machineConf) nixPrefix; + nextStage = stage.experiment { + inherit units; + }; + }; + }; + + /* Given an attrset of lists `var` and an attrset `fixed`, computes the + cartesian product of all combinations of `var` and prepends `fixed` + to each. */ + buildConfigs = {fixed, var}: + map (c: fixed // c) (genConfigs var); + + sbatch = {nextStage, conf, ...}: with conf; stages.sbatch ( + # Allow a user to define a custom reservation for the job in MareNostrum4, + # by setting the garlic.sbatch.reservation attribute in the + # ~/.config/nixpkgs/config.nix file. If the attribute is not set, no + # reservation is used. The user reservation may be overwritten by the + # experiment, if the reservation is set like with nodes or ntasksPerNode. + optionalAttrs (config ? garlic.sbatch.reservation) { + inherit (config.garlic.sbatch) reservation; + } // { + exclusive = true; + time = "02:00:00"; + qos = "debug"; + jobName = "nbody-tampi"; + inherit nextStage nixPrefix nodes ntasksPerNode; + } + ); + + control = {nextStage, conf, ...}: stages.control { + inherit (conf) loops; + inherit nextStage; + }; + + srun = {nextStage, conf, ...}: stages.srun { + inherit (conf) nixPrefix cpuBind; + inherit nextStage; + }; + + isolate = {nextStage, conf, ...}: stages.isolate { + clusterName = machineConf.name; + inherit (conf) nixPrefix; + inherit nextStage; + }; + + stdStages = [ + sbatch + isolate + control + srun + isolate + ]; + + # FIXME: Remove this hack and allow custom nixpkgs + bscOverlay = import ../../overlay.nix; + nixpkgs = import ; + genPkgs = newOverlay: nixpkgs { + overlays = [ + bscOverlay + newOverlay + ]; + }; +} diff --git a/garlic/machines.nix b/garlic/machines.nix new file mode 100644 index 0000000..197f49d --- /dev/null +++ b/garlic/machines.nix @@ -0,0 +1,17 @@ +{ + stdenv +}: + +{ + # MareNostrum 4 configuration + mn4 = { + config = { + name = "mn4"; + nixPrefix = "/gpfs/projects/bsc15/nix"; + cachelineBytes = 64; + march = "skylake-avx512"; + mtune = "skylake-avx512"; + }; + # TODO: Add the specific details for SLURM and the interconection here + }; +} diff --git a/garlic/stages/argv.nix b/garlic/stages/argv.nix deleted file mode 100644 index e879851..0000000 --- a/garlic/stages/argv.nix +++ /dev/null @@ -1,30 +0,0 @@ -{ - stdenv -, bash -}: - -{ - program -, env ? "" - -# bash array as string, example: argv=''(-f "file with spaces" -t 10)'' -, argv ? "()" -}: - -stdenv.mkDerivation { - name = "argv"; - preferLocalBuild = true; - phases = [ "installPhase" ]; - installPhase = '' - cat > $out < $out < $out < $out/${name} < $out <; +{ + stdenv +}: +with stdenv.lib; + +let gen = rec { # genAttrSets "a" ["hello" "world"] # [ { a = "hello"; } { a = "world"; } ] @@ -16,18 +20,24 @@ let # mergeConfig [{e=1;}] {name="a"; value=[1 2] # [ { a = 1; e = 1; } { a = 2; e = 1; } ] - mergeConfig = (arr: new: lib.flatten ( map (x: addAttrSets new.name new.value x) arr)); + mergeConfig = (arr: new: flatten ( map (x: addAttrSets new.name new.value x) arr)); # genConfigs {a=[1 2]; b=[3 4];} # [ { a = 1; b = 3; } { a = 1; b = 4; } { a = 2; b = 3; } { a = 2; b = 4; } ] - genConfigs = (config: lib.foldl mergeConfig [{}] (attrToList config)); + genConfigs = (config: foldl mergeConfig [{}] (attrToList config)); # Generate multiple app versions by override with each config genApp = (app: configs: map (conf: app.override conf // {conf=conf;}) configs); # Generate app version from an array of apps genApps = (apps: configs: - lib.flatten (map (app: genApp app configs) apps)); + flatten (map (app: genApp app configs) apps)); + + /* Returns the path of the executable of a stage */ + stageProgram = stage: + if stage ? programPath + then "${stage}${stage.programPath}" + else "${stage}"; }; in diff --git a/overlay.nix b/overlay.nix index b329277..fbba8e3 100644 --- a/overlay.nix +++ b/overlay.nix @@ -140,13 +140,20 @@ let nixPrefix = "/gpfs/projects/bsc15/nix"; }; + garlicTools = callPackage ./garlic/tools.nix {}; + garlic = { + # Configuration for the machines + machines = callPackage ./garlic/machines.nix {}; + + # Use the configuration for the following target machine + targetMachine = self.garlic.machines.mn4; # Load some helper functions to generate app variants - inherit (import ./garlic/gen.nix) genApps genApp genConfigs; - # Override the hardening flags and parallel build by default (TODO) - #mkDerivation = callPackage ./garlic/mkDerivation.nix { }; + stdexp = callPackage ./garlic/exp/stdexp.nix { + inherit (self.garlic) targetMachine stages; + }; # Apps for Garlic # heat = callPackage ./garlic/heat { @@ -187,30 +194,30 @@ let gitBranch = "garlic/seq"; }; - saiph = callPackage ./garlic/saiph { + saiph = callPackage ./garlic/saiph/default.nix { cc = self.bsc.clangOmpss2; }; - # Execution wrappers - runWrappers = { - sbatch = callPackage ./garlic/stages/sbatch.nix { }; - srun = callPackage ./garlic/stages/srun.nix { }; - launch = callPackage ./garlic/stages/launcher { }; - control = callPackage ./garlic/stages/control.nix { }; - nixsetup = callPackage ./garlic/stages/nix-setup.nix { }; - argv = callPackage ./garlic/stages/argv.nix { }; - statspy = callPackage ./garlic/stages/statspy.nix { }; - extrae = callPackage ./garlic/stages/extrae.nix { }; - stagen = callPackage ./garlic/stages/stagen.nix { }; - perf = callPackage ./garlic/stages/perf.nix { }; - broom = callPackage ./garlic/stages/broom.nix { }; - envRecord = callPackage ./garlic/stages/envRecord.nix { }; - valgrind = callPackage ./garlic/stages/valgrind.nix { }; - isolate = callPackage ./garlic/stages/isolate { }; - trebuchet = callPackage ./garlic/stages/trebuchet.nix { }; - strace = callPackage ./garlic/stages/strace.nix { }; - unit = callPackage ./garlic/stages/unit.nix { }; - experiment= callPackage ./garlic/stages/experiment.nix { }; + # Execution stages + stages = { + sbatch = callPackage ./garlic/stages/sbatch.nix { }; + srun = callPackage ./garlic/stages/srun.nix { }; + launch = callPackage ./garlic/stages/launcher { }; + control = callPackage ./garlic/stages/control.nix { }; + nixsetup = callPackage ./garlic/stages/nix-setup.nix { }; + exec = callPackage ./garlic/stages/exec.nix { }; + statspy = callPackage ./garlic/stages/statspy.nix { }; + extrae = callPackage ./garlic/stages/extrae.nix { }; + stagen = callPackage ./garlic/stages/stagen.nix { }; + perf = callPackage ./garlic/stages/perf.nix { }; + broom = callPackage ./garlic/stages/broom.nix { }; + envRecord = callPackage ./garlic/stages/envRecord.nix { }; + valgrind = callPackage ./garlic/stages/valgrind.nix { }; + isolate = callPackage ./garlic/stages/isolate { }; + trebuchet = callPackage ./garlic/stages/trebuchet.nix { }; + strace = callPackage ./garlic/stages/strace.nix { }; + unit = callPackage ./garlic/stages/unit.nix { }; + experiment = callPackage ./garlic/stages/experiment.nix { }; }; # Tests (move to bsc ?) @@ -231,7 +238,7 @@ let nixpkgs = import ; genApp = self.bsc.garlic.genApp; genConfigs = self.bsc.garlic.genConfigs; - runWrappers = self.bsc.garlic.runWrappers; + stages = self.bsc.garlic.stages; }; tampi = callPackage ./garlic/exp/nbody/tampi.nix { @@ -239,7 +246,12 @@ let nixpkgs = import ; genApp = self.bsc.garlic.genApp; genConfigs = self.bsc.garlic.genConfigs; - runWrappers = self.bsc.garlic.runWrappers; + stages = self.bsc.garlic.stages; + }; + + test = callPackage ./garlic/exp/nbody/test.nix { + pkgs = self // self.bsc.garlic; + inherit (self.garlic) stdexp targetMachine stages; }; # mpi = callPackage ./bsc/garlic/exp/nbody/mpi.nix { }; }; @@ -250,7 +262,7 @@ let nixpkgs = import ; genApp = self.bsc.garlic.genApp; genConfigs = self.bsc.garlic.genConfigs; - runWrappers = self.bsc.garlic.runWrappers; + stages = self.bsc.garlic.stages; }; }; @@ -261,14 +273,14 @@ let nixpkgs = import ; genApp = self.bsc.garlic.genApp; genConfigs = self.bsc.garlic.genConfigs; - runWrappers = self.bsc.garlic.runWrappers; + stages = self.bsc.garlic.stages; }; hybrid = callPackage ./garlic/exp/creams/ss+hybrid.nix { pkgs = self // self.bsc.garlic; nixpkgs = import ; genApp = self.bsc.garlic.genApp; genConfigs = self.bsc.garlic.genConfigs; - runWrappers = self.bsc.garlic.runWrappers; + stages = self.bsc.garlic.stages; }; }; }; @@ -287,12 +299,18 @@ let nixpkgs = import ; genApp = self.bsc.garlic.genApp; genConfigs = self.bsc.garlic.genConfigs; - runWrappers = self.bsc.garlic.runWrappers; + stages = self.bsc.garlic.stages; }; # mpi = callPackage ./bsc/garlic/exp/nbody/mpi.nix { }; }; }; }; + + test = { + exec = callPackage ./test/garlic/exec.nix { + exec = self.bsc.garlic.stages.exec; + }; + }; }; in From 332b738889cafd0f80abe93efc0f3055042693ac Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 9 Oct 2020 16:13:16 +0200 Subject: [PATCH 226/987] Move apps into garlic/apps --- garlic/{ => apps}/cpic/default.nix | 0 garlic/{ => apps}/creams/default.nix | 0 garlic/{ => apps}/creams/input.nix | 0 garlic/{ => apps}/fwi/default.nix | 0 garlic/{ => apps}/heat/default.nix | 0 garlic/{ => apps}/hpccg/default.nix | 0 garlic/{ => apps}/hpcg/default.nix | 0 garlic/{ => apps}/hpcg/tampi.patch | 0 garlic/{ => apps}/lulesh/default.nix | 0 garlic/{ => apps}/nbody/default.nix | 0 garlic/{ => apps}/ppong/default.nix | 0 garlic/{ => apps}/saiph/default.nix | 0 garlic/exp/nbody/test.nix | 5 +- garlic/machines.nix | 1 + garlic/mkDerivation.nix | 19 ------- garlic/nbody/argv.nix | 29 ---------- garlic/stages/experiment.nix | 4 +- garlic/stages/isolate/default.nix | 2 +- garlic/stages/trebuchet.nix | 11 ++-- garlic/{exp => }/stdexp.nix | 8 +-- overlay.nix | 80 +++++++++++++++------------- 21 files changed, 60 insertions(+), 99 deletions(-) rename garlic/{ => apps}/cpic/default.nix (100%) rename garlic/{ => apps}/creams/default.nix (100%) rename garlic/{ => apps}/creams/input.nix (100%) rename garlic/{ => apps}/fwi/default.nix (100%) rename garlic/{ => apps}/heat/default.nix (100%) rename garlic/{ => apps}/hpccg/default.nix (100%) rename garlic/{ => apps}/hpcg/default.nix (100%) rename garlic/{ => apps}/hpcg/tampi.patch (100%) rename garlic/{ => apps}/lulesh/default.nix (100%) rename garlic/{ => apps}/nbody/default.nix (100%) rename garlic/{ => apps}/ppong/default.nix (100%) rename garlic/{ => apps}/saiph/default.nix (100%) delete mode 100644 garlic/mkDerivation.nix delete mode 100644 garlic/nbody/argv.nix rename garlic/{exp => }/stdexp.nix (92%) diff --git a/garlic/cpic/default.nix b/garlic/apps/cpic/default.nix similarity index 100% rename from garlic/cpic/default.nix rename to garlic/apps/cpic/default.nix diff --git a/garlic/creams/default.nix b/garlic/apps/creams/default.nix similarity index 100% rename from garlic/creams/default.nix rename to garlic/apps/creams/default.nix diff --git a/garlic/creams/input.nix b/garlic/apps/creams/input.nix similarity index 100% rename from garlic/creams/input.nix rename to garlic/apps/creams/input.nix diff --git a/garlic/fwi/default.nix b/garlic/apps/fwi/default.nix similarity index 100% rename from garlic/fwi/default.nix rename to garlic/apps/fwi/default.nix diff --git a/garlic/heat/default.nix b/garlic/apps/heat/default.nix similarity index 100% rename from garlic/heat/default.nix rename to garlic/apps/heat/default.nix diff --git a/garlic/hpccg/default.nix b/garlic/apps/hpccg/default.nix similarity index 100% rename from garlic/hpccg/default.nix rename to garlic/apps/hpccg/default.nix diff --git a/garlic/hpcg/default.nix b/garlic/apps/hpcg/default.nix similarity index 100% rename from garlic/hpcg/default.nix rename to garlic/apps/hpcg/default.nix diff --git a/garlic/hpcg/tampi.patch b/garlic/apps/hpcg/tampi.patch similarity index 100% rename from garlic/hpcg/tampi.patch rename to garlic/apps/hpcg/tampi.patch diff --git a/garlic/lulesh/default.nix b/garlic/apps/lulesh/default.nix similarity index 100% rename from garlic/lulesh/default.nix rename to garlic/apps/lulesh/default.nix diff --git a/garlic/nbody/default.nix b/garlic/apps/nbody/default.nix similarity index 100% rename from garlic/nbody/default.nix rename to garlic/apps/nbody/default.nix diff --git a/garlic/ppong/default.nix b/garlic/apps/ppong/default.nix similarity index 100% rename from garlic/ppong/default.nix rename to garlic/apps/ppong/default.nix diff --git a/garlic/saiph/default.nix b/garlic/apps/saiph/default.nix similarity index 100% rename from garlic/saiph/default.nix rename to garlic/apps/saiph/default.nix diff --git a/garlic/exp/nbody/test.nix b/garlic/exp/nbody/test.nix index e5e72ed..c280c07 100644 --- a/garlic/exp/nbody/test.nix +++ b/garlic/exp/nbody/test.nix @@ -59,7 +59,7 @@ let bsc = super.bsc // { mpi = conf.mpi; }; }); in - customPkgs.garlic.nbody.override { + customPkgs.apps.nbody.override { inherit cc blocksize mpi gitBranch; }; @@ -71,5 +71,4 @@ let in - elemAt units 0 - #buildExperiment units + stdexp.buildExperiment units diff --git a/garlic/machines.nix b/garlic/machines.nix index 197f49d..77df966 100644 --- a/garlic/machines.nix +++ b/garlic/machines.nix @@ -7,6 +7,7 @@ mn4 = { config = { name = "mn4"; + sshHosts = [ "mn1" "mn2" "mn3" ]; nixPrefix = "/gpfs/projects/bsc15/nix"; cachelineBytes = 64; march = "skylake-avx512"; diff --git a/garlic/mkDerivation.nix b/garlic/mkDerivation.nix deleted file mode 100644 index 31b3e02..0000000 --- a/garlic/mkDerivation.nix +++ /dev/null @@ -1,19 +0,0 @@ -{ lib }: - -let inherit (lib) optional; in - -mkDerivation: - -args: - -let - args_ = { - - enableParallelBuilding = args.enableParallelBuilding or true; - - hardeningDisable = [ "all" ]; - - }; -in - -mkDerivation (args // args_) diff --git a/garlic/nbody/argv.nix b/garlic/nbody/argv.nix deleted file mode 100644 index c4528c6..0000000 --- a/garlic/nbody/argv.nix +++ /dev/null @@ -1,29 +0,0 @@ -{ - stdenv -, particles -, timestamps -, program -, config -}: - -stdenv.mkDerivation { - inherit program; - - passthru = { - inherit config; - }; - - name = "${program.name}-argv"; - preferLocalBuild = true; - phases = [ "installPhase" ]; - dontPatchShebangs = true; - installPhase = '' - mkdir -p $out/bin - cat > $out/bin/run <; genPkgs = newOverlay: nixpkgs { overlays = [ diff --git a/overlay.nix b/overlay.nix index fbba8e3..8aa7249 100644 --- a/overlay.nix +++ b/overlay.nix @@ -143,6 +143,8 @@ let garlicTools = callPackage ./garlic/tools.nix {}; garlic = { + # TODO: move into garlic/default.nix + # Configuration for the machines machines = callPackage ./garlic/machines.nix {}; @@ -151,51 +153,54 @@ let # Load some helper functions to generate app variants - stdexp = callPackage ./garlic/exp/stdexp.nix { + stdexp = callPackage ./garlic/stdexp.nix { inherit (self.garlic) targetMachine stages; }; # Apps for Garlic -# heat = callPackage ./garlic/heat { -# stdenv = pkgs.gcc7Stdenv; -# mpi = intel-mpi; -# tampi = tampi; -# }; -# - creams = callPackage ./garlic/creams { - gnuDef = self.gfortran10 ; # Default GNU compiler version - intelDef = self.bsc.icc ; # Default Intel compiler version - gitBranch = "garlic/mpi+send+seq"; + apps = { + creams = callPackage ./garlic/apps/creams/default.nix { + gnuDef = self.gfortran10 ; # Default GNU compiler version + intelDef = self.bsc.icc ; # Default Intel compiler version - cc = self.bsc.icc; # self.bsc.icc OR self.gfortran10; - mpi = self.bsc.mpi; # self.bsc.mpi OR self.bsc.openmpi-mn4; - }; + gitBranch = "garlic/mpi+send+seq"; - creamsInput = callPackage ./garlic/creams/input.nix { - gitBranch = "garlic/mpi+send+seq"; - }; + cc = self.bsc.icc; # self.bsc.icc OR self.gfortran10; + mpi = self.bsc.mpi; # self.bsc.mpi OR self.bsc.openmpi-mn4; + }; -# lulesh = callPackage ./garlic/lulesh { -# mpi = intel-mpi; -# }; -# -# hpcg = callPackage ./garlic/hpcg { }; -# -# hpccg = callPackage ./garlic/hpccg { }; -# -# fwi = callPackage ./garlic/fwi { }; + creamsInput = callPackage ./garlic/apps/creams/input.nix { + gitBranch = "garlic/mpi+send+seq"; + }; - nbody = callPackage ./garlic/nbody { - cc = self.bsc.icc; - mpi = self.bsc.mpi; - tampi = self.bsc.tampi; - mcxx = self.bsc.mcxx; - gitBranch = "garlic/seq"; - }; + nbody = callPackage ./garlic/apps/nbody/default.nix { + cc = self.bsc.icc; + mpi = self.bsc.mpi; + tampi = self.bsc.tampi; + mcxx = self.bsc.mcxx; + gitBranch = "garlic/seq"; + }; - saiph = callPackage ./garlic/saiph/default.nix { - cc = self.bsc.clangOmpss2; + saiph = callPackage ./garlic/apps/saiph/default.nix { + cc = self.bsc.clangOmpss2; + }; + +# heat = callPackage ./garlic/apps/heat { +# stdenv = pkgs.gcc7Stdenv; +# mpi = intel-mpi; +# tampi = tampi; +# }; +# +# lulesh = callPackage ./garlic/apps/lulesh { +# mpi = intel-mpi; +# }; +# +# hpcg = callPackage ./garlic/apps/hpcg { }; +# +# hpccg = callPackage ./garlic/apps/hpccg { }; +# +# fwi = callPackage ./garlic/apps/fwi { }; }; # Execution stages @@ -317,9 +322,8 @@ in { bsc = bsc; - # Alias + # Aliases garlic = bsc.garlic; - - # Alias exp = bsc.garlic.exp; + apps = bsc.garlic.apps; } From e6e42dcec9ec4786b131ad498f328df426b94567 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 9 Oct 2020 16:15:11 +0200 Subject: [PATCH 227/987] Remove old apps --- bsc/apps/dummy/default.nix | 18 ------------------ bsc/apps/nbody/default.nix | 37 ------------------------------------- 2 files changed, 55 deletions(-) delete mode 100644 bsc/apps/dummy/default.nix delete mode 100644 bsc/apps/nbody/default.nix diff --git a/bsc/apps/dummy/default.nix b/bsc/apps/dummy/default.nix deleted file mode 100644 index 79fb138..0000000 --- a/bsc/apps/dummy/default.nix +++ /dev/null @@ -1,18 +0,0 @@ -{ - stdenv -, branch ? null -, srcPath ? null -}: - -#assert if srcPath == null then branch != null else true; - -stdenv.mkDerivation rec { - name = "dummy"; - - src = (if srcPath != null then srcPath else - builtins.fetchGit { - url = "ssh://git@bscpm02.bsc.es/rarias/dummy.git"; - ref = "${branch}"; - } - ); -} diff --git a/bsc/apps/nbody/default.nix b/bsc/apps/nbody/default.nix deleted file mode 100644 index 06d823b..0000000 --- a/bsc/apps/nbody/default.nix +++ /dev/null @@ -1,37 +0,0 @@ -{ - stdenv -, nanos6 -, mpi -, tampi -, mcxx -, icc -}: - -stdenv.mkDerivation rec { - name = "nbody"; - - src = builtins.fetchGit { - url = "ssh://git@bscpm02.bsc.es/benchmarks/ompss-2/nbody-conflict-kevin.git"; - #rev = "a8372abf9fc7cbc2db0778de80512ad4af244c29"; - ref = "master"; - }; - - patchPhase = '' - sed -i 's/gcc/icc/g' Makefile - #export NIX_DEBUG=6 - ''; - - buildInputs = [ - nanos6 - mpi - icc - tampi - mcxx - ]; - - installPhase = '' - mkdir -p $out/bin - cp nbody_* $out/bin/ - ''; - -} From 9d2ce2a1c24035ab2dcf09ecccee6e70698fe316 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 9 Oct 2020 16:32:28 +0200 Subject: [PATCH 228/987] Remove old experiments --- garlic/exp/nbody/bs.nix | 178 ----------------------------- garlic/exp/nbody/common.nix | 74 ------------ garlic/exp/nbody/mpi.nix | 88 --------------- garlic/exp/nbody/tampi.nix | 218 ------------------------------------ garlic/exp/nbody/test.nix | 4 +- overlay.nix | 49 +------- 6 files changed, 6 insertions(+), 605 deletions(-) delete mode 100644 garlic/exp/nbody/bs.nix delete mode 100644 garlic/exp/nbody/common.nix delete mode 100644 garlic/exp/nbody/mpi.nix delete mode 100644 garlic/exp/nbody/tampi.nix diff --git a/garlic/exp/nbody/bs.nix b/garlic/exp/nbody/bs.nix deleted file mode 100644 index 0505950..0000000 --- a/garlic/exp/nbody/bs.nix +++ /dev/null @@ -1,178 +0,0 @@ -{ - stdenv -, nixpkgs -, pkgs -, genApp -, genConfigs -, runWrappers -}: - -with stdenv.lib; - -let - # Set variable configuration for the experiment - varConfig = { - cc = [ pkgs.bsc.icc ]; - blocksize = [ 1024 ]; - }; - - # Common configuration - common = { - # Compile time nbody config - gitBranch = "garlic/mpi+send"; - mpi = pkgs.bsc.impi; - - # nbody runtime options - particles = 1024*64; - timesteps = 10; - - # Resources - ntasksPerNode = "48"; - nodes = "1"; - - # Stage configuration - enableSbatch = true; - enableControl = true; - enableExtrae = false; - enablePerf = false; - - # MN4 path - nixPrefix = "/gpfs/projects/bsc15/nix"; - }; - - # Compute the cartesian product of all configurations - configs = map (conf: conf // common) (genConfigs varConfig); - - stageProgram = stage: - if stage ? programPath - then "${stage}${stage.programPath}" else "${stage}"; - - w = runWrappers; - - sbatch = {stage, conf, ...}: with conf; w.sbatch { - program = stageProgram stage; - exclusive = true; - time = "02:00:00"; - qos = "debug"; - jobName = "nbody-bs"; - inherit nixPrefix nodes ntasksPerNode; - }; - - control = {stage, conf, ...}: with conf; w.control { - program = stageProgram stage; - }; - - srun = {stage, conf, ...}: with conf; w.srun { - program = stageProgram stage; - srunOptions = "--cpu-bind=verbose,rank"; - inherit nixPrefix; - }; - - statspy = {stage, conf, ...}: with conf; w.statspy { - program = stageProgram stage; - }; - - perf = {stage, conf, ...}: with conf; w.perf { - program = stageProgram stage; - perfArgs = "sched record -a"; - }; - - nixsetup = {stage, conf, ...}: with conf; w.nixsetup { - program = stageProgram stage; - nixsetup = "${nixPrefix}/bin/nix-setup"; - }; - - extrae = {stage, conf, ...}: - let - # We set the mpi implementation to the one specified in the conf, so all - # packages in bsc will use that one. - customPkgs = genPkgs (self: super: { - bsc = super.bsc // { mpi = conf.mpi; }; - }); - - extrae = customPkgs.bsc.extrae; - in - w.extrae { - program = stageProgram stage; - extrae = extrae; - traceLib = "mpi"; # mpi -> libtracempi.so - configFile = ./extrae.xml; - }; - - argv = {stage, conf, ...}: w.argv { - program = stageProgram stage; - env = '' - set -e - export I_MPI_THREAD_SPLIT=1 - ''; - argv = ''( -t ${toString conf.timesteps} - -p ${toString conf.particles} )''; - }; - - bscOverlay = import ../../../overlay.nix; - - genPkgs = newOverlay: nixpkgs { - overlays = [ - bscOverlay - newOverlay - ]; - }; - - # Print the environment to ensure we don't get anything nasty - envRecord = {stage, conf, ...}: w.envRecord { - program = stageProgram stage; - }; - - broom = {stage, conf, ...}: w.broom { - program = stageProgram stage; - }; - # We may be able to use overlays by invoking the fix function directly, but we - # have to get the definition of the bsc packages and the garlic ones as - # overlays. - - nbodyFn = {stage, conf, ...}: with conf; - let - # We set the mpi implementation to the one specified in the conf, so all - # packages in bsc will use that one. - customPkgs = genPkgs (self: super: { - bsc = super.bsc // { mpi = conf.mpi; }; - }); - in - customPkgs.bsc.garlic.nbody.override { - inherit cc blocksize mpi gitBranch; - }; - - stages = with common; [] - # Cleans ALL environment variables - ++ [ broom ] - - # Use sbatch to request resources first - ++ optionals enableSbatch [ sbatch nixsetup ] - - # Record the current env vars set by SLURM to verify we don't have something - # nasty (like sourcing .bashrc). Take a look at #26 - ++ [ envRecord ] - - # Repeats the next stages N=30 times - ++ optional enableControl control - - # Executes srun to launch the program in the requested nodes, and - # immediately after enters the nix environment again, as slurmstepd launches - # the next stages from outside the namespace. - ++ [ srun nixsetup ] - - # Intrumentation with extrae - ++ optional enableExtrae extrae - - # Optionally profile the next stages with perf - ++ optional enablePerf perf - - # Execute the nbody app with the argv and env vars - ++ [ argv nbodyFn ]; - - # List of actual programs to be executed - jobs = map (conf: w.stagen { inherit conf stages; }) configs; - -in - # We simply run each program one after another - w.launch jobs diff --git a/garlic/exp/nbody/common.nix b/garlic/exp/nbody/common.nix deleted file mode 100644 index eb73c09..0000000 --- a/garlic/exp/nbody/common.nix +++ /dev/null @@ -1,74 +0,0 @@ -{ - stdenv -, nixpkgs -, pkgs -, stages -, machineConf -}: - -with stdenv.lib; - -let - bsc = pkgs.bsc; - w = runWrappers; -in -{ - /* Returns the path of the executable of a stage */ - stageProgram = stage: - if stage ? programPath - then "${stage}${stage.programPath}" - else "${stage}"; - - /* Takes a list of units and builds an experiment, after executing the - trebuchet and the isolate stages. Returns the trebuchet stage. */ - buildExperiment = {units, conf, ...}: stage.trebuchet { - inherit (machineConf) nixPrefix; - nextStage = stage.isolate { - inherit (machineConf) nixPrefix; - nextStage = stage.experiment { - inherit units; - } - } - }; - - sbatch = {nextStage, conf, ...}: with conf; w.sbatch ( - # Allow a user to define a custom reservation for the job in MareNostrum4, - # by setting the garlic.sbatch.reservation attribute in the - # ~/.config/nixpkgs/config.nix file. If the attribute is not set, no - # reservation is used. The user reservation may be overwritten by the - # experiment, if the reservation is set like with nodes or ntasksPerNode. - optionalAttrs (pkgs.config ? garlic.sbatch.reservation) { - inherit (pkgs.config.garlic.sbatch) reservation; - } // { - exclusive = true; - time = "02:00:00"; - qos = "debug"; - jobName = "nbody-tampi"; - inherit nextStage nixPrefix nodes ntasksPerNode; - } - ); - - control = {nextStage, conf, ...}: stages.control { - inherit (conf) loops; - inherit nextStage; - }; - - srun = {nextStage, conf, ...}: stages.srun { - inherit (conf) nixPrefix cpuBind; - inherit nextStage; - }; - - isolate = {nextStage, conf, ...}: stages.isolate { - clusterName = machineConf.name; - inherit (conf) nixPrefix; - inherit nextStage; - }; - - stdStages = [ - sbatch - isolate - control - srun - isolate - ]; -} diff --git a/garlic/exp/nbody/mpi.nix b/garlic/exp/nbody/mpi.nix deleted file mode 100644 index a618f85..0000000 --- a/garlic/exp/nbody/mpi.nix +++ /dev/null @@ -1,88 +0,0 @@ -{ - bsc -, nbody -, genApp -, genConfigs - -# Wrappers -, launchWrapper -, sbatchWrapper -, srunWrapper -, argvWrapper -, controlWrapper -, nixsetupWrapper -}: - -let - # Set the configuration for the experiment - config = { - cc = [ bsc.icc ]; - blocksize = [ 2048 ]; - mpi = [ bsc.impi bsc.openmpi bsc.mpich ]; - }; - - extraConfig = { - particles = 32*1024; - timesteps = 10; - ntasksPerNode = 2; - nodes = 1; - time = "00:10:00"; - qos = "debug"; - #mpi = bsc.impi; - #mpi = bsc.openmpi; - gitBranch = "garlic/mpi+send"; - gitURL = "ssh://git@bscpm02.bsc.es/garlic/apps/nbody.git"; - }; - - # Compute the cartesian product of all configurations - configs = map (conf: conf // extraConfig) (genConfigs config); - - sbatch = conf: app: sbatchWrapper { - app = app; - nixPrefix = "/gpfs/projects/bsc15/nix"; - exclusive = false; - ntasksPerNode = "${toString conf.ntasksPerNode}"; - nodes = "${toString conf.nodes}"; - time = conf.time; - qos = conf.qos; - chdirPrefix = "/home/bsc15/bsc15557/bsc-nixpkgs/out"; - }; - - srun = app: srunWrapper { - app = app; - nixPrefix = "/gpfs/projects/bsc15/nix"; - }; - - argv = conf: app: - with conf; - argvWrapper { - app = app; - argv = ''(-t ${toString timesteps} -p ${toString particles})''; - env = '' - export I_MPI_THREAD_SPLIT=1 - ''; - }; - - nbodyFn = conf: - with conf; - nbody.override { inherit cc mpi blocksize gitBranch gitURL; }; - - pipeline = conf: - sbatch conf ( - srun ( - nixsetupWrapper ( - argv conf ( - nbodyFn conf - ) - ) - ) - ) - ; - - # Ideally it should look like this: - #pipeline = sbatch nixsetup control argv nbodyFn; - - jobs = map pipeline configs; - -in - launchWrapper jobs diff --git a/garlic/exp/nbody/tampi.nix b/garlic/exp/nbody/tampi.nix deleted file mode 100644 index 90bdcca..0000000 --- a/garlic/exp/nbody/tampi.nix +++ /dev/null @@ -1,218 +0,0 @@ -{ - stdenv -, nixpkgs -, pkgs -, genApp -, genConfigs -, runWrappers -}: - -with stdenv.lib; - -let - bsc = pkgs.bsc; - - # Set variable configuration for the experiment - varConfig = { - cc = [ bsc.icc ]; - mpi = [ bsc.impi ]; - #mpi = [ bsc.mpichDebug ]; - blocksize = [ 1024 2048 ]; - }; - - # Common configuration - common = { - # Compile time nbody config - gitBranch = "garlic/mpi+send"; - #gitBranch = "garlic/tampi+send+oss+task"; - - # nbody runtime options - particles = 1024*4; - timesteps = 10; - - # Resources - ntasksPerNode = "2"; - nodes = "1"; - - # Stage configuration - enableTrebuchet = true; - enableSbatch = true; - enableControl = true; - enableExtrae = false; - enablePerf = false; - enableCtf = false; - enableStrace = true; - - # MN4 path - nixPrefix = "/gpfs/projects/bsc15/nix"; - }; - - # Compute the cartesian product of all configurations - configs = map (conf: conf // common) (genConfigs varConfig); - - stageProgram = stage: - if stage ? programPath - then "${stage}${stage.programPath}" else "${stage}"; - - w = runWrappers; - - sbatch = {stage, conf, ...}: with conf; w.sbatch ( - # Allow a user to define a custom reservation for the job in MareNostrum4, - # by setting the garlic.sbatch.reservation attribute in the - # ~/.config/nixpkgs/config.nix file. If the attribute is not set, no - # reservation is used. The user reservation may be overwritten by the - # experiment, if the reservation is set like with nodes or ntasksPerNode. - optionalAttrs (pkgs.config ? garlic.sbatch.reservation) { - inherit (pkgs.config.garlic.sbatch) reservation; - } // { - program = stageProgram stage; - exclusive = true; - time = "02:00:00"; - qos = "debug"; - jobName = "nbody-tampi"; - inherit nixPrefix nodes ntasksPerNode; - } - ); - - control = {stage, conf, ...}: with conf; w.control { - program = stageProgram stage; - }; - - srun = {stage, conf, ...}: with conf; w.srun { - program = stageProgram stage; - srunOptions = "--cpu-bind=verbose,socket"; - inherit nixPrefix; - }; - - statspy = {stage, conf, ...}: with conf; w.statspy { - program = stageProgram stage; - }; - - perf = {stage, conf, ...}: with conf; w.perf { - program = stageProgram stage; - perfArgs = "sched record -a"; - }; - - nixsetup = {stage, conf, ...}: with conf; w.nixsetup { - program = stageProgram stage; - nixsetup = "${nixPrefix}/bin/nix-setup"; - }; - - isolate = {stage, conf, ...}: with conf; w.isolate { - program = stageProgram stage; - clusterName = "mn4"; - inherit stage nixPrefix; - }; - - extrae = {stage, conf, ...}: w.extrae { - program = stageProgram stage; - traceLib = "mpi"; # mpi -> libtracempi.so - configFile = ./extrae.xml; - }; - - ctf = {stage, conf, ...}: w.argv { - program = stageProgram stage; - env = '' - export NANOS6=ctf - export NANOS6_CTF2PRV=0 - ''; - }; - - strace = {stage, conf, ...}: w.strace { - program = stageProgram stage; - }; - - argv = {stage, conf, ...}: w.argv { - program = stageProgram stage; - #env = '' - # #export I_MPI_PMI_LIBRARY=${bsc.slurm17-libpmi2}/lib/libpmi2.so - # export I_MPI_DEBUG=+1000 - # #export I_MPI_FABRICS=shm - - # export MPICH_DBG_OUTPUT=VERBOSE - # export MPICH_DBG_CLASS=ALL - # export MPICH_DBG_OUTPUT=stdout - - # export FI_LOG_LEVEL=Info - #''; - argv = ''( -t ${toString conf.timesteps} - -p ${toString conf.particles} )''; - }; - - bscOverlay = import ../../../overlay.nix; - - genPkgs = newOverlay: nixpkgs { - overlays = [ - bscOverlay - newOverlay - ]; - }; - - # We may be able to use overlays by invoking the fix function directly, but we - # have to get the definition of the bsc packages and the garlic ones as - # overlays. - - nbodyFn = {stage, conf, ...}: with conf; - let - # We set the mpi implementation to the one specified in the conf, so all - # packages in bsc will use that one. - customPkgs = genPkgs (self: super: { - bsc = super.bsc // { mpi = conf.mpi; }; - }); - in - customPkgs.bsc.garlic.nbody.override { - inherit cc blocksize mpi gitBranch; - }; - - experimentFn = w.experiment.override { - nixPrefix = common.nixPrefix; - }; - - stdStages = [ - sbatch - isolate - control - srun - isolate - ]; - - debugStages = with common; [] - # Intrumentation with extrae - ++ optional enableExtrae extrae - - # Optionally profile the next stages with perf - ++ optional enablePerf perf - - # Optionally profile nanos6 with the new ctf - ++ optional enableCtf ctf - - # Optionally run the program with strace - ++ optional enableStrace strace - ; - - stages = stdStages ++ debugStages ++ [ argv nbodyFn ]; - - # List of actual programs to be executed - units = map (conf: w.unit { inherit conf stages; }) configs; - - experiment = experimentFn units; - - trebuchet = stage: w.trebuchet { - program = stageProgram stage; - nixPrefix = common.nixPrefix; - #experiment = experiment; - inherit stage; - }; - - isolatedRun = stage: isolate { - inherit stage; - conf = common; - }; - - final = trebuchet (isolatedRun experiment); - -in - # We simply run each program one after another - #launch jobs - final - #jobs diff --git a/garlic/exp/nbody/test.nix b/garlic/exp/nbody/test.nix index c280c07..41768bc 100644 --- a/garlic/exp/nbody/test.nix +++ b/garlic/exp/nbody/test.nix @@ -1,7 +1,7 @@ { stdenv , stdexp -, pkgs +, bsc , targetMachine , stages }: @@ -9,8 +9,6 @@ with stdenv.lib; let - bsc = pkgs.bsc; - # Configurations for each unit (using the cartesian product) confUnit = with bsc; { blocksize = [ 1024 2048 ]; diff --git a/overlay.nix b/overlay.nix index 8aa7249..fc91092 100644 --- a/overlay.nix +++ b/overlay.nix @@ -4,7 +4,7 @@ super: /* Previous stage */ let inherit (self.lib) callPackageWith; inherit (self.lib) callPackagesWith; - callPackage = callPackageWith (self // self.bsc); + callPackage = callPackageWith (self // self.bsc // self.garlic); # --------------------------------------------------------- # # BSC Packages @@ -236,57 +236,18 @@ let hist = callPackage ./garlic/postprocess/hist { }; exp = { - #noise = callPackage ./garlic/exp/noise.nix { }; nbody = { - bs = callPackage ./garlic/exp/nbody/bs.nix { - pkgs = self // self.bsc.garlic; - nixpkgs = import ; - genApp = self.bsc.garlic.genApp; - genConfigs = self.bsc.garlic.genConfigs; - stages = self.bsc.garlic.stages; - }; - - tampi = callPackage ./garlic/exp/nbody/tampi.nix { - pkgs = self // self.bsc.garlic; - nixpkgs = import ; - genApp = self.bsc.garlic.genApp; - genConfigs = self.bsc.garlic.genConfigs; - stages = self.bsc.garlic.stages; - }; - - test = callPackage ./garlic/exp/nbody/test.nix { - pkgs = self // self.bsc.garlic; - inherit (self.garlic) stdexp targetMachine stages; - }; -# mpi = callPackage ./bsc/garlic/exp/nbody/mpi.nix { }; + test = callPackage ./garlic/exp/nbody/test.nix { }; }; saiph = { - numcomm = callPackage ./garlic/exp/saiph/numcomm.nix { - pkgs = self // self.bsc.garlic; - nixpkgs = import ; - genApp = self.bsc.garlic.genApp; - genConfigs = self.bsc.garlic.genConfigs; - stages = self.bsc.garlic.stages; - }; + numcomm = callPackage ./garlic/exp/saiph/numcomm.nix { }; }; creams = { ss = { - pure = callPackage ./garlic/exp/creams/ss+pure.nix { - pkgs = self // self.bsc.garlic; - nixpkgs = import ; - genApp = self.bsc.garlic.genApp; - genConfigs = self.bsc.garlic.genConfigs; - stages = self.bsc.garlic.stages; - }; - hybrid = callPackage ./garlic/exp/creams/ss+hybrid.nix { - pkgs = self // self.bsc.garlic; - nixpkgs = import ; - genApp = self.bsc.garlic.genApp; - genConfigs = self.bsc.garlic.genConfigs; - stages = self.bsc.garlic.stages; - }; + pure = callPackage ./garlic/exp/creams/ss+pure.nix { }; + hybrid = callPackage ./garlic/exp/creams/ss+hybrid.nix { }; }; }; From 53dca32469c8af1f3267d84703a97c787352a3a6 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 9 Oct 2020 17:19:00 +0200 Subject: [PATCH 229/987] Simplify experiment --- garlic/exp/nbody/extrae.xml | 210 ------------------------------------ garlic/exp/nbody/test.nix | 28 ++--- garlic/stdexp.nix | 19 +++- 3 files changed, 25 insertions(+), 232 deletions(-) delete mode 100644 garlic/exp/nbody/extrae.xml diff --git a/garlic/exp/nbody/extrae.xml b/garlic/exp/nbody/extrae.xml deleted file mode 100644 index 45a7574..0000000 --- a/garlic/exp/nbody/extrae.xml +++ /dev/null @@ -1,210 +0,0 @@ - - - - - - - - - - - - - - - - - 1-3 - - 1-5 - - 1-3 - - 1-3 - - 1-3 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - PAPI_TOT_INS,PAPI_TOT_CYC - - - - - - - - - - - - - - - - - TRACE - - 5 - - /scratch - - /gpfs/scratch/bsc41/bsc41273 - - - - - - 5000000 - - - - - - - - /gpfs/scratch/bsc41/bsc41273/control - - - - - - - 10M - - - - - - - - - - - 500u - - - - - - - - - - - - - - - - - - - - diff --git a/garlic/exp/nbody/test.nix b/garlic/exp/nbody/test.nix index 41768bc..8c0d5a3 100644 --- a/garlic/exp/nbody/test.nix +++ b/garlic/exp/nbody/test.nix @@ -32,41 +32,27 @@ let cpuBind = "sockets,verbose"; }; - confMachine = targetMachine.config; - # Compute the array of configurations configs = stdexp.buildConfigs { var = confUnit; - fixed = confMachine // confExperiment; + fixed = targetMachine.config // confExperiment; }; exec = {nextStage, conf, ...}: with conf; stages.exec { inherit nextStage; argv = [ "-t" timesteps "-p" particles ]; - env = ""; }; - # We may be able to use overlays by invoking the fix function directly, but we - # have to get the definition of the bsc packages and the garlic ones as - # overlays. program = {nextStage, conf, ...}: with conf; let - # We set the mpi implementation to the one specified in the conf, so all - # packages in bsc will use that one. - customPkgs = stdexp.genPkgs (self: super: { - bsc = super.bsc // { mpi = conf.mpi; }; - }); + customPkgs = stdexp.replaceMpi conf.mpi; in - customPkgs.apps.nbody.override { - inherit cc blocksize mpi gitBranch; - }; + customPkgs.apps.nbody.override { + inherit cc blocksize mpi gitBranch; + }; - # Generate the experimental units - units = map (c: stages.unit { - conf = c; - stages = stdexp.stdStages ++ [ exec program ]; - }) configs; + pipeline = stdexp.stdStages ++ [ exec program ]; in - stdexp.buildExperiment units + stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/stdexp.nix b/garlic/stdexp.nix index 2209d00..974151e 100644 --- a/garlic/stdexp.nix +++ b/garlic/stdexp.nix @@ -15,7 +15,7 @@ in rec { /* Takes a list of units and builds an experiment, after executing the trebuchet and the isolate stages. Returns the trebuchet stage. */ - buildExperiment = units: stages.trebuchet { + buildTrebuchet = units: stages.trebuchet { inherit (machineConf) nixPrefix; nextStage = stages.isolate { inherit (machineConf) nixPrefix; @@ -81,4 +81,21 @@ rec { newOverlay ]; }; + + replaceMpi = mpi: genPkgs (self: super: { + bsc = super.bsc // { inherit mpi; }; + }); + + # Generate the experimental units + genUnits = {configs, pipeline}: map (c: stages.unit { + conf = c; + stages = pipeline; + }) configs; + + # Generate the complete experiment + genExperiment = {configs, pipeline}: + let + units = genUnits { inherit configs pipeline; }; + in + buildTrebuchet units; } From 9020f8776525100e9689bb13b594e8e5f6f1d8a9 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 9 Oct 2020 17:20:50 +0200 Subject: [PATCH 230/987] Simplify saiph numcomm experiment --- garlic/exp/saiph/numcomm.nix | 197 +++++++---------------------------- 1 file changed, 35 insertions(+), 162 deletions(-) diff --git a/garlic/exp/saiph/numcomm.nix b/garlic/exp/saiph/numcomm.nix index 7da9d9c..f75b173 100644 --- a/garlic/exp/saiph/numcomm.nix +++ b/garlic/exp/saiph/numcomm.nix @@ -1,188 +1,61 @@ { stdenv -, nixpkgs -, pkgs -, genApp -, genConfigs -, runWrappers +, stdexp +, bsc +, targetMachine +, stages }: with stdenv.lib; let - # Set variable configuration for the experiment - varConfig = { - devMode = [ true ]; - numComm = [ 1 ]; + # Configurations for each unit (using the cartesian product) + confUnit = with bsc; { + numComm = [ 1 2 ]; }; - # Common configuration - common = { - # Compile time nbody config + # Configuration for the complete experiment + confExperiment = with bsc; { + # saiph options + devMode = false; + mpi = impi; gitBranch = "garlic/tampi+isend+oss+task+simd"; - mpi = pkgs.bsc.impi; + + # Repeat the execution of each unit 30 times + loops = 100; # Resources - ntasksPerNode = "2"; - nodes = "1"; - - # Stage configuration - enableSbatch = true; - enableControl = true; - enableExtrae = false; - enablePerf = false; - - # MN4 path - nixPrefix = "/gpfs/projects/bsc15/nix"; + ntasksPerNode = 2; + nodes = 1; + cpuBind = "sockets,verbose"; }; - # Compute the cartesian product of all configurations - configs = map (conf: conf // common) (genConfigs varConfig); - - stageProgram = stage: - if stage ? programPath - then "${stage}${stage.programPath}" else "${stage}"; - - w = runWrappers; - - sbatch = {stage, conf, ...}: with conf; w.sbatch ( - # Allow a user to define a custom reservation for the job in MareNostrum4, - # by setting the garlic.sbatch.reservation attribute in the - # ~/.config/nixpkgs/config.nix file. If the attribute is not set, no - # reservation is used. The user reservation may be overwritten by the - # experiment, if the reservation is set like with nodes or ntasksPerNode. - optionalAttrs (pkgs.config ? garlic.sbatch.reservation) { - inherit (pkgs.config.garlic.sbatch) reservation; - } // { - program = stageProgram stage; - exclusive = true; - time = "02:00:00"; - qos = "debug"; - jobName = "saiph"; - inherit nixPrefix nodes ntasksPerNode; - } - ); - - control = {stage, conf, ...}: with conf; w.control { - program = stageProgram stage; - loops = 100; + # Compute the array of configurations + configs = stdexp.buildConfigs { + var = confUnit; + fixed = targetMachine.config // confExperiment; }; - srun = {stage, conf, ...}: with conf; w.srun { - program = stageProgram stage; - srunOptions = "--cpu-bind=verbose,sockets"; - inherit nixPrefix; - }; - - statspy = {stage, conf, ...}: with conf; w.statspy { - program = stageProgram stage; - }; - - perf = {stage, conf, ...}: with conf; w.perf { - program = stageProgram stage; - perfArgs = "sched record -a"; - }; - - nixsetup = {stage, conf, ...}: with conf; w.nixsetup { - program = stageProgram stage; - nixsetup = "${nixPrefix}/bin/nix-setup"; - }; - - extrae = {stage, conf, ...}: - let - # We set the mpi implementation to the one specified in the conf, so all - # packages in bsc will use that one. - customPkgs = genPkgs (self: super: { - bsc = super.bsc // { mpi = conf.mpi; }; - }); - - extrae = customPkgs.bsc.extrae; - in - w.extrae { - program = stageProgram stage; - extrae = extrae; - traceLib = "nanosmpi"; # mpi -> libtracempi.so - configFile = ./extrae.xml; - }; - - bscOverlay = import ../../../overlay.nix; - - genPkgs = newOverlay: nixpkgs { - overlays = [ - bscOverlay - newOverlay - ]; - }; - - # Print the environment to ensure we don't get anything nasty - envRecord = {stage, conf, ...}: w.envRecord { - program = stageProgram stage; - }; - - broom = {stage, conf, ...}: w.broom { - program = stageProgram stage; - }; - # We may be able to use overlays by invoking the fix function directly, but we - # have to get the definition of the bsc packages and the garlic ones as - # overlays. - - argv = {stage, conf, ...}: with conf; w.argv { - program = stageProgram stage; + exec = {nextStage, conf, ...}: with conf; stages.exec { + inherit nextStage; env = '' export OMP_NUM_THREADS=24 export NANOS6_REPORT_PREFIX="#" export I_MPI_THREAD_SPLIT=1 - export ASAN_SYMBOLIZER_PATH=${pkgs.bsc.clangOmpss2Unwrapped}/bin/llvm-symbolizer - '' - + optionalString enableExtrae - ''export NANOS6=extrae - export NANOS6_EXTRAE_AS_THREADS=0 + export ASAN_SYMBOLIZER_PATH=${bsc.clangOmpss2Unwrapped}/bin/llvm-symbolizer ''; }; - saiphFn = {stage, conf, ...}: with conf; - let - # We set the mpi implementation to the one specified in the conf, so all - # packages in bsc will use that one. - customPkgs = genPkgs (self: super: { - bsc = super.bsc // { mpi = conf.mpi; }; - }); - in - customPkgs.bsc.garlic.saiph.override { - inherit devMode numComm mpi gitBranch; - }; + program = {nextStage, conf, ...}: with conf; + let + customPkgs = stdexp.replaceMpi conf.mpi; + in + customPkgs.apps.saiph.override { + inherit devMode numComm mpi gitBranch; + }; - stages = with common; [] - # Cleans ALL environment variables - ++ [ broom ] - - # Use sbatch to request resources first - ++ optionals enableSbatch [ sbatch nixsetup ] - - # Record the current env vars set by SLURM to verify we don't have something - # nasty (like sourcing .bashrc). Take a look at #26 - ++ [ envRecord ] - - # Repeats the next stages N=30 times - ++ optional enableControl control - - # Executes srun to launch the program in the requested nodes, and - # immediately after enters the nix environment again, as slurmstepd launches - # the next stages from outside the namespace. - ++ [ srun nixsetup ] - - # Intrumentation with extrae - ++ optional enableExtrae extrae - - # Optionally profile the next stages with perf - ++ optional enablePerf perf - - # Execute the saiph example app - ++ [ argv saiphFn ]; - - # List of actual programs to be executed - jobs = map (conf: w.stagen { inherit conf stages; }) configs; + pipeline = stdexp.stdStages ++ [ exec program ]; in - # We simply run each program one after another - w.launch jobs + + stdexp.genExperiment { inherit configs pipeline; } From 298c7362b37790432bb9a4d5031e3568c99030f1 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 9 Oct 2020 19:33:06 +0200 Subject: [PATCH 231/987] New config design --- garlic/exp/creams/ss+hybrid.nix | 205 +++++++++---------------------- garlic/exp/creams/ss+pure.nix | 208 +++++++++----------------------- garlic/exp/nbody/test.nix | 17 +-- garlic/stdexp.nix | 80 ++++++------ 4 files changed, 158 insertions(+), 352 deletions(-) diff --git a/garlic/exp/creams/ss+hybrid.nix b/garlic/exp/creams/ss+hybrid.nix index 987f103..e7fd3fb 100644 --- a/garlic/exp/creams/ss+hybrid.nix +++ b/garlic/exp/creams/ss+hybrid.nix @@ -1,23 +1,16 @@ { stdenv -, nixpkgs -, pkgs -, genApp -, genConfigs -, runWrappers +, stdexp +, bsc +, targetMachine +, stages }: with stdenv.lib; let - bsc = pkgs.bsc; - - # Set variable configuration for the experiment - varConfig = { - cc = [ bsc.icc ]; # [ bsc.icc pkgs.gfortran10 ]; - - mpi = [ bsc.impi ]; # [ bsc.impi bsc.openmpi-mn4 ]; - + # Initial variable configuration + varConf = { input = [ { nodes=1 ; nprocz=2 ; granul=37; time= "10:00:00"; } { nodes=2 ; nprocz=4 ; granul=19; time= "05:00:00"; } @@ -26,155 +19,65 @@ let { nodes=16; nprocz=32; granul=9 ; time= "01:00:00"; } ]; - gitBranch = [ "garlic/mpi+isend+oss+task" - "garlic/mpi+send+omp+fork" - "garlic/mpi+send+oss+task" - "garlic/tampi+isend+oss+task" + gitBranch = [ + "garlic/mpi+isend+oss+task" + "garlic/mpi+send+omp+fork" + "garlic/mpi+send+oss+task" + "garlic/tampi+isend+oss+task" ]; }; - # Common configuration - common = { + # Generate the complete configuration for each unit + genConf = with bsc; c: targetMachine.config // rec { + # Options for creams + cc = icc; + mpi = impi; + inherit (c.input) granul; + inherit (c) gitBranch; + nprocz = 2 * nodes; + + # Repeat the execution of each unit 30 times + loops = 30; + # Resources - ntasksPerNode = 2; - #ntasksPerSocket = 1; // Add this variable to nix - - # Stage configuration - enableSbatch = true; - enableControl = true; - enableExtrae = false; - enablePerf = false; - enableCtf = false; - - # MN4 path - nixPrefix = "/gpfs/projects/bsc15/nix"; + qos = "debug"; + ntasksPerNode = 2; + inherit (c.input) time nodes; + cpuBind = "socket,verbose"; + jobName = "creams-ss-${toString nodes}-${gitBranch}"; }; - # Compute the cartesian product of all configurations - configs = map (conf: conf // common) (genConfigs varConfig); - - stageProgram = stage: - if stage ? programPath - then "${stage}${stage.programPath}" else "${stage}"; - - w = runWrappers; - - sbatch = {stage, conf, ...}: with conf; w.sbatch { - nodes = input.nodes; - program = stageProgram stage; - exclusive = true; - time = input.time; - #qos = "debug"; - jobName = "creams-ss-${toString input.nodes}-${toString gitBranch}"; - inherit nixPrefix ntasksPerNode; + # Compute the array of configurations + configs = stdexp.buildConfigs { + inherit varConf genConf; }; - control = {stage, conf, ...}: with conf; w.control { - program = stageProgram stage; - }; - - srun = {stage, conf, ...}: with conf; w.srun { - program = stageProgram stage; - srunOptions = "--cpu-bind=verbose,socket"; - inherit nixPrefix; - }; - - statspy = {stage, conf, ...}: with conf; w.statspy { - program = stageProgram stage; - }; - - perf = {stage, conf, ...}: with conf; w.perf { - program = stageProgram stage; - perfArgs = "sched record -a"; - }; - - nixsetup = {stage, conf, ...}: with conf; w.nixsetup { - program = stageProgram stage; - nixsetup = "${nixPrefix}/bin/nix-setup"; - }; - - extrae = {stage, conf, ...}: w.extrae { - program = stageProgram stage; - traceLib = "mpi"; # mpi -> libtracempi.so - configFile = ./extrae.xml; - }; - - ctf = {stage, conf, ...}: w.argv { - program = stageProgram stage; - env = '' - export NANOS6=ctf - export NANOS6_CTF2PRV=0 - ''; - }; - - bscOverlay = import ../../../overlay.nix; - - genPkgs = newOverlay: nixpkgs { - overlays = [ - bscOverlay - newOverlay - ]; - }; - - inputDataset = {stage, conf, ...}: - let - input = bsc.garlic.creamsInput.override { - gitBranch = conf.gitBranch; - granul = conf.input.granul; - nprocz = conf.input.nprocz; - }; - in w.argv - { - program = stageProgram stage; - env = '' - cp -r ${input}/SodTubeBenchmark/* . - chmod +w -R . - ''; - }; - - # We may be able to use overlays by invoking the fix function directly, but we - # have to get the definition of the bsc packages and the garlic ones as - # overlays. - - creamsFn = {stage, conf, ...}: with conf; + # Custom stage to copy the creams input dataset + copyInput = {nextStage, conf, ...}: let - # We set the mpi implementation to the one specified in the conf, so all - # packages in bsc will use that one. - customPkgs = genPkgs (self: super: { - bsc = super.bsc // { mpi = conf.mpi; }; - }); + input = bsc.garlic.apps.creamsInput.override { + inherit (conf) gitBranch granul nprocz; + }; in - customPkgs.bsc.garlic.creams.override { - inherit cc mpi gitBranch; - }; + stages.exec { + inherit nextStage; + env = '' + cp -r ${input}/SodTubeBenchmark/* . + chmod +w -R . + ''; + }; - stages = with common; [] - # Use sbatch to request resources first - ++ optional enableSbatch sbatch + # Creams program + creams = {nextStage, conf, ...}: with conf; + let + customPkgs = stdexp.replaceMpi conf.mpi; + in + customPkgs.apps.creams.override { + inherit cc mpi gitBranch; + }; - # Repeats the next stages N times - ++ optionals enableControl [ nixsetup control ] - - # Executes srun to launch the program in the requested nodes, and - # immediately after enters the nix environment again, as slurmstepd launches - # the next stages from outside the namespace. - ++ [ srun nixsetup ] - - # Intrumentation with extrae - ++ optional enableExtrae extrae - - # Optionally profile the next stages with perf - ++ optional enablePerf perf - - # Optionally profile nanos6 with the new ctf - ++ optional enableCtf ctf - - # Execute the app with the argv and env vars - ++ [ inputDataset creamsFn ]; - - # List of actual programs to be executed - jobs = map (conf: w.stagen { inherit conf stages; }) configs; + pipeline = stdexp.stdPipeline ++ [ copyInput creams ]; in - # We simply run each program one after another - w.launch jobs + + stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/creams/ss+pure.nix b/garlic/exp/creams/ss+pure.nix index a7efa5b..d2071cb 100644 --- a/garlic/exp/creams/ss+pure.nix +++ b/garlic/exp/creams/ss+pure.nix @@ -1,176 +1,76 @@ { stdenv -, nixpkgs -, pkgs -, genApp -, genConfigs -, runWrappers +, stdexp +, bsc +, targetMachine +, stages }: with stdenv.lib; let - bsc = pkgs.bsc; - - # Set variable configuration for the experiment - varConfig = { - cc = [ bsc.icc ]; # [ bsc.icc pkgs.gfortran10 ]; - - mpi = [ bsc.impi ]; # [ bsc.impi bsc.openmpi-mn4 ]; - + # Initial variable configuration + varConf = { input = [ - { nodes=1 ; nprocz=48 ; granul=0; time= "10:00:00"; } - { nodes=2 ; nprocz=96 ; granul=0; time= "05:00:00"; } - { nodes=4 ; nprocz=192; granul=0; time= "03:00:00"; } - { nodes=8 ; nprocz=384; granul=0; time= "02:00:00"; } - { nodes=16; nprocz=768; granul=0; time= "01:00:00"; } + { time="10:00:00"; nodes=1; } + { time="05:00:00"; nodes=2; } + { time="03:00:00"; nodes=4; } + { time="02:00:00"; nodes=8; } + { time="01:00:00"; nodes=16; } ]; - - gitBranch = [ "garlic/mpi+send+seq" ]; }; - # Common configuration - common = { + # Generate the complete configuration for each unit + genConf = with bsc; c: targetMachine.config // rec { + # Options for creams + cc = icc; + mpi = impi; + granul = 0; + gitBranch = "garlic/mpi+send+seq"; + nprocz = 48 * nodes; + + # Repeat the execution of each unit 30 times + loops = 30; + # Resources - ntasksPerNode = 48; - #ntasksPerSocket = 24; // Add this variable to nix - - # Stage configuration - enableSbatch = true; - enableControl = true; - enableExtrae = false; - enablePerf = false; - enableCtf = false; - - # MN4 path - nixPrefix = "/gpfs/projects/bsc15/nix"; + qos = "debug"; + ntasksPerNode = 48; + inherit (c.input) time nodes; + cpuBind = "rank,verbose"; + jobName = "creams-ss-${toString nodes}-${gitBranch}"; }; - # Compute the cartesian product of all configurations - configs = map (conf: conf // common) (genConfigs varConfig); - - stageProgram = stage: - if stage ? programPath - then "${stage}${stage.programPath}" else "${stage}"; - - w = runWrappers; - - sbatch = {stage, conf, ...}: with conf; w.sbatch { - nodes = input.nodes; - program = stageProgram stage; - exclusive = true; - time = input.time; - #qos = "debug"; - jobName = "creams-ss-${toString input.nodes}-${toString gitBranch}"; - inherit nixPrefix ntasksPerNode; + # Compute the array of configurations + configs = stdexp.buildConfigs { + inherit varConf genConf; }; - control = {stage, conf, ...}: with conf; w.control { - program = stageProgram stage; - }; - - srun = {stage, conf, ...}: with conf; w.srun { - program = stageProgram stage; - srunOptions = "--cpu-bind=verbose,rank"; - inherit nixPrefix; - }; - - statspy = {stage, conf, ...}: with conf; w.statspy { - program = stageProgram stage; - }; - - perf = {stage, conf, ...}: with conf; w.perf { - program = stageProgram stage; - perfArgs = "sched record -a"; - }; - - nixsetup = {stage, conf, ...}: with conf; w.nixsetup { - program = stageProgram stage; - nixsetup = "${nixPrefix}/bin/nix-setup"; - }; - - extrae = {stage, conf, ...}: w.extrae { - program = stageProgram stage; - traceLib = "mpi"; # mpi -> libtracempi.so - configFile = ./extrae.xml; - }; - - ctf = {stage, conf, ...}: w.argv { - program = stageProgram stage; - env = '' - export NANOS6=ctf - export NANOS6_CTF2PRV=0 - ''; - }; - - bscOverlay = import ../../../overlay.nix; - - genPkgs = newOverlay: nixpkgs { - overlays = [ - bscOverlay - newOverlay - ]; - }; - - inputDataset = {stage, conf, ...}: - let - input = bsc.garlic.creamsInput.override { - gitBranch = conf.gitBranch; - granul = conf.input.granul; - nprocz = conf.input.nprocz; - }; - in w.argv - { - program = stageProgram stage; - env = '' - cp -r ${input}/SodTubeBenchmark/* . - chmod +w -R . - ''; - }; - - # We may be able to use overlays by invoking the fix function directly, but we - # have to get the definition of the bsc packages and the garlic ones as - # overlays. - - creamsFn = {stage, conf, ...}: with conf; + # Custom stage to copy the creams input dataset + copyInput = {nextStage, conf, ...}: let - # We set the mpi implementation to the one specified in the conf, so all - # packages in bsc will use that one. - customPkgs = genPkgs (self: super: { - bsc = super.bsc // { mpi = conf.mpi; }; - }); + input = bsc.garlic.apps.creamsInput.override { + inherit (conf) gitBranch granul nprocz; + }; in - customPkgs.bsc.garlic.creams.override { - inherit cc mpi gitBranch; - }; + stages.exec { + inherit nextStage; + env = '' + cp -r ${input}/SodTubeBenchmark/* . + chmod +w -R . + ''; + }; - stages = with common; [] - # Use sbatch to request resources first - ++ optional enableSbatch sbatch + # Creams program + creams = {nextStage, conf, ...}: with conf; + let + customPkgs = stdexp.replaceMpi conf.mpi; + in + customPkgs.apps.creams.override { + inherit cc mpi gitBranch; + }; - # Repeats the next stages N times - ++ optionals enableControl [ nixsetup control ] - - # Executes srun to launch the program in the requested nodes, and - # immediately after enters the nix environment again, as slurmstepd launches - # the next stages from outside the namespace. - ++ [ srun nixsetup ] - - # Intrumentation with extrae - ++ optional enableExtrae extrae - - # Optionally profile the next stages with perf - ++ optional enablePerf perf - - # Optionally profile nanos6 with the new ctf - ++ optional enableCtf ctf - - # Execute the app with the argv and env vars - ++ [ inputDataset creamsFn ]; - - # List of actual programs to be executed - jobs = map (conf: w.stagen { inherit conf stages; }) configs; + pipeline = stdexp.stdPipeline ++ [ copyInput creams ]; in - # We simply run each program one after another - w.launch jobs + + stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/nbody/test.nix b/garlic/exp/nbody/test.nix index 8c0d5a3..934aace 100644 --- a/garlic/exp/nbody/test.nix +++ b/garlic/exp/nbody/test.nix @@ -9,16 +9,17 @@ with stdenv.lib; let - # Configurations for each unit (using the cartesian product) - confUnit = with bsc; { + # Initial variable configuration + varConf = with bsc; { blocksize = [ 1024 2048 ]; }; - # Configuration for the complete experiment - confExperiment = with bsc; { + # Generate the complete configuration for each unit + genConf = with bsc; c: targetMachine.config // rec { # nbody options particles = 1024 * 4; timesteps = 10; + inherit (c) blocksize; cc = icc; mpi = impi; gitBranch = "garlic/mpi+send"; @@ -27,15 +28,16 @@ let loops = 30; # Resources + qos = "debug"; ntasksPerNode = 2; nodes = 1; cpuBind = "sockets,verbose"; + jobName = "nbody-bs-${toString blocksize}-${gitBranch}"; }; # Compute the array of configurations configs = stdexp.buildConfigs { - var = confUnit; - fixed = targetMachine.config // confExperiment; + inherit varConf genConf; }; exec = {nextStage, conf, ...}: with conf; stages.exec { @@ -51,7 +53,8 @@ let inherit cc blocksize mpi gitBranch; }; - pipeline = stdexp.stdStages ++ [ exec program ]; + pipeline = stdexp.stdUnitPre {sbatch=mySbatch;} + ++ [ exec program ]; in diff --git a/garlic/stdexp.nix b/garlic/stdexp.nix index 974151e..e456c76 100644 --- a/garlic/stdexp.nix +++ b/garlic/stdexp.nix @@ -25,52 +25,52 @@ rec { }; }; - /* Given an attrset of lists `var` and an attrset `fixed`, computes the - cartesian product of all combinations of `var` and prepends `fixed` - to each. */ - buildConfigs = {fixed, var}: - map (c: fixed // c) (genConfigs var); + /* Given an attrset of lists `varConf` and a function `genConf` that accepts a + attrset, computes the cartesian product of all combinations of `varConf` calls + genConf to produce the final list of configurations. */ + buildConfigs = {varConf, genConf}: + map (c: genConf c) (genConfigs varConf); - sbatch = {nextStage, conf, ...}: with conf; stages.sbatch ( - # Allow a user to define a custom reservation for the job in MareNostrum4, - # by setting the garlic.sbatch.reservation attribute in the - # ~/.config/nixpkgs/config.nix file. If the attribute is not set, no - # reservation is used. The user reservation may be overwritten by the - # experiment, if the reservation is set like with nodes or ntasksPerNode. - optionalAttrs (config ? garlic.sbatch.reservation) { - inherit (config.garlic.sbatch) reservation; - } // { - exclusive = true; - time = "02:00:00"; - qos = "debug"; - jobName = "nbody-tampi"; - inherit nextStage nixPrefix nodes ntasksPerNode; - } - ); + stdStages = { + sbatch = {nextStage, conf, ...}: with conf; stages.sbatch ( + # Allow a user to define a custom reservation for the job in MareNostrum4, + # by setting the garlic.sbatch.reservation attribute in the + # ~/.config/nixpkgs/config.nix file. If the attribute is not set, no + # reservation is used. The user reservation may be overwritten by the + # experiment, if the reservation is set like with nodes or ntasksPerNode. + optionalAttrs (config ? garlic.sbatch.reservation) { + inherit (config.garlic.sbatch) reservation; + } // { + exclusive = true; + inherit nextStage nixPrefix nodes ntasksPerNode time qos jobName; + } + ); - control = {nextStage, conf, ...}: stages.control { - inherit (conf) loops; - inherit nextStage; + control = {nextStage, conf, ...}: stages.control { + inherit (conf) loops; + inherit nextStage; + }; + + srun = {nextStage, conf, ...}: stages.srun { + inherit (conf) nixPrefix cpuBind; + inherit nextStage; + }; + + isolate = {nextStage, conf, ...}: stages.isolate { + clusterName = machineConf.name; + inherit (conf) nixPrefix; + inherit nextStage; + }; }; - srun = {nextStage, conf, ...}: stages.srun { - inherit (conf) nixPrefix cpuBind; - inherit nextStage; - }; + stdPipelineOverride = {overrides ? {}}: + let + stages = stdStages // overrides; + in + with stages; [ sbatch isolate control srun isolate ]; - isolate = {nextStage, conf, ...}: stages.isolate { - clusterName = machineConf.name; - inherit (conf) nixPrefix; - inherit nextStage; - }; - stdStages = [ - sbatch - isolate - control - srun - isolate - ]; + stdPipeline = stdPipelineOverride {}; # FIXME: Remove this hack and allow custom nixpkgs bscOverlay = import ../overlay.nix; From 1b703bd431e291e7b39ce1af587e91d2fd0e727f Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 9 Oct 2020 19:40:49 +0200 Subject: [PATCH 232/987] Fix saiph numcomm experiment --- garlic/exp/nbody/test.nix | 4 ++-- garlic/exp/saiph/numcomm.nix | 25 ++++++++++++++----------- 2 files changed, 16 insertions(+), 13 deletions(-) diff --git a/garlic/exp/nbody/test.nix b/garlic/exp/nbody/test.nix index 934aace..724328a 100644 --- a/garlic/exp/nbody/test.nix +++ b/garlic/exp/nbody/test.nix @@ -31,6 +31,7 @@ let qos = "debug"; ntasksPerNode = 2; nodes = 1; + time = "02:00:00"; cpuBind = "sockets,verbose"; jobName = "nbody-bs-${toString blocksize}-${gitBranch}"; }; @@ -53,8 +54,7 @@ let inherit cc blocksize mpi gitBranch; }; - pipeline = stdexp.stdUnitPre {sbatch=mySbatch;} - ++ [ exec program ]; + pipeline = stdexp.stdPipeline ++ [ exec program ]; in diff --git a/garlic/exp/saiph/numcomm.nix b/garlic/exp/saiph/numcomm.nix index f75b173..47ab513 100644 --- a/garlic/exp/saiph/numcomm.nix +++ b/garlic/exp/saiph/numcomm.nix @@ -9,31 +9,34 @@ with stdenv.lib; let - # Configurations for each unit (using the cartesian product) - confUnit = with bsc; { + # Initial variable configuration + varConf = with bsc; { numComm = [ 1 2 ]; }; - # Configuration for the complete experiment - confExperiment = with bsc; { + # Generate the complete configuration for each unit + genConf = with bsc; c: targetMachine.config // rec { # saiph options devMode = false; + inherit (c) numComm; mpi = impi; gitBranch = "garlic/tampi+isend+oss+task+simd"; - # Repeat the execution of each unit 30 times + # Repeat the execution of each unit 100 times loops = 100; # Resources + qos = "debug"; + time = "02:00:00"; ntasksPerNode = 2; nodes = 1; cpuBind = "sockets,verbose"; + jobName = "saiph-${toString numComm}-${gitBranch}"; }; # Compute the array of configurations configs = stdexp.buildConfigs { - var = confUnit; - fixed = targetMachine.config // confExperiment; + inherit varConf genConf; }; exec = {nextStage, conf, ...}: with conf; stages.exec { @@ -50,11 +53,11 @@ let let customPkgs = stdexp.replaceMpi conf.mpi; in - customPkgs.apps.saiph.override { - inherit devMode numComm mpi gitBranch; - }; + customPkgs.apps.saiph.override { + inherit devMode numComm mpi gitBranch; + }; - pipeline = stdexp.stdStages ++ [ exec program ]; + pipeline = stdexp.stdPipeline ++ [ exec program ]; in From 27bc9775902ceed945720851977be8b5e89b3266 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 9 Oct 2020 19:50:28 +0200 Subject: [PATCH 233/987] Remove strace from isolate stage --- garlic/stages/isolate/default.nix | 5 ----- 1 file changed, 5 deletions(-) diff --git a/garlic/stages/isolate/default.nix b/garlic/stages/isolate/default.nix index f9e87ca..a373db6 100644 --- a/garlic/stages/isolate/default.nix +++ b/garlic/stages/isolate/default.nix @@ -2,7 +2,6 @@ stdenv , nixtools , busybox -, strace , garlicTools }: @@ -18,10 +17,6 @@ stdenv.mkDerivation { name = "isolate"; preferLocalBuild = true; phases = [ "unpackPhase" "installPhase" ]; - buildInputs = [ - #nixtools - #strace - ]; src = ./.; dontPatchShebangs = true; programPath = "/bin/stage1"; From 4de20d3aa50f3c2ad605825b88503c456ed47027 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 9 Oct 2020 20:12:52 +0200 Subject: [PATCH 234/987] Remove old stages and update some --- garlic/stages/broom.nix | 23 ------------- garlic/stages/default.nix | 64 ------------------------------------- garlic/stages/envRecord.nix | 25 --------------- garlic/stages/extrae.nix | 48 +++++++++++++--------------- garlic/stages/gen.nix | 34 -------------------- garlic/stages/nix-setup.nix | 32 ------------------- garlic/stages/perf.nix | 24 -------------- garlic/stages/stagen.nix | 55 ------------------------------- garlic/stages/statspy.nix | 29 ----------------- garlic/stages/strace.nix | 36 ++++++++++++--------- garlic/stages/valgrind.nix | 36 ++++++++++++--------- overlay.nix | 7 ---- 12 files changed, 65 insertions(+), 348 deletions(-) delete mode 100644 garlic/stages/broom.nix delete mode 100644 garlic/stages/default.nix delete mode 100644 garlic/stages/envRecord.nix delete mode 100644 garlic/stages/gen.nix delete mode 100644 garlic/stages/nix-setup.nix delete mode 100644 garlic/stages/perf.nix delete mode 100644 garlic/stages/stagen.nix delete mode 100644 garlic/stages/statspy.nix diff --git a/garlic/stages/broom.nix b/garlic/stages/broom.nix deleted file mode 100644 index 6586170..0000000 --- a/garlic/stages/broom.nix +++ /dev/null @@ -1,23 +0,0 @@ -{ - stdenv -}: - -{ - program -}: - -# This stage provides a clean environment to run experiments -stdenv.mkDerivation { - name = "broom"; - preferLocalBuild = true; - phases = [ "installPhase" ]; - installPhase = '' - cat > $out < $out <&2 echo ----- ENV BEGIN ------- - >&2 /usr/bin/env - >&2 echo ----- ENV END ------- - - exec ${program} \''${argv[@]} - EOF - chmod +x $out - ''; -} diff --git a/garlic/stages/extrae.nix b/garlic/stages/extrae.nix index 4d2db35..dabb31e 100644 --- a/garlic/stages/extrae.nix +++ b/garlic/stages/extrae.nix @@ -1,36 +1,34 @@ { stdenv -, bash -#, writeShellScriptBin +, garlicTools }: { - program + nextStage , configFile , traceLib , extrae }: -#writeShellScriptBin "extraeWrapper" '' -# export EXTRAE_HOME=${extrae} -# export LD_PRELOAD=${extrae}/lib/lib${traceLib}trace.so:$LD_PRELOAD -# export EXTRAE_CONFIG_FILE=${configFile} -# exec ${program} -#'' +with garlicTools; -stdenv.mkDerivation { - name = "extrae"; - preferLocalBuild = true; - phases = [ "installPhase" ]; - installPhase = '' - cat > $out < $out <; - - gen = rec { - # genAttrSets "a" ["hello" "world"] - # [ { a = "hello"; } { a = "world"; } ] - genAttrSets = (name: arr: (map (x: {${name}=x; })) arr); - - # addAttrSets "a" [1 2] {e=4;} - # [ { a = 1; e = 4; } { a = 2; e = 4; } ] - addAttrSets = (name: arr: set: (map (x: set // {${name}=x; })) arr); - - # attrToList {a=1;} - # [ { name = "a"; value = 1; } ] - attrToList = (set: map (name: {name=name; value=set.${name};} ) (builtins.attrNames set)); - - # mergeConfig [{e=1;}] {name="a"; value=[1 2] - # [ { a = 1; e = 1; } { a = 2; e = 1; } ] - mergeConfig = (arr: new: lib.flatten ( map (x: addAttrSets new.name new.value x) arr)); - - # genConfigs {a=[1 2]; b=[3 4];} - # [ { a = 1; b = 3; } { a = 1; b = 4; } { a = 2; b = 3; } { a = 2; b = 4; } ] - genConfigs = (config: lib.foldl mergeConfig [{}] (attrToList config)); - - # Generate multiple app versions by override with each config - genApp = (app: configs: map (conf: app.override conf // {conf=conf;}) configs); - - # Generate app version from an array of apps - genApps = (apps: configs: - lib.flatten (map (app: genApp app configs) apps)); - - }; -in - gen diff --git a/garlic/stages/nix-setup.nix b/garlic/stages/nix-setup.nix deleted file mode 100644 index b340b19..0000000 --- a/garlic/stages/nix-setup.nix +++ /dev/null @@ -1,32 +0,0 @@ -{ - stdenv -}: - -{ - program -, nixsetup -}: - -stdenv.mkDerivation { - name = "nixsetup"; - preferLocalBuild = true; - phases = [ "installPhase" ]; - dontPatchShebangs = true; - installPhase = '' - cat > $out <&2 echo Running nixsetup stage - env - - # We need to enter the nix namespace first, in order to have /nix - # available, so we use this hack: - if [ ! -e /nix ]; then - exec ${nixsetup} \$0 - fi - - exec ${program} - EOF - chmod +x $out - ''; -} diff --git a/garlic/stages/perf.nix b/garlic/stages/perf.nix deleted file mode 100644 index 7518381..0000000 --- a/garlic/stages/perf.nix +++ /dev/null @@ -1,24 +0,0 @@ -{ - stdenv -, bash -, perf -}: - -{ - program -, perfArgs ? "record -a" -}: - -stdenv.mkDerivation { - name = "perfWrapper"; - preferLocalBuild = true; - phases = [ "installPhase" ]; - installPhase = '' - cat > $out < $out/config.raw << EOF - ${builtins.toJSON conf} - EOF - jq . $out/config.raw > $out/config.json - rm $out/config.raw - ''; -} diff --git a/garlic/stages/statspy.nix b/garlic/stages/statspy.nix deleted file mode 100644 index 93e6459..0000000 --- a/garlic/stages/statspy.nix +++ /dev/null @@ -1,29 +0,0 @@ -{ - stdenv -, bash -}: - -{ - program -, outputDir ? "." -}: - -stdenv.mkDerivation { - name = "statspy"; - preferLocalBuild = true; - phases = [ "installPhase" ]; - programPath = "/bin/${name}"; - installPhase = '' - mkdir -p $out/bin - cat > $out/bin/${name} < ${outputDir}/statspy.\$(date +%s.%3N).begin - ${program} - cat /proc/[0-9]*/stat | sort -n > ${outputDir}/statspy.\$(date +%s.%3N).end - - EOF - chmod +x $out/bin/${name} - ''; -} diff --git a/garlic/stages/strace.nix b/garlic/stages/strace.nix index 56eb932..22fb4a5 100644 --- a/garlic/stages/strace.nix +++ b/garlic/stages/strace.nix @@ -1,23 +1,29 @@ { stdenv -, bash , strace +, garlicTools }: { - program + nextStage }: -stdenv.mkDerivation { - name = "strace"; - preferLocalBuild = true; - phases = [ "installPhase" ]; - installPhase = '' - cat > $out < $out < $out < $out < Date: Fri, 9 Oct 2020 20:17:35 +0200 Subject: [PATCH 235/987] Remove unused experiments --- garlic/exp/default.nix | 64 ----------- garlic/exp/noise.nix | 132 ----------------------- garlic/exp/test/extrae.xml | 211 ------------------------------------- garlic/exp/test/rw.nix | 180 ------------------------------- overlay.nix | 19 ---- 5 files changed, 606 deletions(-) delete mode 100644 garlic/exp/default.nix delete mode 100644 garlic/exp/noise.nix delete mode 100644 garlic/exp/test/extrae.xml delete mode 100644 garlic/exp/test/rw.nix diff --git a/garlic/exp/default.nix b/garlic/exp/default.nix deleted file mode 100644 index 79e775b..0000000 --- a/garlic/exp/default.nix +++ /dev/null @@ -1,64 +0,0 @@ -{ - pkgs -, callPackage -, callPackages -}: - -let - - garlic = { - - # Load some helper functions to generate app variants - inherit (import ./gen.nix) genApps genApp genConfigs; - - mpptest = callPackage ./mpptest { }; - - ppong = callPackage ./ppong { - mpi = pkgs.mpi; - }; - - nbody = callPackage ./nbody { - cc = pkgs.icc; - mpi = pkgs.impi; - tampi = pkgs.tampi; - gitBranch = "garlic/seq"; - }; - - runWrappers = { - sbatch = callPackage ./stages/sbatch.nix { }; - srun = callPackage ./stages/srun.nix { }; - launch = callPackage ./stages/launcher.nix { }; - control = callPackage ./stages/control.nix { }; - nixsetup= callPackage ./stages/nix-setup.nix { }; - argv = callPackage ./stages/argv.nix { }; - statspy = callPackage ./stages/statspy.nix { }; - extrae = callPackage ./stages/extrae.nix { }; - stagen = callPackage ./stages/stagen.nix { }; - }; - - # Perf is tied to a linux kernel specific version - linuxPackages = pkgs.linuxPackages_4_4; - perfWrapper = callPackage ./perf.nix { - perf = pkgs.linuxPackages.perf; - }; - - exp = { - noise = callPackage ./exp/noise.nix { }; - nbody = { - bs = callPackage ./exp/nbody/bs.nix { - pkgs = pkgs // garlic; - }; - mpi = callPackage ./exp/nbody/mpi.nix { }; - }; - osu = rec { - latency-internode = callPackage ./exp/osu/latency.nix { }; - latency-intranode = callPackage ./exp/osu/latency.nix { - interNode = false; - }; - latency = latency-internode; - }; - }; - }; - -in - garlic diff --git a/garlic/exp/noise.nix b/garlic/exp/noise.nix deleted file mode 100644 index b3e9444..0000000 --- a/garlic/exp/noise.nix +++ /dev/null @@ -1,132 +0,0 @@ -{ - bsc -, stdenv -, nbody -, genApp -, genConfigs -, runWrappers -}: - -with stdenv.lib; - -let - # Set variable configuration for the experiment - varConfig = { - cc = [ bsc.icc ]; - blocksize = [ 1024 ]; - }; - - # Common configuration - common = { - # Compile time nbody config - gitBranch = "garlic/mpi+send"; - mpi = bsc.impi; - - # nbody runtime options - particles = 1024*128; - timesteps = 20; - loops = 1000; - - # Resources - ntasksPerNode = "48"; - nodes = "1"; - - # Stage configuration - enableSbatch = true; - enableControl = true; - enableExtrae = false; - enablePerf = false; - - # MN4 path - nixPrefix = "/gpfs/projects/bsc15/nix"; - }; - - # Compute the cartesian product of all configurations - configs = map (conf: conf // common) (genConfigs varConfig); - - stageProgram = stage: - if stage ? programPath - then "${stage}${stage.programPath}" else "${stage}"; - - w = runWrappers; - - sbatch = {stage, conf, ...}: with conf; w.sbatch { - program = stageProgram stage; - exclusive = true; - time = "02:00:00"; - qos = "debug"; - jobName = "nbody-bs"; - inherit nixPrefix nodes ntasksPerNode; - }; - - control = {stage, conf, ...}: with conf; w.control { - program = stageProgram stage; - inherit loops; - }; - - srun = {stage, conf, ...}: with conf; w.srun { - program = stageProgram stage; - srunOptions = "--cpu-bind=verbose,rank"; - inherit nixPrefix; - }; - - statspy = {stage, conf, ...}: with conf; w.statspy { - program = stageProgram stage; - }; - - perf = {stage, conf, ...}: with conf; w.perf { - program = stageProgram stage; - perfArgs = "sched record -a"; - }; - - nixsetup = {stage, conf, ...}: with conf; w.nixsetup { - program = stageProgram stage; - }; - - extrae = {stage, conf, ...}: w.extrae { - program = stageProgram stage; - traceLib = "mpi"; # mpi -> libtracempi.so - configFile = ./extrae.xml; - }; - - argv = {stage, conf, ...}: w.argv { - program = stageProgram stage; - env = '' - set -e - export I_MPI_THREAD_SPLIT=1 - ''; - argv = ''( -t ${toString conf.timesteps} - -p ${toString conf.particles} )''; - }; - - nbodyFn = {stage, conf, ...}: with conf; nbody.override { - inherit cc blocksize mpi gitBranch; - }; - - stages = with common; [] - # Use sbatch to request resources first - ++ optional enableSbatch sbatch - - # Repeats the next stages N times - ++ optionals enableControl [ nixsetup control ] - - # Executes srun to launch the program in the requested nodes, and - # immediately after enters the nix environment again, as slurmstepd launches - # the next stages from outside the namespace. - ++ [ srun nixsetup ] - - # Intrumentation with extrae - ++ optional enableExtrae extrae - - # Optionally profile the next stages with perf - ++ optional enablePerf perf - - # Execute the nbody app with the argv and env vars - ++ [ argv nbodyFn ]; - - # List of actual programs to be executed - jobs = map (conf: w.stagen { inherit conf stages; }) configs; - -in - # We simply run each program one after another - w.launch jobs diff --git a/garlic/exp/test/extrae.xml b/garlic/exp/test/extrae.xml deleted file mode 100644 index b9af29b..0000000 --- a/garlic/exp/test/extrae.xml +++ /dev/null @@ -1,211 +0,0 @@ - - - - - - - - - - - - - - - - - 1-3 - - 1-5 - - 1-3 - - 1-3 - - 1-3 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - PAPI_TOT_INS,PAPI_TOT_CYC - - - - - - - - - - - - - - - - - TRACE - - 5 - - /scratch - - /gpfs/scratch/bsc41/bsc41273 - - - - - - 5000000 - - - - - - - - /gpfs/scratch/bsc41/bsc41273/control - - - - - - - 10M - - - - - - - - - - - 500u - - - - - - - - - - - - - - - - - - - - diff --git a/garlic/exp/test/rw.nix b/garlic/exp/test/rw.nix deleted file mode 100644 index b4aa73a..0000000 --- a/garlic/exp/test/rw.nix +++ /dev/null @@ -1,180 +0,0 @@ -{ - stdenv -, nixpkgs -, pkgs -, genApp -, genConfigs -, runWrappers -}: - -with stdenv.lib; - -let - bsc = pkgs.bsc; - - # Set variable configuration for the experiment - varConfig = { - cc = [ bsc.icc ]; - mpi = [ bsc.impi ]; - blocksize = [ 1024 ]; - }; - - # Common configuration - common = { - - # nbody runtime options - particles = 1024*4; - timesteps = 10; - - # Resources - ntasksPerNode = "2"; - nodes = "2"; - - # Stage configuration - enableRunexp = true; - enableSbatch = true; - enableControl = true; - enableExtrae = false; - enablePerf = false; - enableCtf = false; - - # MN4 path - nixPrefix = "/gpfs/projects/bsc15/nix"; - }; - - # Compute the cartesian product of all configurations - configs = map (conf: conf // common) (genConfigs varConfig); - - stageProgram = stage: - if stage ? programPath - then "${stage}${stage.programPath}" else "${stage}"; - - w = runWrappers; - - sbatch = {stage, conf, ...}: with conf; w.sbatch ( - # Allow a user to define a custom reservation for the job in MareNostrum4, - # by setting the garlic.sbatch.reservation attribute in the - # ~/.config/nixpkgs/config.nix file. If the attribute is not set, no - # reservation is used. The user reservation may be overwritten by the - # experiment, if the reservation is set like with nodes or ntasksPerNode. - optionalAttrs (pkgs.config ? garlic.sbatch.reservation) { - inherit (pkgs.config.garlic.sbatch) reservation; - } // { - program = stageProgram stage; - exclusive = true; - time = "02:00:00"; - qos = "debug"; - jobName = "nbody-tampi"; - inherit nixPrefix nodes ntasksPerNode; - } - ); - - control = {stage, conf, ...}: with conf; w.control { - program = stageProgram stage; - }; - - srun = {stage, conf, ...}: with conf; w.srun { - program = stageProgram stage; - srunOptions = "--cpu-bind=verbose,socket"; - inherit nixPrefix; - }; - - statspy = {stage, conf, ...}: with conf; w.statspy { - program = stageProgram stage; - }; - - perf = {stage, conf, ...}: with conf; w.perf { - program = stageProgram stage; - perfArgs = "sched record -a"; - }; - - isolate = {stage, conf, ...}: with conf; w.isolate { - program = stageProgram stage; - clusterName = "mn4"; - inherit nixPrefix; - }; - - extrae = {stage, conf, ...}: w.extrae { - program = stageProgram stage; - traceLib = "mpi"; # mpi -> libtracempi.so - configFile = ./extrae.xml; - }; - - ctf = {stage, conf, ...}: w.argv { - program = stageProgram stage; - env = '' - export NANOS6=ctf - export NANOS6_CTF2PRV=0 - ''; - }; - - argv = {stage, conf, ...}: w.argv { - program = "${pkgs.coreutils}/bin/true"; - env = '' - set -x - pwd - echo hi > hi - ''; - }; - - bscOverlay = import ../../../overlay.nix; - - genPkgs = newOverlay: nixpkgs { - overlays = [ - bscOverlay - newOverlay - ]; - }; - - launch = w.launch.override { - nixPrefix = common.nixPrefix; - }; - - stages = with common; [] - # Launch the experiment remotely - #++ optional enableRunexp runexp - - # Use sbatch to request resources first - ++ optional enableSbatch sbatch - - # Repeats the next stages N times - ++ optionals enableControl [ isolate control ] - - # Executes srun to launch the program in the requested nodes, and - # immediately after enters the nix environment again, as slurmstepd launches - # the next stages from outside the namespace. - ++ [ srun isolate ] - - # Intrumentation with extrae - ++ optional enableExtrae extrae - - # Optionally profile the next stages with perf - ++ optional enablePerf perf - - # Optionally profile nanos6 with the new ctf - ++ optional enableCtf ctf - - ++ [ argv ]; - - # List of actual programs to be executed - jobs = map (conf: w.stagen { inherit conf stages; }) configs; - - launcher = launch jobs; - - runexp = stage: w.runexp { - program = stageProgram stage; - nixPrefix = common.nixPrefix; - }; - - isolatedRun = stage: isolate { - inherit stage; - conf = common; - }; - - final = runexp (isolatedRun launcher); - - -in - # We simply run each program one after another - #launch jobs - final diff --git a/overlay.nix b/overlay.nix index 6280e65..a205878 100644 --- a/overlay.nix +++ b/overlay.nix @@ -243,25 +243,6 @@ let hybrid = callPackage ./garlic/exp/creams/ss+hybrid.nix { }; }; }; - - osu = rec { - latency-internode = callPackage ./garlic/exp/osu/latency.nix { }; - latency-intranode = callPackage ./garlic/exp/osu/latency.nix { - interNode = false; - }; - latency = latency-internode; - }; - - test = { - rw = callPackage ./garlic/exp/test/rw.nix { - pkgs = self // self.bsc.garlic; - nixpkgs = import ; - genApp = self.bsc.garlic.genApp; - genConfigs = self.bsc.garlic.genConfigs; - stages = self.bsc.garlic.stages; - }; -# mpi = callPackage ./bsc/garlic/exp/nbody/mpi.nix { }; - }; }; }; From 6ab448b10a5c19caef1b4d548845525a5c3d3a77 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 9 Oct 2020 20:28:00 +0200 Subject: [PATCH 236/987] Fix trebuchet description --- garlic/stages/experiment.nix | 15 ++------------- garlic/stages/isolate/default.nix | 1 + garlic/stages/trebuchet.nix | 10 +++++++--- 3 files changed, 10 insertions(+), 16 deletions(-) diff --git a/garlic/stages/experiment.nix b/garlic/stages/experiment.nix index f59f590..50ee2be 100644 --- a/garlic/stages/experiment.nix +++ b/garlic/stages/experiment.nix @@ -1,5 +1,6 @@ { stdenv +, garlicTools }: { @@ -7,20 +8,11 @@ }: with stdenv.lib; +with garlicTools; let - stageProgram = stage: - if stage ? programPath - then "${stage}${stage.programPath}" else "${stage}"; - unitsString = builtins.concatStringsSep "\n" (map (x: "${stageProgram x}") units); - - desc = builtins.concatStringsSep "\n" - (map (x: '' - # ${x} - ${x.desc}'') units); - in stdenv.mkDerivation { name = "experiment"; @@ -28,14 +20,11 @@ stdenv.mkDerivation { preferLocalBuild = true; dontPatchShebangs = true; inherit units; - inherit desc; installPhase = '' cat > $out << EOF #!/bin/sh - ${desc} - # This is an experiment formed by the following units: ${unitsString} EOF diff --git a/garlic/stages/isolate/default.nix b/garlic/stages/isolate/default.nix index a373db6..dc074e1 100644 --- a/garlic/stages/isolate/default.nix +++ b/garlic/stages/isolate/default.nix @@ -21,6 +21,7 @@ stdenv.mkDerivation { dontPatchShebangs = true; programPath = "/bin/stage1"; inherit nixPrefix clusterName nixtools busybox; + inherit nextStage; program = stageProgram nextStage; desc = "# $out\n" + (if builtins.hasAttr "desc" nextStage then nextStage.desc else ""); out = "$out"; diff --git a/garlic/stages/trebuchet.nix b/garlic/stages/trebuchet.nix index ff8e6f1..113b154 100644 --- a/garlic/stages/trebuchet.nix +++ b/garlic/stages/trebuchet.nix @@ -13,14 +13,17 @@ , targetCluster ? "mn4" }: +with garlicTools; + let - program = garlicTools.stageProgram nextStage; + program = stageProgram nextStage; in stdenv.mkDerivation { name = "trebuchet"; phases = [ "installPhase" ]; preferLocalBuild = true; dontPatchShebangs = true; + inherit nextStage; installPhase = '' cat > $out < Date: Tue, 13 Oct 2020 12:13:06 +0200 Subject: [PATCH 237/987] Fix tbl preprocessor option --- garlic/doc/Makefile | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/garlic/doc/Makefile b/garlic/doc/Makefile index e30f27e..36e6eeb 100644 --- a/garlic/doc/Makefile +++ b/garlic/doc/Makefile @@ -1,9 +1,8 @@ all: execution.pdf execution.txt %.pdf: %.ms - groff -ms -t -p -Tpdf $^ > $@ - #pdfms $^ 2>&1 >$@ | sed 's/^troff: //g' - killall -HUP mupdf + groff -ms -t -Tpdf $^ > $@ + #killall -HUP mupdf %.txt: %.ms - groff -ms -t -p -Tutf8 $^ > $@ + groff -ms -t -Tutf8 $^ > $@ From f2b39decba669e24d2b2aac7ce25eb233754f7d0 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Date: Tue, 13 Oct 2020 12:13:56 +0200 Subject: [PATCH 238/987] Update execution doc with isolation --- garlic/doc/execution.ms | 215 ++++++++++++++++++++++++---------------- 1 file changed, 129 insertions(+), 86 deletions(-) diff --git a/garlic/doc/execution.ms b/garlic/doc/execution.ms index b38f81c..e5a64a0 100644 --- a/garlic/doc/execution.ms +++ b/garlic/doc/execution.ms @@ -1,5 +1,5 @@ .TL -Garlic execution +Garlic: the execution pipeline .AU Rodrigo Arias Mallo .AI @@ -10,8 +10,8 @@ This document covers the execution of experiments in the Garlic benchmark, which are performed under strict conditions. The several stages of the execution are documented so the experimenter can have a global overview of how the benchmark runs under the hood. -During the execution of the experiments, the results are -stored in a file which will be used in posterior processing steps. +The measurements taken during the execution of the experiment are stored +in a file used in posterior processing steps. .AE .\"##################################################################### .nr GROWPS 3 @@ -24,44 +24,50 @@ stored in a file which will be used in posterior processing steps. Introduction .LP Every experiment in the Garlic -benchmark is controled by one +benchmark is controlled by a single .I nix -file. -An experiment consists of several shell scripts which are executed -sequentially and perform several tasks to setup the +file placed in the +.CW garlic/exp +subdirectory. +Experiments are formed by several +.I "experimental units" +or simply +.I units . +A unit is the result of each unique configuration of the experiment +(typically involves the cartesian product of all factors) and +consists of several shell scripts executed sequentially to setup the .I "execution environment" , -which finally launch the actual program that is being analyzed. +which finally launch the actual program being analyzed. The scripts that prepare the environment and the program itself are called the .I stages -of the execution, which altogether form the +of the execution and altogether form the .I "execution pipeline" or simply the .I pipeline . The experimenter must know with very good details all the stages -involved in the pipeline, as they can affect with great impact the -result of the execution. +involved in the pipeline, as they have a large impact on the execution. .PP -The experiments have a very strong dependency on the cluster where they -run, as the results will be heavily affected. The software used for the -benchmark is carefully configured for the hardware used in the -execution. In particular, the experiments are designed to run in -MareNostrum 4 cluster with the SLURM workload manager. In the future we -plan to add support for other clusters, in order to execute the -experiments in other machines. +Additionally, the execution time is impacted by the target machine in +which the experiments run. The software used for the benchmark is +carefully configured and tuned for the hardware used in the execution; +in particular, the experiments are designed to run in MareNostrum 4 +cluster with the SLURM workload manager and the Omni-Path +interconnection network. In the future we plan to add +support for other clusters in order to execute the experiments in other +machines. .\"##################################################################### .NH 1 Isolation .LP The benchmark is designed so that both the compilation of every software package and the execution of the experiment is performed under strict -conditions. Therefore, we can provide a guarantee that two executions -of the same experiment are actually running the same program in the same -environment. +conditions. We can ensure that two executions of the same experiment are +actually running the same program in the same software environment. .PP All the software used by an experiment is included in the .I "nix store" -which is, by convention, located in the +which is, by convention, located at the .CW /nix directory. Unfortunately, it is common for libraries to try to load software from other paths like @@ -74,130 +80,167 @@ and from the home directory of the user that runs the experiment. Additionally, some environment variables are recognized by the libraries used in the experiment, which change their behavior. As we cannot control the software and configuration files in those directories, we -coudn't guarantee that the execution behaves as intended. +couldn't guarantee that the execution behaves as intended. .PP -In order to avoid this problem, we create a secure +In order to avoid this problem, we create a .I sandbox where only the files in the nix store are available (with some other exceptions). Therefore, even if the libraries try to access any path outside the nix store, they will find that the files are not there -anymore. +anymore. Additionally, the environment variables are cleared before +entering the environment (with some exceptions as well). .\"##################################################################### .NH 1 -Execution stages +Execution pipeline .LP -There are several predefined stages which form the +Several predefined stages form the .I standard -execution pipeline. The standard pipeline is divided in two main parts: -1) connecting to the target machine and submiting a job to SLURM, and 2) -executing the job itself. +execution pipeline and are defined in the +.I stdPipeline +array. The standard pipeline prepares the resources and the environment +to run a program (usually in parallel) in the compute nodes. It is +divided in two main parts: +connecting to the target machine to submit a job and executing the job. +Finally, the complete execution pipeline ends by running the actual +program, which is not part of the standard pipeline, as should be +defined differently for each program. .NH 2 Job submission .LP -Three stages are involved in the job submision. The +Some stages are involved in the job submission: the .I trebuchet stage connects via .I ssh to the target machine and executes the next stage there. Once in the target machine, the .I isolate -stage is executed to enter the sandbox. Finally, the +stage is executed to enter the sandbox and the +.I experiment +stage is executed, running the experiment which launches several +.I unit +stages. +.PP +Each unit executes a .I sbatch -stage runs the +stage which runs the .I sbatch(1) -program with a job script with simply executes the next stage. The -sbatch program reads the +program with a job script that simply executes the next stage. The +sbatch program internally reads the .CW /etc/slurm/slurm.conf file from outside the sandbox, so we must explicitly allow this file to -be available as well as the +be available, as well as the .I munge -socket, used for authentication. +socket used for authentication by the SLURM daemon. Once the jobs are +submitted to SLURM, the experiment stage ends and the trebuchet finishes +the execution. The jobs will be queued for execution without any other +intervention from the user. .PP -The rationale behind running sbatch from the sandbox is that the options -provided in enviroment variables override the options from the job -script. Therefore, we avoid this problem by running sbatch from the -sandbox, where potentially dangerous environment variables were removed. +The rationale behind running sbatch from the sandbox is because the +options provided in environment variables override the options from the +job script. Therefore, we avoid this problem by running sbatch from the +sandbox, where the interfering environment variables are removed. The +sbatch program is also provided in the +.I "nix store" , +with a version compatible with the SLURM daemon running in the target +cluster. .NH 2 -Seting up the environment +Job execution .LP -Once the job has been selected for execution, the SLURM daemon allocates -the resources and then selects one of the nodes to run the job script -(is not executed in parallel). Additionally, the job script is executed -from a child process, forked from on of the SLURM processes, which is -outside the sandbox. Therefore, we first run the +Once an unit job has been selected for execution, SLURM +allocates the resources (usually several nodes) and then selects one of +the nodes to run the job script: it is not executed in parallel yet. +The job script runs from a child process forked from on of the SLURM +daemon processes, which are outside the sandbox. Therefore, we first run the .I isolate stage to enter the sandbox again. .PP The next stage is called .I control -and determines if enough data has been generated by the experiment or if -it should continue repeating the execution. At the current time, is only -implemented as a simple loop that runs the next stage a fixed amount of -times. +and determines if enough data has been generated by the experiment unit +or if it should continue repeating the execution. At the current time, +it is only implemented as a simple loop that runs the next stage a fixed +amount of times (by default, it is repeated 30 times). .PP The following stage is .I srun -which usually launches several copies of the next stage to run in +which launches several copies of the next stage to run in parallel (when using more than one task). Runs one copy per task, -effectively creating one process per task. The set of CPUs available to -each process is computed by the parameter +effectively creating one process per task. The CPUs affinity is +configured by the parameter .I --cpu-bind -and is crucial to set it correctly; is documented in the +and is important to set it correctly (see more details in the .I srun(1) -manual. Apending the +manual). Appending the .I verbose value to the cpu bind option causes srun to print the assigned affinity -of each task so that it can be reviewed in the execution log. +of each task, which is very valuable when examining the execution log. .PP The mechanism by which srun executes multiple processes is the same used by sbatch, it forks from a SLURM daemon running in the computing nodes. Therefore, the execution begins outside the sandbox. The next stage is .I isolate -which enters again the sandbox in every task (from now on, all stages -are running in parallel). -.PP -At this point in the execution, we are ready to run the actual program -that is the matter of the experiment. Usually, the programs require some -argument options to be passed in the command line. The -.I argv -stage sets the arguments and optionally some environment variables and +which enters again the sandbox in every task. All remaining stages are +running now in parallel. +.\" ################################################################### +.NH 2 +The program +.LP +At this point in the execution, the standard pipeline has been +completely executed, and we are ready to run the actual program that is +the matter of the experiment. Usually, programs require some arguments +to be passed in the command line. The +.I exec +stage sets the arguments (and optionally some environment variables) and executes the last stage, the .I program . +.PP +The experimenters are required to define these last stages, as they +define the specific way in which the program must be executed. +Additional stages may be included before or after the program run, so +they can perform additional steps. +.\" ################################################################### .NH 2 Stage overview .LP -The standard execution pipeline contains the stages listed in the table -1, ordered by the execution time. Additional stages can be placed before -the argv stage, to modify the execution. Usually debugging programs and -other options can be included there. +The complete execution pipeline using the standard pipeline is shown in +the Table 1. Some properties are also reflected about the execution +stages. .KF .TS center; -lB cB cB cB -l c c c. +lB cB cB cB cB cB +l c c c c c. _ -Stage Target Safe Copies +Stage Target Safe Copies User Std _ -trebuchet no no no -isolate yes no no -sbatch yes yes no -isolate yes no no -control yes yes no -srun yes yes no -isolate yes no yes -argv yes yes yes -program yes yes yes +trebuchet xeon no no yes yes +isolate login no no yes yes +experiment login yes no no yes +unit login yes no no yes +sbatch login yes no no yes +_ +isolate comp no no no yes +control comp yes no no yes +srun comp yes no no yes +isolate comp no yes no yes +_ +exec comp yes yes no no +program comp yes yes no no _ .TE -.QP +.QS .B "Table 1" : -The stages of a standard execution pipeline. The +The stages of a complete execution pipeline. The .B target -column determines whether the stage is running in the target cluster; +column determines where the stage is running, .B safe -states if the stage is running in the sandbox and +states if the stage begins the execution inside the sandbox, +.B user +if it can be executed directly by the user, .B copies -if there are several instances of the stages running in parallel. +if there are several instances running in parallel and +.B std +if is part of the standard execution pipeline. .QE .KE From d0a259f15dc349ee2c276970695825e71e878247 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Date: Tue, 13 Oct 2020 12:14:19 +0200 Subject: [PATCH 239/987] Ignore generated doc --- garlic/doc/.gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/garlic/doc/.gitignore b/garlic/doc/.gitignore index d62ddbb..292d969 100644 --- a/garlic/doc/.gitignore +++ b/garlic/doc/.gitignore @@ -1,2 +1,2 @@ -*.pdf *.txt +*.pdf From a38ff31ccabb2a3a189634a43c12c22eccc3fcbb Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 13 Oct 2020 13:00:59 +0200 Subject: [PATCH 240/987] Introduce the runexp stage --- garlic/stages/experiment.nix | 15 +++++++++++++++ garlic/stages/runexp/default.nix | 29 +++++++++++++++++++++++++++++ garlic/stages/runexp/runexp | 18 ++++++++++++++++++ garlic/stages/sbatch.nix | 16 +++++----------- garlic/stages/trebuchet.nix | 18 +++++++----------- garlic/stdexp.nix | 11 +++++++---- overlay.nix | 1 + 7 files changed, 82 insertions(+), 26 deletions(-) create mode 100644 garlic/stages/runexp/default.nix create mode 100755 garlic/stages/runexp/runexp diff --git a/garlic/stages/experiment.nix b/garlic/stages/experiment.nix index 50ee2be..3ad4715 100644 --- a/garlic/stages/experiment.nix +++ b/garlic/stages/experiment.nix @@ -25,6 +25,21 @@ stdenv.mkDerivation { cat > $out << EOF #!/bin/sh + if [ -z "\$GARLIC_OUT" ]; then + >&2 echo "GARLIC_OUT not defined, aborting" + exit 1 + fi + + export GARLIC_EXPERIMENT=$(basename $out) + + if [ -e "\$GARLIC_EXPERIMENT" ]; then + >&2 echo "Already exists \$GARLIC_EXPERIMENT, aborting" + exit 1 + fi + + mkdir -p "\$GARLIC_EXPERIMENT" + cd "\$GARLIC_EXPERIMENT" + # This is an experiment formed by the following units: ${unitsString} EOF diff --git a/garlic/stages/runexp/default.nix b/garlic/stages/runexp/default.nix new file mode 100644 index 0000000..991a7d8 --- /dev/null +++ b/garlic/stages/runexp/default.nix @@ -0,0 +1,29 @@ +{ + stdenv +, garlicTools +}: + +{ + nextStage +, nixPrefix +}: + +with garlicTools; + +stdenv.mkDerivation { + name = "runexp"; + preferLocalBuild = true; + phases = [ "unpackPhase" "installPhase" ]; + src = ./.; + dontPatchShebangs = true; + programPath = "/bin/runexp"; + inherit nixPrefix nextStage; + program = stageProgram nextStage; + installPhase = '' + substituteAllInPlace runexp + + mkdir -p $out/bin + cp runexp $out/bin/ + chmod +x $out/bin/runexp + ''; +} diff --git a/garlic/stages/runexp/runexp b/garlic/stages/runexp/runexp new file mode 100755 index 0000000..5b929a5 --- /dev/null +++ b/garlic/stages/runexp/runexp @@ -0,0 +1,18 @@ +#!/bin/sh -ex + +if [ -e /nix ]; then + >&2 echo "Cannot use runexp inside nix environment!" + exit 1 +fi + +>&2 echo Running runexp for MN4 +>&2 echo PATH=$PATH + +user=$(id -un) +group=$(id -gn) + +export GARLIC_OUT="/gpfs/projects/$group/$user/garlic-out" +mkdir -p "$GARLIC_OUT" +cd "$GARLIC_OUT" + +exec @nixPrefix@@program@ diff --git a/garlic/stages/sbatch.nix b/garlic/stages/sbatch.nix index 4bd49fd..74f696d 100644 --- a/garlic/stages/sbatch.nix +++ b/garlic/stages/sbatch.nix @@ -8,7 +8,7 @@ { nextStage , jobName -, chdirPrefix ? "." +, chdir ? "." , nixPrefix ? "" , binary ? "/bin/run" , ntasks ? null @@ -49,7 +49,7 @@ stdenv.mkDerivation rec { #SBATCH --cpus-per-task=1 dontBuild = true; dontPatchShebangs = true; - programPath = "/${name}"; + programPath = "/run"; installPhase = '' mkdir -p $out @@ -61,7 +61,7 @@ stdenv.mkDerivation rec { + sbatchOpt "ntasks-per-node" ntasksPerNode + sbatchOpt "ntasks-per-socket" ntasksPerSocket + sbatchOpt "nodes" nodes - + sbatchOpt "chdir" "${chdirPrefix}/$(basename $out)" + + sbatchOpt "chdir" chdir + sbatchOpt "output" output + sbatchOpt "error" error + sbatchEnable "exclusive" exclusive @@ -75,16 +75,10 @@ stdenv.mkDerivation rec { exec ${nixPrefix}${stageProgram nextStage} EOF - cat > $out/${name} < $out/run <&2 echo "Execution aborted: '${chdirPrefix}/$(basename $out)' already exists" - exit 1 - fi - mkdir -p "${chdirPrefix}/$(basename $out)" - echo ${slurm}/bin/sbatch ${nixPrefix}$out/job ${slurm}/bin/sbatch ${nixPrefix}$out/job EOF - chmod +x $out/${name} + chmod +x $out/run ''; } diff --git a/garlic/stages/trebuchet.nix b/garlic/stages/trebuchet.nix index 113b154..045ab51 100644 --- a/garlic/stages/trebuchet.nix +++ b/garlic/stages/trebuchet.nix @@ -1,6 +1,5 @@ { stdenv -, nixtools , garlicTools }: @@ -29,18 +28,15 @@ stdenv.mkDerivation { #!/bin/sh -e # Using the token @upload-to-mn@ we instruct the post-build hook to upload # this script and it's closure to the MN4 cluster, so it can run there. + + # This trebuchet launches: + # ${nextStage} + # ${nextStage.nextStage} + # ${nextStage.nextStage.nextStage} + # Take a look at ${program} # to see what is being executed. - - # This trebuchet launches the following experiment in an isolated - # environment: - # ${nextStage.nextStage} - - nixtools=${nixPrefix}${nixtools}/bin - runexp=\$nixtools/${targetCluster}/runexp - - >&2 echo "Launching \"\$runexp ${program}\" in MN4" - ssh ${sshHost} \$runexp ${program} + ssh ${sshHost} ${nixPrefix}${program} EOF chmod +x $out ''; diff --git a/garlic/stdexp.nix b/garlic/stdexp.nix index e456c76..880cdcd 100644 --- a/garlic/stdexp.nix +++ b/garlic/stdexp.nix @@ -14,13 +14,16 @@ let in rec { /* Takes a list of units and builds an experiment, after executing the - trebuchet and the isolate stages. Returns the trebuchet stage. */ + trebuchet, runexp and isolate stages. Returns the trebuchet stage. */ buildTrebuchet = units: stages.trebuchet { inherit (machineConf) nixPrefix; - nextStage = stages.isolate { + nextStage = stages.runexp { inherit (machineConf) nixPrefix; - nextStage = stages.experiment { - inherit units; + nextStage = stages.isolate { + inherit (machineConf) nixPrefix; + nextStage = stages.experiment { + inherit units; + }; }; }; }; diff --git a/overlay.nix b/overlay.nix index a205878..cb4108a 100644 --- a/overlay.nix +++ b/overlay.nix @@ -212,6 +212,7 @@ let extrae = callPackage ./garlic/stages/extrae.nix { }; valgrind = callPackage ./garlic/stages/valgrind.nix { }; isolate = callPackage ./garlic/stages/isolate { }; + runexp = callPackage ./garlic/stages/runexp { }; trebuchet = callPackage ./garlic/stages/trebuchet.nix { }; strace = callPackage ./garlic/stages/strace.nix { }; unit = callPackage ./garlic/stages/unit.nix { }; From 04328d81ffba419028bf7d8aac39077c19f88693 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Date: Tue, 13 Oct 2020 14:07:34 +0200 Subject: [PATCH 241/987] Add runexp stage documentation --- garlic/doc/execution.ms | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/garlic/doc/execution.ms b/garlic/doc/execution.ms index e5a64a0..cfc3265 100644 --- a/garlic/doc/execution.ms +++ b/garlic/doc/execution.ms @@ -10,8 +10,8 @@ This document covers the execution of experiments in the Garlic benchmark, which are performed under strict conditions. The several stages of the execution are documented so the experimenter can have a global overview of how the benchmark runs under the hood. -The measurements taken during the execution of the experiment are stored -in a file used in posterior processing steps. +The results of the experiment are stored in a known path to be used in +posterior processing steps. .AE .\"##################################################################### .nr GROWPS 3 @@ -113,10 +113,17 @@ stage connects via .I ssh to the target machine and executes the next stage there. Once in the target machine, the +.I runexp +stage computes the output path to store the experiment results, using +the user and group in the target cluster and changes the working +directory there. In MareNostrum 4 the output path is at +.CW /gpfs/projects/$group/$user/garlic-out . +Then the .I isolate stage is executed to enter the sandbox and the .I experiment -stage is executed, running the experiment which launches several +stage begins, which creates a directory to store the experiment output, +and launches several .I unit stages. .PP @@ -124,7 +131,7 @@ Each unit executes a .I sbatch stage which runs the .I sbatch(1) -program with a job script that simply executes the next stage. The +program with a job script that simply calls the next stage. The sbatch program internally reads the .CW /etc/slurm/slurm.conf file from outside the sandbox, so we must explicitly allow this file to @@ -215,7 +222,8 @@ _ Stage Target Safe Copies User Std _ trebuchet xeon no no yes yes -isolate login no no yes yes +runexp login no no yes yes +isolate login no no no yes experiment login yes no no yes unit login yes no no yes sbatch login yes no no yes From 05b37aa11d1a472ea47c1e7fa8af44f58f2217f6 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 13 Oct 2020 14:16:30 +0200 Subject: [PATCH 242/987] Remove cluster scripts from nixtools --- bsc/nixtools/default.nix | 20 ++++++-------------- overlay.nix | 5 +---- 2 files changed, 7 insertions(+), 18 deletions(-) diff --git a/bsc/nixtools/default.nix b/bsc/nixtools/default.nix index 6cfc702..1e5ce4c 100644 --- a/bsc/nixtools/default.nix +++ b/bsc/nixtools/default.nix @@ -1,25 +1,17 @@ { stdenv , glibc -, targetCluster -, nixPrefix }: stdenv.mkDerivation rec { - name = "nixtools-${targetCluster}"; - #version = "${src.shortRev}"; - src = ~/nixtools; + pname = "nixtools"; + version = "${src.shortRev}"; + src = builtins.fetchGit { + url = "ssh://git@bscpm02.bsc.es/rarias/nixtools"; + ref = "master"; + }; buildInputs = [ glibc.static ]; makeFlags = [ "DESTDIR=$(out)" ]; preBuild = "env"; dontPatchShebangs = true; - inherit nixPrefix targetCluster; - postPatch = '' - substituteAllInPlace scripts/cobi/runexp - sed -i s:@nixtools@:$out:g scripts/cobi/runexp - ''; - #src = builtins.fetchGit { - # url = "ssh://git@bscpm02.bsc.es/rarias/nixtools"; - # ref = "master"; - #}; } diff --git a/overlay.nix b/overlay.nix index cb4108a..cd90dd2 100644 --- a/overlay.nix +++ b/overlay.nix @@ -135,10 +135,7 @@ let enableStatic = true; }; - nixtools = callPackage ./bsc/nixtools/default.nix { - targetCluster = "mn4"; - nixPrefix = "/gpfs/projects/bsc15/nix"; - }; + nixtools = callPackage ./bsc/nixtools/default.nix { }; garlicTools = callPackage ./garlic/tools.nix {}; From 7a37913b4e02e44e66ffd4aff0bf58801459d4cb Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 13 Oct 2020 14:30:03 +0200 Subject: [PATCH 243/987] Set the ssh host from the machine config --- garlic/machines.nix | 2 +- garlic/stages/trebuchet.nix | 5 +---- garlic/stdexp.nix | 2 +- 3 files changed, 3 insertions(+), 6 deletions(-) diff --git a/garlic/machines.nix b/garlic/machines.nix index 77df966..d5a0af2 100644 --- a/garlic/machines.nix +++ b/garlic/machines.nix @@ -7,7 +7,7 @@ mn4 = { config = { name = "mn4"; - sshHosts = [ "mn1" "mn2" "mn3" ]; + sshHost = "mn1"; nixPrefix = "/gpfs/projects/bsc15/nix"; cachelineBytes = 64; march = "skylake-avx512"; diff --git a/garlic/stages/trebuchet.nix b/garlic/stages/trebuchet.nix index 045ab51..83e0dac 100644 --- a/garlic/stages/trebuchet.nix +++ b/garlic/stages/trebuchet.nix @@ -6,10 +6,7 @@ { nextStage , nixPrefix - -# FIXME: These two should be specified in the configuration of the machine -, sshHost ? "mn" -, targetCluster ? "mn4" +, sshHost }: with garlicTools; diff --git a/garlic/stdexp.nix b/garlic/stdexp.nix index 880cdcd..7a584de 100644 --- a/garlic/stdexp.nix +++ b/garlic/stdexp.nix @@ -16,7 +16,7 @@ rec { /* Takes a list of units and builds an experiment, after executing the trebuchet, runexp and isolate stages. Returns the trebuchet stage. */ buildTrebuchet = units: stages.trebuchet { - inherit (machineConf) nixPrefix; + inherit (machineConf) nixPrefix sshHost; nextStage = stages.runexp { inherit (machineConf) nixPrefix; nextStage = stages.isolate { From 478535b4d13fbb5c68d84e046f5d37dd30d7123e Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 13 Oct 2020 17:43:23 +0200 Subject: [PATCH 244/987] Define CC and CXX for gcc --- overlay.nix | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/overlay.nix b/overlay.nix index cd90dd2..d66a957 100644 --- a/overlay.nix +++ b/overlay.nix @@ -58,6 +58,18 @@ let intelLicense = self.bsc.intelLicense; }; + # We need to set the cc.cc.CC and cc.cc.CXX attributes, in order to + # determine the name of the compiler + # FIXME: Use a proper and automatic way to compute the compiler name + gcc = self.gcc.overrideAttrs (old1: { + cc = old1.cc.overrideAttrs (old2: { + passthru = old2.passthru // { + CC = "gcc"; + CXX = "g++"; + }; + }); + }); + intelLicense = callPackage ./bsc/intel-compiler/license.nix { }; pmix2 = callPackage ./bsc/pmix/pmix2.nix { }; From 148c614540015160f6d771f1a8602c4e5a3d3e95 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 14 Oct 2020 16:24:56 +0200 Subject: [PATCH 245/987] Add MN4 hw description --- garlic/machines.nix | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/garlic/machines.nix b/garlic/machines.nix index d5a0af2..fab56ed 100644 --- a/garlic/machines.nix +++ b/garlic/machines.nix @@ -9,9 +9,14 @@ name = "mn4"; sshHost = "mn1"; nixPrefix = "/gpfs/projects/bsc15/nix"; - cachelineBytes = 64; march = "skylake-avx512"; mtune = "skylake-avx512"; + hw = { + cpusPerNode = 48; + cpusPerSocket = 24; + socketsPerNode = 2; + cachelineBytes = 64; + }; }; # TODO: Add the specific details for SLURM and the interconection here }; From c7d2e2d8668c57668eef3cd29a832489db1fe50b Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 14 Oct 2020 16:27:47 +0200 Subject: [PATCH 246/987] Write the unit config in a file --- garlic/stages/unit.nix | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/garlic/stages/unit.nix b/garlic/stages/unit.nix index 2adb444..87650f8 100644 --- a/garlic/stages/unit.nix +++ b/garlic/stages/unit.nix @@ -1,6 +1,7 @@ { stdenv , bash +, writeText }: { @@ -35,6 +36,8 @@ let firstStage = (x: x.programPath) (elemAt linkStages 0); + + jsonConf = writeText "garlic_config.json" (builtins.toJSON conf); in stdenv.mkDerivation { name = "unit"; @@ -54,6 +57,9 @@ stdenv.mkDerivation { mkdir \$GARLIC_UNIT cd \$GARLIC_UNIT + # Copy the configuration for the unit to the output path + cp ${jsonConf} garlic_config.json + # Finally, execute the first stage: exec ${firstStage} EOF From 9d8f7d907489e5cd9ceee8a0467d5fa98285d08a Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 14 Oct 2020 16:28:27 +0200 Subject: [PATCH 247/987] Print the experiment being run --- garlic/stages/experiment.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/garlic/stages/experiment.nix b/garlic/stages/experiment.nix index 3ad4715..0195780 100644 --- a/garlic/stages/experiment.nix +++ b/garlic/stages/experiment.nix @@ -31,6 +31,7 @@ stdenv.mkDerivation { fi export GARLIC_EXPERIMENT=$(basename $out) + echo "Running experiment \$GARLIC_EXPERIMENT" if [ -e "\$GARLIC_EXPERIMENT" ]; then >&2 echo "Already exists \$GARLIC_EXPERIMENT, aborting" From 80ccd1240a29ecd18cb6ce5f4a135f98931b1659 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 14 Oct 2020 16:29:22 +0200 Subject: [PATCH 248/987] Less verbose execution --- garlic/stages/isolate/default.nix | 3 --- garlic/stages/isolate/stage1 | 8 ++++---- garlic/stages/isolate/stage2 | 6 +++--- garlic/stages/runexp/runexp | 2 +- garlic/stages/sbatch.nix | 4 ++-- garlic/stages/srun.nix | 2 +- 6 files changed, 11 insertions(+), 14 deletions(-) diff --git a/garlic/stages/isolate/default.nix b/garlic/stages/isolate/default.nix index dc074e1..b8c0722 100644 --- a/garlic/stages/isolate/default.nix +++ b/garlic/stages/isolate/default.nix @@ -26,9 +26,6 @@ stdenv.mkDerivation { desc = "# $out\n" + (if builtins.hasAttr "desc" nextStage then nextStage.desc else ""); out = "$out"; installPhase = '' - - echo PATH=$PATH - substituteAllInPlace stage1 substituteAllInPlace stage2 diff --git a/garlic/stages/isolate/stage1 b/garlic/stages/isolate/stage1 index 02ed71b..eab0274 100644 --- a/garlic/stages/isolate/stage1 +++ b/garlic/stages/isolate/stage1 @@ -1,7 +1,7 @@ -#!/bin/bash -ex +#!/bin/bash -e ->&2 echo Running isolate stage1 ->&2 echo PATH=$PATH +#>&2 echo Running isolate stage1 +#>&2 echo PATH=$PATH if [ -e /nix ]; then >&2 echo "/nix found, aborting" @@ -42,5 +42,5 @@ mounts=( join_flags="${mounts[@]}" -exec $nixjoin -v -i $join_flags $nixhome -- \ +exec $nixjoin -i $join_flags $nixhome -- \ env -i "${env[@]}" @out@/bin/stage2 diff --git a/garlic/stages/isolate/stage2 b/garlic/stages/isolate/stage2 index a4ae039..bc89412 100644 --- a/garlic/stages/isolate/stage2 +++ b/garlic/stages/isolate/stage2 @@ -1,7 +1,7 @@ -#!/bin/sh -ex +#!/bin/sh -e ->&2 echo Running isolate stage2 ->&2 echo PATH=$PATH +#>&2 echo Running isolate stage2 +#>&2 echo PATH=$PATH if [ ! -e /nix ]; then >&2 echo "/nix not found, aborting" diff --git a/garlic/stages/runexp/runexp b/garlic/stages/runexp/runexp index 5b929a5..1d61515 100755 --- a/garlic/stages/runexp/runexp +++ b/garlic/stages/runexp/runexp @@ -1,4 +1,4 @@ -#!/bin/sh -ex +#!/bin/sh -e if [ -e /nix ]; then >&2 echo "Cannot use runexp inside nix environment!" diff --git a/garlic/stages/sbatch.nix b/garlic/stages/sbatch.nix index 74f696d..d46c180 100644 --- a/garlic/stages/sbatch.nix +++ b/garlic/stages/sbatch.nix @@ -54,7 +54,7 @@ stdenv.mkDerivation rec { installPhase = '' mkdir -p $out cat > $out/job < $out/run < $out < Date: Fri, 16 Oct 2020 18:18:31 +0200 Subject: [PATCH 249/987] Add babeltrace2 for nanos6 --- bsc/babeltrace2/default.nix | 32 ++++++++++++++++++++++++++++++++ overlay.nix | 2 ++ 2 files changed, 34 insertions(+) create mode 100644 bsc/babeltrace2/default.nix diff --git a/bsc/babeltrace2/default.nix b/bsc/babeltrace2/default.nix new file mode 100644 index 0000000..b99b895 --- /dev/null +++ b/bsc/babeltrace2/default.nix @@ -0,0 +1,32 @@ +{ + stdenv +, fetchurl +, pkgconfig +, glib +, libuuid +, popt +, elfutils +, python3 +, swig4 +, ncurses +, breakpointHook +}: + +stdenv.mkDerivation rec { + pname = "babeltrace2"; + version = "2.0.3"; + + src = fetchurl { + url = "https://www.efficios.com/files/babeltrace/${pname}-${version}.tar.bz2"; + sha256 = "1804pyq7fz6rkcz4r1abkkn0pfnss13m6fd8if32s42l4lajadm5"; + }; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ glib libuuid popt elfutils python3 swig4 ncurses breakpointHook ]; + + configureFlags = [ + "--enable-python-plugins" + "--enable-python-bindings" + ]; + +} diff --git a/overlay.nix b/overlay.nix index d66a957..7a3172c 100644 --- a/overlay.nix +++ b/overlay.nix @@ -116,6 +116,8 @@ let nanos6Latest = callPackage ./bsc/nanos6/default.nix { }; nanos6Git = callPackage ./bsc/nanos6/git.nix { }; + babeltrace2 = callPackage ./bsc/babeltrace2/default.nix { }; + vtk = callPackage ./bsc/vtk/default.nix { inherit (self.xorg) libX11 xorgproto libXt; }; From ae6a3f920609d3a39a5c9821b0d7a037f76c76d3 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 16 Oct 2020 19:31:43 +0200 Subject: [PATCH 250/987] Enable python bindings in babeltrace 1 --- bsc/babeltrace/default.nix | 25 +++++++++++++++++++++++++ overlay.nix | 1 + 2 files changed, 26 insertions(+) create mode 100644 bsc/babeltrace/default.nix diff --git a/bsc/babeltrace/default.nix b/bsc/babeltrace/default.nix new file mode 100644 index 0000000..973820a --- /dev/null +++ b/bsc/babeltrace/default.nix @@ -0,0 +1,25 @@ +{ stdenv, fetchurl, pkgconfig, glib, libuuid, popt, elfutils, swig4, python3 }: + +stdenv.mkDerivation rec { + name = "babeltrace-1.5.8"; + + src = fetchurl { + url = "https://www.efficios.com/files/babeltrace/${name}.tar.bz2"; + sha256 = "1hkg3phnamxfrhwzmiiirbhdgckzfkqwhajl0lmr1wfps7j47wcz"; + }; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ glib libuuid popt elfutils swig4 python3 ]; + + meta = with stdenv.lib; { + description = "Command-line tool and library to read and convert LTTng tracefiles"; + homepage = "https://www.efficios.com/babeltrace"; + license = licenses.mit; + platforms = platforms.linux; + maintainers = [ maintainers.bjornfor ]; + }; + + configureFlags = [ + "--enable-python-bindings" + ]; +} diff --git a/overlay.nix b/overlay.nix index 7a3172c..69b9a3e 100644 --- a/overlay.nix +++ b/overlay.nix @@ -116,6 +116,7 @@ let nanos6Latest = callPackage ./bsc/nanos6/default.nix { }; nanos6Git = callPackage ./bsc/nanos6/git.nix { }; + babeltrace = callPackage ./bsc/babeltrace/default.nix { }; babeltrace2 = callPackage ./bsc/babeltrace2/default.nix { }; vtk = callPackage ./bsc/vtk/default.nix { From 8b985de65dc6e07b169b1bc955d42e01144dbd91 Mon Sep 17 00:00:00 2001 From: Antoni Navarro Date: Wed, 28 Oct 2020 15:35:09 +0100 Subject: [PATCH 251/987] Add a few scalability experiments for some variants --- .../nbody/{test.nix => granularity-mpi.nix} | 8 +-- garlic/exp/nbody/granularity-oss.nix | 61 ++++++++++++++++++ garlic/exp/nbody/weak-scaling-oss.nix | 62 +++++++++++++++++++ 3 files changed, 127 insertions(+), 4 deletions(-) rename garlic/exp/nbody/{test.nix => granularity-mpi.nix} (92%) create mode 100644 garlic/exp/nbody/granularity-oss.nix create mode 100644 garlic/exp/nbody/weak-scaling-oss.nix diff --git a/garlic/exp/nbody/test.nix b/garlic/exp/nbody/granularity-mpi.nix similarity index 92% rename from garlic/exp/nbody/test.nix rename to garlic/exp/nbody/granularity-mpi.nix index 724328a..9b152a3 100644 --- a/garlic/exp/nbody/test.nix +++ b/garlic/exp/nbody/granularity-mpi.nix @@ -11,13 +11,13 @@ with stdenv.lib; let # Initial variable configuration varConf = with bsc; { - blocksize = [ 1024 2048 ]; + blocksize = [ 128 256 512 1024 2048 4096 ]; }; # Generate the complete configuration for each unit genConf = with bsc; c: targetMachine.config // rec { # nbody options - particles = 1024 * 4; + particles = 1024 * 64; timesteps = 10; inherit (c) blocksize; cc = icc; @@ -29,7 +29,7 @@ let # Resources qos = "debug"; - ntasksPerNode = 2; + ntasksPerNode = 48; nodes = 1; time = "02:00:00"; cpuBind = "sockets,verbose"; @@ -57,5 +57,5 @@ let pipeline = stdexp.stdPipeline ++ [ exec program ]; in - + stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/nbody/granularity-oss.nix b/garlic/exp/nbody/granularity-oss.nix new file mode 100644 index 0000000..1becb3a --- /dev/null +++ b/garlic/exp/nbody/granularity-oss.nix @@ -0,0 +1,61 @@ +{ + stdenv +, stdexp +, bsc +, targetMachine +, stages +}: + +with stdenv.lib; + +let + # Initial variable configuration + varConf = with bsc; { + blocksize = [ 128 256 512 1024 2048 4096 ]; + }; + + # Generate the complete configuration for each unit + genConf = with bsc; c: targetMachine.config // rec { + # nbody options + particles = 1024 * 64; + timesteps = 10; + inherit (c) blocksize; + cc = icc; + mpi = impi; + gitBranch = "garlic/oss+task"; + + # Repeat the execution of each unit 30 times + loops = 30; + + # Resources + qos = "debug"; + ntasksPerNode = 1; + nodes = 1; + time = "02:00:00"; + cpuBind = "sockets,verbose"; + jobName = "nbody-bs-${toString blocksize}-${gitBranch}"; + }; + + # Compute the array of configurations + configs = stdexp.buildConfigs { + inherit varConf genConf; + }; + + exec = {nextStage, conf, ...}: with conf; stages.exec { + inherit nextStage; + argv = [ "-t" timesteps "-p" particles ]; + }; + + program = {nextStage, conf, ...}: with conf; + let + customPkgs = stdexp.replaceMpi conf.mpi; + in + customPkgs.apps.nbody.override { + inherit cc blocksize mpi gitBranch; + }; + + pipeline = stdexp.stdPipeline ++ [ exec program ]; + +in + + stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/nbody/weak-scaling-oss.nix b/garlic/exp/nbody/weak-scaling-oss.nix new file mode 100644 index 0000000..07ebd08 --- /dev/null +++ b/garlic/exp/nbody/weak-scaling-oss.nix @@ -0,0 +1,62 @@ +{ + stdenv +, stdexp +, bsc +, targetMachine +, stages +}: + +with stdenv.lib; + +let + # Initial variable configuration + varConf = with bsc; { + cpuMask = [ "0x1" "0x3" "0xf" "0xff" "0xffff" "0xfffffff" "0xffffffffffff" ]; + }; + + # Generate the complete configuration for each unit + genConf = with bsc; c: targetMachine.config // rec { + # nbody options + particles = 1024 * 64; + timesteps = 10; + blocksize = 1024; + inherit (c) cpuMask; + cc = icc; + mpi = impi; + gitBranch = "garlic/oss+task"; + + # Repeat the execution of each unit 30 times + loops = 30; + + # Resources + qos = "debug"; + ntasksPerNode = 1; + nodes = 1; + time = "02:00:00"; + cpuBind = "verbose,mask_cpu:${cpuMask}"; + jobName = "nbody-bs-${cpuMask}-${gitBranch}"; + }; + + # Compute the array of configurations + configs = stdexp.buildConfigs { + inherit varConf genConf; + }; + + exec = {nextStage, conf, ...}: with conf; stages.exec { + inherit nextStage; + argv = [ "-t" timesteps "-p" particles ]; + }; + + program = {nextStage, conf, ...}: with conf; + let + customPkgs = stdexp.replaceMpi conf.mpi; + in + customPkgs.apps.nbody.override { + inherit cc blocksize mpi gitBranch; + }; + + pipeline = stdexp.stdPipeline ++ [ exec program ]; + +in + + stdexp.genExperiment { inherit configs pipeline; } From 6ccc159487e5dcfada68d80554fe2c046b7ef617 Mon Sep 17 00:00:00 2001 From: Antoni Navarro Date: Thu, 29 Oct 2020 16:30:55 +0100 Subject: [PATCH 252/987] Fix one of the CPU Masks in the weak scaling experiment --- garlic/exp/nbody/weak-scaling-oss.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/garlic/exp/nbody/weak-scaling-oss.nix b/garlic/exp/nbody/weak-scaling-oss.nix index 07ebd08..a96d708 100644 --- a/garlic/exp/nbody/weak-scaling-oss.nix +++ b/garlic/exp/nbody/weak-scaling-oss.nix @@ -11,7 +11,7 @@ with stdenv.lib; let # Initial variable configuration varConf = with bsc; { - cpuMask = [ "0x1" "0x3" "0xf" "0xff" "0xffff" "0xfffffff" "0xffffffffffff" ]; + cpuMask = [ "0x1" "0x3" "0xf" "0xff" "0xffff" "0xffffffff" "0xffffffffffff" ]; }; # Generate the complete configuration for each unit From 05ce36e1586fd9a4058469f6a004a45e438bf6f6 Mon Sep 17 00:00:00 2001 From: Antoni Navarro Date: Thu, 29 Oct 2020 16:31:21 +0100 Subject: [PATCH 253/987] Add the MPI-weak scaling experiment and strong scaling experiments --- garlic/exp/nbody/strong-scaling-mpi.nix | 62 +++++++++++++++++++++ garlic/exp/nbody/strong-scaling-oss.nix | 71 +++++++++++++++++++++++++ garlic/exp/nbody/weak-scaling-mpi.nix | 62 +++++++++++++++++++++ 3 files changed, 195 insertions(+) create mode 100644 garlic/exp/nbody/strong-scaling-mpi.nix create mode 100644 garlic/exp/nbody/strong-scaling-oss.nix create mode 100644 garlic/exp/nbody/weak-scaling-mpi.nix diff --git a/garlic/exp/nbody/strong-scaling-mpi.nix b/garlic/exp/nbody/strong-scaling-mpi.nix new file mode 100644 index 0000000..b7e77c2 --- /dev/null +++ b/garlic/exp/nbody/strong-scaling-mpi.nix @@ -0,0 +1,62 @@ +{ + stdenv +, stdexp +, bsc +, targetMachine +, stages +}: + +with stdenv.lib; + +let + # Initial variable configuration + varConf = with bsc; { + numProcsAndParticles = [ 1 2 4 8 16 32 48 ]; + }; + + # Generate the complete configuration for each unit + genConf = with bsc; c: targetMachine.config // rec { + # nbody options + inherit (c) numProcsAndParticles; + particles = 1024 * numProcsAndParticles * 2; + timesteps = 10; + blocksize = 1024; + cc = icc; + mpi = impi; + gitBranch = "garlic/mpi+send"; + + # Repeat the execution of each unit 30 times + loops = 30; + + # Resources + qos = "debug"; + ntasksPerNode = numProcsAndParticles; + nodes = 1; + time = "02:00:00"; + cpuBind = "sockets,verbose"; + jobName = "nbody-bs-${toString numProcsAndParticles}-${gitBranch}"; + }; + + # Compute the array of configurations + configs = stdexp.buildConfigs { + inherit varConf genConf; + }; + + exec = {nextStage, conf, ...}: with conf; stages.exec { + inherit nextStage; + argv = [ "-t" timesteps "-p" particles ]; + }; + + program = {nextStage, conf, ...}: with conf; + let + customPkgs = stdexp.replaceMpi conf.mpi; + in + customPkgs.apps.nbody.override { + inherit cc blocksize mpi gitBranch; + }; + + pipeline = stdexp.stdPipeline ++ [ exec program ]; + +in + + stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/nbody/strong-scaling-oss.nix b/garlic/exp/nbody/strong-scaling-oss.nix new file mode 100644 index 0000000..9739fff --- /dev/null +++ b/garlic/exp/nbody/strong-scaling-oss.nix @@ -0,0 +1,71 @@ +{ + stdenv +, stdexp +, bsc +, targetMachine +, stages +}: + +with stdenv.lib; + +let + # Initial variable configuration + varConf = with bsc; { + numProcsAndParticles = [ 1 2 4 8 16 32 48 ]; + input = [ + { numParticles=1 ; cpuMask="0x1"; } + { numParticles=2 ; cpuMask="0x3"; } + { numParticles=4 ; cpuMask="0xf"; } + { numParticles=8 ; cpuMask="0xff"; } + { numParticles=16; cpuMask="0xffff"; } + { numParticles=32; cpuMask="0xffffffff"; } + { numParticles=48; cpuMask="0xffffffffffff"; } + ]; + }; + + # Generate the complete configuration for each unit + genConf = with bsc; c: targetMachine.config // rec { + # nbody options + inherit (c.input) numParticles cpuMask; + particles = 1024 * numParticles * 2; + timesteps = 10; + blocksize = 1024; + cc = icc; + mpi = impi; + gitBranch = "garlic/oss+task"; + + # Repeat the execution of each unit 30 times + loops = 30; + + # Resources + qos = "debug"; + ntasksPerNode = 1; + nodes = 1; + time = "02:00:00"; + cpuBind = "verbose,mask_cpu:${cpuMask}"; + jobName = "nbody-bs-${toString numParticles}-${gitBranch}"; + }; + + # Compute the array of configurations + configs = stdexp.buildConfigs { + inherit varConf genConf; + }; + + exec = {nextStage, conf, ...}: with conf; stages.exec { + inherit nextStage; + argv = [ "-t" timesteps "-p" particles ]; + }; + + program = {nextStage, conf, ...}: with conf; + let + customPkgs = stdexp.replaceMpi conf.mpi; + in + customPkgs.apps.nbody.override { + inherit cc blocksize mpi gitBranch; + }; + + pipeline = stdexp.stdPipeline ++ [ exec program ]; + +in + + stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/nbody/weak-scaling-mpi.nix b/garlic/exp/nbody/weak-scaling-mpi.nix new file mode 100644 index 0000000..ecbd768 --- /dev/null +++ b/garlic/exp/nbody/weak-scaling-mpi.nix @@ -0,0 +1,62 @@ +{ + stdenv +, stdexp +, bsc +, targetMachine +, stages +}: + +with stdenv.lib; + +let + # Initial variable configuration + varConf = with bsc; { + numProcs = [ 1 2 4 8 16 32 48 ]; + }; + + # Generate the complete configuration for each unit + genConf = with bsc; c: targetMachine.config // rec { + # nbody options + particles = 1024 * 64; + timesteps = 10; + blocksize = 1024; + inherit (c) numProcs; + cc = icc; + mpi = impi; + gitBranch = "garlic/mpi+send"; + + # Repeat the execution of each unit 30 times + loops = 30; + + # Resources + qos = "debug"; + ntasksPerNode = numProcs; + nodes = 1; + time = "02:00:00"; + cpuBind = "sockets,verbose"; + jobName = "nbody-bs-${toString numProcs}-${gitBranch}"; + }; + + # Compute the array of configurations + configs = stdexp.buildConfigs { + inherit varConf genConf; + }; + + exec = {nextStage, conf, ...}: with conf; stages.exec { + inherit nextStage; + argv = [ "-t" timesteps "-p" particles ]; + }; + + program = {nextStage, conf, ...}: with conf; + let + customPkgs = stdexp.replaceMpi conf.mpi; + in + customPkgs.apps.nbody.override { + inherit cc blocksize mpi gitBranch; + }; + + pipeline = stdexp.stdPipeline ++ [ exec program ]; + +in + + stdexp.genExperiment { inherit configs pipeline; } From a44042615a14436cc0c499f47bfd99393b2ffd8c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ra=C3=BAl=20Pe=C3=B1acoba?= Date: Thu, 8 Oct 2020 17:42:17 +0200 Subject: [PATCH 254/987] WIP --- garlic/apps/hpcg/default.nix | 17 ++++++------- overlay.nix | 48 ++++++++++++++++++++++-------------- 2 files changed, 36 insertions(+), 29 deletions(-) diff --git a/garlic/apps/hpcg/default.nix b/garlic/apps/hpcg/default.nix index f311804..8ab7bec 100644 --- a/garlic/apps/hpcg/default.nix +++ b/garlic/apps/hpcg/default.nix @@ -2,40 +2,37 @@ stdenv , nanos6 , mpi -, mcxx , tampi -, icc +, cc +, gitBranch ? "garlic/seq" +, makefileName ? "Linux_Serial" }: stdenv.mkDerivation rec { name = "hpcg"; src = builtins.fetchGit { - url = "ssh://git@bscpm02.bsc.es/rpenacob/hpcg.git"; - ref = "symgs_coloring_more_than_one_block_per_task_halos_blocking_discreete"; + url = "ssh://git@bscpm02.bsc.es/rpenacob/garlic-hpcg.git"; + ref = "${gitBranch}"; }; prePatch = '' #export NIX_DEBUG=6 ''; - patches = [ ./tampi.patch ]; - buildInputs = [ nanos6 mpi - icc tampi - mcxx + cc ]; enableParallelBuilding = true; configurePhase = '' - export TAMPI_HOME=${tampi} mkdir build cd build - ../configure MPI_ICPC_OSS + ../configure ${makefileName} ''; installPhase = '' diff --git a/overlay.nix b/overlay.nix index 69b9a3e..d117f2b 100644 --- a/overlay.nix +++ b/overlay.nix @@ -172,19 +172,6 @@ let # Apps for Garlic apps = { - creams = callPackage ./garlic/apps/creams/default.nix { - gnuDef = self.gfortran10 ; # Default GNU compiler version - intelDef = self.bsc.icc ; # Default Intel compiler version - - gitBranch = "garlic/mpi+send+seq"; - - cc = self.bsc.icc; # self.bsc.icc OR self.gfortran10; - mpi = self.bsc.mpi; # self.bsc.mpi OR self.bsc.openmpi-mn4; - }; - - creamsInput = callPackage ./garlic/apps/creams/input.nix { - gitBranch = "garlic/mpi+send+seq"; - }; nbody = callPackage ./garlic/apps/nbody/default.nix { cc = self.bsc.icc; @@ -198,6 +185,23 @@ let cc = self.bsc.clangOmpss2; }; + creams = callPackage ./garlic/apps/creams/default.nix { + gnuDef = self.gfortran10 ; # Default GNU compiler version + intelDef = self.bsc.icc ; # Default Intel compiler version + gitBranch = "garlic/mpi+send+seq"; + cc = self.bsc.icc; # self.bsc.icc OR self.gfortran10; + mpi = self.bsc.mpi; # self.bsc.mpi OR self.bsc.openmpi-mn4; + }; + + creamsInput = callPackage ./garlic/apps/creams/input.nix { + gitBranch = "garlic/mpi+send+seq"; + }; + + hpcg = callPackage ./garlic/hpcg { + cc = self.bsc.icc; + gitBranch = "garlic/seq"; + }; + # heat = callPackage ./garlic/apps/heat { # stdenv = pkgs.gcc7Stdenv; # mpi = intel-mpi; @@ -208,8 +212,6 @@ let # mpi = intel-mpi; # }; # -# hpcg = callPackage ./garlic/apps/hpcg { }; -# # hpccg = callPackage ./garlic/apps/hpccg { }; # # fwi = callPackage ./garlic/apps/fwi { }; @@ -257,11 +259,19 @@ let }; }; }; - }; - test = { - exec = callPackage ./test/garlic/exec.nix { - exec = self.bsc.garlic.stages.exec; + test = { + exec = callPackage ./test/garlic/exec.nix { + exec = self.bsc.garlic.stages.exec; + }; + + osu = rec { + latency-internode = callPackage ./garlic/exp/osu/latency.nix { }; + latency-intranode = callPackage ./garlic/exp/osu/latency.nix { + interNode = false; + }; + latency = latency-internode; + }; }; }; }; From b5fb3730ace902d0eb8694fdd769da82eb33e4d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ra=C3=BAl=20Pe=C3=B1acoba?= Date: Thu, 8 Oct 2020 18:24:56 +0200 Subject: [PATCH 255/987] WIP: first serial experiment. Don't know how to add gcc to compile --- garlic/apps/hpcg/default.nix | 11 +++++------ overlay.nix | 22 +++++++++++++--------- 2 files changed, 18 insertions(+), 15 deletions(-) diff --git a/garlic/apps/hpcg/default.nix b/garlic/apps/hpcg/default.nix index 8ab7bec..f9e7f89 100644 --- a/garlic/apps/hpcg/default.nix +++ b/garlic/apps/hpcg/default.nix @@ -1,8 +1,5 @@ { stdenv -, nanos6 -, mpi -, tampi , cc , gitBranch ? "garlic/seq" , makefileName ? "Linux_Serial" @@ -21,12 +18,14 @@ stdenv.mkDerivation rec { ''; buildInputs = [ - nanos6 - mpi - tampi cc ]; + makeFlags = [ + "CC=${cc.cc.CC}" + "CXX=${cc.cc.CXX}" + ]; + enableParallelBuilding = true; configurePhase = '' diff --git a/overlay.nix b/overlay.nix index d117f2b..5191ecc 100644 --- a/overlay.nix +++ b/overlay.nix @@ -258,19 +258,23 @@ let hybrid = callPackage ./garlic/exp/creams/ss+hybrid.nix { }; }; }; - }; - test = { - exec = callPackage ./test/garlic/exec.nix { - exec = self.bsc.garlic.stages.exec; + hpcg = { + serial = callPackage ./garlic/exp/hpcg/serial.nix { }; }; - osu = rec { - latency-internode = callPackage ./garlic/exp/osu/latency.nix { }; - latency-intranode = callPackage ./garlic/exp/osu/latency.nix { - interNode = false; + test = { + exec = callPackage ./test/garlic/exec.nix { + exec = self.bsc.garlic.stages.exec; + }; + + osu = rec { + latency-internode = callPackage ./garlic/exp/osu/latency.nix { }; + latency-intranode = callPackage ./garlic/exp/osu/latency.nix { + interNode = false; + }; + latency = latency-internode; }; - latency = latency-internode; }; }; }; From 6bd7e12cffd81212bd13666d8ded0e799b341e26 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ra=C3=BAl=20Pe=C3=B1acoba?= Date: Thu, 8 Oct 2020 18:26:28 +0200 Subject: [PATCH 256/987] WIP: forgot to add the folder --- garlic/exp/hpcg/extrae.xml | 211 +++++++++++++++++++++++++++++++++++++ garlic/exp/hpcg/serial.nix | 169 +++++++++++++++++++++++++++++ garlic/exp/hpcg/tampi.nix | 171 ++++++++++++++++++++++++++++++ 3 files changed, 551 insertions(+) create mode 100644 garlic/exp/hpcg/extrae.xml create mode 100644 garlic/exp/hpcg/serial.nix create mode 100644 garlic/exp/hpcg/tampi.nix diff --git a/garlic/exp/hpcg/extrae.xml b/garlic/exp/hpcg/extrae.xml new file mode 100644 index 0000000..b9af29b --- /dev/null +++ b/garlic/exp/hpcg/extrae.xml @@ -0,0 +1,211 @@ + + + + + + + + + + + + + + + + + 1-3 + + 1-5 + + 1-3 + + 1-3 + + 1-3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + PAPI_TOT_INS,PAPI_TOT_CYC + + + + + + + + + + + + + + + + + TRACE + + 5 + + /scratch + + /gpfs/scratch/bsc41/bsc41273 + + + + + + 5000000 + + + + + + + + /gpfs/scratch/bsc41/bsc41273/control + + + + + + + 10M + + + + + + + + + + + 500u + + + + + + + + + + + + + + + + + + + + diff --git a/garlic/exp/hpcg/serial.nix b/garlic/exp/hpcg/serial.nix new file mode 100644 index 0000000..51da987 --- /dev/null +++ b/garlic/exp/hpcg/serial.nix @@ -0,0 +1,169 @@ +{ + stdenv +, nixpkgs +, pkgs +, genApp +, genConfigs +, runWrappers +}: + +with stdenv.lib; + +let + bsc = pkgs.bsc; + + # Set variable configuration for the experiment + varConfig = { + cc = [ bsc.icc ]; + gitBranch = [ "garlic/seq" ]; + nx = [ 104 64 ]; + ny = [ 104 64 ]; + nz = [ 104 64 ]; + }; + + # Common configuration + common = { + # Resources + ntasksPerNode = "48"; + nodes = "1"; + + # Stage configuration + enableSbatch = true; + enableControl = true; + enableExtrae = false; + enablePerf = false; + enableCtf = false; + + # MN4 path + nixPrefix = "/gpfs/projects/bsc15/nix"; + }; + + # Compute the cartesian product of all configurations + configs = map (conf: conf // common) (genConfigs varConfig); + + stageProgram = stage: + if stage ? programPath + then "${stage}${stage.programPath}" else "${stage}"; + + w = runWrappers; + + sbatch = {stage, conf, ...}: with conf; w.sbatch ( + # Allow a user to define a custom reservation for the job in MareNostrum4, + # by setting the garlic.sbatch.reservation attribute in the + # ~/.config/nixpkgs/config.nix file. If the attribute is not set, no + # reservation is used. The user reservation may be overwritten by the + # experiment, if the reservation is set like with nodes or ntasksPerNode. + optionalAttrs (pkgs.config ? garlic.sbatch.reservation) { + inherit (pkgs.config.garlic.sbatch) reservation; + } // { + program = stageProgram stage; + exclusive = true; + time = "02:00:00"; + qos = "debug"; + jobName = "hpcg"; + inherit nixPrefix nodes ntasksPerNode; + } + ); + + control = {stage, conf, ...}: with conf; w.control { + program = stageProgram stage; + }; + + srun = {stage, conf, ...}: with conf; w.srun { + program = stageProgram stage; + srunOptions = "--cpu-bind=verbose,rank"; + inherit nixPrefix; + }; + + statspy = {stage, conf, ...}: with conf; w.statspy { + program = stageProgram stage; + }; + + perf = {stage, conf, ...}: with conf; w.perf { + program = stageProgram stage; + perfArgs = "sched record -a"; + }; + + nixsetup = {stage, conf, ...}: with conf; w.nixsetup { + program = stageProgram stage; + nixsetup = "${nixPrefix}/bin/nix-setup"; + }; + + extrae = {stage, conf, ...}: w.extrae { + program = stageProgram stage; + traceLib = "mpi"; # mpi -> libtracempi.so + configFile = ./extrae.xml; + }; + + ctf = {stage, conf, ...}: w.argv { + program = stageProgram stage; + env = '' + export NANOS6=ctf + export NANOS6_CTF2PRV=0 + ''; + }; + + argv = {stage, conf, ...}: with conf; w.argv { + program = stageProgram stage; + argv = ''( + --nx=${toString nx} + --ny=${toString ny} + --nz=${toString nz} + )''; + }; + + bscOverlay = import ../../../overlay.nix; + + genPkgs = newOverlay: nixpkgs { + overlays = [ + bscOverlay + newOverlay + ]; + }; + + # We may be able to use overlays by invoking the fix function directly, but we + # have to get the definition of the bsc packages and the garlic ones as + # overlays. + + hpcgFn = {stage, conf, ...}: with conf; + let + # We set the mpi implementation to the one specified in the conf, so all + # packages in bsc will use that one. + customPkgs = genPkgs (self: super: { + bsc = super.bsc // { mpi = conf.mpi; }; + }); + in + customPkgs.bsc.garlic.hpcg.override { + inherit cc gitBranch; + }; + + stages = with common; [] + # Use sbatch to request resources first + ++ optional enableSbatch sbatch + + # Repeats the next stages N times + ++ optionals enableControl [ nixsetup control ] + + # Executes srun to launch the program in the requested nodes, and + # immediately after enters the nix environment again, as slurmstepd launches + # the next stages from outside the namespace. + ++ [ srun nixsetup ] + + # Intrumentation with extrae + ++ optional enableExtrae extrae + + # Optionally profile the next stages with perf + ++ optional enablePerf perf + + # Optionally profile nanos6 with the new ctf + ++ optional enableCtf ctf + + # Execute the nbody app with the argv and env vars + ++ [ argv hpcgFn ]; + + # List of actual programs to be executed + jobs = map (conf: w.stagen { inherit conf stages; }) configs; + +in + # We simply run each program one after another + w.launch jobs diff --git a/garlic/exp/hpcg/tampi.nix b/garlic/exp/hpcg/tampi.nix new file mode 100644 index 0000000..d2a0394 --- /dev/null +++ b/garlic/exp/hpcg/tampi.nix @@ -0,0 +1,171 @@ +{ + stdenv +, nixpkgs +, pkgs +, genApp +, genConfigs +, runWrappers +}: + +with stdenv.lib; + +let + bsc = pkgs.bsc; + + # Set variable configuration for the experiment + varConfig = { + cc = [ bsc.icc ]; + mpi = [ bsc.impi ]; + #gitBranch = [ "garlic/tampi+send+oss+task" ]; + n = [ 104 64 ]; + nodes = [1 2 4]; + }; + + # Common configuration + common = { + # Compile time nbody config + gitBranch = "symgs_coloring_more_than_one_block_per_task_halos_blocking_discreete"; + + # Resources + ntasksPerNode = "48"; + + # Stage configuration + enableSbatch = true; + enableControl = true; + enableExtrae = false; + enablePerf = false; + enableCtf = false; + + # MN4 path + nixPrefix = "/gpfs/projects/bsc15/nix"; + }; + + # Compute the cartesian product of all configurations + configs = map (conf: conf // common) (genConfigs varConfig); + + stageProgram = stage: + if stage ? programPath + then "${stage}${stage.programPath}" else "${stage}"; + + w = runWrappers; + + sbatch = {stage, conf, ...}: with conf; w.sbatch ( + # Allow a user to define a custom reservation for the job in MareNostrum4, + # by setting the garlic.sbatch.reservation attribute in the + # ~/.config/nixpkgs/config.nix file. If the attribute is not set, no + # reservation is used. The user reservation may be overwritten by the + # experiment, if the reservation is set like with nodes or ntasksPerNode. + optionalAttrs (pkgs.config ? garlic.sbatch.reservation) { + inherit (pkgs.config.garlic.sbatch) reservation; + } // { + program = stageProgram stage; + exclusive = true; + time = "02:00:00"; + qos = "debug"; + jobName = "nbody-tampi"; + inherit nixPrefix nodes ntasksPerNode; + } + ); + + control = {stage, conf, ...}: with conf; w.control { + program = stageProgram stage; + }; + + srun = {stage, conf, ...}: with conf; w.srun { + program = stageProgram stage; + srunOptions = "--cpu-bind=verbose,rank"; + inherit nixPrefix; + }; + + statspy = {stage, conf, ...}: with conf; w.statspy { + program = stageProgram stage; + }; + + perf = {stage, conf, ...}: with conf; w.perf { + program = stageProgram stage; + perfArgs = "sched record -a"; + }; + + nixsetup = {stage, conf, ...}: with conf; w.nixsetup { + program = stageProgram stage; + nixsetup = "${nixPrefix}/bin/nix-setup"; + }; + + extrae = {stage, conf, ...}: w.extrae { + program = stageProgram stage; + traceLib = "mpi"; # mpi -> libtracempi.so + configFile = ./extrae.xml; + }; + + ctf = {stage, conf, ...}: w.argv { + program = stageProgram stage; + env = '' + export NANOS6=ctf + export NANOS6_CTF2PRV=0 + ''; + }; + + argv = {stage, conf, ...}: with conf; w.argv { + program = stageProgram stage; + argv = ''( + --nx=${toString n} + --ny=${toString n} + --nz=${toString n} + )''; + }; + + bscOverlay = import ../../../overlay.nix; + + genPkgs = newOverlay: nixpkgs { + overlays = [ + bscOverlay + newOverlay + ]; + }; + + # We may be able to use overlays by invoking the fix function directly, but we + # have to get the definition of the bsc packages and the garlic ones as + # overlays. + + hpcgFn = {stage, conf, ...}: with conf; + let + # We set the mpi implementation to the one specified in the conf, so all + # packages in bsc will use that one. + customPkgs = genPkgs (self: super: { + bsc = super.bsc // { mpi = conf.mpi; }; + }); + in + customPkgs.bsc.garlic.hpcg.override { + inherit cc mpi gitBranch; + }; + + stages = with common; [] + # Use sbatch to request resources first + ++ optional enableSbatch sbatch + + # Repeats the next stages N times + ++ optionals enableControl [ nixsetup control ] + + # Executes srun to launch the program in the requested nodes, and + # immediately after enters the nix environment again, as slurmstepd launches + # the next stages from outside the namespace. + ++ [ srun nixsetup ] + + # Intrumentation with extrae + ++ optional enableExtrae extrae + + # Optionally profile the next stages with perf + ++ optional enablePerf perf + + # Optionally profile nanos6 with the new ctf + ++ optional enableCtf ctf + + # Execute the nbody app with the argv and env vars + ++ [ argv hpcgFn ]; + + # List of actual programs to be executed + jobs = map (conf: w.stagen { inherit conf stages; }) configs; + +in + # We simply run each program one after another + w.launch jobs From 7bf3e812338673c96dc7d3c0ccbbc9ef6d3bbef5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ra=C3=BAl=20Pe=C3=B1acoba?= Date: Tue, 13 Oct 2020 14:59:49 +0200 Subject: [PATCH 257/987] WIP: trying to make mpi branch working --- garlic/apps/hpcg/default.nix | 2 + garlic/exp/hpcg/mpi.nix | 169 +++++++++++++++++++++++++++++++++++ garlic/exp/hpcg/serial.nix | 12 ++- overlay.nix | 3 + 4 files changed, 179 insertions(+), 7 deletions(-) create mode 100644 garlic/exp/hpcg/mpi.nix diff --git a/garlic/apps/hpcg/default.nix b/garlic/apps/hpcg/default.nix index f9e7f89..7ba8545 100644 --- a/garlic/apps/hpcg/default.nix +++ b/garlic/apps/hpcg/default.nix @@ -1,6 +1,7 @@ { stdenv , cc +, mpi , gitBranch ? "garlic/seq" , makefileName ? "Linux_Serial" }: @@ -19,6 +20,7 @@ stdenv.mkDerivation rec { buildInputs = [ cc + mpi ]; makeFlags = [ diff --git a/garlic/exp/hpcg/mpi.nix b/garlic/exp/hpcg/mpi.nix new file mode 100644 index 0000000..9adc093 --- /dev/null +++ b/garlic/exp/hpcg/mpi.nix @@ -0,0 +1,169 @@ +{ + stdenv +, nixpkgs +, pkgs +, genApp +, genConfigs +, runWrappers +}: + +with stdenv.lib; + +let + bsc = pkgs.bsc; + + # Set variable configuration for the experiment + varConfig = { + cc = [ bsc.icc ]; + mpi = [ bsc.impi ]; + gitBranch = [ "garlic/mpi" ]; + makefileName = [ "MPI" ]; + n = [ 104 64 ]; + }; + + # Common configuration + common = { + # Resources + ntasksPerNode = "48"; + nodes = "1"; + + # Stage configuration + enableSbatch = true; + enableControl = true; + enableExtrae = false; + enablePerf = false; + enableCtf = false; + + # MN4 path + nixPrefix = "/gpfs/projects/bsc15/nix"; + }; + + # Compute the cartesian product of all configurations + configs = map (conf: conf // common) (genConfigs varConfig); + + stageProgram = stage: + if stage ? programPath + then "${stage}${stage.programPath}" else "${stage}"; + + w = runWrappers; + + sbatch = {stage, conf, ...}: with conf; w.sbatch ( + # Allow a user to define a custom reservation for the job in MareNostrum4, + # by setting the garlic.sbatch.reservation attribute in the + # ~/.config/nixpkgs/config.nix file. If the attribute is not set, no + # reservation is used. The user reservation may be overwritten by the + # experiment, if the reservation is set like with nodes or ntasksPerNode. + optionalAttrs (pkgs.config ? garlic.sbatch.reservation) { + inherit (pkgs.config.garlic.sbatch) reservation; + } // { + program = stageProgram stage; + exclusive = true; + time = "02:00:00"; + qos = "debug"; + jobName = "hpcg"; + inherit nixPrefix nodes ntasksPerNode; + } + ); + + control = {stage, conf, ...}: with conf; w.control { + program = stageProgram stage; + }; + + srun = {stage, conf, ...}: with conf; w.srun { + program = stageProgram stage; + srunOptions = "--cpu-bind=verbose,rank"; + inherit nixPrefix; + }; + + statspy = {stage, conf, ...}: with conf; w.statspy { + program = stageProgram stage; + }; + + perf = {stage, conf, ...}: with conf; w.perf { + program = stageProgram stage; + perfArgs = "sched record -a"; + }; + + nixsetup = {stage, conf, ...}: with conf; w.nixsetup { + program = stageProgram stage; + nixsetup = "${nixPrefix}/bin/nix-setup"; + }; + + extrae = {stage, conf, ...}: w.extrae { + program = stageProgram stage; + traceLib = "mpi"; # mpi -> libtracempi.so + configFile = ./extrae.xml; + }; + + ctf = {stage, conf, ...}: w.argv { + program = stageProgram stage; + env = '' + export NANOS6=ctf + export NANOS6_CTF2PRV=0 + ''; + }; + + argv = {stage, conf, ...}: with conf; w.argv { + program = stageProgram stage; + argv = ''( + --nx=${toString n} + --ny=${toString n} + --nz=${toString n} + )''; + }; + + bscOverlay = import ../../../overlay.nix; + + genPkgs = newOverlay: nixpkgs { + overlays = [ + bscOverlay + newOverlay + ]; + }; + + # We may be able to use overlays by invoking the fix function directly, but we + # have to get the definition of the bsc packages and the garlic ones as + # overlays. + + hpcgFn = {stage, conf, ...}: with conf; + let + # We set the mpi implementation to the one specified in the conf, so all + # packages in bsc will use that one. + customPkgs = genPkgs (self: super: { + bsc = super.bsc // { mpi = conf.mpi; }; + }); + in + customPkgs.bsc.garlic.hpcg.override { + inherit cc mpi gitBranch makefileName; + }; + + stages = with common; [] + # Use sbatch to request resources first + ++ optional enableSbatch sbatch + + # Repeats the next stages N times + ++ optionals enableControl [ nixsetup control ] + + # Executes srun to launch the program in the requested nodes, and + # immediately after enters the nix environment again, as slurmstepd launches + # the next stages from outside the namespace. + ++ [ srun nixsetup ] + + # Intrumentation with extrae + ++ optional enableExtrae extrae + + # Optionally profile the next stages with perf + ++ optional enablePerf perf + + # Optionally profile nanos6 with the new ctf + ++ optional enableCtf ctf + + # Execute the hpcg app with the argv and env vars + ++ [ argv hpcgFn ]; + + # List of actual programs to be executed + jobs = map (conf: w.stagen { inherit conf stages; }) configs; + +in + # We simply run each program one after another + w.launch jobs diff --git a/garlic/exp/hpcg/serial.nix b/garlic/exp/hpcg/serial.nix index 51da987..79e8c21 100644 --- a/garlic/exp/hpcg/serial.nix +++ b/garlic/exp/hpcg/serial.nix @@ -16,9 +16,7 @@ let varConfig = { cc = [ bsc.icc ]; gitBranch = [ "garlic/seq" ]; - nx = [ 104 64 ]; - ny = [ 104 64 ]; - nz = [ 104 64 ]; + n = [ 104 64 ]; }; # Common configuration @@ -106,9 +104,9 @@ let argv = {stage, conf, ...}: with conf; w.argv { program = stageProgram stage; argv = ''( - --nx=${toString nx} - --ny=${toString ny} - --nz=${toString nz} + --nx=${toString n} + --ny=${toString n} + --nz=${toString n} )''; }; @@ -158,7 +156,7 @@ let # Optionally profile nanos6 with the new ctf ++ optional enableCtf ctf - # Execute the nbody app with the argv and env vars + # Execute the hpcg app with the argv and env vars ++ [ argv hpcgFn ]; # List of actual programs to be executed diff --git a/overlay.nix b/overlay.nix index 5191ecc..8143eb4 100644 --- a/overlay.nix +++ b/overlay.nix @@ -261,6 +261,9 @@ let hpcg = { serial = callPackage ./garlic/exp/hpcg/serial.nix { }; + mpi = callPackage ./garlic/exp/hpcg/mpi.nix { }; + # omp = callPackage ./garlic/exp/hpcg/omp.nix { }; + # mpi+omp = callPackage ./garlic/exp/hpcg/mpi+omp.nix { }; }; test = { From 01b25846880749736310486e86748ed15dab61fd Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 13 Oct 2020 17:05:36 +0200 Subject: [PATCH 258/987] Update hpcg experiments --- garlic/apps/hpcg/default.nix | 2 + garlic/exp/hpcg/mpi.nix | 188 ++++++++--------------------------- garlic/exp/hpcg/serial.nix | 184 ++++++++-------------------------- garlic/exp/hpcg/tampi.nix | 171 ------------------------------- overlay.nix | 2 +- 5 files changed, 85 insertions(+), 462 deletions(-) delete mode 100644 garlic/exp/hpcg/tampi.nix diff --git a/garlic/apps/hpcg/default.nix b/garlic/apps/hpcg/default.nix index 7ba8545..257f02e 100644 --- a/garlic/apps/hpcg/default.nix +++ b/garlic/apps/hpcg/default.nix @@ -41,4 +41,6 @@ stdenv.mkDerivation rec { cp bin/* $out/bin/ ''; + programPath = "/bin/xhpcg"; + } diff --git a/garlic/exp/hpcg/mpi.nix b/garlic/exp/hpcg/mpi.nix index 9adc093..91b0429 100644 --- a/garlic/exp/hpcg/mpi.nix +++ b/garlic/exp/hpcg/mpi.nix @@ -1,169 +1,65 @@ { stdenv -, nixpkgs -, pkgs -, genApp -, genConfigs -, runWrappers +, stdexp +, bsc +, targetMachine +, stages }: with stdenv.lib; let - bsc = pkgs.bsc; - - # Set variable configuration for the experiment - varConfig = { - cc = [ bsc.icc ]; - mpi = [ bsc.impi ]; - gitBranch = [ "garlic/mpi" ]; - makefileName = [ "MPI" ]; + # Initial variable configuration + varConf = with bsc; { n = [ 104 64 ]; }; - # Common configuration - common = { + # Generate the complete configuration for each unit + genConf = with bsc; c: targetMachine.config // rec { + # hpcg options + n = c.n; + cc = icc; + mpi = impi; + gitBranch = "garlic/mpi"; + # FIXME: fix this option in the garlic/mpi git branch + makefileName = "MPI"; + + # Repeat the execution of each unit 30 times + loops = 30; + # Resources - ntasksPerNode = "48"; - nodes = "1"; - - # Stage configuration - enableSbatch = true; - enableControl = true; - enableExtrae = false; - enablePerf = false; - enableCtf = false; - - # MN4 path - nixPrefix = "/gpfs/projects/bsc15/nix"; + qos = "debug"; + ntasksPerNode = 48; + nodes = 1; + time = "02:00:00"; + cpuBind = "sockets,verbose"; + jobName = "hpcg-${toString n}-${gitBranch}"; }; - # Compute the cartesian product of all configurations - configs = map (conf: conf // common) (genConfigs varConfig); - - stageProgram = stage: - if stage ? programPath - then "${stage}${stage.programPath}" else "${stage}"; - - w = runWrappers; - - sbatch = {stage, conf, ...}: with conf; w.sbatch ( - # Allow a user to define a custom reservation for the job in MareNostrum4, - # by setting the garlic.sbatch.reservation attribute in the - # ~/.config/nixpkgs/config.nix file. If the attribute is not set, no - # reservation is used. The user reservation may be overwritten by the - # experiment, if the reservation is set like with nodes or ntasksPerNode. - optionalAttrs (pkgs.config ? garlic.sbatch.reservation) { - inherit (pkgs.config.garlic.sbatch) reservation; - } // { - program = stageProgram stage; - exclusive = true; - time = "02:00:00"; - qos = "debug"; - jobName = "hpcg"; - inherit nixPrefix nodes ntasksPerNode; - } - ); - - control = {stage, conf, ...}: with conf; w.control { - program = stageProgram stage; + # Compute the array of configurations + configs = stdexp.buildConfigs { + inherit varConf genConf; }; - srun = {stage, conf, ...}: with conf; w.srun { - program = stageProgram stage; - srunOptions = "--cpu-bind=verbose,rank"; - inherit nixPrefix; - }; - - statspy = {stage, conf, ...}: with conf; w.statspy { - program = stageProgram stage; - }; - - perf = {stage, conf, ...}: with conf; w.perf { - program = stageProgram stage; - perfArgs = "sched record -a"; - }; - - nixsetup = {stage, conf, ...}: with conf; w.nixsetup { - program = stageProgram stage; - nixsetup = "${nixPrefix}/bin/nix-setup"; - }; - - extrae = {stage, conf, ...}: w.extrae { - program = stageProgram stage; - traceLib = "mpi"; # mpi -> libtracempi.so - configFile = ./extrae.xml; - }; - - ctf = {stage, conf, ...}: w.argv { - program = stageProgram stage; - env = '' - export NANOS6=ctf - export NANOS6_CTF2PRV=0 - ''; - }; - - argv = {stage, conf, ...}: with conf; w.argv { - program = stageProgram stage; - argv = ''( - --nx=${toString n} - --ny=${toString n} - --nz=${toString n} - )''; - }; - - bscOverlay = import ../../../overlay.nix; - - genPkgs = newOverlay: nixpkgs { - overlays = [ - bscOverlay - newOverlay + exec = {nextStage, conf, ...}: with conf; stages.exec { + inherit nextStage; + argv = [ + "--nx=${toString n}" + "--ny=${toString n}" + "--nz=${toString n}" ]; }; - # We may be able to use overlays by invoking the fix function directly, but we - # have to get the definition of the bsc packages and the garlic ones as - # overlays. - - hpcgFn = {stage, conf, ...}: with conf; - let - # We set the mpi implementation to the one specified in the conf, so all - # packages in bsc will use that one. - customPkgs = genPkgs (self: super: { - bsc = super.bsc // { mpi = conf.mpi; }; - }); - in - customPkgs.bsc.garlic.hpcg.override { + program = {nextStage, conf, ...}: with conf; + let + customPkgs = stdexp.replaceMpi conf.mpi; + in + customPkgs.apps.hpcg.override { inherit cc mpi gitBranch makefileName; }; - stages = with common; [] - # Use sbatch to request resources first - ++ optional enableSbatch sbatch - - # Repeats the next stages N times - ++ optionals enableControl [ nixsetup control ] - - # Executes srun to launch the program in the requested nodes, and - # immediately after enters the nix environment again, as slurmstepd launches - # the next stages from outside the namespace. - ++ [ srun nixsetup ] - - # Intrumentation with extrae - ++ optional enableExtrae extrae - - # Optionally profile the next stages with perf - ++ optional enablePerf perf - - # Optionally profile nanos6 with the new ctf - ++ optional enableCtf ctf - - # Execute the hpcg app with the argv and env vars - ++ [ argv hpcgFn ]; - - # List of actual programs to be executed - jobs = map (conf: w.stagen { inherit conf stages; }) configs; + pipeline = stdexp.stdPipeline ++ [ exec program ]; in - # We simply run each program one after another - w.launch jobs + + stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/hpcg/serial.nix b/garlic/exp/hpcg/serial.nix index 79e8c21..0d5d855 100644 --- a/garlic/exp/hpcg/serial.nix +++ b/garlic/exp/hpcg/serial.nix @@ -1,167 +1,63 @@ { stdenv -, nixpkgs -, pkgs -, genApp -, genConfigs -, runWrappers +, stdexp +, bsc +, targetMachine +, stages }: with stdenv.lib; let - bsc = pkgs.bsc; - - # Set variable configuration for the experiment - varConfig = { - cc = [ bsc.icc ]; - gitBranch = [ "garlic/seq" ]; + # Initial variable configuration + varConf = with bsc; { n = [ 104 64 ]; }; - # Common configuration - common = { + # Generate the complete configuration for each unit + genConf = with bsc; c: targetMachine.config // rec { + # hpcg options + n = c.n; + cc = icc; + mpi = impi; + gitBranch = "garlic/seq"; + + # Repeat the execution of each unit 30 times + loops = 30; + # Resources - ntasksPerNode = "48"; - nodes = "1"; - - # Stage configuration - enableSbatch = true; - enableControl = true; - enableExtrae = false; - enablePerf = false; - enableCtf = false; - - # MN4 path - nixPrefix = "/gpfs/projects/bsc15/nix"; + qos = "debug"; + ntasksPerNode = 48; + nodes = 1; + time = "02:00:00"; + cpuBind = "sockets,verbose"; + jobName = "hpcg-${toString n}-${gitBranch}"; }; - # Compute the cartesian product of all configurations - configs = map (conf: conf // common) (genConfigs varConfig); - - stageProgram = stage: - if stage ? programPath - then "${stage}${stage.programPath}" else "${stage}"; - - w = runWrappers; - - sbatch = {stage, conf, ...}: with conf; w.sbatch ( - # Allow a user to define a custom reservation for the job in MareNostrum4, - # by setting the garlic.sbatch.reservation attribute in the - # ~/.config/nixpkgs/config.nix file. If the attribute is not set, no - # reservation is used. The user reservation may be overwritten by the - # experiment, if the reservation is set like with nodes or ntasksPerNode. - optionalAttrs (pkgs.config ? garlic.sbatch.reservation) { - inherit (pkgs.config.garlic.sbatch) reservation; - } // { - program = stageProgram stage; - exclusive = true; - time = "02:00:00"; - qos = "debug"; - jobName = "hpcg"; - inherit nixPrefix nodes ntasksPerNode; - } - ); - - control = {stage, conf, ...}: with conf; w.control { - program = stageProgram stage; + # Compute the array of configurations + configs = stdexp.buildConfigs { + inherit varConf genConf; }; - srun = {stage, conf, ...}: with conf; w.srun { - program = stageProgram stage; - srunOptions = "--cpu-bind=verbose,rank"; - inherit nixPrefix; - }; - - statspy = {stage, conf, ...}: with conf; w.statspy { - program = stageProgram stage; - }; - - perf = {stage, conf, ...}: with conf; w.perf { - program = stageProgram stage; - perfArgs = "sched record -a"; - }; - - nixsetup = {stage, conf, ...}: with conf; w.nixsetup { - program = stageProgram stage; - nixsetup = "${nixPrefix}/bin/nix-setup"; - }; - - extrae = {stage, conf, ...}: w.extrae { - program = stageProgram stage; - traceLib = "mpi"; # mpi -> libtracempi.so - configFile = ./extrae.xml; - }; - - ctf = {stage, conf, ...}: w.argv { - program = stageProgram stage; - env = '' - export NANOS6=ctf - export NANOS6_CTF2PRV=0 - ''; - }; - - argv = {stage, conf, ...}: with conf; w.argv { - program = stageProgram stage; - argv = ''( - --nx=${toString n} - --ny=${toString n} - --nz=${toString n} - )''; - }; - - bscOverlay = import ../../../overlay.nix; - - genPkgs = newOverlay: nixpkgs { - overlays = [ - bscOverlay - newOverlay + exec = {nextStage, conf, ...}: with conf; stages.exec { + inherit nextStage; + argv = [ + "--nx=${toString n}" + "--ny=${toString n}" + "--nz=${toString n}" ]; }; - # We may be able to use overlays by invoking the fix function directly, but we - # have to get the definition of the bsc packages and the garlic ones as - # overlays. - - hpcgFn = {stage, conf, ...}: with conf; - let - # We set the mpi implementation to the one specified in the conf, so all - # packages in bsc will use that one. - customPkgs = genPkgs (self: super: { - bsc = super.bsc // { mpi = conf.mpi; }; - }); - in - customPkgs.bsc.garlic.hpcg.override { + program = {nextStage, conf, ...}: with conf; + let + customPkgs = stdexp.replaceMpi conf.mpi; + in + customPkgs.apps.hpcg.override { inherit cc gitBranch; }; - stages = with common; [] - # Use sbatch to request resources first - ++ optional enableSbatch sbatch - - # Repeats the next stages N times - ++ optionals enableControl [ nixsetup control ] - - # Executes srun to launch the program in the requested nodes, and - # immediately after enters the nix environment again, as slurmstepd launches - # the next stages from outside the namespace. - ++ [ srun nixsetup ] - - # Intrumentation with extrae - ++ optional enableExtrae extrae - - # Optionally profile the next stages with perf - ++ optional enablePerf perf - - # Optionally profile nanos6 with the new ctf - ++ optional enableCtf ctf - - # Execute the hpcg app with the argv and env vars - ++ [ argv hpcgFn ]; - - # List of actual programs to be executed - jobs = map (conf: w.stagen { inherit conf stages; }) configs; + pipeline = stdexp.stdPipeline ++ [ exec program ]; in - # We simply run each program one after another - w.launch jobs + + stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/hpcg/tampi.nix b/garlic/exp/hpcg/tampi.nix deleted file mode 100644 index d2a0394..0000000 --- a/garlic/exp/hpcg/tampi.nix +++ /dev/null @@ -1,171 +0,0 @@ -{ - stdenv -, nixpkgs -, pkgs -, genApp -, genConfigs -, runWrappers -}: - -with stdenv.lib; - -let - bsc = pkgs.bsc; - - # Set variable configuration for the experiment - varConfig = { - cc = [ bsc.icc ]; - mpi = [ bsc.impi ]; - #gitBranch = [ "garlic/tampi+send+oss+task" ]; - n = [ 104 64 ]; - nodes = [1 2 4]; - }; - - # Common configuration - common = { - # Compile time nbody config - gitBranch = "symgs_coloring_more_than_one_block_per_task_halos_blocking_discreete"; - - # Resources - ntasksPerNode = "48"; - - # Stage configuration - enableSbatch = true; - enableControl = true; - enableExtrae = false; - enablePerf = false; - enableCtf = false; - - # MN4 path - nixPrefix = "/gpfs/projects/bsc15/nix"; - }; - - # Compute the cartesian product of all configurations - configs = map (conf: conf // common) (genConfigs varConfig); - - stageProgram = stage: - if stage ? programPath - then "${stage}${stage.programPath}" else "${stage}"; - - w = runWrappers; - - sbatch = {stage, conf, ...}: with conf; w.sbatch ( - # Allow a user to define a custom reservation for the job in MareNostrum4, - # by setting the garlic.sbatch.reservation attribute in the - # ~/.config/nixpkgs/config.nix file. If the attribute is not set, no - # reservation is used. The user reservation may be overwritten by the - # experiment, if the reservation is set like with nodes or ntasksPerNode. - optionalAttrs (pkgs.config ? garlic.sbatch.reservation) { - inherit (pkgs.config.garlic.sbatch) reservation; - } // { - program = stageProgram stage; - exclusive = true; - time = "02:00:00"; - qos = "debug"; - jobName = "nbody-tampi"; - inherit nixPrefix nodes ntasksPerNode; - } - ); - - control = {stage, conf, ...}: with conf; w.control { - program = stageProgram stage; - }; - - srun = {stage, conf, ...}: with conf; w.srun { - program = stageProgram stage; - srunOptions = "--cpu-bind=verbose,rank"; - inherit nixPrefix; - }; - - statspy = {stage, conf, ...}: with conf; w.statspy { - program = stageProgram stage; - }; - - perf = {stage, conf, ...}: with conf; w.perf { - program = stageProgram stage; - perfArgs = "sched record -a"; - }; - - nixsetup = {stage, conf, ...}: with conf; w.nixsetup { - program = stageProgram stage; - nixsetup = "${nixPrefix}/bin/nix-setup"; - }; - - extrae = {stage, conf, ...}: w.extrae { - program = stageProgram stage; - traceLib = "mpi"; # mpi -> libtracempi.so - configFile = ./extrae.xml; - }; - - ctf = {stage, conf, ...}: w.argv { - program = stageProgram stage; - env = '' - export NANOS6=ctf - export NANOS6_CTF2PRV=0 - ''; - }; - - argv = {stage, conf, ...}: with conf; w.argv { - program = stageProgram stage; - argv = ''( - --nx=${toString n} - --ny=${toString n} - --nz=${toString n} - )''; - }; - - bscOverlay = import ../../../overlay.nix; - - genPkgs = newOverlay: nixpkgs { - overlays = [ - bscOverlay - newOverlay - ]; - }; - - # We may be able to use overlays by invoking the fix function directly, but we - # have to get the definition of the bsc packages and the garlic ones as - # overlays. - - hpcgFn = {stage, conf, ...}: with conf; - let - # We set the mpi implementation to the one specified in the conf, so all - # packages in bsc will use that one. - customPkgs = genPkgs (self: super: { - bsc = super.bsc // { mpi = conf.mpi; }; - }); - in - customPkgs.bsc.garlic.hpcg.override { - inherit cc mpi gitBranch; - }; - - stages = with common; [] - # Use sbatch to request resources first - ++ optional enableSbatch sbatch - - # Repeats the next stages N times - ++ optionals enableControl [ nixsetup control ] - - # Executes srun to launch the program in the requested nodes, and - # immediately after enters the nix environment again, as slurmstepd launches - # the next stages from outside the namespace. - ++ [ srun nixsetup ] - - # Intrumentation with extrae - ++ optional enableExtrae extrae - - # Optionally profile the next stages with perf - ++ optional enablePerf perf - - # Optionally profile nanos6 with the new ctf - ++ optional enableCtf ctf - - # Execute the nbody app with the argv and env vars - ++ [ argv hpcgFn ]; - - # List of actual programs to be executed - jobs = map (conf: w.stagen { inherit conf stages; }) configs; - -in - # We simply run each program one after another - w.launch jobs diff --git a/overlay.nix b/overlay.nix index 8143eb4..3ce3368 100644 --- a/overlay.nix +++ b/overlay.nix @@ -197,7 +197,7 @@ let gitBranch = "garlic/mpi+send+seq"; }; - hpcg = callPackage ./garlic/hpcg { + hpcg = callPackage ./garlic/apps/hpcg/default.nix { cc = self.bsc.icc; gitBranch = "garlic/seq"; }; From e20061254bec561428622cfe9516b74307bdc28f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ra=C3=BAl=20Pe=C3=B1acoba?= Date: Tue, 13 Oct 2020 19:20:24 +0200 Subject: [PATCH 259/987] WIP: Add mpi, omp and mpi+omp experiments. See more. Seems that gcc compilation with OpenMP throws an error. Investigate. I think I've forgot to add an override of mpicxx compiler backend --- garlic/apps/hpcg/default.nix | 16 +++------ garlic/exp/hpcg/mpi+omp.nix | 63 ++++++++++++++++++++++++++++++++++++ garlic/exp/hpcg/mpi.nix | 6 ++-- garlic/exp/hpcg/omp.nix | 63 ++++++++++++++++++++++++++++++++++++ garlic/exp/hpcg/serial.nix | 4 +-- overlay.nix | 7 ++-- 6 files changed, 139 insertions(+), 20 deletions(-) create mode 100644 garlic/exp/hpcg/mpi+omp.nix create mode 100644 garlic/exp/hpcg/omp.nix diff --git a/garlic/apps/hpcg/default.nix b/garlic/apps/hpcg/default.nix index 257f02e..6dc697c 100644 --- a/garlic/apps/hpcg/default.nix +++ b/garlic/apps/hpcg/default.nix @@ -1,11 +1,11 @@ { stdenv , cc -, mpi -, gitBranch ? "garlic/seq" -, makefileName ? "Linux_Serial" +, mpi ? null +, gitBranch }: +with stdenv.lib; stdenv.mkDerivation rec { name = "hpcg"; @@ -20,8 +20,8 @@ stdenv.mkDerivation rec { buildInputs = [ cc - mpi - ]; + ] + ++ optional (mpi != null) mpi; makeFlags = [ "CC=${cc.cc.CC}" @@ -30,12 +30,6 @@ stdenv.mkDerivation rec { enableParallelBuilding = true; - configurePhase = '' - mkdir build - cd build - ../configure ${makefileName} - ''; - installPhase = '' mkdir -p $out/bin cp bin/* $out/bin/ diff --git a/garlic/exp/hpcg/mpi+omp.nix b/garlic/exp/hpcg/mpi+omp.nix new file mode 100644 index 0000000..e4facc5 --- /dev/null +++ b/garlic/exp/hpcg/mpi+omp.nix @@ -0,0 +1,63 @@ +{ + stdenv +, stdexp +, bsc +, targetMachine +, stages +}: + +with stdenv.lib; + +let + # Initial variable configuration + varConf = with bsc; { + n = [ 104 64 ]; + }; + + # Generate the complete configuration for each unit + genConf = with bsc; c: targetMachine.config // rec { + # hpcg options + n = c.n; + cc = icc; + mpi = impi; + gitBranch = "garlic/mpi+omp"; + + # Repeat the execution of each unit 30 times + loops = 30; + + # Resources + qos = "debug"; + ntasksPerNode = 48; + nodes = 1; + time = "02:00:00"; + cpuBind = "sockets,verbose"; + jobName = "hpcg-${toString n}-${gitBranch}"; + }; + + # Compute the array of configurations + configs = stdexp.buildConfigs { + inherit varConf genConf; + }; + + exec = {nextStage, conf, ...}: with conf; stages.exec { + inherit nextStage; + argv = [ + "--nx=${toString n}" + "--ny=${toString n}" + "--nz=${toString n}" + ]; + }; + + program = {nextStage, conf, ...}: with conf; + let + customPkgs = stdexp.replaceMpi conf.mpi; + in + customPkgs.apps.hpcg.override { + inherit cc mpi gitBranch; + }; + + pipeline = stdexp.stdPipeline ++ [ exec program ]; + +in + + stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/hpcg/mpi.nix b/garlic/exp/hpcg/mpi.nix index 91b0429..331bd91 100644 --- a/garlic/exp/hpcg/mpi.nix +++ b/garlic/exp/hpcg/mpi.nix @@ -21,8 +21,6 @@ let cc = icc; mpi = impi; gitBranch = "garlic/mpi"; - # FIXME: fix this option in the garlic/mpi git branch - makefileName = "MPI"; # Repeat the execution of each unit 30 times loops = 30; @@ -55,11 +53,11 @@ let customPkgs = stdexp.replaceMpi conf.mpi; in customPkgs.apps.hpcg.override { - inherit cc mpi gitBranch makefileName; + inherit cc mpi gitBranch; }; pipeline = stdexp.stdPipeline ++ [ exec program ]; in - + stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/hpcg/omp.nix b/garlic/exp/hpcg/omp.nix new file mode 100644 index 0000000..bf3d59d --- /dev/null +++ b/garlic/exp/hpcg/omp.nix @@ -0,0 +1,63 @@ +{ + stdenv +, stdexp +, bsc +, targetMachine +, stages +}: + +with stdenv.lib; + +let + # Initial variable configuration + varConf = with bsc; { + n = [ 104 64 ]; + }; + + # Generate the complete configuration for each unit + genConf = with bsc; c: targetMachine.config // rec { + # hpcg options + n = c.n; + cc = icc; + mpi = null; # TODO: Remove this for omp + gitBranch = "garlic/seq"; + + # Repeat the execution of each unit 30 times + loops = 30; + + # Resources + qos = "debug"; + ntasksPerNode = 48; + nodes = 1; + time = "02:00:00"; + cpuBind = "sockets,verbose"; + jobName = "hpcg-${toString n}-${gitBranch}"; + }; + + # Compute the array of configurations + configs = stdexp.buildConfigs { + inherit varConf genConf; + }; + + exec = {nextStage, conf, ...}: with conf; stages.exec { + inherit nextStage; + argv = [ + "--nx=${toString n}" + "--ny=${toString n}" + "--nz=${toString n}" + ]; + }; + + program = {nextStage, conf, ...}: with conf; + let + customPkgs = stdexp.replaceMpi conf.mpi; + in + customPkgs.apps.hpcg.override { + inherit cc gitBranch; + }; + + pipeline = stdexp.stdPipeline ++ [ exec program ]; + +in + + stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/hpcg/serial.nix b/garlic/exp/hpcg/serial.nix index 0d5d855..91ce793 100644 --- a/garlic/exp/hpcg/serial.nix +++ b/garlic/exp/hpcg/serial.nix @@ -19,7 +19,7 @@ let # hpcg options n = c.n; cc = icc; - mpi = impi; + mpi = null; # TODO: Remove this for serial gitBranch = "garlic/seq"; # Repeat the execution of each unit 30 times @@ -59,5 +59,5 @@ let pipeline = stdexp.stdPipeline ++ [ exec program ]; in - + stdexp.genExperiment { inherit configs pipeline; } diff --git a/overlay.nix b/overlay.nix index 3ce3368..3e782c9 100644 --- a/overlay.nix +++ b/overlay.nix @@ -199,7 +199,8 @@ let hpcg = callPackage ./garlic/apps/hpcg/default.nix { cc = self.bsc.icc; - gitBranch = "garlic/seq"; + mpi = self.bsc.impi; + gitBranch = "garlic/mpi+omp"; }; # heat = callPackage ./garlic/apps/heat { @@ -262,8 +263,8 @@ let hpcg = { serial = callPackage ./garlic/exp/hpcg/serial.nix { }; mpi = callPackage ./garlic/exp/hpcg/mpi.nix { }; - # omp = callPackage ./garlic/exp/hpcg/omp.nix { }; - # mpi+omp = callPackage ./garlic/exp/hpcg/mpi+omp.nix { }; + omp = callPackage ./garlic/exp/hpcg/omp.nix { }; + mpi_omp = callPackage ./garlic/exp/hpcg/mpi+omp.nix { }; }; test = { From ea0272c2122244a9d47301fb102323fc1dbecf04 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ra=C3=BAl=20Pe=C3=B1acoba?= Date: Thu, 22 Oct 2020 13:32:20 +0200 Subject: [PATCH 260/987] Add OmpSs-2 (no mpi) version --- garlic/apps/hpcg/default.nix | 4 +++ garlic/exp/hpcg/oss.nix | 68 ++++++++++++++++++++++++++++++++++++ overlay.nix | 21 +++++++++-- 3 files changed, 91 insertions(+), 2 deletions(-) create mode 100644 garlic/exp/hpcg/oss.nix diff --git a/garlic/apps/hpcg/default.nix b/garlic/apps/hpcg/default.nix index 6dc697c..3d62904 100644 --- a/garlic/apps/hpcg/default.nix +++ b/garlic/apps/hpcg/default.nix @@ -1,6 +1,8 @@ { stdenv , cc +, nanos6 ? null +, mcxx ? null , mpi ? null , gitBranch }: @@ -21,6 +23,8 @@ stdenv.mkDerivation rec { buildInputs = [ cc ] + ++ optional (mcxx != null) mcxx + ++ optional (nanos6 != null) nanos6 ++ optional (mpi != null) mpi; makeFlags = [ diff --git a/garlic/exp/hpcg/oss.nix b/garlic/exp/hpcg/oss.nix new file mode 100644 index 0000000..e30c6de --- /dev/null +++ b/garlic/exp/hpcg/oss.nix @@ -0,0 +1,68 @@ +{ + stdenv +, stdexp +, bsc +, targetMachine +, stages +}: + +with stdenv.lib; + +let + # Initial variable configuration + varConf = with bsc; { + n = [ 200 104 64 ]; + nblocks = [ 128 ]; + }; + + # Generate the complete configuration for each unit + genConf = with bsc; c: targetMachine.config // rec { + # hpcg options + n = c.n; + nblocks = c.nblocks; + cc = bsc.icc; + mcxx = bsc.mcxx; + nanos6 = bsc.nanos6; + mpi = null; # TODO: Remove this for oss + gitBranch = "garlic/oss"; + + # Repeat the execution of each unit 30 times + loops = 30; + + # Resources + qos = "debug"; + ntasksPerNode = 48; + nodes = 1; + time = "02:00:00"; + cpuBind = "sockets,verbose"; + jobName = "hpcg-${toString n}-${gitBranch}"; + }; + + # Compute the array of configurations + configs = stdexp.buildConfigs { + inherit varConf genConf; + }; + + exec = {nextStage, conf, ...}: with conf; stages.exec { + inherit nextStage; + argv = [ + "--nx=${toString n}" + "--ny=${toString n}" + "--nz=${toString n}" + "--nblocks=${toString nblocks}" + ]; + }; + + program = {nextStage, conf, ...}: with conf; + let + customPkgs = stdexp.replaceMpi conf.mpi; + in + customPkgs.apps.hpcg.override { + inherit cc nanos6 mcxx gitBranch; + }; + + pipeline = stdexp.stdPipeline ++ [ exec program ]; + +in + + stdexp.genExperiment { inherit configs pipeline; } diff --git a/overlay.nix b/overlay.nix index 3e782c9..152ddf9 100644 --- a/overlay.nix +++ b/overlay.nix @@ -199,8 +199,24 @@ let hpcg = callPackage ./garlic/apps/hpcg/default.nix { cc = self.bsc.icc; - mpi = self.bsc.impi; - gitBranch = "garlic/mpi+omp"; + mcxx = self.bsc.mcxx; + nanos6 = self.bsc.nanos6; + gitBranch = "garlic/oss"; + + # cc = self.bsc.icc; + # gitBranch = "garlic/seq"; + + # cc = self.bsc.icc; + # mpi = self.bsc.mpi; + # gitBranch = "garlic/mpi"; + + # cc = self.bsc.icc; + # gitBranch = "garlic/omp"; + + # cc = self.bsc.icc; + # mpi = self.bsc.mpi; + # gitBranch = "garlic/mpi+omp"; + }; # heat = callPackage ./garlic/apps/heat { @@ -265,6 +281,7 @@ let mpi = callPackage ./garlic/exp/hpcg/mpi.nix { }; omp = callPackage ./garlic/exp/hpcg/omp.nix { }; mpi_omp = callPackage ./garlic/exp/hpcg/mpi+omp.nix { }; + oss = callPackage ./garlic/exp/hpcg/oss.nix { }; }; test = { From 22a294f9ccc79d0df9c87aee13971aafaad70401 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ra=C3=BAl=20Pe=C3=B1acoba?= Date: Fri, 23 Oct 2020 10:06:23 +0200 Subject: [PATCH 261/987] Forgot to set one task per node --- garlic/exp/hpcg/oss.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/garlic/exp/hpcg/oss.nix b/garlic/exp/hpcg/oss.nix index e30c6de..0cfc395 100644 --- a/garlic/exp/hpcg/oss.nix +++ b/garlic/exp/hpcg/oss.nix @@ -31,7 +31,7 @@ let # Resources qos = "debug"; - ntasksPerNode = 48; + ntasksPerNode = 1; nodes = 1; time = "02:00:00"; cpuBind = "sockets,verbose"; From b856e2147a31f7bad19dfec8b47fa12fef1c4a8e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ra=C3=BAl=20Pe=C3=B1acoba?= Date: Tue, 27 Oct 2020 18:13:21 +0100 Subject: [PATCH 262/987] Use discrete deps in nanos6. Pass nblocks to omp version and use the same experiments as oss --- garlic/exp/hpcg/omp.nix | 9 ++++++--- garlic/exp/hpcg/oss.nix | 1 + 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/garlic/exp/hpcg/omp.nix b/garlic/exp/hpcg/omp.nix index bf3d59d..84f682c 100644 --- a/garlic/exp/hpcg/omp.nix +++ b/garlic/exp/hpcg/omp.nix @@ -11,23 +11,25 @@ with stdenv.lib; let # Initial variable configuration varConf = with bsc; { - n = [ 104 64 ]; + n = [ 200 104 64 ]; + nblocks = [ 128 ]; }; # Generate the complete configuration for each unit genConf = with bsc; c: targetMachine.config // rec { # hpcg options n = c.n; + nblocks = c.nblocks; cc = icc; mpi = null; # TODO: Remove this for omp - gitBranch = "garlic/seq"; + gitBranch = "garlic/omp"; # Repeat the execution of each unit 30 times loops = 30; # Resources qos = "debug"; - ntasksPerNode = 48; + ntasksPerNode = 1; nodes = 1; time = "02:00:00"; cpuBind = "sockets,verbose"; @@ -45,6 +47,7 @@ let "--nx=${toString n}" "--ny=${toString n}" "--nz=${toString n}" + "--nblocks=${toString nblocks}" ]; }; diff --git a/garlic/exp/hpcg/oss.nix b/garlic/exp/hpcg/oss.nix index 0cfc395..4f353bb 100644 --- a/garlic/exp/hpcg/oss.nix +++ b/garlic/exp/hpcg/oss.nix @@ -45,6 +45,7 @@ let exec = {nextStage, conf, ...}: with conf; stages.exec { inherit nextStage; + env = "NANOS6_DEPENDENCIES=discrete"; argv = [ "--nx=${toString n}" "--ny=${toString n}" From 58e3d48a16ad5b1b6f9f254fad3b1ae9fcabded3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ra=C3=BAl=20Pe=C3=B1acoba?= Date: Fri, 30 Oct 2020 14:05:40 +0100 Subject: [PATCH 263/987] Use mask_cpu and n.x n.y n.z instead of n --- garlic/exp/hpcg/mpi+omp.nix | 26 ++++++++++++++++---------- garlic/exp/hpcg/mpi.nix | 21 +++++++++++---------- garlic/exp/hpcg/omp.nix | 21 +++++++++++++-------- garlic/exp/hpcg/oss.nix | 15 ++++++++------- garlic/exp/hpcg/serial.nix | 14 +++++++------- 5 files changed, 55 insertions(+), 42 deletions(-) diff --git a/garlic/exp/hpcg/mpi+omp.nix b/garlic/exp/hpcg/mpi+omp.nix index e4facc5..261979f 100644 --- a/garlic/exp/hpcg/mpi+omp.nix +++ b/garlic/exp/hpcg/mpi+omp.nix @@ -11,15 +11,16 @@ with stdenv.lib; let # Initial variable configuration varConf = with bsc; { - n = [ 104 64 ]; + n = [ { x = 64; y = 64; z = 88; } ]; + nblocks = [ 12 24 48 96 192 384 ]; }; # Generate the complete configuration for each unit genConf = with bsc; c: targetMachine.config // rec { # hpcg options n = c.n; - cc = icc; - mpi = impi; + cc = bsc.icc; + mpi = bsc.impi; gitBranch = "garlic/mpi+omp"; # Repeat the execution of each unit 30 times @@ -27,11 +28,12 @@ let # Resources qos = "debug"; - ntasksPerNode = 48; - nodes = 1; + ntasksPerNode = 1; + nodes = 2; time = "02:00:00"; - cpuBind = "sockets,verbose"; - jobName = "hpcg-${toString n}-${gitBranch}"; + # Each task in different socket + cpuBind = "verbose,mask_cpu:0xffffff"; + jobName = "hpcg-${toString n.x}-${toString n.y}-${toString n.z}-${gitBranch}"; }; # Compute the array of configurations @@ -41,10 +43,14 @@ let exec = {nextStage, conf, ...}: with conf; stages.exec { inherit nextStage; + env = '' + OMP_PROC_BIND=true + OMP_NUM_THREADS=12 + ''; argv = [ - "--nx=${toString n}" - "--ny=${toString n}" - "--nz=${toString n}" + "--nx=${toString n.x}" + "--ny=${toString n.y}" + "--nz=${toString n.z}" ]; }; diff --git a/garlic/exp/hpcg/mpi.nix b/garlic/exp/hpcg/mpi.nix index 331bd91..d57dc88 100644 --- a/garlic/exp/hpcg/mpi.nix +++ b/garlic/exp/hpcg/mpi.nix @@ -11,15 +11,15 @@ with stdenv.lib; let # Initial variable configuration varConf = with bsc; { - n = [ 104 64 ]; + n = [ { x = 64; y = 64; z = 88; } ]; }; # Generate the complete configuration for each unit genConf = with bsc; c: targetMachine.config // rec { # hpcg options n = c.n; - cc = icc; - mpi = impi; + cc = bsc.icc; + mpi = bsc.impi; gitBranch = "garlic/mpi"; # Repeat the execution of each unit 30 times @@ -27,11 +27,12 @@ let # Resources qos = "debug"; - ntasksPerNode = 48; - nodes = 1; + ntasksPerNode = 1; + nodes = 24; time = "02:00:00"; - cpuBind = "sockets,verbose"; - jobName = "hpcg-${toString n}-${gitBranch}"; + # Each task in different socket + cpuBind = "verbose,mask_cpu:0x1"; + jobName = "hpcg-${toString n.x}-${toString n.y}-${toString n.z}-${gitBranch}"; }; # Compute the array of configurations @@ -42,9 +43,9 @@ let exec = {nextStage, conf, ...}: with conf; stages.exec { inherit nextStage; argv = [ - "--nx=${toString n}" - "--ny=${toString n}" - "--nz=${toString n}" + "--nx=${toString n.x}" + "--ny=${toString n.y}" + "--nz=${toString n.z}" ]; }; diff --git a/garlic/exp/hpcg/omp.nix b/garlic/exp/hpcg/omp.nix index 84f682c..aca3a5b 100644 --- a/garlic/exp/hpcg/omp.nix +++ b/garlic/exp/hpcg/omp.nix @@ -11,8 +11,8 @@ with stdenv.lib; let # Initial variable configuration varConf = with bsc; { - n = [ 200 104 64 ]; - nblocks = [ 128 ]; + n = [ { x = 128; y = 256; z = 264; } ]; + nblocks = [ 12 24 48 96 192 384 ]; }; # Generate the complete configuration for each unit @@ -20,7 +20,7 @@ let # hpcg options n = c.n; nblocks = c.nblocks; - cc = icc; + cc = bsc.icc; mpi = null; # TODO: Remove this for omp gitBranch = "garlic/omp"; @@ -32,8 +32,9 @@ let ntasksPerNode = 1; nodes = 1; time = "02:00:00"; - cpuBind = "sockets,verbose"; - jobName = "hpcg-${toString n}-${gitBranch}"; + # task in one socket + cpuBind = "verbose,mask_cpu:0xffffff"; + jobName = "hpcg-${toString n.x}-${toString n.y}-${toString n.z}-${gitBranch}"; }; # Compute the array of configurations @@ -43,10 +44,14 @@ let exec = {nextStage, conf, ...}: with conf; stages.exec { inherit nextStage; + env = '' + OMP_PROC_BIND=true + OMP_NUM_THREADS=24 + ''; argv = [ - "--nx=${toString n}" - "--ny=${toString n}" - "--nz=${toString n}" + "--nx=${toString n.x}" + "--ny=${toString n.y}" + "--nz=${toString n.z}" "--nblocks=${toString nblocks}" ]; }; diff --git a/garlic/exp/hpcg/oss.nix b/garlic/exp/hpcg/oss.nix index 4f353bb..6695023 100644 --- a/garlic/exp/hpcg/oss.nix +++ b/garlic/exp/hpcg/oss.nix @@ -11,8 +11,8 @@ with stdenv.lib; let # Initial variable configuration varConf = with bsc; { - n = [ 200 104 64 ]; - nblocks = [ 128 ]; + n = [ { x = 128; y = 256; z = 264; } ]; + nblocks = [ 12 24 48 96 192 384 ]; }; # Generate the complete configuration for each unit @@ -34,8 +34,9 @@ let ntasksPerNode = 1; nodes = 1; time = "02:00:00"; - cpuBind = "sockets,verbose"; - jobName = "hpcg-${toString n}-${gitBranch}"; + # task in one socket + cpuBind = "verbose,mask_cpu:0xffffff"; + jobName = "hpcg-${toString n.x}-${toString n.y}-${toString n.z}-${gitBranch}"; }; # Compute the array of configurations @@ -47,9 +48,9 @@ let inherit nextStage; env = "NANOS6_DEPENDENCIES=discrete"; argv = [ - "--nx=${toString n}" - "--ny=${toString n}" - "--nz=${toString n}" + "--nx=${toString n.x}" + "--ny=${toString n.y}" + "--nz=${toString n.z}" "--nblocks=${toString nblocks}" ]; }; diff --git a/garlic/exp/hpcg/serial.nix b/garlic/exp/hpcg/serial.nix index 91ce793..90356ef 100644 --- a/garlic/exp/hpcg/serial.nix +++ b/garlic/exp/hpcg/serial.nix @@ -11,7 +11,7 @@ with stdenv.lib; let # Initial variable configuration varConf = with bsc; { - n = [ 104 64 ]; + n = [ { x = 128; y = 256; z = 264; } ]; }; # Generate the complete configuration for each unit @@ -27,11 +27,11 @@ let # Resources qos = "debug"; - ntasksPerNode = 48; + ntasksPerNode = 1; nodes = 1; time = "02:00:00"; - cpuBind = "sockets,verbose"; - jobName = "hpcg-${toString n}-${gitBranch}"; + cpuBind = "verbose,mask_cpu:0x1"; + jobName = "hpcg-${toString n.x}-${toString n.y}-${toString n.z}-${gitBranch}"; }; # Compute the array of configurations @@ -42,9 +42,9 @@ let exec = {nextStage, conf, ...}: with conf; stages.exec { inherit nextStage; argv = [ - "--nx=${toString n}" - "--ny=${toString n}" - "--nz=${toString n}" + "--nx=${toString n.x}" + "--ny=${toString n.y}" + "--nz=${toString n.z}" ]; }; From d757332448734e361e313390920d9f540e87683f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ra=C3=BAl=20Pe=C3=B1acoba?= Date: Fri, 30 Oct 2020 14:35:09 +0100 Subject: [PATCH 264/987] Remove extrae home --- garlic/exp/hpcg/extrae.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/garlic/exp/hpcg/extrae.xml b/garlic/exp/hpcg/extrae.xml index b9af29b..45a7574 100644 --- a/garlic/exp/hpcg/extrae.xml +++ b/garlic/exp/hpcg/extrae.xml @@ -7,7 +7,6 @@ From 6a1375726f9b3371d70771e72701a9941df0dbe0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ra=C3=BAl=20Pe=C3=B1acoba?= Date: Fri, 30 Oct 2020 14:44:33 +0100 Subject: [PATCH 265/987] Fix problem sizes to be equivalent between versions --- garlic/exp/hpcg/mpi+omp.nix | 8 ++++---- garlic/exp/hpcg/mpi.nix | 2 +- garlic/exp/hpcg/omp.nix | 2 +- garlic/exp/hpcg/oss.nix | 2 +- garlic/exp/hpcg/serial.nix | 2 +- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/garlic/exp/hpcg/mpi+omp.nix b/garlic/exp/hpcg/mpi+omp.nix index 261979f..5605901 100644 --- a/garlic/exp/hpcg/mpi+omp.nix +++ b/garlic/exp/hpcg/mpi+omp.nix @@ -11,7 +11,7 @@ with stdenv.lib; let # Initial variable configuration varConf = with bsc; { - n = [ { x = 64; y = 64; z = 88; } ]; + n = [ { x = 128; y = 192; z = 192; } ]; nblocks = [ 12 24 48 96 192 384 ]; }; @@ -29,10 +29,10 @@ let # Resources qos = "debug"; ntasksPerNode = 1; - nodes = 2; + nodes = 4; time = "02:00:00"; # Each task in different socket - cpuBind = "verbose,mask_cpu:0xffffff"; + cpuBind = "verbose,mask_cpu:0x3f"; jobName = "hpcg-${toString n.x}-${toString n.y}-${toString n.z}-${gitBranch}"; }; @@ -45,7 +45,7 @@ let inherit nextStage; env = '' OMP_PROC_BIND=true - OMP_NUM_THREADS=12 + OMP_NUM_THREADS=6 ''; argv = [ "--nx=${toString n.x}" diff --git a/garlic/exp/hpcg/mpi.nix b/garlic/exp/hpcg/mpi.nix index d57dc88..a2a2ec4 100644 --- a/garlic/exp/hpcg/mpi.nix +++ b/garlic/exp/hpcg/mpi.nix @@ -11,7 +11,7 @@ with stdenv.lib; let # Initial variable configuration varConf = with bsc; { - n = [ { x = 64; y = 64; z = 88; } ]; + n = [ { x = 96; y = 96; z = 96; } ]; }; # Generate the complete configuration for each unit diff --git a/garlic/exp/hpcg/omp.nix b/garlic/exp/hpcg/omp.nix index aca3a5b..9960302 100644 --- a/garlic/exp/hpcg/omp.nix +++ b/garlic/exp/hpcg/omp.nix @@ -11,7 +11,7 @@ with stdenv.lib; let # Initial variable configuration varConf = with bsc; { - n = [ { x = 128; y = 256; z = 264; } ]; + n = [ { x = 256; y = 288; z = 288; } ]; nblocks = [ 12 24 48 96 192 384 ]; }; diff --git a/garlic/exp/hpcg/oss.nix b/garlic/exp/hpcg/oss.nix index 6695023..5084504 100644 --- a/garlic/exp/hpcg/oss.nix +++ b/garlic/exp/hpcg/oss.nix @@ -11,7 +11,7 @@ with stdenv.lib; let # Initial variable configuration varConf = with bsc; { - n = [ { x = 128; y = 256; z = 264; } ]; + n = [ { x = 256; y = 288; z = 288; } ]; nblocks = [ 12 24 48 96 192 384 ]; }; diff --git a/garlic/exp/hpcg/serial.nix b/garlic/exp/hpcg/serial.nix index 90356ef..3c58b42 100644 --- a/garlic/exp/hpcg/serial.nix +++ b/garlic/exp/hpcg/serial.nix @@ -11,7 +11,7 @@ with stdenv.lib; let # Initial variable configuration varConf = with bsc; { - n = [ { x = 128; y = 256; z = 264; } ]; + n = [ { x = 256; y = 288; z = 288; } ]; }; # Generate the complete configuration for each unit From 56584c9e97e373baf9942b1d01ab5315c1c81917 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ra=C3=BAl=20Pe=C3=B1acoba?= Date: Fri, 30 Oct 2020 15:01:44 +0100 Subject: [PATCH 266/987] Remove the osu set of tests --- overlay.nix | 8 -------- 1 file changed, 8 deletions(-) diff --git a/overlay.nix b/overlay.nix index 152ddf9..c695def 100644 --- a/overlay.nix +++ b/overlay.nix @@ -288,14 +288,6 @@ let exec = callPackage ./test/garlic/exec.nix { exec = self.bsc.garlic.stages.exec; }; - - osu = rec { - latency-internode = callPackage ./garlic/exp/osu/latency.nix { }; - latency-intranode = callPackage ./garlic/exp/osu/latency.nix { - interNode = false; - }; - latency = latency-internode; - }; }; }; }; From 9c20537f911b5a4244f4ed2412e0a2b77fe64d7d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ra=C3=BAl=20Pe=C3=B1acoba?= Date: Fri, 30 Oct 2020 15:10:47 +0100 Subject: [PATCH 267/987] Since mpi+omp version uses 6 threads, change nblocks values --- garlic/exp/hpcg/mpi+omp.nix | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/garlic/exp/hpcg/mpi+omp.nix b/garlic/exp/hpcg/mpi+omp.nix index 5605901..dfe4696 100644 --- a/garlic/exp/hpcg/mpi+omp.nix +++ b/garlic/exp/hpcg/mpi+omp.nix @@ -12,7 +12,7 @@ let # Initial variable configuration varConf = with bsc; { n = [ { x = 128; y = 192; z = 192; } ]; - nblocks = [ 12 24 48 96 192 384 ]; + nblocks = [ 6 12 24 48 96 192 ]; }; # Generate the complete configuration for each unit @@ -51,6 +51,7 @@ let "--nx=${toString n.x}" "--ny=${toString n.y}" "--nz=${toString n.z}" + "--nblocks=${toString nblocks}" ]; }; From 6f60e3cab28870f831c535aa3de1c000d3352b8d Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 3 Nov 2020 11:16:58 +0100 Subject: [PATCH 268/987] Fix groff PDF engine Fixes issue #51 --- ...-cross-compilation-by-looking-for-ar.patch | 46 +++++++ bsc/groff/default.nix | 127 ++++++++++++++++++ bsc/groff/site.tmac | 16 +++ overlay.nix | 2 + 4 files changed, 191 insertions(+) create mode 100644 bsc/groff/0001-Fix-cross-compilation-by-looking-for-ar.patch create mode 100644 bsc/groff/default.nix create mode 100644 bsc/groff/site.tmac diff --git a/bsc/groff/0001-Fix-cross-compilation-by-looking-for-ar.patch b/bsc/groff/0001-Fix-cross-compilation-by-looking-for-ar.patch new file mode 100644 index 0000000..671293c --- /dev/null +++ b/bsc/groff/0001-Fix-cross-compilation-by-looking-for-ar.patch @@ -0,0 +1,46 @@ +From 1454525f70b43a6957b7c9e1870e997368787da3 Mon Sep 17 00:00:00 2001 +From: Samuel Dionne-Riel +Date: Fri, 8 Nov 2019 21:59:21 -0500 +Subject: [PATCH] Fix cross-compilation by looking for `ar`. + +--- + Makefile.am | 2 +- + configure.ac | 2 ++ + 2 files changed, 3 insertions(+), 1 deletion(-) + +diff --git a/Makefile.am b/Makefile.am +index d18c49b8..b1b53338 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -494,7 +494,7 @@ CCC=@CXX@ + # INSTALL_INFO + # LN_S + +-AR=ar ++AR=@AR@ + ETAGS=etags + ETAGSFLAGS= + # Flag that tells etags to assume C++. +diff --git a/configure.ac b/configure.ac +index 28e75f17..2449b9f5 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -37,6 +37,7 @@ AC_CONFIG_AUX_DIR([build-aux]) + + AC_CONFIG_HEADERS([src/include/config.h:src/include/config.hin]) + AC_CONFIG_SRCDIR([src/roff/groff/groff.cpp]) ++AC_CONFIG_MACRO_DIR([m4]) + + AC_USE_SYSTEM_EXTENSIONS + +@@ -72,6 +73,7 @@ GROFF_DOC_CHECK + GROFF_MAKEINFO + GROFF_TEXI2DVI + AC_PROG_RANLIB ++AC_CHECK_TOOL([AR], [ar], [ar]) + GROFF_INSTALL_SH + GROFF_INSTALL_INFO + AC_PROG_INSTALL +-- +2.23.0 + diff --git a/bsc/groff/default.nix b/bsc/groff/default.nix new file mode 100644 index 0000000..a3397b4 --- /dev/null +++ b/bsc/groff/default.nix @@ -0,0 +1,127 @@ +{ stdenv, fetchurl, perl +, ghostscript #for postscript and html output +, psutils, netpbm #for html output +, buildPackages +, autoreconfHook +, pkgconfig +, texinfo +}: + +stdenv.mkDerivation rec { + pname = "groff"; + version = "1.22.4"; + + src = fetchurl { + url = "mirror://gnu/groff/${pname}-${version}.tar.gz"; + sha256 = "14q2mldnr1vx0l9lqp9v2f6iww24gj28iyh4j2211hyynx67p3p7"; + }; + + enableParallelBuilding = false; + + patches = [ + ./0001-Fix-cross-compilation-by-looking-for-ar.patch + ]; + + postPatch = stdenv.lib.optionalString (psutils != null) '' + substituteInPlace src/preproc/html/pre-html.cpp \ + --replace "psselect" "${psutils}/bin/psselect" + '' + stdenv.lib.optionalString (netpbm != null) '' + substituteInPlace src/preproc/html/pre-html.cpp \ + --replace "pnmcut" "${stdenv.lib.getBin netpbm}/bin/pnmcut" \ + --replace "pnmcrop" "${stdenv.lib.getBin netpbm}/bin/pnmcrop" \ + --replace "pnmtopng" "${stdenv.lib.getBin netpbm}/bin/pnmtopng" + substituteInPlace tmac/www.tmac.in \ + --replace "pnmcrop" "${stdenv.lib.getBin netpbm}/bin/pnmcrop" \ + --replace "pngtopnm" "${stdenv.lib.getBin netpbm}/bin/pngtopnm" \ + --replace "@PNMTOPS_NOSETPAGE@" "${stdenv.lib.getBin netpbm}/bin/pnmtops -nosetpage" + ''; + + buildInputs = [ ghostscript psutils netpbm perl ]; + nativeBuildInputs = [ autoreconfHook pkgconfig texinfo ]; + + # Builds running without a chroot environment may detect the presence + # of /usr/X11 in the host system, leading to an impure build of the + # package. To avoid this issue, X11 support is explicitly disabled. + # Note: If we ever want to *enable* X11 support, then we'll probably + # have to pass "--with-appresdir", too. + configureFlags = [ + "--without-x" + ] ++ stdenv.lib.optionals (ghostscript != null) [ + "--with-gs=${ghostscript}/bin/gs" + ] ++ stdenv.lib.optionals (stdenv.buildPlatform != stdenv.hostPlatform) [ + "ac_cv_path_PERL=${buildPackages.perl}/bin/perl" + ]; + + makeFlags = stdenv.lib.optionals (stdenv.buildPlatform != stdenv.hostPlatform) [ + # Trick to get the build system find the proper 'native' groff + # http://www.mail-archive.com/bug-groff@gnu.org/msg01335.html + "GROFF_BIN_PATH=${buildPackages.groff}/bin" + "GROFFBIN=${buildPackages.groff}/bin/groff" + ]; + + doCheck = true; + + postInstall = '' + for f in 'man.local' 'mdoc.local'; do + cat '${./site.tmac}' >>"$out/share/groff/site-tmac/$f" + done + + moveToOutput bin/gropdf $out + moveToOutput bin/pdfmom $out + moveToOutput bin/roff2text $out + moveToOutput bin/roff2pdf $out + moveToOutput bin/roff2ps $out + moveToOutput bin/roff2dvi $out + moveToOutput bin/roff2ps $out + moveToOutput bin/roff2html $out + moveToOutput bin/glilypond $out + moveToOutput bin/mmroff $out + moveToOutput bin/roff2x $out + moveToOutput bin/afmtodit $out + moveToOutput bin/gperl $out + moveToOutput bin/chem $out + moveToOutput share/groff/${version}/font/devpdf $out + + # idk if this is needed, but Fedora does it + moveToOutput share/groff/${version}/tmac/pdf.tmac $out + + moveToOutput bin/gpinyin $out + moveToOutput lib/groff/gpinyin $out + substituteInPlace $out/bin/gpinyin \ + --replace $out/lib/groff/gpinyin $out/lib/groff/gpinyin + + moveToOutput bin/groffer $out + moveToOutput lib/groff/groffer $out + substituteInPlace $out/bin/groffer \ + --replace $out/lib/groff/groffer $out/lib/groff/groffer + + moveToOutput bin/grog $out + moveToOutput lib/groff/grog $out + substituteInPlace $out/bin/grog \ + --replace $out/lib/groff/grog $out/lib/groff/grog + + '' + stdenv.lib.optionalString (stdenv.buildPlatform != stdenv.hostPlatform) '' + find $out/ -type f -print0 | xargs --null sed -i 's|${buildPackages.perl}|${perl}|' + ''; + + meta = with stdenv.lib; { + homepage = "https://www.gnu.org/software/groff/"; + description = "GNU Troff, a typesetting package that reads plain text and produces formatted output"; + license = licenses.gpl3Plus; + platforms = platforms.all; + maintainers = with maintainers; [ pSub ]; + + longDescription = '' + groff is the GNU implementation of troff, a document formatting + system. Included in this release are implementations of troff, + pic, eqn, tbl, grn, refer, -man, -mdoc, -mom, and -ms macros, + and drivers for PostScript, TeX dvi format, HP LaserJet 4 + printers, Canon CAPSL printers, HTML and XHTML format (beta + status), and typewriter-like devices. Also included is a + modified version of the Berkeley -me macros, the enhanced + version gxditview of the X11 xditview previewer, and an + implementation of the -mm macros. + ''; + + }; +} diff --git a/bsc/groff/site.tmac b/bsc/groff/site.tmac new file mode 100644 index 0000000..8ef1040 --- /dev/null +++ b/bsc/groff/site.tmac @@ -0,0 +1,16 @@ +. +.if n \{\ +. \" Character translations for non-keyboard +. \" characters - to make them searchable +. if '\*[.T]'utf8' \{\ +. char \- \N'45' +. char - \N'45' +. char ' \N'39' +. char \' \N'39' +. \} +. +. \" Shut off SGR by default (groff colors) +. \" Require GROFF_SGR envvar defined to turn it on +. if '\V[GROFF_SGR]'' \ +. output x X tty: sgr 0 +.\} diff --git a/overlay.nix b/overlay.nix index c695def..be660c5 100644 --- a/overlay.nix +++ b/overlay.nix @@ -150,6 +150,8 @@ let enableStatic = true; }; + groff = callPackage ./bsc/groff/default.nix { }; + nixtools = callPackage ./bsc/nixtools/default.nix { }; garlicTools = callPackage ./garlic/tools.nix {}; From 11601703ce5b923db6acd76ffef41d73cac773eb Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 3 Nov 2020 19:08:19 +0100 Subject: [PATCH 269/987] Fix shebang in nanos6 master Also perl is a new dependency now --- bsc/nanos6/git.nix | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/bsc/nanos6/git.nix b/bsc/nanos6/git.nix index 85fb128..a18936e 100644 --- a/bsc/nanos6/git.nix +++ b/bsc/nanos6/git.nix @@ -4,6 +4,7 @@ , autoconf , libtool , pkg-config +, perl , numactl , hwloc , papi @@ -25,6 +26,10 @@ stdenv.mkDerivation rec { ref = branch; }; + prePatch = '' + patchShebangs scripts/generate_config.sh + ''; + enableParallelBuilding = true; preConfigure = '' @@ -43,6 +48,7 @@ stdenv.mkDerivation rec { automake libtool pkg-config + perl boost numactl hwloc From 74f83b5c11db6da8f3e6111dd7fd1502a5ddcb27 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 14 Oct 2020 16:31:14 +0200 Subject: [PATCH 270/987] WIP: manual plot --- garlic/postprocess/filter/fetch | 2 ++ garlic/postprocess/filter/filter | 18 ++++++++++++++++++ garlic/postprocess/filter/plot.gnuplot | 17 +++++++++++++++++ 3 files changed, 37 insertions(+) create mode 100755 garlic/postprocess/filter/fetch create mode 100755 garlic/postprocess/filter/filter create mode 100644 garlic/postprocess/filter/plot.gnuplot diff --git a/garlic/postprocess/filter/fetch b/garlic/postprocess/filter/fetch new file mode 100755 index 0000000..8890c29 --- /dev/null +++ b/garlic/postprocess/filter/fetch @@ -0,0 +1,2 @@ +#!/bin/sh +rsync -a mn1:go/$1 . diff --git a/garlic/postprocess/filter/filter b/garlic/postprocess/filter/filter new file mode 100755 index 0000000..78527bc --- /dev/null +++ b/garlic/postprocess/filter/filter @@ -0,0 +1,18 @@ +#!/bin/sh + +for unit in $1/*; do + #echo unit=$unit + bs=$(jq ".blocksize" "$unit/garlic_config.json") + #echo bs=$bs + + awk '/^time /{print $2}' > time.$bs $unit/stdout.log + + N=$(wc -l "time.$bs" | awk '{print $1}') + #echo N=$N + + if [ $N -lt 30 ]; then + echo "too few points ($N) in unit $unit" + #exit 1 + fi + +done diff --git a/garlic/postprocess/filter/plot.gnuplot b/garlic/postprocess/filter/plot.gnuplot new file mode 100644 index 0000000..a9abefc --- /dev/null +++ b/garlic/postprocess/filter/plot.gnuplot @@ -0,0 +1,17 @@ +set terminal png size 800,800 +set output 'out.png' + +set xrange [16:1024] +set nokey +set logscale x 2 +set logscale y 2 +set grid + +set xlabel "blocksize" +set ylabel "time (s)" + +plot 'time.32' using (32):1 with circles title "32", \ + 'time.64' using (64):1 with circles title "64", \ + 'time.128' using (128):1 with circles title "128", \ + 'time.256' using (256):1 with circles title "256", \ + 'time.512' using (512):1 with circles title "512" From 4f901c1b9ccc2fb68e4315ef09dafabc5b1ac610 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 15 Oct 2020 18:48:50 +0200 Subject: [PATCH 271/987] WIP: add postprocessing stages --- garlic/postprocess/fetch.nix | 47 ++++++++++++++++++++++++++ garlic/postprocess/filter/fetch | 2 -- garlic/postprocess/filter/filter | 18 ---------- garlic/postprocess/filter/plot.gnuplot | 17 ---------- garlic/postprocess/result.nix | 43 +++++++++++++++++++++++ garlic/tools.nix | 2 ++ 6 files changed, 92 insertions(+), 37 deletions(-) create mode 100644 garlic/postprocess/fetch.nix delete mode 100755 garlic/postprocess/filter/fetch delete mode 100755 garlic/postprocess/filter/filter delete mode 100644 garlic/postprocess/filter/plot.gnuplot create mode 100644 garlic/postprocess/result.nix diff --git a/garlic/postprocess/fetch.nix b/garlic/postprocess/fetch.nix new file mode 100644 index 0000000..32460f8 --- /dev/null +++ b/garlic/postprocess/fetch.nix @@ -0,0 +1,47 @@ +{ + stdenv +, rsync +, openssh +, nix +, curl +, garlicTools +}: + +{ + sshHost +, prefix +, experiment +, garlicTemp +}: + +with garlicTools; + +let + experimentStage = getExperimentStage experiment; + experimentName = baseNameOf (toString experimentStage); +in + stdenv.mkDerivation { + name = "fetch"; + preferLocalBuild = true; + + buildInputs = [ rsync openssh curl ]; + phases = [ "installPhase" ]; + + installPhase = '' + cat > $out << EOF + #!/bin/sh -e + mkdir -p ${garlicTemp} + export PATH=${rsync}/bin:${openssh}/bin:${nix}/bin + rsync -av \ + --include='*/*/*.log' --include='*/*/*.json' --exclude='*/*/*' \ + '${sshHost}:${prefix}/${experimentName}' ${garlicTemp} + + res=\$(nix-build -E '(with import ./default.nix; garlic.getExpResult \ + {experiment = "${experiment}"; garlicTemp = "${garlicTemp}"; })') + + echo "The results for experiment ${experimentName} are at:" + echo " \$res" + EOF + chmod +x $out + ''; + } diff --git a/garlic/postprocess/filter/fetch b/garlic/postprocess/filter/fetch deleted file mode 100755 index 8890c29..0000000 --- a/garlic/postprocess/filter/fetch +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/sh -rsync -a mn1:go/$1 . diff --git a/garlic/postprocess/filter/filter b/garlic/postprocess/filter/filter deleted file mode 100755 index 78527bc..0000000 --- a/garlic/postprocess/filter/filter +++ /dev/null @@ -1,18 +0,0 @@ -#!/bin/sh - -for unit in $1/*; do - #echo unit=$unit - bs=$(jq ".blocksize" "$unit/garlic_config.json") - #echo bs=$bs - - awk '/^time /{print $2}' > time.$bs $unit/stdout.log - - N=$(wc -l "time.$bs" | awk '{print $1}') - #echo N=$N - - if [ $N -lt 30 ]; then - echo "too few points ($N) in unit $unit" - #exit 1 - fi - -done diff --git a/garlic/postprocess/filter/plot.gnuplot b/garlic/postprocess/filter/plot.gnuplot deleted file mode 100644 index a9abefc..0000000 --- a/garlic/postprocess/filter/plot.gnuplot +++ /dev/null @@ -1,17 +0,0 @@ -set terminal png size 800,800 -set output 'out.png' - -set xrange [16:1024] -set nokey -set logscale x 2 -set logscale y 2 -set grid - -set xlabel "blocksize" -set ylabel "time (s)" - -plot 'time.32' using (32):1 with circles title "32", \ - 'time.64' using (64):1 with circles title "64", \ - 'time.128' using (128):1 with circles title "128", \ - 'time.256' using (256):1 with circles title "256", \ - 'time.512' using (512):1 with circles title "512" diff --git a/garlic/postprocess/result.nix b/garlic/postprocess/result.nix new file mode 100644 index 0000000..272884e --- /dev/null +++ b/garlic/postprocess/result.nix @@ -0,0 +1,43 @@ +{ + stdenv +, garlicTools +, fetchExperiment +}: + +{ + experiment +, garlicTemp +}: + +with garlicTools; + +let + experimentStage = getExperimentStage experiment; + experimentName = baseNameOf (toString experimentStage); + fetcher = fetchExperiment { + sshHost = "mn1"; + prefix = "/gpfs/projects/\\\$(id -gn)/\\\$(id -un)/garlic-out"; + garlicTemp = "/tmp/garlic-temp"; + inherit experiment; + }; +in + stdenv.mkDerivation { + name = "result"; + preferLocalBuild = true; + __noChroot = true; + + phases = [ "installPhase" ]; + + installPhase = '' + expPath=${garlicTemp}/${experimentName} + if [ ! -e $expPath ]; then + echo "The experiment ${experimentName} is missing in ${garlicTemp}." + echo "Please fetch it and try again." + echo "You can execute ${experiment} to run the experiment." + echo "And then ${fetcher} to get the results." + exit 1 + fi + mkdir -p $out + cp -a ${garlicTemp}/${experimentName} $out + ''; + } diff --git a/garlic/tools.nix b/garlic/tools.nix index 7316fff..342a877 100644 --- a/garlic/tools.nix +++ b/garlic/tools.nix @@ -39,6 +39,8 @@ let then "${stage}${stage.programPath}" else "${stage}"; + /* Given a trebuchet, returns the experiment */ + getExperimentStage = drv: drv.nextStage.nextStage.nextStage; }; in gen From c3659d316dff53a1b7556ebfb4fbfa347abb7759 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 15 Oct 2020 18:50:34 +0200 Subject: [PATCH 272/987] Add perf stage --- garlic/stages/perf.nix | 30 ++++++++++++++++++++++++++++++ overlay.nix | 1 + 2 files changed, 31 insertions(+) create mode 100644 garlic/stages/perf.nix diff --git a/garlic/stages/perf.nix b/garlic/stages/perf.nix new file mode 100644 index 0000000..cbbe937 --- /dev/null +++ b/garlic/stages/perf.nix @@ -0,0 +1,30 @@ +{ + stdenv +, perf +, garlicTools +}: + +{ + nextStage +, perfOptions +}: + +with garlicTools; + +let + program = stageProgram nextStage; +in + stdenv.mkDerivation { + name = "perf"; + phases = [ "installPhase" ]; + preferLocalBuild = true; + dontPatchShebangs = true; + installPhase = '' + cat > $out < Date: Thu, 15 Oct 2020 18:51:11 +0200 Subject: [PATCH 273/987] WIP: Add another nbody experiment --- garlic/exp/nbody/tampi.nix | 78 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 garlic/exp/nbody/tampi.nix diff --git a/garlic/exp/nbody/tampi.nix b/garlic/exp/nbody/tampi.nix new file mode 100644 index 0000000..eb23db1 --- /dev/null +++ b/garlic/exp/nbody/tampi.nix @@ -0,0 +1,78 @@ +{ + stdenv +, stdexp +, bsc +, targetMachine +, stages +}: + +with stdenv.lib; + +let + # Initial variable configuration + varConf = with bsc; { + # We need at least cpusPerNode blocks + nblocks = [ 32 64 128 256 ]; + }; + + machineConfig = targetMachine.config; + + # Generate the complete configuration for each unit + genConf = with bsc; c: targetMachine.config // rec { + inherit (machineConfig) hw; + # nbody options + particles = 1024 * 32; + timesteps = 10; + inherit (c) nblocks; + totalTasks = ntasksPerNode * nodes; + particlesPerTask = particles / totalTasks; + blocksize = particlesPerTask / nblocks; + assert1 = assertMsg (nblocks >= hw.cpusPerSocket) + "nblocks too low: ${toString nblocks} < ${toString hw.cpusPerSocket}"; + assert2 = assertMsg (particlesPerTask >= nblocks) + "too few particles: ${toString particlesPerTask} < ${toString nblocks}"; + cc = icc; + mpi = impi; + gitBranch = "garlic/tampi+send+oss+task"; + cflags = "-g"; + + # Repeat the execution of each unit 30 times + loops = 10; + + # Resources + qos = "debug"; + ntasksPerNode = hw.socketsPerNode; + nodes = 1; + time = "02:00:00"; + cpuBind = "sockets,verbose"; + jobName = "bs-${toString blocksize}-${gitBranch}-nbody"; + }; + + # Compute the array of configurations + configs = stdexp.buildConfigs { + inherit varConf genConf; + }; + + perf = {nextStage, conf, ...}: with conf; stages.perf { + inherit nextStage; + perfOptions = "record --call-graph dwarf -o \\$\\$.perf"; + }; + + exec = {nextStage, conf, ...}: with conf; stages.exec { + inherit nextStage; + argv = [ "-t" timesteps "-p" particles ]; + }; + + program = {nextStage, conf, ...}: with conf; + let + customPkgs = stdexp.replaceMpi conf.mpi; + in + customPkgs.apps.nbody.override { + inherit cc blocksize mpi gitBranch cflags; + }; + + pipeline = stdexp.stdPipeline ++ [ exec program ]; + +in + + stdexp.genExperiment { inherit configs pipeline; } From f33137a55e434b5a397fb6b19cc565e96e6dcce5 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 15 Oct 2020 18:51:55 +0200 Subject: [PATCH 274/987] WIP: Add experimental figure pipeline --- garlic/fig/nbody/test.nix | 65 +++++++++++++++++++++++++++++++++++++++ overlay.nix | 30 +++++++++++++----- 2 files changed, 87 insertions(+), 8 deletions(-) create mode 100644 garlic/fig/nbody/test.nix diff --git a/garlic/fig/nbody/test.nix b/garlic/fig/nbody/test.nix new file mode 100644 index 0000000..37810f9 --- /dev/null +++ b/garlic/fig/nbody/test.nix @@ -0,0 +1,65 @@ +{ + stdenv +, gnuplot +, jq +, experiments +, garlicTools +, getExpResult +, writeText +}: + +with garlicTools; +with stdenv.lib; + +let + experiment = builtins.elemAt experiments 0; + expResult = getExpResult { + garlicTemp = "/tmp/garlic-temp"; + inherit experiment; + }; + #set xrange [16:1024] + plotScript = writeText "plot.plg" '' + set terminal png size 800,800 + set output 'out.png' + set xrange [*:*] + + set nokey + set logscale x 2 + set logscale y 2 + set grid + + set xlabel "blocksize" + set ylabel "time (s)" + + plot filename using 1:2 with points + ''; + +in stdenv.mkDerivation { + name = "plot"; + phases = [ "installPhase" ]; + buildInputs = [ jq gnuplot ]; + preferLocalBuild = true; + dontPatchShebangs = true; + installPhase = '' + mkdir $out + for unit in ${expResult}/*/*; do + name=$(basename $unit) + log="$unit/stdout.log" + conf="$unit/garlic_config.json" + bs=$(jq .blocksize $conf) + awk "/^time /{print $bs, \$2}" $log >> $out/data.csv + done + gnuplot -e "filename='$out/data.csv'" ${plotScript} + cp out.png $out/out.png + ''; + #installPhase = '' + # mkdir $out + # for unit in ${expResult}/*/*; do + # name=$(basename $unit) + # log="$unit/stdout.log" + # bs=$(jq .blocksize $log) + # awk "/^time /{print $bs, \$2}" $log >> $out/data.csv + # done + #''; + #gnuplot -e "filename='$out/data.csv'" ${plotScript} +} diff --git a/overlay.nix b/overlay.nix index da52829..c046d4a 100644 --- a/overlay.nix +++ b/overlay.nix @@ -260,12 +260,11 @@ let mpi = self.bsc.mpi; }; - # Post processing tools - hist = callPackage ./garlic/postprocess/hist { }; - + # Experiments exp = { nbody = { test = callPackage ./garlic/exp/nbody/test.nix { }; + tampi = callPackage ./garlic/exp/nbody/tampi.nix { }; }; saiph = { @@ -286,13 +285,29 @@ let mpi_omp = callPackage ./garlic/exp/hpcg/mpi+omp.nix { }; oss = callPackage ./garlic/exp/hpcg/oss.nix { }; }; + }; - test = { - exec = callPackage ./test/garlic/exec.nix { - exec = self.bsc.garlic.stages.exec; + # Post processing tools + hist = callPackage ./garlic/postprocess/hist { }; + getExpResult = callPackage ./garlic/postprocess/result.nix { }; + fetchExperiment = callPackage ./garlic/postprocess/fetch.nix { }; + + # Figures generated from the experiments + fig = { + nbody = { + test = callPackage ./garlic/fig/nbody/test.nix { + experiments = [ + self.bsc.garlic.exp.nbody.tampi + ]; }; }; }; + + test = { + exec = callPackage ./test/garlic/exec.nix { + exec = self.bsc.garlic.stages.exec; + }; + }; }; }; @@ -302,6 +317,5 @@ in # Aliases garlic = bsc.garlic; - exp = bsc.garlic.exp; - apps = bsc.garlic.apps; + inherit (bsc.garlic) exp fig apps; } From be0506bc213a7320a61634c4d6c390c20da76148 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 15 Oct 2020 18:52:50 +0200 Subject: [PATCH 275/987] Remove unused test for exec stage --- overlay.nix | 6 ------ 1 file changed, 6 deletions(-) diff --git a/overlay.nix b/overlay.nix index c046d4a..e4007c9 100644 --- a/overlay.nix +++ b/overlay.nix @@ -302,12 +302,6 @@ let }; }; }; - - test = { - exec = callPackage ./test/garlic/exec.nix { - exec = self.bsc.garlic.stages.exec; - }; - }; }; }; From 2680dcb66ff1f465ee40ad8910889304b55134fb Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 16 Oct 2020 15:51:05 +0200 Subject: [PATCH 276/987] Don't nest the unit results The experiment directory now contains symlinks to the units, keeping the old structure. The unit results are directly placed in the garlic out directory. --- garlic/stages/experiment.nix | 13 ++++++++++--- garlic/stages/unit.nix | 12 ++++++++++++ 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/garlic/stages/experiment.nix b/garlic/stages/experiment.nix index 0195780..95535e8 100644 --- a/garlic/stages/experiment.nix +++ b/garlic/stages/experiment.nix @@ -13,6 +13,9 @@ with garlicTools; let unitsString = builtins.concatStringsSep "\n" (map (x: "${stageProgram x}") units); + + unitsLinks = builtins.concatStringsSep "\n" + (map (x: "ln -s ../${baseNameOf x} ${baseNameOf x}") units); in stdenv.mkDerivation { name = "experiment"; @@ -30,16 +33,20 @@ stdenv.mkDerivation { exit 1 fi + cd "\$GARLIC_OUT" + export GARLIC_EXPERIMENT=$(basename $out) - echo "Running experiment \$GARLIC_EXPERIMENT" if [ -e "\$GARLIC_EXPERIMENT" ]; then - >&2 echo "Already exists \$GARLIC_EXPERIMENT, aborting" - exit 1 + >&2 echo "skipping, experiment path already exists: \$GARLIC_EXPERIMENT" + exit 0 fi mkdir -p "\$GARLIC_EXPERIMENT" cd "\$GARLIC_EXPERIMENT" + ${unitsLinks} + + echo "Running experiment \$GARLIC_EXPERIMENT" # This is an experiment formed by the following units: ${unitsString} diff --git a/garlic/stages/unit.nix b/garlic/stages/unit.nix index 87650f8..3f32f37 100644 --- a/garlic/stages/unit.nix +++ b/garlic/stages/unit.nix @@ -50,9 +50,21 @@ stdenv.mkDerivation { ${desc} + if [ -z "\$GARLIC_OUT" ]; then + >&2 echo "GARLIC_OUT not defined, aborting" + exit 1 + fi + + cd "\$GARLIC_OUT" + # Set the experiment unit in the environment export GARLIC_UNIT=$(basename $out) + if [ -e "\$GARLIC_UNIT" ]; then + >&2 echo "skipping, unit path already exists: \$GARLIC_UNIT" + exit 0 + fi + # And change the working directory mkdir \$GARLIC_UNIT cd \$GARLIC_UNIT From ede25b67368ebeb1cc6efa8b94e4b3f086313e06 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 16 Oct 2020 15:53:28 +0200 Subject: [PATCH 277/987] Use the stage names as inputs --- garlic/postprocess/fetch.nix | 12 ++++++++---- garlic/postprocess/result.nix | 8 ++++---- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/garlic/postprocess/fetch.nix b/garlic/postprocess/fetch.nix index 32460f8..752021d 100644 --- a/garlic/postprocess/fetch.nix +++ b/garlic/postprocess/fetch.nix @@ -10,14 +10,14 @@ { sshHost , prefix -, experiment +, experimentStage +, trebuchetStage , garlicTemp }: with garlicTools; let - experimentStage = getExperimentStage experiment; experimentName = baseNameOf (toString experimentStage); in stdenv.mkDerivation { @@ -33,11 +33,15 @@ in mkdir -p ${garlicTemp} export PATH=${rsync}/bin:${openssh}/bin:${nix}/bin rsync -av \ + --copy-links \ --include='*/*/*.log' --include='*/*/*.json' --exclude='*/*/*' \ '${sshHost}:${prefix}/${experimentName}' ${garlicTemp} - res=\$(nix-build -E '(with import ./default.nix; garlic.getExpResult \ - {experiment = "${experiment}"; garlicTemp = "${garlicTemp}"; })') + res=\$(nix-build -E '(with import ./default.nix; garlic.getExpResult { \ + experimentStage = "${experimentStage}"; \ + trebuchetStage = "${trebuchetStage}"; \ + garlicTemp = "${garlicTemp}"; \ + })') echo "The results for experiment ${experimentName} are at:" echo " \$res" diff --git a/garlic/postprocess/result.nix b/garlic/postprocess/result.nix index 272884e..e6beeb4 100644 --- a/garlic/postprocess/result.nix +++ b/garlic/postprocess/result.nix @@ -5,20 +5,20 @@ }: { - experiment + trebuchetStage +, experimentStage , garlicTemp }: with garlicTools; let - experimentStage = getExperimentStage experiment; experimentName = baseNameOf (toString experimentStage); fetcher = fetchExperiment { sshHost = "mn1"; prefix = "/gpfs/projects/\\\$(id -gn)/\\\$(id -un)/garlic-out"; garlicTemp = "/tmp/garlic-temp"; - inherit experiment; + inherit experimentStage trebuchetStage; }; in stdenv.mkDerivation { @@ -33,7 +33,7 @@ in if [ ! -e $expPath ]; then echo "The experiment ${experimentName} is missing in ${garlicTemp}." echo "Please fetch it and try again." - echo "You can execute ${experiment} to run the experiment." + echo "You can execute ${trebuchetStage} to run the experiment." echo "And then ${fetcher} to get the results." exit 1 fi From 1bd9cb6c0f4c0882bccb6a39b618655c080bbc63 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 16 Oct 2020 15:55:52 +0200 Subject: [PATCH 278/987] Move the plot script to R --- garlic/fig/nbody/test.nix | 65 --------------------------- garlic/fig/nbody/test/default.nix | 62 ++++++++++++++++++++++++++ garlic/fig/nbody/test/plot.R | 74 +++++++++++++++++++++++++++++++ overlay.nix | 2 +- 4 files changed, 137 insertions(+), 66 deletions(-) delete mode 100644 garlic/fig/nbody/test.nix create mode 100644 garlic/fig/nbody/test/default.nix create mode 100644 garlic/fig/nbody/test/plot.R diff --git a/garlic/fig/nbody/test.nix b/garlic/fig/nbody/test.nix deleted file mode 100644 index 37810f9..0000000 --- a/garlic/fig/nbody/test.nix +++ /dev/null @@ -1,65 +0,0 @@ -{ - stdenv -, gnuplot -, jq -, experiments -, garlicTools -, getExpResult -, writeText -}: - -with garlicTools; -with stdenv.lib; - -let - experiment = builtins.elemAt experiments 0; - expResult = getExpResult { - garlicTemp = "/tmp/garlic-temp"; - inherit experiment; - }; - #set xrange [16:1024] - plotScript = writeText "plot.plg" '' - set terminal png size 800,800 - set output 'out.png' - set xrange [*:*] - - set nokey - set logscale x 2 - set logscale y 2 - set grid - - set xlabel "blocksize" - set ylabel "time (s)" - - plot filename using 1:2 with points - ''; - -in stdenv.mkDerivation { - name = "plot"; - phases = [ "installPhase" ]; - buildInputs = [ jq gnuplot ]; - preferLocalBuild = true; - dontPatchShebangs = true; - installPhase = '' - mkdir $out - for unit in ${expResult}/*/*; do - name=$(basename $unit) - log="$unit/stdout.log" - conf="$unit/garlic_config.json" - bs=$(jq .blocksize $conf) - awk "/^time /{print $bs, \$2}" $log >> $out/data.csv - done - gnuplot -e "filename='$out/data.csv'" ${plotScript} - cp out.png $out/out.png - ''; - #installPhase = '' - # mkdir $out - # for unit in ${expResult}/*/*; do - # name=$(basename $unit) - # log="$unit/stdout.log" - # bs=$(jq .blocksize $log) - # awk "/^time /{print $bs, \$2}" $log >> $out/data.csv - # done - #''; - #gnuplot -e "filename='$out/data.csv'" ${plotScript} -} diff --git a/garlic/fig/nbody/test/default.nix b/garlic/fig/nbody/test/default.nix new file mode 100644 index 0000000..b23aba1 --- /dev/null +++ b/garlic/fig/nbody/test/default.nix @@ -0,0 +1,62 @@ +{ + stdenv +, gnuplot +, jq +, experiments +, garlicTools +, getExpResult +, writeText +, rWrapper +, rPackages +}: + +with garlicTools; +with stdenv.lib; + +let + experiment = builtins.elemAt experiments 0; + expResult = getExpResult { + garlicTemp = "/tmp/garlic-temp"; + trebuchetStage = experiment; + experimentStage = getExperimentStage experiment; + }; + + customR = rWrapper.override { + packages = with rPackages; [ tidyverse ]; + }; + + plotScript = ./plot.R; + +in stdenv.mkDerivation { + name = "plot"; + buildInputs = [ jq gnuplot customR ]; + preferLocalBuild = true; + dontPatchShebangs = true; + + inherit expResult; + + src = ./.; + + buildPhase = '' + echo "using results ${expResult}" + + substituteAllInPlace plot.R + + for unit in ${expResult}/*/*; do + name=$(basename $unit) + log="$unit/stdout.log" + conf="$unit/garlic_config.json" + bs=$(jq .blocksize $conf) + awk "/^time /{print $bs, \$2}" $log >> data.csv + done + + Rscript plot.R + ''; + + installPhase = '' + mkdir $out + ln -s ${expResult} $out/result + cp *.png $out/ + cp data.csv $out/ + ''; +} diff --git a/garlic/fig/nbody/test/plot.R b/garlic/fig/nbody/test/plot.R new file mode 100644 index 0000000..1a6da21 --- /dev/null +++ b/garlic/fig/nbody/test/plot.R @@ -0,0 +1,74 @@ +library(ggplot2) +library(dplyr) +library(scales) + +# Load the dataset +df=read.table("data.csv", col.names=c("blocksize", "time")) + +bs_unique = unique(df$blocksize) +nbs=length(bs_unique) + +# Normalize the time by the median +D=group_by(df, blocksize) %>% mutate(tnorm = time / median(time) - 1) + +ppi=300 +h=5 +w=5 +png("box.png", width=w*ppi, height=h*ppi, res=ppi) + +# Create the plot with the normalized time vs blocksize +p = ggplot(D, aes(x=blocksize, y=tnorm)) + + + # Labels + labs(x="Blocksize", y="Normalized time", + title="Nbody granularity", + subtitle="@expResult@") + + + # Center the title + #theme(plot.title = element_text(hjust = 0.5)) + + + # Black and white mode (useful for printing) + #theme_bw() + + + # Draw boxplots + geom_boxplot(aes(group=blocksize)) + + + # Use log2 scale in x + scale_x_continuous(trans=log2_trans(), + breaks=bs_unique) + + + scale_y_continuous(breaks = scales::pretty_breaks(n = 10)) + + + # Add the maximum allowed error lines + geom_hline(yintercept=c(-0.01, 0.01), + linetype="dashed", color="red") + +# Render the plot +print(p) + +# Save the png image +dev.off() + +D=group_by(df, blocksize) %>% mutate(tnorm = time / median(time) - 1) + +png("scatter.png", width=w*ppi, height=h*ppi, res=ppi) + +# Create the plot with the normalized time vs blocksize +p = ggplot(D, aes(x=blocksize, y=time)) + + + labs(x="Blocksize", y="Time (s)", + title="Nbody granularity", + subtitle="@expResult@") + + + geom_point( + #position=position_jitter(width=0.2, heigh=0) + shape=21, size=1.5) + + scale_x_continuous(trans=log2_trans(), + breaks=bs_unique) + + scale_y_continuous(trans=log2_trans()) + +# Render the plot +print(p) + +# Save the png image +dev.off() diff --git a/overlay.nix b/overlay.nix index e4007c9..843e3cb 100644 --- a/overlay.nix +++ b/overlay.nix @@ -295,7 +295,7 @@ let # Figures generated from the experiments fig = { nbody = { - test = callPackage ./garlic/fig/nbody/test.nix { + test = callPackage ./garlic/fig/nbody/test/default.nix { experiments = [ self.bsc.garlic.exp.nbody.tampi ]; From 308673f7f6b0ee1d113aaba865002626f32ed4e1 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 16 Oct 2020 15:56:28 +0200 Subject: [PATCH 279/987] Increase nbody test cases --- garlic/exp/nbody/tampi.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/garlic/exp/nbody/tampi.nix b/garlic/exp/nbody/tampi.nix index eb23db1..df60b65 100644 --- a/garlic/exp/nbody/tampi.nix +++ b/garlic/exp/nbody/tampi.nix @@ -12,7 +12,7 @@ let # Initial variable configuration varConf = with bsc; { # We need at least cpusPerNode blocks - nblocks = [ 32 64 128 256 ]; + nblocks = [ 4 8 16 32 64 128 256 512 ]; }; machineConfig = targetMachine.config; From 067fb0c0a2f8e0db6a92fa487197c03b7ed84eca Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 16 Oct 2020 16:27:02 +0200 Subject: [PATCH 280/987] Add R shell for quick plots --- garlic/fig/shell.nix | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 garlic/fig/shell.nix diff --git a/garlic/fig/shell.nix b/garlic/fig/shell.nix new file mode 100644 index 0000000..f3b3988 --- /dev/null +++ b/garlic/fig/shell.nix @@ -0,0 +1,14 @@ +{ pkgs ? import ../../default.nix }: + +with pkgs; + +let + rWrapper = pkgs.rWrapper.override { + packages = with pkgs.rPackages; [ tidyverse ]; + }; +in +stdenv.mkDerivation { + name = "R"; + + buildInputs = [ rWrapper ]; +} From 30ad4219d93b4a5c8716befc14a0669f2794bbd5 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 19 Oct 2020 11:52:47 +0200 Subject: [PATCH 281/987] Add example report --- garlic/report.nix | 30 ++++++++++++++++++++++++++++++ garlic/report.tex | 31 +++++++++++++++++++++++++++++++ overlay.nix | 5 +++++ 3 files changed, 66 insertions(+) create mode 100644 garlic/report.nix create mode 100644 garlic/report.tex diff --git a/garlic/report.nix b/garlic/report.nix new file mode 100644 index 0000000..e10e045 --- /dev/null +++ b/garlic/report.nix @@ -0,0 +1,30 @@ +{ + stdenv +, fig +, exp +, writeText +, busybox +, jq +, texlive +}: +let + figJSON = writeText "fig.json" (builtins.toJSON fig); + expJSON = writeText "exp.json" (builtins.toJSON exp); +in + stdenv.mkDerivation { + name = "report"; + src = ./.; + buildInputs = [ jq texlive.combined.scheme-basic ]; + buildPhase = '' + ls -l + sed -i -e "s:@fig\.nbody\.test@:$(jq -r .nbody.test ${figJSON}):g" report.tex + jq . ${figJSON} + jq . ${expJSON} + pdflatex report.tex -o report.pdf + pdflatex report.tex -o report.pdf + ''; + installPhase = '' + mkdir $out + cp report.* $out + ''; + } diff --git a/garlic/report.tex b/garlic/report.tex new file mode 100644 index 0000000..5e6759f --- /dev/null +++ b/garlic/report.tex @@ -0,0 +1,31 @@ +\documentclass{article} +\usepackage{graphicx} + +\begin{document} + +\title{Example of Nix + \LaTeX{}} +\author{Rodrigo Arias Mallo} + +\maketitle + +\section{Nbody} +The nbody program has been executed with varying block sizes while the execution +time $t$ is measured, as shown in the figure \ref{fig:nbody.test}. +% +\begin{figure}[h] + \centering + \includegraphics[width=0.45\textwidth]{@fig.nbody.test@/scatter.png} + \includegraphics[width=0.45\textwidth]{@fig.nbody.test@/box.png} + \caption{Nbody times with varying block size} + \label{fig:nbody.test} +\end{figure} +% +The normalized time $\hat t$ is computed with the median time $t_m$ using $ \hat +t = t / t_{m} - 1 $. It can be observed that the normalized times exceed the +maximum allowed interval in most cases, except with the largest block sizes. + +Once the experiment \texttt{exp.nbody.test} changes, the hash of the experiment +program will change, therefore the plot will be updated and, lastly, this +report. + +\end{document} diff --git a/overlay.nix b/overlay.nix index 843e3cb..d2f8b4b 100644 --- a/overlay.nix +++ b/overlay.nix @@ -162,6 +162,11 @@ let # Configuration for the machines machines = callPackage ./garlic/machines.nix {}; + report = callPackage ./garlic/report.nix { + fig = self.bsc.garlic.fig; + exp = self.bsc.garlic.exp; + }; + # Use the configuration for the following target machine targetMachine = self.garlic.machines.mn4; From 81d144d716e182c96ec9b0f2ef51bf70adcfd666 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 19 Oct 2020 12:10:11 +0200 Subject: [PATCH 282/987] Remove exp attrset from report Fixes #43 --- garlic/report.nix | 4 +--- overlay.nix | 1 - 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/garlic/report.nix b/garlic/report.nix index e10e045..a5c726d 100644 --- a/garlic/report.nix +++ b/garlic/report.nix @@ -1,7 +1,6 @@ { stdenv , fig -, exp , writeText , busybox , jq @@ -9,7 +8,6 @@ }: let figJSON = writeText "fig.json" (builtins.toJSON fig); - expJSON = writeText "exp.json" (builtins.toJSON exp); in stdenv.mkDerivation { name = "report"; @@ -19,8 +17,8 @@ in ls -l sed -i -e "s:@fig\.nbody\.test@:$(jq -r .nbody.test ${figJSON}):g" report.tex jq . ${figJSON} - jq . ${expJSON} pdflatex report.tex -o report.pdf + # Run again to fix figure references pdflatex report.tex -o report.pdf ''; installPhase = '' diff --git a/overlay.nix b/overlay.nix index d2f8b4b..213a2d1 100644 --- a/overlay.nix +++ b/overlay.nix @@ -164,7 +164,6 @@ let report = callPackage ./garlic/report.nix { fig = self.bsc.garlic.fig; - exp = self.bsc.garlic.exp; }; # Use the configuration for the following target machine From ed8a6416a00bf4326bac97d1e62f49906cd3c6fb Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 19 Oct 2020 18:42:41 +0200 Subject: [PATCH 283/987] Add support for nanos6 with jemalloc --- bsc/nanos6/git.nix | 5 +++++ overlay.nix | 13 +++++++++++++ 2 files changed, 18 insertions(+) diff --git a/bsc/nanos6/git.nix b/bsc/nanos6/git.nix index a18936e..c7605df 100644 --- a/bsc/nanos6/git.nix +++ b/bsc/nanos6/git.nix @@ -11,6 +11,8 @@ , extrae , boost , autoreconfHook +, enableJemalloc ? false +, jemalloc ? null }: with stdenv.lib; @@ -38,6 +40,9 @@ stdenv.mkDerivation rec { export NANOS6_GIT_BRANCH=${branch} ''; + configureFlags = [] ++ + optional enableJemalloc "--with-jemalloc=${jemalloc}"; + # The "bindnow" flags are incompatible with ifunc resolution mechanism. We # disable all by default, which includes bindnow. hardeningDisable = [ "all" ]; diff --git a/overlay.nix b/overlay.nix index 213a2d1..e67f802 100644 --- a/overlay.nix +++ b/overlay.nix @@ -116,6 +116,19 @@ let nanos6Latest = callPackage ./bsc/nanos6/default.nix { }; nanos6Git = callPackage ./bsc/nanos6/git.nix { }; + jemalloc = self.jemalloc.overrideAttrs (old: + { + # Custom nanos6 configure options + configureFlags = old.configureFlags ++ [ + "--with-jemalloc-prefix=nanos6_je_" + "--enable-stats" + ]; + }); + + nanos6Jemalloc = callPackage ./bsc/nanos6/git.nix { + enableJemalloc = true; + }; + babeltrace = callPackage ./bsc/babeltrace/default.nix { }; babeltrace2 = callPackage ./bsc/babeltrace2/default.nix { }; From 1321b6a88804ef20f1ba866a3815cfff416d5304 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 19 Oct 2020 18:44:20 +0200 Subject: [PATCH 284/987] Add experiments with jemalloc and CPU affinity --- garlic/exp/nbody/tampi.nix | 16 +++-- garlic/fig/nbody/freeCpu/default.nix | 67 +++++++++++++++++++ garlic/fig/nbody/freeCpu/plot.R | 95 +++++++++++++++++++++++++++ garlic/fig/nbody/jemalloc/default.nix | 68 +++++++++++++++++++ garlic/fig/nbody/jemalloc/plot.R | 92 ++++++++++++++++++++++++++ garlic/fig/nbody/test/plot.R | 68 ++++++++++--------- overlay.nix | 24 +++++++ 7 files changed, 396 insertions(+), 34 deletions(-) create mode 100644 garlic/fig/nbody/freeCpu/default.nix create mode 100644 garlic/fig/nbody/freeCpu/plot.R create mode 100644 garlic/fig/nbody/jemalloc/default.nix create mode 100644 garlic/fig/nbody/jemalloc/plot.R diff --git a/garlic/exp/nbody/tampi.nix b/garlic/exp/nbody/tampi.nix index df60b65..f049b03 100644 --- a/garlic/exp/nbody/tampi.nix +++ b/garlic/exp/nbody/tampi.nix @@ -4,6 +4,8 @@ , bsc , targetMachine , stages +, enableJemalloc ? false +, enableFreeCpu ? false }: with stdenv.lib; @@ -35,7 +37,7 @@ let mpi = impi; gitBranch = "garlic/tampi+send+oss+task"; cflags = "-g"; - + # Repeat the execution of each unit 30 times loops = 10; @@ -44,7 +46,9 @@ let ntasksPerNode = hw.socketsPerNode; nodes = 1; time = "02:00:00"; - cpuBind = "sockets,verbose"; + cpuBind = if (enableFreeCpu) + then "verbose,mask_cpu:0x7fffff,0x7fffff000000" + else "sockets,verbose"; jobName = "bs-${toString blocksize}-${gitBranch}-nbody"; }; @@ -67,9 +71,13 @@ let let customPkgs = stdexp.replaceMpi conf.mpi; in - customPkgs.apps.nbody.override { + customPkgs.apps.nbody.override ({ inherit cc blocksize mpi gitBranch cflags; - }; + } // optionalAttrs enableJemalloc { + mcxx = bsc.mcxx.override { + nanos6 = bsc.nanos6Jemalloc; + }; + }); pipeline = stdexp.stdPipeline ++ [ exec program ]; diff --git a/garlic/fig/nbody/freeCpu/default.nix b/garlic/fig/nbody/freeCpu/default.nix new file mode 100644 index 0000000..4c4fa31 --- /dev/null +++ b/garlic/fig/nbody/freeCpu/default.nix @@ -0,0 +1,67 @@ +{ + stdenv +, gnuplot +, jq +, garlicTools +, resultFromTrebuchet +, writeText +, rWrapper +, rPackages + +# The two results to be compared +, resDefault +, resFreeCpu +}: + +with garlicTools; +with stdenv.lib; + +let + customR = rWrapper.override { + packages = with rPackages; [ tidyverse ]; + }; + + plotScript = ./plot.R; + +in stdenv.mkDerivation { + name = "plot"; + buildInputs = [ jq gnuplot customR ]; + preferLocalBuild = true; + dontPatchShebangs = true; + + src = ./.; + + buildPhase = '' + echo default = ${resDefault} + echo freeCpu = ${resFreeCpu} + + substituteAllInPlace plot.R + sed -ie "s:@expResult@:$out:g" plot.R + + for unit in ${resDefault}/*/*; do + name=$(basename $unit) + log="$unit/stdout.log" + conf="$unit/garlic_config.json" + bs=$(jq .blocksize $conf) + awk "/^time /{print \"default\", $bs, \$2}" $log >> data.csv + done + + for unit in ${resFreeCpu}/*/*; do + name=$(basename $unit) + log="$unit/stdout.log" + conf="$unit/garlic_config.json" + bs=$(jq .blocksize $conf) + awk "/^time /{print \"freeCpu\", $bs, \$2}" $log >> data.csv + done + + Rscript plot.R + ''; + + installPhase = '' + mkdir $out + ln -s ${resFreeCpu} $out/resFreeCpu + ln -s ${resDefault} $out/resDefault + cp *.png $out/ + cp *.csv $out/ + ''; +} diff --git a/garlic/fig/nbody/freeCpu/plot.R b/garlic/fig/nbody/freeCpu/plot.R new file mode 100644 index 0000000..e87328b --- /dev/null +++ b/garlic/fig/nbody/freeCpu/plot.R @@ -0,0 +1,95 @@ +library(ggplot2) +library(dplyr) +library(scales) + +# Load the dataset +#df=read.table("/nix/store/zcyazjbcjn2lhxrpa3bs5y7rw3bbcgnr-plot/data.csv", +df=read.table("data.csv", + col.names=c("variant", "blocksize", "time")) + +# Use the blocksize as factor +df$blocksize = as.factor(df$blocksize) + +# Split by malloc variant + +D=df %>% group_by(variant, blocksize) %>% + mutate(tnorm = time / median(time) - 1) + + +bs_unique = unique(df$blocksize) +nbs=length(bs_unique) + + +print(D) + +ppi=300 +h=5 +w=5 + +png("box.png", width=w*ppi, height=h*ppi, res=ppi) +# +# +# +# Create the plot with the normalized time vs blocksize +p = ggplot(data=D, aes(x=blocksize, y=tnorm)) + + + # Labels + labs(x="Block size", y="Normalized time", + title="Nbody normalized time", + subtitle="@expResult@/data.csv") + + + # Center the title + #theme(plot.title = element_text(hjust = 0.5)) + + + # Black and white mode (useful for printing) + #theme_bw() + + + # Add the maximum allowed error lines + geom_hline(yintercept=c(-0.01, 0.01), + linetype="dashed", color="red") + + + # Draw boxplots + geom_boxplot(aes(fill=variant)) + + +# # Use log2 scale in x +# scale_x_continuous(trans=log2_trans(), +# breaks=bs_unique) + +# + scale_y_continuous(breaks = scales::pretty_breaks(n = 10)) + + + theme_bw() + + + theme(plot.subtitle=element_text(size=10)) + + + theme(legend.position = c(0.85, 0.85)) #+ + + # Place each variant group in one separate plot + #facet_wrap(~variant) + + + +# Render the plot +print(p) + +## Save the png image +dev.off() +# +png("scatter.png", width=w*ppi, height=h*ppi, res=ppi) +# +## Create the plot with the normalized time vs blocksize +p = ggplot(D, aes(x=blocksize, y=time, color=variant)) + + + labs(x="Block size", y="Time (s)", + title="Nbody granularity", + subtitle="@expResult@") + + theme_bw() + + + geom_point(shape=21, size=3) + + #scale_x_continuous(trans=log2_trans()) + + scale_y_continuous(trans=log2_trans()) + +# Render the plot +print(p) + +# Save the png image +dev.off() diff --git a/garlic/fig/nbody/jemalloc/default.nix b/garlic/fig/nbody/jemalloc/default.nix new file mode 100644 index 0000000..d2ac0cf --- /dev/null +++ b/garlic/fig/nbody/jemalloc/default.nix @@ -0,0 +1,68 @@ +{ + stdenv +, gnuplot +, jq +, garlicTools +, resultFromTrebuchet +, writeText +, rWrapper +, rPackages + +# The two results to be compared +, resDefault +, resJemalloc +}: + +with garlicTools; +with stdenv.lib; + +let + customR = rWrapper.override { + packages = with rPackages; [ tidyverse ]; + }; + + plotScript = ./plot.R; + +in stdenv.mkDerivation { + name = "plot"; + buildInputs = [ jq gnuplot customR ]; + preferLocalBuild = true; + dontPatchShebangs = true; + + inherit resDefault resJemalloc; + + src = ./.; + + buildPhase = '' + echo default = ${resJemalloc} + echo jemalloc = ${resJemalloc} + + substituteAllInPlace plot.R + + for unit in ${resDefault}/*/*; do + name=$(basename $unit) + log="$unit/stdout.log" + conf="$unit/garlic_config.json" + bs=$(jq .blocksize $conf) + awk "/^time /{print \"default\", $bs, \$2}" $log >> data.csv + done + + for unit in ${resJemalloc}/*/*; do + name=$(basename $unit) + log="$unit/stdout.log" + conf="$unit/garlic_config.json" + bs=$(jq .blocksize $conf) + awk "/^time /{print \"jemalloc\", $bs, \$2}" $log >> data.csv + done + + #Rscript plot.R + ''; + + installPhase = '' + mkdir $out + ln -s ${resJemalloc} $out/resJemalloc + ln -s ${resDefault} $out/resDefault + #cp *.png $out/ + cp *.csv $out/ + ''; +} diff --git a/garlic/fig/nbody/jemalloc/plot.R b/garlic/fig/nbody/jemalloc/plot.R new file mode 100644 index 0000000..0bb5306 --- /dev/null +++ b/garlic/fig/nbody/jemalloc/plot.R @@ -0,0 +1,92 @@ +library(ggplot2) +library(dplyr) +library(scales) + +# Load the dataset +df=read.table("/nix/store/vvfcimwp8mkv6kc5fs3rbyjy8grgpmmb-plot/data.csv", + col.names=c("variant", "blocksize", "time")) + +# Use the blocksize as factor +df$blocksize = as.factor(df$blocksize) + +# Split by malloc variant + +D=df %>% group_by(variant, blocksize) %>% + mutate(tnorm = time / median(time) - 1) + + +bs_unique = unique(df$blocksize) +nbs=length(bs_unique) + + +print(D) + +ppi=300 +h=5 +w=5 + +png("box.png", width=w*ppi, height=h*ppi, res=ppi) +# +# +# +# Create the plot with the normalized time vs blocksize +p = ggplot(data=D, aes(x=blocksize, y=tnorm)) + + + # Labels + labs(x="Block size", y="Normalized time", + title="Nbody normalized time", + subtitle="@expResult@") + + + # Center the title + #theme(plot.title = element_text(hjust = 0.5)) + + + # Black and white mode (useful for printing) + #theme_bw() + + + # Add the maximum allowed error lines + geom_hline(yintercept=c(-0.01, 0.01), + linetype="dashed", color="red") + + + # Draw boxplots + geom_boxplot(aes(fill=variant)) + + +# # Use log2 scale in x +# scale_x_continuous(trans=log2_trans(), +# breaks=bs_unique) + +# + scale_y_continuous(breaks = scales::pretty_breaks(n = 10)) + + + theme_bw() + + + theme(legend.position = c(0.85, 0.85)) #+ + + # Place each variant group in one separate plot + #facet_wrap(~variant) + + + +# Render the plot +print(p) + +## Save the png image +dev.off() +# +#png("scatter.png", width=w*ppi, height=h*ppi, res=ppi) +# +## Create the plot with the normalized time vs blocksize +#p = ggplot(D, aes(x=blocksize, y=time, color=variant)) + +# +# labs(x="Block size", y="Time (s)", +# title="Nbody granularity", +# subtitle="@expResult@") + +# theme_bw() + +# +# geom_point(shape=21, size=3) + +# scale_x_continuous(trans=log2_trans()) + +# scale_y_continuous(trans=log2_trans()) +# +## Render the plot +#print(p) +# +## Save the png image +#dev.off() diff --git a/garlic/fig/nbody/test/plot.R b/garlic/fig/nbody/test/plot.R index 1a6da21..0d0b619 100644 --- a/garlic/fig/nbody/test/plot.R +++ b/garlic/fig/nbody/test/plot.R @@ -9,19 +9,28 @@ bs_unique = unique(df$blocksize) nbs=length(bs_unique) # Normalize the time by the median -D=group_by(df, blocksize) %>% mutate(tnorm = time / median(time) - 1) +D=group_by(df, blocksize) %>% + mutate(tnorm = time / median(time) - 1) # %>% +# mutate(bad = (abs(tnorm) >= 0.01)) %>% +# mutate(color = ifelse(bad,"red","black")) -ppi=300 -h=5 -w=5 -png("box.png", width=w*ppi, height=h*ppi, res=ppi) +D$bad = cut(abs(D$tnorm), breaks=c(-Inf, 0.01, +Inf), labels=c("good", "bad")) +print(D) + +#ppi=300 +#h=5 +#w=5 +#png("box.png", width=w*ppi, height=h*ppi, res=ppi) +# +# +# # Create the plot with the normalized time vs blocksize p = ggplot(D, aes(x=blocksize, y=tnorm)) + # Labels - labs(x="Blocksize", y="Normalized time", - title="Nbody granularity", + labs(x="Block size", y="Normalized time", + title="Nbody normalized time", subtitle="@expResult@") + # Center the title @@ -43,32 +52,31 @@ p = ggplot(D, aes(x=blocksize, y=tnorm)) + geom_hline(yintercept=c(-0.01, 0.01), linetype="dashed", color="red") -# Render the plot -print(p) -# Save the png image -dev.off() - -D=group_by(df, blocksize) %>% mutate(tnorm = time / median(time) - 1) - -png("scatter.png", width=w*ppi, height=h*ppi, res=ppi) - -# Create the plot with the normalized time vs blocksize -p = ggplot(D, aes(x=blocksize, y=time)) + - - labs(x="Blocksize", y="Time (s)", - title="Nbody granularity", - subtitle="@expResult@") + - - geom_point( - #position=position_jitter(width=0.2, heigh=0) - shape=21, size=1.5) + - scale_x_continuous(trans=log2_trans(), - breaks=bs_unique) + - scale_y_continuous(trans=log2_trans()) # Render the plot print(p) +# +## Save the png image +#dev.off() +# +#png("scatter.png", width=w*ppi, height=h*ppi, res=ppi) + +## Create the plot with the normalized time vs blocksize +#p = ggplot(D, aes(x=blocksize, y=time, color=bad)) + +# +# labs(x="Blocksize", y="Time (s)", +# title="Nbody granularity", +# subtitle="@expResult@") + +# +# geom_point(shape=21, size=1.5) + +# scale_color_manual(values=c("black", "red")) + +# scale_x_continuous(trans=log2_trans(), +# breaks=bs_unique) + +# scale_y_continuous(trans=log2_trans()) +# +## Render the plot +#print(p) # Save the png image -dev.off() +#dev.off() diff --git a/overlay.nix b/overlay.nix index e67f802..3efb91d 100644 --- a/overlay.nix +++ b/overlay.nix @@ -282,6 +282,12 @@ let nbody = { test = callPackage ./garlic/exp/nbody/test.nix { }; tampi = callPackage ./garlic/exp/nbody/tampi.nix { }; + freeCpu = callPackage ./garlic/exp/nbody/tampi.nix { + enableFreeCpu = true; + }; + jemalloc = callPackage ./garlic/exp/nbody/tampi.nix { + enableJemalloc = true; + }; }; saiph = { @@ -307,6 +313,12 @@ let # Post processing tools hist = callPackage ./garlic/postprocess/hist { }; getExpResult = callPackage ./garlic/postprocess/result.nix { }; + resultFromTrebuchet = trebuchetStage: self.garlic.getExpResult { + garlicTemp = "/tmp/garlic-temp"; + inherit trebuchetStage; + experimentStage = with self.bsc.garlicTools; + getExperimentStage trebuchetStage; + }; fetchExperiment = callPackage ./garlic/postprocess/fetch.nix { }; # Figures generated from the experiments @@ -317,6 +329,18 @@ let self.bsc.garlic.exp.nbody.tampi ]; }; + jemalloc = callPackage ./garlic/fig/nbody/jemalloc/default.nix { + resDefault = self.garlic.resultFromTrebuchet + self.bsc.garlic.exp.nbody.tampi; + resJemalloc = self.garlic.resultFromTrebuchet + self.bsc.garlic.exp.nbody.jemalloc; + }; + freeCpu = callPackage ./garlic/fig/nbody/freeCpu/default.nix { + resDefault = self.garlic.resultFromTrebuchet + self.bsc.garlic.exp.nbody.tampi; + resFreeCpu = self.garlic.resultFromTrebuchet + self.bsc.garlic.exp.nbody.freeCpu; + }; }; }; }; From 4beb069627d09134899c156edc0a4cb46d8bd1c5 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 21 Oct 2020 18:18:43 +0200 Subject: [PATCH 285/987] WIP: postprocessing pipeline Now each run is executed in a independent folder --- garlic/exp/nbody/tampi.nix | 17 +++-- .../fig/nbody/{freeCpu/plot.R => freeCpu.R} | 29 +++++--- garlic/fig/nbody/freeCpu/default.nix | 67 ------------------ .../fig/nbody/{jemalloc/plot.R => jemalloc.R} | 64 ++++++++++------- garlic/fig/nbody/jemalloc/default.nix | 68 ------------------- garlic/fig/nbody/{test/plot.R => test.R} | 0 garlic/fig/nbody/test/default.nix | 62 ----------------- garlic/fig/shell.nix | 14 ---- garlic/{postprocess => pp}/fetch.nix | 11 ++- garlic/{postprocess => pp}/hist/default.nix | 0 garlic/{postprocess => pp}/hist/hist.sh | 0 garlic/pp/merge.nix | 16 +++++ garlic/{postprocess => pp}/result.nix | 0 garlic/pp/rplot.nix | 33 +++++++++ garlic/pp/timeResult.nix | 30 ++++++++ garlic/pp/timetable.nix | 31 +++++++++ garlic/stages/control.nix | 3 + garlic/stages/sbatch.nix | 2 + garlic/stages/srun.nix | 4 ++ overlay.nix | 60 +++++++++------- 20 files changed, 232 insertions(+), 279 deletions(-) rename garlic/fig/nbody/{freeCpu/plot.R => freeCpu.R} (72%) delete mode 100644 garlic/fig/nbody/freeCpu/default.nix rename garlic/fig/nbody/{jemalloc/plot.R => jemalloc.R} (52%) delete mode 100644 garlic/fig/nbody/jemalloc/default.nix rename garlic/fig/nbody/{test/plot.R => test.R} (100%) delete mode 100644 garlic/fig/nbody/test/default.nix delete mode 100644 garlic/fig/shell.nix rename garlic/{postprocess => pp}/fetch.nix (71%) rename garlic/{postprocess => pp}/hist/default.nix (100%) rename garlic/{postprocess => pp}/hist/hist.sh (100%) create mode 100644 garlic/pp/merge.nix rename garlic/{postprocess => pp}/result.nix (100%) create mode 100644 garlic/pp/rplot.nix create mode 100644 garlic/pp/timeResult.nix create mode 100644 garlic/pp/timetable.nix diff --git a/garlic/exp/nbody/tampi.nix b/garlic/exp/nbody/tampi.nix index f049b03..a245110 100644 --- a/garlic/exp/nbody/tampi.nix +++ b/garlic/exp/nbody/tampi.nix @@ -5,7 +5,9 @@ , targetMachine , stages , enableJemalloc ? false -, enableFreeCpu ? false + +# Leave the first CPU per socket unused? +, freeCpu ? false }: with stdenv.lib; @@ -37,6 +39,7 @@ let mpi = impi; gitBranch = "garlic/tampi+send+oss+task"; cflags = "-g"; + inherit enableJemalloc; # Repeat the execution of each unit 30 times loops = 10; @@ -46,9 +49,15 @@ let ntasksPerNode = hw.socketsPerNode; nodes = 1; time = "02:00:00"; - cpuBind = if (enableFreeCpu) - then "verbose,mask_cpu:0x7fffff,0x7fffff000000" - else "sockets,verbose"; + + + # If we want to leave one CPU per socket unused + inherit freeCpu; + + cpuBind = if (freeCpu) + then "verbose,mask_cpu:0xfffffe,0xfffffe000000" + else "verbose,sockets"; + jobName = "bs-${toString blocksize}-${gitBranch}-nbody"; }; diff --git a/garlic/fig/nbody/freeCpu/plot.R b/garlic/fig/nbody/freeCpu.R similarity index 72% rename from garlic/fig/nbody/freeCpu/plot.R rename to garlic/fig/nbody/freeCpu.R index e87328b..1564353 100644 --- a/garlic/fig/nbody/freeCpu/plot.R +++ b/garlic/fig/nbody/freeCpu.R @@ -1,21 +1,30 @@ library(ggplot2) library(dplyr) library(scales) +library(jsonlite) -# Load the dataset -#df=read.table("/nix/store/zcyazjbcjn2lhxrpa3bs5y7rw3bbcgnr-plot/data.csv", -df=read.table("data.csv", - col.names=c("variant", "blocksize", "time")) +args=commandArgs(trailingOnly=TRUE) + +# Read the timetable from args[1] +input_file = "timetable.json.gz" +if (length(args)>0) { input_file = args[1] } + +# Load the dataset in NDJSON format +dataset = jsonlite::stream_in(file(input_file)) %>% + jsonlite::flatten() + +# We only need the cpu bind, blocksize and time +df = select(dataset, config.freeCpu, config.blocksize, time) %>% + rename(blocksize=config.blocksize, freeCpu=config.freeCpu) # Use the blocksize as factor df$blocksize = as.factor(df$blocksize) +df$freeCpu = as.factor(df$freeCpu) # Split by malloc variant - -D=df %>% group_by(variant, blocksize) %>% +D=df %>% group_by(freeCpu, blocksize) %>% mutate(tnorm = time / median(time) - 1) - bs_unique = unique(df$blocksize) nbs=length(bs_unique) @@ -49,7 +58,7 @@ p = ggplot(data=D, aes(x=blocksize, y=tnorm)) + linetype="dashed", color="red") + # Draw boxplots - geom_boxplot(aes(fill=variant)) + + geom_boxplot(aes(fill=freeCpu)) + # # Use log2 scale in x # scale_x_continuous(trans=log2_trans(), @@ -64,7 +73,7 @@ p = ggplot(data=D, aes(x=blocksize, y=tnorm)) + theme(legend.position = c(0.85, 0.85)) #+ # Place each variant group in one separate plot - #facet_wrap(~variant) + #facet_wrap(~freeCpu) @@ -77,7 +86,7 @@ dev.off() png("scatter.png", width=w*ppi, height=h*ppi, res=ppi) # ## Create the plot with the normalized time vs blocksize -p = ggplot(D, aes(x=blocksize, y=time, color=variant)) + +p = ggplot(D, aes(x=blocksize, y=time, color=freeCpu)) + labs(x="Block size", y="Time (s)", title="Nbody granularity", diff --git a/garlic/fig/nbody/freeCpu/default.nix b/garlic/fig/nbody/freeCpu/default.nix deleted file mode 100644 index 4c4fa31..0000000 --- a/garlic/fig/nbody/freeCpu/default.nix +++ /dev/null @@ -1,67 +0,0 @@ -{ - stdenv -, gnuplot -, jq -, garlicTools -, resultFromTrebuchet -, writeText -, rWrapper -, rPackages - -# The two results to be compared -, resDefault -, resFreeCpu -}: - -with garlicTools; -with stdenv.lib; - -let - customR = rWrapper.override { - packages = with rPackages; [ tidyverse ]; - }; - - plotScript = ./plot.R; - -in stdenv.mkDerivation { - name = "plot"; - buildInputs = [ jq gnuplot customR ]; - preferLocalBuild = true; - dontPatchShebangs = true; - - src = ./.; - - buildPhase = '' - echo default = ${resDefault} - echo freeCpu = ${resFreeCpu} - - substituteAllInPlace plot.R - sed -ie "s:@expResult@:$out:g" plot.R - - for unit in ${resDefault}/*/*; do - name=$(basename $unit) - log="$unit/stdout.log" - conf="$unit/garlic_config.json" - bs=$(jq .blocksize $conf) - awk "/^time /{print \"default\", $bs, \$2}" $log >> data.csv - done - - for unit in ${resFreeCpu}/*/*; do - name=$(basename $unit) - log="$unit/stdout.log" - conf="$unit/garlic_config.json" - bs=$(jq .blocksize $conf) - awk "/^time /{print \"freeCpu\", $bs, \$2}" $log >> data.csv - done - - Rscript plot.R - ''; - - installPhase = '' - mkdir $out - ln -s ${resFreeCpu} $out/resFreeCpu - ln -s ${resDefault} $out/resDefault - cp *.png $out/ - cp *.csv $out/ - ''; -} diff --git a/garlic/fig/nbody/jemalloc/plot.R b/garlic/fig/nbody/jemalloc.R similarity index 52% rename from garlic/fig/nbody/jemalloc/plot.R rename to garlic/fig/nbody/jemalloc.R index 0bb5306..71b6951 100644 --- a/garlic/fig/nbody/jemalloc/plot.R +++ b/garlic/fig/nbody/jemalloc.R @@ -1,20 +1,31 @@ library(ggplot2) library(dplyr) library(scales) +library(jsonlite) -# Load the dataset -df=read.table("/nix/store/vvfcimwp8mkv6kc5fs3rbyjy8grgpmmb-plot/data.csv", - col.names=c("variant", "blocksize", "time")) +args=commandArgs(trailingOnly=TRUE) + +# Read the timetable from args[1] +input_file = "timetable.json.gz" +if (length(args)>0) { input_file = args[1] } + +# Load the dataset in NDJSON format +dataset = jsonlite::stream_in(file(input_file)) %>% + jsonlite::flatten() + +# We only need the cpu bind, blocksize and time +df = select(dataset, config.enableJemalloc, config.blocksize, time) %>% + rename(blocksize=config.blocksize, + jemalloc=config.enableJemalloc) # Use the blocksize as factor df$blocksize = as.factor(df$blocksize) +df$jemalloc = as.factor(df$jemalloc) # Split by malloc variant - -D=df %>% group_by(variant, blocksize) %>% +D=df %>% group_by(jemalloc, blocksize) %>% mutate(tnorm = time / median(time) - 1) - bs_unique = unique(df$blocksize) nbs=length(bs_unique) @@ -35,7 +46,7 @@ p = ggplot(data=D, aes(x=blocksize, y=tnorm)) + # Labels labs(x="Block size", y="Normalized time", title="Nbody normalized time", - subtitle="@expResult@") + + subtitle=input_file) + # Center the title #theme(plot.title = element_text(hjust = 0.5)) + @@ -48,7 +59,7 @@ p = ggplot(data=D, aes(x=blocksize, y=tnorm)) + linetype="dashed", color="red") + # Draw boxplots - geom_boxplot(aes(fill=variant)) + + geom_boxplot(aes(fill=freeCpu)) + # # Use log2 scale in x # scale_x_continuous(trans=log2_trans(), @@ -58,10 +69,11 @@ p = ggplot(data=D, aes(x=blocksize, y=tnorm)) + theme_bw() + + theme(plot.subtitle=element_text(size=10)) + + theme(legend.position = c(0.85, 0.85)) #+ # Place each variant group in one separate plot - #facet_wrap(~variant) @@ -71,22 +83,22 @@ print(p) ## Save the png image dev.off() # -#png("scatter.png", width=w*ppi, height=h*ppi, res=ppi) +png("scatter.png", width=w*ppi, height=h*ppi, res=ppi) # ## Create the plot with the normalized time vs blocksize -#p = ggplot(D, aes(x=blocksize, y=time, color=variant)) + -# -# labs(x="Block size", y="Time (s)", -# title="Nbody granularity", -# subtitle="@expResult@") + -# theme_bw() + -# -# geom_point(shape=21, size=3) + -# scale_x_continuous(trans=log2_trans()) + -# scale_y_continuous(trans=log2_trans()) -# -## Render the plot -#print(p) -# -## Save the png image -#dev.off() +p = ggplot(D, aes(x=blocksize, y=time, color=freeCpu)) + + + labs(x="Block size", y="Time (s)", + title="Nbody granularity", + subtitle=input_file) + + theme_bw() + + + geom_point(shape=21, size=3) + + #scale_x_continuous(trans=log2_trans()) + + scale_y_continuous(trans=log2_trans()) + +# Render the plot +print(p) + +# Save the png image +dev.off() diff --git a/garlic/fig/nbody/jemalloc/default.nix b/garlic/fig/nbody/jemalloc/default.nix deleted file mode 100644 index d2ac0cf..0000000 --- a/garlic/fig/nbody/jemalloc/default.nix +++ /dev/null @@ -1,68 +0,0 @@ -{ - stdenv -, gnuplot -, jq -, garlicTools -, resultFromTrebuchet -, writeText -, rWrapper -, rPackages - -# The two results to be compared -, resDefault -, resJemalloc -}: - -with garlicTools; -with stdenv.lib; - -let - customR = rWrapper.override { - packages = with rPackages; [ tidyverse ]; - }; - - plotScript = ./plot.R; - -in stdenv.mkDerivation { - name = "plot"; - buildInputs = [ jq gnuplot customR ]; - preferLocalBuild = true; - dontPatchShebangs = true; - - inherit resDefault resJemalloc; - - src = ./.; - - buildPhase = '' - echo default = ${resJemalloc} - echo jemalloc = ${resJemalloc} - - substituteAllInPlace plot.R - - for unit in ${resDefault}/*/*; do - name=$(basename $unit) - log="$unit/stdout.log" - conf="$unit/garlic_config.json" - bs=$(jq .blocksize $conf) - awk "/^time /{print \"default\", $bs, \$2}" $log >> data.csv - done - - for unit in ${resJemalloc}/*/*; do - name=$(basename $unit) - log="$unit/stdout.log" - conf="$unit/garlic_config.json" - bs=$(jq .blocksize $conf) - awk "/^time /{print \"jemalloc\", $bs, \$2}" $log >> data.csv - done - - #Rscript plot.R - ''; - - installPhase = '' - mkdir $out - ln -s ${resJemalloc} $out/resJemalloc - ln -s ${resDefault} $out/resDefault - #cp *.png $out/ - cp *.csv $out/ - ''; -} diff --git a/garlic/fig/nbody/test/plot.R b/garlic/fig/nbody/test.R similarity index 100% rename from garlic/fig/nbody/test/plot.R rename to garlic/fig/nbody/test.R diff --git a/garlic/fig/nbody/test/default.nix b/garlic/fig/nbody/test/default.nix deleted file mode 100644 index b23aba1..0000000 --- a/garlic/fig/nbody/test/default.nix +++ /dev/null @@ -1,62 +0,0 @@ -{ - stdenv -, gnuplot -, jq -, experiments -, garlicTools -, getExpResult -, writeText -, rWrapper -, rPackages -}: - -with garlicTools; -with stdenv.lib; - -let - experiment = builtins.elemAt experiments 0; - expResult = getExpResult { - garlicTemp = "/tmp/garlic-temp"; - trebuchetStage = experiment; - experimentStage = getExperimentStage experiment; - }; - - customR = rWrapper.override { - packages = with rPackages; [ tidyverse ]; - }; - - plotScript = ./plot.R; - -in stdenv.mkDerivation { - name = "plot"; - buildInputs = [ jq gnuplot customR ]; - preferLocalBuild = true; - dontPatchShebangs = true; - - inherit expResult; - - src = ./.; - - buildPhase = '' - echo "using results ${expResult}" - - substituteAllInPlace plot.R - - for unit in ${expResult}/*/*; do - name=$(basename $unit) - log="$unit/stdout.log" - conf="$unit/garlic_config.json" - bs=$(jq .blocksize $conf) - awk "/^time /{print $bs, \$2}" $log >> data.csv - done - - Rscript plot.R - ''; - - installPhase = '' - mkdir $out - ln -s ${expResult} $out/result - cp *.png $out/ - cp data.csv $out/ - ''; -} diff --git a/garlic/fig/shell.nix b/garlic/fig/shell.nix deleted file mode 100644 index f3b3988..0000000 --- a/garlic/fig/shell.nix +++ /dev/null @@ -1,14 +0,0 @@ -{ pkgs ? import ../../default.nix }: - -with pkgs; - -let - rWrapper = pkgs.rWrapper.override { - packages = with pkgs.rPackages; [ tidyverse ]; - }; -in -stdenv.mkDerivation { - name = "R"; - - buildInputs = [ rWrapper ]; -} diff --git a/garlic/postprocess/fetch.nix b/garlic/pp/fetch.nix similarity index 71% rename from garlic/postprocess/fetch.nix rename to garlic/pp/fetch.nix index 752021d..feeedda 100644 --- a/garlic/postprocess/fetch.nix +++ b/garlic/pp/fetch.nix @@ -13,12 +13,19 @@ , experimentStage , trebuchetStage , garlicTemp +# We only fetch the config, stdout and stderr by default +, fetchAll ? false }: with garlicTools; let experimentName = baseNameOf (toString experimentStage); + rsyncFilter = if (fetchAll) then "" else '' + --include='*/*/garlic_config.json' \ + --include='*/*/std*.log' \ + --include='*/*/*/std*.log' \ + --exclude='*/*/*/*' ''; in stdenv.mkDerivation { name = "fetch"; @@ -34,10 +41,10 @@ in export PATH=${rsync}/bin:${openssh}/bin:${nix}/bin rsync -av \ --copy-links \ - --include='*/*/*.log' --include='*/*/*.json' --exclude='*/*/*' \ + ${rsyncFilter} \ '${sshHost}:${prefix}/${experimentName}' ${garlicTemp} - res=\$(nix-build -E '(with import ./default.nix; garlic.getExpResult { \ + res=\$(nix-build -E '(with import ./default.nix; garlic.pp.getExpResult { \ experimentStage = "${experimentStage}"; \ trebuchetStage = "${trebuchetStage}"; \ garlicTemp = "${garlicTemp}"; \ diff --git a/garlic/postprocess/hist/default.nix b/garlic/pp/hist/default.nix similarity index 100% rename from garlic/postprocess/hist/default.nix rename to garlic/pp/hist/default.nix diff --git a/garlic/postprocess/hist/hist.sh b/garlic/pp/hist/hist.sh similarity index 100% rename from garlic/postprocess/hist/hist.sh rename to garlic/pp/hist/hist.sh diff --git a/garlic/pp/merge.nix b/garlic/pp/merge.nix new file mode 100644 index 0000000..bd83c46 --- /dev/null +++ b/garlic/pp/merge.nix @@ -0,0 +1,16 @@ +{ + stdenv +}: + +experiments: + +with stdenv.lib; + +stdenv.mkDerivation { + name = "merge.json"; + preferLocalBuild = true; + phases = [ "installPhase" ]; + installPhase = '' + cat ${concatStringsSep " " experiments} >> $out + ''; +} diff --git a/garlic/postprocess/result.nix b/garlic/pp/result.nix similarity index 100% rename from garlic/postprocess/result.nix rename to garlic/pp/result.nix diff --git a/garlic/pp/rplot.nix b/garlic/pp/rplot.nix new file mode 100644 index 0000000..aabc4b5 --- /dev/null +++ b/garlic/pp/rplot.nix @@ -0,0 +1,33 @@ +{ + stdenv +, rWrapper +, rPackages +}: + +{ +# The two results to be compared + dataset +, script +, extraRPackages ? [] +}: + +with stdenv.lib; + +let + customR = rWrapper.override { + packages = with rPackages; [ tidyverse ] ++ extraRPackages; + }; + +in stdenv.mkDerivation { + name = "plot"; + buildInputs = [ customR ]; + preferLocalBuild = true; + dontPatchShebangs = true; + phases = [ "installPhase" ]; + + installPhase = '' + mkdir -p $out + cd $out + Rscript --vanilla ${script} ${dataset} + ''; +} diff --git a/garlic/pp/timeResult.nix b/garlic/pp/timeResult.nix new file mode 100644 index 0000000..ec1b02a --- /dev/null +++ b/garlic/pp/timeResult.nix @@ -0,0 +1,30 @@ +{ + stdenv +}: + +inputResult: + +stdenv.mkDerivation { + name = "timeResult"; + preferLocalBuild = true; + phases = [ "installPhase" ]; + installPhase = '' + mkdir -p $out + cd ${inputResult} + for unit in *-experiment/*-unit; do + outunit=$out/$unit + mkdir -p $outunit + + # Copy the unit config + conf="$unit/garlic_config.json" + cp "$conf" "$outunit/garlic_config.json" + + # Merge all runs in one single CSV file + echo "run time" > $outunit/data.csv + for r in $(cd $unit; ls -d [0-9]* | sort -n); do + log="$unit/$r/stdout.log" + awk "/^time /{print \"$r\", \$2}" $log >> $outunit/data.csv + done + done + ''; +} diff --git a/garlic/pp/timetable.nix b/garlic/pp/timetable.nix new file mode 100644 index 0000000..8469249 --- /dev/null +++ b/garlic/pp/timetable.nix @@ -0,0 +1,31 @@ +{ + stdenv +, jq +}: + +inputResult: + +stdenv.mkDerivation { + name = "timetable.json"; + preferLocalBuild = true; + phases = [ "installPhase" ]; + buildInputs = [ jq ]; + installPhase = '' + touch $out + cd ${inputResult} + for exp in *-experiment; do + cd ${inputResult}/$exp + for unit in *-unit; do + cd ${inputResult}/$exp/$unit + conf=garlic_config.json + for run in $(ls -d [0-9]* | sort -n); do + time=$(awk '/^time /{print $2}' $run/stdout.log) + jq -cn "{ exp:\"$exp\", unit:\"$unit\", config:inputs, time:$time}" \ + $conf >> $out + done + done + done + + #gzip $out + ''; +} diff --git a/garlic/stages/control.nix b/garlic/stages/control.nix index f5166e3..51baed5 100644 --- a/garlic/stages/control.nix +++ b/garlic/stages/control.nix @@ -19,7 +19,10 @@ stdenv.mkDerivation { cat > $out < Date: Wed, 21 Oct 2020 18:43:09 +0200 Subject: [PATCH 286/987] Fix plot details --- garlic/fig/nbody/freeCpu.R | 7 ++++--- garlic/fig/nbody/jemalloc.R | 8 +++++--- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/garlic/fig/nbody/freeCpu.R b/garlic/fig/nbody/freeCpu.R index 1564353..ed667ab 100644 --- a/garlic/fig/nbody/freeCpu.R +++ b/garlic/fig/nbody/freeCpu.R @@ -45,7 +45,7 @@ p = ggplot(data=D, aes(x=blocksize, y=tnorm)) + # Labels labs(x="Block size", y="Normalized time", title="Nbody normalized time", - subtitle="@expResult@/data.csv") + + subtitle=input_file) + # Center the title #theme(plot.title = element_text(hjust = 0.5)) + @@ -68,7 +68,7 @@ p = ggplot(data=D, aes(x=blocksize, y=tnorm)) + theme_bw() + - theme(plot.subtitle=element_text(size=10)) + + theme(plot.subtitle=element_text(size=8)) + theme(legend.position = c(0.85, 0.85)) #+ @@ -90,8 +90,9 @@ p = ggplot(D, aes(x=blocksize, y=time, color=freeCpu)) + labs(x="Block size", y="Time (s)", title="Nbody granularity", - subtitle="@expResult@") + + subtitle=input_file) + theme_bw() + + theme(plot.subtitle=element_text(size=8)) + geom_point(shape=21, size=3) + #scale_x_continuous(trans=log2_trans()) + diff --git a/garlic/fig/nbody/jemalloc.R b/garlic/fig/nbody/jemalloc.R index 71b6951..957f1b5 100644 --- a/garlic/fig/nbody/jemalloc.R +++ b/garlic/fig/nbody/jemalloc.R @@ -59,7 +59,7 @@ p = ggplot(data=D, aes(x=blocksize, y=tnorm)) + linetype="dashed", color="red") + # Draw boxplots - geom_boxplot(aes(fill=freeCpu)) + + geom_boxplot(aes(fill=jemalloc)) + # # Use log2 scale in x # scale_x_continuous(trans=log2_trans(), @@ -69,11 +69,12 @@ p = ggplot(data=D, aes(x=blocksize, y=tnorm)) + theme_bw() + - theme(plot.subtitle=element_text(size=10)) + + theme(plot.subtitle=element_text(size=8)) + theme(legend.position = c(0.85, 0.85)) #+ # Place each variant group in one separate plot + #facet_wrap(~jemalloc) @@ -86,12 +87,13 @@ dev.off() png("scatter.png", width=w*ppi, height=h*ppi, res=ppi) # ## Create the plot with the normalized time vs blocksize -p = ggplot(D, aes(x=blocksize, y=time, color=freeCpu)) + +p = ggplot(D, aes(x=blocksize, y=time, color=jemalloc)) + labs(x="Block size", y="Time (s)", title="Nbody granularity", subtitle=input_file) + theme_bw() + + theme(plot.subtitle=element_text(size=8)) + geom_point(shape=21, size=3) + #scale_x_continuous(trans=log2_trans()) + From 06c29b573fad42a7f36579cfe503009840b4c683 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 21 Oct 2020 18:43:40 +0200 Subject: [PATCH 287/987] Add exp.nbody.tampi variants --- garlic/exp/nbody/tampi.nix | 3 ++- overlay.nix | 13 ++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/garlic/exp/nbody/tampi.nix b/garlic/exp/nbody/tampi.nix index a245110..2ea6b41 100644 --- a/garlic/exp/nbody/tampi.nix +++ b/garlic/exp/nbody/tampi.nix @@ -8,6 +8,7 @@ # Leave the first CPU per socket unused? , freeCpu ? false +, particles ? 1024 * 32 }: with stdenv.lib; @@ -25,7 +26,7 @@ let genConf = with bsc; c: targetMachine.config // rec { inherit (machineConfig) hw; # nbody options - particles = 1024 * 32; + inherit particles; timesteps = 10; inherit (c) nblocks; totalTasks = ntasksPerNode * nodes; diff --git a/overlay.nix b/overlay.nix index 1761928..0c54406 100644 --- a/overlay.nix +++ b/overlay.nix @@ -282,13 +282,12 @@ let nbody = rec { test = callPackage ./garlic/exp/nbody/test.nix { }; tampi = callPackage ./garlic/exp/nbody/tampi.nix { }; - baseline = tampi; - freeCpu = callPackage ./garlic/exp/nbody/tampi.nix { - freeCpu = true; - }; - jemalloc = callPackage ./garlic/exp/nbody/tampi.nix { - enableJemalloc = true; - }; + + # Experiment variants + medium = tampi.override { particles = 64 * 1024; }; + baseline = medium; + freeCpu = baseline.override { freeCpu = true; }; + jemalloc = baseline.override { enableJemalloc = true; }; }; saiph = { From 8ce88ef046b6f15427b2e048974e21c3c7021bf6 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 23 Oct 2020 10:19:37 +0200 Subject: [PATCH 288/987] Add dataset attrset in garlic Modify nbody to evenly distribute blocks per cpu --- garlic/exp/nbody/tampi.nix | 5 ++-- garlic/fig/nbody/freeCpu.R | 40 ++++++++++++++++++------------- garlic/fig/nbody/jemalloc.R | 48 +++++++++++++++++++++---------------- garlic/pp/timetable.nix | 3 +-- overlay.nix | 18 ++++++++++---- 5 files changed, 66 insertions(+), 48 deletions(-) diff --git a/garlic/exp/nbody/tampi.nix b/garlic/exp/nbody/tampi.nix index 2ea6b41..b729289 100644 --- a/garlic/exp/nbody/tampi.nix +++ b/garlic/exp/nbody/tampi.nix @@ -8,7 +8,7 @@ # Leave the first CPU per socket unused? , freeCpu ? false -, particles ? 1024 * 32 +, particles ? 4096 * 24 }: with stdenv.lib; @@ -16,8 +16,7 @@ with stdenv.lib; let # Initial variable configuration varConf = with bsc; { - # We need at least cpusPerNode blocks - nblocks = [ 4 8 16 32 64 128 256 512 ]; + nblocks = [ 12 24 48 96 192 384 768 ]; }; machineConfig = targetMachine.config; diff --git a/garlic/fig/nbody/freeCpu.R b/garlic/fig/nbody/freeCpu.R index ed667ab..f178734 100644 --- a/garlic/fig/nbody/freeCpu.R +++ b/garlic/fig/nbody/freeCpu.R @@ -6,29 +6,34 @@ library(jsonlite) args=commandArgs(trailingOnly=TRUE) # Read the timetable from args[1] -input_file = "timetable.json.gz" +input_file = "input.json" if (length(args)>0) { input_file = args[1] } # Load the dataset in NDJSON format dataset = jsonlite::stream_in(file(input_file)) %>% jsonlite::flatten() -# We only need the cpu bind, blocksize and time -df = select(dataset, config.freeCpu, config.blocksize, time) %>% - rename(blocksize=config.blocksize, freeCpu=config.freeCpu) +particles = unique(dataset$config.particles) + +# We only need the cpu bind, nblocks and time +df = select(dataset, config.freeCpu, config.nblocks, config.hw.cpusPerSocket, time) %>% + rename(nblocks=config.nblocks, + freeCpu=config.freeCpu, + cpusPerSocket=config.hw.cpusPerSocket) + +df = df %>% mutate(blocksPerCpu = nblocks / cpusPerSocket) -# Use the blocksize as factor -df$blocksize = as.factor(df$blocksize) df$freeCpu = as.factor(df$freeCpu) +df$nblocks = as.factor(df$nblocks) +df$blocksPerCpuFactor = as.factor(df$blocksPerCpu) # Split by malloc variant -D=df %>% group_by(freeCpu, blocksize) %>% +D=df %>% group_by(freeCpu, nblocks) %>% mutate(tnorm = time / median(time) - 1) -bs_unique = unique(df$blocksize) +bs_unique = unique(df$nblocks) nbs=length(bs_unique) - print(D) ppi=300 @@ -39,12 +44,12 @@ png("box.png", width=w*ppi, height=h*ppi, res=ppi) # # # -# Create the plot with the normalized time vs blocksize -p = ggplot(data=D, aes(x=blocksize, y=tnorm)) + +# Create the plot with the normalized time vs nblocks +p = ggplot(data=D, aes(x=blocksPerCpuFactor, y=tnorm)) + # Labels - labs(x="Block size", y="Normalized time", - title="Nbody normalized time", + labs(x="Blocks/CPU", y="Normalized time", + title=sprintf("Nbody normalized time. Particles=%d", particles), subtitle=input_file) + # Center the title @@ -85,14 +90,15 @@ dev.off() # png("scatter.png", width=w*ppi, height=h*ppi, res=ppi) # -## Create the plot with the normalized time vs blocksize -p = ggplot(D, aes(x=blocksize, y=time, color=freeCpu)) + +## Create the plot with the normalized time vs nblocks +p = ggplot(D, aes(x=blocksPerCpuFactor, y=time, color=freeCpu)) + - labs(x="Block size", y="Time (s)", - title="Nbody granularity", + labs(x="Blocks/CPU", y="Time (s)", + title=sprintf("Nbody granularity. Particles=%d", particles), subtitle=input_file) + theme_bw() + theme(plot.subtitle=element_text(size=8)) + + theme(legend.position = c(0.5, 0.88)) + geom_point(shape=21, size=3) + #scale_x_continuous(trans=log2_trans()) + diff --git a/garlic/fig/nbody/jemalloc.R b/garlic/fig/nbody/jemalloc.R index 957f1b5..788149f 100644 --- a/garlic/fig/nbody/jemalloc.R +++ b/garlic/fig/nbody/jemalloc.R @@ -6,30 +6,36 @@ library(jsonlite) args=commandArgs(trailingOnly=TRUE) # Read the timetable from args[1] -input_file = "timetable.json.gz" +input_file = "input.json" if (length(args)>0) { input_file = args[1] } # Load the dataset in NDJSON format dataset = jsonlite::stream_in(file(input_file)) %>% jsonlite::flatten() -# We only need the cpu bind, blocksize and time -df = select(dataset, config.enableJemalloc, config.blocksize, time) %>% - rename(blocksize=config.blocksize, - jemalloc=config.enableJemalloc) +particles = unique(dataset$config.particles) + +# We only need the cpu bind, nblocks and time +df = select(dataset, config.enableJemalloc, config.nblocks, config.hw.cpusPerSocket, time) %>% + rename(nblocks=config.nblocks, + jemalloc=config.enableJemalloc, + cpusPerSocket=config.hw.cpusPerSocket) + +df = df %>% mutate(blocksPerCpu = nblocks / cpusPerSocket) -# Use the blocksize as factor -df$blocksize = as.factor(df$blocksize) df$jemalloc = as.factor(df$jemalloc) +df$nblocks = as.factor(df$nblocks) +df$blocksPerCpuFactor = as.factor(df$blocksPerCpu) # Split by malloc variant -D=df %>% group_by(jemalloc, blocksize) %>% +D=df %>% group_by(jemalloc, nblocks) %>% mutate(tnorm = time / median(time) - 1) + # Add another column: blocksPerCpu (we assume one task per socket, using + # all CPUs) -bs_unique = unique(df$blocksize) +bs_unique = unique(df$nblocks) nbs=length(bs_unique) - print(D) ppi=300 @@ -40,12 +46,12 @@ png("box.png", width=w*ppi, height=h*ppi, res=ppi) # # # -# Create the plot with the normalized time vs blocksize -p = ggplot(data=D, aes(x=blocksize, y=tnorm)) + +# Create the plot with the normalized time vs nblocks +p = ggplot(data=D, aes(x=nblocks, y=tnorm)) + # Labels - labs(x="Block size", y="Normalized time", - title="Nbody normalized time", + labs(x="Num blocks", y="Normalized time", + title=sprintf("Nbody normalized time. Particles=%d", particles), subtitle=input_file) + # Center the title @@ -62,8 +68,7 @@ p = ggplot(data=D, aes(x=blocksize, y=tnorm)) + geom_boxplot(aes(fill=jemalloc)) + # # Use log2 scale in x -# scale_x_continuous(trans=log2_trans(), -# breaks=bs_unique) + +# scale_x_continuous(trans=log2_trans()) + # scale_y_continuous(breaks = scales::pretty_breaks(n = 10)) + @@ -86,17 +91,18 @@ dev.off() # png("scatter.png", width=w*ppi, height=h*ppi, res=ppi) # -## Create the plot with the normalized time vs blocksize -p = ggplot(D, aes(x=blocksize, y=time, color=jemalloc)) + +## Create the plot with the normalized time vs nblocks +p = ggplot(D, aes(x=blocksPerCpu, y=time, color=jemalloc)) + - labs(x="Block size", y="Time (s)", - title="Nbody granularity", + labs(x="Blocks/CPU", y="Time (s)", + title=sprintf("Nbody granularity. Particles=%d", particles), subtitle=input_file) + theme_bw() + theme(plot.subtitle=element_text(size=8)) + + theme(legend.position = c(0.5, 0.88)) + geom_point(shape=21, size=3) + - #scale_x_continuous(trans=log2_trans()) + + scale_x_continuous(trans=log2_trans()) + scale_y_continuous(trans=log2_trans()) # Render the plot diff --git a/garlic/pp/timetable.nix b/garlic/pp/timetable.nix index 8469249..021d64d 100644 --- a/garlic/pp/timetable.nix +++ b/garlic/pp/timetable.nix @@ -20,8 +20,7 @@ stdenv.mkDerivation { conf=garlic_config.json for run in $(ls -d [0-9]* | sort -n); do time=$(awk '/^time /{print $2}' $run/stdout.log) - jq -cn "{ exp:\"$exp\", unit:\"$unit\", config:inputs, time:$time}" \ - $conf >> $out + jq -cn "{ exp:\"$exp\", unit:\"$unit\", config:inputs, time:$time, run:$run }" $conf >> $out done done done diff --git a/overlay.nix b/overlay.nix index 0c54406..75cd33f 100644 --- a/overlay.nix +++ b/overlay.nix @@ -284,7 +284,7 @@ let tampi = callPackage ./garlic/exp/nbody/tampi.nix { }; # Experiment variants - medium = tampi.override { particles = 64 * 1024; }; + medium = tampi.override { particles = 24 * 4096; }; baseline = medium; freeCpu = baseline.override { freeCpu = true; }; jemalloc = baseline.override { enableJemalloc = true; }; @@ -329,23 +329,31 @@ let timetableFromTrebuchet = tre: timetable (resultFromTrebuchet tre); mergeDatasets = callPackage ./garlic/pp/merge.nix { }; - # Takes a list of experiments and returns a file that contains the + # Takes a list of experiments and returns a file that contains # all timetable results from the experiments. merge = exps: mergeDatasets (map timetableFromTrebuchet exps); }; + # Datasets used in the figures + ds = with self.bsc.garlic; { + nbody = { + jemalloc = with exp.nbody; pp.merge [ baseline jemalloc ]; + freeCpu = with exp.nbody; pp.merge [ baseline freeCpu ]; + }; + }; + # Figures generated from the experiments fig = with self.bsc.garlic; { nbody = { jemalloc = pp.rPlot { script = ./garlic/fig/nbody/jemalloc.R; - dataset = with exp.nbody; pp.merge [ baseline jemalloc ]; + dataset = ds.nbody.jemalloc; }; freeCpu = pp.rPlot { script = ./garlic/fig/nbody/freeCpu.R; - dataset = with exp.nbody; pp.merge [ baseline freeCpu ]; + dataset = ds.nbody.freeCpu; }; }; @@ -359,5 +367,5 @@ in # Aliases garlic = bsc.garlic; - inherit (bsc.garlic) exp fig apps; + inherit (bsc.garlic) exp fig apps ds; } From fd1229ddc009c9b331bcc82ef9e607acc17d3da9 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 23 Oct 2020 10:53:39 +0200 Subject: [PATCH 289/987] nbody: add simple test figure --- garlic/fig/nbody/test.R | 111 ++++++++++++++++++++++++---------------- overlay.nix | 14 +++-- 2 files changed, 76 insertions(+), 49 deletions(-) diff --git a/garlic/fig/nbody/test.R b/garlic/fig/nbody/test.R index 0d0b619..21cb225 100644 --- a/garlic/fig/nbody/test.R +++ b/garlic/fig/nbody/test.R @@ -1,37 +1,53 @@ library(ggplot2) library(dplyr) library(scales) +library(jsonlite) -# Load the dataset -df=read.table("data.csv", col.names=c("blocksize", "time")) +args=commandArgs(trailingOnly=TRUE) -bs_unique = unique(df$blocksize) -nbs=length(bs_unique) +# Read the timetable from args[1] +input_file = "input.json" +if (length(args)>0) { input_file = args[1] } + +# Load the dataset in NDJSON format +dataset = jsonlite::stream_in(file(input_file)) %>% + jsonlite::flatten() + +particles = unique(dataset$config.particles) + +# We only need the nblocks and time +df = select(dataset, config.nblocks, config.hw.cpusPerSocket, time) %>% + rename(nblocks=config.nblocks, + cpusPerSocket=config.hw.cpusPerSocket) + +df = df %>% mutate(blocksPerCpu = nblocks / cpusPerSocket) +df$nblocks = as.factor(df$nblocks) +df$blocksPerCpuFactor = as.factor(df$blocksPerCpu) # Normalize the time by the median -D=group_by(df, blocksize) %>% - mutate(tnorm = time / median(time) - 1) # %>% -# mutate(bad = (abs(tnorm) >= 0.01)) %>% -# mutate(color = ifelse(bad,"red","black")) +D=group_by(df, nblocks) %>% + mutate(tnorm = time / median(time) - 1) -D$bad = cut(abs(D$tnorm), breaks=c(-Inf, 0.01, +Inf), labels=c("good", "bad")) +bs_unique = unique(df$nblocks) +nbs=length(bs_unique) print(D) -#ppi=300 -#h=5 -#w=5 -#png("box.png", width=w*ppi, height=h*ppi, res=ppi) +ppi=300 +h=5 +w=5 + +png("box.png", width=w*ppi, height=h*ppi, res=ppi) # # # -# Create the plot with the normalized time vs blocksize -p = ggplot(D, aes(x=blocksize, y=tnorm)) + +# Create the plot with the normalized time vs nblocks +p = ggplot(data=D, aes(x=blocksPerCpuFactor, y=tnorm)) + # Labels - labs(x="Block size", y="Normalized time", - title="Nbody normalized time", - subtitle="@expResult@") + + labs(x="Blocks/CPU", y="Normalized time", + title=sprintf("Nbody normalized time. Particles=%d", particles), + subtitle=input_file) + # Center the title #theme(plot.title = element_text(hjust = 0.5)) + @@ -39,44 +55,49 @@ p = ggplot(D, aes(x=blocksize, y=tnorm)) + # Black and white mode (useful for printing) #theme_bw() + - # Draw boxplots - geom_boxplot(aes(group=blocksize)) + + # Add the maximum allowed error lines + geom_hline(yintercept=c(-0.01, 0.01), + linetype="dashed", color="red") + - # Use log2 scale in x - scale_x_continuous(trans=log2_trans(), - breaks=bs_unique) + + # Draw boxplots + geom_boxplot() + scale_y_continuous(breaks = scales::pretty_breaks(n = 10)) + - # Add the maximum allowed error lines - geom_hline(yintercept=c(-0.01, 0.01), - linetype="dashed", color="red") + theme_bw() + + + theme(plot.subtitle=element_text(size=8)) + + + theme(legend.position = c(0.85, 0.85)) #+ + + # Place each variant group in one separate plot + #facet_wrap(~jemalloc) # Render the plot print(p) -# -## Save the png image -#dev.off() -# -#png("scatter.png", width=w*ppi, height=h*ppi, res=ppi) -## Create the plot with the normalized time vs blocksize -#p = ggplot(D, aes(x=blocksize, y=time, color=bad)) + +## Save the png image +dev.off() # -# labs(x="Blocksize", y="Time (s)", -# title="Nbody granularity", -# subtitle="@expResult@") + +png("scatter.png", width=w*ppi, height=h*ppi, res=ppi) # -# geom_point(shape=21, size=1.5) + -# scale_color_manual(values=c("black", "red")) + -# scale_x_continuous(trans=log2_trans(), -# breaks=bs_unique) + -# scale_y_continuous(trans=log2_trans()) -# -## Render the plot -#print(p) +## Create the plot with the normalized time vs nblocks +p = ggplot(D, aes(x=blocksPerCpuFactor, y=time)) + + + labs(x="Blocks/CPU", y="Time (s)", + title=sprintf("Nbody granularity. Particles=%d", particles), + subtitle=input_file) + + theme_bw() + + theme(plot.subtitle=element_text(size=8)) + + theme(legend.position = c(0.5, 0.88)) + + + geom_point(shape=21, size=3) + + scale_y_continuous(trans=log2_trans()) + +# Render the plot +print(p) # Save the png image -#dev.off() +dev.off() diff --git a/overlay.nix b/overlay.nix index 75cd33f..43abed0 100644 --- a/overlay.nix +++ b/overlay.nix @@ -335,10 +335,11 @@ let }; # Datasets used in the figures - ds = with self.bsc.garlic; { - nbody = { - jemalloc = with exp.nbody; pp.merge [ baseline jemalloc ]; - freeCpu = with exp.nbody; pp.merge [ baseline freeCpu ]; + ds = with self.bsc.garlic; with pp; { + nbody = with exp.nbody; { + test = merge [ baseline ]; + jemalloc = merge [ baseline jemalloc ]; + freeCpu = merge [ baseline freeCpu ]; }; }; @@ -346,6 +347,11 @@ let fig = with self.bsc.garlic; { nbody = { + test = pp.rPlot { + script = ./garlic/fig/nbody/test.R; + dataset = ds.nbody.test; + }; + jemalloc = pp.rPlot { script = ./garlic/fig/nbody/jemalloc.R; dataset = ds.nbody.jemalloc; From 59346fa97ea6cb9e18c389888fd2bf63bf029008 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 26 Oct 2020 09:24:18 +0100 Subject: [PATCH 290/987] control: Add status file --- garlic/stages/control.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/garlic/stages/control.nix b/garlic/stages/control.nix index 51baed5..347be08 100644 --- a/garlic/stages/control.nix +++ b/garlic/stages/control.nix @@ -19,11 +19,13 @@ stdenv.mkDerivation { cat > $out < status mkdir "\$n" cd "\$n" ${stageProgram nextStage} cd .. done + echo "completed" > status EOF chmod +x $out ''; From 3bd4e61f3fed657dece6792802eb847a7742f7fb Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 26 Oct 2020 19:43:02 +0100 Subject: [PATCH 291/987] WIP: Testing with automatic fetching --- garlic/exp/nbody/granularity-mpi.nix | 19 ++++--- garlic/pp/check.nix | 33 ++++++++++++ garlic/pp/fetch.nix | 10 +++- garlic/pp/result2.nix | 81 ++++++++++++++++++++++++++++ garlic/stages/experiment.nix | 2 +- garlic/stages/runexp/runexp | 6 +-- overlay.nix | 18 ++++--- 7 files changed, 149 insertions(+), 20 deletions(-) create mode 100644 garlic/pp/check.nix create mode 100644 garlic/pp/result2.nix diff --git a/garlic/exp/nbody/granularity-mpi.nix b/garlic/exp/nbody/granularity-mpi.nix index 9b152a3..d226138 100644 --- a/garlic/exp/nbody/granularity-mpi.nix +++ b/garlic/exp/nbody/granularity-mpi.nix @@ -25,7 +25,7 @@ let gitBranch = "garlic/mpi+send"; # Repeat the execution of each unit 30 times - loops = 30; + loops = 10; # Resources qos = "debug"; @@ -34,6 +34,10 @@ let time = "02:00:00"; cpuBind = "sockets,verbose"; jobName = "nbody-bs-${toString blocksize}-${gitBranch}"; + + # Experiment revision: this allows a user to run again a experiment already + # executed + rev = 0; }; # Compute the array of configurations @@ -47,12 +51,13 @@ let }; program = {nextStage, conf, ...}: with conf; - let - customPkgs = stdexp.replaceMpi conf.mpi; - in - customPkgs.apps.nbody.override { - inherit cc blocksize mpi gitBranch; - }; + # FIXME: This is becoming very slow: + #let + # customPkgs = stdexp.replaceMpi conf.mpi; + #in + bsc.garlic.apps.nbody.override { + inherit cc blocksize mpi gitBranch; + }; pipeline = stdexp.stdPipeline ++ [ exec program ]; diff --git a/garlic/pp/check.nix b/garlic/pp/check.nix new file mode 100644 index 0000000..dc67860 --- /dev/null +++ b/garlic/pp/check.nix @@ -0,0 +1,33 @@ +{ + stdenv +}: + +resultTree: + +stdenv.mkDerivation { + name = "check"; + preferLocalBuild = true; + phases = [ "installPhase" ]; + installPhase = '' + echo "checking result tree: ${resultTree}" + cd ${resultTree} + for exp in *-experiment; do + cd ${resultTree}/$exp + echo "$exp: checking units" + for unit in *-unit; do + cd ${resultTree}/$exp/$unit + if [ ! -e status ]; then + echo "missing $unit/status file, aborting" + exit 1 + fi + st=$(cat status) + if [ "$st" != "completed" ]; then + echo "unit $unit is not complete yet, aborting" + exit 1 + fi + done + echo "$exp: execution complete" + done + ln -s $out ${resultTree} + ''; +} diff --git a/garlic/pp/fetch.nix b/garlic/pp/fetch.nix index feeedda..d7f42a8 100644 --- a/garlic/pp/fetch.nix +++ b/garlic/pp/fetch.nix @@ -31,14 +31,17 @@ in name = "fetch"; preferLocalBuild = true; - buildInputs = [ rsync openssh curl ]; + buildInputs = [ rsync openssh curl nix ]; phases = [ "installPhase" ]; + # This doesn't work when multiple users have different directories where the + # results are stored. + #src = /. + "${prefix}${experimentName}"; installPhase = '' cat > $out << EOF #!/bin/sh -e mkdir -p ${garlicTemp} - export PATH=${rsync}/bin:${openssh}/bin:${nix}/bin + export PATH=$PATH rsync -av \ --copy-links \ ${rsyncFilter} \ @@ -50,8 +53,11 @@ in garlicTemp = "${garlicTemp}"; \ })') + rm -rf ${garlicTemp}/${experimentName} + echo "The results for experiment ${experimentName} are at:" echo " \$res" + EOF chmod +x $out ''; diff --git a/garlic/pp/result2.nix b/garlic/pp/result2.nix new file mode 100644 index 0000000..88a125f --- /dev/null +++ b/garlic/pp/result2.nix @@ -0,0 +1,81 @@ +{ + stdenv +, garlicTools +}: + +{ + trebuchetStage +, experimentStage +, garlicTemp +}: + +with garlicTools; + +let + experimentName = baseNameOf (toString experimentStage); + garlicOut = "/mnt/garlic-out"; +in + stdenv.mkDerivation { + name = "result"; + preferLocalBuild = true; + __noChroot = true; + + phases = [ "installPhase" ]; + + installPhase = '' + expList=$(find ${garlicOut} -maxdepth 2 -name ${experimentName}) + + if [ -z "$expList" ]; then + echo "ERROR: missing results for ${experimentName}" + echo "Execute it by running:" + echo + echo -e " \e[30;48;5;2m${trebuchetStage}\e[0m" + echo + echo "cannot continue building $out, aborting" + exit 1 + fi + + N=$(echo $expList | wc -l) + echo "Found $N results: $expList" + + if [ $N -gt 1 ]; then + echo + echo "ERROR: multiple results for ${experimentName}:" + echo "$expList" + echo + echo "cannot continue building $out, aborting" + exit 1 + fi + + exp=$expList + repeat=1 + while [ 1 ]; do + repeat=0 + cd $exp + echo "$exp: checking units" + for unit in *-unit; do + cd $exp/$unit + if [ ! -e status ]; then + echo "$unit: no status" + repeat=1 + else + st=$(cat status) + echo "$unit: $st" + if [ "$st" != "completed" ]; then + repeat=1 + fi + fi + done + + if [ $repeat -eq 0 ]; then + break + fi + echo "waiting 10 seconds to try again" + sleep 10 + done + echo "$exp: execution complete" + + mkdir -p $out + cp -aL $exp $out + ''; + } diff --git a/garlic/stages/experiment.nix b/garlic/stages/experiment.nix index 95535e8..205d72a 100644 --- a/garlic/stages/experiment.nix +++ b/garlic/stages/experiment.nix @@ -38,7 +38,7 @@ stdenv.mkDerivation { export GARLIC_EXPERIMENT=$(basename $out) if [ -e "\$GARLIC_EXPERIMENT" ]; then - >&2 echo "skipping, experiment path already exists: \$GARLIC_EXPERIMENT" + >&2 echo "skipping, path exists: \$(pwd)/\$GARLIC_EXPERIMENT" exit 0 fi diff --git a/garlic/stages/runexp/runexp b/garlic/stages/runexp/runexp index 1d61515..512c7b5 100755 --- a/garlic/stages/runexp/runexp +++ b/garlic/stages/runexp/runexp @@ -5,13 +5,13 @@ if [ -e /nix ]; then exit 1 fi ->&2 echo Running runexp for MN4 ->&2 echo PATH=$PATH +#>&2 echo Running runexp for MN4 +#>&2 echo PATH=$PATH user=$(id -un) group=$(id -gn) -export GARLIC_OUT="/gpfs/projects/$group/$user/garlic-out" +export GARLIC_OUT="/gpfs/projects/bsc15/garlic/out/$user" mkdir -p "$GARLIC_OUT" cd "$GARLIC_OUT" diff --git a/overlay.nix b/overlay.nix index 43abed0..610c7e2 100644 --- a/overlay.nix +++ b/overlay.nix @@ -314,15 +314,14 @@ let # Post processing tools pp = rec { - getExpResult = callPackage ./garlic/pp/result.nix { - inherit fetchExperiment; + getExpResult = callPackage ./garlic/pp/result2.nix { }; - resultFromTrebuchet = trebuchetStage: getExpResult { + resultFromTrebuchet = trebuchetStage: (getExpResult { garlicTemp = "/tmp/garlic-temp"; inherit trebuchetStage; experimentStage = with self.bsc.garlicTools; getExperimentStage trebuchetStage; - }; + }); fetchExperiment = callPackage ./garlic/pp/fetch.nix { }; timetable = callPackage ./garlic/pp/timetable.nix { }; rPlot = callPackage ./garlic/pp/rplot.nix { }; @@ -337,9 +336,14 @@ let # Datasets used in the figures ds = with self.bsc.garlic; with pp; { nbody = with exp.nbody; { - test = merge [ baseline ]; - jemalloc = merge [ baseline jemalloc ]; - freeCpu = merge [ baseline freeCpu ]; + test = merge [ test ]; + baseline = merge [ baseline ]; + jemalloc = merge [ jemalloc ]; + freeCpu = merge [ freeCpu ]; + cmp = { + jemalloc = merge [ baseline jemalloc ]; + freeCpu = merge [ baseline freeCpu ]; + }; }; }; From a66cdb52fb4f14b91c8f13c026eea567429cbc38 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 27 Oct 2020 10:47:09 +0100 Subject: [PATCH 292/987] nbody: Fix test experiment --- garlic/exp/nbody/granularity-mpi.nix | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/garlic/exp/nbody/granularity-mpi.nix b/garlic/exp/nbody/granularity-mpi.nix index d226138..e182d6f 100644 --- a/garlic/exp/nbody/granularity-mpi.nix +++ b/garlic/exp/nbody/granularity-mpi.nix @@ -14,12 +14,17 @@ let blocksize = [ 128 256 512 1024 2048 4096 ]; }; + machineConfig = targetMachine.config; + # Generate the complete configuration for each unit genConf = with bsc; c: targetMachine.config // rec { + inherit (machineConfig) hw; # nbody options particles = 1024 * 64; timesteps = 10; inherit (c) blocksize; + totalTasks = ntasksPerNode * nodes; + particlesPerTask = particles / totalTasks; cc = icc; mpi = impi; gitBranch = "garlic/mpi+send"; @@ -33,7 +38,7 @@ let nodes = 1; time = "02:00:00"; cpuBind = "sockets,verbose"; - jobName = "nbody-bs-${toString blocksize}-${gitBranch}"; + jobName = "bs-${toString blocksize}-${gitBranch}-nbody"; # Experiment revision: this allows a user to run again a experiment already # executed From 7b26b59988094599b7874a9c255b113adf53cd71 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 27 Oct 2020 10:47:52 +0100 Subject: [PATCH 293/987] Use rsync to fetch only the logs --- garlic/pp/result2.nix | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/garlic/pp/result2.nix b/garlic/pp/result2.nix index 88a125f..0a5d321 100644 --- a/garlic/pp/result2.nix +++ b/garlic/pp/result2.nix @@ -1,12 +1,15 @@ { stdenv , garlicTools +, rsync }: { trebuchetStage , experimentStage , garlicTemp +# We only fetch the config, stdout and stderr by default +, fetchAll ? false }: with garlicTools; @@ -14,12 +17,18 @@ with garlicTools; let experimentName = baseNameOf (toString experimentStage); garlicOut = "/mnt/garlic-out"; + rsyncFilter = if (fetchAll) then "" else '' + --include='*/*/garlic_config.json' \ + --include='*/*/std*.log' \ + --include='*/*/*/std*.log' \ + --exclude='*/*/*/*' ''; in stdenv.mkDerivation { name = "result"; preferLocalBuild = true; __noChroot = true; + buildInputs = [ rsync ]; phases = [ "installPhase" ]; installPhase = '' @@ -73,9 +82,10 @@ in echo "waiting 10 seconds to try again" sleep 10 done - echo "$exp: execution complete" + echo "$exp: execution complete, fething results" mkdir -p $out - cp -aL $exp $out + #cp -aL $exp $out + rsync -P -rt --copy-links ${rsyncFilter} $exp $out ''; } From 43991e9173eb725611f4edcede3faf10386fd8f9 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 27 Oct 2020 10:49:00 +0100 Subject: [PATCH 294/987] nbody: plot nblocks in test --- garlic/fig/nbody/test.R | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/garlic/fig/nbody/test.R b/garlic/fig/nbody/test.R index 21cb225..3db1610 100644 --- a/garlic/fig/nbody/test.R +++ b/garlic/fig/nbody/test.R @@ -22,7 +22,6 @@ df = select(dataset, config.nblocks, config.hw.cpusPerSocket, time) %>% df = df %>% mutate(blocksPerCpu = nblocks / cpusPerSocket) df$nblocks = as.factor(df$nblocks) -df$blocksPerCpuFactor = as.factor(df$blocksPerCpu) # Normalize the time by the median D=group_by(df, nblocks) %>% @@ -42,10 +41,10 @@ png("box.png", width=w*ppi, height=h*ppi, res=ppi) # # # Create the plot with the normalized time vs nblocks -p = ggplot(data=D, aes(x=blocksPerCpuFactor, y=tnorm)) + +p = ggplot(data=D, aes(x=nblocks, y=tnorm)) + # Labels - labs(x="Blocks/CPU", y="Normalized time", + labs(x="Blocks", y="Normalized time", title=sprintf("Nbody normalized time. Particles=%d", particles), subtitle=input_file) + @@ -56,13 +55,13 @@ p = ggplot(data=D, aes(x=blocksPerCpuFactor, y=tnorm)) + #theme_bw() + # Add the maximum allowed error lines - geom_hline(yintercept=c(-0.01, 0.01), - linetype="dashed", color="red") + + #geom_hline(yintercept=c(-0.01, 0.01), + # linetype="dashed", color="red") + # Draw boxplots geom_boxplot() + - scale_y_continuous(breaks = scales::pretty_breaks(n = 10)) + + #scale_y_continuous(breaks = scales::pretty_breaks(n = 10)) + theme_bw() + @@ -84,17 +83,17 @@ dev.off() png("scatter.png", width=w*ppi, height=h*ppi, res=ppi) # ## Create the plot with the normalized time vs nblocks -p = ggplot(D, aes(x=blocksPerCpuFactor, y=time)) + +p = ggplot(D, aes(x=nblocks, y=time)) + - labs(x="Blocks/CPU", y="Time (s)", + labs(x="Blocks", y="Time (s)", title=sprintf("Nbody granularity. Particles=%d", particles), subtitle=input_file) + theme_bw() + theme(plot.subtitle=element_text(size=8)) + theme(legend.position = c(0.5, 0.88)) + - geom_point(shape=21, size=3) + - scale_y_continuous(trans=log2_trans()) + geom_point(shape=21, size=3) # + + #scale_y_continuous(trans=log2_trans()) # Render the plot print(p) From 7c5345f4bc7008d85b033c0f9ac4d60b05c405e3 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 27 Oct 2020 10:49:27 +0100 Subject: [PATCH 295/987] report: Idea to reduce build time --- garlic/report.nix | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/garlic/report.nix b/garlic/report.nix index a5c726d..e48b63d 100644 --- a/garlic/report.nix +++ b/garlic/report.nix @@ -7,6 +7,11 @@ , texlive }: let + # TODO: We can select only which elements we need from fig by using: + # echo [ $(grep -o '@[^ @]*@' garlic/report.tex | sed 's/@//g') ] + # and them importing as valid nix lang. + + # By now, we require all plots figJSON = writeText "fig.json" (builtins.toJSON fig); in stdenv.mkDerivation { From efd7df068e3085417c882ae08393e1e215fdc0ed Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 29 Oct 2020 17:40:59 +0100 Subject: [PATCH 296/987] Print full experiment path --- garlic/stages/experiment.nix | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/garlic/stages/experiment.nix b/garlic/stages/experiment.nix index 205d72a..91067f8 100644 --- a/garlic/stages/experiment.nix +++ b/garlic/stages/experiment.nix @@ -38,11 +38,12 @@ stdenv.mkDerivation { export GARLIC_EXPERIMENT=$(basename $out) if [ -e "\$GARLIC_EXPERIMENT" ]; then - >&2 echo "skipping, path exists: \$(pwd)/\$GARLIC_EXPERIMENT" + >&2 echo "skipping, experiment exists: \$(pwd)/\$GARLIC_EXPERIMENT" exit 0 fi mkdir -p "\$GARLIC_EXPERIMENT" + cd "\$GARLIC_EXPERIMENT" ${unitsLinks} From 5e2797bcdea716338a5bc8d7b892fa2821d7c112 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 29 Oct 2020 17:42:03 +0100 Subject: [PATCH 297/987] Create index files for the experiments --- garlic/stages/isolate/stage1 | 2 +- garlic/stages/runexp/runexp | 3 +++ garlic/stages/unit.nix | 20 ++++++++++++++++++++ 3 files changed, 24 insertions(+), 1 deletion(-) diff --git a/garlic/stages/isolate/stage1 b/garlic/stages/isolate/stage1 index eab0274..7e39679 100644 --- a/garlic/stages/isolate/stage1 +++ b/garlic/stages/isolate/stage1 @@ -17,7 +17,7 @@ env=( PATH="@nixPrefix@@busybox@/bin:@busybox@/bin:@extraPath@" $(env | grep ^SLURM || true) $(env | grep ^PMI || true) - $(env | grep ^GARLIC_OUT || true) + $(env | grep ^GARLIC || true) $(env | grep ^USER || true) HOME="/homeless-shelter" ) diff --git a/garlic/stages/runexp/runexp b/garlic/stages/runexp/runexp index 512c7b5..e8d9c4a 100755 --- a/garlic/stages/runexp/runexp +++ b/garlic/stages/runexp/runexp @@ -13,6 +13,9 @@ group=$(id -gn) export GARLIC_OUT="/gpfs/projects/bsc15/garlic/out/$user" mkdir -p "$GARLIC_OUT" +export GARLIC_INDEX="/gpfs/projects/bsc15/garlic/index/$user" +mkdir -p "$GARLIC_INDEX" +export GARLIC_USER="$user" cd "$GARLIC_OUT" exec @nixPrefix@@program@ diff --git a/garlic/stages/unit.nix b/garlic/stages/unit.nix index 3f32f37..15db8fb 100644 --- a/garlic/stages/unit.nix +++ b/garlic/stages/unit.nix @@ -55,11 +55,31 @@ stdenv.mkDerivation { exit 1 fi + if [ -z "\$GARLIC_EXPERIMENT" ]; then + >&2 echo "GARLIC_EXPERIMENT not defined, aborting" + exit 1 + fi + + if [ -z "\$GARLIC_INDEX" ]; then + >&2 echo "GARLIC_INDEX not defined, aborting" + exit 1 + fi + cd "\$GARLIC_OUT" # Set the experiment unit in the environment export GARLIC_UNIT=$(basename $out) + # Create an index entry + rm -f "\$GARLIC_INDEX/${conf.unitName}" \ + "\$GARLIC_INDEX/${conf.expName}" + + ln -Tfs "../../out/\$GARLIC_UNIT" \ + "\$GARLIC_INDEX/${conf.unitName}" + + ln -Tfs "../../out/\$GARLIC_EXPERIMENT" \ + "\$GARLIC_INDEX/${conf.expName}" + if [ -e "\$GARLIC_UNIT" ]; then >&2 echo "skipping, unit path already exists: \$GARLIC_UNIT" exit 0 From 0bcfe5d25b9e7796ab1648c0557decb2290b961b Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 29 Oct 2020 17:44:48 +0100 Subject: [PATCH 298/987] Add new store pp stage --- garlic/pp/store.nix | 54 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 garlic/pp/store.nix diff --git a/garlic/pp/store.nix b/garlic/pp/store.nix new file mode 100644 index 0000000..20178cb --- /dev/null +++ b/garlic/pp/store.nix @@ -0,0 +1,54 @@ +{ + stdenv +}: + +{ + experimentStage +, trebuchetStage +}: + +with builtins; + +#assert typeOf experimentStage == "string"; +#assert typeOf trebuchetStage == "string"; + +let + # We cannot keep the context of the string when called from a derivation, as + # they will produce a different resultTree derivation vs called from the + # garlic script tool. + #_experimentStage = unsafeDiscardStringContext experimentStage; + #_trebuchetStage = unsafeDiscardStringContext trebuchetStage; + + experimentName = baseNameOf (experimentStage); + trebuchetName = baseNameOf (trebuchetStage); + garlicTemp = "/tmp/garlic"; +in + #assert hasContext _trebuchetStage == false; + #assert hasContext _experimentStage == false; + stdenv.mkDerivation { + name = "resultTree"; + preferLocalBuild = true; + __noChroot = true; + + phases = [ "installPhase" ]; + + installPhase = '' + exp=${garlicTemp}/${experimentName} + + if [ ! -e "$exp" ]; then + echo "$exp: not found" + echo "Run the experiment and fetch the results with:" + echo + #echo " garlic -RF -t ${trebuchetStage}" + echo -e "\e[30;48;5;2mgarlic -RF -t ${trebuchetStage}\e[0m" + echo + echo "cannot continue building $out, aborting" + exit 1 + fi + + mkdir -p $out + cp -aL $exp $out/ + ln -s ${trebuchetStage} $out/trebuchet + ln -s ${experimentStage} $out/experiment + ''; + } From d5d42b3c095b0081bb776b3f7c290a14fa8f615d Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 29 Oct 2020 17:45:31 +0100 Subject: [PATCH 299/987] Add unit and exp name to nbody test --- garlic/exp/nbody/granularity-mpi.nix | 3 +++ 1 file changed, 3 insertions(+) diff --git a/garlic/exp/nbody/granularity-mpi.nix b/garlic/exp/nbody/granularity-mpi.nix index e182d6f..4c1d6a8 100644 --- a/garlic/exp/nbody/granularity-mpi.nix +++ b/garlic/exp/nbody/granularity-mpi.nix @@ -18,6 +18,9 @@ let # Generate the complete configuration for each unit genConf = with bsc; c: targetMachine.config // rec { + expName = "nbody.test"; + unitName = "${expName}.nb-${toString nblocks}"; + inherit (machineConfig) hw; # nbody options particles = 1024 * 64; From 6b40e6f9e9042e52d69b55bc34b7caa41581d49f Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 29 Oct 2020 17:47:45 +0100 Subject: [PATCH 300/987] Experimental garlic tool --- garlic/sh/default.nix | 35 ++++++++ garlic/sh/garlic | 197 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 232 insertions(+) create mode 100644 garlic/sh/default.nix create mode 100755 garlic/sh/garlic diff --git a/garlic/sh/default.nix b/garlic/sh/default.nix new file mode 100644 index 0000000..fa7f749 --- /dev/null +++ b/garlic/sh/default.nix @@ -0,0 +1,35 @@ +{ + stdenv +, garlicTools +, sshHost +, rsync +, openssh +, nix +}: + +with garlicTools; + +let + garlicOut = "/mnt/garlic/out"; + garlicTemp = "/tmp/garlic"; +in + stdenv.mkDerivation { + name = "garlic-tool"; + preferLocalBuild = true; + + buildInputs = [ rsync openssh nix ]; + phases = [ "unpackPhase" "installPhase" ]; + + src = ./.; + + inherit garlicOut garlicTemp sshHost; + + installPhase = '' + substituteAllInPlace garlic + substituteInPlace garlic \ + --replace @PATH@ $PATH + mkdir -p $out/bin + cp garlic $out/bin + chmod +x $out/bin/garlic + ''; + } diff --git a/garlic/sh/garlic b/garlic/sh/garlic new file mode 100755 index 0000000..a06067b --- /dev/null +++ b/garlic/sh/garlic @@ -0,0 +1,197 @@ +#!/bin/bash + +garlicOut=@garlicOut@ +garlicTemp=@garlicTemp@ +sshHost=@sshHost@ +PATH=@PATH@ + +usage() { echo "Usage: garlic [-RFwq] [-e experiment] [-t trebuchet]" 1>&2; exit 1; } + +trebuchetFromExperiment() { + nix-store -q --referrers $1 | grep trebuchet +} +experimentFromTrebuchet() { + nix-store -qR $1 | grep experiment +} + +drvFromOutput() { + nix-store -q --deriver $1 +} + +checkTrebuchet() { + if [ ! -e "$trebuchet" ]; then + >&2 echo "$trebuchet: not found" + exit 1 + fi + + if [ ! -f "$trebuchet" ]; then + >&2 echo "$trebuchet: not a file" + exit 1 + fi + + # FIXME: We need a better way to determine a trebuchet + if [ -z "$(grep "This trebuchet launches" $trebuchet)" ]; then + >&2 echo "$trebuchet: not a trebuchet" + exit 1 + fi + + return 0 +} + +checkExperiment() { + if [ ! -e "$experiment" ]; then + >&2 echo "$experiment: not found" + exit 1 + fi + + if [ ! -f "$experiment" ]; then + >&2 echo "$experiment: not a file" + exit 1 + fi + + # FIXME: We need a better way to determine a experiment + if [ -z "$(grep "This is an experiment" $experiment)" ]; then + >&2 echo "$experiment: not an experiment" + exit 1 + fi + + return 0 +} + +do_fetch() { + expName=$(basename $experiment) + user=$(ssh -G "$sshHost" | awk '/^user /{print $2}') + exp=$garlicOut/$user/$expName + + if [ ! -e "$exp" ]; then + echo "missing experiment: $exp" + exit 1 + fi + + cwd=$(pwd) + + repeat=1 + while [ 1 ]; do + repeat=0 + cd $exp + test $verbose && >&2 echo "$exp: checking units" + + for unit in *-unit; do + cd $exp/$unit + if [ ! -e status ]; then + + test $verbose && >&2 echo "$unit: no status" + repeat=1 + else + st=$(cat status) + test $verbose && >&2 echo "$unit: $st" + if [ "$st" != "completed" ]; then + repeat=1 + fi + fi + done + + if [ $repeat -eq 0 ]; then + break + fi + + if [ $waitResults -eq 1 ]; then + #echo "waiting 3 seconds to try again" + sleep 3 + else + break + fi + done + + if [ $repeat -eq 1 ]; then + >&2 echo "$exp: execution incomplete" + exit 1 + fi + + cd "$cwd" + + test $verbose && >&2 echo "$exp: execution complete, fetching results" + + mkdir -p $garlicTemp + + rsync -rt --copy-links \ + --include='*/*/garlic_config.json' \ + --include='*/*/std*.log' \ + --include='*/*/*/std*.log' \ + --exclude='*/*/*/*' \ + $exp $garlicTemp + + nix-build -E "(with import ./default.nix; \ + garlic.pp.store { \ + experimentStage = import \"$experimentDrv\"; + trebuchetStage = import \"$trebuchetDrv\"; + })" + + rm -rf $garlicTemp/$expName +} + +do_run() { + + $trebuchet +} + +waitResults=1 +verbose=1 +operation= +target= +enableRun= +enableFetch= + +while getopts "qwRFe:t:" o; do + case "${o}" in + e) experiment=${OPTARG} ;; + t) trebuchet=${OPTARG} ;; + R) enableRun=1 ;; + F) enableFetch=1 ;; + w) waitResults=0 ;; + q) verbose= ;; + *) usage ;; + esac +done +shift $((OPTIND-1)) +#target="$1" + +if [ -z "$trebuchet" -a -z "$experiment" ]; then + >&2 echo "missing trebuchet or experiment" + usage +fi + +if [ -z "$enableRun" -a -z "$enableFetch" ]; then + >&2 echo "missing operation" + usage +fi + +#if [ -z "$target" ]; then +# >&2 echo "missing target" +# usage +#fi + +#trebuchet=$(nix-build -A "exp.$target") +#checkTrebuchet $trebuchet +#experiment=$(experimentFromTrebuchet $trebuchet) +#checkExperiment $experiment + +if [ ! -z "$trebuchet" ]; then + checkTrebuchet $trebuchet + trebuchet=$(readlink -f $trebuchet) + experiment=$(experimentFromTrebuchet $trebuchet) + checkExperiment $experiment +else + checkExperiment $experiment + experiment=$(readlink -f $experiment) + trebuchet=$(trebuchetFromExperiment $experiment) + checkTrebuchet $trebuchet +fi + +trebuchetDrv=$(drvFromOutput $trebuchet) +experimentDrv=$(drvFromOutput $experiment) + +if [ $enableRun ]; then do_run; fi +if [ $enableFetch ]; then do_fetch; fi + + From 8bc0dc202dfab62441d73b606bb2699ca5e44f12 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 29 Oct 2020 17:48:57 +0100 Subject: [PATCH 301/987] New fetching mechanism with garlic tool --- overlay.nix | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/overlay.nix b/overlay.nix index 610c7e2..575c542 100644 --- a/overlay.nix +++ b/overlay.nix @@ -312,17 +312,17 @@ let hist = callPackage ./garlic/pp/hist { }; + tool = callPackage ./garlic/sh/default.nix { + sshHost = "mn1"; + }; + # Post processing tools - pp = rec { - getExpResult = callPackage ./garlic/pp/result2.nix { - }; - resultFromTrebuchet = trebuchetStage: (getExpResult { - garlicTemp = "/tmp/garlic-temp"; + pp = with self.bsc.garlicTools; rec { + store = callPackage ./garlic/pp/store.nix { }; + resultFromTrebuchet = trebuchetStage: (store { + experimentStage = getExperimentStage trebuchetStage; inherit trebuchetStage; - experimentStage = with self.bsc.garlicTools; - getExperimentStage trebuchetStage; }); - fetchExperiment = callPackage ./garlic/pp/fetch.nix { }; timetable = callPackage ./garlic/pp/timetable.nix { }; rPlot = callPackage ./garlic/pp/rplot.nix { }; timetableFromTrebuchet = tre: timetable (resultFromTrebuchet tre); From 3eae92bdc46a335b34b1321081c1686d95803165 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 29 Oct 2020 17:52:03 +0100 Subject: [PATCH 302/987] Remove old pp stages --- garlic/pp/check.nix | 33 --------------- garlic/pp/fetch.nix | 64 ---------------------------- garlic/pp/result.nix | 43 ------------------- garlic/pp/result2.nix | 91 ---------------------------------------- garlic/pp/timeResult.nix | 30 ------------- 5 files changed, 261 deletions(-) delete mode 100644 garlic/pp/check.nix delete mode 100644 garlic/pp/fetch.nix delete mode 100644 garlic/pp/result.nix delete mode 100644 garlic/pp/result2.nix delete mode 100644 garlic/pp/timeResult.nix diff --git a/garlic/pp/check.nix b/garlic/pp/check.nix deleted file mode 100644 index dc67860..0000000 --- a/garlic/pp/check.nix +++ /dev/null @@ -1,33 +0,0 @@ -{ - stdenv -}: - -resultTree: - -stdenv.mkDerivation { - name = "check"; - preferLocalBuild = true; - phases = [ "installPhase" ]; - installPhase = '' - echo "checking result tree: ${resultTree}" - cd ${resultTree} - for exp in *-experiment; do - cd ${resultTree}/$exp - echo "$exp: checking units" - for unit in *-unit; do - cd ${resultTree}/$exp/$unit - if [ ! -e status ]; then - echo "missing $unit/status file, aborting" - exit 1 - fi - st=$(cat status) - if [ "$st" != "completed" ]; then - echo "unit $unit is not complete yet, aborting" - exit 1 - fi - done - echo "$exp: execution complete" - done - ln -s $out ${resultTree} - ''; -} diff --git a/garlic/pp/fetch.nix b/garlic/pp/fetch.nix deleted file mode 100644 index d7f42a8..0000000 --- a/garlic/pp/fetch.nix +++ /dev/null @@ -1,64 +0,0 @@ -{ - stdenv -, rsync -, openssh -, nix -, curl -, garlicTools -}: - -{ - sshHost -, prefix -, experimentStage -, trebuchetStage -, garlicTemp -# We only fetch the config, stdout and stderr by default -, fetchAll ? false -}: - -with garlicTools; - -let - experimentName = baseNameOf (toString experimentStage); - rsyncFilter = if (fetchAll) then "" else '' - --include='*/*/garlic_config.json' \ - --include='*/*/std*.log' \ - --include='*/*/*/std*.log' \ - --exclude='*/*/*/*' ''; -in - stdenv.mkDerivation { - name = "fetch"; - preferLocalBuild = true; - - buildInputs = [ rsync openssh curl nix ]; - phases = [ "installPhase" ]; - # This doesn't work when multiple users have different directories where the - # results are stored. - #src = /. + "${prefix}${experimentName}"; - - installPhase = '' - cat > $out << EOF - #!/bin/sh -e - mkdir -p ${garlicTemp} - export PATH=$PATH - rsync -av \ - --copy-links \ - ${rsyncFilter} \ - '${sshHost}:${prefix}/${experimentName}' ${garlicTemp} - - res=\$(nix-build -E '(with import ./default.nix; garlic.pp.getExpResult { \ - experimentStage = "${experimentStage}"; \ - trebuchetStage = "${trebuchetStage}"; \ - garlicTemp = "${garlicTemp}"; \ - })') - - rm -rf ${garlicTemp}/${experimentName} - - echo "The results for experiment ${experimentName} are at:" - echo " \$res" - - EOF - chmod +x $out - ''; - } diff --git a/garlic/pp/result.nix b/garlic/pp/result.nix deleted file mode 100644 index e6beeb4..0000000 --- a/garlic/pp/result.nix +++ /dev/null @@ -1,43 +0,0 @@ -{ - stdenv -, garlicTools -, fetchExperiment -}: - -{ - trebuchetStage -, experimentStage -, garlicTemp -}: - -with garlicTools; - -let - experimentName = baseNameOf (toString experimentStage); - fetcher = fetchExperiment { - sshHost = "mn1"; - prefix = "/gpfs/projects/\\\$(id -gn)/\\\$(id -un)/garlic-out"; - garlicTemp = "/tmp/garlic-temp"; - inherit experimentStage trebuchetStage; - }; -in - stdenv.mkDerivation { - name = "result"; - preferLocalBuild = true; - __noChroot = true; - - phases = [ "installPhase" ]; - - installPhase = '' - expPath=${garlicTemp}/${experimentName} - if [ ! -e $expPath ]; then - echo "The experiment ${experimentName} is missing in ${garlicTemp}." - echo "Please fetch it and try again." - echo "You can execute ${trebuchetStage} to run the experiment." - echo "And then ${fetcher} to get the results." - exit 1 - fi - mkdir -p $out - cp -a ${garlicTemp}/${experimentName} $out - ''; - } diff --git a/garlic/pp/result2.nix b/garlic/pp/result2.nix deleted file mode 100644 index 0a5d321..0000000 --- a/garlic/pp/result2.nix +++ /dev/null @@ -1,91 +0,0 @@ -{ - stdenv -, garlicTools -, rsync -}: - -{ - trebuchetStage -, experimentStage -, garlicTemp -# We only fetch the config, stdout and stderr by default -, fetchAll ? false -}: - -with garlicTools; - -let - experimentName = baseNameOf (toString experimentStage); - garlicOut = "/mnt/garlic-out"; - rsyncFilter = if (fetchAll) then "" else '' - --include='*/*/garlic_config.json' \ - --include='*/*/std*.log' \ - --include='*/*/*/std*.log' \ - --exclude='*/*/*/*' ''; -in - stdenv.mkDerivation { - name = "result"; - preferLocalBuild = true; - __noChroot = true; - - buildInputs = [ rsync ]; - phases = [ "installPhase" ]; - - installPhase = '' - expList=$(find ${garlicOut} -maxdepth 2 -name ${experimentName}) - - if [ -z "$expList" ]; then - echo "ERROR: missing results for ${experimentName}" - echo "Execute it by running:" - echo - echo -e " \e[30;48;5;2m${trebuchetStage}\e[0m" - echo - echo "cannot continue building $out, aborting" - exit 1 - fi - - N=$(echo $expList | wc -l) - echo "Found $N results: $expList" - - if [ $N -gt 1 ]; then - echo - echo "ERROR: multiple results for ${experimentName}:" - echo "$expList" - echo - echo "cannot continue building $out, aborting" - exit 1 - fi - - exp=$expList - repeat=1 - while [ 1 ]; do - repeat=0 - cd $exp - echo "$exp: checking units" - for unit in *-unit; do - cd $exp/$unit - if [ ! -e status ]; then - echo "$unit: no status" - repeat=1 - else - st=$(cat status) - echo "$unit: $st" - if [ "$st" != "completed" ]; then - repeat=1 - fi - fi - done - - if [ $repeat -eq 0 ]; then - break - fi - echo "waiting 10 seconds to try again" - sleep 10 - done - echo "$exp: execution complete, fething results" - - mkdir -p $out - #cp -aL $exp $out - rsync -P -rt --copy-links ${rsyncFilter} $exp $out - ''; - } diff --git a/garlic/pp/timeResult.nix b/garlic/pp/timeResult.nix deleted file mode 100644 index ec1b02a..0000000 --- a/garlic/pp/timeResult.nix +++ /dev/null @@ -1,30 +0,0 @@ -{ - stdenv -}: - -inputResult: - -stdenv.mkDerivation { - name = "timeResult"; - preferLocalBuild = true; - phases = [ "installPhase" ]; - installPhase = '' - mkdir -p $out - cd ${inputResult} - for unit in *-experiment/*-unit; do - outunit=$out/$unit - mkdir -p $outunit - - # Copy the unit config - conf="$unit/garlic_config.json" - cp "$conf" "$outunit/garlic_config.json" - - # Merge all runs in one single CSV file - echo "run time" > $outunit/data.csv - for r in $(cd $unit; ls -d [0-9]* | sort -n); do - log="$unit/$r/stdout.log" - awk "/^time /{print \"$r\", \$2}" $log >> $outunit/data.csv - done - done - ''; -} From 317409f6acdbf238925597c8086131d81f5f98b9 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 29 Oct 2020 18:07:06 +0100 Subject: [PATCH 303/987] Move index and out inside the user directory --- garlic/sh/default.nix | 4 ++-- garlic/sh/garlic | 6 +++--- garlic/stages/runexp/runexp | 4 ++-- garlic/stages/unit.nix | 4 ++-- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/garlic/sh/default.nix b/garlic/sh/default.nix index fa7f749..7c364dc 100644 --- a/garlic/sh/default.nix +++ b/garlic/sh/default.nix @@ -10,7 +10,7 @@ with garlicTools; let - garlicOut = "/mnt/garlic/out"; + garlicPrefix = "/mnt/garlic"; garlicTemp = "/tmp/garlic"; in stdenv.mkDerivation { @@ -22,7 +22,7 @@ in src = ./.; - inherit garlicOut garlicTemp sshHost; + inherit garlicPrefix garlicTemp sshHost; installPhase = '' substituteAllInPlace garlic diff --git a/garlic/sh/garlic b/garlic/sh/garlic index a06067b..e7ccb05 100755 --- a/garlic/sh/garlic +++ b/garlic/sh/garlic @@ -1,6 +1,6 @@ -#!/bin/bash +#!/bin/bash -e -garlicOut=@garlicOut@ +garlicPrefix=@garlicPrefix@ garlicTemp=@garlicTemp@ sshHost=@sshHost@ PATH=@PATH@ @@ -61,7 +61,7 @@ checkExperiment() { do_fetch() { expName=$(basename $experiment) user=$(ssh -G "$sshHost" | awk '/^user /{print $2}') - exp=$garlicOut/$user/$expName + exp=$garlicPrefix/$user/out/$expName if [ ! -e "$exp" ]; then echo "missing experiment: $exp" diff --git a/garlic/stages/runexp/runexp b/garlic/stages/runexp/runexp index e8d9c4a..a6f5abb 100755 --- a/garlic/stages/runexp/runexp +++ b/garlic/stages/runexp/runexp @@ -11,9 +11,9 @@ fi user=$(id -un) group=$(id -gn) -export GARLIC_OUT="/gpfs/projects/bsc15/garlic/out/$user" +export GARLIC_OUT="/gpfs/projects/bsc15/garlic/$user/out" mkdir -p "$GARLIC_OUT" -export GARLIC_INDEX="/gpfs/projects/bsc15/garlic/index/$user" +export GARLIC_INDEX="/gpfs/projects/bsc15/garlic/$user/index" mkdir -p "$GARLIC_INDEX" export GARLIC_USER="$user" cd "$GARLIC_OUT" diff --git a/garlic/stages/unit.nix b/garlic/stages/unit.nix index 15db8fb..31fe580 100644 --- a/garlic/stages/unit.nix +++ b/garlic/stages/unit.nix @@ -74,10 +74,10 @@ stdenv.mkDerivation { rm -f "\$GARLIC_INDEX/${conf.unitName}" \ "\$GARLIC_INDEX/${conf.expName}" - ln -Tfs "../../out/\$GARLIC_UNIT" \ + ln -Tfs "../out/\$GARLIC_UNIT" \ "\$GARLIC_INDEX/${conf.unitName}" - ln -Tfs "../../out/\$GARLIC_EXPERIMENT" \ + ln -Tfs "../out/\$GARLIC_EXPERIMENT" \ "\$GARLIC_INDEX/${conf.expName}" if [ -e "\$GARLIC_UNIT" ]; then From e778ad75b30997b01e1d41fdfb51b6f4702593f8 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 30 Oct 2020 10:56:07 +0100 Subject: [PATCH 304/987] Reorder garlic sets --- overlay.nix | 46 +++++++++++++++++++++++----------------------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/overlay.nix b/overlay.nix index 575c542..6a0286e 100644 --- a/overlay.nix +++ b/overlay.nix @@ -277,6 +277,29 @@ let mpi = self.bsc.mpi; }; + hist = callPackage ./garlic/pp/hist { }; + + tool = callPackage ./garlic/sh/default.nix { + sshHost = "mn1"; + }; + + # Post processing tools + pp = with self.bsc.garlicTools; rec { + store = callPackage ./garlic/pp/store.nix { }; + resultFromTrebuchet = trebuchetStage: (store { + experimentStage = getExperimentStage trebuchetStage; + inherit trebuchetStage; + }); + timetable = callPackage ./garlic/pp/timetable.nix { }; + rPlot = callPackage ./garlic/pp/rplot.nix { }; + timetableFromTrebuchet = tre: timetable (resultFromTrebuchet tre); + mergeDatasets = callPackage ./garlic/pp/merge.nix { }; + + # Takes a list of experiments and returns a file that contains + # all timetable results from the experiments. + merge = exps: mergeDatasets (map timetableFromTrebuchet exps); + }; + # Experiments exp = { nbody = rec { @@ -310,29 +333,6 @@ let }; }; - hist = callPackage ./garlic/pp/hist { }; - - tool = callPackage ./garlic/sh/default.nix { - sshHost = "mn1"; - }; - - # Post processing tools - pp = with self.bsc.garlicTools; rec { - store = callPackage ./garlic/pp/store.nix { }; - resultFromTrebuchet = trebuchetStage: (store { - experimentStage = getExperimentStage trebuchetStage; - inherit trebuchetStage; - }); - timetable = callPackage ./garlic/pp/timetable.nix { }; - rPlot = callPackage ./garlic/pp/rplot.nix { }; - timetableFromTrebuchet = tre: timetable (resultFromTrebuchet tre); - mergeDatasets = callPackage ./garlic/pp/merge.nix { }; - - # Takes a list of experiments and returns a file that contains - # all timetable results from the experiments. - merge = exps: mergeDatasets (map timetableFromTrebuchet exps); - }; - # Datasets used in the figures ds = with self.bsc.garlic; with pp; { nbody = with exp.nbody; { From c3988dacd2531e11612ea6e625423d1981021356 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 30 Oct 2020 12:22:19 +0100 Subject: [PATCH 305/987] WIP: documentation for the pp pipeline --- garlic/doc/Makefile | 8 ++--- garlic/doc/pp.ms | 75 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 79 insertions(+), 4 deletions(-) create mode 100644 garlic/doc/pp.ms diff --git a/garlic/doc/Makefile b/garlic/doc/Makefile index 36e6eeb..6ae246b 100644 --- a/garlic/doc/Makefile +++ b/garlic/doc/Makefile @@ -1,8 +1,8 @@ -all: execution.pdf execution.txt +all: execution.pdf execution.txt pp.pdf pp.txt %.pdf: %.ms - groff -ms -t -Tpdf $^ > $@ - #killall -HUP mupdf + groff -ms -t -p -Tpdf $^ > $@ + -killall -HUP mupdf %.txt: %.ms - groff -ms -t -Tutf8 $^ > $@ + groff -ms -t -p -Tutf8 $^ > $@ diff --git a/garlic/doc/pp.ms b/garlic/doc/pp.ms new file mode 100644 index 0000000..d3f1f71 --- /dev/null +++ b/garlic/doc/pp.ms @@ -0,0 +1,75 @@ +.TL +Garlic: experiment results +.AU +Rodrigo Arias Mallo +.AI +Barcelona Supercomputing Center +.\"##################################################################### +.nr GROWPS 3 +.nr PSINCR 1.5p +.\".nr PD 0.5m +.nr PI 2m +\".2C +.\"##################################################################### +.LP +Consider a program of interest for which an experiment has been designed to +measure some properties. When the experiment is executed, it will generate some +results which are generally non-deterministic. The experimenter may want to +present some information in a visual plot or graph based on these results. +.PP +In this escenario, the experiment depends on the program\[em]any +changes in the program will cause nix to build the experiment again using the +updated program. The results will also depend on the experiment, and +the graph on the results. This chain of dependencies can be shown in +the following dependency tree: +.PS +right +circlerad=0.22; arrowhead=7; +circle "Prog" +arrow +circle "Exp" +arrow +circle "Result" +arrow +circle "Graph" +.PE +Ideally, the dependencies should be handled by nix, so it can detect any +change and rebuild the necessary parts automatically. Unfortunately, nix +is not able to build R as a derivation directly as it requires access +to the +.I "target cluster" +with several user accounts. In addition, the results are often +non-deterministic so the graph G cannot depend on the content of the +results. +.PP +In order to let several users use the results from a cache, we use the +.I "nix store" +to make them available for read only. To generate the results from the +experiment, we add some extra steps that must be executed manually. +.PS +right +circlerad=0.22; arrowhead=7; +circle "Prog" +arrow +E: circle "Exp" +RUN: circle "Run" at E + (0.8,-0.5) +FETCH: circle "Fetch" at E + (1.6,-0.5) +R: circle "Result" at E + (2.4,0) +arrow +G: circle "Graph" +arrow dashed from E to RUN chop +arrow dashed from RUN to FETCH chop +arrow dashed from FETCH to R chop +arrow from E to R chop +.PE +The run and fetch steps are provided by the helper tool +.I garlic , +which launches the experiment using the user credential at the +.I "target cluster" +and then fetches the results, placing them in a directory known by nix. +Is the directory is not found, nix will issue a message to suggest the +user to launch the experiment and it will fail to build the result +derivation. When the result is successfully built by any user, the +derivation won't need to be rebuilt again until the experiment changes, +as the hash only depends on the experiment and not on the contents of +the results. From f1f75c1c116a316e337cfa66ae0ef919476e570f Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 30 Oct 2020 12:41:51 +0100 Subject: [PATCH 306/987] Rearrange experiment datasets --- overlay.nix | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/overlay.nix b/overlay.nix index 6a0286e..2dbd50c 100644 --- a/overlay.nix +++ b/overlay.nix @@ -336,14 +336,10 @@ let # Datasets used in the figures ds = with self.bsc.garlic; with pp; { nbody = with exp.nbody; { - test = merge [ test ]; - baseline = merge [ baseline ]; - jemalloc = merge [ jemalloc ]; - freeCpu = merge [ freeCpu ]; - cmp = { - jemalloc = merge [ baseline jemalloc ]; - freeCpu = merge [ baseline freeCpu ]; - }; + test = merge [ test ]; + baseline = merge [ baseline ]; + jemalloc = merge [ baseline jemalloc ]; + freeCpu = merge [ baseline freeCpu ]; }; }; From 5eea48c5b0776f91e2eed16ea3bf313d210ec685 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 30 Oct 2020 16:30:06 +0100 Subject: [PATCH 307/987] Add exp and unit name to nbody tampi experiment --- garlic/exp/nbody/tampi.nix | 3 +++ 1 file changed, 3 insertions(+) diff --git a/garlic/exp/nbody/tampi.nix b/garlic/exp/nbody/tampi.nix index b729289..dcd0c9b 100644 --- a/garlic/exp/nbody/tampi.nix +++ b/garlic/exp/nbody/tampi.nix @@ -23,6 +23,9 @@ let # Generate the complete configuration for each unit genConf = with bsc; c: targetMachine.config // rec { + expName = "nbody.tampi"; + unitName = "${expName}.nb-${toString nblocks}"; + inherit (machineConfig) hw; # nbody options inherit particles; From 376ab9b32a4f1dd824a7a703b2e6f2e3c1693e87 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 2 Nov 2020 10:36:59 +0100 Subject: [PATCH 308/987] nbody: Remove test and use baseline --- overlay.nix | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/overlay.nix b/overlay.nix index 2dbd50c..71bff61 100644 --- a/overlay.nix +++ b/overlay.nix @@ -303,7 +303,6 @@ let # Experiments exp = { nbody = rec { - test = callPackage ./garlic/exp/nbody/test.nix { }; tampi = callPackage ./garlic/exp/nbody/tampi.nix { }; # Experiment variants @@ -336,7 +335,6 @@ let # Datasets used in the figures ds = with self.bsc.garlic; with pp; { nbody = with exp.nbody; { - test = merge [ test ]; baseline = merge [ baseline ]; jemalloc = merge [ baseline jemalloc ]; freeCpu = merge [ baseline freeCpu ]; @@ -347,9 +345,9 @@ let fig = with self.bsc.garlic; { nbody = { - test = pp.rPlot { - script = ./garlic/fig/nbody/test.R; - dataset = ds.nbody.test; + baseline = pp.rPlot { + script = ./garlic/fig/nbody/baseline.R; + dataset = ds.nbody.baseline; }; jemalloc = pp.rPlot { From de463669859e5c60cfaab67863d1cb1a2fef0d6c Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 2 Nov 2020 10:37:22 +0100 Subject: [PATCH 309/987] nbody: plot nb/cpu rather than nb --- garlic/fig/nbody/{test.R => baseline.R} | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) rename garlic/fig/nbody/{test.R => baseline.R} (81%) diff --git a/garlic/fig/nbody/test.R b/garlic/fig/nbody/baseline.R similarity index 81% rename from garlic/fig/nbody/test.R rename to garlic/fig/nbody/baseline.R index 3db1610..38e6eec 100644 --- a/garlic/fig/nbody/test.R +++ b/garlic/fig/nbody/baseline.R @@ -22,6 +22,7 @@ df = select(dataset, config.nblocks, config.hw.cpusPerSocket, time) %>% df = df %>% mutate(blocksPerCpu = nblocks / cpusPerSocket) df$nblocks = as.factor(df$nblocks) +df$blocksPerCpuFactor = as.factor(df$blocksPerCpu) # Normalize the time by the median D=group_by(df, nblocks) %>% @@ -41,10 +42,10 @@ png("box.png", width=w*ppi, height=h*ppi, res=ppi) # # # Create the plot with the normalized time vs nblocks -p = ggplot(data=D, aes(x=nblocks, y=tnorm)) + +p = ggplot(data=D, aes(x=blocksPerCpuFactor, y=tnorm)) + # Labels - labs(x="Blocks", y="Normalized time", + labs(x="Num blocks", y="Normalized time", title=sprintf("Nbody normalized time. Particles=%d", particles), subtitle=input_file) + @@ -55,8 +56,8 @@ p = ggplot(data=D, aes(x=nblocks, y=tnorm)) + #theme_bw() + # Add the maximum allowed error lines - #geom_hline(yintercept=c(-0.01, 0.01), - # linetype="dashed", color="red") + + geom_hline(yintercept=c(-0.01, 0.01), + linetype="dashed", color="red") + # Draw boxplots geom_boxplot() + @@ -69,8 +70,6 @@ p = ggplot(data=D, aes(x=nblocks, y=tnorm)) + theme(legend.position = c(0.85, 0.85)) #+ - # Place each variant group in one separate plot - #facet_wrap(~jemalloc) @@ -83,17 +82,18 @@ dev.off() png("scatter.png", width=w*ppi, height=h*ppi, res=ppi) # ## Create the plot with the normalized time vs nblocks -p = ggplot(D, aes(x=nblocks, y=time)) + +p = ggplot(D, aes(x=blocksPerCpuFactor, y=time)) + - labs(x="Blocks", y="Time (s)", + labs(x="Blocks/CPU", y="Time (s)", title=sprintf("Nbody granularity. Particles=%d", particles), subtitle=input_file) + theme_bw() + theme(plot.subtitle=element_text(size=8)) + theme(legend.position = c(0.5, 0.88)) + - geom_point(shape=21, size=3) # + - #scale_y_continuous(trans=log2_trans()) + geom_point(shape=21, size=3) + + #scale_x_continuous(trans=log2_trans()) + + scale_y_continuous(trans=log2_trans()) # Render the plot print(p) From 0c58bb63b5fa08892f5488ba4bbee948debc770f Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 2 Nov 2020 10:59:36 +0100 Subject: [PATCH 310/987] hpcg: add exp and unit name --- garlic/exp/hpcg/oss.nix | 3 +++ 1 file changed, 3 insertions(+) diff --git a/garlic/exp/hpcg/oss.nix b/garlic/exp/hpcg/oss.nix index 5084504..79ae20d 100644 --- a/garlic/exp/hpcg/oss.nix +++ b/garlic/exp/hpcg/oss.nix @@ -17,6 +17,9 @@ let # Generate the complete configuration for each unit genConf = with bsc; c: targetMachine.config // rec { + expName = "hpcg.oss"; + unitName = "${expName}.nb${toString nblocks}"; + # hpcg options n = c.n; nblocks = c.nblocks; From 62c9da2474e7a3a2752d1e4479336e6661d4aef8 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 2 Nov 2020 11:00:56 +0100 Subject: [PATCH 311/987] Add hpcg oss experiment dataset --- overlay.nix | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/overlay.nix b/overlay.nix index 71bff61..b95766c 100644 --- a/overlay.nix +++ b/overlay.nix @@ -339,6 +339,10 @@ let jemalloc = merge [ baseline jemalloc ]; freeCpu = merge [ baseline freeCpu ]; }; + + hpcg = with exp.hpcg; { + oss = merge [ oss ]; + }; }; # Figures generated from the experiments From f0122d557fbd3c25899c99a2dfc6b2ee1c45bc6d Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 4 Nov 2020 12:56:35 +0100 Subject: [PATCH 312/987] WIP: postprocessing doc --- garlic/doc/Makefile | 14 ++++-- garlic/doc/pp.ms | 119 ++++++++++++++++++++++++++++++++------------ 2 files changed, 96 insertions(+), 37 deletions(-) diff --git a/garlic/doc/Makefile b/garlic/doc/Makefile index 6ae246b..6d99e2d 100644 --- a/garlic/doc/Makefile +++ b/garlic/doc/Makefile @@ -1,8 +1,14 @@ -all: execution.pdf execution.txt pp.pdf pp.txt +all: execution.pdf execution.ascii pp.pdf pp.ascii + +TTYOPT=-rPO=4m -rLL=72m +#TTYOPT=-dpaper=a0 -rPO=4m -rLL=72m %.pdf: %.ms - groff -ms -t -p -Tpdf $^ > $@ + REFER=ref.i groff -ms -t -p -R -Tpdf $^ > $@ -killall -HUP mupdf -%.txt: %.ms - groff -ms -t -p -Tutf8 $^ > $@ +%.utf8: %.ms + REFER=ref.i groff -ms -t -p -R $(TTYOPT) -Tutf8 $^ > $@ + +%.ascii: %.ms + REFER=ref.i groff -ms -t -p -R $(TTYOPT) -Tascii $^ > $@ diff --git a/garlic/doc/pp.ms b/garlic/doc/pp.ms index d3f1f71..7a95ce2 100644 --- a/garlic/doc/pp.ms +++ b/garlic/doc/pp.ms @@ -1,75 +1,128 @@ .TL -Garlic: experiment results +Garlic: the post-processing pipeline .AU Rodrigo Arias Mallo .AI Barcelona Supercomputing Center +.AB +.LP +In this document the stages posterior to the execution of the experiment +are explained. We consider the post-processing pipeline the steps to go +from the generated data from the experiment to a set of plots or tables +that present the data in a human readable form. +.AE .\"##################################################################### .nr GROWPS 3 .nr PSINCR 1.5p .\".nr PD 0.5m .nr PI 2m -\".2C +.\".2C +.R1 +bracket-label " [" ] ", " +accumulate +.R2 .\"##################################################################### +.NH 1 +Introduction +.LP +After the correct execution of an experiment some measurements are +recorded in the results for further investigation. Typically the time of +the execution is measured and presented later in a plot or a table. The +steps to analyze the results and present them in a convenient way is +called the +.I "post-processing pipeline" . +Similarly to the execution pipeline +.[ +garlic execution +.] +where several stages run sequentially, the +post-processing pipeline is also formed by multiple stages executed in +order. +.PP +The rationale behind dividing execution and post-processing is +that usually the experiments are costly to run (they take a long time to +complete) while generating a plot is usually shorter. Refining the plots +multiple times reusing the same experimental results doesn't require the +execution of the complete experiment, so the experimenter can try +multiple ways to present the data in a rapid cycle. +.NH 1 +Fetching the results .LP Consider a program of interest for which an experiment has been designed to -measure some properties. When the experiment is executed, it will generate some -results which are generally non-deterministic. The experimenter may want to -present some information in a visual plot or graph based on these results. -.PP -In this escenario, the experiment depends on the program\[em]any -changes in the program will cause nix to build the experiment again using the -updated program. The results will also depend on the experiment, and -the graph on the results. This chain of dependencies can be shown in -the following dependency tree: +measure some properties that the experimenter wants to present in a +visual plot. When the experiment is launched, the execution +pipeline (EP) is completely executed and it will generate some +results. In this escenario, the execution pipeline depends on the +program\[em]any changes in the program will cause nix to build it again +using the updated program. The results will also depend on the +execution pipeline, and the graph on the results. This chain of +dependencies can be shown in the following dependency graph: +.\"circlerad=0.22; arrowhead=7; .PS right -circlerad=0.22; arrowhead=7; circle "Prog" arrow -circle "Exp" +circle "EP" arrow circle "Result" arrow -circle "Graph" +circle "PP" +arrow +circle "Plot" .PE Ideally, the dependencies should be handled by nix, so it can detect any change and rebuild the necessary parts automatically. Unfortunately, nix -is not able to build R as a derivation directly as it requires access +is not able to build the result as a derivation directly as it requires access to the .I "target cluster" -with several user accounts. In addition, the results are often -non-deterministic so the graph G cannot depend on the content of the -results. -.PP -In order to let several users use the results from a cache, we use the +with several user accounts. In order to let several users reuse the same results from a cache, we +use the .I "nix store" -to make them available for read only. To generate the results from the +to make them available. To generate the results from the experiment, we add some extra steps that must be executed manually. .PS right circlerad=0.22; arrowhead=7; circle "Prog" arrow -E: circle "Exp" -RUN: circle "Run" at E + (0.8,-0.5) -FETCH: circle "Fetch" at E + (1.6,-0.5) +E: circle "EP" +RUN: circle "Run" at E + (0.8,-0.5) dashed +FETCH: circle "Fetch" at E + (1.6,-0.5) dashed R: circle "Result" at E + (2.4,0) arrow -G: circle "Graph" +P: circle "PP" +arrow +circle "Plot" arrow dashed from E to RUN chop arrow dashed from RUN to FETCH chop arrow dashed from FETCH to R chop arrow from E to R chop .PE The run and fetch steps are provided by the helper tool -.I garlic , -which launches the experiment using the user credential at the +.I "garlic(1)" , +which launches the experiment using the user credentials at the .I "target cluster" and then fetches the results, placing them in a directory known by nix. -Is the directory is not found, nix will issue a message to suggest the -user to launch the experiment and it will fail to build the result -derivation. When the result is successfully built by any user, the -derivation won't need to be rebuilt again until the experiment changes, -as the hash only depends on the experiment and not on the contents of -the results. +When the result derivation needs to be built, nix will look in this +directory for the results of the execution. If the directory is not +found, a message is printed to suggest the user to launch the +experiment and the build process is stopped. When the +result is successfully built by any user, is stored in the +.I "nix store" +and it won't need to be rebuilt again until the experiment changes, as +the hash only depends on the experiment and not on the contents of the +results. +.PP +Notice that this mechanism violates the deterministic nature of the nix +store, as from a given input (the experiment) we can generate different +outputs (each result from different executions). We knowingly relaxed +this restriction by providing a guarantee that the results are +equivalent and there is no need to execute an experiment more than once. +.PP +To force the execution of an experiment you can use the +.I rev +attribute which is a number assigned to each experiment +and can be incremented to create copies that only differs on that +number. The experiment hash will change but the experiment will be the +same, as long as the revision number is ignored along the execution +stages. From df4d908f1c3021e7079279642a4119353bf436f4 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 4 Nov 2020 12:57:22 +0100 Subject: [PATCH 313/987] Add more rendered files to ignore --- garlic/doc/.gitignore | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/garlic/doc/.gitignore b/garlic/doc/.gitignore index 292d969..b30e586 100644 --- a/garlic/doc/.gitignore +++ b/garlic/doc/.gitignore @@ -1,2 +1,4 @@ -*.txt +*.utf8 +*.ascii +*.html *.pdf From 634d2040b5b2fb162eaebb08a0babf4a564d5858 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 4 Nov 2020 13:00:42 +0100 Subject: [PATCH 314/987] Add reference index --- garlic/doc/ref.i | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 garlic/doc/ref.i diff --git a/garlic/doc/ref.i b/garlic/doc/ref.i new file mode 100644 index 0000000..d16c09a --- /dev/null +++ b/garlic/doc/ref.i @@ -0,0 +1,4 @@ +%A Rodrigo Arias Mallo +%D 2020 +%K garlic execution +%T Garlic: the execution pipeline From 33682ef48dddb628d4b00108ab892040a44186d7 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 5 Nov 2020 14:52:57 +0100 Subject: [PATCH 315/987] Document the results and pp stages --- garlic/doc/Makefile | 2 +- garlic/doc/pp.ms | 179 ++++++++++++++++++++++++++++++++++++-------- garlic/doc/ref.i | 7 +- 3 files changed, 153 insertions(+), 35 deletions(-) diff --git a/garlic/doc/Makefile b/garlic/doc/Makefile index 6d99e2d..3c60011 100644 --- a/garlic/doc/Makefile +++ b/garlic/doc/Makefile @@ -4,7 +4,7 @@ TTYOPT=-rPO=4m -rLL=72m #TTYOPT=-dpaper=a0 -rPO=4m -rLL=72m %.pdf: %.ms - REFER=ref.i groff -ms -t -p -R -Tpdf $^ > $@ + REFER=ref.i groff -ms -dpaper=a4 -k -t -p -R -Tpdf $^ > $@ -killall -HUP mupdf %.utf8: %.ms diff --git a/garlic/doc/pp.ms b/garlic/doc/pp.ms index 7a95ce2..a36da48 100644 --- a/garlic/doc/pp.ms +++ b/garlic/doc/pp.ms @@ -1,15 +1,14 @@ .TL -Garlic: the post-processing pipeline +Garlic: the postprocess pipeline .AU Rodrigo Arias Mallo .AI Barcelona Supercomputing Center .AB .LP -In this document the stages posterior to the execution of the experiment -are explained. We consider the post-processing pipeline the steps to go -from the generated data from the experiment to a set of plots or tables -that present the data in a human readable form. +This document covers the format used to store the results of the +execution and the postprocess steps used to generate a set of +figures from the results to present the data. .AE .\"##################################################################### .nr GROWPS 3 @@ -20,6 +19,7 @@ that present the data in a human readable form. .R1 bracket-label " [" ] ", " accumulate +move-punctuation .R2 .\"##################################################################### .NH 1 @@ -27,24 +27,64 @@ Introduction .LP After the correct execution of an experiment some measurements are recorded in the results for further investigation. Typically the time of -the execution is measured and presented later in a plot or a table. The -steps to analyze the results and present them in a convenient way is -called the -.I "post-processing pipeline" . -Similarly to the execution pipeline +the execution or other quantities are measured and presented later in a +figure (generally a plot or a table). +The +.I "postprocess pipeline" +consists of all the steps required to create a set of figures from the +results. Similarly to the execution pipeline where several stages run +sequentially, .[ garlic execution .] -where several stages run sequentially, the -post-processing pipeline is also formed by multiple stages executed in -order. +the postprocess pipeline is also formed by multiple stages executed +in order. .PP -The rationale behind dividing execution and post-processing is +The rationale behind dividing execution and postprocess is that usually the experiments are costly to run (they take a long time to -complete) while generating a plot is usually shorter. Refining the plots -multiple times reusing the same experimental results doesn't require the -execution of the complete experiment, so the experimenter can try -multiple ways to present the data in a rapid cycle. +complete) while generating a figure require less time. Refining the +figures multiple times reusing the same experimental results doesn't +require the execution of the complete experiment, so the experimenter +can try multiple ways to present the data without waiting a large delay. +.NH 1 +Results +.LP +The results are generated in the same +.I "target" +machine where the experiment is executed and are stored in the garlic +.I output , +organized into a directory structure following the experiment name, the +unit name and the run number (governed by the +.I control +stage): +.QS +.CW + |-- 6lp88vlj7m8hvvhpfz25p5mvvg7ycflb-experiment + | |-- 8lpmmfix52a8v7kfzkzih655awchl9f1-unit + | | |-- 1 + | | | |-- stderr.log + | | | |-- stdout.log + | | | |-- ... + | | |-- 2 + ... +.QE +In order to provide an easier access to the results, an index is also +created by taking the +.I expName +and +.I unitName +attributes (defined in the experiment configuration) and linking them to +the appropriate experiment and unit directories. These links are +overwritten by the last experiment with the same names so they are only +valid for the last execution. The output and index directories are +placed into a per-user directory, as we cannot guarantee the complete +execution of each unit when multiple users can share units. +.PP +The messages printed to the standard output and error are +are stored in the log files with the same name inside each run +directory. Additional data is sometimes generated by the experiments, +and is found in each run directory. As the generated data can be very +large, is ignored by default when considering the results. .NH 1 Fetching the results .LP @@ -57,8 +97,9 @@ program\[em]any changes in the program will cause nix to build it again using the updated program. The results will also depend on the execution pipeline, and the graph on the results. This chain of dependencies can be shown in the following dependency graph: -.\"circlerad=0.22; arrowhead=7; .PS +circlerad=0.22; +linewid=0.35; right circle "Prog" arrow @@ -74,21 +115,23 @@ Ideally, the dependencies should be handled by nix, so it can detect any change and rebuild the necessary parts automatically. Unfortunately, nix is not able to build the result as a derivation directly as it requires access to the -.I "target cluster" -with several user accounts. In order to let several users reuse the same results from a cache, we +.I "target" +machine with several user accounts. In order to let several users reuse +the same results from a cache, we use the .I "nix store" to make them available. To generate the results from the experiment, we add some extra steps that must be executed manually. .PS -right -circlerad=0.22; arrowhead=7; circle "Prog" arrow +diag=linewid + circlerad; +far=circlerad*3 + linewid*4 E: circle "EP" -RUN: circle "Run" at E + (0.8,-0.5) dashed -FETCH: circle "Fetch" at E + (1.6,-0.5) dashed -R: circle "Result" at E + (2.4,0) +R: circle "Result" at E + (far,0) +RUN: circle "Run" at E + (diag,-diag) dashed +FETCH: circle "Fetch" at R + (-diag,-diag) dashed +move to R.e arrow P: circle "PP" arrow @@ -101,13 +144,13 @@ arrow from E to R chop The run and fetch steps are provided by the helper tool .I "garlic(1)" , which launches the experiment using the user credentials at the -.I "target cluster" -and then fetches the results, placing them in a directory known by nix. -When the result derivation needs to be built, nix will look in this -directory for the results of the execution. If the directory is not -found, a message is printed to suggest the user to launch the -experiment and the build process is stopped. When the -result is successfully built by any user, is stored in the +.I "target" +machine and then fetches the results, placing them in a directory known +by nix. When the result derivation needs to be built, nix will look in +this directory for the results of the execution. If the directory is not +found, a message is printed to suggest the user to launch the experiment +and the build process is stopped. When the result is successfully built +by any user, is stored in the .I "nix store" and it won't need to be rebuilt again until the experiment changes, as the hash only depends on the experiment and not on the contents of the @@ -126,3 +169,73 @@ and can be incremented to create copies that only differs on that number. The experiment hash will change but the experiment will be the same, as long as the revision number is ignored along the execution stages. +.NH 1 +Postprocess stages +.LP +Once the results are completely generated in the +.I "target" +machine there are several stages required to build a set of figures: +.PP +.I fetch \[em] +waits until all the experiment units are completed and then executes the +next stage. This stage is performed by the +.I garlic(1) +tool using the +.I -F +option and also reports the current state of the execution. +.PP +.I store \[em] +copies from the +.I target +machine into the nix store all log files generated by the experiment, +keeping the same directory structure. It tracks the execution state of +each unit and only copies the results once the experiment is complete. +Other files are ignored as they are often very large and not required +for the subsequent stages. +.PP +.I timetable \[em] +converts the results of the experiment into a NDJSON file with one +line per run for each unit. Each line is a valid JSON object, containing +the +.I exp , +.I unit +and +.I run +keys and the unit configuration (as a JSON object) in the +.I config +key. The execution time is captured from the standard output and is +added in the +.I time +key. +.PP +.I merge \[em] +one or more timetable datasets are joined, by simply concatenating them. +This step allows building one dataset to compare multiple experiments in +the same figure. +.PP +.I rPlot \[em] +one ot more figures are generated by a single R script +.[ +r cookbook +.] +which takes as input the previously generated dataset. +The path of the dataset is recorded in the figure as well, which +contains enough information to determine all the stages in the execution +and postprocess pipelines. +.SH 1 +Appendix A: Current setup +.LP +As of this moment, the +.I build +machine which contains the nix store is +.I xeon07 +and the +.I "target" +machine used to run the experiments is Mare Nostrum 4 with the +.I output +directory placed at +.CW /gpfs/projects/bsc15/garlic . +By default, the experiment results are never deleted from the +.I target +so you may want to remove the ones already stored in the nix store to +free space. diff --git a/garlic/doc/ref.i b/garlic/doc/ref.i index d16c09a..1bd3e70 100644 --- a/garlic/doc/ref.i +++ b/garlic/doc/ref.i @@ -1,4 +1,9 @@ %A Rodrigo Arias Mallo %D 2020 -%K garlic execution %T Garlic: the execution pipeline + +%A Winston Chang +%T R Graphics Cookbook: Practical Recipes for Visualizing Data +%D 2020 +%I O'Reilly Media +%O 2nd edition From de6b4864eefb218cb87785586dca58314155e90b Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 5 Nov 2020 19:29:40 +0100 Subject: [PATCH 316/987] Add garlic tool manual --- garlic/sh/garlic.1 | 61 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 garlic/sh/garlic.1 diff --git a/garlic/sh/garlic.1 b/garlic/sh/garlic.1 new file mode 100644 index 0000000..6d455ab --- /dev/null +++ b/garlic/sh/garlic.1 @@ -0,0 +1,61 @@ +.\" The following commands are required for all man pages. +.Dd Nov 5, 2020 +.Dt garlic 1 +.Os Linux +.Sh NAME +.Nm garlic +.Nd Garlic benchmark tool +.Sh SYNOPSIS +.Nm garlic +.Op Fl RFvw +.Ar experiment +.Sh DESCRIPTION +.Nm +is a program to handle tasks related with the experiments of the Garlic +benchmark. The +.Ar experiment +argument is a path to a valid trebuchet or experiment stage script. The +specified operations are executed sequentially and at +least one must be selected from: +.Bl -tag -width Ds -compact +.Pp +.It Fl R +launches the +.Ar experiment . +.Pp +.It Fl F +waits until the +.Ar experiment +is completed and then fetches the results +into the nix store. +.El +.Pp +Additionally, the following options are available: +.Bl -tag -width Ds -compact +.Pp +.It Fl v +be more verbose. +.Pp +.It Fl w +don't wait for the complete results when fetching; fails if they are not +ready. +.El +.\" This next command is for sections 1, 6, 7, and 8 only. +.\" .Sh ENVIRONMENT +.\" .Sh FILES +.Sh EXIT STATUS +.Ex -std +.\" .Sh EXAMPLES +.\" This next command is for sections 1, 4, 6, 7, 8, and 9 only +.\" (fprintf/stderr type diagnostics). +.\" .Sh DIAGNOSTICS +.\" .Sh COMPATIBILITY +.\" This next command is for sections 2, 3, 4, and 9 only +.\" (settings of the errno variable). +.\" .Sh ERRORS +.\" .Sh SEE ALSO +.\" .Sh STANDARDS +.\" .Sh HISTORY +.\" .Sh AUTHORS +.\" .Sh CAVEATS +.\" .Sh BUGS From 476c2f20f0584161774a64aaa6611bc288aab9f3 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 5 Nov 2020 19:31:21 +0100 Subject: [PATCH 317/987] Add manual and update the garlic tool --- garlic/sh/default.nix | 2 ++ garlic/sh/garlic | 71 ++++++++++++++++++++----------------------- 2 files changed, 35 insertions(+), 38 deletions(-) diff --git a/garlic/sh/default.nix b/garlic/sh/default.nix index 7c364dc..ed1ab77 100644 --- a/garlic/sh/default.nix +++ b/garlic/sh/default.nix @@ -31,5 +31,7 @@ in mkdir -p $out/bin cp garlic $out/bin chmod +x $out/bin/garlic + mkdir -p $out/share/man/man1 + cp garlic.1 $out/share/man/man1 ''; } diff --git a/garlic/sh/garlic b/garlic/sh/garlic index e7ccb05..c759772 100755 --- a/garlic/sh/garlic +++ b/garlic/sh/garlic @@ -5,13 +5,27 @@ garlicTemp=@garlicTemp@ sshHost=@sshHost@ PATH=@PATH@ -usage() { echo "Usage: garlic [-RFwq] [-e experiment] [-t trebuchet]" 1>&2; exit 1; } +#garlicPrefix=/mnt/garlic +#garlicTemp=/tmp/garlic +#sshHost=mn1 +#PATH=/nix/store/yjkcxbf0y1jdlbj0axghlg2fndc4dqkz-patchelf-0.11/bin:/nix/store/6is25fyx29d731idycngl7qmgcax5xng-gcc-wrapper-9.3.0/bin:/nix/store/h986r9i2j9x5z8i5g8aj0z8jdd129wyx-gcc-9.3.0/bin:/nix/store/48dypl6qdsj3vdzh7hjg5qnngfpdcz7h-glibc-2.31-bin/bin:/nix/store/zmac3n79ayg4fdqgznmi2v3lmcprzx4g-coreutils-8.31/bin:/nix/store/dmnnqr6j7kqgcr357b5qwiwvjvg2yyhd-binutils-wrapper-2.31.1/bin:/nix/store/gmi6xrkl95h6iypv00dvdpm3f4md9i6i-binutils-2.31.1/bin:/nix/store/48dypl6qdsj3vdzh7hjg5qnngfpdcz7h-glibc-2.31-bin/bin:/nix/store/zmac3n79ayg4fdqgznmi2v3lmcprzx4g-coreutils-8.31/bin:/nix/store/a41ky6icdgxa54jzps32gfgcrdyx94hs-rsync-3.1.3/bin:/nix/store/sxll2dlamfm32xd2nyfx7v8mlnx0gxks-openssh-8.3p1/bin:/nix/store/3gp7gv5z9jj3g92czxadvgphpwiviv28-nix-2.3.7/bin:/nix/store/zmac3n79ayg4fdqgznmi2v3lmcprzx4g-coreutils-8.31/bin:/nix/store/f2hn65ksj194nmy58nrjikv9r9w25irh-findutils-4.7.0/bin:/nix/store/m39n3m5c7r22b3ma2phnwmp0jj8a5jja-diffutils-3.7/bin:/nix/store/ray7jgwsr5xbxp28wvr427vywd08nz9s-gnused-4.8/bin:/nix/store/gzc092gzsanvym4c6sjgh22dsh9fzj4s-gnugrep-3.4/bin:/nix/store/mn412q9rz9afdrhl9v2ybf605r91wzl2-gawk-5.1.0/bin:/nix/store/xca341k5x5b4hcmi310gjhdlgqm4l56m-gnutar-1.32/bin:/nix/store/zvb8qad72bz6j7ia60dcsf3dfncxxqc7-gzip-1.10/bin:/nix/store/9pb8zp3zyykw09rg60f2nv32plamhd7h-bzip2-1.0.6.0.1-bin/bin:/nix/store/fm2p1d8w9sx4gbaf8qfv2rsailsyhvm3-gnumake-4.3/bin:/nix/store/npfsrhkjww5q7sax7p7ijcrj3wlbrxn7-bash-4.4-p23/bin:/nix/store/72m0m8v6mbp58vbngjgv5pn2scqhs6kk-patch-2.7.6/bin:/nix/store/7vh7fckk2srlkmmkfhs9y85icwm9rhj5-xz-5.2.5-bin/bin -trebuchetFromExperiment() { - nix-store -q --referrers $1 | grep trebuchet -} -experimentFromTrebuchet() { - nix-store -qR $1 | grep experiment +usage() { echo "Usage: garlic [-RFwv] experiment" 1>&2; exit 1; } + +findClosure() { + what=$1 + from=$2 + mexp=$(nix-store -qR "$from" | grep -E -- "$what") + n=$(echo "$mexp" | awk 'BEGIN { count=0 } NF { count++ } END { print count }') + if [ $n -eq 0 ]; then + >&2 echo "$exp: $what not found" + exit 1 + fi + if [ $n -gt 1 ]; then + >&2 echo "$exp: multiple $what found" + exit 1 + fi + echo "$mexp" } drvFromOutput() { @@ -136,62 +150,43 @@ do_run() { } waitResults=1 -verbose=1 +verbose= operation= target= enableRun= enableFetch= -while getopts "qwRFe:t:" o; do +while getopts "vwRF" o; do case "${o}" in - e) experiment=${OPTARG} ;; - t) trebuchet=${OPTARG} ;; R) enableRun=1 ;; F) enableFetch=1 ;; w) waitResults=0 ;; - q) verbose= ;; + v) verbose=1 ;; *) usage ;; esac done shift $((OPTIND-1)) -#target="$1" +ref="$1" -if [ -z "$trebuchet" -a -z "$experiment" ]; then - >&2 echo "missing trebuchet or experiment" - usage -fi if [ -z "$enableRun" -a -z "$enableFetch" ]; then >&2 echo "missing operation" usage fi -#if [ -z "$target" ]; then -# >&2 echo "missing target" -# usage -#fi - -#trebuchet=$(nix-build -A "exp.$target") -#checkTrebuchet $trebuchet -#experiment=$(experimentFromTrebuchet $trebuchet) -#checkExperiment $experiment - -if [ ! -z "$trebuchet" ]; then - checkTrebuchet $trebuchet - trebuchet=$(readlink -f $trebuchet) - experiment=$(experimentFromTrebuchet $trebuchet) - checkExperiment $experiment -else - checkExperiment $experiment - experiment=$(readlink -f $experiment) - trebuchet=$(trebuchetFromExperiment $experiment) - checkTrebuchet $trebuchet +if [ -z "$ref" ]; then + >&2 echo "missing experiment" + usage fi +experiment=$(findClosure "-experiment$" "$ref") +trebuchet=$(findClosure "-trebuchet$" "$ref") + +checkTrebuchet $trebuchet +checkExperiment $experiment + trebuchetDrv=$(drvFromOutput $trebuchet) experimentDrv=$(drvFromOutput $experiment) if [ $enableRun ]; then do_run; fi if [ $enableFetch ]; then do_fetch; fi - - From d7be13f88d1261e9e850e29a7db78edc9c786580 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 5 Nov 2020 19:38:45 +0100 Subject: [PATCH 318/987] Update garlic options in store stage --- garlic/pp/store.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/garlic/pp/store.nix b/garlic/pp/store.nix index 20178cb..a7fd38e 100644 --- a/garlic/pp/store.nix +++ b/garlic/pp/store.nix @@ -39,9 +39,9 @@ in echo "$exp: not found" echo "Run the experiment and fetch the results with:" echo - #echo " garlic -RF -t ${trebuchetStage}" - echo -e "\e[30;48;5;2mgarlic -RF -t ${trebuchetStage}\e[0m" + echo -e "\e[30;48;5;2mgarlic -RFv ${trebuchetStage}\e[0m" echo + echo "See garlic(1) for more details." echo "cannot continue building $out, aborting" exit 1 fi From 5bd042ef67b2f55f6537e48e03e5bb0436e3f88e Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 5 Nov 2020 19:43:39 +0100 Subject: [PATCH 319/987] nbody: mark the points with bad std --- garlic/fig/nbody/baseline.R | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/garlic/fig/nbody/baseline.R b/garlic/fig/nbody/baseline.R index 38e6eec..b7c8a29 100644 --- a/garlic/fig/nbody/baseline.R +++ b/garlic/fig/nbody/baseline.R @@ -26,7 +26,13 @@ df$blocksPerCpuFactor = as.factor(df$blocksPerCpu) # Normalize the time by the median D=group_by(df, nblocks) %>% - mutate(tnorm = time / median(time) - 1) + mutate(tnorm = time / median(time) - 1) %>% + mutate(bad = max(ifelse(abs(tnorm) >= 0.01, 1, 0))) + +D$bad = as.factor(D$bad) + +#D$bad = as.factor(ifelse(abs(D$tnorm) >= 0.01, 2, +# ifelse(abs(D$tnorm) >= 0.005, 1, 0))) bs_unique = unique(df$nblocks) nbs=length(bs_unique) @@ -42,13 +48,14 @@ png("box.png", width=w*ppi, height=h*ppi, res=ppi) # # # Create the plot with the normalized time vs nblocks -p = ggplot(data=D, aes(x=blocksPerCpuFactor, y=tnorm)) + +p = ggplot(data=D, aes(x=blocksPerCpuFactor, y=tnorm, color=bad)) + # Labels labs(x="Num blocks", y="Normalized time", title=sprintf("Nbody normalized time. Particles=%d", particles), subtitle=input_file) + + # Center the title #theme(plot.title = element_text(hjust = 0.5)) + @@ -57,18 +64,19 @@ p = ggplot(data=D, aes(x=blocksPerCpuFactor, y=tnorm)) + # Add the maximum allowed error lines geom_hline(yintercept=c(-0.01, 0.01), - linetype="dashed", color="red") + + linetype="dashed", color="gray") + # Draw boxplots geom_boxplot() + + scale_color_manual(values=c("black", "brown")) + #scale_y_continuous(breaks = scales::pretty_breaks(n = 10)) + theme_bw() + theme(plot.subtitle=element_text(size=8)) + - - theme(legend.position = c(0.85, 0.85)) #+ + theme(legend.position = "none") + #theme(legend.position = c(0.85, 0.85)) From 9e477a2313f9dbd0e0b60a37b37868c4b228421b Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 5 Nov 2020 19:46:34 +0100 Subject: [PATCH 320/987] hpcg: smaller input size --- garlic/exp/hpcg/oss.nix | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/garlic/exp/hpcg/oss.nix b/garlic/exp/hpcg/oss.nix index 79ae20d..fce3d2c 100644 --- a/garlic/exp/hpcg/oss.nix +++ b/garlic/exp/hpcg/oss.nix @@ -11,7 +11,10 @@ with stdenv.lib; let # Initial variable configuration varConf = with bsc; { - n = [ { x = 256; y = 288; z = 288; } ]; + # FIXME: Temporally reduce the input size until we can load a precomputed + # input in each run, otherwise the execution time is very large. + n = [ { x = 104; y = 104; z = 104; } ]; + #n = [ { x = 256; y = 288; z = 288; } ]; nblocks = [ 12 24 48 96 192 384 ]; }; From 7a80d1ca98c4d4da82ae635a0310510ba1bb4bb1 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 5 Nov 2020 19:52:37 +0100 Subject: [PATCH 321/987] heat: Use clang by default --- garlic/apps/heat/default.nix | 39 +++++++++++++++++++++++++----------- overlay.nix | 18 +++++++++++++---- 2 files changed, 41 insertions(+), 16 deletions(-) diff --git a/garlic/apps/heat/default.nix b/garlic/apps/heat/default.nix index c249b41..8fcf324 100644 --- a/garlic/apps/heat/default.nix +++ b/garlic/apps/heat/default.nix @@ -1,32 +1,47 @@ { stdenv -, nanos6 , mpi , tampi -, mcxx -, icc +, clangOmpss2 +, bsx ? 1024 +, bsy ? 1024 }: stdenv.mkDerivation rec { name = "heat"; + extension = if (bsx == bsy) + then "${toString bsx}bs.exe" + else "${toString bsx}x${toString bsy}bs.exe"; - src = builtins.fetchGit { - url = "ssh://git@bscpm02.bsc.es/benchmarks/ompss-2/heat-conflict-kevin.git"; - #rev = "25fde23e5ad5f5e2e58418ed269bc2b44642aa17"; - ref = "master"; - }; + variant = "heat_ompss"; + target = "${variant}.${extension}"; + + makeFlags = [ + "BSX=${toString bsx}" + "BSY=${toString bsy}" + target + ]; + + src = ~/heat; + #src = builtins.fetchGit { + # url = "ssh://git@bscpm02.bsc.es/garlic/apps/heat.git"; + # ref = "garlic"; + #}; buildInputs = [ - nanos6 mpi - icc + clangOmpss2 tampi - mcxx ]; + programPath = "/bin/${target}"; + installPhase = '' mkdir -p $out/bin - cp heat_* $out/bin/ + cp ${target} $out/bin/ + + mkdir -p $out/etc + cp heat.conf $out/etc/ ''; } diff --git a/overlay.nix b/overlay.nix index b95766c..6e97e96 100644 --- a/overlay.nix +++ b/overlay.nix @@ -238,10 +238,20 @@ let }; -# heat = callPackage ./garlic/apps/heat { -# stdenv = pkgs.gcc7Stdenv; -# mpi = intel-mpi; -# tampi = tampi; + heat = callPackage ./garlic/apps/heat/default.nix { }; +# heat = callPackage ./garlic/apps/heat/default.nix { +# # FIXME: The heat program must be able to compile with gcc9 and newer +# stdenv = self.gcc7Stdenv; +# #mpi = intel-mpi; +# #tampi = tampi; +# +# # FIXME: Nanos6 fails to load if we are not using a compatible stdc++ +# # version, so we use the same provided by gcc7 +# mcxx = self.bsc.mcxx.override { +# nanos6 = self.bsc.nanos6.override { +# stdenv = self.gcc7Stdenv; +# }; +# }; # }; # # lulesh = callPackage ./garlic/apps/lulesh { From 074a75facb946b0838c891ebd9b04a23f76c3e88 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 5 Nov 2020 19:53:38 +0100 Subject: [PATCH 322/987] saiph: name the experiment and units in numcomm --- garlic/exp/saiph/numcomm.nix | 3 +++ 1 file changed, 3 insertions(+) diff --git a/garlic/exp/saiph/numcomm.nix b/garlic/exp/saiph/numcomm.nix index 47ab513..24a66e1 100644 --- a/garlic/exp/saiph/numcomm.nix +++ b/garlic/exp/saiph/numcomm.nix @@ -16,6 +16,9 @@ let # Generate the complete configuration for each unit genConf = with bsc; c: targetMachine.config // rec { + expName = "saiph.numcomm"; + unitName = "${expName}.nc-${toString numComm}"; + # saiph options devMode = false; inherit (c) numComm; From 11ac02da08d8f3fd87ec62d49369a17031334d05 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 5 Nov 2020 19:56:26 +0100 Subject: [PATCH 323/987] heat: Add test experiment and plot --- garlic/exp/heat/test.nix | 66 ++++++++++++++++++++++++++++ garlic/fig/heat/test.R | 95 ++++++++++++++++++++++++++++++++++++++++ overlay.nix | 18 ++++++-- 3 files changed, 176 insertions(+), 3 deletions(-) create mode 100644 garlic/exp/heat/test.nix create mode 100644 garlic/fig/heat/test.R diff --git a/garlic/exp/heat/test.nix b/garlic/exp/heat/test.nix new file mode 100644 index 0000000..a2d0852 --- /dev/null +++ b/garlic/exp/heat/test.nix @@ -0,0 +1,66 @@ +{ + stdenv +, stdexp +, bsc +, targetMachine +, stages +}: + +with stdenv.lib; + +let + # Initial variable configuration + varConf = with bsc; { + bsx = [ 1024 2048 4096 ]; + }; + + machineConfig = targetMachine.config; + + # Generate the complete configuration for each unit + genConf = with bsc; c: targetMachine.config // rec { + expName = "heat"; + unitName = "${expName}.bsx-${toString bsx}"; + inherit (machineConfig) hw; + + # heat options + inherit (c) bsx; + timesteps = 10; + + # Repeat the execution of each unit 30 times + loops = 10; + + # Resources + qos = "debug"; + ntasksPerNode = 1; + nodes = 1; + time = "02:00:00"; + # Assign one socket to each task (only one process) + cpuBind = "verbose,sockets"; + jobName = unitName; + }; + + # Compute the array of configurations + configs = stdexp.buildConfigs { + inherit varConf genConf; + }; + + exec = {nextStage, conf, ...}: with conf; stages.exec { + inherit nextStage; + argv = [ "-s" 1024 "-t" timesteps ]; + env = '' + export LD_DEBUG=libs + export NANOS6_LOADER_VERBOSE=1 + cp ${nextStage}/etc/heat.conf . + ''; + }; + + program = {nextStage, conf, ...}: with conf; + bsc.garlic.apps.heat.override { + inherit bsx; + }; + + pipeline = stdexp.stdPipeline ++ [ exec program ]; + +in + + stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/fig/heat/test.R b/garlic/fig/heat/test.R new file mode 100644 index 0000000..cbf3295 --- /dev/null +++ b/garlic/fig/heat/test.R @@ -0,0 +1,95 @@ +library(ggplot2) +library(dplyr) +library(scales) +library(jsonlite) + +args=commandArgs(trailingOnly=TRUE) + +# Read the timetable from args[1] +input_file = "input.json" +if (length(args)>0) { input_file = args[1] } + +# Load the dataset in NDJSON format +dataset = jsonlite::stream_in(file(input_file)) %>% + jsonlite::flatten() + + +# We only need the nblocks and time +df = select(dataset, config.bsx, time) %>% + rename(bsx=config.bsx) + +df$bsx = as.factor(df$bsx) + +# Normalize the time by the median +D=group_by(df, bsx) %>% + mutate(tnorm = time / median(time) - 1) + +print(D) + +ppi=300 +h=5 +w=5 + +png("box.png", width=w*ppi, height=h*ppi, res=ppi) +# +# +# +# Create the plot with the normalized time vs nblocks +p = ggplot(data=D, aes(x=bsx, y=tnorm)) + + + # Labels + labs(x="bsx", y="Normalized time", + title=sprintf("Heat normalized time"), + subtitle=input_file) + + + # Center the title + #theme(plot.title = element_text(hjust = 0.5)) + + + # Black and white mode (useful for printing) + #theme_bw() + + + # Add the maximum allowed error lines + geom_hline(yintercept=c(-0.01, 0.01), + linetype="dashed", color="red") + + + # Draw boxplots + geom_boxplot() + + + #scale_y_continuous(breaks = scales::pretty_breaks(n = 10)) + + + theme_bw() + + + theme(plot.subtitle=element_text(size=8)) + + + theme(legend.position = c(0.85, 0.85)) #+ + + + + +# Render the plot +print(p) + +## Save the png image +dev.off() +# +png("scatter.png", width=w*ppi, height=h*ppi, res=ppi) +# +## Create the plot with the normalized time vs nblocks +p = ggplot(D, aes(x=bsx, y=time)) + + + labs(x="bsx", y="Time (s)", + title=sprintf("Heat granularity"), + subtitle=input_file) + + theme_bw() + + theme(plot.subtitle=element_text(size=8)) + + theme(legend.position = c(0.5, 0.88)) + + + geom_point(shape=21, size=3) + + #scale_x_continuous(trans=log2_trans()) + + scale_y_continuous(trans=log2_trans()) + +# Render the plot +print(p) + +# Save the png image +dev.off() diff --git a/overlay.nix b/overlay.nix index 6e97e96..7d6fd1b 100644 --- a/overlay.nix +++ b/overlay.nix @@ -340,6 +340,10 @@ let mpi_omp = callPackage ./garlic/exp/hpcg/mpi+omp.nix { }; oss = callPackage ./garlic/exp/hpcg/oss.nix { }; }; + + heat = { + test = callPackage ./garlic/exp/heat/test.nix { }; + }; }; # Datasets used in the figures @@ -353,27 +357,35 @@ let hpcg = with exp.hpcg; { oss = merge [ oss ]; }; + + heat = with exp.heat; { + test = merge [ test ]; + }; }; # Figures generated from the experiments fig = with self.bsc.garlic; { nbody = { - baseline = pp.rPlot { script = ./garlic/fig/nbody/baseline.R; dataset = ds.nbody.baseline; }; - jemalloc = pp.rPlot { script = ./garlic/fig/nbody/jemalloc.R; dataset = ds.nbody.jemalloc; }; - freeCpu = pp.rPlot { script = ./garlic/fig/nbody/freeCpu.R; dataset = ds.nbody.freeCpu; }; + }; + + heat = { + test = with ds.heat; pp.rPlot { + script = ./garlic/fig/heat/test.R; + dataset = test; + }; }; }; }; From 9d878eeb4ab19a7d343456d4cadd4aaa455dbf7a Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 5 Nov 2020 19:58:01 +0100 Subject: [PATCH 324/987] saiph: add dataset for numcomm --- overlay.nix | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/overlay.nix b/overlay.nix index 7d6fd1b..cee78b2 100644 --- a/overlay.nix +++ b/overlay.nix @@ -358,6 +358,10 @@ let oss = merge [ oss ]; }; + saiph = with exp.saiph; { + numcomm = merge [ numcomm ]; + }; + heat = with exp.heat; { test = merge [ test ]; }; From dd0823876a287cfe3ee30f293b05ceefcff7e6d7 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 5 Nov 2020 19:59:47 +0100 Subject: [PATCH 325/987] hpcg: add plot for oss experiment --- garlic/fig/hpcg/oss.R | 102 ++++++++++++++++++++++++++++++++++++++++++ overlay.nix | 6 +++ 2 files changed, 108 insertions(+) create mode 100644 garlic/fig/hpcg/oss.R diff --git a/garlic/fig/hpcg/oss.R b/garlic/fig/hpcg/oss.R new file mode 100644 index 0000000..73d1659 --- /dev/null +++ b/garlic/fig/hpcg/oss.R @@ -0,0 +1,102 @@ +library(ggplot2) +library(dplyr) +library(scales) +library(jsonlite) + +args=commandArgs(trailingOnly=TRUE) + +# Read the timetable from args[1] +input_file = "input.json" +if (length(args)>0) { input_file = args[1] } + +# Load the dataset in NDJSON format +dataset = jsonlite::stream_in(file(input_file)) %>% + jsonlite::flatten() + +particles = unique(dataset$config.particles) + +# We only need the nblocks and time +df = select(dataset, config.nblocks, config.hw.cpusPerSocket, time) %>% + rename(nblocks=config.nblocks, + cpusPerSocket=config.hw.cpusPerSocket) + +df = df %>% mutate(blocksPerCpu = nblocks / cpusPerSocket) +df$nblocks = as.factor(df$nblocks) +df$blocksPerCpuFactor = as.factor(df$blocksPerCpu) + +# Normalize the time by the median +D=group_by(df, nblocks) %>% + mutate(tnorm = time / median(time) - 1) + +bs_unique = unique(df$nblocks) +nbs=length(bs_unique) + +print(D) + +ppi=300 +h=5 +w=5 + +png("box.png", width=w*ppi, height=h*ppi, res=ppi) +# +# +# +# Create the plot with the normalized time vs nblocks +p = ggplot(data=D, aes(x=blocksPerCpuFactor, y=tnorm)) + + + # Labels + labs(x="Num blocks", y="Normalized time", + title="HPCG normalized time", + subtitle=input_file) + + + # Center the title + #theme(plot.title = element_text(hjust = 0.5)) + + + # Black and white mode (useful for printing) + #theme_bw() + + + # Add the maximum allowed error lines + geom_hline(yintercept=c(-0.01, 0.01), + linetype="dashed", color="red") + + + # Draw boxplots + geom_boxplot() + + + #scale_y_continuous(breaks = scales::pretty_breaks(n = 10)) + + + theme_bw() + + + theme(plot.subtitle=element_text(size=8)) + + + theme(legend.position = c(0.85, 0.85)) #+ + + + + +# Render the plot +print(p) + +## Save the png image +dev.off() +# +png("scatter.png", width=w*ppi, height=h*ppi, res=ppi) +# +## Create the plot with the normalized time vs nblocks +p = ggplot(D, aes(x=blocksPerCpuFactor, y=time)) + + + labs(x="Blocks/CPU", y="Time (s)", + title="HPCG granularity", + subtitle=input_file) + + theme_bw() + + theme(plot.subtitle=element_text(size=8)) + + theme(legend.position = c(0.5, 0.88)) + + + geom_point(shape=21, size=3) + + #scale_x_continuous(trans=log2_trans()) + + scale_y_continuous(trans=log2_trans()) + +# Render the plot +print(p) + +# Save the png image +dev.off() diff --git a/overlay.nix b/overlay.nix index cee78b2..03a2fa7 100644 --- a/overlay.nix +++ b/overlay.nix @@ -384,6 +384,12 @@ let }; }; + hpcg = { + oss = with ds.hpcg; pp.rPlot { + script = ./garlic/fig/hpcg/oss.R; + dataset = oss; + }; + }; heat = { test = with ds.heat; pp.rPlot { From a8208480c141baa7bde1a1b9a9569e59a01bab0d Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 5 Nov 2020 20:01:26 +0100 Subject: [PATCH 326/987] Add a nix shell for playing with plots --- garlic/fig/dev/shell.nix | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 garlic/fig/dev/shell.nix diff --git a/garlic/fig/dev/shell.nix b/garlic/fig/dev/shell.nix new file mode 100644 index 0000000..29bb35c --- /dev/null +++ b/garlic/fig/dev/shell.nix @@ -0,0 +1,14 @@ +{ pkgs ? import ../../../default.nix }: + +with pkgs; + +let + rWrapper = pkgs.rWrapper.override { + packages = with pkgs.rPackages; [ tidyverse rjson jsonlite ]; + }; +in +stdenv.mkDerivation { + name = "R"; + + buildInputs = [ rWrapper ]; +} From 92eee2ede86e3cb6216f414f337860ca04792bc1 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 6 Nov 2020 12:31:31 +0100 Subject: [PATCH 327/987] Use target machine notation --- garlic/doc/execution.ms | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/garlic/doc/execution.ms b/garlic/doc/execution.ms index cfc3265..5355fca 100644 --- a/garlic/doc/execution.ms +++ b/garlic/doc/execution.ms @@ -149,7 +149,7 @@ sandbox, where the interfering environment variables are removed. The sbatch program is also provided in the .I "nix store" , with a version compatible with the SLURM daemon running in the target -cluster. +machine. .NH 2 Job execution .LP From dec183b22195764459f4f91303d5bba5ca3b5851 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 6 Nov 2020 12:31:39 +0100 Subject: [PATCH 328/987] Fix execution out path --- garlic/doc/execution.ms | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/garlic/doc/execution.ms b/garlic/doc/execution.ms index 5355fca..81742d3 100644 --- a/garlic/doc/execution.ms +++ b/garlic/doc/execution.ms @@ -115,9 +115,9 @@ to the target machine and executes the next stage there. Once in the target machine, the .I runexp stage computes the output path to store the experiment results, using -the user and group in the target cluster and changes the working -directory there. In MareNostrum 4 the output path is at -.CW /gpfs/projects/$group/$user/garlic-out . +the user in the target machine and changes the working directory there. +In MareNostrum 4 the output path is at +.CW /gpfs/projects/bsc15/garlic/$user/out . Then the .I isolate stage is executed to enter the sandbox and the From 538d595d302d8e89a230d82f9de0b6c929ad3ed0 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 6 Nov 2020 14:21:48 +0100 Subject: [PATCH 329/987] Add MN4 ssh key section --- README | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/README b/README index 14c2cf4..1ddced1 100644 --- a/README +++ b/README @@ -98,6 +98,25 @@ ABSTRACT xeon07$ git clone git@bscpm02.bsc.es:nanos6/nanos6.git + You will also need to access MareNostrum 4 from the xeon07 node, in + order to submit experiments. Add the following lines as well to the + ~/.ssh/config file and set your user name: + + Host mn0 mn1 mn2 + User your-mn4-username + IdentityFile ~/.ssh/id_rsa + + Then copy the key to MareNostrum 4 (it will ask you the first time for + your password): + + xeon07$ ssh-copy-id -i ~/.ssh/id_rsa.pub mn1 + + And ensure that you can connect without a password: + + xeon07$ ssh mn1 + ... + login1$ + 1.3 The bscpkgs repo Once you have Internet and you have granted access to the PM GitLab From 31f7d17a419df37c5f4efcf02d763b86fa66c08a Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 6 Nov 2020 14:26:11 +0100 Subject: [PATCH 330/987] Add manual diagram for nroff --- garlic/doc/pp.ms | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/garlic/doc/pp.ms b/garlic/doc/pp.ms index a36da48..dc28536 100644 --- a/garlic/doc/pp.ms +++ b/garlic/doc/pp.ms @@ -97,6 +97,7 @@ program\[em]any changes in the program will cause nix to build it again using the updated program. The results will also depend on the execution pipeline, and the graph on the results. This chain of dependencies can be shown in the following dependency graph: +.ie t \{\ .PS circlerad=0.22; linewid=0.35; @@ -111,6 +112,14 @@ circle "PP" arrow circle "Plot" .PE +.\} +.el \{\ +.nf + + Prog ---> EP ---> Result ---> PP ---> Plot + +.fi +.\} Ideally, the dependencies should be handled by nix, so it can detect any change and rebuild the necessary parts automatically. Unfortunately, nix is not able to build the result as a derivation directly as it requires access From c0669d7dc8c5013b06bcd599435249566df373be Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 6 Nov 2020 15:41:43 +0100 Subject: [PATCH 331/987] Update Intel MPI: 2019.8.254 -> 2019.9.304 --- bsc/intel-mpi/default.nix | 9 +++++---- bsc/intel-mpi/mpicc.patch | 16 ++++++++-------- bsc/intel-mpi/mpicxx.patch | 28 ++++++++++------------------ 3 files changed, 23 insertions(+), 30 deletions(-) diff --git a/bsc/intel-mpi/default.nix b/bsc/intel-mpi/default.nix index da36620..8082a2e 100644 --- a/bsc/intel-mpi/default.nix +++ b/bsc/intel-mpi/default.nix @@ -29,13 +29,13 @@ in stdenv.mkDerivation rec { name = "intel-mpi-${version}"; - version = "2019.8.254"; - dir_nr = "16814"; - internal-ver = "2020.2.254"; + version = "2019.9.304"; + dir_nr = "17263"; + internal-ver = "2020.4.304"; src = builtins.fetchTarball { url = "http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/${dir_nr}/l_mpi_${version}.tgz"; - sha256 = "1za4zyvxm5bfkrca843na6sxq2gq7qb87s0zysa7dnyqjwa11n45"; + sha256 = "0nmp6np4s7nx2p94x40bpqkp5nasgif3gmbfl4lajzgj2rkh871v"; }; buildInputs = [ @@ -62,6 +62,7 @@ stdenv.mkDerivation rec { ]; postPatch = '' + ls -l opt/intel/ pushd opt/intel/compilers_and_libraries_${internal-ver}/linux/mpi/intel64/bin for i in mpi* ; do echo "Fixing paths in $i" diff --git a/bsc/intel-mpi/mpicc.patch b/bsc/intel-mpi/mpicc.patch index c252490..0122ec6 100644 --- a/bsc/intel-mpi/mpicc.patch +++ b/bsc/intel-mpi/mpicc.patch @@ -1,20 +1,20 @@ ---- a/opt/intel/compilers_and_libraries_2020.2.254/linux/mpi/intel64/bin/mpicc 2020-06-30 14:22:04.510566478 +0200 -+++ b/opt/intel/compilers_and_libraries_2020.2.254/linux/mpi/intel64/bin/mpicc 2020-06-30 14:24:58.250998988 +0200 +--- a/opt/intel/compilers_and_libraries_2020.4.304/linux/mpi/intel64/bin/mpicc 2020-11-06 15:17:24.746803639 +0100 ++++ b/opt/intel/compilers_and_libraries_2020.4.304/linux/mpi/intel64/bin/mpicc 2020-11-06 15:18:41.806654112 +0100 @@ -50,7 +50,7 @@ if [ x"$opt_args" == x"" ]; then case "${compiler_short_name}" in - icc) $dir/mpiicc -cc=$compiler_name "$@" ;; -- cc|*gcc*) $dir/mpigcc -cc=$compiler_name "$@" ;; -+ cc|*gcc*|mcc|clang|echo) $dir/mpigcc -cc=$compiler_name "$@" ;; + icc|icx) $dir/mpiicc -cc=$compiler_name "$@" ;; +- cc|*gcc*|clang*) $dir/mpigcc -cc=$compiler_name "$@" ;; ++ cc|*gcc*|clang*|mcc|echo) $dir/mpigcc -cc=$compiler_name "$@" ;; mpicc) $dir/mpigcc "$@" ;; *) echo "Error: unsupported compiler name '$compiler_name'." @@ -60,7 +60,7 @@ else case "${compiler_short_name}" in - icc) $dir/mpiicc -cc=$compiler_name "$@" $opt_args ;; -- cc|*gcc*) $dir/mpigcc -cc=$compiler_name "$@" $opt_args ;; -+ cc|*gcc*|mcc|clang|echo) $dir/mpigcc -cc=$compiler_name "$@" $opt_args ;; + icc|icx) $dir/mpiicc -cc=$compiler_name "$@" $opt_args ;; +- cc|*gcc*|clang*) $dir/mpigcc -cc=$compiler_name "$@" $opt_args ;; ++ cc|*gcc*|clang*|mcc|echo) $dir/mpigcc -cc=$compiler_name "$@" $opt_args ;; mpicc) $dir/mpigcc "$@" $opt_args ;; *) echo "Error: unsupported compiler name '$compiler_name'." diff --git a/bsc/intel-mpi/mpicxx.patch b/bsc/intel-mpi/mpicxx.patch index a51d170..c48eb69 100644 --- a/bsc/intel-mpi/mpicxx.patch +++ b/bsc/intel-mpi/mpicxx.patch @@ -1,28 +1,20 @@ ---- a/opt/intel/compilers_and_libraries_2020.2.254/linux/mpi/intel64/bin/mpicxx 2020-06-30 14:26:14.619723932 +0200 -+++ b/opt/intel/compilers_and_libraries_2020.2.254/linux/mpi/intel64/bin/mpicxx 2020-06-30 14:27:56.644687134 +0200 -@@ -49,9 +49,9 @@ - +--- a/opt/intel/compilers_and_libraries_2020.4.304/linux/mpi/intel64/bin/mpicxx 2020-11-06 15:14:35.911131270 +0100 ++++ b/opt/intel/compilers_and_libraries_2020.4.304/linux/mpi/intel64/bin/mpicxx 2020-11-06 15:23:41.198073231 +0100 +@@ -50,7 +50,7 @@ if [ x"$opt_args" == x"" ]; then case "${compiler_short_name}" in -- icc|icpc) $dir/mpiicpc -cxx=$compiler_name "$@" ;; + icc|icpc|dpcpp) $dir/mpiicpc -cxx=$compiler_name "$@" ;; - *g++*) $dir/mpigxx -cxx=$compiler_name "$@" ;; -- mpicxx) $dir/mpigxx "$@" ;; -+ icc|icpc) $dir/mpiicpc -cxx=$compiler_name "$@" ;; -+ *g++*|clang*++|mcxx|echo) $dir/mpigxx -cxx=$compiler_name "$@" ;; -+ mpicxx) $dir/mpigxx "$@" ;; ++ *g++*|clang*++|mcxx|echo) $dir/mpigxx -cxx=$compiler_name "$@" ;; + mpicxx) $dir/mpigxx "$@" ;; *) echo "Error: unsupported compiler name '$compiler_name'." - echo "Check -cxx= command line option and I_MPI_CXX='$I_MPI_CXX' and MPICH_CXX='$MPICH_CXX' variables."; -@@ -59,9 +59,9 @@ - esac +@@ -60,7 +60,7 @@ else case "${compiler_short_name}" in -- icc|icpc) $dir/mpiicpc -cxx=$compiler_name "$@" $opt_args ;; + icc|icpc|dpcpp) $dir/mpiicpc -cxx=$compiler_name "$@" $opt_args ;; - *g++*) $dir/mpigxx -cxx=$compiler_name "$@" $opt_args ;; -- mpicxx) $dir/mpigxx "$@" $opt_args ;; -+ icc|icpc) $dir/mpiicpc -cxx=$compiler_name "$@" $opt_args ;; -+ *g++*|clang*++|mcxx|echo) $dir/mpigxx -cxx=$compiler_name "$@" $opt_args ;; -+ mpicxx) $dir/mpigxx "$@" $opt_args ;; ++ *g++*|clang*++|mcxx|echo) $dir/mpigxx -cxx=$compiler_name "$@" $opt_args ;; + mpicxx) $dir/mpigxx "$@" $opt_args ;; *) echo "Error: unsupported compiler name '$compiler_name'." - echo "Check -cxx= command line option and I_MPI_CXX='$I_MPI_CXX' and MPICH_CXX='$MPICH_CXX' variables."; From 92f58651b8f0cbcb27a5faafaef26c645bd1bcfe Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 9 Nov 2020 12:09:22 +0100 Subject: [PATCH 332/987] Increase margins and enable utf8 targets --- garlic/doc/Makefile | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/garlic/doc/Makefile b/garlic/doc/Makefile index 3c60011..a6270bb 100644 --- a/garlic/doc/Makefile +++ b/garlic/doc/Makefile @@ -1,14 +1,15 @@ -all: execution.pdf execution.ascii pp.pdf pp.ascii +all: execution.pdf execution.utf8 execution.ascii pp.pdf pp.utf8 pp.ascii TTYOPT=-rPO=4m -rLL=72m -#TTYOPT=-dpaper=a0 -rPO=4m -rLL=72m +PDFOPT=-dpaper=a4 -rPO=4c -rLL=13c +PREPROC=-k -t -p -R -%.pdf: %.ms - REFER=ref.i groff -ms -dpaper=a4 -k -t -p -R -Tpdf $^ > $@ +%.pdf: %.ms Makefile + REFER=ref.i groff -ms $(PREPROC) $(PDFOPT) -Tpdf $< > $@ -killall -HUP mupdf %.utf8: %.ms - REFER=ref.i groff -ms -t -p -R $(TTYOPT) -Tutf8 $^ > $@ + REFER=ref.i groff -ms $(PREPROC) $(TTYOPT) -Tutf8 $^ > $@ %.ascii: %.ms - REFER=ref.i groff -ms -t -p -R $(TTYOPT) -Tascii $^ > $@ + REFER=ref.i groff -ms -c $(PREPROC) $(TTYOPT) -Tascii $^ > $@ From 48869d6e4abba9bfae6c5a0700180d731e8c1f44 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 9 Nov 2020 12:09:54 +0100 Subject: [PATCH 333/987] Clarify some sections --- garlic/doc/pp.ms | 50 ++++++++++++++++++++++++++---------------------- 1 file changed, 27 insertions(+), 23 deletions(-) diff --git a/garlic/doc/pp.ms b/garlic/doc/pp.ms index dc28536..ddaf4b2 100644 --- a/garlic/doc/pp.ms +++ b/garlic/doc/pp.ms @@ -25,11 +25,10 @@ move-punctuation .NH 1 Introduction .LP -After the correct execution of an experiment some measurements are -recorded in the results for further investigation. Typically the time of -the execution or other quantities are measured and presented later in a -figure (generally a plot or a table). -The +After the correct execution of an experiment the results are stored for +further investigation. Typically the time of the execution or other +quantities are measured and presented later in a figure (generally a +plot or a table). The .I "postprocess pipeline" consists of all the steps required to create a set of figures from the results. Similarly to the execution pipeline where several stages run @@ -52,9 +51,9 @@ Results The results are generated in the same .I "target" machine where the experiment is executed and are stored in the garlic -.I output , -organized into a directory structure following the experiment name, the -unit name and the run number (governed by the +.I out +directory, organized into a tree structure following the experiment +name, the unit name and the run number (governed by the .I control stage): .QS @@ -76,15 +75,18 @@ and attributes (defined in the experiment configuration) and linking them to the appropriate experiment and unit directories. These links are overwritten by the last experiment with the same names so they are only -valid for the last execution. The output and index directories are +valid for the last execution. The out and index directories are placed into a per-user directory, as we cannot guarantee the complete -execution of each unit when multiple users can share units. +execution of each unit when multiple users share units. .PP -The messages printed to the standard output and error are +The messages printed to +.I stdout +and +.I stderr are stored in the log files with the same name inside each run directory. Additional data is sometimes generated by the experiments, and is found in each run directory. As the generated data can be very -large, is ignored by default when considering the results. +large, is ignored by default when fetching the results. .NH 1 Fetching the results .LP @@ -93,14 +95,16 @@ measure some properties that the experimenter wants to present in a visual plot. When the experiment is launched, the execution pipeline (EP) is completely executed and it will generate some results. In this escenario, the execution pipeline depends on the -program\[em]any changes in the program will cause nix to build it again +program\[em]any changes in the program will cause nix to build the +pipeline again using the updated program. The results will also depend on the -execution pipeline, and the graph on the results. This chain of -dependencies can be shown in the following dependency graph: +execution pipeline as well as the postprocess pipeline (PP) and the plot +on the results. This chain of dependencies can be shown in the +following dependency graph: .ie t \{\ .PS circlerad=0.22; -linewid=0.35; +linewid=0.3; right circle "Prog" arrow @@ -122,15 +126,15 @@ circle "Plot" .\} Ideally, the dependencies should be handled by nix, so it can detect any change and rebuild the necessary parts automatically. Unfortunately, nix -is not able to build the result as a derivation directly as it requires access -to the +is not able to build the result as a derivation directly, as it requires +access to the .I "target" machine with several user accounts. In order to let several users reuse -the same results from a cache, we -use the -.I "nix store" -to make them available. To generate the results from the -experiment, we add some extra steps that must be executed manually. +the same results from a shared cache, we would like to use the +.I "nix store" . +.PP +To generate the results from the +experiment, we add some extra steps that must be executed manually: .PS circle "Prog" arrow From 47f67dcd850aad308df7634f859705844188d70e Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 9 Nov 2020 12:16:56 +0100 Subject: [PATCH 334/987] Extend abstract --- garlic/doc/pp.ms | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/garlic/doc/pp.ms b/garlic/doc/pp.ms index ddaf4b2..1bda461 100644 --- a/garlic/doc/pp.ms +++ b/garlic/doc/pp.ms @@ -7,8 +7,9 @@ Barcelona Supercomputing Center .AB .LP This document covers the format used to store the results of the -execution and the postprocess steps used to generate a set of -figures from the results to present the data. +execution of experiments and the postprocess steps used to generate a +set of figures from the results to present the data. The several stages +of the postprocess pipeline are documented to provide a general picture. .AE .\"##################################################################### .nr GROWPS 3 From 5763b91d39b07b3b5444ec72e3611010d63594b1 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 9 Nov 2020 17:46:11 +0100 Subject: [PATCH 335/987] Use the trebuchet only to specify an experiment --- garlic/sh/garlic | 16 +++++++++------- garlic/sh/garlic.1 | 8 ++++---- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/garlic/sh/garlic b/garlic/sh/garlic index c759772..24b760b 100755 --- a/garlic/sh/garlic +++ b/garlic/sh/garlic @@ -10,7 +10,7 @@ PATH=@PATH@ #sshHost=mn1 #PATH=/nix/store/yjkcxbf0y1jdlbj0axghlg2fndc4dqkz-patchelf-0.11/bin:/nix/store/6is25fyx29d731idycngl7qmgcax5xng-gcc-wrapper-9.3.0/bin:/nix/store/h986r9i2j9x5z8i5g8aj0z8jdd129wyx-gcc-9.3.0/bin:/nix/store/48dypl6qdsj3vdzh7hjg5qnngfpdcz7h-glibc-2.31-bin/bin:/nix/store/zmac3n79ayg4fdqgznmi2v3lmcprzx4g-coreutils-8.31/bin:/nix/store/dmnnqr6j7kqgcr357b5qwiwvjvg2yyhd-binutils-wrapper-2.31.1/bin:/nix/store/gmi6xrkl95h6iypv00dvdpm3f4md9i6i-binutils-2.31.1/bin:/nix/store/48dypl6qdsj3vdzh7hjg5qnngfpdcz7h-glibc-2.31-bin/bin:/nix/store/zmac3n79ayg4fdqgznmi2v3lmcprzx4g-coreutils-8.31/bin:/nix/store/a41ky6icdgxa54jzps32gfgcrdyx94hs-rsync-3.1.3/bin:/nix/store/sxll2dlamfm32xd2nyfx7v8mlnx0gxks-openssh-8.3p1/bin:/nix/store/3gp7gv5z9jj3g92czxadvgphpwiviv28-nix-2.3.7/bin:/nix/store/zmac3n79ayg4fdqgznmi2v3lmcprzx4g-coreutils-8.31/bin:/nix/store/f2hn65ksj194nmy58nrjikv9r9w25irh-findutils-4.7.0/bin:/nix/store/m39n3m5c7r22b3ma2phnwmp0jj8a5jja-diffutils-3.7/bin:/nix/store/ray7jgwsr5xbxp28wvr427vywd08nz9s-gnused-4.8/bin:/nix/store/gzc092gzsanvym4c6sjgh22dsh9fzj4s-gnugrep-3.4/bin:/nix/store/mn412q9rz9afdrhl9v2ybf605r91wzl2-gawk-5.1.0/bin:/nix/store/xca341k5x5b4hcmi310gjhdlgqm4l56m-gnutar-1.32/bin:/nix/store/zvb8qad72bz6j7ia60dcsf3dfncxxqc7-gzip-1.10/bin:/nix/store/9pb8zp3zyykw09rg60f2nv32plamhd7h-bzip2-1.0.6.0.1-bin/bin:/nix/store/fm2p1d8w9sx4gbaf8qfv2rsailsyhvm3-gnumake-4.3/bin:/nix/store/npfsrhkjww5q7sax7p7ijcrj3wlbrxn7-bash-4.4-p23/bin:/nix/store/72m0m8v6mbp58vbngjgv5pn2scqhs6kk-patch-2.7.6/bin:/nix/store/7vh7fckk2srlkmmkfhs9y85icwm9rhj5-xz-5.2.5-bin/bin -usage() { echo "Usage: garlic [-RFwv] experiment" 1>&2; exit 1; } +usage() { echo "Usage: garlic [-RFwv] trebuchet" 1>&2; exit 1; } findClosure() { what=$1 @@ -28,6 +28,10 @@ findClosure() { echo "$mexp" } +findExperiment() { + grep -o -- "/nix/store/.*-experiment" "$1" +} + drvFromOutput() { nix-store -q --deriver $1 } @@ -166,23 +170,21 @@ while getopts "vwRF" o; do esac done shift $((OPTIND-1)) -ref="$1" - +trebuchet="$1" if [ -z "$enableRun" -a -z "$enableFetch" ]; then >&2 echo "missing operation" usage fi -if [ -z "$ref" ]; then +if [ -z "$trebuchet" ]; then >&2 echo "missing experiment" usage fi -experiment=$(findClosure "-experiment$" "$ref") -trebuchet=$(findClosure "-trebuchet$" "$ref") - checkTrebuchet $trebuchet + +experiment=$(findExperiment "$trebuchet") checkExperiment $experiment trebuchetDrv=$(drvFromOutput $trebuchet) diff --git a/garlic/sh/garlic.1 b/garlic/sh/garlic.1 index 6d455ab..86915d8 100644 --- a/garlic/sh/garlic.1 +++ b/garlic/sh/garlic.1 @@ -8,20 +8,20 @@ .Sh SYNOPSIS .Nm garlic .Op Fl RFvw -.Ar experiment +.Ar trebuchet .Sh DESCRIPTION .Nm is a program to handle tasks related with the experiments of the Garlic benchmark. The -.Ar experiment -argument is a path to a valid trebuchet or experiment stage script. The +.Ar trebuchet +argument is a path to a valid trebuchet stage script. The specified operations are executed sequentially and at least one must be selected from: .Bl -tag -width Ds -compact .Pp .It Fl R launches the -.Ar experiment . +.Ar experiment using the trebuchet. .Pp .It Fl F waits until the From 966606b62dab93ac4a8c818b8a77cea10808f5bd Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 9 Nov 2020 17:47:55 +0100 Subject: [PATCH 336/987] hpcg: precompute the input --- garlic/exp/hpcg/gen.nix | 103 ++++++++++++++++++++++++++++++++++++++++ garlic/exp/hpcg/oss.nix | 13 +++-- overlay.nix | 7 ++- 3 files changed, 119 insertions(+), 4 deletions(-) create mode 100644 garlic/exp/hpcg/gen.nix diff --git a/garlic/exp/hpcg/gen.nix b/garlic/exp/hpcg/gen.nix new file mode 100644 index 0000000..4542b78 --- /dev/null +++ b/garlic/exp/hpcg/gen.nix @@ -0,0 +1,103 @@ +{ + stdenv +, stdexp +, bsc +, targetMachine +, stages +, garlicTools +, resultFromTrebuchet +}: + +with stdenv.lib; +with builtins; +with garlicTools; + +let + # Generate the complete configuration for each unit + genConf = with bsc; c: targetMachine.config // rec { + expName = "${c.expName}.gen"; + unitName = "${expName}.n${toString n.x}"; + + # hpcg options + cc = bsc.icc; + mcxx = bsc.mcxx; + nanos6 = bsc.nanos6; + mpi = null; # TODO: Remove this for oss + + # Only the n and gitBranch options are inherited + inherit (c) n gitBranch; + + # Repeat the execution of each unit 30 times + loops = 1; + + # Resources + qos = "debug"; + ntasksPerNode = 1; + nodes = 1; + time = "02:00:00"; + # task in one socket + cpuBind = "verbose,mask_cpu:0xffffff"; + jobName = unitName; + }; + + exec = {nextStage, conf, ...}: with conf; stages.exec { + inherit nextStage; + env = "NANOS6_DEPENDENCIES=discrete"; + argv = [ + "--nx=${toString n.x}" + "--ny=${toString n.y}" + "--nz=${toString n.z}" + # The nblocks is ignored + #"--nblocks=${toString nblocks}" + # Store the results in the same directory + "--store=." + ]; + }; + + program = {nextStage, conf, ...}: with conf; + let + customPkgs = stdexp.replaceMpi conf.mpi; + in + customPkgs.apps.hpcg.override { + inherit cc nanos6 mcxx gitBranch; + }; + + pipeline = stdexp.stdPipeline ++ [ exec program ]; + + genExp = configs: stdexp.genExperiment { inherit configs pipeline; }; + + genInputLink = inputConfigs: {nextStage, conf, ...}: + let + # Compute the experiment that produces HPCG input matrix from the + # configuration of this unit: + configs = map genConf inputConfigs; + inputTre = genExp configs; + #inputExp = getExperimentStage inputTrebuchet; + #inputExp = trace inputTrebuchet inputTrebuchet.nextStage; + inputExp = trace (inputTre.name) (getExperimentStage inputTre); + # Then load the result. This is only used to ensure that we have the + # results, so it has been executed. + inputRes = resultFromTrebuchet inputTre; + # We also need the unit, to compute the path. + inputUnit = stages.unit { + conf = genConf conf; + stages = pipeline; + }; + # Build the path: + expName = baseNameOf (toString inputExp); + unitName = baseNameOf (toString inputUnit); + relPath = "../../${expName}/${unitName}/1"; + in stages.exec { + inherit nextStage; + env = '' + # This line ensures that the results of the HPCG generation are complete: + # ${inputRes} + + # Then we simply link the input result directory in "input" + ln -s ${relPath} input + ''; + }; + +in + #{ inherit genConf genExp genInputLink; } + genInputLink diff --git a/garlic/exp/hpcg/oss.nix b/garlic/exp/hpcg/oss.nix index fce3d2c..002bf12 100644 --- a/garlic/exp/hpcg/oss.nix +++ b/garlic/exp/hpcg/oss.nix @@ -4,6 +4,7 @@ , bsc , targetMachine , stages +, genInput }: with stdenv.lib; @@ -13,8 +14,8 @@ let varConf = with bsc; { # FIXME: Temporally reduce the input size until we can load a precomputed # input in each run, otherwise the execution time is very large. - n = [ { x = 104; y = 104; z = 104; } ]; - #n = [ { x = 256; y = 288; z = 288; } ]; + #n = [ { x = 104; y = 104; z = 104; } ]; + n = [ { x = 256; y = 288; z = 288; } ]; nblocks = [ 12 24 48 96 192 384 ]; }; @@ -50,6 +51,8 @@ let inherit varConf genConf; }; + input = genInput configs; + exec = {nextStage, conf, ...}: with conf; stages.exec { inherit nextStage; env = "NANOS6_DEPENDENCIES=discrete"; @@ -58,6 +61,9 @@ let "--ny=${toString n.y}" "--nz=${toString n.z}" "--nblocks=${toString nblocks}" + # The input symlink is generated by the input stage, which is generated by + # the genInput function. + "--load=input" ]; }; @@ -69,8 +75,9 @@ let inherit cc nanos6 mcxx gitBranch; }; - pipeline = stdexp.stdPipeline ++ [ exec program ]; + pipeline = stdexp.stdPipeline ++ [ input exec program ]; in + #{ inherit configs pipeline; } stdexp.genExperiment { inherit configs pipeline; } diff --git a/overlay.nix b/overlay.nix index 03a2fa7..fb87688 100644 --- a/overlay.nix +++ b/overlay.nix @@ -338,7 +338,12 @@ let mpi = callPackage ./garlic/exp/hpcg/mpi.nix { }; omp = callPackage ./garlic/exp/hpcg/omp.nix { }; mpi_omp = callPackage ./garlic/exp/hpcg/mpi+omp.nix { }; - oss = callPackage ./garlic/exp/hpcg/oss.nix { }; + input = callPackage ./garlic/exp/hpcg/gen.nix { + inherit (self.bsc.garlic.pp) resultFromTrebuchet; + }; + oss = callPackage ./garlic/exp/hpcg/oss.nix { + genInput = self.bsc.garlic.exp.hpcg.input; + }; }; heat = { From 63f966e3c18d9c37559a3b984ca1adfd14dddbe4 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 11 Nov 2020 12:19:07 +0100 Subject: [PATCH 337/987] extrae: Add patch to follow upstream --- bsc/extrae/default.nix | 16 ++++++---------- bsc/extrae/use-command.patch | 24 ++++++++++++++++++++++++ 2 files changed, 30 insertions(+), 10 deletions(-) create mode 100644 bsc/extrae/use-command.patch diff --git a/bsc/extrae/default.nix b/bsc/extrae/default.nix index 6ce9fa8..1d55930 100644 --- a/bsc/extrae/default.nix +++ b/bsc/extrae/default.nix @@ -23,20 +23,16 @@ stdenv.mkDerivation rec { name = "extrae"; version = "3.8.3"; -# src = fetchurl { -# url = "https://ftp.tools.bsc.es/extrae/${name}-${version}-src.tar.bz2"; -# sha256 = "0y036qc7y30pfj1mnb9nzv2vmxy6xxiy4pgfci6l3jc0lccdsgf8"; -# }; - src = fetchFromGitHub { - owner = "rodarima"; - #owner = "bsc-performance-tools"; + owner = "bsc-performance-tools"; repo = "extrae"; - rev = "a8ec6882c03d130f88b09f2114887101ca9f6b09"; - #rev = "${version}"; - sha256 = "02gwl17r63kica6lxycyn10a0r2ciycf6g3cdq5cna5zl351qf31"; + rev = "${version}"; + sha256 = "08ghd14zb3bgqb1smb824d621pqqww4q01n3pyws0vp3xi0kavf4"; }; + # FIXME: Waiting for German to merge this patch + patches = [ ./use-command.patch ]; + enableParallelBuilding = true; nativeBuildInputs = [ installShellFiles ]; diff --git a/bsc/extrae/use-command.patch b/bsc/extrae/use-command.patch new file mode 100644 index 0000000..8255da7 --- /dev/null +++ b/bsc/extrae/use-command.patch @@ -0,0 +1,24 @@ +diff --git a/substitute b/substitute +index d5615606..82ca91a5 100755 +--- a/substitute ++++ b/substitute +@@ -16,7 +16,7 @@ UNAME=`uname` + if [ "${UNAME}" = "Darwin" -o "${UNAME}" = "AIX" ] ; then + TMPFILE=substitute-$$ + ${SED} "s|${KEY}|${VALUE}|g" < ${FILE} >${TMPFILE} +- /bin/mv -f ${TMPFILE} ${FILE} ++ command mv -f ${TMPFILE} ${FILE} + else + ${SED} "s|${KEY}|${VALUE}|g" -i ${FILE} + fi +diff --git a/substitute-all b/substitute-all +index 48c6b76a..eda7a0f2 100755 +--- a/substitute-all ++++ b/substitute-all +@@ -23,5 +23,5 @@ fi + + echo "Applying modification in ${PATHTOCHANGE} - Key = ${KEY} for value = ${VALUE}" + +-/usr/bin/find ${PATHTOCHANGE} -type f -exec ${SCRIPT_LOCATION} "${SED}" "${KEY}" "${VALUE}" {} \; ++command find ${PATHTOCHANGE} -type f -exec ${SCRIPT_LOCATION} "${SED}" "${KEY}" "${VALUE}" {} \; + From 1838178761595c9c7320dba4253c7de0b1cf4b36 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 11 Nov 2020 12:24:41 +0100 Subject: [PATCH 338/987] tampi: Update to 1.0.2 and use fetchFromGitHub The configure flags are no longer required. --- bsc/tampi/default.nix | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/bsc/tampi/default.nix b/bsc/tampi/default.nix index 211e0e5..d5c113f 100644 --- a/bsc/tampi/default.nix +++ b/bsc/tampi/default.nix @@ -1,6 +1,6 @@ { stdenv -, fetchurl +, fetchFromGitHub , automake , autoconf , libtool @@ -12,14 +12,16 @@ }: stdenv.mkDerivation rec { - version = "1.0.1"; - name = "tampi-${version}"; + version = "1.0.2"; + pname = "tampi"; enableParallelBuilding = true; buildInputs = [ autoreconfHook automake autoconf libtool gnumake boost mpi gcc ]; dontDisableStatic = true; - configureFlags = [ "--disable-mpi-mt-check" "CXXFLAGS=-DOMPI_SKIP_MPICXX=1" ]; - src = fetchurl { - url = "https://github.com/bsc-pm/tampi/archive/v${version}.tar.gz"; - sha256 = "8608a74325939d2a6b56e82f7f6788efbc67731e2d64793bac69475f5b4b9704"; + + src = fetchFromGitHub { + owner = "bsc-pm"; + repo = "tampi"; + rev = "v${version}"; + sha256 = "09711av3qbah56mchr81679x05zxl3hi0pjndcnvk7jsfcdxvbm7"; }; } From dc3e84a14896c95e4af6ccf56c9f5b508d984bbb Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 11 Nov 2020 12:25:21 +0100 Subject: [PATCH 339/987] tampi: use the last release by default --- overlay.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/overlay.nix b/overlay.nix index fb87688..b80bc83 100644 --- a/overlay.nix +++ b/overlay.nix @@ -97,7 +97,7 @@ let extrae = callPackage ./bsc/extrae/default.nix { }; - tampi = self.bsc.tampiGit; + tampi = self.bsc.tampiRelease; tampiRelease = callPackage ./bsc/tampi/default.nix { }; tampiGit = callPackage ./bsc/tampi/git.nix { }; From 09361fae775b58bd693968c4e057b2607461e98e Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 11 Nov 2020 13:17:03 +0100 Subject: [PATCH 340/987] extrae: use pname to get the version --- bsc/extrae/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bsc/extrae/default.nix b/bsc/extrae/default.nix index 1d55930..5e95544 100644 --- a/bsc/extrae/default.nix +++ b/bsc/extrae/default.nix @@ -20,7 +20,7 @@ }: stdenv.mkDerivation rec { - name = "extrae"; + pname = "extrae"; version = "3.8.3"; src = fetchFromGitHub { From 4111535a9d573cb979c74fc8f3293f220c935c02 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 11 Nov 2020 13:17:31 +0100 Subject: [PATCH 341/987] clangOmpss2: Remove clang from the inputs Is already provided in stdenv as we use llvm10, and otherwise it will pull clang 7 as dependency. --- bsc/llvm-ompss2/clang.nix | 2 -- 1 file changed, 2 deletions(-) diff --git a/bsc/llvm-ompss2/clang.nix b/bsc/llvm-ompss2/clang.nix index c0a4b38..40631e7 100644 --- a/bsc/llvm-ompss2/clang.nix +++ b/bsc/llvm-ompss2/clang.nix @@ -6,7 +6,6 @@ , bash , python3 , perl -, clang , which , libelf , libffi @@ -30,7 +29,6 @@ stdenv.mkDerivation rec { buildInputs = [ which - clang bash python3 perl From cd3afe4ad689ac9a15c861ad1a27b1a90cb12a04 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 11 Nov 2020 14:45:02 +0100 Subject: [PATCH 342/987] rdma-core: drop systemd dependency --- bsc/rdma-core/default.nix | 60 +++++++++++++++++++++++++++++++++++++++ overlay.nix | 2 ++ 2 files changed, 62 insertions(+) create mode 100644 bsc/rdma-core/default.nix diff --git a/bsc/rdma-core/default.nix b/bsc/rdma-core/default.nix new file mode 100644 index 0000000..a23cd14 --- /dev/null +++ b/bsc/rdma-core/default.nix @@ -0,0 +1,60 @@ +{ stdenv, fetchFromGitHub, cmake, pkgconfig, docutils +, pandoc, ethtool, iproute, libnl, udev, python, perl +, makeWrapper +} : + +let + version = "31.1"; + +in stdenv.mkDerivation { + pname = "rdma-core"; + inherit version; + + src = fetchFromGitHub { + owner = "linux-rdma"; + repo = "rdma-core"; + rev = "v${version}"; + sha256 = "1xkmdix6mgv6kjjj6wi844bfddhl0ybalrp5g8pf5izasc43brg7"; + }; + + nativeBuildInputs = [ cmake pkgconfig pandoc docutils makeWrapper ]; + buildInputs = [ libnl ethtool iproute udev python perl ]; + + cmakeFlags = [ + "-DCMAKE_INSTALL_RUNDIR=/run" + "-DCMAKE_INSTALL_SHAREDSTATEDIR=/var/lib" + ]; + + postPatch = '' + substituteInPlace srp_daemon/srp_daemon.sh.in \ + --replace /bin/rm rm + ''; + + postInstall = '' + # cmake script is buggy, move file manually + mkdir -p $out/${perl.libPrefix} + mv $out/share/perl5/* $out/${perl.libPrefix} + ''; + + postFixup = '' + for pls in $out/bin/{ibfindnodesusing.pl,ibidsverify.pl}; do + echo "wrapping $pls" + chmod +x "$pls" + wrapProgram $pls --prefix PERL5LIB : "$out/${perl.libPrefix}" + done + + # Remove any non-library as we are not using them + rm -rf $out/etc + rm -rf $out/lib/systemd + rm -rf $out/bin + rm -rf $out/sbin + ''; + + meta = with stdenv.lib; { + description = "RDMA Core Userspace Libraries and Daemons"; + homepage = "https://github.com/linux-rdma/rdma-core"; + license = licenses.gpl2; + platforms = platforms.linux; + maintainers = with maintainers; [ markuskowa ]; + }; +} diff --git a/overlay.nix b/overlay.nix index b80bc83..b31e0d9 100644 --- a/overlay.nix +++ b/overlay.nix @@ -138,6 +138,8 @@ let dummy = callPackage ./bsc/dummy/default.nix { }; + rdma-core = callPackage ./bsc/rdma-core/default.nix { }; + clangOmpss2Unwrapped = callPackage ./bsc/llvm-ompss2/clang.nix { stdenv = self.llvmPackages_10.stdenv; enableDebug = false; From 9faa4ef10141f232366e911ae5a0f7685724ee7c Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 11 Nov 2020 17:06:03 +0100 Subject: [PATCH 343/987] rdma-core: only remove binaries --- bsc/rdma-core/default.nix | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/bsc/rdma-core/default.nix b/bsc/rdma-core/default.nix index a23cd14..31c8de5 100644 --- a/bsc/rdma-core/default.nix +++ b/bsc/rdma-core/default.nix @@ -43,9 +43,7 @@ in stdenv.mkDerivation { wrapProgram $pls --prefix PERL5LIB : "$out/${perl.libPrefix}" done - # Remove any non-library as we are not using them - rm -rf $out/etc - rm -rf $out/lib/systemd + # Remove the binaries as they pull systemd rm -rf $out/bin rm -rf $out/sbin ''; From acc3390b6ba720ff4a9791f6673b79564905d34d Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 9 Nov 2020 13:08:45 +0100 Subject: [PATCH 344/987] WIP: icc update --- bsc/intel-compiler/icc2020.nix | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/bsc/intel-compiler/icc2020.nix b/bsc/intel-compiler/icc2020.nix index 17fe3e1..4aed69d 100644 --- a/bsc/intel-compiler/icc2020.nix +++ b/bsc/intel-compiler/icc2020.nix @@ -16,17 +16,20 @@ stdenv.mkDerivation rec { }; # From Arch Linux PKGBUILD - dir_nr="16526"; + dir_nr="17114"; year="2020"; v_a="1"; v_b="217"; - update="1"; + update="4"; composer_xe_dir="compilers_and_libraries_${year}.${v_a}.${v_b}"; - tgz="parallel_studio_xe_2020_update${update}_cluster_edition.tgz"; + #tgz="parallel_studio_xe_2020_update${update}_cluster_edition.tgz"; + tgz="parallel_studio_xe_2020_update${update}_professional_edition.tgz"; + + #https://registrationcenter-download.intel.com/akdlm/irc_nas/tec/17114/parallel_studio_xe_2020_update4_professional_edition.tgz src = fetchurl { url = "http://registrationcenter-download.intel.com/akdlm/IRC_NAS/tec/${dir_nr}/${tgz}"; - sha256 = "1axblai5lmw9yqjaz7lvjraj5fsc7r37pklb9x3n1gdjfbgdh4gx"; + sha256 = "0nmp6np4s7nx2p94x40bpqkp5nasgif3gmbfl4lajzgj2rkh871v"; }; buildInputs = [ @@ -41,6 +44,8 @@ stdenv.mkDerivation rec { propagatedBuildInputs = [ gcc ]; installPhase = '' + pwd + ls -l rpm rpmextract rpm/intel-icc-*.rpm rpmextract rpm/intel-comp-*.rpm rpmextract rpm/intel-c-comp-*.rpm From f2610361a70422a92e0a1f9df66684c6edf89930 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 11 Nov 2020 17:05:04 +0100 Subject: [PATCH 345/987] icc: fix hash and internal version number --- bsc/intel-compiler/icc2020.nix | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/bsc/intel-compiler/icc2020.nix b/bsc/intel-compiler/icc2020.nix index 4aed69d..1c5eff0 100644 --- a/bsc/intel-compiler/icc2020.nix +++ b/bsc/intel-compiler/icc2020.nix @@ -18,18 +18,15 @@ stdenv.mkDerivation rec { # From Arch Linux PKGBUILD dir_nr="17114"; year="2020"; - v_a="1"; - v_b="217"; + v_a="4"; + v_b="304"; update="4"; composer_xe_dir="compilers_and_libraries_${year}.${v_a}.${v_b}"; - #tgz="parallel_studio_xe_2020_update${update}_cluster_edition.tgz"; tgz="parallel_studio_xe_2020_update${update}_professional_edition.tgz"; - #https://registrationcenter-download.intel.com/akdlm/irc_nas/tec/17114/parallel_studio_xe_2020_update4_professional_edition.tgz - src = fetchurl { url = "http://registrationcenter-download.intel.com/akdlm/IRC_NAS/tec/${dir_nr}/${tgz}"; - sha256 = "0nmp6np4s7nx2p94x40bpqkp5nasgif3gmbfl4lajzgj2rkh871v"; + sha256 = "1rn9kk5bjj0jfv853b09dxrx7kzvv8dlyzw3hl9ijx9mqr09lrzr"; }; buildInputs = [ From 74ce07b1936327b06da01cdbe7cfd2364c2b773f Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 11 Nov 2020 17:31:41 +0100 Subject: [PATCH 346/987] rdma-core: use upstream by default The systemd dependency is pulled anyway --- overlay.nix | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/overlay.nix b/overlay.nix index b31e0d9..e5ec0a2 100644 --- a/overlay.nix +++ b/overlay.nix @@ -138,7 +138,8 @@ let dummy = callPackage ./bsc/dummy/default.nix { }; - rdma-core = callPackage ./bsc/rdma-core/default.nix { }; + # Our custom version that lacks the binaries. Disabled by default. + #rdma-core = callPackage ./bsc/rdma-core/default.nix { }; clangOmpss2Unwrapped = callPackage ./bsc/llvm-ompss2/clang.nix { stdenv = self.llvmPackages_10.stdenv; From 0b0f6ac9f022224e579ffe3b189d759bc7ef226f Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 11 Nov 2020 18:59:57 +0100 Subject: [PATCH 347/987] rplot: Add a reference to the dataset --- garlic/pp/rplot.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/garlic/pp/rplot.nix b/garlic/pp/rplot.nix index aabc4b5..343e2f6 100644 --- a/garlic/pp/rplot.nix +++ b/garlic/pp/rplot.nix @@ -28,6 +28,7 @@ in stdenv.mkDerivation { installPhase = '' mkdir -p $out cd $out + ln -s ${dataset} input.json Rscript --vanilla ${script} ${dataset} ''; } From 9a7e59a0767baf49d8dd15a6594008c98835b32c Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 11 Nov 2020 19:00:33 +0100 Subject: [PATCH 348/987] nanos6: fix the git commit Until nanos6 release is complete, we don't want frequent large rebuilds --- bsc/nanos6/git.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/bsc/nanos6/git.nix b/bsc/nanos6/git.nix index c7605df..50f7650 100644 --- a/bsc/nanos6/git.nix +++ b/bsc/nanos6/git.nix @@ -26,6 +26,7 @@ stdenv.mkDerivation rec { src = builtins.fetchGit { url = "ssh://git@bscpm02.bsc.es/nanos6/nanos6"; ref = branch; + rev = "bd306f903c7a4396f579402666082f5a7c34570b"; }; prePatch = '' From 5333058741299e0c9e1b8b65d28545d01fc48935 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 11 Nov 2020 19:03:02 +0100 Subject: [PATCH 349/987] report: build only required figures Introduces a intermediate derivation that can be imported into the report derivation, which contains a string cmd that expands the fig variable as needed. --- garlic/report.nix | 7 ++++--- garlic/report.tex | 4 ++-- garlic/sedReport.nix | 19 +++++++++++++++++++ overlay.nix | 3 +++ 4 files changed, 28 insertions(+), 5 deletions(-) create mode 100644 garlic/sedReport.nix diff --git a/garlic/report.nix b/garlic/report.nix index e48b63d..fe580a9 100644 --- a/garlic/report.nix +++ b/garlic/report.nix @@ -5,6 +5,7 @@ , busybox , jq , texlive +, sedReport }: let # TODO: We can select only which elements we need from fig by using: @@ -13,15 +14,15 @@ let # By now, we require all plots figJSON = writeText "fig.json" (builtins.toJSON fig); + sedCmd = (import sedReport) fig; in stdenv.mkDerivation { name = "report"; src = ./.; buildInputs = [ jq texlive.combined.scheme-basic ]; buildPhase = '' - ls -l - sed -i -e "s:@fig\.nbody\.test@:$(jq -r .nbody.test ${figJSON}):g" report.tex - jq . ${figJSON} + ${sedCmd} + cat report.tex pdflatex report.tex -o report.pdf # Run again to fix figure references pdflatex report.tex -o report.pdf diff --git a/garlic/report.tex b/garlic/report.tex index 5e6759f..a24cedd 100644 --- a/garlic/report.tex +++ b/garlic/report.tex @@ -14,8 +14,8 @@ time $t$ is measured, as shown in the figure \ref{fig:nbody.test}. % \begin{figure}[h] \centering - \includegraphics[width=0.45\textwidth]{@fig.nbody.test@/scatter.png} - \includegraphics[width=0.45\textwidth]{@fig.nbody.test@/box.png} + \includegraphics[width=0.45\textwidth]{@fig.nbody.baseline@/scatter.png} + \includegraphics[width=0.45\textwidth]{@fig.nbody.baseline@/box.png} \caption{Nbody times with varying block size} \label{fig:nbody.test} \end{figure} diff --git a/garlic/sedReport.nix b/garlic/sedReport.nix new file mode 100644 index 0000000..37dd1d9 --- /dev/null +++ b/garlic/sedReport.nix @@ -0,0 +1,19 @@ +{ + stdenv +, fig +}: + stdenv.mkDerivation { + name = "report"; + src = ./.; + buildPhase = '' + grep -o '@[^ @]*@' report.tex | sed 's/@//g' | sort -u > list + + echo "fig:" > fun.nix + echo "'''" >> fun.nix + sed 's:\(^.*\)$:sed -i "s;@\1@;''${\1};g" report.tex:g' list >> fun.nix + echo "'''" >> fun.nix + ''; + installPhase = '' + cp fun.nix $out + ''; + } diff --git a/overlay.nix b/overlay.nix index e5ec0a2..f7eac52 100644 --- a/overlay.nix +++ b/overlay.nix @@ -181,6 +181,9 @@ let report = callPackage ./garlic/report.nix { fig = self.bsc.garlic.fig; }; + sedReport = callPackage ./garlic/sedReport.nix { + fig = self.bsc.garlic.fig; + }; # Use the configuration for the following target machine targetMachine = self.garlic.machines.mn4; From 86d1d426ec9395202da18ef6153a7ea4bd60920a Mon Sep 17 00:00:00 2001 From: Sandra Date: Thu, 12 Nov 2020 19:10:43 +0100 Subject: [PATCH 350/987] Saiph: Removing devMode parameter --- NOISE | 3 --- garlic/apps/saiph/default.nix | 16 ++++++---------- garlic/exp/saiph/numcomm.nix | 3 +-- 3 files changed, 7 insertions(+), 15 deletions(-) diff --git a/NOISE b/NOISE index 2d5cd6c..6beb56b 100644 --- a/NOISE +++ b/NOISE @@ -121,6 +121,3 @@ ABSTRACT within Nix, they will be copied with the current data and consequently not updated during the Nix compilation process. - See saiph devMode option and its implications at - bscpkgs/garlic/saiph/default.nix - diff --git a/garlic/apps/saiph/default.nix b/garlic/apps/saiph/default.nix index c9f3cad..1af0775 100644 --- a/garlic/apps/saiph/default.nix +++ b/garlic/apps/saiph/default.nix @@ -6,7 +6,6 @@ , cc , vtk , boost -, devMode ? false , gitBranch ? "master" , numComm ? null , vectFlags ? null @@ -16,12 +15,10 @@ stdenv.mkDerivation rec { name = "saiph"; - src = (if (devMode == true) then ~/repos/saiph - else - builtins.fetchGit { - url = "ssh://git@bscpm02.bsc.es/DSLs/saiph.git"; - ref = "${gitBranch}"; - }); + src = builtins.fetchGit { + url = "ssh://git@bscpm02.bsc.es/DSLs/saiph.git"; + ref = "${gitBranch}"; + }; programPath = "/bin/ExHeat3D"; @@ -46,9 +43,8 @@ stdenv.mkDerivation rec { cd saiphv2/cpp/src export VTK_VERSION=8.2 export VTK_HOME=${vtk} - '' - + (if (devMode == true) then "make clean" else "") - ; + make clean + ''; makeFlags = [ "-f" "Makefile.${cc.cc.CC}" diff --git a/garlic/exp/saiph/numcomm.nix b/garlic/exp/saiph/numcomm.nix index 24a66e1..50b1e0a 100644 --- a/garlic/exp/saiph/numcomm.nix +++ b/garlic/exp/saiph/numcomm.nix @@ -20,7 +20,6 @@ let unitName = "${expName}.nc-${toString numComm}"; # saiph options - devMode = false; inherit (c) numComm; mpi = impi; gitBranch = "garlic/tampi+isend+oss+task+simd"; @@ -57,7 +56,7 @@ let customPkgs = stdexp.replaceMpi conf.mpi; in customPkgs.apps.saiph.override { - inherit devMode numComm mpi gitBranch; + inherit numComm mpi gitBranch; }; pipeline = stdexp.stdPipeline ++ [ exec program ]; From 4ae66adb9aba9cbec7863bb2a63682dcb8b46752 Mon Sep 17 00:00:00 2001 From: Sandra Date: Thu, 12 Nov 2020 19:37:30 +0100 Subject: [PATCH 351/987] Saiph: adding granularity experiment and figures --- garlic/apps/saiph/default.nix | 22 ++++--- garlic/exp/saiph/granularity.nix | 68 +++++++++++++++++++++ garlic/fig/saiph/granularity.R | 100 +++++++++++++++++++++++++++++++ overlay.nix | 9 +++ 4 files changed, 192 insertions(+), 7 deletions(-) create mode 100644 garlic/exp/saiph/granularity.nix create mode 100644 garlic/fig/saiph/granularity.R diff --git a/garlic/apps/saiph/default.nix b/garlic/apps/saiph/default.nix index 1af0775..9fe5f74 100644 --- a/garlic/apps/saiph/default.nix +++ b/garlic/apps/saiph/default.nix @@ -8,10 +8,15 @@ , boost , gitBranch ? "master" , numComm ? null +, nbx ? null +, nby ? null +, nbz ? null , vectFlags ? null #, breakpointHook }: +with stdenv.lib; + stdenv.mkDerivation rec { name = "saiph"; @@ -20,7 +25,7 @@ stdenv.mkDerivation rec { ref = "${gitBranch}"; }; - programPath = "/bin/ExHeat3D"; + programPath = "/bin/Heat3D_vect"; enableParallelBuilding = true; dontStrip = true; @@ -49,15 +54,18 @@ stdenv.mkDerivation rec { makeFlags = [ "-f" "Makefile.${cc.cc.CC}" "apps" - "APP=ExHeat3D" - ( if (numComm != null) then "NUM_COMM=${toString numComm}" else "" ) - ( if (vectFlags != null) then "VECT_FLAGS=${toString vectFlags}" else "" ) - ]; - + "APP=Heat3D_vect" + ] ++ optional (nbx != null) "NB_X=${toString nbx}" + ++ optional (nby != null) "NB_Y=${toString nby}" + ++ optional (nbz != null) "NB_Z=${toString nbz}" + ++ optional (numComm != null) "NUM_COMM=${toString numComm}" + ++ optional (vectFlags != null) "VECT_FLAGS=${toString vectFlags}" + ; + installPhase = '' mkdir -p $out/lib mkdir -p $out/bin cp obj/libsaiphv2.so $out/lib/ - cp bin/ExHeat3D $out/bin/ + cp bin/Heat3D_vect $out/bin/ ''; } diff --git a/garlic/exp/saiph/granularity.nix b/garlic/exp/saiph/granularity.nix new file mode 100644 index 0000000..1efd56e --- /dev/null +++ b/garlic/exp/saiph/granularity.nix @@ -0,0 +1,68 @@ +{ + stdenv +, stdexp +, bsc +, targetMachine +, stages +}: + +with stdenv.lib; + +let + # Initial variable configuration + varConf = with bsc; { + nb = [ 1 2 4 8 ]; + }; + + # Generate the complete configuration for each unit + genConf = with bsc; c: targetMachine.config // rec { + expName = "saiph.granularity"; + unitName = "${expName}.nbx-nby-nbz-${toString nbx}-${toString nby}-${toString nbz}"; + + # saiph options + nbx = c.nb; + nby = c.nb; + nbz = c.nb; + mpi = impi; + gitBranch = "garlic/tampi+isend+oss+task+simd"; + + # Repeat the execution of each unit 50 times + loops = 50; + + # Resources + qos = "debug"; + time = "00:30:00"; + ntasksPerNode = 1; + nodes = 1; + cpuBind = "sockets,verbose"; + jobName = "${unitName}-${gitBranch}"; + }; + + # Compute the array of configurations + configs = stdexp.buildConfigs { + inherit varConf genConf; + }; + + exec = {nextStage, conf, ...}: with conf; stages.exec { + inherit nextStage; + env = '' + export OMP_NUM_THREADS=${toString hw.cpusPerSocket} + export NANOS6_REPORT_PREFIX="#" + export I_MPI_THREAD_SPLIT=1 + export ASAN_SYMBOLIZER_PATH=${bsc.clangOmpss2Unwrapped}/bin/llvm-symbolizer + ''; + }; + + program = {nextStage, conf, ...}: with conf; + let + customPkgs = stdexp.replaceMpi conf.mpi; + in + customPkgs.apps.saiph.override { + inherit nbx nby nbz mpi gitBranch; + }; + + pipeline = stdexp.stdPipeline ++ [ exec program ]; + +in + + stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/fig/saiph/granularity.R b/garlic/fig/saiph/granularity.R new file mode 100644 index 0000000..2b7f377 --- /dev/null +++ b/garlic/fig/saiph/granularity.R @@ -0,0 +1,100 @@ +library(ggplot2) +library(dplyr) +library(scales) +library(jsonlite) + +args=commandArgs(trailingOnly=TRUE) + +# Read the timetable from args[1] +input_file = "input.json" +if (length(args)>0) { input_file = args[1] } + +# Load the dataset in NDJSON format +dataset = jsonlite::stream_in(file(input_file)) %>% + jsonlite::flatten() + + +# We only need the nblocks and time +df = select(dataset, config.nbx, time) %>% + rename(nbx=config.nbx) + +df$nbx = as.factor(df$nbx) + +# Normalize the time by the median +D=group_by(df, nbx) %>% + mutate(tnorm = time / median(time) - 1) %>% + mutate(bad = max(ifelse(abs(tnorm) >= 0.01, 1, 0))) + +D$bad = as.factor(D$bad) + + +print(D) + +ppi=300 +h=5 +w=5 + +png("box.png", width=w*ppi, height=h*ppi, res=ppi) +# +# +# +# Create the plot with the normalized time vs nblocks +p = ggplot(data=D, aes(x=nbx, y=tnorm, color=bad)) + + + # Labels + labs(x="nbx", y="Normalized time", + title=sprintf("Saiph-Heat3D normalized time"), + subtitle=input_file) + + + # Center the title + #theme(plot.title = element_text(hjust = 0.5)) + + + # Black and white mode (useful for printing) + #theme_bw() + + + # Add the maximum allowed error lines + geom_hline(yintercept=c(-0.01, 0.01), + linetype="dashed", color="gray") + + + # Draw boxplots + geom_boxplot() + + scale_color_manual(values=c("black", "brown")) + + + #scale_y_continuous(breaks = scales::pretty_breaks(n = 10)) + + + theme_bw() + + + theme(plot.subtitle=element_text(size=8)) + + theme(legend.position = "none") + #theme(legend.position = c(0.85, 0.85)) + + + + +# Render the plot +print(p) + +## Save the png image +dev.off() +# +png("scatter.png", width=w*ppi, height=h*ppi, res=ppi) +# +## Create the plot with the normalized time vs nblocks +p = ggplot(D, aes(x=nbx, y=time)) + + + labs(x="nbx", y="Time (s)", + title=sprintf("Saiph-Heat3D granularity"), + subtitle=input_file) + + theme_bw() + + theme(plot.subtitle=element_text(size=8)) + + theme(legend.position = c(0.5, 0.88)) + + + geom_point(shape=21, size=3) + + #scale_x_continuous(trans=log2_trans()) + + scale_y_continuous(trans=log2_trans()) + +# Render the plot +print(p) + +# Save the png image +dev.off() diff --git a/overlay.nix b/overlay.nix index f7eac52..8ad4a9b 100644 --- a/overlay.nix +++ b/overlay.nix @@ -330,6 +330,7 @@ let saiph = { numcomm = callPackage ./garlic/exp/saiph/numcomm.nix { }; + granularity = callPackage ./garlic/exp/saiph/granularity.nix { }; }; creams = { @@ -371,6 +372,7 @@ let saiph = with exp.saiph; { numcomm = merge [ numcomm ]; + granularity = merge [ granularity ]; }; heat = with exp.heat; { @@ -402,6 +404,13 @@ let }; }; + saiph = { + granularity = with ds.saiph; pp.rPlot { + script = ./garlic/fig/saiph/granularity.R; + dataset = granularity; + }; + }; + heat = { test = with ds.heat; pp.rPlot { script = ./garlic/fig/heat/test.R; From 42f2227a9f1a8532222ee3cd833b08eedca30a0b Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 13 Nov 2020 10:17:54 +0100 Subject: [PATCH 352/987] sbatch: Use experiment reservation if given --- garlic/stdexp.nix | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/garlic/stdexp.nix b/garlic/stdexp.nix index 7a584de..8764559 100644 --- a/garlic/stdexp.nix +++ b/garlic/stdexp.nix @@ -43,7 +43,14 @@ rec { # experiment, if the reservation is set like with nodes or ntasksPerNode. optionalAttrs (config ? garlic.sbatch.reservation) { inherit (config.garlic.sbatch) reservation; - } // { + } // + # However, if the experiment contains a reservation, that takes priority + # over the one set in the ~/.config/nixpkgs/config.nix file + optionalAttrs (conf ? reservation) { + inherit (conf) reservation; + } // + # Finally, add all the other required parameters + { exclusive = true; inherit nextStage nixPrefix nodes ntasksPerNode time qos jobName; } From 3372f94855088f33235ed202e54246e05a841b73 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 13 Nov 2020 10:38:33 +0100 Subject: [PATCH 353/987] noise: cut long lines and move vim line to bottom --- NOISE | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/NOISE b/NOISE index 6beb56b..ccc460c 100644 --- a/NOISE +++ b/NOISE @@ -107,17 +107,18 @@ ABSTRACT This can induce compilation errors not happening inside nix-build. Do not use to ensure reproducibility. -/* vim: set ts=2 sw=2 tw=72 fo=watqc expandtab spell autoindent: */ - 1.8 Make doesn't rebuild objects When using local repo as src code, (e.g. developer mode on) a make clean at the preBuild stage is required. - Nix sets the same modification date (one second after the Epoch (1970-01-01 at 00:00:01 in UTC timezone) to all the files in the nix store (also those copied from repos). - Makefile checks the files modification date in order to call or not - the compilation instructions. - If any object/binary file exists out of Nix, at the time we build - within Nix, they will be copied with the current data and consequently - not updated during the Nix compilation process. + Nix sets the same modification date (one second after the Epoch + (1970-01-01 at 00:00:01 in UTC timezone) to all the files in the nix + store (also those copied from repos). Makefile checks the files + modification date in order to call or not the compilation + instructions. If any object/binary file exists out of Nix, at the time + we build within Nix, they will be copied with the current data and + consequently not updated during the Nix compilation process. + +/* vim: set ts=2 sw=2 tw=72 fo=watqc expandtab spell autoindent: */ From 18afcb1f44d37c87a27a8456c4b538819fd63d8a Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 17 Nov 2020 10:49:45 +0100 Subject: [PATCH 354/987] Avoid nixpkgs reevaluation The bsc attrset is now extensible: replacing a few bsc packages is very fast. Also we allow the complete bscpkgs to be within other custom overlays (not tested yet). --- garlic/stdexp.nix | 15 ++---- overlay.nix | 122 ++++++++++++++++++++++------------------------ 2 files changed, 60 insertions(+), 77 deletions(-) diff --git a/garlic/stdexp.nix b/garlic/stdexp.nix index 8764559..6b90f8c 100644 --- a/garlic/stdexp.nix +++ b/garlic/stdexp.nix @@ -4,6 +4,7 @@ , stages , targetMachine , garlicTools +, bsc }: with stdenv.lib; @@ -82,18 +83,8 @@ rec { stdPipeline = stdPipelineOverride {}; - # FIXME: Remove this hack and allow custom nixpkgs - bscOverlay = import ../overlay.nix; - nixpkgs = import ; - genPkgs = newOverlay: nixpkgs { - overlays = [ - bscOverlay - newOverlay - ]; - }; - - replaceMpi = mpi: genPkgs (self: super: { - bsc = super.bsc // { inherit mpi; }; + replaceMpi = customMpi: bsc.extend (self: super: { + mpi = customMpi; }); # Generate the experimental units diff --git a/overlay.nix b/overlay.nix index 8ad4a9b..98e6501 100644 --- a/overlay.nix +++ b/overlay.nix @@ -1,6 +1,8 @@ self: /* Future last stage */ super: /* Previous stage */ +with self.lib; + let inherit (self.lib) callPackageWith; inherit (self.lib) callPackagesWith; @@ -10,10 +12,10 @@ let # BSC Packages # --------------------------------------------------------- # - bsc = { + _bsc = makeExtensible (bsc: { # Default MPI implementation to use. Will be overwritten by the # experiments. - mpi = self.bsc.impi; + mpi = bsc.impi; perf = callPackage ./bsc/perf/default.nix { kernel = self.linuxPackages_4_9.kernel; @@ -28,15 +30,15 @@ let mpich = callPackage ./bsc/mpich/default.nix { }; - mpichDebug = self.bsc.mpich.override { enableDebug = true; }; + mpichDebug = bsc.mpich.override { enableDebug = true; }; # Updated version of libpsm2: TODO push upstream. #libpsm2 = callPackage ./bsc/libpsm2/default.nix { }; # Default Intel MPI version is 2019 (the last one) - impi = self.bsc.intelMpi; + impi = bsc.intelMpi; - intelMpi = self.bsc.intelMpi2019; + intelMpi = bsc.intelMpi2019; intelMpi2019 = callPackage ./bsc/intel-mpi/default.nix { # Intel MPI provides a debug version of the MPI library, but @@ -45,17 +47,17 @@ let }; # By default we use Intel compiler 2020 update 1 - iccUnwrapped = self.bsc.icc2020Unwrapped; + iccUnwrapped = bsc.icc2020Unwrapped; icc2020Unwrapped = callPackage ./bsc/intel-compiler/icc2020.nix { - intel-mpi = self.bsc.intelMpi; + intel-mpi = bsc.intelMpi; }; # A wrapper script that puts all the flags and environment vars properly and # calls the intel compiler binary icc = callPackage ./bsc/intel-compiler/default.nix { - iccUnwrapped = self.bsc.iccUnwrapped; - intelLicense = self.bsc.intelLicense; + iccUnwrapped = bsc.iccUnwrapped; + intelLicense = bsc.intelLicense; }; # We need to set the cc.cc.CC and cc.cc.CXX attributes, in order to @@ -75,29 +77,29 @@ let pmix2 = callPackage ./bsc/pmix/pmix2.nix { }; slurm17 = callPackage ./bsc/slurm/default.nix { - pmix = self.bsc.pmix2; + pmix = bsc.pmix2; }; slurm17-libpmi2 = callPackage ./bsc/slurm/pmi2.nix { - pmix = self.bsc.pmix2; + pmix = bsc.pmix2; }; # Use a slurm compatible with MN4 - slurm = self.bsc.slurm17; + slurm = bsc.slurm17; openmpi-mn4 = callPackage ./bsc/openmpi/default.nix { - pmix = self.bsc.pmix2; - pmi2 = self.bsc.slurm17-libpmi2; + pmix = bsc.pmix2; + pmi2 = bsc.slurm17-libpmi2; enableCxx = true; }; - openmpi = self.bsc.openmpi-mn4; + openmpi = bsc.openmpi-mn4; fftw = callPackage ./bsc/fftw/default.nix { }; extrae = callPackage ./bsc/extrae/default.nix { }; - tampi = self.bsc.tampiRelease; + tampi = bsc.tampiRelease; tampiRelease = callPackage ./bsc/tampi/default.nix { }; tampiGit = callPackage ./bsc/tampi/git.nix { }; @@ -109,10 +111,10 @@ let bison = self.bison_3_5; }; - mcxx = self.bsc.mcxxGit; + mcxx = bsc.mcxxGit; # Use nanos6 git by default - nanos6 = self.bsc.nanos6Git; + nanos6 = bsc.nanos6Git; nanos6Latest = callPackage ./bsc/nanos6/default.nix { }; nanos6Git = callPackage ./bsc/nanos6/git.nix { }; @@ -147,17 +149,17 @@ let }; clangOmpss2 = callPackage bsc/llvm-ompss2/default.nix { - clangOmpss2Unwrapped = self.bsc.clangOmpss2Unwrapped; + clangOmpss2Unwrapped = bsc.clangOmpss2Unwrapped; }; stdenvOmpss2 = self.clangStdenv.override { - cc = self.bsc.clangOmpss2; + cc = bsc.clangOmpss2; }; cpic = callPackage ./bsc/apps/cpic/default.nix { - stdenv = self.bsc.stdenvOmpss2; - mpi = self.bsc.mpi; - tampi = self.bsc.tampi; + stdenv = bsc.stdenvOmpss2; + mpi = bsc.mpi; + tampi = bsc.tampi; }; mpptest = callPackage ./bsc/mpptest/default.nix { }; @@ -172,6 +174,12 @@ let garlicTools = callPackage ./garlic/tools.nix {}; + # Aliases + apps = bsc.garlic.apps; + fig = bsc.garlic.fig; + exp = bsc.garlic.exp; + ds = bsc.garlic.ds; + garlic = { # TODO: move into garlic/default.nix @@ -179,19 +187,19 @@ let machines = callPackage ./garlic/machines.nix {}; report = callPackage ./garlic/report.nix { - fig = self.bsc.garlic.fig; + fig = bsc.garlic.fig; }; sedReport = callPackage ./garlic/sedReport.nix { - fig = self.bsc.garlic.fig; + fig = bsc.garlic.fig; }; # Use the configuration for the following target machine - targetMachine = self.garlic.machines.mn4; + targetMachine = bsc.garlic.machines.mn4; # Load some helper functions to generate app variants stdexp = callPackage ./garlic/stdexp.nix { - inherit (self.garlic) targetMachine stages; + inherit (bsc.garlic) targetMachine stages; }; # Apps for Garlic @@ -199,23 +207,23 @@ let apps = { nbody = callPackage ./garlic/apps/nbody/default.nix { - cc = self.bsc.icc; - mpi = self.bsc.mpi; - tampi = self.bsc.tampi; - mcxx = self.bsc.mcxx; + cc = bsc.icc; + mpi = bsc.mpi; + tampi = bsc.tampi; + mcxx = bsc.mcxx; gitBranch = "garlic/seq"; }; saiph = callPackage ./garlic/apps/saiph/default.nix { - cc = self.bsc.clangOmpss2; + cc = bsc.clangOmpss2; }; creams = callPackage ./garlic/apps/creams/default.nix { gnuDef = self.gfortran10 ; # Default GNU compiler version - intelDef = self.bsc.icc ; # Default Intel compiler version + intelDef = bsc.icc ; # Default Intel compiler version gitBranch = "garlic/mpi+send+seq"; - cc = self.bsc.icc; # self.bsc.icc OR self.gfortran10; - mpi = self.bsc.mpi; # self.bsc.mpi OR self.bsc.openmpi-mn4; + cc = bsc.icc; # bsc.icc OR self.gfortran10; + mpi = bsc.mpi; # bsc.mpi OR bsc.openmpi-mn4; }; creamsInput = callPackage ./garlic/apps/creams/input.nix { @@ -223,25 +231,10 @@ let }; hpcg = callPackage ./garlic/apps/hpcg/default.nix { - cc = self.bsc.icc; - mcxx = self.bsc.mcxx; - nanos6 = self.bsc.nanos6; + cc = bsc.icc; + mcxx = bsc.mcxx; + nanos6 = bsc.nanos6; gitBranch = "garlic/oss"; - - # cc = self.bsc.icc; - # gitBranch = "garlic/seq"; - - # cc = self.bsc.icc; - # mpi = self.bsc.mpi; - # gitBranch = "garlic/mpi"; - - # cc = self.bsc.icc; - # gitBranch = "garlic/omp"; - - # cc = self.bsc.icc; - # mpi = self.bsc.mpi; - # gitBranch = "garlic/mpi+omp"; - }; heat = callPackage ./garlic/apps/heat/default.nix { }; @@ -253,8 +246,8 @@ let # # # FIXME: Nanos6 fails to load if we are not using a compatible stdc++ # # version, so we use the same provided by gcc7 -# mcxx = self.bsc.mcxx.override { -# nanos6 = self.bsc.nanos6.override { +# mcxx = bsc.mcxx.override { +# nanos6 = bsc.nanos6.override { # stdenv = self.gcc7Stdenv; # }; # }; @@ -290,7 +283,7 @@ let mpptest = callPackage ./garlic/mpptest { }; ppong = callPackage ./garlic/ppong { - mpi = self.bsc.mpi; + mpi = bsc.mpi; }; hist = callPackage ./garlic/pp/hist { }; @@ -300,7 +293,7 @@ let }; # Post processing tools - pp = with self.bsc.garlicTools; rec { + pp = with bsc.garlicTools; rec { store = callPackage ./garlic/pp/store.nix { }; resultFromTrebuchet = trebuchetStage: (store { experimentStage = getExperimentStage trebuchetStage; @@ -346,10 +339,10 @@ let omp = callPackage ./garlic/exp/hpcg/omp.nix { }; mpi_omp = callPackage ./garlic/exp/hpcg/mpi+omp.nix { }; input = callPackage ./garlic/exp/hpcg/gen.nix { - inherit (self.bsc.garlic.pp) resultFromTrebuchet; + inherit (bsc.garlic.pp) resultFromTrebuchet; }; oss = callPackage ./garlic/exp/hpcg/oss.nix { - genInput = self.bsc.garlic.exp.hpcg.input; + genInput = bsc.garlic.exp.hpcg.input; }; }; @@ -359,7 +352,7 @@ let }; # Datasets used in the figures - ds = with self.bsc.garlic; with pp; { + ds = with bsc.garlic; with pp; { nbody = with exp.nbody; { baseline = merge [ baseline ]; jemalloc = merge [ baseline jemalloc ]; @@ -381,7 +374,7 @@ let }; # Figures generated from the experiments - fig = with self.bsc.garlic; { + fig = with bsc.garlic; { nbody = { baseline = pp.rPlot { script = ./garlic/fig/nbody/baseline.R; @@ -419,13 +412,12 @@ let }; }; }; - }; + }); in { - bsc = bsc; + bsc = _bsc; # Aliases - garlic = bsc.garlic; - inherit (bsc.garlic) exp fig apps ds; + garlic = _bsc.garlic; } From 2a42c1e53efb06b249fa36aa44e5dd8b7a7caf5f Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 17 Nov 2020 10:57:17 +0100 Subject: [PATCH 355/987] Fix aliases --- overlay.nix | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/overlay.nix b/overlay.nix index 98e6501..fcf834a 100644 --- a/overlay.nix +++ b/overlay.nix @@ -174,11 +174,8 @@ let garlicTools = callPackage ./garlic/tools.nix {}; - # Aliases - apps = bsc.garlic.apps; - fig = bsc.garlic.fig; - exp = bsc.garlic.exp; - ds = bsc.garlic.ds; + # Aliases bsc.apps -> bsc.garlic.apps + inherit (bsc.garlic) apps fig exp ds; garlic = { # TODO: move into garlic/default.nix @@ -417,7 +414,8 @@ let in { bsc = _bsc; - - # Aliases garlic = _bsc.garlic; + + # Aliases apps -> bsc.garlic.apps + inherit (_bsc.garlic) apps fig exp ds; } From dabc6be64008fe5cedba11d01305b5692722adef Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 13 Nov 2020 19:06:31 +0100 Subject: [PATCH 356/987] Add more helper functions --- garlic/tools.nix | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/garlic/tools.nix b/garlic/tools.nix index 342a877..deb6762 100644 --- a/garlic/tools.nix +++ b/garlic/tools.nix @@ -41,6 +41,30 @@ let /* Given a trebuchet, returns the experiment */ getExperimentStage = drv: drv.nextStage.nextStage.nextStage; + + # Computes the exponentiation operation + pow = x: n: fold (a: b: a*b) 1 (map (a: x) (range 1 n)); + + # Generates a list of exponents from a to b inclusive, and raises base to + # each element of the list. + expRange = base: a: b: (map (ex: pow base ex) (range a b)); + + # Generates a list of integers by halving number N until it reaches 1. Is + # sorted from the smallest to largest. + divList = N: + let + _divList = n: if (n == 0) then [] else (_divList (n / 2)) ++ [ n ]; + in + _divList N; + + # Generates a set given a list of keys, where all values are null. + genNullAttr = l: genAttrs l (name: null); + + # From the keys in the lis l, generates a set with the values in the set a, + # if they don't exist, they are not taken. Values set to null are removed. + optionalInherit = l: a: filterAttrs (n: v: v!=null) + (overrideExisting (genNullAttr l) a); + }; in gen From b4a3bb0edef056f5f30090dd168ae4ae734e1e99 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 13 Nov 2020 19:08:10 +0100 Subject: [PATCH 357/987] New stdexp resource specification Now the options cpusPerTask ntasksPerNode nodes and jobName are required for the sbatch stage. Also cpuBind has been removed and is always set to "cores,verbose" in the srun stage. --- garlic/stdexp.nix | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/garlic/stdexp.nix b/garlic/stdexp.nix index 6b90f8c..880a504 100644 --- a/garlic/stdexp.nix +++ b/garlic/stdexp.nix @@ -46,14 +46,15 @@ rec { inherit (config.garlic.sbatch) reservation; } // # However, if the experiment contains a reservation, that takes priority - # over the one set in the ~/.config/nixpkgs/config.nix file - optionalAttrs (conf ? reservation) { - inherit (conf) reservation; - } // + # over the one set in the ~/.config/nixpkgs/config.nix file. Add other + # options if they are defined as well. + optionalInherit [ "reservation" "time" "qos" ] conf // # Finally, add all the other required parameters { + inherit nextStage nixPrefix; + # These sbatch options are mandatory + inherit cpusPerTask ntasksPerNode nodes jobName; exclusive = true; - inherit nextStage nixPrefix nodes ntasksPerNode time qos jobName; } ); @@ -62,10 +63,17 @@ rec { inherit nextStage; }; - srun = {nextStage, conf, ...}: stages.srun { - inherit (conf) nixPrefix cpuBind; - inherit nextStage; - }; + srun = {nextStage, conf, ...}: ( + assert (assertMsg (!(conf ? cpuBind)) + "cpuBind is no longer available in the standard srun stage"); + stages.srun { + inherit (conf) nixPrefix; + inherit nextStage; + + # Binding is set to cores always + cpuBind = "cores,verbose"; + } + ); isolate = {nextStage, conf, ...}: stages.isolate { clusterName = machineConf.name; From dea523460ad6584cc1c04fa3822092482428ac37 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 13 Nov 2020 19:13:24 +0100 Subject: [PATCH 358/987] Add slurm affinity experiment --- garlic/exp/slurm/cpu.nix | 60 ++++++++++++++++++++++++++++++++++++++++ overlay.nix | 4 +++ 2 files changed, 64 insertions(+) create mode 100644 garlic/exp/slurm/cpu.nix diff --git a/garlic/exp/slurm/cpu.nix b/garlic/exp/slurm/cpu.nix new file mode 100644 index 0000000..28e6907 --- /dev/null +++ b/garlic/exp/slurm/cpu.nix @@ -0,0 +1,60 @@ +{ + stdenv +, stdexp +, bsc +, targetMachine +, stages +, garlicTools +}: + +with stdenv.lib; +with garlicTools; + +let + + machineConfig = targetMachine.config; + + inherit (machineConfig) hw; + + # Initial variable configuration + varConf = with bsc; { + # Create a list of cpus per task by dividing cpusPerSocket by 2 + # successively. Example: divList 24 = [ 1 3 6 12 24 ] + cpusPerTask = divList hw.cpusPerSocket; + }; + + # Generate the complete configuration for each unit + genConf = with bsc; c: targetMachine.config // rec { + expName = "cpu"; + unitName = "${expName}.${toString cpusPerTask}"; + + inherit (machineConfig) hw; + + # Repeat the execution of each unit 30 times + loops = 1; + + # Resources + qos = "debug"; + inherit (c) cpusPerTask; + ntasksPerNode = hw.cpusPerNode / cpusPerTask; + nodes = 1; + jobName = unitName; + }; + + # Compute the array of configurations + configs = stdexp.buildConfigs { + inherit varConf genConf; + }; + + exec = {nextStage, conf, ...}: with conf; stages.exec { + inherit nextStage; + env = "date"; + }; + + program = {nextStage, conf, ...}: bsc.dummy; + + pipeline = stdexp.stdPipeline ++ [ program ]; + +in + + stdexp.genExperiment { inherit configs pipeline; } diff --git a/overlay.nix b/overlay.nix index fcf834a..027037c 100644 --- a/overlay.nix +++ b/overlay.nix @@ -346,6 +346,10 @@ let heat = { test = callPackage ./garlic/exp/heat/test.nix { }; }; + + slurm = { + cpu = callPackage ./garlic/exp/slurm/cpu.nix { }; + }; }; # Datasets used in the figures From 65918bca21e07fb69ad1b4782c5f98f74d50b09c Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 13 Nov 2020 19:14:01 +0100 Subject: [PATCH 359/987] dummy: Set the programPath for experiments --- bsc/dummy/default.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/bsc/dummy/default.nix b/bsc/dummy/default.nix index be4b21c..41513fd 100644 --- a/bsc/dummy/default.nix +++ b/bsc/dummy/default.nix @@ -9,6 +9,8 @@ stdenv.mkDerivation rec { dontUnpack = true; dontBuild = true; + programPath = "/bin/dummy"; + installPhase = '' mkdir -p $out/bin From e0ca33569bc9eb03499949534d8b4d3bb2cd4226 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 16 Nov 2020 11:58:43 +0100 Subject: [PATCH 360/987] garlic tools: rename divList -> halfList --- garlic/tools.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/garlic/tools.nix b/garlic/tools.nix index deb6762..4402de3 100644 --- a/garlic/tools.nix +++ b/garlic/tools.nix @@ -51,7 +51,7 @@ let # Generates a list of integers by halving number N until it reaches 1. Is # sorted from the smallest to largest. - divList = N: + halfList = N: let _divList = n: if (n == 0) then [] else (_divList (n / 2)) ++ [ n ]; in From 433c8864ea3d204914d88a5d2f125d0603a4ef24 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 16 Nov 2020 11:59:11 +0100 Subject: [PATCH 361/987] Add divisor generator --- garlic/tools.nix | 3 +++ 1 file changed, 3 insertions(+) diff --git a/garlic/tools.nix b/garlic/tools.nix index 4402de3..a3aef52 100644 --- a/garlic/tools.nix +++ b/garlic/tools.nix @@ -57,6 +57,9 @@ let in _divList N; + # A list of all divisors of n, sorted in increased order: + divisors = n: filter (x: (mod n x == 0)) (range 1 n); + # Generates a set given a list of keys, where all values are null. genNullAttr = l: genAttrs l (name: null); From 74537e682caa711af89e5959430136f451123378 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 16 Nov 2020 13:48:07 +0100 Subject: [PATCH 362/987] Use divisors in the slurm cpu experiment --- garlic/exp/slurm/cpu.nix | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/garlic/exp/slurm/cpu.nix b/garlic/exp/slurm/cpu.nix index 28e6907..d7038b1 100644 --- a/garlic/exp/slurm/cpu.nix +++ b/garlic/exp/slurm/cpu.nix @@ -18,9 +18,9 @@ let # Initial variable configuration varConf = with bsc; { - # Create a list of cpus per task by dividing cpusPerSocket by 2 - # successively. Example: divList 24 = [ 1 3 6 12 24 ] - cpusPerTask = divList hw.cpusPerSocket; + # Create a list of cpus per task by computing the divisors of the number of + # cpus per socket, example: divisors 24 = [ 1 2 3 4 6 8 12 24 ] + cpusPerTask = divisors hw.cpusPerSocket; }; # Generate the complete configuration for each unit @@ -36,6 +36,8 @@ let # Resources qos = "debug"; inherit (c) cpusPerTask; + # As cpusPerTask is a divisor of the cpusPerSocket and thus cpusPerNode, we + # know the remainder is zero: ntasksPerNode = hw.cpusPerNode / cpusPerTask; nodes = 1; jobName = unitName; From 641e752bd5c6c862e87c1415d3bf98a8eae00822 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 17 Nov 2020 11:12:12 +0100 Subject: [PATCH 363/987] Add a trace message at unit evaluation --- garlic/stages/unit.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/garlic/stages/unit.nix b/garlic/stages/unit.nix index 31fe580..23ed75e 100644 --- a/garlic/stages/unit.nix +++ b/garlic/stages/unit.nix @@ -39,6 +39,7 @@ let jsonConf = writeText "garlic_config.json" (builtins.toJSON conf); in + builtins.trace "evaluating unit ${conf.unitName}" stdenv.mkDerivation { name = "unit"; preferLocalBuild = true; From 5e50ef19fe9062924a5d522c4589872c9f680192 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 17 Nov 2020 11:17:57 +0100 Subject: [PATCH 364/987] Update experiments with cpusPerTask Try to avoid manually setting the hardware specs and rather use the hw attrset. --- garlic/exp/creams/ss+hybrid.nix | 11 +++++++---- garlic/exp/creams/ss+pure.nix | 7 +++++-- garlic/exp/heat/test.nix | 2 +- garlic/exp/hpcg/gen.nix | 5 +++-- garlic/exp/hpcg/oss.nix | 3 ++- garlic/exp/saiph/granularity.nix | 3 ++- garlic/exp/saiph/numcomm.nix | 3 ++- 7 files changed, 22 insertions(+), 12 deletions(-) diff --git a/garlic/exp/creams/ss+hybrid.nix b/garlic/exp/creams/ss+hybrid.nix index e7fd3fb..5414837 100644 --- a/garlic/exp/creams/ss+hybrid.nix +++ b/garlic/exp/creams/ss+hybrid.nix @@ -29,22 +29,25 @@ let # Generate the complete configuration for each unit genConf = with bsc; c: targetMachine.config // rec { + expName = "creams-ss"; + unitName = "${expName}-${toString nodes}-${gitBranch}"; + inherit (targetMachine.config) hw; # Options for creams cc = icc; mpi = impi; inherit (c.input) granul; inherit (c) gitBranch; - nprocz = 2 * nodes; + nprocz = hw.socketsPerNode * nodes; # Repeat the execution of each unit 30 times loops = 30; # Resources qos = "debug"; - ntasksPerNode = 2; + ntasksPerNode = hw.socketsPerNode; inherit (c.input) time nodes; - cpuBind = "socket,verbose"; - jobName = "creams-ss-${toString nodes}-${gitBranch}"; + cpusPerTask = hw.cpusPerSocket; + jobName = unitName; }; # Compute the array of configurations diff --git a/garlic/exp/creams/ss+pure.nix b/garlic/exp/creams/ss+pure.nix index d2071cb..1acaec1 100644 --- a/garlic/exp/creams/ss+pure.nix +++ b/garlic/exp/creams/ss+pure.nix @@ -22,6 +22,9 @@ let # Generate the complete configuration for each unit genConf = with bsc; c: targetMachine.config // rec { + expName = "creams-ss"; + unitName = "${expName}-${toString nodes}-${gitBranch}"; + inherit (targetMachine.config) hw; # Options for creams cc = icc; mpi = impi; @@ -36,8 +39,8 @@ let qos = "debug"; ntasksPerNode = 48; inherit (c.input) time nodes; - cpuBind = "rank,verbose"; - jobName = "creams-ss-${toString nodes}-${gitBranch}"; + cpusPerTask = hw.cpusPerSocket; + jobName = unitName; }; # Compute the array of configurations diff --git a/garlic/exp/heat/test.nix b/garlic/exp/heat/test.nix index a2d0852..b22a057 100644 --- a/garlic/exp/heat/test.nix +++ b/garlic/exp/heat/test.nix @@ -35,7 +35,7 @@ let nodes = 1; time = "02:00:00"; # Assign one socket to each task (only one process) - cpuBind = "verbose,sockets"; + cpusPerTask = hw.cpusPerSocket; jobName = unitName; }; diff --git a/garlic/exp/hpcg/gen.nix b/garlic/exp/hpcg/gen.nix index 4542b78..cb16cf6 100644 --- a/garlic/exp/hpcg/gen.nix +++ b/garlic/exp/hpcg/gen.nix @@ -18,6 +18,7 @@ let expName = "${c.expName}.gen"; unitName = "${expName}.n${toString n.x}"; + inherit (targetMachine.config) hw; # hpcg options cc = bsc.icc; mcxx = bsc.mcxx; @@ -36,7 +37,7 @@ let nodes = 1; time = "02:00:00"; # task in one socket - cpuBind = "verbose,mask_cpu:0xffffff"; + cpusPerTask = hw.cpusPerSocket; jobName = unitName; }; @@ -74,7 +75,7 @@ let inputTre = genExp configs; #inputExp = getExperimentStage inputTrebuchet; #inputExp = trace inputTrebuchet inputTrebuchet.nextStage; - inputExp = trace (inputTre.name) (getExperimentStage inputTre); + inputExp = getExperimentStage inputTre; # Then load the result. This is only used to ensure that we have the # results, so it has been executed. inputRes = resultFromTrebuchet inputTre; diff --git a/garlic/exp/hpcg/oss.nix b/garlic/exp/hpcg/oss.nix index 002bf12..48b4ef2 100644 --- a/garlic/exp/hpcg/oss.nix +++ b/garlic/exp/hpcg/oss.nix @@ -24,6 +24,7 @@ let expName = "hpcg.oss"; unitName = "${expName}.nb${toString nblocks}"; + inherit (targetMachine.config) hw; # hpcg options n = c.n; nblocks = c.nblocks; @@ -42,7 +43,7 @@ let nodes = 1; time = "02:00:00"; # task in one socket - cpuBind = "verbose,mask_cpu:0xffffff"; + cpusPerTask = hw.cpusPerSocket; jobName = "hpcg-${toString n.x}-${toString n.y}-${toString n.z}-${gitBranch}"; }; diff --git a/garlic/exp/saiph/granularity.nix b/garlic/exp/saiph/granularity.nix index 1efd56e..f0db5c5 100644 --- a/garlic/exp/saiph/granularity.nix +++ b/garlic/exp/saiph/granularity.nix @@ -18,6 +18,7 @@ let genConf = with bsc; c: targetMachine.config // rec { expName = "saiph.granularity"; unitName = "${expName}.nbx-nby-nbz-${toString nbx}-${toString nby}-${toString nbz}"; + inherit (targetMachine.config) hw; # saiph options nbx = c.nb; @@ -34,7 +35,7 @@ let time = "00:30:00"; ntasksPerNode = 1; nodes = 1; - cpuBind = "sockets,verbose"; + cpusPerTask = hw.cpusPerSocket; jobName = "${unitName}-${gitBranch}"; }; diff --git a/garlic/exp/saiph/numcomm.nix b/garlic/exp/saiph/numcomm.nix index 50b1e0a..891f78e 100644 --- a/garlic/exp/saiph/numcomm.nix +++ b/garlic/exp/saiph/numcomm.nix @@ -18,6 +18,7 @@ let genConf = with bsc; c: targetMachine.config // rec { expName = "saiph.numcomm"; unitName = "${expName}.nc-${toString numComm}"; + inherit (targetMachine.config) hw; # saiph options inherit (c) numComm; @@ -32,7 +33,7 @@ let time = "02:00:00"; ntasksPerNode = 2; nodes = 1; - cpuBind = "sockets,verbose"; + cpusPerTask = hw.cpusPerSocket; jobName = "saiph-${toString numComm}-${gitBranch}"; }; From 016422cede43e1fb1913d068895f7ba63123bc6c Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 17 Nov 2020 11:26:35 +0100 Subject: [PATCH 365/987] Update nbody experiment Generate the input based on the target machine description. --- garlic/exp/nbody/tampi.nix | 57 ++++++++++++++++++++------------------ overlay.nix | 17 ++++++------ 2 files changed, 39 insertions(+), 35 deletions(-) diff --git a/garlic/exp/nbody/tampi.nix b/garlic/exp/nbody/tampi.nix index dcd0c9b..09516be 100644 --- a/garlic/exp/nbody/tampi.nix +++ b/garlic/exp/nbody/tampi.nix @@ -4,64 +4,67 @@ , bsc , targetMachine , stages +, garlicTools , enableJemalloc ? false - -# Leave the first CPU per socket unused? -, freeCpu ? false -, particles ? 4096 * 24 +, particles ? null }: with stdenv.lib; +with garlicTools; let - # Initial variable configuration - varConf = with bsc; { - nblocks = [ 12 24 48 96 192 384 768 ]; - }; machineConfig = targetMachine.config; + inherit (machineConfig) hw; + + # Number of cases tested + steps = 7; + + # First value for nblocks: we want to begin by using 1/2 blocks/cpu so we set + # the first number of blocks to cpusPerSocket / 2 + nblocks0 = hw.cpusPerSocket / 2; + + # Initial variable configuration + varConf = with bsc; { + # Create a list with values 2^n with n from 0 to (steps - 1) inclusive + i = expRange 2 0 (steps - 1); + }; + + # Set here the particles, so we don't have an infinite recursion in the + # genConf attrset. + _particles = if (particles != null) + then particles + else 4096 * hw.cpusPerSocket; # Generate the complete configuration for each unit genConf = with bsc; c: targetMachine.config // rec { - expName = "nbody.tampi"; - unitName = "${expName}.nb-${toString nblocks}"; + expName = "nbody-nblocks"; + unitName = "${expName}${toString nblocks}"; inherit (machineConfig) hw; # nbody options - inherit particles; + particles = _particles; timesteps = 10; - inherit (c) nblocks; + nblocks = c.i * nblocks0; totalTasks = ntasksPerNode * nodes; particlesPerTask = particles / totalTasks; blocksize = particlesPerTask / nblocks; - assert1 = assertMsg (nblocks >= hw.cpusPerSocket) - "nblocks too low: ${toString nblocks} < ${toString hw.cpusPerSocket}"; - assert2 = assertMsg (particlesPerTask >= nblocks) - "too few particles: ${toString particlesPerTask} < ${toString nblocks}"; cc = icc; mpi = impi; gitBranch = "garlic/tampi+send+oss+task"; cflags = "-g"; inherit enableJemalloc; - # Repeat the execution of each unit 30 times + # Repeat the execution of each unit 10 times loops = 10; # Resources qos = "debug"; + cpusPerTask = hw.cpusPerSocket; ntasksPerNode = hw.socketsPerNode; nodes = 1; - time = "02:00:00"; - - # If we want to leave one CPU per socket unused - inherit freeCpu; - - cpuBind = if (freeCpu) - then "verbose,mask_cpu:0xfffffe,0xfffffe000000" - else "verbose,sockets"; - - jobName = "bs-${toString blocksize}-${gitBranch}-nbody"; + jobName = unitName; }; # Compute the array of configurations diff --git a/overlay.nix b/overlay.nix index 027037c..f46bdd7 100644 --- a/overlay.nix +++ b/overlay.nix @@ -312,9 +312,10 @@ let tampi = callPackage ./garlic/exp/nbody/tampi.nix { }; # Experiment variants - medium = tampi.override { particles = 24 * 4096; }; - baseline = medium; - freeCpu = baseline.override { freeCpu = true; }; + baseline = tampi; + small = baseline.override { particles = 12 * 4096; }; + # TODO: Update freeCpu using a non-standard pipeline + #freeCpu = baseline.override { freeCpu = true; }; jemalloc = baseline.override { enableJemalloc = true; }; }; @@ -357,7 +358,7 @@ let nbody = with exp.nbody; { baseline = merge [ baseline ]; jemalloc = merge [ baseline jemalloc ]; - freeCpu = merge [ baseline freeCpu ]; + #freeCpu = merge [ baseline freeCpu ]; }; hpcg = with exp.hpcg; { @@ -385,10 +386,10 @@ let script = ./garlic/fig/nbody/jemalloc.R; dataset = ds.nbody.jemalloc; }; - freeCpu = pp.rPlot { - script = ./garlic/fig/nbody/freeCpu.R; - dataset = ds.nbody.freeCpu; - }; + #freeCpu = pp.rPlot { + # script = ./garlic/fig/nbody/freeCpu.R; + # dataset = ds.nbody.freeCpu; + #}; }; hpcg = { From 69af4732415a45ef7e77889977dbf4692719bde9 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 17 Nov 2020 11:31:34 +0100 Subject: [PATCH 366/987] Disable old hpcg experiments --- overlay.nix | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/overlay.nix b/overlay.nix index f46bdd7..890b869 100644 --- a/overlay.nix +++ b/overlay.nix @@ -331,16 +331,20 @@ let }; }; - hpcg = { - serial = callPackage ./garlic/exp/hpcg/serial.nix { }; - mpi = callPackage ./garlic/exp/hpcg/mpi.nix { }; - omp = callPackage ./garlic/exp/hpcg/omp.nix { }; - mpi_omp = callPackage ./garlic/exp/hpcg/mpi+omp.nix { }; - input = callPackage ./garlic/exp/hpcg/gen.nix { + hpcg = rec { + #serial = callPackage ./garlic/exp/hpcg/serial.nix { }; + #mpi = callPackage ./garlic/exp/hpcg/mpi.nix { }; + #omp = callPackage ./garlic/exp/hpcg/omp.nix { }; + #mpi_omp = callPackage ./garlic/exp/hpcg/mpi+omp.nix { }; + #input = callPackage ./garlic/exp/hpcg/gen.nix { + # inherit (bsc.garlic.pp) resultFromTrebuchet; + #}; + genInput = callPackage ./garlic/exp/hpcg/gen.nix { inherit (bsc.garlic.pp) resultFromTrebuchet; }; + oss = callPackage ./garlic/exp/hpcg/oss.nix { - genInput = bsc.garlic.exp.hpcg.input; + inherit genInput; }; }; From ef4bb13a7d788a9ea9898d9c71d2faa5d753dbfb Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 17 Nov 2020 11:32:06 +0100 Subject: [PATCH 367/987] Add all experiments in one dummy target --- overlay.nix | 3 +++ 1 file changed, 3 insertions(+) diff --git a/overlay.nix b/overlay.nix index 890b869..c454b9d 100644 --- a/overlay.nix +++ b/overlay.nix @@ -357,6 +357,9 @@ let }; }; + allExperiments = self.writeText "experiments.json" + (builtins.toJSON bsc.garlic.exp); + # Datasets used in the figures ds = with bsc.garlic; with pp; { nbody = with exp.nbody; { From dcb56643d5581562a899f66f18d2aa7d5306cdfa Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 17 Nov 2020 11:36:42 +0100 Subject: [PATCH 368/987] nbody: add a small experiment --- overlay.nix | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/overlay.nix b/overlay.nix index c454b9d..0910962 100644 --- a/overlay.nix +++ b/overlay.nix @@ -364,6 +364,7 @@ let ds = with bsc.garlic; with pp; { nbody = with exp.nbody; { baseline = merge [ baseline ]; + small = merge [ small ]; jemalloc = merge [ baseline jemalloc ]; #freeCpu = merge [ baseline freeCpu ]; }; @@ -389,6 +390,10 @@ let script = ./garlic/fig/nbody/baseline.R; dataset = ds.nbody.baseline; }; + small = pp.rPlot { + script = ./garlic/fig/nbody/baseline.R; + dataset = ds.nbody.small; + }; jemalloc = pp.rPlot { script = ./garlic/fig/nbody/jemalloc.R; dataset = ds.nbody.jemalloc; From bcb9cf31a391c2ee5112c6f630aabd44e58d0a4d Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 17 Nov 2020 11:42:34 +0100 Subject: [PATCH 369/987] Add datasets for creams experiments --- overlay.nix | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/overlay.nix b/overlay.nix index 0910962..1b79f74 100644 --- a/overlay.nix +++ b/overlay.nix @@ -381,6 +381,11 @@ let heat = with exp.heat; { test = merge [ test ]; }; + + creams = with exp.creams.ss; { + ss.hybrid = merge [ hybrid ]; + ss.pure = merge [ pure ]; + }; }; # Figures generated from the experiments From fe0bd8b20011b6f3ff93e01e563508a32d158dd8 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 17 Nov 2020 12:31:03 +0100 Subject: [PATCH 370/987] creams: fix pure experiment Use machine agnostic specification for resources --- garlic/exp/creams/ss+hybrid.nix | 2 +- garlic/exp/creams/ss+pure.nix | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/garlic/exp/creams/ss+hybrid.nix b/garlic/exp/creams/ss+hybrid.nix index 5414837..226f7a0 100644 --- a/garlic/exp/creams/ss+hybrid.nix +++ b/garlic/exp/creams/ss+hybrid.nix @@ -37,7 +37,7 @@ let mpi = impi; inherit (c.input) granul; inherit (c) gitBranch; - nprocz = hw.socketsPerNode * nodes; + nprocz = ntasksPerNode * nodes; # Repeat the execution of each unit 30 times loops = 30; diff --git a/garlic/exp/creams/ss+pure.nix b/garlic/exp/creams/ss+pure.nix index 1acaec1..c1de84c 100644 --- a/garlic/exp/creams/ss+pure.nix +++ b/garlic/exp/creams/ss+pure.nix @@ -30,16 +30,16 @@ let mpi = impi; granul = 0; gitBranch = "garlic/mpi+send+seq"; - nprocz = 48 * nodes; + nprocz = ntasksPerNode * nodes; # Repeat the execution of each unit 30 times loops = 30; # Resources qos = "debug"; - ntasksPerNode = 48; + ntasksPerNode = hw.cpusPerNode; inherit (c.input) time nodes; - cpusPerTask = hw.cpusPerSocket; + cpusPerTask = 1; jobName = unitName; }; From 33f6ae7e552e5c27a464fa610e28b0ef55115062 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 17 Nov 2020 15:51:09 +0100 Subject: [PATCH 371/987] Add bundled report example --- garlic/bundleReport.nix | 31 +++++++++++++++++++++++++++++++ garlic/report.nix | 18 ++++-------------- garlic/report/Makefile | 4 ++++ garlic/{ => report}/report.tex | 4 ++-- garlic/reportTar.nix | 28 ++++++++++++++++++++++++++++ garlic/sedReport.nix | 28 ++++++++++++++-------------- overlay.nix | 9 +++++++++ 7 files changed, 92 insertions(+), 30 deletions(-) create mode 100644 garlic/bundleReport.nix create mode 100644 garlic/report/Makefile rename garlic/{ => report}/report.tex (85%) create mode 100644 garlic/reportTar.nix diff --git a/garlic/bundleReport.nix b/garlic/bundleReport.nix new file mode 100644 index 0000000..fd84775 --- /dev/null +++ b/garlic/bundleReport.nix @@ -0,0 +1,31 @@ +{ + stdenv +, fig +}: + +stdenv.mkDerivation { + name = "report.tar.gz"; + src = ./report; + buildPhase = '' + pwd + ls -l + grep -o '@[^ @]*@' report.tex | sed 's/@//g' | sort -u > list + + echo "fig:" > fun.nix + echo "'''" >> fun.nix + for line in $(cat list); do + localPath=$(echo $line | tr '.' '/') + echo "mkdir -p $localPath" >> fun.nix + echo "cp -r \''${$line}/* $localPath" >> fun.nix + echo "sed -i 's;@$line@;$localPath;g' report.tex" >> fun.nix + done + echo "'''" >> fun.nix + + echo " ---------- this is the fun.nix -------------" + cat fun.nix + echo " --------------------------------------------" + ''; + installPhase = '' + cp fun.nix $out + ''; +} diff --git a/garlic/report.nix b/garlic/report.nix index fe580a9..6d7dc46 100644 --- a/garlic/report.nix +++ b/garlic/report.nix @@ -8,27 +8,17 @@ , sedReport }: let - # TODO: We can select only which elements we need from fig by using: - # echo [ $(grep -o '@[^ @]*@' garlic/report.tex | sed 's/@//g') ] - # and them importing as valid nix lang. - - # By now, we require all plots - figJSON = writeText "fig.json" (builtins.toJSON fig); sedCmd = (import sedReport) fig; in stdenv.mkDerivation { - name = "report"; - src = ./.; + name = "report.pdf"; + src = ./report; buildInputs = [ jq texlive.combined.scheme-basic ]; buildPhase = '' ${sedCmd} - cat report.tex - pdflatex report.tex -o report.pdf - # Run again to fix figure references - pdflatex report.tex -o report.pdf + make ''; installPhase = '' - mkdir $out - cp report.* $out + cp report.pdf $out ''; } diff --git a/garlic/report/Makefile b/garlic/report/Makefile new file mode 100644 index 0000000..81ae94d --- /dev/null +++ b/garlic/report/Makefile @@ -0,0 +1,4 @@ +all: report.tex + pdflatex report.tex -o report.pdf + # Run again to fix figure references + pdflatex report.tex -o report.pdf diff --git a/garlic/report.tex b/garlic/report/report.tex similarity index 85% rename from garlic/report.tex rename to garlic/report/report.tex index a24cedd..f56c1c9 100644 --- a/garlic/report.tex +++ b/garlic/report/report.tex @@ -14,8 +14,8 @@ time $t$ is measured, as shown in the figure \ref{fig:nbody.test}. % \begin{figure}[h] \centering - \includegraphics[width=0.45\textwidth]{@fig.nbody.baseline@/scatter.png} - \includegraphics[width=0.45\textwidth]{@fig.nbody.baseline@/box.png} + \includegraphics[width=0.45\textwidth]{@fig.nbody.small@/scatter.png} + \includegraphics[width=0.45\textwidth]{@fig.nbody.small@/box.png} \caption{Nbody times with varying block size} \label{fig:nbody.test} \end{figure} diff --git a/garlic/reportTar.nix b/garlic/reportTar.nix new file mode 100644 index 0000000..c2b274b --- /dev/null +++ b/garlic/reportTar.nix @@ -0,0 +1,28 @@ +{ + stdenv +, fig +, writeText +, busybox +, jq +, texlive +, bundleReport +}: +let + + genCmd = (import bundleReport) fig; +in + stdenv.mkDerivation { + name = "report.tar.gz"; + src = ./report; + buildInputs = [ jq texlive.combined.scheme-basic ]; + buildPhase = '' + ${genCmd} + ls -ltR + cat report.tex + make + ''; + installPhase = '' + cd .. + tar -czf $out report + ''; + } diff --git a/garlic/sedReport.nix b/garlic/sedReport.nix index 37dd1d9..b776681 100644 --- a/garlic/sedReport.nix +++ b/garlic/sedReport.nix @@ -2,18 +2,18 @@ stdenv , fig }: - stdenv.mkDerivation { - name = "report"; - src = ./.; - buildPhase = '' - grep -o '@[^ @]*@' report.tex | sed 's/@//g' | sort -u > list +stdenv.mkDerivation { + name = "sedReport"; + src = ./report; + buildPhase = '' + grep -o '@[^ @]*@' report.tex | sed 's/@//g' | sort -u > list - echo "fig:" > fun.nix - echo "'''" >> fun.nix - sed 's:\(^.*\)$:sed -i "s;@\1@;''${\1};g" report.tex:g' list >> fun.nix - echo "'''" >> fun.nix - ''; - installPhase = '' - cp fun.nix $out - ''; - } + echo "fig:" > fun.nix + echo "'''" >> fun.nix + sed 's:\(^.*\)$:sed -i "s;@\1@;''${\1};g" report.tex:g' list >> fun.nix + echo "'''" >> fun.nix + ''; + installPhase = '' + cp fun.nix $out + ''; +} diff --git a/overlay.nix b/overlay.nix index 1b79f74..289c661 100644 --- a/overlay.nix +++ b/overlay.nix @@ -186,10 +186,19 @@ let report = callPackage ./garlic/report.nix { fig = bsc.garlic.fig; }; + sedReport = callPackage ./garlic/sedReport.nix { fig = bsc.garlic.fig; }; + bundleReport = callPackage ./garlic/bundleReport.nix { + fig = bsc.garlic.fig; + }; + + reportTar = callPackage ./garlic/reportTar.nix { + fig = bsc.garlic.fig; + }; + # Use the configuration for the following target machine targetMachine = bsc.garlic.machines.mn4; From e1e34ddf75ddba903e65917bc24ddb1842c5044d Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 17 Nov 2020 16:09:38 +0100 Subject: [PATCH 372/987] exec: add pre and post code to allow cleanup tasks --- garlic/stages/exec.nix | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/garlic/stages/exec.nix b/garlic/stages/exec.nix index eb49e96..0ed199f 100644 --- a/garlic/stages/exec.nix +++ b/garlic/stages/exec.nix @@ -6,7 +6,9 @@ { nextStage , env ? "" +, pre ? "" , argv ? [] +, post ? "" }: with builtins; @@ -14,6 +16,7 @@ with garlicTools; let argvString = concatStringsSep " " (map (e: toString e) argv); + execMethod = if (post == "") then "exec " else ""; in stdenv.mkDerivation { name = "exec"; @@ -24,7 +27,9 @@ stdenv.mkDerivation { #!/bin/sh ${env} - exec ${stageProgram nextStage} ${argvString} + ''+pre+'' + ${execMethod}${stageProgram nextStage} ${argvString} + ''+post+'' EOF chmod +x $out ''; From d2d3ccf332d6d09e4a90c02e0c27d22aa6d03f73 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 17 Nov 2020 18:33:57 +0100 Subject: [PATCH 373/987] Idea for FS naming convention --- garlic/machines.nix | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/garlic/machines.nix b/garlic/machines.nix index fab56ed..e37b6f5 100644 --- a/garlic/machines.nix +++ b/garlic/machines.nix @@ -18,6 +18,18 @@ cachelineBytes = 64; }; }; + + # Experimental naming convention for the FS + #fs = { + # cluster = { + # fast = "/gpfs/scratch/bsc15/bsc15557/garlic"; + # reliable = "/gpfs/projects/bsc15/garlic"; + # }; + # node = { + # fast = "$TMPDIR"; + # }; + #}; + # TODO: Add the specific details for SLURM and the interconection here }; } From a076d7d3d05bdff945a4cdb521847e3bd248c77d Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 18 Nov 2020 14:00:19 +0100 Subject: [PATCH 374/987] Add paraver with some patches for tiling WM --- bsc/paraver/default.nix | 65 +++++++++++++++++++++++++++++++++++++++ bsc/paraver/kernel.nix | 35 +++++++++++++++++++++ bsc/paraver/wxparaver.nix | 47 ++++++++++++++++++++++++++++ overlay.nix | 7 +++++ 4 files changed, 154 insertions(+) create mode 100644 bsc/paraver/default.nix create mode 100644 bsc/paraver/kernel.nix create mode 100644 bsc/paraver/wxparaver.nix diff --git a/bsc/paraver/default.nix b/bsc/paraver/default.nix new file mode 100644 index 0000000..7c441b8 --- /dev/null +++ b/bsc/paraver/default.nix @@ -0,0 +1,65 @@ +{ + stdenv +, fetchFromGitHub +, boost +, libxml2 +, xml2 +, fetchurl +, wxGTK31 +, autoconf +, automake +}: + +let + wx = wxGTK31; +in +stdenv.mkDerivation rec { + pname = "wxparaver"; + version = "4.8.2"; + + src = fetchurl { + url = "https://ftp.tools.bsc.es/wxparaver/wxparaver-${version}-src.tar.bz2"; + sha256 = "0b8rrhnf7h8j72pj6nrxkrbskgg9b5w60nxi47nxg6275qvfq8hd"; + }; + + enableParallelBuilding = true; + + # What would we do without the great gamezelda: + # https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=wxparaver + postPatch = '' + pushd src/wxparaver + sed -i 's|-lparaver-kernel -lparaver-api|-L../../paraver-kernel/src/.libs -L../../paraver-kernel/api/.libs -lparaver-kernel -lparaver-api|g' src/Makefile.am + sed -i 's|^wxparaver_bin_CXXFLAGS =.*|& -I../../paraver-kernel -I../../paraver-kernel/api|' src/Makefile.am + sed -i 's| -L$PARAVER_LIBDIR||g' configure.ac + popd + + # Patch shebang as /usr/bin/env is missing in nix + sed -i '1c#!/bin/sh' src/paraver-cfgs/install.sh + + sed -i '1524d' src/wxparaver/src/gtimeline.cpp + sed -i '806d' src/wxparaver/src/gtimeline.cpp + sed -i '142d' src/wxparaver/src/paravermain.cpp + ''; + #TODO: Move the sed commands to proper patches (and maybe send them upstream?) + + preConfigure = '' + pushd src/wxparaver + autoreconf -i -f + popd + ''; + + configureFlags = [ + "--with-boost=${boost}" + "--with-wx-config=${wx}/bin/wx-config" + ]; + + buildInputs = [ + boost + xml2 + libxml2.dev + wx + autoconf + automake + ]; + +} diff --git a/bsc/paraver/kernel.nix b/bsc/paraver/kernel.nix new file mode 100644 index 0000000..0a6c0b9 --- /dev/null +++ b/bsc/paraver/kernel.nix @@ -0,0 +1,35 @@ +{ stdenv +, fetchFromGitHub +, boost +, libxml2 +, xml2 +, fetchurl +, symlinkJoin +}: + +stdenv.mkDerivation rec { + pname = "paraver-kernel"; + version = "4.8.2"; + + src = fetchurl { + url = "https://ftp.tools.bsc.es/wxparaver/wxparaver-${version}-src.tar.bz2"; + sha256 = "0b8rrhnf7h8j72pj6nrxkrbskgg9b5w60nxi47nxg6275qvfq8hd"; + }; + + postUnpack = "sourceRoot=$sourceRoot/src/paraver-kernel"; + + enableParallelBuilding = true; + + preConfigure = '' + configureFlagsArray=( + "--with-boost=${boost}" + ) + ''; + + buildInputs = [ + boost + xml2 + libxml2.dev + ]; + +} diff --git a/bsc/paraver/wxparaver.nix b/bsc/paraver/wxparaver.nix new file mode 100644 index 0000000..5a2dfce --- /dev/null +++ b/bsc/paraver/wxparaver.nix @@ -0,0 +1,47 @@ +{ + stdenv +, fetchFromGitHub +, boost +, libxml2 +, xml2 +, fetchurl +, wxGTK30-gtk3 +, paraver-kernel +}: + +let + wx = wxGTK30-gtk3; +in +stdenv.mkDerivation rec { + pname = "wxparaver"; + version = "4.8.2"; + + src = fetchurl { + url = "https://ftp.tools.bsc.es/wxparaver/wxparaver-${version}-src.tar.bz2"; + sha256 = "0b8rrhnf7h8j72pj6nrxkrbskgg9b5w60nxi47nxg6275qvfq8hd"; + }; + + postUnpack = "sourceRoot=$sourceRoot/src/wxparaver"; + enableParallelBuilding = true; + + preConfigure = '' + configureFlagsArray=( + "--with-boost=${boost}" + "--with-wx-config=${wx}/bin/wx-config" + --with-wxpropgrid-dir= + "--with-paraver=${paraver-kernel}" + "--enable-debug=yes" + "CXXFLAGS=-g" + "CFLAGS=-g" + ) + ''; + + buildInputs = [ + boost + xml2 + libxml2.dev + wx + paraver-kernel + ]; + +} diff --git a/overlay.nix b/overlay.nix index 289c661..71a0479 100644 --- a/overlay.nix +++ b/overlay.nix @@ -97,6 +97,13 @@ let fftw = callPackage ./bsc/fftw/default.nix { }; + paraver = callPackage ./bsc/paraver/default.nix { }; + paraverDebug = bsc.paraver.overrideAttrs (old: + { + dontStrip = true; + enableDebugging = true; + }); + extrae = callPackage ./bsc/extrae/default.nix { }; tampi = bsc.tampiRelease; From e65c801a20a98d792f59e14c03f12b94ae019e2b Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 19 Nov 2020 16:36:47 +0100 Subject: [PATCH 375/987] paraver: Downgrade wx to 2.8 and add wxpropgrid Fixes a problem with i3 when opening a new timeline view, which caused a rapid switch between paraver main window and the timeline. --- bsc/paraver/default.nix | 12 +++++++----- bsc/wxpropgrid/default.nix | 26 ++++++++++++++++++++++++++ overlay.nix | 1 + 3 files changed, 34 insertions(+), 5 deletions(-) create mode 100644 bsc/wxpropgrid/default.nix diff --git a/bsc/paraver/default.nix b/bsc/paraver/default.nix index 7c441b8..b57a913 100644 --- a/bsc/paraver/default.nix +++ b/bsc/paraver/default.nix @@ -5,13 +5,14 @@ , libxml2 , xml2 , fetchurl -, wxGTK31 +, wxGTK28 , autoconf , automake +, wxpropgrid }: let - wx = wxGTK31; + wx = wxGTK28; in stdenv.mkDerivation rec { pname = "wxparaver"; @@ -36,9 +37,9 @@ stdenv.mkDerivation rec { # Patch shebang as /usr/bin/env is missing in nix sed -i '1c#!/bin/sh' src/paraver-cfgs/install.sh - sed -i '1524d' src/wxparaver/src/gtimeline.cpp - sed -i '806d' src/wxparaver/src/gtimeline.cpp - sed -i '142d' src/wxparaver/src/paravermain.cpp + #sed -i '1524d' src/wxparaver/src/gtimeline.cpp + #sed -i '806d' src/wxparaver/src/gtimeline.cpp + #sed -i '142d' src/wxparaver/src/paravermain.cpp ''; #TODO: Move the sed commands to proper patches (and maybe send them upstream?) @@ -51,6 +52,7 @@ stdenv.mkDerivation rec { configureFlags = [ "--with-boost=${boost}" "--with-wx-config=${wx}/bin/wx-config" + "--with-wxpropgrid-dir=${wxpropgrid}" ]; buildInputs = [ diff --git a/bsc/wxpropgrid/default.nix b/bsc/wxpropgrid/default.nix new file mode 100644 index 0000000..fc4c6da --- /dev/null +++ b/bsc/wxpropgrid/default.nix @@ -0,0 +1,26 @@ +{ + stdenv +, fetchurl +, wxGTK28 +}: + +let + #wx = wxGTK31; # BUG + wx = wxGTK28; +in +stdenv.mkDerivation rec { + pname = "wxpropgrid"; + version = "1.4.15"; + + src = fetchurl { + url = "http://prdownloads.sourceforge.net/wxpropgrid/wxpropgrid-${version}-src.tar.gz"; + sha256 = "1f62468x5s4h775bn5svlkv0lzzh06aciljpiqn5k3w2arkaijgh"; + }; + + enableParallelBuilding = true; + + buildInputs = [ + wx + ]; + +} diff --git a/overlay.nix b/overlay.nix index 71a0479..8db7c7d 100644 --- a/overlay.nix +++ b/overlay.nix @@ -97,6 +97,7 @@ let fftw = callPackage ./bsc/fftw/default.nix { }; + wxpropgrid = callPackage ./bsc/wxpropgrid/default.nix { }; paraver = callPackage ./bsc/paraver/default.nix { }; paraverDebug = bsc.paraver.overrideAttrs (old: { From daadcc93d0a390cacc4f90317e7c4c252896cb88 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 19 Nov 2020 18:50:30 +0100 Subject: [PATCH 376/987] ompss2: fix to the last release --- bsc/llvm-ompss2/clang-git.nix | 79 +++++++++++++++++++++++++++++++++++ bsc/llvm-ompss2/clang.nix | 23 ++++++---- bsc/mcxx/default.nix | 16 ++++--- bsc/nanos6/default.nix | 40 +++++++++++------- bsc/nanos6/git.nix | 6 +-- overlay.nix | 17 +++----- 6 files changed, 136 insertions(+), 45 deletions(-) create mode 100644 bsc/llvm-ompss2/clang-git.nix diff --git a/bsc/llvm-ompss2/clang-git.nix b/bsc/llvm-ompss2/clang-git.nix new file mode 100644 index 0000000..40631e7 --- /dev/null +++ b/bsc/llvm-ompss2/clang-git.nix @@ -0,0 +1,79 @@ +{ + stdenv +, fetchgit +, cmake +, lld +, bash +, python3 +, perl +, which +, libelf +, libffi +, pkg-config +, enableDebug ? true +}: + +stdenv.mkDerivation rec { + version = "${src.shortRev}"; + pname = "clang-ompss2"; + enableParallelBuilding = true; + isClang = true; + #isGNU = true; + + passthru = { + CC = "clang"; + CXX = "clang++"; + }; + + isClangWithOmpss = true; + + buildInputs = [ + which + bash + python3 + perl + cmake + lld + libelf + libffi + pkg-config + ]; + + hardeningDisable = [ "fortify" ]; + + cmakeBuildType = if enableDebug then "Debug" else "Release"; + + dontUseCmakeBuildDir = true; + enableAssertions = if enableDebug then "ON" else "OFF"; + + preConfigure = '' + mkdir -p build + cd build + cmakeDir="../llvm" + cmakeFlagsArray=( + "-DLLVM_ENABLE_LLD=ON" + "-DCMAKE_CXX_FLAGS_DEBUG=-g -ggnu-pubnames" + "-DCMAKE_EXE_LINKER_FLAGS_DEBUG=-Wl,-gdb-index" + "-DLLVM_LIT_ARGS=-sv --xunit-xml-output=xunit.xml" + "-DLLVM_ENABLE_PROJECTS=clang;openmp;compiler-rt" + "-DLLVM_ENABLE_ASSERTIONS=${enableAssertions}" + "-DLLVM_INSTALL_TOOLCHAIN_ONLY=ON" + ) + ''; + + # Remove support for GNU and Intel Openmp + postInstall = '' + rm $out/lib/libgomp* + rm $out/lib/libiomp* + ''; + +# About "-DCLANG_DEFAULT_NANOS6_HOME=${nanos6}", we could specify a default +# nanos6 installation, but this is would require a recompilation of clang each +# time nanos6 is changed. Better to use the environment variable NANOS6_HOME, +# and specify nanos6 at run time. + + src = builtins.fetchGit { + url = "ssh://git@bscpm02.bsc.es/llvm-ompss/llvm-mono.git"; + ref = "master"; + }; +} diff --git a/bsc/llvm-ompss2/clang.nix b/bsc/llvm-ompss2/clang.nix index 40631e7..9d57186 100644 --- a/bsc/llvm-ompss2/clang.nix +++ b/bsc/llvm-ompss2/clang.nix @@ -1,6 +1,6 @@ { stdenv -, fetchgit +, fetchFromGitHub , cmake , lld , bash @@ -10,15 +10,22 @@ , libelf , libffi , pkg-config -, enableDebug ? true +, enableDebug ? false }: stdenv.mkDerivation rec { - version = "${src.shortRev}"; + version = "2020.11"; pname = "clang-ompss2"; + + src = fetchFromGitHub { + owner = "bsc-pm"; + repo = "llvm"; + rev = "github-release-${version}"; + sha256 = "00z3xlw36lbiz84a47k95gin9fzsni5jd1f71dpg5l2qjy961qma"; + }; + enableParallelBuilding = true; isClang = true; - #isGNU = true; passthru = { CC = "clang"; @@ -39,6 +46,9 @@ stdenv.mkDerivation rec { pkg-config ]; + # Error with -D_FORTIFY_SOURCE=2, see https://bugs.gentoo.org/636604: + # /build/source/compiler-rt/lib/tsan/dd/dd_interceptors.cpp:225:20: + # error: redefinition of 'realpath' hardeningDisable = [ "fortify" ]; cmakeBuildType = if enableDebug then "Debug" else "Release"; @@ -71,9 +81,4 @@ stdenv.mkDerivation rec { # nanos6 installation, but this is would require a recompilation of clang each # time nanos6 is changed. Better to use the environment variable NANOS6_HOME, # and specify nanos6 at run time. - - src = builtins.fetchGit { - url = "ssh://git@bscpm02.bsc.es/llvm-ompss/llvm-mono.git"; - ref = "master"; - }; } diff --git a/bsc/mcxx/default.nix b/bsc/mcxx/default.nix index 4b05ca3..b903f96 100644 --- a/bsc/mcxx/default.nix +++ b/bsc/mcxx/default.nix @@ -1,4 +1,6 @@ -{ stdenv +{ + stdenv +, fetchFromGitHub , autoreconfHook , nanos6 , gperf @@ -13,17 +15,19 @@ stdenv.mkDerivation rec { pname = "mcxx"; - version = "${src.shortRev}"; + version = "2.3-8e998824"; passthru = { CC = "mcc"; CXX = "mcxx"; }; - # Use patched Extrae version - src = builtins.fetchGit { - url = "https://github.com/bsc-pm/mcxx"; - ref = "master"; + # mcxx doesn't use tags, so we pick the same version of the ompss2 release + src = fetchFromGitHub { + owner = "bsc-pm"; + repo = pname; + rev = "8e998824f0fde001340dbec369ef59e40e53761e"; + sha256 = "0ix20l50m52kcw12a6dhrasgzjjc2y73j55c994sbhyd133n3pln"; }; enableParallelBuilding = true; diff --git a/bsc/nanos6/default.nix b/bsc/nanos6/default.nix index a0d7abd..0a13bdb 100644 --- a/bsc/nanos6/default.nix +++ b/bsc/nanos6/default.nix @@ -1,43 +1,53 @@ { stdenv -, fetchurl +, fetchFromGitHub , automake , autoconf +, autoreconfHook , libtool , pkg-config , numactl , hwloc , papi -#, gnumake , extrae , boost +, enableJemalloc ? false +, jemalloc ? null +, cachelineBytes ? 64 }: with stdenv.lib; stdenv.mkDerivation rec { pname = "nanos6"; - version = "2.4"; + version = "2.5"; - src = fetchurl { - url = "https://pm.bsc.es/ftp/ompss-2/releases/ompss-2-2020.06.tar.gz"; - sha256 = "0f9hy2avblv31wi4910x81wc47dwx8x9nd72y02lgrhl7fc9i2sf"; + src = fetchFromGitHub { + owner = "bsc-pm"; + repo = "nanos6"; + rev = "version-${version}"; + sha256 = "1wyr8liyz1l7rbf5flxihabasm887bq2jcp2csma7b9rhrfyhkm1"; }; - enableParallelBuilding = false; - preConfigure = '' - cd ${pname}-${version} - sed -i 's|/bin/echo|echo|g' loader/scripts/common.sh loader/scripts/lint/common.sh + prePatch = '' + patchShebangs scripts/generate_config.sh ''; - configureFlags = [ - "--with-symbol-resolution=indirect" - ]; + enableParallelBuilding = true; - #configureFlags = [] - # ++ (if (extrae != null) then ["--with-extrae=${extrae}"] else [""]); + preConfigure = '' + export CACHELINE_WIDTH=${toString cachelineBytes} + ''; + + configureFlags = [] ++ + optional enableJemalloc "--with-jemalloc=${jemalloc}"; + + # The "bindnow" flags are incompatible with ifunc resolution mechanism. We + # disable all by default, which includes bindnow. + hardeningDisable = [ "all" ]; buildInputs = [ + autoreconfHook autoconf automake libtool diff --git a/bsc/nanos6/git.nix b/bsc/nanos6/git.nix index 50f7650..2959e1d 100644 --- a/bsc/nanos6/git.nix +++ b/bsc/nanos6/git.nix @@ -13,6 +13,7 @@ , autoreconfHook , enableJemalloc ? false , jemalloc ? null +, cachelineBytes ? 64 }: with stdenv.lib; @@ -21,12 +22,10 @@ stdenv.mkDerivation rec { pname = "nanos6"; version = "${src.shortRev}"; branch = "master"; - cacheline-width = "64"; src = builtins.fetchGit { url = "ssh://git@bscpm02.bsc.es/nanos6/nanos6"; ref = branch; - rev = "bd306f903c7a4396f579402666082f5a7c34570b"; }; prePatch = '' @@ -36,7 +35,7 @@ stdenv.mkDerivation rec { enableParallelBuilding = true; preConfigure = '' - export CACHELINE_WIDTH=${cacheline-width} + export CACHELINE_WIDTH=${toString cacheline-width} export NANOS6_GIT_VERSION=${src.rev} export NANOS6_GIT_BRANCH=${branch} ''; @@ -54,7 +53,6 @@ stdenv.mkDerivation rec { automake libtool pkg-config - perl boost numactl hwloc diff --git a/overlay.nix b/overlay.nix index 8db7c7d..276bf81 100644 --- a/overlay.nix +++ b/overlay.nix @@ -111,19 +111,14 @@ let tampiRelease = callPackage ./bsc/tampi/default.nix { }; tampiGit = callPackage ./bsc/tampi/git.nix { }; - mcxxGit = callPackage ./bsc/mcxx/default.nix { - bison = self.bison_3_5; - }; - + mcxx = bsc.mcxxRelease; + mcxxRelease = callPackage ./bsc/mcxx/default.nix { }; mcxxRarias = callPackage ./bsc/mcxx/rarias.nix { bison = self.bison_3_5; }; - mcxx = bsc.mcxxGit; - - # Use nanos6 git by default - nanos6 = bsc.nanos6Git; - nanos6Latest = callPackage ./bsc/nanos6/default.nix { }; + nanos6 = bsc.nanos6Release; + nanos6Release = callPackage ./bsc/nanos6/default.nix { }; nanos6Git = callPackage ./bsc/nanos6/git.nix { }; jemalloc = self.jemalloc.overrideAttrs (old: @@ -135,7 +130,7 @@ let ]; }); - nanos6Jemalloc = callPackage ./bsc/nanos6/git.nix { + nanos6Jemalloc = nanos6.override { enableJemalloc = true; }; @@ -189,7 +184,7 @@ let # TODO: move into garlic/default.nix # Configuration for the machines - machines = callPackage ./garlic/machines.nix {}; + machines = callPackage ./garlic/machines.nix { }; report = callPackage ./garlic/report.nix { fig = bsc.garlic.fig; From e8f649327aba296b6eabae2780b3a0cb472f2bf3 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 20 Nov 2020 13:54:45 +0100 Subject: [PATCH 377/987] exec: Avoid variable expansion at build All bash variables passed in env, pre or post are now expanded at execution time.. --- garlic/stages/exec.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/garlic/stages/exec.nix b/garlic/stages/exec.nix index 0ed199f..b2a8e1c 100644 --- a/garlic/stages/exec.nix +++ b/garlic/stages/exec.nix @@ -23,7 +23,7 @@ stdenv.mkDerivation { preferLocalBuild = true; phases = [ "installPhase" ]; installPhase = '' - cat > $out < $out <<'EOF' #!/bin/sh ${env} From 37bd4c33f2ecbdc25564c548dbc66af0c85120b8 Mon Sep 17 00:00:00 2001 From: David Alvarez Date: Mon, 16 Nov 2020 19:21:18 +0100 Subject: [PATCH 378/987] Add BigSort MPI+OpenMP --- garlic/apps/bigsort/default.nix | 51 +++++++++++++++++++++++++++++++++ overlay.nix | 6 ++++ 2 files changed, 57 insertions(+) create mode 100644 garlic/apps/bigsort/default.nix diff --git a/garlic/apps/bigsort/default.nix b/garlic/apps/bigsort/default.nix new file mode 100644 index 0000000..05c0342 --- /dev/null +++ b/garlic/apps/bigsort/default.nix @@ -0,0 +1,51 @@ +{ + stdenv +, cc +, nanos6 ? null +, mcxx ? null +, mpi +, gitBranch +}: + +with stdenv.lib; +stdenv.mkDerivation rec { + name = "bigsort"; + + src = builtins.fetchGit { + url = "ssh://git@bscpm02.bsc.es/dalvare1/bigsort.git"; + ref = "${gitBranch}"; + }; + + #sourceRoot = "./BigSort"; + + preBuild = '' + cd BigSort + export I_MPI_CXX=${cc.cc.CXX} + ''; + + buildInputs = [ + cc + mpi + ] + ++ optional (mcxx != null) mcxx + ++ optional (nanos6 != null) nanos6; + + makeFlags = [ + "CC=${cc.cc.CC}" + "CXX=${cc.cc.CXX}" + "CPP_BIN=mpicxx" + "CLUSTER=MareNostrum4" + "OPENMP=yes" + "Debug=no" + "OPENMP_FLAGS=-qopenmp" + ]; + + enableParallelBuilding = true; + + installPhase = '' + mkdir -p $out/bin + cp bigsort $out/bin/BigSort + ''; + + programPath = "/bin/BigSort"; +} diff --git a/overlay.nix b/overlay.nix index 276bf81..da2b12c 100644 --- a/overlay.nix +++ b/overlay.nix @@ -246,6 +246,12 @@ let gitBranch = "garlic/oss"; }; + bigsort = callPackage ./garlic/apps/bigsort/default.nix { + cc = self.bsc.icc; + mpi = self.bsc.mpi; + gitBranch = "garlic/mpi+send+omp+task"; + }; + heat = callPackage ./garlic/apps/heat/default.nix { }; # heat = callPackage ./garlic/apps/heat/default.nix { # # FIXME: The heat program must be able to compile with gcc9 and newer From a0dac209e3b3b9763264b9d8d7f4bc038f20fda7 Mon Sep 17 00:00:00 2001 From: David Alvarez Date: Tue, 17 Nov 2020 15:36:42 +0100 Subject: [PATCH 379/987] First test experiment --- garlic/exp/bigsort/mpi+omp.nix | 78 ++++++++++++++++++++++++++++++++++ overlay.nix | 4 ++ 2 files changed, 82 insertions(+) create mode 100644 garlic/exp/bigsort/mpi+omp.nix diff --git a/garlic/exp/bigsort/mpi+omp.nix b/garlic/exp/bigsort/mpi+omp.nix new file mode 100644 index 0000000..d53ff3b --- /dev/null +++ b/garlic/exp/bigsort/mpi+omp.nix @@ -0,0 +1,78 @@ +{ + stdenv +, stdexp +, bsc +, targetMachine +, stages +}: + +with stdenv.lib; + +let + # Initial variable configuration + varConf = with bsc; { + n = [ 1024 ]; + bs = [ 256 ]; + }; + + # Generate the complete configuration for each unit + genConf = with bsc; c: targetMachine.config // rec { + expName = "bigsort.mpi+omp"; + unitName = "${expName}.bs${toString bs}"; + + # hpcg options + n = c.n; + bs = c.bs; + cc = bsc.icc; + mpi = bsc.mpi; # TODO: Remove this for oss + gitBranch = "garlic/mpi+send+omp+task"; + + # Repeat the execution of each unit 30 times + loops = 1; + + # Resources + qos = "debug"; + ntasksPerNode = 1; + nodes = 1; + time = "01:00:00"; + # task in one socket + cpuBind = "verbose,mask_cpu:0xffffff"; + jobName = "bigsort-${toString n}-${toString bs}-${gitBranch}"; + }; + + # Compute the array of configurations + configs = stdexp.buildConfigs { + inherit varConf genConf; + }; + + # input = genInput configs; + + exec = {nextStage, conf, ...}: with conf; stages.exec { + inherit nextStage; + #env = "NANOS6_DEPENDENCIES=discrete"; + argv = [ + "${toString n}" + "${toString bs}" + "test" + "test2" + #"${toString inputFile}" + #"${toString outputFile}" + "$TMPDIR" + "${toString (builtins.div bs 2)}" + ]; + }; + + program = {nextStage, conf, ...}: with conf; + let + customPkgs = stdexp.replaceMpi conf.mpi; + in + customPkgs.apps.bigsort.override { + inherit cc gitBranch; + }; + + pipeline = stdexp.stdPipeline ++ [ exec program ]; + +in + + #{ inherit configs pipeline; } + stdexp.genExperiment { inherit configs pipeline; } diff --git a/overlay.nix b/overlay.nix index da2b12c..f61ad6d 100644 --- a/overlay.nix +++ b/overlay.nix @@ -370,6 +370,10 @@ let test = callPackage ./garlic/exp/heat/test.nix { }; }; + bigsort = { + test = callPackage ./garlic/exp/bigsort/mpi+omp.nix { }; + }; + slurm = { cpu = callPackage ./garlic/exp/slurm/cpu.nix { }; }; From 0c438d4daca416295898d59999cc89ec3d3b8d5b Mon Sep 17 00:00:00 2001 From: David Alvarez Date: Tue, 17 Nov 2020 16:00:53 +0100 Subject: [PATCH 380/987] Setup for test experiment --- garlic/exp/bigsort/mpi+omp.nix | 11 ++++++----- garlic/stages/isolate/stage1 | 1 + 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/garlic/exp/bigsort/mpi+omp.nix b/garlic/exp/bigsort/mpi+omp.nix index d53ff3b..7622349 100644 --- a/garlic/exp/bigsort/mpi+omp.nix +++ b/garlic/exp/bigsort/mpi+omp.nix @@ -11,8 +11,8 @@ with stdenv.lib; let # Initial variable configuration varConf = with bsc; { - n = [ 1024 ]; - bs = [ 256 ]; + n = [ 134217728 ]; + bs = [ 134217728 ]; }; # Generate the complete configuration for each unit @@ -53,11 +53,12 @@ let argv = [ "${toString n}" "${toString bs}" - "test" - "test2" + "/gpfs/scratch/bsc15/bsc15065/BigSort/1g_unsorted.dat" + "/gpfs/scratch/bsc15/bsc15065/BigSort/1g_sorted.dat" + "/gpfs/scratch/bsc15/bsc15065/BigSort/tmp" #"${toString inputFile}" #"${toString outputFile}" - "$TMPDIR" + #"$TMPDIR" "${toString (builtins.div bs 2)}" ]; }; diff --git a/garlic/stages/isolate/stage1 b/garlic/stages/isolate/stage1 index 7e39679..4b97bd2 100644 --- a/garlic/stages/isolate/stage1 +++ b/garlic/stages/isolate/stage1 @@ -37,6 +37,7 @@ mounts=( -m /var/run/munge # FIXME: We should only need nix and the output path -m /gpfs/projects/bsc15 + -m /gpfs/scratch/bsc15 -m /bin:@nixPrefix@@busybox@/bin ) From 4f0da10321723cb5d05c541b9ada3c8f2e5c70a7 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 18 Nov 2020 15:51:04 +0100 Subject: [PATCH 381/987] bigsort: Use cpusPerTask instead of cpuBind --- garlic/exp/bigsort/mpi+omp.nix | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/garlic/exp/bigsort/mpi+omp.nix b/garlic/exp/bigsort/mpi+omp.nix index 7622349..553f8d1 100644 --- a/garlic/exp/bigsort/mpi+omp.nix +++ b/garlic/exp/bigsort/mpi+omp.nix @@ -19,6 +19,7 @@ let genConf = with bsc; c: targetMachine.config // rec { expName = "bigsort.mpi+omp"; unitName = "${expName}.bs${toString bs}"; + inherit (targetMachine.config) hw; # hpcg options n = c.n; @@ -35,8 +36,8 @@ let ntasksPerNode = 1; nodes = 1; time = "01:00:00"; - # task in one socket - cpuBind = "verbose,mask_cpu:0xffffff"; + # All CPUs of the socket to each task + cpusPerTask = hw.cpusPerSocket; jobName = "bigsort-${toString n}-${toString bs}-${gitBranch}"; }; From 2863ab6ae1ef00069bdbe6f8eb6bbc2070edae15 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 20 Nov 2020 15:29:03 +0100 Subject: [PATCH 382/987] machines: Use fs topology --- garlic/machines.nix | 31 ++++++++++++++++++++++--------- 1 file changed, 22 insertions(+), 9 deletions(-) diff --git a/garlic/machines.nix b/garlic/machines.nix index e37b6f5..57d8ea4 100644 --- a/garlic/machines.nix +++ b/garlic/machines.nix @@ -20,15 +20,28 @@ }; # Experimental naming convention for the FS - #fs = { - # cluster = { - # fast = "/gpfs/scratch/bsc15/bsc15557/garlic"; - # reliable = "/gpfs/projects/bsc15/garlic"; - # }; - # node = { - # fast = "$TMPDIR"; - # }; - #}; + fs = rec { + topology = { + gpfs = { + projects = "/gpfs/projects/bsc15/garlic"; + scratch = "/gpfs/scratch/bsc15/bsc15557/garlic"; + }; + + ssd = { + # Beware to expand the temp dir at execution time + temp = "$TMPDIR"; + }; + }; + + shared = with topology; { + fast = gpfs.scratch; + reliable = gpfs.projects; + }; + + local = { + temp = topology.ssd.temp; + }; + }; # TODO: Add the specific details for SLURM and the interconection here }; From 734d494d9683ea84a0302b665750b99d4af0555a Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 20 Nov 2020 15:30:47 +0100 Subject: [PATCH 383/987] stdexp: Allow extra mounts --- garlic/stages/isolate/default.nix | 8 +++++++- garlic/stages/isolate/stage1 | 2 ++ garlic/stdexp.nix | 16 +++++++++++----- 3 files changed, 20 insertions(+), 6 deletions(-) diff --git a/garlic/stages/isolate/default.nix b/garlic/stages/isolate/default.nix index b8c0722..9ca73e0 100644 --- a/garlic/stages/isolate/default.nix +++ b/garlic/stages/isolate/default.nix @@ -9,10 +9,16 @@ nextStage , nixPrefix , clusterName ? "mn4" +, extraMounts ? [] }: with garlicTools; +with builtins; +let + slashM = map (line: "-m ${line}") extraMounts; + extraMountOptions = concatStringsSep "\n" slashM; +in stdenv.mkDerivation { name = "isolate"; preferLocalBuild = true; @@ -20,7 +26,7 @@ stdenv.mkDerivation { src = ./.; dontPatchShebangs = true; programPath = "/bin/stage1"; - inherit nixPrefix clusterName nixtools busybox; + inherit nixPrefix clusterName nixtools busybox extraMountOptions; inherit nextStage; program = stageProgram nextStage; desc = "# $out\n" + (if builtins.hasAttr "desc" nextStage then nextStage.desc else ""); diff --git a/garlic/stages/isolate/stage1 b/garlic/stages/isolate/stage1 index 4b97bd2..6a624cd 100644 --- a/garlic/stages/isolate/stage1 +++ b/garlic/stages/isolate/stage1 @@ -19,6 +19,7 @@ env=( $(env | grep ^PMI || true) $(env | grep ^GARLIC || true) $(env | grep ^USER || true) + $(env | grep ^TMPDIR || true) HOME="/homeless-shelter" ) @@ -39,6 +40,7 @@ mounts=( -m /gpfs/projects/bsc15 -m /gpfs/scratch/bsc15 -m /bin:@nixPrefix@@busybox@/bin + @extraMountOptions@ ) join_flags="${mounts[@]}" diff --git a/garlic/stdexp.nix b/garlic/stdexp.nix index 880a504..cb208f7 100644 --- a/garlic/stdexp.nix +++ b/garlic/stdexp.nix @@ -75,11 +75,17 @@ rec { } ); - isolate = {nextStage, conf, ...}: stages.isolate { - clusterName = machineConf.name; - inherit (conf) nixPrefix; - inherit nextStage; - }; + isolate = {nextStage, conf, ...}: stages.isolate ( + ( + if (conf ? extraMounts) then { inherit (conf) extraMounts; } + else {} + ) // + { + clusterName = machineConf.name; + inherit (conf) nixPrefix; + inherit nextStage; + } + ); }; stdPipelineOverride = {overrides ? {}}: From d192a59fdcdd8e632334f9681e6da16076bf4d58 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 20 Nov 2020 15:32:41 +0100 Subject: [PATCH 384/987] control: Export the run iteration --- garlic/stages/control.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/garlic/stages/control.nix b/garlic/stages/control.nix index 347be08..e6efb7c 100644 --- a/garlic/stages/control.nix +++ b/garlic/stages/control.nix @@ -19,6 +19,7 @@ stdenv.mkDerivation { cat > $out < status mkdir "\$n" cd "\$n" From 8bc56564613c27484dafa65afb140a616c106bcb Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 20 Nov 2020 15:34:14 +0100 Subject: [PATCH 385/987] tools: recursive getExperiment It allows getExperimentStage to be called from any stage above the experiment. --- garlic/stages/experiment.nix | 2 ++ garlic/tools.nix | 4 +++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/garlic/stages/experiment.nix b/garlic/stages/experiment.nix index 91067f8..ec5f752 100644 --- a/garlic/stages/experiment.nix +++ b/garlic/stages/experiment.nix @@ -24,6 +24,8 @@ stdenv.mkDerivation { dontPatchShebangs = true; inherit units; + isExperiment = true; + installPhase = '' cat > $out << EOF #!/bin/sh diff --git a/garlic/tools.nix b/garlic/tools.nix index a3aef52..0c29722 100644 --- a/garlic/tools.nix +++ b/garlic/tools.nix @@ -40,7 +40,9 @@ let else "${stage}"; /* Given a trebuchet, returns the experiment */ - getExperimentStage = drv: drv.nextStage.nextStage.nextStage; + getExperimentStage = drv: + if (drv ? isExperiment) && drv.isExperiment then drv + else getExperimentStage drv.nextStage; # Computes the exponentiation operation pow = x: n: fold (a: b: a*b) 1 (map (a: x) (range 1 n)); From a147a396d91f37e39b14e6f8620510dddf770cea Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 20 Nov 2020 15:35:36 +0100 Subject: [PATCH 386/987] trebuchet: add the experiment as attribute --- garlic/stages/trebuchet.nix | 3 +++ 1 file changed, 3 insertions(+) diff --git a/garlic/stages/trebuchet.nix b/garlic/stages/trebuchet.nix index 83e0dac..f08752b 100644 --- a/garlic/stages/trebuchet.nix +++ b/garlic/stages/trebuchet.nix @@ -20,6 +20,9 @@ stdenv.mkDerivation { preferLocalBuild = true; dontPatchShebangs = true; inherit nextStage; + + experiment = getExperimentStage nextStage; + installPhase = '' cat > $out < Date: Fri, 20 Nov 2020 15:38:26 +0100 Subject: [PATCH 387/987] bigsort: add genseq program --- garlic/apps/bigsort/genseq.nix | 43 ++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 garlic/apps/bigsort/genseq.nix diff --git a/garlic/apps/bigsort/genseq.nix b/garlic/apps/bigsort/genseq.nix new file mode 100644 index 0000000..8d95bbb --- /dev/null +++ b/garlic/apps/bigsort/genseq.nix @@ -0,0 +1,43 @@ +{ + stdenv +, cc +, mpi +}: + +with stdenv.lib; +stdenv.mkDerivation rec { + name = "genseq"; + + src = builtins.fetchGit { + url = "ssh://git@bscpm02.bsc.es/dalvare1/bigsort.git"; + ref = "garlic/mpi+send+omp+task"; + }; + + postUnpack = "sourceRoot=$sourceRoot/GenSeq"; + + # FIXME: Remove the ../commons/Makefile as is not useful here, we only need + # the CPP_SRC and OBJ variables. + postPatch = '' + sed -i '1cCPP_SRC = $(wildcard *.cpp)' Makefile + sed -i '2cOBJ = $(CPP_SRC:.cpp=.o)' Makefile + ''; + + buildInputs = [ + cc + mpi + ]; + + makeFlags = [ + "I_MPI_CXX=${cc.cc.CXX}" + "CPP_BIN=mpicxx" + ]; + + enableParallelBuilding = true; + + installPhase = '' + mkdir -p $out/bin + cp genseq $out/bin/genseq + ''; + + programPath = "/bin/genseq"; +} From 2153e58baf965441a401492c0463a9399b4e76d4 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 20 Nov 2020 15:39:34 +0100 Subject: [PATCH 388/987] bigsort: add the shuffle program --- garlic/apps/bigsort/shuffle.nix | 43 +++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 garlic/apps/bigsort/shuffle.nix diff --git a/garlic/apps/bigsort/shuffle.nix b/garlic/apps/bigsort/shuffle.nix new file mode 100644 index 0000000..02c02e8 --- /dev/null +++ b/garlic/apps/bigsort/shuffle.nix @@ -0,0 +1,43 @@ +{ + stdenv +, cc +, mpi +}: + +with stdenv.lib; +stdenv.mkDerivation rec { + name = "shuffle"; + + src = builtins.fetchGit { + url = "ssh://git@bscpm02.bsc.es/dalvare1/bigsort.git"; + ref = "garlic/mpi+send+omp+task"; + }; + + postUnpack = "sourceRoot=$sourceRoot/ShuffleSeq"; + + # FIXME: Remove the ../commons/Makefile as is not useful here, we only need + # the CPP_SRC and OBJ variables. + postPatch = '' + sed -i '1cCPP_SRC = $(wildcard *.cpp)' Makefile + sed -i '2cOBJ = $(CPP_SRC:.cpp=.o)' Makefile + ''; + + buildInputs = [ + cc + mpi + ]; + + makeFlags = [ + "I_MPI_CXX=${cc.cc.CXX}" + "CPP_BIN=mpicxx" + ]; + + enableParallelBuilding = true; + + installPhase = '' + mkdir -p $out/bin + cp shuffle $out/bin/shuffle + ''; + + programPath = "/bin/shuffle"; +} From 0bb5c76aadfdda1cfb1fb317bcd36b4d9c3ba3d2 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 20 Nov 2020 15:40:17 +0100 Subject: [PATCH 389/987] bigsort: add extra programs --- overlay.nix | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/overlay.nix b/overlay.nix index f61ad6d..bdd7f34 100644 --- a/overlay.nix +++ b/overlay.nix @@ -246,11 +246,20 @@ let gitBranch = "garlic/oss"; }; - bigsort = callPackage ./garlic/apps/bigsort/default.nix { - cc = self.bsc.icc; - mpi = self.bsc.mpi; - gitBranch = "garlic/mpi+send+omp+task"; - }; + bigsort = { + sort = callPackage ./garlic/apps/bigsort/default.nix { + gitBranch = "garlic/mpi+send+omp+task"; + cc = bsc.icc; + }; + + genseq = callPackage ./garlic/apps/bigsort/genseq.nix { + cc = bsc.icc; + }; + + shuffle = callPackage ./garlic/apps/bigsort/shuffle.nix { + cc = bsc.icc; + }; + }; heat = callPackage ./garlic/apps/heat/default.nix { }; # heat = callPackage ./garlic/apps/heat/default.nix { From aca7e36fc7e7dbe9f1aac1028ab47ac061dfc579 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 20 Nov 2020 15:41:27 +0100 Subject: [PATCH 390/987] bigsort: add experiment with input generation --- garlic/exp/bigsort/genseq.nix | 72 +++++++++++++++++++ garlic/exp/bigsort/mpi+omp.nix | 80 --------------------- garlic/exp/bigsort/shuffle.nix | 101 ++++++++++++++++++++++++++ garlic/exp/bigsort/sort.nix | 125 +++++++++++++++++++++++++++++++++ overlay.nix | 20 +++++- 5 files changed, 316 insertions(+), 82 deletions(-) create mode 100644 garlic/exp/bigsort/genseq.nix delete mode 100644 garlic/exp/bigsort/mpi+omp.nix create mode 100644 garlic/exp/bigsort/shuffle.nix create mode 100644 garlic/exp/bigsort/sort.nix diff --git a/garlic/exp/bigsort/genseq.nix b/garlic/exp/bigsort/genseq.nix new file mode 100644 index 0000000..9348c3f --- /dev/null +++ b/garlic/exp/bigsort/genseq.nix @@ -0,0 +1,72 @@ +{ + stdenv +, stdexp +, bsc +, targetMachine +, stages +, n # must be a string +, dram # must be a string +, strace +}: + +with stdenv.lib; + +# Ensure the arguments are strings, to avoid problems with large numbers +assert (isString n); +assert (isString dram); + +let + # Initial variable configuration + varConf = with bsc; { }; + + inherit (targetMachine) fs; + + # Generate the complete configuration for each unit + genConf = with bsc; c: targetMachine.config // rec { + expName = "genseq"; + unitName = "${expName}.n${n}.dram${dram}"; + inherit (targetMachine.config) hw; + inherit n dram; + + # Don't repeat + loops = 1; + + # Resources + qos = "debug"; + ntasksPerNode = 1; + nodes = 1; + time = "01:00:00"; + cpusPerTask = hw.cpusPerNode; + jobName = unitName; + }; + + # Compute the array of configurations + configs = stdexp.buildConfigs { + inherit varConf genConf; + }; + + exec = {nextStage, conf, ...}: with conf; + let + #FIXME: We need a better mechanism to get the output paths + outDir = "${fs.shared.fast}/out/$GARLIC_USER/$GARLIC_UNIT/$GARLIC_RUN"; + outFile = "${outDir}/seq.dat"; + in + stages.exec { + inherit nextStage; + pre = '' + mkdir -p "${outDir}" + ''; + argv = [ n dram outFile ]; + post = '' + # Link the output here + ln -s "${outFile}" seq.dat + ''; + }; + + program = {...}: bsc.apps.bigsort.genseq; + + pipeline = stdexp.stdPipeline ++ [ exec program ]; + +in + + stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/bigsort/mpi+omp.nix b/garlic/exp/bigsort/mpi+omp.nix deleted file mode 100644 index 553f8d1..0000000 --- a/garlic/exp/bigsort/mpi+omp.nix +++ /dev/null @@ -1,80 +0,0 @@ -{ - stdenv -, stdexp -, bsc -, targetMachine -, stages -}: - -with stdenv.lib; - -let - # Initial variable configuration - varConf = with bsc; { - n = [ 134217728 ]; - bs = [ 134217728 ]; - }; - - # Generate the complete configuration for each unit - genConf = with bsc; c: targetMachine.config // rec { - expName = "bigsort.mpi+omp"; - unitName = "${expName}.bs${toString bs}"; - inherit (targetMachine.config) hw; - - # hpcg options - n = c.n; - bs = c.bs; - cc = bsc.icc; - mpi = bsc.mpi; # TODO: Remove this for oss - gitBranch = "garlic/mpi+send+omp+task"; - - # Repeat the execution of each unit 30 times - loops = 1; - - # Resources - qos = "debug"; - ntasksPerNode = 1; - nodes = 1; - time = "01:00:00"; - # All CPUs of the socket to each task - cpusPerTask = hw.cpusPerSocket; - jobName = "bigsort-${toString n}-${toString bs}-${gitBranch}"; - }; - - # Compute the array of configurations - configs = stdexp.buildConfigs { - inherit varConf genConf; - }; - - # input = genInput configs; - - exec = {nextStage, conf, ...}: with conf; stages.exec { - inherit nextStage; - #env = "NANOS6_DEPENDENCIES=discrete"; - argv = [ - "${toString n}" - "${toString bs}" - "/gpfs/scratch/bsc15/bsc15065/BigSort/1g_unsorted.dat" - "/gpfs/scratch/bsc15/bsc15065/BigSort/1g_sorted.dat" - "/gpfs/scratch/bsc15/bsc15065/BigSort/tmp" - #"${toString inputFile}" - #"${toString outputFile}" - #"$TMPDIR" - "${toString (builtins.div bs 2)}" - ]; - }; - - program = {nextStage, conf, ...}: with conf; - let - customPkgs = stdexp.replaceMpi conf.mpi; - in - customPkgs.apps.bigsort.override { - inherit cc gitBranch; - }; - - pipeline = stdexp.stdPipeline ++ [ exec program ]; - -in - - #{ inherit configs pipeline; } - stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/bigsort/shuffle.nix b/garlic/exp/bigsort/shuffle.nix new file mode 100644 index 0000000..5d3b7b7 --- /dev/null +++ b/garlic/exp/bigsort/shuffle.nix @@ -0,0 +1,101 @@ +{ + stdenv +, stdexp +, bsc +, targetMachine +, stages +, inputTre +, n +, dram +, garlicTools +, resultFromTrebuchet +}: + +with stdenv.lib; +with garlicTools; + +let + # Initial variable configuration + varConf = with bsc; { }; + + inherit (targetMachine) fs; + + # Generate the complete configuration for each unit + genConf = with bsc; c: targetMachine.config // rec { + expName = "shuffle"; + unitName = "${expName}.n${n}.dram${dram}"; + inherit (targetMachine.config) hw; + inherit n dram; + + # Don't repeat + loops = 1; + + # Resources + qos = "debug"; + ntasksPerNode = 1; + nodes = 1; + time = "01:00:00"; + cpusPerTask = hw.cpusPerNode; + jobName = unitName; + + # We need access to a fast shared filesystem to store the shuffled input + # dataset + extraMounts = [ fs.shared.fast ]; + }; + + # Compute the array of configurations + configs = stdexp.buildConfigs { + inherit varConf genConf; + }; + + exec = {nextStage, conf, ...}: with conf; + let + inputExp = inputTre.experiment; + inputUnit = elemAt inputExp.units 0; + unitName = baseNameOf (toString inputUnit); + + # We also need the result. This is only used to ensure that we have the + # results, so it has been executed. + inputRes = resultFromTrebuchet inputTre; + + #FIXME: We need a better mechanism to get the output paths + inFile = "${fs.shared.fast}/out/$GARLIC_USER/${unitName}/1/seq.dat"; + outDir = "${fs.shared.fast}/out/$GARLIC_USER/$GARLIC_UNIT/$GARLIC_RUN"; + outFile = "${outDir}/shuffled.dat"; + + in + stages.exec { + inherit nextStage; + pre = '' + # This line ensures that the previous results are complete: + # ${inputRes} + + # Exit on error + set -e + + # Ensure the input file exists + if [ ! -f "${inFile}" ]; then + echo "input file not found: ${inFile}" + exit 1 + fi + + mkdir -p "${outDir}" + + # Copy the input as we are going to overwrite it + cp "${inFile}" "${outFile}" + ''; + argv = [ n dram outFile 16 64 ]; + post = '' + # Link the output here + ln -s "${outFile}" shuffled.dat + ''; + }; + + program = {...}: + bsc.apps.bigsort.shuffle; + + pipeline = stdexp.stdPipeline ++ [ exec program ]; + +in + + stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/bigsort/sort.nix b/garlic/exp/bigsort/sort.nix new file mode 100644 index 0000000..21e10b2 --- /dev/null +++ b/garlic/exp/bigsort/sort.nix @@ -0,0 +1,125 @@ +{ + stdenv +, stdexp +, bsc +, targetMachine +, stages +, removeOutput ? true +, resultFromTrebuchet +, inputTre +}: + +with stdenv.lib; + +let + varConf = { }; # Not used + + inherit (targetMachine) fs; + + # Generate the complete configuration for each unit + genConf = with bsc; c: targetMachine.config // rec { + expName = "bigsort"; + unitName = "${expName}.bs${toString bs}"; + inherit (targetMachine.config) hw; + + # bigsort options + n = 1024 * 1024 * 1024 / 8; # In longs (?) + bs = n; # In bytes + pageSize = bs / 2; # In bytes (?) + cc = bsc.icc; + mpi = bsc.impi; + gitBranch = "garlic/mpi+send+omp+task"; + + # Repeat the execution of each unit 30 times + loops = 1; + + # Resources + qos = "debug"; + ntasksPerNode = 1; + nodes = 1; + time = "01:00:00"; + # All CPUs of the socket to each task + cpusPerTask = hw.cpusPerSocket; + jobName = "bigsort-${toString n}-${toString bs}-${gitBranch}"; + + # Load the dataset from the same fs where it was stored in the shuffle + # step. Also we use a local temp fs to store intermediate results. + extraMounts = [ fs.shared.fast fs.local.temp ]; + + rev = 1; + }; + + # Compute the array of configurations + configs = stdexp.buildConfigs { + inherit varConf genConf; + }; + + exec = {nextStage, conf, ...}: with conf; + let + inputExp = inputTre.experiment; + unit = elemAt inputExp.units 0; + expName = baseNameOf (toString inputExp); + unitName = baseNameOf (toString unit); + + # We also need the result. This is only used to ensure that we have the + # results, so it has been executed. + inputRes = resultFromTrebuchet inputTre; + + #FIXME: We need a better mechanism to get the output paths + inFile = "${fs.shared.fast}/out/$GARLIC_USER/${unitName}/1/shuffled.dat"; + outDir = "${fs.shared.fast}/out/$GARLIC_USER/$GARLIC_UNIT/$GARLIC_RUN"; + outFile = "${outDir}/sorted.dat"; + tmpDir = fs.local.temp; + in + stages.exec { + inherit nextStage; + pre = '' + # This line ensures that the shuffled results are complete: nix needs to + # compute the hash of the execution log to write the path here. + # ${inputRes} + + # Exit on error + set -e + + # Ensure the input file exists + if [ ! -f "${inFile}" ]; then + echo "input file not found: ${inFile}" + exit 1 + fi + + # Create the output path + mkdir -p ${outDir} + + # Verbose args: + echo "INPUT = ${inFile}" + echo "OUTPUT = ${outFile}" + echo "TMPDIR = ${tmpDir}" + ''; + + argv = [ n bs inFile outFile tmpDir pageSize ]; + + # Optionally remove the potentially large output dataset + post = '' + # Link the output here + ln -s "${outFile}" sorted.dat + '' + optionalString (removeOutput) '' + # Remove the sorted output + stat "${outFile}" > "${outFile}.stat" + echo "file removed to save space" > "${outFile}" + ''; + }; + + program = {nextStage, conf, ...}: with conf; + let + customPkgs = stdexp.replaceMpi conf.mpi; + in + customPkgs.apps.bigsort.sort.override { + inherit cc mpi gitBranch; + }; + + pipeline = stdexp.stdPipeline ++ [ exec program ]; + +in + + #{ inherit configs pipeline; } + stdexp.genExperiment { inherit configs pipeline; } diff --git a/overlay.nix b/overlay.nix index bdd7f34..ff050d2 100644 --- a/overlay.nix +++ b/overlay.nix @@ -379,8 +379,24 @@ let test = callPackage ./garlic/exp/heat/test.nix { }; }; - bigsort = { - test = callPackage ./garlic/exp/bigsort/mpi+omp.nix { }; + bigsort = rec { + genseq = callPackage ./garlic/exp/bigsort/genseq.nix { + n = toString (1024 * 1024 * 1024 / 8); # 1 GB input size + dram = toString (1024 * 1024 * 1024); # 1 GB chunk + }; + + shuffle = callPackage ./garlic/exp/bigsort/shuffle.nix { + inputTre = genseq; + n = toString (1024 * 1024 * 1024 / 8); # 1 GB input size + dram = toString (1024 * 1024 * 1024); # 1 GB chunk + inherit (bsc.garlic.pp) resultFromTrebuchet; + }; + + sort = callPackage ./garlic/exp/bigsort/sort.nix { + inputTre = shuffle; + inherit (bsc.garlic.pp) resultFromTrebuchet; + removeOutput = false; + }; }; slurm = { From ed95cb0a040d86c4d2efe4269d4922c766fc7dd7 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 23 Nov 2020 19:06:15 +0100 Subject: [PATCH 391/987] Add wip presentation --- garlic/doc/slides/Makefile | 6 + garlic/doc/slides/test.mm | 857 +++++++++++++++++++++++++++++++++++++ 2 files changed, 863 insertions(+) create mode 100644 garlic/doc/slides/Makefile create mode 100644 garlic/doc/slides/test.mm diff --git a/garlic/doc/slides/Makefile b/garlic/doc/slides/Makefile new file mode 100644 index 0000000..01c7ff7 --- /dev/null +++ b/garlic/doc/slides/Makefile @@ -0,0 +1,6 @@ +all: test.mm Makefile + groff -Tpdf -t -p -P-p12c,16c -mm test.mm > test.pdf + -killall -HUP mupdf + +watch: + while [ 1 ]; do inotifywait -e modify *; make; done diff --git a/garlic/doc/slides/test.mm b/garlic/doc/slides/test.mm new file mode 100644 index 0000000..4616f71 --- /dev/null +++ b/garlic/doc/slides/test.mm @@ -0,0 +1,857 @@ +.\"usage: NS title +.de NS \" New Slide +.SK +.ev gp-top +.fam H +.vs 1.5m +.ll \\n[@ll]u +.lt \\n[@ll]u +.rs +.sp 2v +.ps +5 +\\$* +.ps -5 +.sp 1.5v +.br +.ev +.. +.\" Remove headers +.de TP +.. +.\" Bigger page number in footer +.de EOP +.fam H +.ps +2 +. ie o .tl \\*[pg*odd-footer] +. el .tl \\*[pg*even-footer] +. ds hd*format \\g[P] +. af P 0 +. ie (\\n[P]=1)&(\\n[N]=1) .tl \\*[pg*header] +. el .tl \\*[pg*footer] +. af P \\*[hd*format] +. tl ''\\*[Pg_type!\\n[@copy_type]]'' +.. +.\" Remove top and bottom margin +.VM 0 0 +.\" +.\" +.\" Set virtual page dimensions for a physical size of 16x12 cm +.PGFORM 14c 12c 1c 1 +.ND "November 24, 2020" +.\" .vs 1.5m +.S C 1.5m +.fam H +.\".PH "'cosas'''" +.COVER ms +.de cov@print-date +.DS C +.fam H +.B +\\*[cov*new-date] +.DE +.. +.TL +.ps 20 +.fam H +Garlic update +.AF "Barcelona Supercomputing Center" +.AU "Rodrigo Arias Mallo" +.COVEND +.PF "'''%'" +.\" Turn off justification +.SA 0 +.\".PF '''%' +.\"================================================================== +.NS "Changelog" +Important changes since the last meeting (2020-09-23) +.BL +.LI +Execution of experiments is now \fBisolated\fP: no $HOME or /usr at run time +.LI +Added a \fBpostprocess\fP pipeline +.LI +New \fBgarlic(1)\fP helper tool (manual included) +.LI +A plot has an experiment result as \fBdependency\fP +.LI +Experiments run on demand based on article \fBfigures\fP +.LI +Fast pkg overrides (MPI) +.LE 1 +.\"================================================================== +.NS "Execution pipeline (review)" +.2C +List of stages required to run the program of the experiment: +.BL +.S -1 +.LI +The +.B target +column determines where the stage is running. +.LI +.B Safe +states if the stage begins the execution inside the isolated namespace +.LI +.B User +if it can be executed directly by the user +.LI +.B Copies +if there are several instances running in parallel and +.LI +.B Std +if is part of the standard execution pipeline. +.LE +.S P P +.\" Go to the next column +.NCOL +.KF +.defcolor white rgb #FFFFFF +.S 8 14p +.\".S C +0.2v +.TS +center expand; +lB lB cB cB cB cB cB +lB lB cB cB cB cB cB +r lw(5.5m) c c c c c. + _ _ _ _ _ _ + Stage Target Safe Copies User Std + _ _ _ _ _ _ +\m[white]\(rh\m[]\ + trebuchet xeon no no yes yes + runexp login no no yes yes + isolate login no no no yes + experiment login yes no no yes + unit login yes no no yes + sbatch login yes no no yes + _ _ _ _ _ _ + isolate comp no no no yes + control comp yes no no yes + srun comp yes no no yes + isolate comp no yes no yes + _ _ _ _ _ _ + exec comp yes yes no no + program comp yes yes no no + _ _ _ _ _ _ +.TE +.S P P +.KE +.1C +.\"================================================================== +.NS "Execution stages" +.2C +\fBtrebuchet\fP: connects via ssh to the target machine and executes the +next stage there. +.P +The target machine is set to MN4, which by default uses the host +\fBmn1\fP +.P +Literally: +.P +.VERBON +ssh mn1 /path/to/next/stage +.VERBOFF +.P +You need to define the ssh config to be able to connect to mn1. +.\" Go to the next column +.NCOL +.KF +.S 8 14p +.\".S C +0.2v +.TS +center expand; +lB lB cB cB cB cB cB +lB lB cB cB cB cB cB +r lw(5.5m) c c c c c. + _ _ _ _ _ _ + Stage Target Safe Copies User Std + _ _ _ _ _ _ +\(rh \fBtrebuchet\fP xeon no no yes yes + runexp login no no yes yes + isolate login no no no yes + experiment login yes no no yes + unit login yes no no yes + sbatch login yes no no yes + _ _ _ _ _ _ + isolate comp no no no yes + control comp yes no no yes + srun comp yes no no yes + isolate comp no yes no yes + _ _ _ _ _ _ + exec comp yes yes no no + program comp yes yes no no + _ _ _ _ _ _ +.TE +.S P P +.KE +.1C +.\"================================================================== +.NS "Execution stages" +.2C +\fBrunexp\fP: sets a few \fCGARLIC_*\fP environment variables used by the +benchmark and changes the current directory to the \fBout\fP directory. +.P +At build time, next stages don't know these values (cyclic dependency), +so they are populated at execution time. +.\" Go to the next column +.NCOL +.KF +.S 8 14p +.\".S C +0.2v +.TS +center expand; +lB lB cB cB cB cB cB +lB lB cB cB cB cB cB +r lw(5.5m) c c c c c. + _ _ _ _ _ _ + Stage Target Safe Copies User Std + _ _ _ _ _ _ + trebuchet xeon no no yes yes +\(rh \fBrunexp\fP login no no yes yes + isolate login no no no yes + experiment login yes no no yes + unit login yes no no yes + sbatch login yes no no yes + _ _ _ _ _ _ + isolate comp no no no yes + control comp yes no no yes + srun comp yes no no yes + isolate comp no yes no yes + _ _ _ _ _ _ + exec comp yes yes no no + program comp yes yes no no + _ _ _ _ _ _ +.TE +.S P P +.KE +.1C +.\"================================================================== +.NS "Execution stages" +.2C +\fBisolate\fP: once on the target machine, we enter an isolated +namespace to load the nix store. +.P +Notice that this and the previous stages require the \fBsh\fP shell to be +available on the target machine +.P +They are not \fBsafe\fP as we run target machine code +.\" Go to the next column +.NCOL +.KF +.S 8 14p +.\".S C +0.2v +.TS +center expand; +lB lB cB cB cB cB cB +lB lB cB cB cB cB cB +r lw(5.5m) c c c c c. + _ _ _ _ _ _ + Stage Target Safe Copies User Std + _ _ _ _ _ _ + trebuchet xeon no no yes yes + runexp login no no yes yes +\(rh \fBisolate\fP login no no no yes + experiment login yes no no yes + unit login yes no no yes + sbatch login yes no no yes + _ _ _ _ _ _ + isolate comp no no no yes + control comp yes no no yes + srun comp yes no no yes + isolate comp no yes no yes + _ _ _ _ _ _ + exec comp yes yes no no + program comp yes yes no no + _ _ _ _ _ _ +.TE +.S P P +.KE +.1C +.\"================================================================== +.NS "Execution stages" +.2C +\fBexperiment\fP: runs several units sequentially. +.P +Defines the \fCGARLIC_EXPERIMENT\fP environment variable. +.P +Creates a directory for the experiment and changes the current directory +there. +.\" Go to the next column +.NCOL +.KF +.S 8 14p +.\".S C +0.2v +.TS +center expand; +lB lB cB cB cB cB cB +lB lB cB cB cB cB cB +r lw(5.5m) c c c c c. + _ _ _ _ _ _ + Stage Target Safe Copies User Std + _ _ _ _ _ _ + trebuchet xeon no no yes yes + runexp login no no yes yes + isolate login no no no yes +\(rh \fBexperiment\fP login yes no no yes + unit login yes no no yes + sbatch login yes no no yes + _ _ _ _ _ _ + isolate comp no no no yes + control comp yes no no yes + srun comp yes no no yes + isolate comp no yes no yes + _ _ _ _ _ _ + exec comp yes yes no no + program comp yes yes no no + _ _ _ _ _ _ +.TE +.S P P +.KE +.1C +.\"================================================================== +.NS "Execution stages" +.2C +\fBunit\fP: creates an index entry for the unit and the experiment. +.P +Creates a directory for the unit and changes the current directory +there. +.P +Copies the unit configuration in the \fCgarlic_config.json\fP file +.\" Go to the next column +.NCOL +.KF +.S 8 14p +.\".S C +0.2v +.TS +center expand; +lB lB cB cB cB cB cB +lB lB cB cB cB cB cB +r lw(5.5m) c c c c c. + _ _ _ _ _ _ + Stage Target Safe Copies User Std + _ _ _ _ _ _ + trebuchet xeon no no yes yes + runexp login no no yes yes + isolate login no no no yes + experiment login yes no no yes +\(rh \fBunit\fP login yes no no yes + sbatch login yes no no yes + _ _ _ _ _ _ + isolate comp no no no yes + control comp yes no no yes + srun comp yes no no yes + isolate comp no yes no yes + _ _ _ _ _ _ + exec comp yes yes no no + program comp yes yes no no + _ _ _ _ _ _ +.TE +.S P P +.KE +.1C +.\"================================================================== +.NS "Execution stages" +.2C +\fBsbatch\fP: allocates resources and executes the next stage in the +first node. +.P +The execve call is performed by a SLURM daemon, so is \fBout\fP of the +isolated environment. +.\" Go to the next column +.NCOL +.KF +.S 8 14p +.\".S C +0.2v +.TS +center expand; +lB lB cB cB cB cB cB +lB lB cB cB cB cB cB +r lw(5.5m) c c c c c. + _ _ _ _ _ _ + Stage Target Safe Copies User Std + _ _ _ _ _ _ + trebuchet xeon no no yes yes + runexp login no no yes yes + isolate login no no no yes + experiment login yes no no yes + unit login yes no no yes +\(rh \fBsbatch\fP login yes no no yes + _ _ _ _ _ _ + isolate comp no no no yes + control comp yes no no yes + srun comp yes no no yes + isolate comp no yes no yes + _ _ _ _ _ _ + exec comp yes yes no no + program comp yes yes no no + _ _ _ _ _ _ +.TE +.S P P +.KE +.1C +.\"================================================================== +.NS "Execution stages" +.2C +\fBisolate\fP: enters the isolated namespace again, with the nix store. +.P +Notice that we are now running in the compute node allocated by SLURM. +.\" Go to the next column +.NCOL +.KF +.S 8 14p +.\".S C +0.2v +.TS +center expand; +lB lB cB cB cB cB cB +lB lB cB cB cB cB cB +r lw(5.5m) c c c c c. + _ _ _ _ _ _ + Stage Target Safe Copies User Std + _ _ _ _ _ _ + trebuchet xeon no no yes yes + runexp login no no yes yes + isolate login no no no yes + experiment login yes no no yes + unit login yes no no yes + sbatch login yes no no yes + _ _ _ _ _ _ +\(rh \fBisolate\fP comp no no no yes + control comp yes no no yes + srun comp yes no no yes + isolate comp no yes no yes + _ _ _ _ _ _ + exec comp yes yes no no + program comp yes yes no no + _ _ _ _ _ _ +.TE +.S P P +.KE +.1C +.\"================================================================== +.NS "Execution stages" +.2C +\fBcontrol\fP: runs the next stage several times +.P +Is controlled by the \fCloops\fP attribute, which specifies the number +of runs. +.P +Creates a directory with the number of the run and enters it. +.P +Generated results are placed in this directory. +.\" Go to the next column +.NCOL +.KF +.S 8 14p +.\".S C +0.2v +.TS +center expand; +lB lB cB cB cB cB cB +lB lB cB cB cB cB cB +r lw(5.5m) c c c c c. + _ _ _ _ _ _ + Stage Target Safe Copies User Std + _ _ _ _ _ _ + trebuchet xeon no no yes yes + runexp login no no yes yes + isolate login no no no yes + experiment login yes no no yes + unit login yes no no yes + sbatch login yes no no yes + _ _ _ _ _ _ + isolate comp no no no yes +\(rh \fBcontrol\fP comp yes no no yes + srun comp yes no no yes + isolate comp no yes no yes + _ _ _ _ _ _ + exec comp yes yes no no + program comp yes yes no no + _ _ _ _ _ _ +.TE +.S P P +.KE +.1C +.\"================================================================== +.NS "Execution stages" +.2C +\fBsrun\fP: launches the tasks in the compute nodes and sets the +affinity. +.P +From here on, all stages are executed in parallel for each task. +.P +The srun program also forks from a SLURM daemon, exiting the +previous isolated namespace. +.\" Go to the next column +.NCOL +.KF +.S 8 14p +.\".S C +0.2v +.TS +center expand; +lB lB cB cB cB cB cB +lB lB cB cB cB cB cB +r lw(5.5m) c c c c c. + _ _ _ _ _ _ + Stage Target Safe Copies User Std + _ _ _ _ _ _ + trebuchet xeon no no yes yes + runexp login no no yes yes + isolate login no no no yes + experiment login yes no no yes + unit login yes no no yes + sbatch login yes no no yes + _ _ _ _ _ _ + isolate comp no no no yes + control comp yes no no yes +\(rh \fBsrun\fP comp yes no no yes + isolate comp no yes no yes + _ _ _ _ _ _ + exec comp yes yes no no + program comp yes yes no no + _ _ _ _ _ _ +.TE +.S P P +.KE +.1C +.\"================================================================== +.NS "Execution stages" +.2C +\fBisolate\fP: enter the isolated namespace again. +.P +Now we are ready to execute the program of the experiment. +.\" Go to the next column +.NCOL +.KF +.S 8 14p +.\".S C +0.2v +.TS +center expand; +lB lB cB cB cB cB cB +lB lB cB cB cB cB cB +r lw(5.5m) c c c c c. + _ _ _ _ _ _ + Stage Target Safe Copies User Std + _ _ _ _ _ _ + trebuchet xeon no no yes yes + runexp login no no yes yes + isolate login no no no yes + experiment login yes no no yes + unit login yes no no yes + sbatch login yes no no yes + _ _ _ _ _ _ + isolate comp no no no yes + control comp yes no no yes + srun comp yes no no yes +\(rh \fBisolate\fP comp no yes no yes + _ _ _ _ _ _ + exec comp yes yes no no + program comp yes yes no no + _ _ _ _ _ _ +.TE +.S P P +.KE +.1C +.\"================================================================== +.NS "Execution stages" +.2C +\fBexec\fP: sets the environment variables and argv of the program. +.P +Additional commands can be specified in the \fCpre\fP and \fCpost\fP +attributes. +.\" Go to the next column +.NCOL +.KF +.S 8 14p +.\".S C +0.2v +.TS +center expand; +lB lB cB cB cB cB cB +lB lB cB cB cB cB cB +r lw(5.5m) c c c c c. + _ _ _ _ _ _ + Stage Target Safe Copies User Std + _ _ _ _ _ _ + trebuchet xeon no no yes yes + runexp login no no yes yes + isolate login no no no yes + experiment login yes no no yes + unit login yes no no yes + sbatch login yes no no yes + _ _ _ _ _ _ + isolate comp no no no yes + control comp yes no no yes + srun comp yes no no yes + isolate comp no yes no yes + _ _ _ _ _ _ +\(rh \fBexec\fP comp yes yes no no + program comp yes yes no no + _ _ _ _ _ _ +.TE +.S P P +.KE +.1C +.\"================================================================== +.NS "Execution stages" +.2C +\fBprogram\fP: the path to the program itself. +.P +This stage can be used to do some changes: +.BL +.LI +Set the mpi implementation of all dependencies. +.LI +Pass build options +.LI +Custom packages (nanos6 with jemalloc) +.LE +.\" Go to the next column +.NCOL +.KF +.S 8 14p +.\".S C +0.2v +.TS +center expand; +lB lB cB cB cB cB cB +lB lB cB cB cB cB cB +r lw(5.5m) c c c c c. + _ _ _ _ _ _ + Stage Target Safe Copies User Std + _ _ _ _ _ _ + trebuchet xeon no no yes yes + runexp login no no yes yes + isolate login no no no yes + experiment login yes no no yes + unit login yes no no yes + sbatch login yes no no yes + _ _ _ _ _ _ + isolate comp no no no yes + control comp yes no no yes + srun comp yes no no yes + isolate comp no yes no yes + _ _ _ _ _ _ + exec comp yes yes no no +\(rh \fBprogram\fP comp yes yes no no + _ _ _ _ _ _ +.TE +.S P P +.KE +.1C +.\"================================================================== +.NS "Execution stages" +.2C +The \fCstdexp.nix\fP file defines standard pipeline. The last two stages +are usually added to complete the pipeline: +.P +.VERBON +pipeline = stdPipeline ++ + [ exec program ]; +.VERBOFF +.P +Any stage can be modified to fit a custom experiment. +.\" Go to the next column +.NCOL +.KF +.S 8 14p +.\".S C +0.2v +.TS +center expand; +lB lB cB cB cB cB cB +lB lB cB cB cB cB cB +r lw(5.5m) c c c c c. + _ _ _ _ _ _ + Stage Target Safe Copies User Std + _ _ _ _ _ _ + trebuchet xeon no no yes yes + runexp login no no yes yes + isolate login no no no yes + experiment login yes no no yes + unit login yes no no yes + sbatch login yes no no yes + _ _ _ _ _ _ + isolate comp no no no yes + control comp yes no no yes + srun comp yes no no yes + isolate comp no yes no yes + _ _ _ _ _ _ +\m[white]\(rh\m[]\ + exec comp yes yes no no + program comp yes yes no no + _ _ _ _ _ _ +.TE +.S P P +.KE +.1C +.\"================================================================== +.NS "Isolated execution" +.2C +The filesystem is \fBnow\fP isolated to prevent irreproducible +scenarios. +.P +The nix store is mounted at /nix and only some other paths are +available like: +.BL +.S -1 1m +.LI +/var/run/munge (required for SLURM) +.LI +/dev, /sys, /proc for MPI comm +.LI +/etc for hosts (FIXME) +.LI +/gpfs/projects/bsc15 to store data +.LE +.S P P +.P +Additional mounts can be requested by using the \fCextraMounts\fP +attribute. +.\" Go to the next column +.NCOL +.KF +.S 8 14p +.\".S C +0.2v +.TS +center expand; +lB lB cB cB cB cB cB +lB lB cB cB cB cB cB +r lw(5.5m) c c c c c. + _ _ _ _ _ _ + Stage Target Safe Copies User Std + _ _ _ _ _ _ + trebuchet xeon no no yes yes + runexp login no no yes yes +\(rh \fBisolate\fP login no no no yes + experiment login yes no no yes + unit login yes no no yes + sbatch login yes no no yes + _ _ _ _ _ _ +\(rh \fBisolate\fP comp no no no yes + control comp yes no no yes + srun comp yes no no yes +\(rh \fBisolate\fP comp no yes no yes + _ _ _ _ _ _ + exec comp yes yes no no + program comp yes yes no no + _ _ _ _ _ _ +.TE +.S P P +.KE +.1C +.\"================================================================== +.NS "Generating figures" +The postprocess pipeline takes the results of the execution and produces +figures or tables to be used in a publication. +.DS CB +.PS 5.3 +circlerad=0.3; +ellipsewid=1.2; +linewid=0.3; +boxwid=1; +right +box "Experiment" +arrow +ellipse "Execution" +arrow +box "Result" +arrow +ellipse "Postprocess" +arrow +box "Figure" +.PE +.DE +.P +Once the results are available, multiple figures can be created without +re-running the experiment. +.P +The postprocess pipeline is \fBexperimental\fP; there is no standard +yet. +.\"================================================================== +.NS "Executing experiments" +.P +We cannot access MN4 from nix, as it doesn't has the SSH keys nor +network access when building derivations. +.P +The garlic(1) tool is used to run experiments and fetch the results. See +the manual for details. +.P +.VERBON +xeon07$ nix-build -A fig.nbody.small +\&... +/tmp/garlic/1qcc44lx2nxwi7rmr6389sksq3gwy9w5-experiment: not found +Run the experiment and fetch the results with: + +\f[CB]garlic -RFv /nix/store/5zhmdzi5mf0mfsran74cxngn07ba522m-trebuchet\fP + +See garlic(1) for more details. +cannot continue building /nix/store/jql4...2cb0-resultTree, aborting +.VERBOFF +.\"================================================================== +.NS "Executing experiments" +.P +To run an experiment use \fB-R\fP and provide the trebuchet path: +.P +.VERBON +xeon07$ garlic -Rv /nix/store/5zh...22m-trebuchet +Running experiment 1qcc...9w5-experiment +sbatch: error: spank: x11.so: Plugin file not found +Submitted batch job 12719522 +\&... +xeon07$ +.VERBOFF +.P +Once the experiment is submited, you can leave the session: it will run +in MN4 automatically at some point. + +.\"================================================================== +.NS "Executing experiments" +.P +To wait and fetch the results, use \fB-F\fP: +.P +.VERBON +xeon07$ garlic -Fv /nix/store/5zhmd...522m-trebuchet +/mnt/garlic/bsc15557/out/1qc...9w5-experiment: checking units +3qnm6drx5y95kxrr43gnwqz8v4x641c7-unit: running 7 of 10 +awd3jzbcw0cwwvjrcrxzjvii3mgj663d-unit: completed +bqnnrwcbcixag0dfflk1zz34zidk97nf-unit: no status +l32097db7hbggvj7l5hz44y1glzz6jcy-unit: no status +n1a26qa13fdz0ih1gg1m0wfcybs71hm9-unit: completed +rywcwvnpz3mk0gyp5dzk94by3q1h3ljp-unit: completed +yl8ygadghd1fyzjwab3csd8hq1q93cw3-unit: completed +\&... +/mn...w5-experiment: \f[CB]execution complete, fetching results\fP +these derivations will be built: + /nix/store/mqdr...q4z-resultTree.drv +\&... +\f[CB]/nix/store/jql41hms1dr49ipbjcw41i4dj4pq2cb0-resultTree\fP +.VERBOFF +.\"================================================================== +.NS "Execution" +The dependency graph shows the role of the garlic tool: +.DS CB +.PS +scale=1; +circlerad=0.25; +linewid=0.3; +diag=linewid + circlerad; +far=circlerad*3 + linewid*4 +circle "Prog" +arrow +E: circle "EP" +R: circle "Result" at E + (far,0) +RUN: circle "Run" at E + (diag,-diag) dashed +FETCH: circle "Fetch" at R + (-diag,-diag) dashed +move to R.e +arrow +P: circle "PP" +arrow +circle "Plot" +arrow dashed from E to RUN chop +arrow dashed from RUN to FETCH chop +arrow dashed from FETCH to R chop +arrow from E to R chop +.PE +.DE +With the two pipelines +.BL +.LI +EP: Execution pipeline +.LI +PP: Postprocess pipeline +.LE From 6fa3facfb109e5989eabdcc464af86339cdab419 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 24 Nov 2020 15:45:33 +0100 Subject: [PATCH 392/987] Preliminar version for the slides --- garlic/doc/slides/test.mm | 763 ++++++++++++++++++++++++++++++++++---- 1 file changed, 687 insertions(+), 76 deletions(-) diff --git a/garlic/doc/slides/test.mm b/garlic/doc/slides/test.mm index 4616f71..7cb81ce 100644 --- a/garlic/doc/slides/test.mm +++ b/garlic/doc/slides/test.mm @@ -79,7 +79,161 @@ Experiments run on demand based on article \fBfigures\fP Fast pkg overrides (MPI) .LE 1 .\"================================================================== -.NS "Execution pipeline (review)" +.NS "Overview" +Dependency graph of a complete experiment that produces a figure. Each box +is a derivation and arrows represent \fBbuild dependencies\fP. +.DS CB +.S -3.5 +.PS +circlerad=0.3; +linewid=0.3; +boxwid=0.52; +boxht=0.35; +fillval=0.2; +right +P: box "Program" +arrow +box "..." +arrow +T: box "Trebuchet" +arrow +box "Result" "(MN4)" dashed +arrow +R: box "ResultTree" +arrow +box "..." +arrow +F: box "Figure" +arrow <-> from P.nw + (0, 0.2) to T.ne + (0, 0.2) \ +"Execution pipeline (EP)" above +arrow <-> from R.nw + (0, 0.2) to F.ne + (0, 0.2) \ +"Postprocess pipeline (PP)" above +.PE +.S P P +.DE +.P +The \fBResult\fP is not covered by nix (yet). This is what it looks like +when executed: +.DS CB +.S -3.5 +.PS +circlerad=0.25; +linewid=0.3; +boxwid=0.52; +boxht=0.35; +fillval=0.2; +right +circle "Build EP" +arrow +circle "Run EP" +arrow +box "Result" "(MN4)" dashed +arrow +circle "Fetch" +arrow +R: box "ResultTree" +arrow +circle "Build PP" +arrow +F: box "Figure" +.PE +.S P P +.DE +.P +Notice dependency order is not the same as execution order. +.\"================================================================== +.NS "Building the execution pipeline (EP)" +.DS CB +.S -3.5 +.PS +circlerad=0.25; +linewid=0.3; +boxwid=0.52; +boxht=0.35; +fillval=0.2; +right +B: circle "Build EP" fill +arrow +R: circle "Run EP" +arrow +box "Result" "(MN4)" dashed +arrow +circle "Fetch" +arrow +box "ResultTree" +arrow +circle "Build PP" +arrow +F: box "Figure" +arrow from B.w + (0, 0.35) to F.e + (0, 0.35) \ +"Order or execution" above +.PE +.S P P +.DE +.P +Run nix-build with the experiment name: +.P +.VERBON +xeon07$ nix-build -A exp.nbody.baseline +\&... +/nix/store/5zhmdzi5mf0mfsran74cxngn07ba522m-trebuchet +.VERBOFF +.P +Outputs the first stage (the trebuchet). All other stages +are built as dependencies, as they are required to build the trebuchet. +.\"================================================================== +.NS "Running the EP" +.DS CB +.S -3.5 +.PS +circlerad=0.25; +linewid=0.3; +boxwid=0.52; +boxht=0.35; +fillval=0.2; +right +B: circle "Build EP" +arrow +R: circle "Run EP" fill +arrow +box "Result" "(MN4)" dashed +arrow +circle "Fetch" +arrow +box "ResultTree" +arrow +circle "Build PP" +arrow +F: box "Figure" +circlerad=0.2; +linewid=0.3; +T: circle at B + (0,-1.3) "trebu." +arrow +circle "runexp" +arrow +circle "isolate" +arrow +circle "exp." +arrow +circle "..." +arrow +circle "exec" +arrow +P: circle "program" +line from R.sw to T.nw dashed +line from R.se to P.n dashed +arrow <-> from T.w - (0, 0.35) to P.e - (0, 0.35) \ +"Execution pipeline stages" below +arrow from B.w + (0, 0.35) to F.e + (0, 0.35) \ +"Order or execution" above +.PE +.S P P +.DE +.SP 1m +.P +The stages are launched sequentially. Let see what happens in each one. +.\"================================================================== +.NS "Execution pipeline" .2C List of stages required to run the program of the experiment: .BL @@ -102,6 +256,8 @@ if there are several instances running in parallel and if is part of the standard execution pipeline. .LE .S P P +.P +Sorted by the \fBexecution order\fP. .\" Go to the next column .NCOL .KF @@ -659,19 +815,18 @@ r lw(5.5m) c c c c c. _ _ _ _ _ _ Stage Target Safe Copies User Std _ _ _ _ _ _ - trebuchet xeon no no yes yes - runexp login no no yes yes - isolate login no no no yes - experiment login yes no no yes - unit login yes no no yes - sbatch login yes no no yes +\(rh \fBtrebuchet\fP xeon no no yes \fByes\fP +\(rh \fBrunexp\fP login no no yes \fByes\fP +\(rh \fBisolate\fP login no no no \fByes\fP +\(rh \fBexperiment\fP login yes no no \fByes\fP +\(rh \fBunit\fP login yes no no \fByes\fP +\(rh \fBsbatch\fP login yes no no \fByes\fP _ _ _ _ _ _ - isolate comp no no no yes - control comp yes no no yes - srun comp yes no no yes - isolate comp no yes no yes +\(rh \fBisolate\fP comp no no no \fByes\fP +\(rh \fBcontrol\fP comp yes no no \fByes\fP +\(rh \fBsrun\fP comp yes no no \fByes\fP +\(rh \fBisolate\fP comp no yes no \fByes\fP _ _ _ _ _ _ -\m[white]\(rh\m[]\ exec comp yes yes no no program comp yes yes no no _ _ _ _ _ _ @@ -735,123 +890,579 @@ r lw(5.5m) c c c c c. .KE .1C .\"================================================================== -.NS "Generating figures" -The postprocess pipeline takes the results of the execution and produces -figures or tables to be used in a publication. +.NS "Running the EP" .DS CB -.PS 5.3 -circlerad=0.3; -ellipsewid=1.2; +.S -3.5 +.PS +circlerad=0.25; linewid=0.3; -boxwid=1; +boxwid=0.52; +boxht=0.35; +fillval=0.2; right -box "Experiment" +B: circle "Build EP" arrow -ellipse "Execution" +R: circle "Run EP" fill arrow -box "Result" +box "Result" "(MN4)" dashed arrow -ellipse "Postprocess" +circle "Fetch" arrow -box "Figure" +box "ResultTree" +arrow +circle "Build PP" +arrow +F: box "Figure" +arrow from B.w + (0, 0.35) to F.e + (0, 0.35) \ +"Order or execution" above .PE +.S P P .DE .P -Once the results are available, multiple figures can be created without -re-running the experiment. -.P -The postprocess pipeline is \fBexperimental\fP; there is no standard -yet. -.\"================================================================== -.NS "Executing experiments" -.P We cannot access MN4 from nix, as it doesn't has the SSH keys nor network access when building derivations. .P The garlic(1) tool is used to run experiments and fetch the results. See the manual for details. -.P -.VERBON -xeon07$ nix-build -A fig.nbody.small -\&... -/tmp/garlic/1qcc44lx2nxwi7rmr6389sksq3gwy9w5-experiment: not found -Run the experiment and fetch the results with: - -\f[CB]garlic -RFv /nix/store/5zhmdzi5mf0mfsran74cxngn07ba522m-trebuchet\fP - -See garlic(1) for more details. -cannot continue building /nix/store/jql4...2cb0-resultTree, aborting -.VERBOFF .\"================================================================== -.NS "Executing experiments" +.NS "Running the EP" +.DS CB +.S -3.5 +.PS +circlerad=0.25; +linewid=0.3; +boxwid=0.52; +boxht=0.35; +fillval=0.2; +right +B: circle "Build EP" +arrow +R: circle "Run EP" fill +arrow +box "Result" "(MN4)" dashed +arrow +circle "Fetch" +arrow +box "ResultTree" +arrow +circle "Build PP" +arrow +F: box "Figure" +arrow from B.w + (0, 0.35) to F.e + (0, 0.35) \ +"Order or execution" above +.PE +.S P P +.DE .P -To run an experiment use \fB-R\fP and provide the trebuchet path: +To launch the EP use \fBgarlic -R\fP and provide the trebuchet path: .P .VERBON -xeon07$ garlic -Rv /nix/store/5zh...22m-trebuchet +.S -2 +xeon07$ garlic -Rv /nix/store/5zhmdzi5mf0mfsran74cxngn07ba522m-trebuchet Running experiment 1qcc...9w5-experiment sbatch: error: spank: x11.so: Plugin file not found Submitted batch job 12719522 \&... xeon07$ +.S P P .VERBOFF .P -Once the experiment is submited, you can leave the session: it will run +Once the jobs are submited, you can leave the session: it will run in MN4 automatically at some point. .\"================================================================== -.NS "Executing experiments" +.NS "Execution complete" +.DS CB +.S -3.5 +.PS +circlerad=0.25; +linewid=0.3; +boxwid=0.52; +boxht=0.35; +fillval=0.2; +right +B: circle "Build EP" +arrow +R: circle "Run EP" +arrow +box "Result" "(MN4)" dashed fill +arrow +circle "Fetch" +arrow +box "ResultTree" +arrow +circle "Build PP" +arrow +F: box "Figure" +arrow from B.w + (0, 0.35) to F.e + (0, 0.35) \ +"Order or execution" above +.PE +.S P P +.DE .P -To wait and fetch the results, use \fB-F\fP: +When the EP is complete, the generated results are stored in MN4. +.P +As stated previously, nix cannot access MN4 (yet), so we need to manually +fetch the results. +.\"================================================================== +.NS "Fetching the results" +.DS CB +.S -3.5 +.PS +circlerad=0.25; +linewid=0.3; +boxwid=0.52; +boxht=0.35; +fillval=0.2; +right +B: circle "Build EP" +arrow +R: circle "Run EP" +arrow +box "Result" "(MN4)" dashed +arrow +circle "Fetch" fill +arrow +box "ResultTree" +arrow +circle "Build PP" +arrow +F: box "Figure" +arrow from B.w + (0, 0.35) to F.e + (0, 0.35) \ +"Order or execution" above +.PE +.S P P +.DE +.P +To fetch the results, use \fBgarlic -F\fP: .P .VERBON -xeon07$ garlic -Fv /nix/store/5zhmd...522m-trebuchet +.S -3.5 +xeon07$ garlic -Fv /nix/store/5zhmdzi5mf0mfsran74cxngn07ba522m-trebuchet /mnt/garlic/bsc15557/out/1qc...9w5-experiment: checking units 3qnm6drx5y95kxrr43gnwqz8v4x641c7-unit: running 7 of 10 awd3jzbcw0cwwvjrcrxzjvii3mgj663d-unit: completed bqnnrwcbcixag0dfflk1zz34zidk97nf-unit: no status -l32097db7hbggvj7l5hz44y1glzz6jcy-unit: no status -n1a26qa13fdz0ih1gg1m0wfcybs71hm9-unit: completed -rywcwvnpz3mk0gyp5dzk94by3q1h3ljp-unit: completed -yl8ygadghd1fyzjwab3csd8hq1q93cw3-unit: completed \&... /mn...w5-experiment: \f[CB]execution complete, fetching results\fP these derivations will be built: /nix/store/mqdr...q4z-resultTree.drv \&... \f[CB]/nix/store/jql41hms1dr49ipbjcw41i4dj4pq2cb0-resultTree\fP +.S P P .VERBOFF +.P +Notice that if the experiments are still running, it waits for the +completion of all units first. .\"================================================================== -.NS "Execution" -The dependency graph shows the role of the garlic tool: +.NS "Fetching the results" .DS CB +.S -3.5 .PS -scale=1; circlerad=0.25; linewid=0.3; -diag=linewid + circlerad; -far=circlerad*3 + linewid*4 -circle "Prog" +boxwid=0.52; +boxht=0.35; +fillval=0.2; +right +B: circle "Build EP" arrow -E: circle "EP" -R: circle "Result" at E + (far,0) -RUN: circle "Run" at E + (diag,-diag) dashed -FETCH: circle "Fetch" at R + (-diag,-diag) dashed -move to R.e +R: circle "Run EP" arrow -P: circle "PP" +box "Result" "(MN4)" dashed arrow -circle "Plot" -arrow dashed from E to RUN chop -arrow dashed from RUN to FETCH chop -arrow dashed from FETCH to R chop -arrow from E to R chop +circle "Fetch" +arrow +box "ResultTree" fill +arrow +circle "Build PP" +arrow +F: box "Figure" +arrow from B.w + (0, 0.35) to F.e + (0, 0.35) \ +"Order or execution" above .PE +.S P P .DE -With the two pipelines -.BL +.P +.VERBON +.S -3.5 +\&... +\f[CB]/nix/store/jql41hms1dr49ipbjcw41i4dj4pq2cb0-resultTree\fP +.S P P +.VERBOFF +.P +When the fetch operation success, the \fBresultTree\fP derivation is +built, with the \fBlogs\fP of the execution. +.P +All other generated data is \fBignored by now\fP, as we don't want to +store large files in the nix store of xeon07. +.\"================================================================== +.NS "Running and fetching" +.DS CB +.S -3.5 +.PS +circlerad=0.25; +linewid=0.3; +boxwid=0.52; +boxht=0.35; +fillval=0.2; +right +B: circle "Build EP" +arrow +R: circle "Run EP" fill +arrow +box "Result" "(MN4)" dashed fill +arrow +circle "Fetch" fill +arrow +box "ResultTree" fill +arrow +circle "Build PP" +arrow +F: box "Figure" +arrow from B.w + (0, 0.35) to F.e + (0, 0.35) \ +"Order or execution" above +.PE +.S P P +.DE +.P +You can run an experiment and fetch the results with \fBgarlic -RF\fP in +one go: +.P +.VERBON +.S -2 +xeon07$ garlic -RF /nix/store/5zhmdzi5mf0mfsran74cxngn07ba522m-trebuchet +.S P P +.VERBOFF +.P +Remember that you can interrupt the fetching while is waiting, and come +later if the experiment takes too long. +.P +If nix tries to build \fBResultTree\fP and doesn't find the experiment +results, it will tell you to run this command to run and fetch the +experiment. Example: building the figure before running the experiment: +.P +.VERBON +.S -2 +xeon07$ nix-build -A fig.nbody.baseline +.S P P +.VERBOFF +.\"================================================================== +.NS "Postprocess pipeline (PP)" +.DS CB +.S -3.5 +.PS +circlerad=0.25; +linewid=0.3; +boxwid=0.52; +boxht=0.35; +fillval=0.2; +right +B: circle "Build EP" +arrow +R: circle "Run EP" +arrow +box "Result" "(MN4)" dashed +arrow +circle "Fetch" +arrow +box "ResultTree" +arrow +circle "Build PP" fill +arrow +F: box "Figure" +arrow from B.w + (0, 0.35) to F.e + (0, 0.35) \ +"Order or execution" above +.PE +.S P P +.DE +.P +Once the \fBresultTree\fP derivation is built, multiple figures can be created +without re-running the experiment. +.P +The postprocess pipeline is formed of several stages as well, but is +considered \fBexperimental\fP; there is no standard yet. +.P +It only needs to be built, as nix can perform all tasks to create the +figures (no manual intervention) +.\"================================================================== +.NS "Building the postprocess pipeline (PP)" +.DS CB +.S -3.5 +.PS +circlerad=0.25; +linewid=0.3; +boxwid=0.52; +boxht=0.35; +fillval=0.2; +right +B: circle "Build EP" +arrow +circle "Run EP" +arrow +box "Result" "(MN4)" dashed +arrow +circle "Fetch" +arrow +R: box "ResultTree" +arrow +PP: circle "Build PP" fill +arrow +F: box "Figure" +circlerad=0.2; +linewid=0.3; +T: box at R + (-0.02,-0.8) "timetable" +arrow +box "merge" +arrow +P: box "rPlot" +line from PP.sw to T.n dashed +line from PP.se to P.n dashed +arrow <-> from T.w - (0, 0.35) to P.e - (0, 0.35) \ + "Execution pipeline stages" below +arrow from B.w + (0, 0.35) to F.e + (0, 0.35) \ + "Order or execution" above +.PE +.S P P +.DE +.P +To build the figure, only three stages are required: timetable, merge +and rPlot. +.\"================================================================== +.NS "PP stages: timetable" +.DS CB +.S -3.5 +.PS +circlerad=0.25; +linewid=0.3; +boxwid=0.52; +boxht=0.35; +fillval=0.2; +right +box "timetable" fill +arrow +box "merge" +arrow +P: box "rPlot" +.PE +.S P P +.DE +.P +The timetable transforms the logs of the execution into a NDJSON file, +which contains all the unit configuration and the execution time in one +line in JSON: +.P +.VERBON +.S -2 +{ "unit":"...", "experiment":"...", "run":1, "config":{...}, "time":1.2345 } +{ "unit":"...", "experiment":"...", "run":2, "config":{...}, "time":1.2333 } +{ "unit":"...", "experiment":"...", "run":3, "config":{...}, "time":1.2323 } +.S P P +.VERBOFF +.P +This format allows R (and possibly other programs) to load \fBall\fP +information regarding the experiment configuration into a table. +.P +It requires the execution logs to contain a line with the time: +.P +.VERBON +.S -2 +time 1.2345 +.S P P +.VERBOFF +.\"================================================================== +.NS "PP stages: merge" +.DS CB +.S -3.5 +.PS +circlerad=0.25; +linewid=0.3; +boxwid=0.52; +boxht=0.35; +fillval=0.2; +right +box "timetable" +arrow +box "merge" fill +arrow +P: box "rPlot" +.PE +.S P P +.DE +.P +The merge stage allows multiple results of several experiments to be +merged in one dataset. +.P +In this way, multiple results can be presented in one figure. +.P +It simple concatenates all the NDJSON files together. +.P +This stage can be build directly with: +.P +.VERBON +$ nix-build ds.nbody.baseline +.VERBOFF +.P +So you can inspect the dataset and play with it before generating the +plots (is automatically built by nix as a dependency). +.\"================================================================== +.NS "PP stages: rPlot" +.DS CB +.S -3.5 +.PS +circlerad=0.25; +linewid=0.3; +boxwid=0.52; +boxht=0.35; +fillval=0.2; +right +box "timetable" +arrow +box "merge" +arrow +P: box "rPlot" fill +.PE +.S P P +.DE +.P +Finally, the rPlot stage runs a R script that loads the NDJSON dataset +and generates some plots. +.\"================================================================== +.NS "Building the figures" +.DS CB +.S -3.5 +.PS +circlerad=0.25; +linewid=0.3; +boxwid=0.52; +boxht=0.35; +fillval=0.2; +right +B: circle "Build EP" +arrow +circle "Run EP" +arrow +box "Result" "(MN4)" dashed +arrow +circle "Fetch" +arrow +R: box "ResultTree" +arrow +PP: circle "Build PP" +arrow +F: box "Figure" fill +arrow from B.w + (0, 0.35) to F.e + (0, 0.35) \ + "Order or execution" above +.PE +.S P P +.DE +.P +The complete PP and the figures can be build by using: +.P +.VERBON +xeon07$ nix-build -A fig.nbody.baseline +.VERBOFF +.P +A interactive R shell can be used to play with the presentation of the +plots: +.P +.VERBON +xeon07$ nix-shell garlic/fig/dev/shell.nix +$ cp /nix/store/...-merge.json input.json +$ R +> source("garlic/fig/nbody/baseline.R") +.VERBOFF +.P +More about this later. +.\"================================================================== +.NS "Figure dependencies" +.DS CB +.S -3.5 +.PS +circlerad=0.3; +linewid=0.3; +boxwid=0.52; +boxht=0.35; +fillval=0.2; +right +P: box "Program" +arrow +box "..." +arrow +T: box "Trebuchet" +arrow +box "Result" "(MN4)" dashed +arrow +R: box "ResultTree" +arrow +box "..." +arrow +F: box "Figure" fill +arrow <-> from P.nw + (0, 0.2) to T.ne + (0, 0.2) \ +"Execution pipeline (EP)" above +arrow <-> from R.nw + (0, 0.2) to F.ne + (0, 0.2) \ +"Postprocess pipeline (PP)" above +.PE +.S P P +.DE +.P +The figure contains as dependencies all the EP, results and PP. +.P +Any change in any of the stages (or dependencies) will lead to a new +figure, \fBautomatically\fP. +.P +Figures contain the hash of the dataset in the title, so they can +be tracked. +.\"================================================================== +.NS "Article with figures" +.P +An example LaTeX document uses the name of the figures in nix: +.P +.VERBON + \\includegraphics[]{@fig.nbody.small@/scatter.png} +.VERBOFF +.P +Then, nix will extract all figure references, build them (re-running the +experiment if required) and build the report: \fC$ nix-build +garlic.report\fP +.P +We also have \fBreportTar\fP that puts the figures, LaTeX sources and +a Makefile required to build the report into a self-contained tar.gz. +.P +It can be compiled with \fBmake\fP (no nix required) so it can be sent +to a journal for further changes in the LaTeX source. +.\"================================================================== +.NS "Other changes" +.DL .LI -EP: Execution pipeline +We can provide the complete benchmark and BSC packages as a simple +overlay. This allows others to load their own changes on top or below our +benchmark. .LI -PP: Postprocess pipeline +We now avoid reevaluation of nixpkgs when setting the MPI +implementation (allows faster evaluations: 2 s/unit \(-> 2 s total). +.LI +Dependencies between experiments results are posible (experimental): +allows generation of a dataset + computation with dependencies. .LE +.\"================================================================== +.NS "Questions?" +.defcolor gray rgb #bbbbbb +\m[gray] +.P +Example questions: +.DL +.LI +What software was used to build this presentation? +.LI +I used groff. +.LI +And the diagrams? +.LI +Same :-D +.LI +How long takes to build? +.LI +0,39s user 0,02s system 129% cpu 0,316 total +.LE +\m[] From 4000dbd0b890a112fbec7c51801674075b5e3249 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 24 Nov 2020 18:05:16 +0100 Subject: [PATCH 393/987] Rename slides and generalize makefile --- garlic/doc/slides/{test.mm => 2.mm} | 0 garlic/doc/slides/Makefile | 6 ++++-- 2 files changed, 4 insertions(+), 2 deletions(-) rename garlic/doc/slides/{test.mm => 2.mm} (100%) diff --git a/garlic/doc/slides/test.mm b/garlic/doc/slides/2.mm similarity index 100% rename from garlic/doc/slides/test.mm rename to garlic/doc/slides/2.mm diff --git a/garlic/doc/slides/Makefile b/garlic/doc/slides/Makefile index 01c7ff7..748666a 100644 --- a/garlic/doc/slides/Makefile +++ b/garlic/doc/slides/Makefile @@ -1,5 +1,7 @@ -all: test.mm Makefile - groff -Tpdf -t -p -P-p12c,16c -mm test.mm > test.pdf +all: 2.pdf Makefile + +%.pdf: %.mm + groff -Tpdf -t -p -P-p12c,16c -mm $< > $@ -killall -HUP mupdf watch: From 6483d645d12061f0504bfe3b42137d50bda9acd7 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 27 Nov 2020 20:13:11 +0100 Subject: [PATCH 394/987] babeltrace2: enable parallel build --- bsc/babeltrace2/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/bsc/babeltrace2/default.nix b/bsc/babeltrace2/default.nix index b99b895..344e580 100644 --- a/bsc/babeltrace2/default.nix +++ b/bsc/babeltrace2/default.nix @@ -21,6 +21,7 @@ stdenv.mkDerivation rec { sha256 = "1804pyq7fz6rkcz4r1abkkn0pfnss13m6fd8if32s42l4lajadm5"; }; + enableParallelBuilding = true; nativeBuildInputs = [ pkgconfig ]; buildInputs = [ glib libuuid popt elfutils python3 swig4 ncurses breakpointHook ]; From ad7c04845bbb3ffe1db8088e0bcb9a4b17f5c10f Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 30 Nov 2020 20:07:59 +0100 Subject: [PATCH 395/987] Add paraverExtra with some patches --- bsc/paraver/default.nix | 7 + bsc/paraver/mouse-label.patch | 286 ++++++++++++++++++++++++++++++++++ overlay.nix | 1 + 3 files changed, 294 insertions(+) create mode 100644 bsc/paraver/mouse-label.patch diff --git a/bsc/paraver/default.nix b/bsc/paraver/default.nix index b57a913..e8ae3e8 100644 --- a/bsc/paraver/default.nix +++ b/bsc/paraver/default.nix @@ -9,8 +9,12 @@ , autoconf , automake , wxpropgrid +# Custom patches :) +, enableMouseLabel ? false }: +with stdenv.lib; + let wx = wxGTK28; in @@ -23,6 +27,9 @@ stdenv.mkDerivation rec { sha256 = "0b8rrhnf7h8j72pj6nrxkrbskgg9b5w60nxi47nxg6275qvfq8hd"; }; + patches = [] + ++ optional (enableMouseLabel) ./mouse-label.patch; + enableParallelBuilding = true; # What would we do without the great gamezelda: diff --git a/bsc/paraver/mouse-label.patch b/bsc/paraver/mouse-label.patch new file mode 100644 index 0000000..a2b185e --- /dev/null +++ b/bsc/paraver/mouse-label.patch @@ -0,0 +1,286 @@ +--- a/src/wxparaver/src/gtimeline.cpp 2019-09-13 13:18:03.000000000 +0200 ++++ b/src/wxparaver/src/gtimeline.cpp 2020-11-30 13:18:50.121429888 +0100 +@@ -607,8 +607,8 @@ + // Paint blank image while redrawing + wxClientDC dc( drawZone ); + #ifdef __WXGTK__ +- dc.DrawBitmap( bufferImage, 0, 0, false ); +- drawZone->Update(); ++// dc.DrawBitmap( bufferImage, 0, 0, false ); ++// drawZone->Update(); + #endif + + if( !drawAxis( bufferDraw, selectedSet ) ) +@@ -1365,13 +1365,66 @@ + + void gTimeline::drawRowEvents( wxDC& eventdc, wxDC& eventmaskdc, TObjectOrder rowPos, hash_set< PRV_INT32 >& eventsToDraw ) + { ++ int last_x = -100, x, xx; ++ int i, neigh, max_x; ++ ++ /* Keep track of other events in nearby pixels */ ++ max_x = myWindow->getWidth(); ++ int *table = new int[max_x]; ++ ++ for(i=0; i::iterator it = eventsToDraw.begin(); it != eventsToDraw.end(); ++it ) + { ++ /* Add a new event in the x position in the table */ ++ x = *it; ++ assert(0 <= x); ++ assert(x < max_x); ++ table[*it]++; ++ } ++ ++ for( hash_set< PRV_INT32 >::iterator it = eventsToDraw.begin(); it != eventsToDraw.end(); ++it ) ++ { ++ /* ++ * Draws an event with 4 segments: AE, BF, CG and DH ++ * ++ * A B C D ++ * * * * * ++ * * * * * ++ * * * * * ++ * * F G H ++ * * ++ * * ++ * E ++ */ ++ ++ /* If the event is very close to another one, we paint it red, so we ++ * now that we may need to zoom to see more closely how many events ++ * are there. Otherwise we paint it green. */ ++ x = *it; ++ ++ /* Count neighbour events */ ++ neigh = 0; ++ for(xx=x-5; xx<=x+5; xx++) ++ { ++ if(0 <= xx && xx < max_x) ++ neigh += table[xx]; ++ } ++ ++ /* Paint the event red if there are more events close */ ++ if(neigh > 1) ++ eventdc.SetPen( *wxRED_PEN ); ++ else ++ eventdc.SetPen( *wxGREEN_PEN ); ++ + eventdc.DrawLine( *it, rowPos - 6, *it, rowPos ); +- eventdc.DrawLine( *it+1, rowPos - 6, *it+1, rowPos-3 ); +- eventdc.DrawLine( *it+2, rowPos - 6, *it+2, rowPos-3 ); +- eventdc.DrawLine( *it+3, rowPos - 6, *it+3, rowPos-3 ); +- eventdc.DrawLine( *it+4, rowPos - 6, *it+4, rowPos-3 ); ++// eventdc.DrawLine( *it+1, rowPos - 6, *it+1, rowPos-3 ); ++// eventdc.DrawLine( *it+2, rowPos - 6, *it+2, rowPos-3 ); ++// eventdc.DrawLine( *it+3, rowPos - 6, *it+3, rowPos-3 ); ++// eventdc.DrawLine( *it+4, rowPos - 6, *it+4, rowPos-3 ); + #ifndef __WXMAC__ + eventmaskdc.DrawLine( *it, rowPos - 6, *it, rowPos ); + eventmaskdc.DrawLine( *it+1, rowPos - 6, *it+1, rowPos-3 ); +@@ -1379,8 +1432,12 @@ + eventmaskdc.DrawLine( *it+3, rowPos - 6, *it+3, rowPos-3 ); + eventmaskdc.DrawLine( *it+4, rowPos - 6, *it+4, rowPos-3 ); + #endif ++ ++ last_x = x; + } + ++ delete table; ++ + } + + +@@ -2427,7 +2484,7 @@ + + motionEvent = event; + if( !event.ShiftDown() ) +- timerMotion->Start( 20, true ); ++ timerMotion->Start( 2, true ); + + wxMemoryDC dc( bufferImage ); + // PRV_UINT32 precision = ParaverConfig::getInstance()->getTimelinePrecision(); +@@ -4651,12 +4708,18 @@ + + void gTimeline::OnTimerMotion( wxTimerEvent& event ) + { ++ int mx, my; ++ ++ mx = motionEvent.GetX(); ++ my = motionEvent.GetY(); ++ + if( motionEvent.GetX() < objectAxisPos + 1 || motionEvent.GetX() > bufferImage.GetWidth() - drawBorder || + motionEvent.GetY() < drawBorder || motionEvent.GetY() > timeAxisPos - 1 ) + return; + + wxMemoryDC dc( bufferImage ); + wxColour tmpColor; ++ wxClientDC paintDC( drawZone ); + + wxString label; + if( zooming || timing || wxGetApp().GetGlobalTiming() ) +@@ -4704,7 +4767,11 @@ + #endif + + if( tmpColor == backgroundColour ) ++ { ++ /* Just clean and exit */ ++ paintDC.DrawBitmap( drawImage, 0, 0 ); + return; ++ } + + rgb color = { (ParaverColor)tmpColor.Red(), (ParaverColor)tmpColor.Green(), (ParaverColor)tmpColor.Blue() }; + TSemanticValue firstValue, secondValue; +@@ -4762,38 +4829,109 @@ + } + } + +-#ifndef __WXGTK__ +- wxClientDC paintDC( drawZone ); +- #ifdef __WXMAC__ +- drawStackedImages( paintDC ); +- #else +- paintDC.DrawBitmap( drawImage, 0, 0 ); +- #endif +-#else +- #if wxMAJOR_VERSION<3 +- wxPaintDC paintDC( drawZone ); +- #else +- wxClientDC paintDC( drawZone ); +- #endif +- paintDC.DrawBitmap( drawImage, 0, 0 ); +-#endif +- + paintDC.SetFont( semanticFont ); ++ paintDC.SetPen( backgroundColour ); ++ paintDC.SetBrush( backgroundColour ); ++ paintDC.SetTextForeground( foregroundColour ); ++ ++ /* Draw the label close to the mouse, so it's easier to follow */ ++ int label_x0, label_y0; ++ label_x0 = mx + 20; ++ label_y0 = my + 20; ++ paintDC.SetPen( *wxBLACK_PEN ); ++ paintDC.SetBrush( *wxBLACK_BRUSH ); ++ ++ /* Draw a filled black rectangle behind the label, so is easy to read ++ * when placed over multiple colors from the trace */ ++ int rect_x0, rect_y0, rect_w, rect_h; ++ rect_x0 = label_x0 - 5; ++ rect_y0 = label_y0 - 5; ++ ++ TObjectOrder row; ++ TTime time; ++ ++ /* Fills "row" and "time" objects if is over a TimeObject (?) */ ++ bool print_duration = true; ++ double tp, tn; ++ ++ /* This whole thing to get the event is completely crap. We may get a ++ * pixel here that belong to a different event, probably due to ++ * rounding operations when dealing with time. ++ * ++ * To avoid giving misleading information, we only print the time when ++ * both neighbour pixels are also from the same event */ ++ print_duration &= pixelToTimeObject(mx, my, time, row); ++ print_duration &= pixelToTimeObject(mx-2, my, tp, row); ++ print_duration &= pixelToTimeObject(mx+2, my, tn, row); ++ ++ if(time <= tp) print_duration = false; ++ if(tn <= time) print_duration = false; ++ ++ //computeWhatWhere(time, row, 0.0, false, false); ++ ++ //printf("time = %e\n", time); ++ //printf("begin time = %e\n", myWindow->getBeginTime(row)); ++ ++ if(print_duration) ++ { ++ double t0, t1, t, dt; ++ t = time; ++ ++ myWindow->init(t, CREATEEVENTS + CREATECOMMS, false ); ++ myWindow->initRow(row, t, CREATEEVENTS + CREATECOMMS, false ); ++ ++ t0 = myWindow->getBeginTime(row); ++ t1 = myWindow->getEndTime(row); ++ ++ //printf("t0=%e t=%e t1=%e\n", t0, t, t1); ++ while(!(t0 <= t && t <= t1)) ++ { ++ myWindow->calcNext(row); ++ t0 = myWindow->getBeginTime(row); ++ t1 = myWindow->getEndTime(row); ++ //printf("t0=%e t=%e t1=%e\n", t0, t, t1); ++ if(t0 > t) ++ { ++ //printf("we are out\n"); ++ break; ++ } ++ } ++ ++ /* Only add the duration if we are more than one pixel away from the ++ * border */ ++ if(t0 < tp && tn < t1) ++ { ++ if(t0 > t) ++ dt = 0; ++ else ++ dt = t1 - t0; ++ ++ assert(t0 <= time); ++ assert(time <= t1); ++ ++ wxString duration = wxString::FromAscii( LabelConstructor::timeLabel( ++ myWindow->traceUnitsToWindowUnits( dt ), ++ myWindow->getTimeUnit(), ++ ParaverConfig::getInstance()->getTimelinePrecision() ).c_str() ); ++ ++ label << wxT( " (" ) << duration << wxT(")"); ++ } ++ } ++ + wxSize objectExt = paintDC.GetTextExtent( label ); ++ rect_w = objectExt.GetWidth() + 10; ++ rect_h = objectExt.GetHeight() + 10; ++ ++ /* Erase previous bitmap */ ++ paintDC.DrawBitmap( drawImage, 0, 0 ); ++ ++ /* Draw black rectangle */ ++ paintDC.DrawRectangle( rect_x0, rect_y0, rect_w, rect_h ); + ++ /* Then place the label */ ++ paintDC.DrawText( label, label_x0, label_y0); + paintDC.SetPen( backgroundColour ); + paintDC.SetBrush( backgroundColour ); +-// paintDC.DrawRectangle( ( bufferImage.GetWidth() - objectAxisPos ) / 2, timeAxisPos + 1, objectExt.GetWidth() + 30, bufferImage.GetHeight() - timeAxisPos ); +- if( !( zooming || timing || wxGetApp().GetGlobalTiming() ) ) +- { +- paintDC.SetBrush( tmpColor ); +- paintDC.DrawRectangle( ( bufferImage.GetWidth() - objectAxisPos ) / 2, timeAxisPos + 2, 10, bufferImage.GetHeight() - timeAxisPos - 3 ); +- } +- paintDC.SetTextForeground( foregroundColour ); +- if( zooming ) +- paintDC.DrawText( label, ( bufferImage.GetWidth() - objectAxisPos ) / 2 + objectAxisPos - ( objectExt.GetWidth() / 2 ), timeAxisPos + 3 ); +- else +- paintDC.DrawText( label, ( bufferImage.GetWidth() - objectAxisPos ) / 2 + 12, timeAxisPos + 3 ); + } + + void gTimeline::OnTimerWheel( wxTimerEvent& event ) +@@ -5075,7 +5213,11 @@ + endRow = TObjectOrder( floor( ( y - drawBorder - 1 ) / heightPerRow ) ); + + if( endRow >= numObjects ) ++ { + endRow = numObjects - 1; ++ printf("endRow exceeds numObjects, capped to %d\n", endRow); ++ } ++ //printf("endRow = %d\n", endRow); + onObject = selected[ endRow ]; + + return true; diff --git a/overlay.nix b/overlay.nix index ff050d2..845d838 100644 --- a/overlay.nix +++ b/overlay.nix @@ -99,6 +99,7 @@ let wxpropgrid = callPackage ./bsc/wxpropgrid/default.nix { }; paraver = callPackage ./bsc/paraver/default.nix { }; + paraverExtra = bsc.paraver.override { enableMouseLabel = true; }; paraverDebug = bsc.paraver.overrideAttrs (old: { dontStrip = true; From dd5832b39d708b68138ebefe7c5d10bccf19df1c Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 30 Nov 2020 20:08:59 +0100 Subject: [PATCH 396/987] Fix nanos6 jemalloc typo --- overlay.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/overlay.nix b/overlay.nix index 845d838..1be1540 100644 --- a/overlay.nix +++ b/overlay.nix @@ -131,7 +131,7 @@ let ]; }); - nanos6Jemalloc = nanos6.override { + nanos6Jemalloc = bsc.nanos6.override { enableJemalloc = true; }; From 8d5853bba9c39bdfc97ac66f40085107ac4863b2 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 30 Nov 2020 20:23:44 +0100 Subject: [PATCH 397/987] Add vite and otf packages --- bsc/otf/default.nix | 17 +++ bsc/otf/printf.patch | 11 ++ bsc/vite/cmake.patch | 263 +++++++++++++++++++++++++++++++++++++++++++ bsc/vite/default.nix | 83 ++++++++++++++ overlay.nix | 3 + 5 files changed, 377 insertions(+) create mode 100644 bsc/otf/default.nix create mode 100644 bsc/otf/printf.patch create mode 100644 bsc/vite/cmake.patch create mode 100644 bsc/vite/default.nix diff --git a/bsc/otf/default.nix b/bsc/otf/default.nix new file mode 100644 index 0000000..8e8d976 --- /dev/null +++ b/bsc/otf/default.nix @@ -0,0 +1,17 @@ +{ + stdenv +#, mkDerivation +, fetchurl +}: + +stdenv.mkDerivation rec { + version = "1.2.18"; + pname = "otf"; + src = fetchurl { + url = +"http://paratools01.rrp.net/wp-content/uploads/2016/06/OTF-SRC-${version}.tar.gz"; + sha256 = "10k1hyyn6w4lf5kbn1krfacaspvn1xg3qgn4027xal3hjf3kkxap"; + }; + + patches = [ ./printf.patch ]; +} diff --git a/bsc/otf/printf.patch b/bsc/otf/printf.patch new file mode 100644 index 0000000..cda3b96 --- /dev/null +++ b/bsc/otf/printf.patch @@ -0,0 +1,11 @@ +--- a/tools/otfconfig/otfconfig.c 2020-11-21 13:55:23.195530435 +0100 ++++ b/tools/otfconfig/otfconfig.c 2020-11-21 13:55:53.112402154 +0100 +@@ -75,7 +75,7 @@ int main( int argc, char** argv ) { + + strcat( tmp, "\n" ); + +- printf( tmp ); ++ printf("%s", tmp ); + } + } + diff --git a/bsc/vite/cmake.patch b/bsc/vite/cmake.patch new file mode 100644 index 0000000..709e84a --- /dev/null +++ b/bsc/vite/cmake.patch @@ -0,0 +1,263 @@ +--- a/src/CMakeLists.txt 2020-11-21 14:05:24.912896596 +0100 ++++ b/src/CMakeLists.txt 2020-11-21 14:19:30.978284644 +0100 +@@ -130,8 +130,7 @@ SET(VITE_HDRS + # Plugin header + plugin/Command_window.hpp + plugin/Plugin_window.hpp +- plugin/Plugin.hpp +- ) ++ plugin/Plugin.hpp) + + SET(VITE_UIS + interface/info_window.ui +@@ -142,8 +141,7 @@ SET(VITE_UIS + interface/list_of_counter_to_export.ui + interface/node_select.ui + interface/interval_select.ui +- interface/statistics.ui +- ) ++ interface/statistics.ui) + + SET(VITE_SRCS + # Messages & Errors +@@ -220,29 +218,23 @@ SET(VITE_SRCS + core/Core.cpp + core/getopt.c + # Main +- main.cpp +- ) ++ main.cpp) + +-SET(VITE_RCCS +- interface/vite.qrc +- ) ++SET(VITE_RCCS interface/vite.qrc) + + ############################################# + # QtColorPicker + ############################################# + set(QTCOLORPICKERDIR +- ${CMAKE_SOURCE_DIR}/externals/qtcolorpicker/src +- ) ++ ${CMAKE_SOURCE_DIR}/externals/qtcolorpicker/src) + + set(VITE_HDRS + ${VITE_HDRS} +- ${QTCOLORPICKERDIR}/qtcolorpicker.h +- ) ++ ${QTCOLORPICKERDIR}/qtcolorpicker.h) + + set(VITE_SRCS + ${VITE_SRCS} +- ${QTCOLORPICKERDIR}/qtcolorpicker.cpp +- ) ++ ${QTCOLORPICKERDIR}/qtcolorpicker.cpp) + + ############################################# + # VBO +@@ -252,15 +244,13 @@ IF(VITE_ENABLE_VBO) + ${VITE_HDRS} + render/vbo.hpp + render/Shader.hpp +- render/Render_alternate.hpp +- ) ++ render/Render_alternate.hpp) + + SET(VITE_SRCS + ${VITE_SRCS} + render/vbo.cpp + render/Shader.cpp +- render/Render_alternate.cpp +- ) ++ render/Render_alternate.cpp) + ENDIF(VITE_ENABLE_VBO) + + ############################################# +@@ -271,29 +261,25 @@ IF(VITE_ENABLE_OTF) + ${VITE_HDRS} + parser/OTFParser/ParserDefinitionOTF.hpp + parser/OTFParser/ParserEventOTF.hpp +- parser/OTFParser/ParserOTF.hpp +- ) ++ parser/OTFParser/ParserOTF.hpp) + + SET(VITE_SRCS + ${VITE_SRCS} + parser/OTFParser/ParserDefinitionOTF.cpp + parser/OTFParser/ParserEventOTF.cpp +- parser/OTFParser/ParserOTF.cpp +- ) ++ parser/OTFParser/ParserOTF.cpp) + + IF(VITE_ENABLE_MT_PARSERS) + SET(VITE_HDRS + ${VITE_HDRS} + parser/OTFParser/mt_ParserEventOTF.hpp + parser/OTFParser/mt_ParserOTF.hpp +- parser/OTFParser/OTFTraceBuilderThread.hpp +- ) ++ parser/OTFParser/OTFTraceBuilderThread.hpp) + SET(VITE_SRCS + ${VITE_SRCS} + parser/OTFParser/mt_ParserEventOTF.cpp + parser/OTFParser/mt_ParserOTF.cpp +- parser/OTFParser/OTFTraceBuilderThread.cpp +- ) ++ parser/OTFParser/OTFTraceBuilderThread.cpp) + ENDIF() + + INCLUDE_DIRECTORIES(BEFORE ${OTF_INCLUDE_DIR}) +@@ -310,15 +296,13 @@ IF(VITE_ENABLE_OTF2) + ${VITE_HDRS} + parser/OTF2Parser/ParserDefinitionOTF2.hpp + parser/OTF2Parser/ParserEventOTF2.hpp +- parser/OTF2Parser/ParserOTF2.hpp +- ) ++ parser/OTF2Parser/ParserOTF2.hpp) + + SET(VITE_SRCS + ${VITE_SRCS} + parser/OTF2Parser/ParserDefinitionOTF2.cpp + parser/OTF2Parser/ParserEventOTF2.cpp +- parser/OTF2Parser/ParserOTF2.cpp +- ) ++ parser/OTF2Parser/ParserOTF2.cpp) + + INCLUDE_DIRECTORIES(${OTF2_INCLUDE_DIR}) + +@@ -332,13 +316,11 @@ IF(VITE_ENABLE_TAU) + SET(VITE_HDRS + ${VITE_HDRS} + parser/TauParser/ParserTau.hpp +- parser/TauParser/TauStructs.hpp +- ) ++ parser/TauParser/TauStructs.hpp) + + SET(VITE_SRCS + ${VITE_SRCS} +- parser/TauParser/ParserTau.cpp +- ) ++ parser/TauParser/ParserTau.cpp) + + INCLUDE_DIRECTORIES(${TAU_INCLUDE_DIR}) + +@@ -357,8 +339,7 @@ IF(VITE_ENABLE_MT_PARSERS) + parser/PajeParser/mt_ParserPaje.hpp + parser/PajeParser/mt_PajeFileManager.hpp + parser/PajeParser/BuilderThread.hpp +- trace/TraceBuilderThread.hpp +- ) ++ trace/TraceBuilderThread.hpp) + + SET(VITE_SRCS + ${VITE_SRCS} +@@ -367,8 +348,7 @@ IF(VITE_ENABLE_MT_PARSERS) + parser/PajeParser/mt_ParserPaje.cpp + parser/PajeParser/mt_PajeFileManager.cpp + parser/PajeParser/BuilderThread.cpp +- trace/TraceBuilderThread.cpp +- ) ++ trace/TraceBuilderThread.cpp) + + ENDIF() + +@@ -385,16 +365,14 @@ IF(VITE_ENABLE_SERIALIZATION) + parser/ParserSplitted.hpp + trace/IntervalOfContainer.hpp + trace/SerializerWriter.hpp +- trace/SerializerDispatcher.hpp +- ) ++ trace/SerializerDispatcher.hpp) + + SET(VITE_SRCS + ${VITE_SRCS} + parser/ParserSplitted.cpp + trace/IntervalOfContainer.cpp + trace/SerializerWriter.cpp +- trace/SerializerDispatcher.cpp +- ) ++ trace/SerializerDispatcher.cpp) + + ENDIF(VITE_ENABLE_SERIALIZATION) + +@@ -421,24 +399,22 @@ INCLUDE_DIRECTORIES( + ${CMAKE_CURRENT_BINARY_DIR}/common + ${CMAKE_CURRENT_BINARY_DIR} + ${CMAKE_CURRENT_SOURCE_DIR} +- ${QTCOLORPICKERDIR} +- ) ++ ${QTCOLORPICKERDIR}) + #ADD_LIBRARY(vite2 SHARED ${VITE_SRCS} ${VITE_MOC} ${VITE_RCC_SRCS}) + +-IF( VITE_ENABLE_OTF ) +- LINK_DIRECTORIES( ${OTF_LIBRARY_DIR} ) +-ENDIF( VITE_ENABLE_OTF ) ++IF(VITE_ENABLE_OTF) ++ LINK_DIRECTORIES(${OTF_LIBRARY_DIR}) ++ENDIF(VITE_ENABLE_OTF) + + IF(VITE_ENABLE_OTF2) +- LINK_DIRECTORIES(${OTF2_LIBRARY_DIR} ) ++ LINK_DIRECTORIES(${OTF2_LIBRARY_DIR}) + ENDIF(VITE_ENABLE_OTF2) + + #resource + IF(WIN32) + set(VITE_RES + "${PROJECT_SOURCE_DIR}/src/interface/icon/logo.ico" +- "${PROJECT_SOURCE_DIR}/src/interface/windows_icon.rc" +- ) ++ "${PROJECT_SOURCE_DIR}/src/interface/windows_icon.rc") + ENDIF(WIN32) + + if( APPLE ) +@@ -456,7 +432,11 @@ if( APPLE ) + MACOSX_BUNDLE_COPYRIGHT "INRIA 2006-2012" + MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/vite-info.plist.in) + else( APPLE ) +- ADD_EXECUTABLE(vite ${VITE_SRCS} ${VITE_MOC} ${VITE_RCC_SRCS} ${VITE_RES}) ++ message("VITE_SRCS" ${VITE_SRCS} "END") ++ message("VITE_MOC" ${VITE_MOC} "END") ++ message("VITE_RCC_SRCS" ${VITE_RCC_SRCS} "END") ++ message("VITE_RES" ${VITE_RES} "END") ++ ADD_EXECUTABLE(vite ${VITE_SRCS} ${VITE_MOC} ${VITE_RCC_SRCS}) + endif( APPLE ) + + ############################################# +@@ -470,31 +450,22 @@ TARGET_LINK_LIBRARIES(vite + ${QT_LIBRARIES} + ${OPENGL_gl_LIBRARY} + ${OPENGL_glu_LIBRARY} +- ${Boost_LIBRARIES} +- ) ++ ${Boost_LIBRARIES}) + + IF(${CMAKE_SYSTEM_NAME} MATCHES "Linux") +- TARGET_LINK_LIBRARIES(vite +- rt +- ) ++ TARGET_LINK_LIBRARIES(vite rt) + #ADD_DEFINITIONS("-DBOOST_GZIP") + ENDIF(${CMAKE_SYSTEM_NAME} MATCHES "Linux") + + IF(VITE_ENABLE_VBO) +- TARGET_LINK_LIBRARIES(vite +- ${GLEW_LIBRARY} +- ) ++ TARGET_LINK_LIBRARIES(vite ${GLEW_LIBRARY}) + ENDIF(VITE_ENABLE_VBO) + + IF(VITE_ENABLE_OTF) +- TARGET_LINK_LIBRARIES(vite +- ${OTF_LIBRARY} +- ) ++ TARGET_LINK_LIBRARIES(vite ${OTF_LIBRARY}) + # if OTF is compiled with zlib support we need to add it + IF(WIN32) +- TARGET_LINK_LIBRARIES(vite +- ${ZLIB_LIBRARY} +- ) ++ TARGET_LINK_LIBRARIES(vite ${ZLIB_LIBRARY}) + ENDIF(WIN32) + ENDIF(VITE_ENABLE_OTF) + diff --git a/bsc/vite/default.nix b/bsc/vite/default.nix new file mode 100644 index 0000000..f0a44c9 --- /dev/null +++ b/bsc/vite/default.nix @@ -0,0 +1,83 @@ +{ + fetchgit +, stdenv +, cmake +, qtbase +, qttools +, qtcharts +, libGLU +, libGL +, glm +, glew +, wrapQtAppsHook +, otf ? null +}: + +with stdenv.lib; + +# ViTE 1.1 has several bugs, so use the SVN version. +let + #rev = "1543"; + #externals = fetchsvn { + # url = "svn://scm.gforge.inria.fr/svn/vite/externals"; + # sha256 = "1a422n3dp72v4visq5b1i21cf8sj12903sgg5v2hah3sgk02dnyz"; + # inherit rev; + #}; +in +stdenv.mkDerivation rec { + version = "c6c0ce7"; + pname = "vite"; + + #dontStrip = true; + #enableDebugging = true; + preferLocalBuild = true; + + #src = ./../../vite-c6c0ce7; + src = fetchgit { + url = "https://gitlab.inria.fr/solverstack/vite.git"; + sha256 = "17h57jjcdynnjd6s19hs6zdgvr9j7hj1rf6a62d9qky8wzb78y37"; + #rev = "373d4a8ebe86aa9ed07c9a8eb5e5e7f1602baef9"; + rev = "c6c0ce7a75324f03b24243397dfaa0d3bcd5bd1b"; + }; + + #patches = [ ./cmake.patch ]; + + #preConfigure = '' + # rm -rv externals + # ln -sv "${externals}" externals + #''; + + buildInputs = [ + cmake qtbase qttools qtcharts + libGLU libGL glm glew wrapQtAppsHook + ] ++ optional (otf != null) otf; + + #NIX_LDFLAGS = "-lGLU"; + + cmakeFlags = [ + # "-DCMAKE_BUILD_TYPE=Debug" + #"-DVITE_ENABLE_OTF2=True" + #"-DVITE_ENABLE_TAU=True" + ] + ++ optionals (otf != null) + [ + "-DVITE_ENABLE_OTF=True" + "-DOTF_LIBRARY_DIR=${otf}/lib" + "-DOTF_INCLUDE_DIR=${otf}/include" + ]; + + meta = { + description = "Visual Trace Explorer (ViTE), a tool to visualize execution traces"; + + longDescription = '' + ViTE is a trace explorer. It is a tool to visualize execution + traces in Pajé or OTF format for debugging and profiling + parallel or distributed applications. + ''; + + homepage = "http://vite.gforge.inria.fr/"; + license = stdenv.lib.licenses.cecill20; + maintainers = with stdenv.lib.maintainers; [ ]; + platforms = stdenv.lib.platforms.linux; + }; +} diff --git a/overlay.nix b/overlay.nix index 1be1540..a2bfc59 100644 --- a/overlay.nix +++ b/overlay.nix @@ -97,6 +97,9 @@ let fftw = callPackage ./bsc/fftw/default.nix { }; + otf = callPackage ./bsc/otf/default.nix { }; + vite = self.qt5.callPackage ./bsc/vite/default.nix { }; + wxpropgrid = callPackage ./bsc/wxpropgrid/default.nix { }; paraver = callPackage ./bsc/paraver/default.nix { }; paraverExtra = bsc.paraver.override { enableMouseLabel = true; }; From 1f841649f827117b0fc1c2a51c2b1b33114ef50f Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 2 Dec 2020 11:57:40 +0100 Subject: [PATCH 398/987] exec: add support for nixPrefix --- garlic/stages/exec.nix | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/garlic/stages/exec.nix b/garlic/stages/exec.nix index b2a8e1c..80db4b8 100644 --- a/garlic/stages/exec.nix +++ b/garlic/stages/exec.nix @@ -9,6 +9,7 @@ , pre ? "" , argv ? [] , post ? "" +, nixPrefix ? "" }: with builtins; @@ -28,7 +29,7 @@ stdenv.mkDerivation { ${env} ''+pre+'' - ${execMethod}${stageProgram nextStage} ${argvString} + ${execMethod}${nixPrefix}${stageProgram nextStage} ${argvString} ''+post+'' EOF chmod +x $out From 1340d1d2e887c9473b71d4068631da0016594047 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 2 Dec 2020 11:58:00 +0100 Subject: [PATCH 399/987] develop: Experimental interactive support --- garlic/develop.nix | 50 ++++++++++++++++++++++++++++++++++++++++++++++ overlay.nix | 28 +++++++++++++++++++++++++- 2 files changed, 77 insertions(+), 1 deletion(-) create mode 100644 garlic/develop.nix diff --git a/garlic/develop.nix b/garlic/develop.nix new file mode 100644 index 0000000..555666c --- /dev/null +++ b/garlic/develop.nix @@ -0,0 +1,50 @@ +{ + stdenv +, bash +, bashInteractive +, busybox +, extraInputs ? [] +}: + +stdenv.mkDerivation { + name = "develop"; + preferLocalBuild = true; + phases = [ "installPhase" ]; + buildInputs = extraInputs ++ [ busybox ]; + installPhase = '' + cat > $out < bsc.garlic.apps inherit (bsc.garlic) apps fig exp ds; + # TODO: move into garlic/default.nix garlic = { - # TODO: move into garlic/default.nix + + unsafeDevelop = callPackage ./garlic/develop.nix { + extraInputs = with self; [ + coreutils htop procps-ng vim which strace + tmux gdb kakoune universal-ctags bashInteractive + glibcLocales ncurses + # Add more nixpkgs packages here... + bsc.slurm bsc.clangOmpss2 bsc.icc bsc.mcxx bsc.perf + # Add more bscpkgs packages here... + ]; + }; + + develop = bsc.garlic.stages.exec { + nextStage = bsc.garlic.stages.isolate { + nextStage = bsc.garlic.unsafeDevelop; + nixPrefix = bsc.garlic.targetMachine.config.nixPrefix; + extraMounts = [ "/tmp:$TMPDIR" ]; + }; + nixPrefix = bsc.garlic.targetMachine.config.nixPrefix; + # This hack uploads all dependencies to MN4 + pre = '' + # Hack to upload this to MN4: @upload-to-mn@ + # Run the following command in a normal interactive shell (outside nix) + ''; + post = "\n"; + }; # Configuration for the machines machines = callPackage ./garlic/machines.nix { }; From 84a8060bc5dd809b3545d1fa4fe739fb28e04e50 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 2 Dec 2020 12:13:34 +0100 Subject: [PATCH 400/987] intel: Upgrade expired license --- bsc/intel-compiler/license.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bsc/intel-compiler/license.nix b/bsc/intel-compiler/license.nix index acfba21..87455ed 100644 --- a/bsc/intel-compiler/license.nix +++ b/bsc/intel-compiler/license.nix @@ -8,7 +8,7 @@ stdenv.mkDerivation rec { src = requireFile { name = "license.lic"; - sha256 = "06g2xgm1lch6zqfkhb768wacdx46kf61mfvj5wfpyssw0anr0x9q"; + sha256 = "1wi4a2f7hpc0v3gvbcdawvlj6yaqpkk20y1184d0zbx1cxrmwqxp"; message = '' The Intel Compiler requires a license. You can get one (free of charge) if you meet the requeriments at the website: From 284662d6cdc9f79621c6fb4eae860adbad7a4dba Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 2 Dec 2020 12:22:20 +0100 Subject: [PATCH 401/987] develop: fix bash PS1 --- garlic/develop.nix | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/garlic/develop.nix b/garlic/develop.nix index 555666c..1873e9e 100644 --- a/garlic/develop.nix +++ b/garlic/develop.nix @@ -21,12 +21,10 @@ stdenv.mkDerivation { export "buildInputs=$buildInputs" # ${stdenv} export "PATH=$PATH" - export "TERM=linux" export "out=/fake-output-directory" export NIX_BUILD_TOP=. export NIX_STORE=/nix/store - export PS1='\033[1;32mdevelop\$\033[0m ' - #export PS1='\[\033[1;32m\]develop\$\[\033[0m\] ' + export PS1='\[\033[1;32m\]develop\$\[\033[0m\] ' export TMUX_TMPDIR=/tmp export TMPDIR=/tmp From 3d352fee19dc733752958dac81d20a216e4dd914 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 2 Dec 2020 13:06:35 +0100 Subject: [PATCH 402/987] isolate: allow argument passing --- garlic/stages/isolate/stage1 | 2 +- garlic/stages/isolate/stage2 | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/garlic/stages/isolate/stage1 b/garlic/stages/isolate/stage1 index 6a624cd..74c479d 100644 --- a/garlic/stages/isolate/stage1 +++ b/garlic/stages/isolate/stage1 @@ -46,4 +46,4 @@ mounts=( join_flags="${mounts[@]}" exec $nixjoin -i $join_flags $nixhome -- \ - env -i "${env[@]}" @out@/bin/stage2 + env -i "${env[@]}" @out@/bin/stage2 "$@" diff --git a/garlic/stages/isolate/stage2 b/garlic/stages/isolate/stage2 index bc89412..1924890 100644 --- a/garlic/stages/isolate/stage2 +++ b/garlic/stages/isolate/stage2 @@ -13,4 +13,4 @@ if [ -e /usr ]; then exit 1 fi -exec @program@ +exec @program@ "$@" From f87d83021830701713557e7ff9fde89b3e905642 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 2 Dec 2020 13:06:55 +0100 Subject: [PATCH 403/987] isolate: preserve TERM --- garlic/stages/isolate/stage1 | 1 + 1 file changed, 1 insertion(+) diff --git a/garlic/stages/isolate/stage1 b/garlic/stages/isolate/stage1 index 74c479d..eb6eec6 100644 --- a/garlic/stages/isolate/stage1 +++ b/garlic/stages/isolate/stage1 @@ -20,6 +20,7 @@ env=( $(env | grep ^GARLIC || true) $(env | grep ^USER || true) $(env | grep ^TMPDIR || true) + $(env | grep '^TERM=' || true) HOME="/homeless-shelter" ) From df1f22c1228d965579c7511435e7d2114d9bd6cb Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 2 Dec 2020 13:38:43 +0100 Subject: [PATCH 404/987] develop: support for srun --- garlic/develop.nix | 5 ++++- overlay.nix | 12 +++++++++--- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/garlic/develop.nix b/garlic/develop.nix index 1873e9e..9861f61 100644 --- a/garlic/develop.nix +++ b/garlic/develop.nix @@ -33,10 +33,13 @@ stdenv.mkDerivation { export TEMP=/tmp export LANG=en_US.UTF-8 - export TERM=linux source ${stdenv}/setup + # Access to bin and nix tools for srun, as it keeps the PATH + export "PATH=\$PATH:/bin" + export "PATH=$PATH:/gpfs/projects/bsc15/nix/bin" + if [[ -z "\$@" ]]; then exec ${bashInteractive}/bin/bash else diff --git a/overlay.nix b/overlay.nix index a86077e..f4cb0fe 100644 --- a/overlay.nix +++ b/overlay.nix @@ -198,7 +198,7 @@ let ]; }; - develop = bsc.garlic.stages.exec { + develop = bsc.garlic.stages.exec rec { nextStage = bsc.garlic.stages.isolate { nextStage = bsc.garlic.unsafeDevelop; nixPrefix = bsc.garlic.targetMachine.config.nixPrefix; @@ -206,9 +206,15 @@ let }; nixPrefix = bsc.garlic.targetMachine.config.nixPrefix; # This hack uploads all dependencies to MN4 - pre = '' + pre = let + nixPrefix = bsc.garlic.targetMachine.config.nixPrefix; + stageProgram = bsc.garlicTools.stageProgram; + in + '' # Hack to upload this to MN4: @upload-to-mn@ - # Run the following command in a normal interactive shell (outside nix) + + # Create a link to the develop script + ln -fs ${nixPrefix}${stageProgram nextStage} .nix-develop ''; post = "\n"; }; From da4bbf85330f9a2fcc1299e1014d4ba2417473a5 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 3 Dec 2020 12:04:51 +0100 Subject: [PATCH 405/987] isolate: only load some files from /etc --- garlic/stages/isolate/stage1 | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/garlic/stages/isolate/stage1 b/garlic/stages/isolate/stage1 index eb6eec6..3920da8 100644 --- a/garlic/stages/isolate/stage1 +++ b/garlic/stages/isolate/stage1 @@ -27,7 +27,7 @@ env=( mounts=( #-m @nixPrefix@ #FIXME: Use only the strictly neccesary from /etc - -m /etc + -m /original-etc:/etc # The /etc/hosts file is a symlink to this etc/ -m /.statelite/tmpfs/etc -m /sys @@ -44,7 +44,14 @@ mounts=( @extraMountOptions@ ) -join_flags="${mounts[@]}" +symlinks=( + -s /etc/hosts:/original-etc/hosts + -s /etc/passwd:/original-etc/passwd + -s /etc/resolv.conf:/original-etc/resolv.conf + -s /etc/host.conf:/original-etc/host.conf + -s /etc/slurm/slurm.conf:/original-etc/slurm/slurm.conf + -s /etc/services:/original-etc/services +) -exec $nixjoin -i $join_flags $nixhome -- \ +exec $nixjoin -i "${mounts[@]}" "${symlinks[@]}" $nixhome -- \ env -i "${env[@]}" @out@/bin/stage2 "$@" From 3dbb24dd9e02ab1eee194b0eaac6d8e68038b32d Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 3 Dec 2020 12:05:24 +0100 Subject: [PATCH 406/987] develop: add more tools --- overlay.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/overlay.nix b/overlay.nix index f4cb0fe..2b0778a 100644 --- a/overlay.nix +++ b/overlay.nix @@ -191,7 +191,7 @@ let extraInputs = with self; [ coreutils htop procps-ng vim which strace tmux gdb kakoune universal-ctags bashInteractive - glibcLocales ncurses + glibcLocales ncurses git screen curl # Add more nixpkgs packages here... bsc.slurm bsc.clangOmpss2 bsc.icc bsc.mcxx bsc.perf # Add more bscpkgs packages here... From eea953925833b88bc8c2edd1ca8e5e84e62f59fc Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 3 Dec 2020 12:14:04 +0100 Subject: [PATCH 407/987] develop: Set shell and hisfile --- garlic/develop.nix | 3 +++ 1 file changed, 3 insertions(+) diff --git a/garlic/develop.nix b/garlic/develop.nix index 9861f61..e7d8c0c 100644 --- a/garlic/develop.nix +++ b/garlic/develop.nix @@ -18,6 +18,7 @@ stdenv.mkDerivation { # This program loads a environment with the given programs available. # Requires /nix to be available. + curdir="\$(pwd)" export "buildInputs=$buildInputs" # ${stdenv} export "PATH=$PATH" @@ -39,6 +40,8 @@ stdenv.mkDerivation { # Access to bin and nix tools for srun, as it keeps the PATH export "PATH=\$PATH:/bin" export "PATH=$PATH:/gpfs/projects/bsc15/nix/bin" + export "SHELL=${bashInteractive}/bin/bash" + export HISTFILE="\$curdir/.histfile" if [[ -z "\$@" ]]; then exec ${bashInteractive}/bin/bash From b8a1ea3f72d4f3657bc442a6b7639d84b4597d0b Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 3 Dec 2020 13:09:42 +0100 Subject: [PATCH 408/987] develop: Fix inputrc missing key codes --- garlic/{develop.nix => develop/default.nix} | 4 +++ garlic/develop/inputrc | 37 +++++++++++++++++++++ overlay.nix | 2 +- 3 files changed, 42 insertions(+), 1 deletion(-) rename garlic/{develop.nix => develop/default.nix} (95%) create mode 100644 garlic/develop/inputrc diff --git a/garlic/develop.nix b/garlic/develop/default.nix similarity index 95% rename from garlic/develop.nix rename to garlic/develop/default.nix index e7d8c0c..6ea0930 100644 --- a/garlic/develop.nix +++ b/garlic/develop/default.nix @@ -6,6 +6,9 @@ , extraInputs ? [] }: +let + inputrc = ./inputrc; +in stdenv.mkDerivation { name = "develop"; preferLocalBuild = true; @@ -42,6 +45,7 @@ stdenv.mkDerivation { export "PATH=$PATH:/gpfs/projects/bsc15/nix/bin" export "SHELL=${bashInteractive}/bin/bash" export HISTFILE="\$curdir/.histfile" + export INPUTRC=${inputrc} if [[ -z "\$@" ]]; then exec ${bashInteractive}/bin/bash diff --git a/garlic/develop/inputrc b/garlic/develop/inputrc new file mode 100644 index 0000000..f339eb6 --- /dev/null +++ b/garlic/develop/inputrc @@ -0,0 +1,37 @@ +# inputrc borrowed from CentOS (RHEL). + +set bell-style none + +set meta-flag on +set input-meta on +set convert-meta off +set output-meta on +set colored-stats on + +#set mark-symlinked-directories on + +$if mode=emacs + +# for linux console and RH/Debian xterm +"\e[1~": beginning-of-line +"\e[4~": end-of-line +"\e[5~": beginning-of-history +"\e[6~": end-of-history +"\e[3~": delete-char +"\e[2~": quoted-insert +"\e[5C": forward-word +"\e[5D": backward-word +"\e[1;5C": forward-word +"\e[1;5D": backward-word + +# for rxvt +"\e[8~": end-of-line + +# for non RH/Debian xterm, can't hurt for RH/DEbian xterm +"\eOH": beginning-of-line +"\eOF": end-of-line + +# for freebsd console +"\e[H": beginning-of-line +"\e[F": end-of-line +$endif diff --git a/overlay.nix b/overlay.nix index 2b0778a..cbcabf5 100644 --- a/overlay.nix +++ b/overlay.nix @@ -187,7 +187,7 @@ let # TODO: move into garlic/default.nix garlic = { - unsafeDevelop = callPackage ./garlic/develop.nix { + unsafeDevelop = callPackage ./garlic/develop/default.nix { extraInputs = with self; [ coreutils htop procps-ng vim which strace tmux gdb kakoune universal-ctags bashInteractive From bdaadd4ef740e42905671549fd620f336906988f Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 3 Dec 2020 13:20:40 +0100 Subject: [PATCH 409/987] nbody: add ctf tests --- garlic/exp/nbody/nblocks.nix | 110 +++++++++++++++++++++++++++++++++++ garlic/exp/nbody/tampi.nix | 101 -------------------------------- overlay.nix | 27 ++++++++- 3 files changed, 134 insertions(+), 104 deletions(-) create mode 100644 garlic/exp/nbody/nblocks.nix delete mode 100644 garlic/exp/nbody/tampi.nix diff --git a/garlic/exp/nbody/nblocks.nix b/garlic/exp/nbody/nblocks.nix new file mode 100644 index 0000000..ce4a025 --- /dev/null +++ b/garlic/exp/nbody/nblocks.nix @@ -0,0 +1,110 @@ +{ + stdenv +, stdexp +, bsc +, targetMachine +, stages +, garlicTools + +# Options for the experiment +, enableJemalloc ? false +, enableCTF ? false +# Number of cases tested +, steps ? 7 +# nbody iterations +, timesteps ? 10 +# nbody total number of particles +, particles ? null +, gitBranch ? "garlic/tampi+send+oss+task" +, loops ? 10 +, nblocks0 ? null +}: + +with stdenv.lib; +with garlicTools; + +let + + defaultOpt = var: def: if (var != null) then var else def; + + machineConfig = targetMachine.config; + inherit (machineConfig) hw; + + # Initial variable configuration + varConf = with bsc; { + # Create a list with values 2^n with n from 0 to (steps - 1) inclusive + i = expRange 2 0 (steps - 1); + }; + + # Generate the complete configuration for each unit + genConf = var: fix (self: var // targetMachine.config // { + expName = "nbody-nblocks"; + unitName = "${self.expName}${toString self.nblocks}"; + + inherit (machineConfig) hw; + + # nbody options + particles = defaultOpt particles (4096 * self.hw.cpusPerSocket); + nblocks0 = defaultOpt nblocks0 (self.hw.cpusPerSocket / 2); + # The number of blocks is then computed from the multiplier "i" and + # the initial number of blocks "nblocks0" + nblocks = self.i * self.nblocks0; + + totalTasks = self.ntasksPerNode * self.nodes; + particlesPerTask = self.particles / self.totalTasks; + blocksize = self.particlesPerTask / self.nblocks; + cc = bsc.icc; + mpi = bsc.impi; + cflags = "-g"; + inherit timesteps gitBranch enableJemalloc enableCTF loops; + + # Resources + qos = "debug"; + cpusPerTask = self.hw.cpusPerSocket; + ntasksPerNode = self.hw.socketsPerNode; + nodes = 1; + jobName = self.unitName; + }); + + # Compute the array of configurations + configs = stdexp.buildConfigs { + inherit varConf genConf; + }; + + perf = {nextStage, conf, ...}: with conf; stages.perf { + inherit nextStage; + perfOptions = "record --call-graph dwarf -o \\$\\$.perf"; + }; + + ctf = {nextStage, conf, ...}: with conf; stages.exec { + inherit nextStage; + env = optionalString (conf.enableCTF) '' + export NANOS6_CONFIG_OVERRIDE="version.instrument=ctf,\ + instrument.ctf.conversor.enabled=false" + ''; + }; + + exec = {nextStage, conf, ...}: with conf; stages.exec { + inherit nextStage; + argv = [ "-t" timesteps "-p" particles ]; + }; + + program = {nextStage, conf, ...}: with conf; + let + /* These changes are propagated to all dependencies. For example, + when changing nanos6+jemalloc, we will get tampi built with + nanos6+jemalloc as well. */ + customPkgs = bsc.extend (self: super: { + mpi = conf.mpi; + nanos6 = self.nanos6.override { inherit enableJemalloc; }; + }); + in + customPkgs.apps.nbody.override ({ + inherit cc blocksize mpi gitBranch cflags; + }); + + pipeline = stdexp.stdPipeline ++ [ ctf exec program ]; + +in + + stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/nbody/tampi.nix b/garlic/exp/nbody/tampi.nix deleted file mode 100644 index 09516be..0000000 --- a/garlic/exp/nbody/tampi.nix +++ /dev/null @@ -1,101 +0,0 @@ -{ - stdenv -, stdexp -, bsc -, targetMachine -, stages -, garlicTools -, enableJemalloc ? false -, particles ? null -}: - -with stdenv.lib; -with garlicTools; - -let - - machineConfig = targetMachine.config; - inherit (machineConfig) hw; - - # Number of cases tested - steps = 7; - - # First value for nblocks: we want to begin by using 1/2 blocks/cpu so we set - # the first number of blocks to cpusPerSocket / 2 - nblocks0 = hw.cpusPerSocket / 2; - - # Initial variable configuration - varConf = with bsc; { - # Create a list with values 2^n with n from 0 to (steps - 1) inclusive - i = expRange 2 0 (steps - 1); - }; - - # Set here the particles, so we don't have an infinite recursion in the - # genConf attrset. - _particles = if (particles != null) - then particles - else 4096 * hw.cpusPerSocket; - - # Generate the complete configuration for each unit - genConf = with bsc; c: targetMachine.config // rec { - expName = "nbody-nblocks"; - unitName = "${expName}${toString nblocks}"; - - inherit (machineConfig) hw; - # nbody options - particles = _particles; - timesteps = 10; - nblocks = c.i * nblocks0; - totalTasks = ntasksPerNode * nodes; - particlesPerTask = particles / totalTasks; - blocksize = particlesPerTask / nblocks; - cc = icc; - mpi = impi; - gitBranch = "garlic/tampi+send+oss+task"; - cflags = "-g"; - inherit enableJemalloc; - - # Repeat the execution of each unit 10 times - loops = 10; - - # Resources - qos = "debug"; - cpusPerTask = hw.cpusPerSocket; - ntasksPerNode = hw.socketsPerNode; - nodes = 1; - - jobName = unitName; - }; - - # Compute the array of configurations - configs = stdexp.buildConfigs { - inherit varConf genConf; - }; - - perf = {nextStage, conf, ...}: with conf; stages.perf { - inherit nextStage; - perfOptions = "record --call-graph dwarf -o \\$\\$.perf"; - }; - - exec = {nextStage, conf, ...}: with conf; stages.exec { - inherit nextStage; - argv = [ "-t" timesteps "-p" particles ]; - }; - - program = {nextStage, conf, ...}: with conf; - let - customPkgs = stdexp.replaceMpi conf.mpi; - in - customPkgs.apps.nbody.override ({ - inherit cc blocksize mpi gitBranch cflags; - } // optionalAttrs enableJemalloc { - mcxx = bsc.mcxx.override { - nanos6 = bsc.nanos6Jemalloc; - }; - }); - - pipeline = stdexp.stdPipeline ++ [ exec program ]; - -in - - stdexp.genExperiment { inherit configs pipeline; } diff --git a/overlay.nix b/overlay.nix index cbcabf5..77e5ab8 100644 --- a/overlay.nix +++ b/overlay.nix @@ -372,14 +372,30 @@ let # Experiments exp = { nbody = rec { - tampi = callPackage ./garlic/exp/nbody/tampi.nix { }; + baseline = callPackage ./garlic/exp/nbody/nblocks.nix { }; # Experiment variants - baseline = tampi; - small = baseline.override { particles = 12 * 4096; }; + small = baseline.override { + particles = 12 * 4096; + }; # TODO: Update freeCpu using a non-standard pipeline #freeCpu = baseline.override { freeCpu = true; }; jemalloc = baseline.override { enableJemalloc = true; }; + + # Some experiments with traces + trace = { + # Only one unit repeated 30 times + baseline = small.override { + enableCTF = true; + loops = 30; + steps = 1; + }; + + # Same but with jemalloc enabled + jemalloc = trace.baseline.override { + enableJemalloc = true; + }; + }; }; saiph = { @@ -450,6 +466,7 @@ let small = merge [ small ]; jemalloc = merge [ baseline jemalloc ]; #freeCpu = merge [ baseline freeCpu ]; + ctf = merge [ ctf ]; }; hpcg = with exp.hpcg; { @@ -490,6 +507,10 @@ let # script = ./garlic/fig/nbody/freeCpu.R; # dataset = ds.nbody.freeCpu; #}; + ctf = pp.rPlot { + script = ./garlic/fig/nbody/baseline.R; + dataset = ds.nbody.ctf; + }; }; hpcg = { From c858f521bfb818449bbce81a3e5e0dbb3af79427 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 3 Dec 2020 13:22:10 +0100 Subject: [PATCH 410/987] isolate: add $TMPDIR in the namespace --- garlic/stages/isolate/stage1 | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/garlic/stages/isolate/stage1 b/garlic/stages/isolate/stage1 index 3920da8..af89c79 100644 --- a/garlic/stages/isolate/stage1 +++ b/garlic/stages/isolate/stage1 @@ -41,7 +41,8 @@ mounts=( -m /gpfs/projects/bsc15 -m /gpfs/scratch/bsc15 -m /bin:@nixPrefix@@busybox@/bin - @extraMountOptions@ + -m "$TMPDIR" + @extraMountOptions@ ) symlinks=( From 5e9adf3fe662daa77f22af98ec577a01574f9856 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 3 Dec 2020 13:22:48 +0100 Subject: [PATCH 411/987] nbody: Fix x label --- garlic/fig/nbody/baseline.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/garlic/fig/nbody/baseline.R b/garlic/fig/nbody/baseline.R index b7c8a29..cf91a87 100644 --- a/garlic/fig/nbody/baseline.R +++ b/garlic/fig/nbody/baseline.R @@ -51,7 +51,7 @@ png("box.png", width=w*ppi, height=h*ppi, res=ppi) p = ggplot(data=D, aes(x=blocksPerCpuFactor, y=tnorm, color=bad)) + # Labels - labs(x="Num blocks", y="Normalized time", + labs(x="Blocks/CPU", y="Normalized time", title=sprintf("Nbody normalized time. Particles=%d", particles), subtitle=input_file) + From 1bdeca9e7d23078d3c0544fe37495478b511180c Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 3 Dec 2020 16:33:48 +0100 Subject: [PATCH 412/987] unit: Remove dangerous slash from index names --- garlic/stages/unit.nix | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/garlic/stages/unit.nix b/garlic/stages/unit.nix index 23ed75e..72ee52e 100644 --- a/garlic/stages/unit.nix +++ b/garlic/stages/unit.nix @@ -10,6 +10,7 @@ }: with stdenv.lib; +with builtins; let @@ -38,6 +39,9 @@ let firstStage = (x: x.programPath) (elemAt linkStages 0); jsonConf = writeText "garlic_config.json" (builtins.toJSON conf); + + safeUnitName = replaceStrings ["/" "$"] ["_" "_"] conf.unitName; + safeExpName = replaceStrings ["/" "$"] ["_" "_"] conf.expName; in builtins.trace "evaluating unit ${conf.unitName}" stdenv.mkDerivation { @@ -72,14 +76,14 @@ stdenv.mkDerivation { export GARLIC_UNIT=$(basename $out) # Create an index entry - rm -f "\$GARLIC_INDEX/${conf.unitName}" \ - "\$GARLIC_INDEX/${conf.expName}" + rm -f "\$GARLIC_INDEX/${safeUnitName}" \ + "\$GARLIC_INDEX/${safeExpName}" ln -Tfs "../out/\$GARLIC_UNIT" \ - "\$GARLIC_INDEX/${conf.unitName}" + "\$GARLIC_INDEX/${safeUnitName}" ln -Tfs "../out/\$GARLIC_EXPERIMENT" \ - "\$GARLIC_INDEX/${conf.expName}" + "\$GARLIC_INDEX/${safeExpName}" if [ -e "\$GARLIC_UNIT" ]; then >&2 echo "skipping, unit path already exists: \$GARLIC_UNIT" From 53d8e535b5d629f86ff0d279521ce2dff7110040 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 3 Dec 2020 16:43:50 +0100 Subject: [PATCH 413/987] clang: Use llvm 11 by default --- overlay.nix | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/overlay.nix b/overlay.nix index 77e5ab8..f92befc 100644 --- a/overlay.nix +++ b/overlay.nix @@ -150,8 +150,12 @@ let # Our custom version that lacks the binaries. Disabled by default. #rdma-core = callPackage ./bsc/rdma-core/default.nix { }; + # Last llvm release by default + llvmPackages = self.llvmPackages_11; + lld = bsc.llvmPackages.lld; + clangOmpss2Unwrapped = callPackage ./bsc/llvm-ompss2/clang.nix { - stdenv = self.llvmPackages_10.stdenv; + stdenv = bsc.llvmPackages.stdenv; enableDebug = false; }; From f65e4d01c3143ba2abd2c597d4f4e2f2a032f9c0 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 3 Dec 2020 18:06:51 +0100 Subject: [PATCH 414/987] Simplify compiler name variables --- garlic/apps/bigsort/default.nix | 6 +++--- garlic/apps/bigsort/genseq.nix | 2 +- garlic/apps/bigsort/shuffle.nix | 2 +- garlic/apps/hpcg/default.nix | 4 ++-- garlic/apps/nbody/default.nix | 2 +- garlic/apps/saiph/default.nix | 2 +- overlay.nix | 31 ++++++++++++++++--------------- 7 files changed, 25 insertions(+), 24 deletions(-) diff --git a/garlic/apps/bigsort/default.nix b/garlic/apps/bigsort/default.nix index 05c0342..e22097c 100644 --- a/garlic/apps/bigsort/default.nix +++ b/garlic/apps/bigsort/default.nix @@ -20,7 +20,7 @@ stdenv.mkDerivation rec { preBuild = '' cd BigSort - export I_MPI_CXX=${cc.cc.CXX} + export I_MPI_CXX=${cc.CXX} ''; buildInputs = [ @@ -31,8 +31,8 @@ stdenv.mkDerivation rec { ++ optional (nanos6 != null) nanos6; makeFlags = [ - "CC=${cc.cc.CC}" - "CXX=${cc.cc.CXX}" + "CC=${cc.CC}" + "CXX=${cc.CXX}" "CPP_BIN=mpicxx" "CLUSTER=MareNostrum4" "OPENMP=yes" diff --git a/garlic/apps/bigsort/genseq.nix b/garlic/apps/bigsort/genseq.nix index 8d95bbb..ca12edc 100644 --- a/garlic/apps/bigsort/genseq.nix +++ b/garlic/apps/bigsort/genseq.nix @@ -28,7 +28,7 @@ stdenv.mkDerivation rec { ]; makeFlags = [ - "I_MPI_CXX=${cc.cc.CXX}" + "I_MPI_CXX=${cc.CXX}" "CPP_BIN=mpicxx" ]; diff --git a/garlic/apps/bigsort/shuffle.nix b/garlic/apps/bigsort/shuffle.nix index 02c02e8..55ac106 100644 --- a/garlic/apps/bigsort/shuffle.nix +++ b/garlic/apps/bigsort/shuffle.nix @@ -28,7 +28,7 @@ stdenv.mkDerivation rec { ]; makeFlags = [ - "I_MPI_CXX=${cc.cc.CXX}" + "I_MPI_CXX=${cc.CXX}" "CPP_BIN=mpicxx" ]; diff --git a/garlic/apps/hpcg/default.nix b/garlic/apps/hpcg/default.nix index 3d62904..3f5737f 100644 --- a/garlic/apps/hpcg/default.nix +++ b/garlic/apps/hpcg/default.nix @@ -28,8 +28,8 @@ stdenv.mkDerivation rec { ++ optional (mpi != null) mpi; makeFlags = [ - "CC=${cc.cc.CC}" - "CXX=${cc.cc.CXX}" + "CC=${cc.CC}" + "CXX=${cc.CXX}" ]; enableParallelBuilding = true; diff --git a/garlic/apps/nbody/default.nix b/garlic/apps/nbody/default.nix index 70ece4b..57efb0c 100644 --- a/garlic/apps/nbody/default.nix +++ b/garlic/apps/nbody/default.nix @@ -36,7 +36,7 @@ stdenv.mkDerivation rec { '' else ""); makeFlags = [ - "CC=${cc.cc.CC}" + "CC=${cc.CC}" "BS=${toString blocksize}" ] ++ optional (tampi != null) "TAMPI_HOME=${tampi}"; diff --git a/garlic/apps/saiph/default.nix b/garlic/apps/saiph/default.nix index 9fe5f74..73f890c 100644 --- a/garlic/apps/saiph/default.nix +++ b/garlic/apps/saiph/default.nix @@ -52,7 +52,7 @@ stdenv.mkDerivation rec { ''; makeFlags = [ - "-f" "Makefile.${cc.cc.CC}" + "-f" "Makefile.${cc.CC}" "apps" "APP=Heat3D_vect" ] ++ optional (nbx != null) "NB_X=${toString nbx}" diff --git a/overlay.nix b/overlay.nix index f92befc..dad6235 100644 --- a/overlay.nix +++ b/overlay.nix @@ -8,6 +8,10 @@ let inherit (self.lib) callPackagesWith; callPackage = callPackageWith (self // self.bsc // self.garlic); + appendPasstru = drv: attrs: drv.overrideAttrs (old:{ + passthru = old.passthru // attrs; + }); + # --------------------------------------------------------- # # BSC Packages # --------------------------------------------------------- # @@ -55,22 +59,14 @@ let # A wrapper script that puts all the flags and environment vars properly and # calls the intel compiler binary - icc = callPackage ./bsc/intel-compiler/default.nix { + icc = appendPasstru (callPackage ./bsc/intel-compiler/default.nix { iccUnwrapped = bsc.iccUnwrapped; intelLicense = bsc.intelLicense; - }; + }) { CC = "icc"; CXX = "icpc"; }; - # We need to set the cc.cc.CC and cc.cc.CXX attributes, in order to + # We need to set the cc.CC and cc.CXX attributes, in order to # determine the name of the compiler - # FIXME: Use a proper and automatic way to compute the compiler name - gcc = self.gcc.overrideAttrs (old1: { - cc = old1.cc.overrideAttrs (old2: { - passthru = old2.passthru // { - CC = "gcc"; - CXX = "g++"; - }; - }); - }); + gcc = appendPasstru self.gcc { CC = "gcc"; CXX = "g++"; }; intelLicense = callPackage ./bsc/intel-compiler/license.nix { }; @@ -151,7 +147,12 @@ let #rdma-core = callPackage ./bsc/rdma-core/default.nix { }; # Last llvm release by default - llvmPackages = self.llvmPackages_11; + llvmPackages = self.llvmPackages_11 // { + clang = appendPasstru self.llvmPackages_11.clang { + CC = "clang"; CXX = "clang++"; + }; + }; + lld = bsc.llvmPackages.lld; clangOmpss2Unwrapped = callPackage ./bsc/llvm-ompss2/clang.nix { @@ -159,9 +160,9 @@ let enableDebug = false; }; - clangOmpss2 = callPackage bsc/llvm-ompss2/default.nix { + clangOmpss2 = appendPasstru (callPackage bsc/llvm-ompss2/default.nix { clangOmpss2Unwrapped = bsc.clangOmpss2Unwrapped; - }; + }) { CC = "clang"; CXX = "clang++"; }; stdenvOmpss2 = self.clangStdenv.override { cc = bsc.clangOmpss2; From 266fffdb5fe90f926d367866ff34d3ffeaf2cc63 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 3 Dec 2020 16:57:13 +0100 Subject: [PATCH 415/987] miniamr: initial version for OmpSs-2 --- garlic/apps/miniamr/default.nix | 46 +++++++++++++++++++++++++++++++++ overlay.nix | 5 ++++ 2 files changed, 51 insertions(+) create mode 100644 garlic/apps/miniamr/default.nix diff --git a/garlic/apps/miniamr/default.nix b/garlic/apps/miniamr/default.nix new file mode 100644 index 0000000..844913f --- /dev/null +++ b/garlic/apps/miniamr/default.nix @@ -0,0 +1,46 @@ +{ + stdenv +, tampi +, clangOmpss2 +, mpi +, nanos6 +, mcxx +, variant +}: + +with stdenv.lib; + +assert (assertOneOf "variant" variant [ "openmp" "openmp-tasks" "ompss-2" ]); + +let + cc=mcxx; +in +stdenv.mkDerivation rec { + name = "miniamr"; + + src = builtins.fetchGit { + url = "ssh://git@bscpm02.bsc.es/ksala/miniamr.git"; + ref = "master"; + }; + + postUnpack = '' + sourceRoot=$sourceRoot/${variant} + ''; + + buildInputs = [ tampi clangOmpss2 mpi nanos6 mcxx ]; + + makeFlags = [ + "CC=${cc.CC}" + "CXX=${cc.CXX}" + ]; + + enableParallelBuilding = true; + + installPhase = '' + mkdir -p $out/bin + cp miniAMR.x $out/bin/ + ''; + + programPath = "/bin/miniAMR.x"; + +} diff --git a/overlay.nix b/overlay.nix index dad6235..d40e804 100644 --- a/overlay.nix +++ b/overlay.nix @@ -303,6 +303,11 @@ let }; heat = callPackage ./garlic/apps/heat/default.nix { }; + + miniamr = callPackage ./garlic/apps/miniamr/default.nix { + variant = "ompss-2"; + }; + # heat = callPackage ./garlic/apps/heat/default.nix { # # FIXME: The heat program must be able to compile with gcc9 and newer # stdenv = self.gcc7Stdenv; From eb4adf95209148d671fa835173e3b6bad84851b0 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 3 Dec 2020 18:49:28 +0100 Subject: [PATCH 416/987] ifsker: initial version --- garlic/apps/ifsker/default.nix | 50 ++++++++++++++++++++++++++++++++++ overlay.nix | 2 ++ 2 files changed, 52 insertions(+) create mode 100644 garlic/apps/ifsker/default.nix diff --git a/garlic/apps/ifsker/default.nix b/garlic/apps/ifsker/default.nix new file mode 100644 index 0000000..8a43fa0 --- /dev/null +++ b/garlic/apps/ifsker/default.nix @@ -0,0 +1,50 @@ +{ + stdenv +, mpi +, gfortran +, tampi +, nanos6 +, mcxx +}: + +with stdenv.lib; + +stdenv.mkDerivation rec { + name = "ifsker"; + + src = builtins.fetchGit { + url = "ssh://git@bscpm02.bsc.es/ksala/ifsker.git"; + ref = "master"; + }; + + buildInputs = [ tampi mpi nanos6 mcxx gfortran ]; + + preferLocalBuild = true; + + # Mercurium seems to fail when building with fortran in parallel + enableParallelBuilding = false; + + # FIXME: Patch mcxx to use other directory than $HOME for the lock + # files. + preConfigure = '' + export TAMPI_HOME=${tampi} + + # $HOME is required for the lock files by mcxx to compile fortran. + # So we use the $TMPDIR to store them. + export HOME=$TMPDIR + ''; + + makeFlags = [ + "-f" "Makefile.gcc" + ]; + + + installPhase = '' + mkdir -p $out/bin + cp *.bin $out/bin/ + ''; + + # TODO: Split the app into variants + programPath = "/bin/03.ifsker.mpi.ompss2.tasks.bin"; + +} diff --git a/overlay.nix b/overlay.nix index d40e804..2a3e7eb 100644 --- a/overlay.nix +++ b/overlay.nix @@ -308,6 +308,8 @@ let variant = "ompss-2"; }; + ifsker = callPackage ./garlic/apps/ifsker/default.nix { }; + # heat = callPackage ./garlic/apps/heat/default.nix { # # FIXME: The heat program must be able to compile with gcc9 and newer # stdenv = self.gcc7Stdenv; From d70316a25a40f2cb19dd5b807ae533f52620a48f Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 4 Dec 2020 11:17:15 +0100 Subject: [PATCH 417/987] fwi: disable nanos6 in ModelGenerator --- garlic/apps/fwi/default.nix | 21 ++++++++++++++------- overlay.nix | 4 ++-- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/garlic/apps/fwi/default.nix b/garlic/apps/fwi/default.nix index 2a97508..594e73e 100644 --- a/garlic/apps/fwi/default.nix +++ b/garlic/apps/fwi/default.nix @@ -8,16 +8,14 @@ }: stdenv.mkDerivation rec { - name = "nbody"; - variant = "4_MPI_ompss"; + name = "fwi"; + variant = "oss+task"; src = builtins.fetchGit { url = "https://gitlab.com/srodrb/BSC-FWI.git"; - ref = "ompss-mpi-nocache"; + ref = "${variant}"; }; - postUnpack = "sourceRoot=$sourceRoot/${variant}"; - enableParallelBuilding = true; buildInputs = [ @@ -33,8 +31,17 @@ stdenv.mkDerivation rec { # to define them before mcc includes nanos6.h from the command line. So the # only chance is by setting it at the command line with -D. Using the DEFINES # below, reaches the command line of the preprocessing stage with gcc. - preBuild = '' + preConfigure = '' export DEFINES=-D_GNU_SOURCE + export NANOS6_CONFIG_OVERRIDE=version.debug=true + ''; + + # We compile the ModelGenerator using gcc *only*, as otherwise it will + # be compiled with nanos6, which requires access to /sys to determine + # hardware capabilities. So it will fail in the nix-build environment, + # as there is no /sys mounted. + preBuild = '' + make COMPILER=GNU ModelGenerator ''; makeFlags = [ @@ -46,7 +53,7 @@ stdenv.mkDerivation rec { installPhase = '' mkdir -p $out/bin - cp fwi.* $out/bin + cp fwi $out/bin cp ModelGenerator $out/bin ''; } diff --git a/overlay.nix b/overlay.nix index 2a3e7eb..d3652d5 100644 --- a/overlay.nix +++ b/overlay.nix @@ -310,6 +310,8 @@ let ifsker = callPackage ./garlic/apps/ifsker/default.nix { }; + fwi = callPackage ./garlic/apps/fwi { }; + # heat = callPackage ./garlic/apps/heat/default.nix { # # FIXME: The heat program must be able to compile with gcc9 and newer # stdenv = self.gcc7Stdenv; @@ -330,8 +332,6 @@ let # }; # # hpccg = callPackage ./garlic/apps/hpccg { }; -# -# fwi = callPackage ./garlic/apps/fwi { }; }; # Execution stages From 90d7c832617f17e4b5aecaf1cd779391c1f9d8cc Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 4 Dec 2020 11:18:44 +0100 Subject: [PATCH 418/987] Add a hwloc test --- overlay.nix | 8 ++++++++ test/bugs/hwloc.c | 36 ++++++++++++++++++++++++++++++++++++ test/bugs/hwloc.nix | 20 ++++++++++++++++++++ 3 files changed, 64 insertions(+) create mode 100644 test/bugs/hwloc.c create mode 100644 test/bugs/hwloc.nix diff --git a/overlay.nix b/overlay.nix index d3652d5..e328262 100644 --- a/overlay.nix +++ b/overlay.nix @@ -120,6 +120,10 @@ let nanos6 = bsc.nanos6Release; nanos6Release = callPackage ./bsc/nanos6/default.nix { }; nanos6Git = callPackage ./bsc/nanos6/git.nix { }; + nanos6Debug = bsc.nanos6.overrideAttrs (old: { + dontStrip = true; + enableDebugging = true; + }); jemalloc = self.jemalloc.overrideAttrs (old: { @@ -546,6 +550,10 @@ let }; }; }; + + test = { + hwloc = callPackage ./test/bugs/hwloc.nix { }; + }; }; }); diff --git a/test/bugs/hwloc.c b/test/bugs/hwloc.c new file mode 100644 index 0000000..e0ca8ec --- /dev/null +++ b/test/bugs/hwloc.c @@ -0,0 +1,36 @@ +#include +#include +#include + +int main(int argc, char *argv[]) +{ + size_t i, coreCount; + hwloc_topology_t topology; + hwloc_obj_t obj; + + if(hwloc_topology_init(&topology)) + { + fprintf(stderr, "hwloc_topology_init failed\n"); + exit(EXIT_FAILURE); + } + + if(hwloc_topology_load(topology)) + { + fprintf(stderr, "hwloc_topology_load failed\n"); + exit(EXIT_FAILURE); + } + + coreCount = hwloc_get_nbobjs_by_type(topology, HWLOC_OBJ_CORE); + printf("coreCount = %zu\n", coreCount); + + for(i = 0; i < coreCount; i++) + { + obj = hwloc_get_obj_by_type(topology, HWLOC_OBJ_PU, i); + assert(obj != NULL); + assert(obj->parent != NULL); + printf("obj->parent->type = %d, i = %zu\n", obj->parent->type, i); + assert(obj->parent->type == HWLOC_OBJ_CORE); + } + + printf("hwloc test OK\n"); +} diff --git a/test/bugs/hwloc.nix b/test/bugs/hwloc.nix new file mode 100644 index 0000000..2546d3d --- /dev/null +++ b/test/bugs/hwloc.nix @@ -0,0 +1,20 @@ +{ + stdenv +, hwloc +, strace +}: + +stdenv.mkDerivation { + name = "hwloc-test"; + + src = ./.; + + buildInputs = [ hwloc strace ]; + + buildPhase = '' + ls -l /sys + gcc -lhwloc hwloc.c -o hwloc + strace ./hwloc + ''; + +} From a8db596b35661c748fe3d03e0774266381ae4705 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 4 Dec 2020 11:21:02 +0100 Subject: [PATCH 419/987] Add lulesh and hpccg again --- overlay.nix | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/overlay.nix b/overlay.nix index e328262..906ee0b 100644 --- a/overlay.nix +++ b/overlay.nix @@ -314,7 +314,11 @@ let ifsker = callPackage ./garlic/apps/ifsker/default.nix { }; - fwi = callPackage ./garlic/apps/fwi { }; + lulesh = callPackage ./garlic/apps/lulesh/default.nix { }; + + hpccg = callPackage ./garlic/apps/hpccg/default.nix { }; + + fwi = callPackage ./garlic/apps/fwi/default.nix { }; # heat = callPackage ./garlic/apps/heat/default.nix { # # FIXME: The heat program must be able to compile with gcc9 and newer @@ -330,12 +334,6 @@ let # }; # }; # }; -# -# lulesh = callPackage ./garlic/apps/lulesh { -# mpi = intel-mpi; -# }; -# -# hpccg = callPackage ./garlic/apps/hpccg { }; }; # Execution stages From 9a0ea08d72f865b53b5673b26016955e951d2142 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 7 Dec 2020 13:33:42 +0100 Subject: [PATCH 420/987] Reorganization - All garlic stuff is moved into garlic/ - Group the overlay index by sections - Add a garlic/default.nix link to the main default.nix, so we can build derivations at garlic/ --- garlic/apps/index.nix | 55 ++++ garlic/default.nix | 1 + garlic/ds/index.nix | 40 +++ garlic/exp/index.nix | 93 +++++++ garlic/fig/index.nix | 57 ++++ garlic/index.nix | 128 +++++++++ overlay.nix | 632 ++++++++++-------------------------------- 7 files changed, 516 insertions(+), 490 deletions(-) create mode 100644 garlic/apps/index.nix create mode 100644 garlic/default.nix create mode 100644 garlic/ds/index.nix create mode 100644 garlic/exp/index.nix create mode 100644 garlic/fig/index.nix create mode 100644 garlic/index.nix diff --git a/garlic/apps/index.nix b/garlic/apps/index.nix new file mode 100644 index 0000000..ce2fefe --- /dev/null +++ b/garlic/apps/index.nix @@ -0,0 +1,55 @@ +{ + super +, self +, bsc +, garlic +, callPackage +}: + +{ + nbody = callPackage ./nbody/default.nix { + gitBranch = "garlic/seq"; + }; + + saiph = callPackage ./saiph/default.nix { + cc = bsc.clangOmpss2; + }; + + creams = callPackage ./creams/default.nix { + gnuDef = self.gfortran10 ; # Default GNU compiler version + intelDef = bsc.icc ; # Default Intel compiler version + gitBranch = "garlic/mpi+send+seq"; + }; + + creamsInput = callPackage ./creams/input.nix { + gitBranch = "garlic/mpi+send+seq"; + }; + + hpcg = callPackage ./hpcg/default.nix { + gitBranch = "garlic/oss"; + }; + + bigsort = { + sort = callPackage ./bigsort/default.nix { + gitBranch = "garlic/mpi+send+omp+task"; + }; + + genseq = callPackage ./bigsort/genseq.nix { }; + + shuffle = callPackage ./bigsort/shuffle.nix { }; + }; + + heat = callPackage ./heat/default.nix { }; + + miniamr = callPackage ./miniamr/default.nix { + variant = "ompss-2"; + }; + + ifsker = callPackage ./ifsker/default.nix { }; + + lulesh = callPackage ./lulesh/default.nix { }; + + hpccg = callPackage ./hpccg/default.nix { }; + + fwi = callPackage ./fwi/default.nix { }; +} diff --git a/garlic/default.nix b/garlic/default.nix new file mode 100644 index 0000000..af0a194 --- /dev/null +++ b/garlic/default.nix @@ -0,0 +1 @@ +import ../default.nix diff --git a/garlic/ds/index.nix b/garlic/ds/index.nix new file mode 100644 index 0000000..afd79ee --- /dev/null +++ b/garlic/ds/index.nix @@ -0,0 +1,40 @@ +{ + super +, self +, bsc +, garlic +, callPackage +}: + +with garlic.pp; + +let + exp = garlic.exp; +in +{ + nbody = with exp.nbody; { + baseline = merge [ baseline ]; + small = merge [ small ]; + jemalloc = merge [ baseline jemalloc ]; + #freeCpu = merge [ baseline freeCpu ]; + ctf = merge [ ctf ]; + }; + + hpcg = with exp.hpcg; { + oss = merge [ oss ]; + }; + + saiph = with exp.saiph; { + numcomm = merge [ numcomm ]; + granularity = merge [ granularity ]; + }; + + heat = with exp.heat; { + test = merge [ test ]; + }; + + creams = with exp.creams.ss; { + ss.hybrid = merge [ hybrid ]; + ss.pure = merge [ pure ]; + }; +} diff --git a/garlic/exp/index.nix b/garlic/exp/index.nix new file mode 100644 index 0000000..e88f8ee --- /dev/null +++ b/garlic/exp/index.nix @@ -0,0 +1,93 @@ +{ + super +, self +, bsc +, garlic +, callPackage +}: + +{ + nbody = rec { + baseline = callPackage ./nbody/nblocks.nix { }; + + # Experiment variants + small = baseline.override { + particles = 12 * 4096; + }; + # TODO: Update freeCpu using a non-standard pipeline + #freeCpu = baseline.override { freeCpu = true; }; + jemalloc = baseline.override { enableJemalloc = true; }; + + # Some experiments with traces + trace = { + # Only one unit repeated 30 times + baseline = small.override { + enableCTF = true; + loops = 30; + steps = 1; + }; + + # Same but with jemalloc enabled + jemalloc = trace.baseline.override { + enableJemalloc = true; + }; + }; + }; + + saiph = { + numcomm = callPackage ./saiph/numcomm.nix { }; + granularity = callPackage ./saiph/granularity.nix { }; + }; + + creams = { + ss = { + pure = callPackage ./creams/ss+pure.nix { }; + hybrid = callPackage ./creams/ss+hybrid.nix { }; + }; + }; + + hpcg = rec { + #serial = callPackage ./hpcg/serial.nix { }; + #mpi = callPackage ./hpcg/mpi.nix { }; + #omp = callPackage ./hpcg/omp.nix { }; + #mpi_omp = callPackage ./hpcg/mpi+omp.nix { }; + #input = callPackage ./hpcg/gen.nix { + # inherit (bsc.garlic.pp) resultFromTrebuchet; + #}; + genInput = callPackage ./hpcg/gen.nix { + inherit (bsc.garlic.pp) resultFromTrebuchet; + }; + + oss = callPackage ./hpcg/oss.nix { + inherit genInput; + }; + }; + + heat = { + test = callPackage ./heat/test.nix { }; + }; + + bigsort = rec { + genseq = callPackage ./bigsort/genseq.nix { + n = toString (1024 * 1024 * 1024 / 8); # 1 GB input size + dram = toString (1024 * 1024 * 1024); # 1 GB chunk + }; + + shuffle = callPackage ./bigsort/shuffle.nix { + inputTre = genseq; + n = toString (1024 * 1024 * 1024 / 8); # 1 GB input size + dram = toString (1024 * 1024 * 1024); # 1 GB chunk + inherit (bsc.garlic.pp) resultFromTrebuchet; + }; + + sort = callPackage ./bigsort/sort.nix { + inputTre = shuffle; + inherit (bsc.garlic.pp) resultFromTrebuchet; + removeOutput = false; + }; + }; + + slurm = { + cpu = callPackage ./slurm/cpu.nix { }; + }; +} diff --git a/garlic/fig/index.nix b/garlic/fig/index.nix new file mode 100644 index 0000000..a0445c1 --- /dev/null +++ b/garlic/fig/index.nix @@ -0,0 +1,57 @@ +{ + super +, self +, bsc +, garlic +, callPackage +}: + +let + rPlot = garlic.pp.rPlot; + ds = garlic.ds; +in +{ + nbody = { + baseline = rPlot { + script = ./nbody/baseline.R; + dataset = ds.nbody.baseline; + }; + small = rPlot { + script = ./nbody/baseline.R; + dataset = ds.nbody.small; + }; + jemalloc = rPlot { + script = ./nbody/jemalloc.R; + dataset = ds.nbody.jemalloc; + }; + #freeCpu = rPlot { + # script = ./nbody/freeCpu.R; + # dataset = ds.nbody.freeCpu; + #}; + ctf = rPlot { + script = ./nbody/baseline.R; + dataset = ds.nbody.ctf; + }; + }; + + hpcg = { + oss = with ds.hpcg; rPlot { + script = ./hpcg/oss.R; + dataset = oss; + }; + }; + + saiph = { + granularity = with ds.saiph; rPlot { + script = ./saiph/granularity.R; + dataset = granularity; + }; + }; + + heat = { + test = with ds.heat; rPlot { + script = ./heat/test.R; + dataset = test; + }; + }; +} diff --git a/garlic/index.nix b/garlic/index.nix new file mode 100644 index 0000000..5e2bd60 --- /dev/null +++ b/garlic/index.nix @@ -0,0 +1,128 @@ +{ + super +, self +, bsc +, callPackage +}: + +{ + unsafeDevelop = callPackage ./develop/default.nix { + extraInputs = with self; [ + coreutils htop procps-ng vim which strace + tmux gdb kakoune universal-ctags bashInteractive + glibcLocales ncurses git screen curl + # Add more nixpkgs packages here... + bsc.slurm bsc.clangOmpss2 bsc.icc bsc.mcxx bsc.perf + # Add more bscpkgs packages here... + ]; + }; + + develop = bsc.garlic.stages.exec rec { + nextStage = bsc.garlic.stages.isolate { + nextStage = bsc.garlic.unsafeDevelop; + nixPrefix = bsc.garlic.targetMachine.config.nixPrefix; + extraMounts = [ "/tmp:$TMPDIR" ]; + }; + nixPrefix = bsc.garlic.targetMachine.config.nixPrefix; + # This hack uploads all dependencies to MN4 + pre = let + nixPrefix = bsc.garlic.targetMachine.config.nixPrefix; + stageProgram = bsc.garlicTools.stageProgram; + in + '' + # Hack to upload this to MN4: @upload-to-mn@ + + # Create a link to the develop script + ln -fs ${nixPrefix}${stageProgram nextStage} .nix-develop + ''; + post = "\n"; + }; + + # Configuration for the machines + machines = callPackage ./machines.nix { }; + + report = callPackage ./report.nix { + fig = bsc.garlic.fig; + }; + + sedReport = callPackage ./sedReport.nix { + fig = bsc.garlic.fig; + }; + + bundleReport = callPackage ./bundleReport.nix { + fig = bsc.garlic.fig; + }; + + reportTar = callPackage ./reportTar.nix { + fig = bsc.garlic.fig; + }; + + # Use the configuration for the following target machine + targetMachine = bsc.garlic.machines.mn4; + + # Load some helper functions to generate app variants + + stdexp = callPackage ./stdexp.nix { + inherit (bsc.garlic) targetMachine stages; + }; + + # Execution stages + stages = { + sbatch = callPackage ./stages/sbatch.nix { }; + srun = callPackage ./stages/srun.nix { }; + control = callPackage ./stages/control.nix { }; + exec = callPackage ./stages/exec.nix { }; + extrae = callPackage ./stages/extrae.nix { }; + valgrind = callPackage ./stages/valgrind.nix { }; + perf = callPackage ./stages/perf.nix { }; + isolate = callPackage ./stages/isolate { }; + runexp = callPackage ./stages/runexp { }; + trebuchet = callPackage ./stages/trebuchet.nix { }; + strace = callPackage ./stages/strace.nix { }; + unit = callPackage ./stages/unit.nix { }; + experiment = callPackage ./stages/experiment.nix { }; + }; + + # Tests (move to bsc ?) + mpptest = callPackage ./mpptest { }; + + ppong = callPackage ./ppong { + mpi = bsc.mpi; + }; + + hist = callPackage ./pp/hist { }; + + tool = callPackage ./sh/default.nix { + sshHost = "mn1"; + }; + + # Post processing tools + pp = with bsc.garlicTools; rec { + store = callPackage ./pp/store.nix { }; + resultFromTrebuchet = trebuchetStage: (store { + experimentStage = getExperimentStage trebuchetStage; + inherit trebuchetStage; + }); + timetable = callPackage ./pp/timetable.nix { }; + rPlot = callPackage ./pp/rplot.nix { }; + timetableFromTrebuchet = tre: timetable (resultFromTrebuchet tre); + mergeDatasets = callPackage ./pp/merge.nix { }; + + # Takes a list of experiments and returns a file that contains + # all timetable results from the experiments. + merge = exps: mergeDatasets (map timetableFromTrebuchet exps); + }; + + # Apps for Garlic + apps = callPackage ./apps/index.nix { }; + + # Experiments + exp = callPackage ./exp/index.nix { }; + + # Datasets used in the figures + ds = callPackage ./ds/index.nix { }; + + # Figures generated from the experiments + fig = callPackage ./fig/index.nix { }; + +} diff --git a/overlay.nix b/overlay.nix index 906ee0b..901edeb 100644 --- a/overlay.nix +++ b/overlay.nix @@ -6,59 +6,37 @@ with self.lib; let inherit (self.lib) callPackageWith; inherit (self.lib) callPackagesWith; - callPackage = callPackageWith (self // self.bsc // self.garlic); + callPackage = callPackageWith (self // self.bsc // self.bsc.garlic); appendPasstru = drv: attrs: drv.overrideAttrs (old:{ passthru = old.passthru // attrs; }); - # --------------------------------------------------------- # + # =================================================================== # BSC Packages - # --------------------------------------------------------- # + # =================================================================== _bsc = makeExtensible (bsc: { - # Default MPI implementation to use. Will be overwritten by the + + inherit callPackage; + + # ================================================================= + # Compilers + # ================================================================= + + # Default C (and C++) compiler to use. It will be overwritten by the # experiments. - mpi = bsc.impi; - - perf = callPackage ./bsc/perf/default.nix { - kernel = self.linuxPackages_4_9.kernel; - systemtap = self.linuxPackages_4_9.systemtap; - }; - - # ParaStation MPI - pscom = callPackage ./bsc/parastation/pscom.nix { }; - psmpi = callPackage ./bsc/parastation/psmpi.nix { }; - - osumb = callPackage ./bsc/osu/default.nix { }; - - mpich = callPackage ./bsc/mpich/default.nix { }; - - mpichDebug = bsc.mpich.override { enableDebug = true; }; - - # Updated version of libpsm2: TODO push upstream. - #libpsm2 = callPackage ./bsc/libpsm2/default.nix { }; - - # Default Intel MPI version is 2019 (the last one) - impi = bsc.intelMpi; - - intelMpi = bsc.intelMpi2019; - - intelMpi2019 = callPackage ./bsc/intel-mpi/default.nix { - # Intel MPI provides a debug version of the MPI library, but - # by default we use the release variant for performance - enableDebug = false; - }; + cc = bsc.icc; # By default we use Intel compiler 2020 update 1 + intelLicense = callPackage ./bsc/intel-compiler/license.nix { }; iccUnwrapped = bsc.icc2020Unwrapped; - icc2020Unwrapped = callPackage ./bsc/intel-compiler/icc2020.nix { intel-mpi = bsc.intelMpi; }; - # A wrapper script that puts all the flags and environment vars properly and - # calls the intel compiler binary + # A wrapper script that puts all the flags and environment vars + # properly and calls the intel compiler binary icc = appendPasstru (callPackage ./bsc/intel-compiler/default.nix { iccUnwrapped = bsc.iccUnwrapped; intelLicense = bsc.intelLicense; @@ -68,88 +46,6 @@ let # determine the name of the compiler gcc = appendPasstru self.gcc { CC = "gcc"; CXX = "g++"; }; - intelLicense = callPackage ./bsc/intel-compiler/license.nix { }; - - pmix2 = callPackage ./bsc/pmix/pmix2.nix { }; - - slurm17 = callPackage ./bsc/slurm/default.nix { - pmix = bsc.pmix2; - }; - - slurm17-libpmi2 = callPackage ./bsc/slurm/pmi2.nix { - pmix = bsc.pmix2; - }; - - # Use a slurm compatible with MN4 - slurm = bsc.slurm17; - - openmpi-mn4 = callPackage ./bsc/openmpi/default.nix { - pmix = bsc.pmix2; - pmi2 = bsc.slurm17-libpmi2; - enableCxx = true; - }; - - openmpi = bsc.openmpi-mn4; - - fftw = callPackage ./bsc/fftw/default.nix { }; - - otf = callPackage ./bsc/otf/default.nix { }; - vite = self.qt5.callPackage ./bsc/vite/default.nix { }; - - wxpropgrid = callPackage ./bsc/wxpropgrid/default.nix { }; - paraver = callPackage ./bsc/paraver/default.nix { }; - paraverExtra = bsc.paraver.override { enableMouseLabel = true; }; - paraverDebug = bsc.paraver.overrideAttrs (old: - { - dontStrip = true; - enableDebugging = true; - }); - - extrae = callPackage ./bsc/extrae/default.nix { }; - - tampi = bsc.tampiRelease; - tampiRelease = callPackage ./bsc/tampi/default.nix { }; - tampiGit = callPackage ./bsc/tampi/git.nix { }; - - mcxx = bsc.mcxxRelease; - mcxxRelease = callPackage ./bsc/mcxx/default.nix { }; - mcxxRarias = callPackage ./bsc/mcxx/rarias.nix { - bison = self.bison_3_5; - }; - - nanos6 = bsc.nanos6Release; - nanos6Release = callPackage ./bsc/nanos6/default.nix { }; - nanos6Git = callPackage ./bsc/nanos6/git.nix { }; - nanos6Debug = bsc.nanos6.overrideAttrs (old: { - dontStrip = true; - enableDebugging = true; - }); - - jemalloc = self.jemalloc.overrideAttrs (old: - { - # Custom nanos6 configure options - configureFlags = old.configureFlags ++ [ - "--with-jemalloc-prefix=nanos6_je_" - "--enable-stats" - ]; - }); - - nanos6Jemalloc = bsc.nanos6.override { - enableJemalloc = true; - }; - - babeltrace = callPackage ./bsc/babeltrace/default.nix { }; - babeltrace2 = callPackage ./bsc/babeltrace2/default.nix { }; - - vtk = callPackage ./bsc/vtk/default.nix { - inherit (self.xorg) libX11 xorgproto libXt; - }; - - dummy = callPackage ./bsc/dummy/default.nix { }; - - # Our custom version that lacks the binaries. Disabled by default. - #rdma-core = callPackage ./bsc/rdma-core/default.nix { }; - # Last llvm release by default llvmPackages = self.llvmPackages_11 // { clang = appendPasstru self.llvmPackages_11.clang { @@ -161,30 +57,139 @@ let clangOmpss2Unwrapped = callPackage ./bsc/llvm-ompss2/clang.nix { stdenv = bsc.llvmPackages.stdenv; - enableDebug = false; }; - clangOmpss2 = appendPasstru (callPackage bsc/llvm-ompss2/default.nix { - clangOmpss2Unwrapped = bsc.clangOmpss2Unwrapped; - }) { CC = "clang"; CXX = "clang++"; }; + clangOmpss2 = appendPasstru ( + callPackage ./bsc/llvm-ompss2/default.nix { + clangOmpss2Unwrapped = bsc.clangOmpss2Unwrapped; + }) { CC = "clang"; CXX = "clang++"; }; - stdenvOmpss2 = self.clangStdenv.override { - cc = bsc.clangOmpss2; + mcxx = bsc.mcxxRelease; + mcxxRelease = callPackage ./bsc/mcxx/default.nix { }; + mcxxRarias = callPackage ./bsc/mcxx/rarias.nix { + bison = self.bison_3_5; }; - cpic = callPackage ./bsc/apps/cpic/default.nix { - stdenv = bsc.stdenvOmpss2; - mpi = bsc.mpi; - tampi = bsc.tampi; + # ================================================================= + # nanos6 + # ================================================================= + nanos6 = bsc.nanos6Release; + nanos6Release = callPackage ./bsc/nanos6/default.nix { }; + nanos6Git = callPackage ./bsc/nanos6/git.nix { }; + nanos6Debug = bsc.nanos6.overrideAttrs (old: { + dontStrip = true; + enableDebugging = true; + }); + nanos6Jemalloc = bsc.nanos6.override { enableJemalloc = true; }; + + jemalloc = self.jemalloc.overrideAttrs (old: + { + # Custom nanos6 configure options + configureFlags = old.configureFlags ++ [ + "--with-jemalloc-prefix=nanos6_je_" + "--enable-stats" + ]; + }); + + # ================================================================= + # MPI + # ================================================================= + + # Default MPI implementation to use. Will be overwritten by the + # experiments. + mpi = bsc.impi; + + # ParaStation MPI + pscom = callPackage ./bsc/parastation/pscom.nix { }; + psmpi = callPackage ./bsc/parastation/psmpi.nix { }; + + # MPICH + mpich = callPackage ./bsc/mpich/default.nix { }; + mpichDebug = bsc.mpich.override { enableDebug = true; }; + + # Default Intel MPI version is 2019 (the last one) + impi = bsc.intelMpi; + intelMpi = bsc.intelMpi2019; + intelMpi2019 = callPackage ./bsc/intel-mpi/default.nix { }; + + # OpenMPI + openmpi = bsc.openmpi-mn4; + openmpi-mn4 = callPackage ./bsc/openmpi/default.nix { + pmix = bsc.pmix2; + pmi2 = bsc.slurm17-libpmi2; + enableCxx = true; }; - mpptest = callPackage ./bsc/mpptest/default.nix { }; + # TAMPI + tampi = bsc.tampiRelease; + tampiRelease = callPackage ./bsc/tampi/default.nix { }; + tampiGit = callPackage ./bsc/tampi/git.nix { }; + + # ================================================================= + # Tracing + # ================================================================= + + wxpropgrid = callPackage ./bsc/wxpropgrid/default.nix { }; + paraver = callPackage ./bsc/paraver/default.nix { }; + paraverExtra = bsc.paraver.override { enableMouseLabel = true; }; + paraverDebug = bsc.paraver.overrideAttrs (old: { + dontStrip = true; + enableDebugging = true; + }); + + extrae = callPackage ./bsc/extrae/default.nix { }; + otf = callPackage ./bsc/otf/default.nix { }; + vite = self.qt5.callPackage ./bsc/vite/default.nix { }; + babeltrace = callPackage ./bsc/babeltrace/default.nix { }; + babeltrace2 = callPackage ./bsc/babeltrace2/default.nix { }; + + # Perf for MN4 kernel + perf = callPackage ./bsc/perf/default.nix { + kernel = self.linuxPackages_4_9.kernel; + systemtap = self.linuxPackages_4_9.systemtap; + }; + + # ================================================================= + # MN4 specific + # ================================================================= + + osumb = callPackage ./bsc/osu/default.nix { }; + pmix2 = callPackage ./bsc/pmix/pmix2.nix { }; + slurm17 = callPackage ./bsc/slurm/default.nix { + pmix = bsc.pmix2; + }; + slurm17-libpmi2 = callPackage ./bsc/slurm/pmi2.nix { + pmix = bsc.pmix2; + }; + # Use a slurm compatible with MN4 + slurm = bsc.slurm17; + # Our custom version that lacks the binaries. Disabled by default. + #rdma-core = callPackage ./bsc/rdma-core/default.nix { }; + + # ================================================================= + # Patched from upstream + # ================================================================= + + groff = callPackage ./bsc/groff/default.nix { }; + fftw = callPackage ./bsc/fftw/default.nix { }; + vtk = callPackage ./bsc/vtk/default.nix { + inherit (self.xorg) libX11 xorgproto libXt; + }; busybox = self.busybox.override { enableStatic = true; }; - groff = callPackage ./bsc/groff/default.nix { }; + # ================================================================= + # Misc + # ================================================================= + + dummy = callPackage ./bsc/dummy/default.nix { }; + mpptest = callPackage ./bsc/mpptest/default.nix { }; + + # ================================================================= + # Garlic benchmark + # ================================================================= nixtools = callPackage ./bsc/nixtools/default.nix { }; @@ -193,366 +198,13 @@ let # Aliases bsc.apps -> bsc.garlic.apps inherit (bsc.garlic) apps fig exp ds; - # TODO: move into garlic/default.nix - garlic = { - - unsafeDevelop = callPackage ./garlic/develop/default.nix { - extraInputs = with self; [ - coreutils htop procps-ng vim which strace - tmux gdb kakoune universal-ctags bashInteractive - glibcLocales ncurses git screen curl - # Add more nixpkgs packages here... - bsc.slurm bsc.clangOmpss2 bsc.icc bsc.mcxx bsc.perf - # Add more bscpkgs packages here... - ]; - }; - - develop = bsc.garlic.stages.exec rec { - nextStage = bsc.garlic.stages.isolate { - nextStage = bsc.garlic.unsafeDevelop; - nixPrefix = bsc.garlic.targetMachine.config.nixPrefix; - extraMounts = [ "/tmp:$TMPDIR" ]; - }; - nixPrefix = bsc.garlic.targetMachine.config.nixPrefix; - # This hack uploads all dependencies to MN4 - pre = let - nixPrefix = bsc.garlic.targetMachine.config.nixPrefix; - stageProgram = bsc.garlicTools.stageProgram; - in - '' - # Hack to upload this to MN4: @upload-to-mn@ - - # Create a link to the develop script - ln -fs ${nixPrefix}${stageProgram nextStage} .nix-develop - ''; - post = "\n"; - }; - - # Configuration for the machines - machines = callPackage ./garlic/machines.nix { }; - - report = callPackage ./garlic/report.nix { - fig = bsc.garlic.fig; - }; - - sedReport = callPackage ./garlic/sedReport.nix { - fig = bsc.garlic.fig; - }; - - bundleReport = callPackage ./garlic/bundleReport.nix { - fig = bsc.garlic.fig; - }; - - reportTar = callPackage ./garlic/reportTar.nix { - fig = bsc.garlic.fig; - }; - - # Use the configuration for the following target machine - targetMachine = bsc.garlic.machines.mn4; - - # Load some helper functions to generate app variants - - stdexp = callPackage ./garlic/stdexp.nix { - inherit (bsc.garlic) targetMachine stages; - }; - - # Apps for Garlic - - apps = { - - nbody = callPackage ./garlic/apps/nbody/default.nix { - cc = bsc.icc; - mpi = bsc.mpi; - tampi = bsc.tampi; - mcxx = bsc.mcxx; - gitBranch = "garlic/seq"; - }; - - saiph = callPackage ./garlic/apps/saiph/default.nix { - cc = bsc.clangOmpss2; - }; - - creams = callPackage ./garlic/apps/creams/default.nix { - gnuDef = self.gfortran10 ; # Default GNU compiler version - intelDef = bsc.icc ; # Default Intel compiler version - gitBranch = "garlic/mpi+send+seq"; - cc = bsc.icc; # bsc.icc OR self.gfortran10; - mpi = bsc.mpi; # bsc.mpi OR bsc.openmpi-mn4; - }; - - creamsInput = callPackage ./garlic/apps/creams/input.nix { - gitBranch = "garlic/mpi+send+seq"; - }; - - hpcg = callPackage ./garlic/apps/hpcg/default.nix { - cc = bsc.icc; - mcxx = bsc.mcxx; - nanos6 = bsc.nanos6; - gitBranch = "garlic/oss"; - }; - - bigsort = { - sort = callPackage ./garlic/apps/bigsort/default.nix { - gitBranch = "garlic/mpi+send+omp+task"; - cc = bsc.icc; - }; - - genseq = callPackage ./garlic/apps/bigsort/genseq.nix { - cc = bsc.icc; - }; - - shuffle = callPackage ./garlic/apps/bigsort/shuffle.nix { - cc = bsc.icc; - }; - }; - - heat = callPackage ./garlic/apps/heat/default.nix { }; - - miniamr = callPackage ./garlic/apps/miniamr/default.nix { - variant = "ompss-2"; - }; - - ifsker = callPackage ./garlic/apps/ifsker/default.nix { }; - - lulesh = callPackage ./garlic/apps/lulesh/default.nix { }; - - hpccg = callPackage ./garlic/apps/hpccg/default.nix { }; - - fwi = callPackage ./garlic/apps/fwi/default.nix { }; - -# heat = callPackage ./garlic/apps/heat/default.nix { -# # FIXME: The heat program must be able to compile with gcc9 and newer -# stdenv = self.gcc7Stdenv; -# #mpi = intel-mpi; -# #tampi = tampi; -# -# # FIXME: Nanos6 fails to load if we are not using a compatible stdc++ -# # version, so we use the same provided by gcc7 -# mcxx = bsc.mcxx.override { -# nanos6 = bsc.nanos6.override { -# stdenv = self.gcc7Stdenv; -# }; -# }; -# }; - }; - - # Execution stages - stages = { - sbatch = callPackage ./garlic/stages/sbatch.nix { }; - srun = callPackage ./garlic/stages/srun.nix { }; - control = callPackage ./garlic/stages/control.nix { }; - exec = callPackage ./garlic/stages/exec.nix { }; - extrae = callPackage ./garlic/stages/extrae.nix { }; - valgrind = callPackage ./garlic/stages/valgrind.nix { }; - perf = callPackage ./garlic/stages/perf.nix { }; - isolate = callPackage ./garlic/stages/isolate { }; - runexp = callPackage ./garlic/stages/runexp { }; - trebuchet = callPackage ./garlic/stages/trebuchet.nix { }; - strace = callPackage ./garlic/stages/strace.nix { }; - unit = callPackage ./garlic/stages/unit.nix { }; - experiment = callPackage ./garlic/stages/experiment.nix { }; - }; - - # Tests (move to bsc ?) - mpptest = callPackage ./garlic/mpptest { }; - - ppong = callPackage ./garlic/ppong { - mpi = bsc.mpi; - }; - - hist = callPackage ./garlic/pp/hist { }; - - tool = callPackage ./garlic/sh/default.nix { - sshHost = "mn1"; - }; - - # Post processing tools - pp = with bsc.garlicTools; rec { - store = callPackage ./garlic/pp/store.nix { }; - resultFromTrebuchet = trebuchetStage: (store { - experimentStage = getExperimentStage trebuchetStage; - inherit trebuchetStage; - }); - timetable = callPackage ./garlic/pp/timetable.nix { }; - rPlot = callPackage ./garlic/pp/rplot.nix { }; - timetableFromTrebuchet = tre: timetable (resultFromTrebuchet tre); - mergeDatasets = callPackage ./garlic/pp/merge.nix { }; - - # Takes a list of experiments and returns a file that contains - # all timetable results from the experiments. - merge = exps: mergeDatasets (map timetableFromTrebuchet exps); - }; - - # Experiments - exp = { - nbody = rec { - baseline = callPackage ./garlic/exp/nbody/nblocks.nix { }; - - # Experiment variants - small = baseline.override { - particles = 12 * 4096; - }; - # TODO: Update freeCpu using a non-standard pipeline - #freeCpu = baseline.override { freeCpu = true; }; - jemalloc = baseline.override { enableJemalloc = true; }; - - # Some experiments with traces - trace = { - # Only one unit repeated 30 times - baseline = small.override { - enableCTF = true; - loops = 30; - steps = 1; - }; - - # Same but with jemalloc enabled - jemalloc = trace.baseline.override { - enableJemalloc = true; - }; - }; - }; - - saiph = { - numcomm = callPackage ./garlic/exp/saiph/numcomm.nix { }; - granularity = callPackage ./garlic/exp/saiph/granularity.nix { }; - }; - - creams = { - ss = { - pure = callPackage ./garlic/exp/creams/ss+pure.nix { }; - hybrid = callPackage ./garlic/exp/creams/ss+hybrid.nix { }; - }; - }; - - hpcg = rec { - #serial = callPackage ./garlic/exp/hpcg/serial.nix { }; - #mpi = callPackage ./garlic/exp/hpcg/mpi.nix { }; - #omp = callPackage ./garlic/exp/hpcg/omp.nix { }; - #mpi_omp = callPackage ./garlic/exp/hpcg/mpi+omp.nix { }; - #input = callPackage ./garlic/exp/hpcg/gen.nix { - # inherit (bsc.garlic.pp) resultFromTrebuchet; - #}; - genInput = callPackage ./garlic/exp/hpcg/gen.nix { - inherit (bsc.garlic.pp) resultFromTrebuchet; - }; - - oss = callPackage ./garlic/exp/hpcg/oss.nix { - inherit genInput; - }; - }; - - heat = { - test = callPackage ./garlic/exp/heat/test.nix { }; - }; - - bigsort = rec { - genseq = callPackage ./garlic/exp/bigsort/genseq.nix { - n = toString (1024 * 1024 * 1024 / 8); # 1 GB input size - dram = toString (1024 * 1024 * 1024); # 1 GB chunk - }; - - shuffle = callPackage ./garlic/exp/bigsort/shuffle.nix { - inputTre = genseq; - n = toString (1024 * 1024 * 1024 / 8); # 1 GB input size - dram = toString (1024 * 1024 * 1024); # 1 GB chunk - inherit (bsc.garlic.pp) resultFromTrebuchet; - }; - - sort = callPackage ./garlic/exp/bigsort/sort.nix { - inputTre = shuffle; - inherit (bsc.garlic.pp) resultFromTrebuchet; - removeOutput = false; - }; - }; - - slurm = { - cpu = callPackage ./garlic/exp/slurm/cpu.nix { }; - }; - }; - - allExperiments = self.writeText "experiments.json" - (builtins.toJSON bsc.garlic.exp); - - # Datasets used in the figures - ds = with bsc.garlic; with pp; { - nbody = with exp.nbody; { - baseline = merge [ baseline ]; - small = merge [ small ]; - jemalloc = merge [ baseline jemalloc ]; - #freeCpu = merge [ baseline freeCpu ]; - ctf = merge [ ctf ]; - }; - - hpcg = with exp.hpcg; { - oss = merge [ oss ]; - }; - - saiph = with exp.saiph; { - numcomm = merge [ numcomm ]; - granularity = merge [ granularity ]; - }; - - heat = with exp.heat; { - test = merge [ test ]; - }; - - creams = with exp.creams.ss; { - ss.hybrid = merge [ hybrid ]; - ss.pure = merge [ pure ]; - }; - }; - - # Figures generated from the experiments - fig = with bsc.garlic; { - nbody = { - baseline = pp.rPlot { - script = ./garlic/fig/nbody/baseline.R; - dataset = ds.nbody.baseline; - }; - small = pp.rPlot { - script = ./garlic/fig/nbody/baseline.R; - dataset = ds.nbody.small; - }; - jemalloc = pp.rPlot { - script = ./garlic/fig/nbody/jemalloc.R; - dataset = ds.nbody.jemalloc; - }; - #freeCpu = pp.rPlot { - # script = ./garlic/fig/nbody/freeCpu.R; - # dataset = ds.nbody.freeCpu; - #}; - ctf = pp.rPlot { - script = ./garlic/fig/nbody/baseline.R; - dataset = ds.nbody.ctf; - }; - }; - - hpcg = { - oss = with ds.hpcg; pp.rPlot { - script = ./garlic/fig/hpcg/oss.R; - dataset = oss; - }; - }; - - saiph = { - granularity = with ds.saiph; pp.rPlot { - script = ./garlic/fig/saiph/granularity.R; - dataset = granularity; - }; - }; - - heat = { - test = with ds.heat; pp.rPlot { - script = ./garlic/fig/heat/test.R; - dataset = test; - }; - }; - }; - - test = { - hwloc = callPackage ./test/bugs/hwloc.nix { }; - }; + garlic = import ./garlic/index.nix { + inherit self super bsc callPackage; }; + +# test = { +# hwloc = callPackage ./test/bugs/hwloc.nix { }; +# }; }); in From 756c5dff928d5e0bc169cb3c37121f211c24deba Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 7 Dec 2020 13:47:17 +0100 Subject: [PATCH 421/987] Update PM git server --- README | 10 +++++----- bsc/llvm-ompss2/clang-git.nix | 2 +- bsc/mcxx/rarias.nix | 2 +- bsc/nanos6/git.nix | 2 +- bsc/nixtools/default.nix | 2 +- bsc/tampi/git.nix | 2 +- garlic/apps/bigsort/default.nix | 2 +- garlic/apps/bigsort/genseq.nix | 2 +- garlic/apps/bigsort/shuffle.nix | 2 +- garlic/apps/creams/default.nix | 2 +- garlic/apps/creams/input.nix | 2 +- garlic/apps/heat/default.nix | 2 +- garlic/apps/hpccg/default.nix | 2 +- garlic/apps/hpcg/default.nix | 2 +- garlic/apps/ifsker/default.nix | 2 +- garlic/apps/lulesh/default.nix | 2 +- garlic/apps/miniamr/default.nix | 2 +- garlic/apps/nbody/default.nix | 2 +- garlic/apps/saiph/default.nix | 2 +- 19 files changed, 23 insertions(+), 23 deletions(-) diff --git a/README b/README index 1ddced1..08f3b32 100644 --- a/README +++ b/README @@ -77,16 +77,16 @@ ABSTRACT Then, configure it for use in the ~/.ssh/config file, adding: - Host bscpm02.bsc.es + Host bscpm03.bsc.es IdentityFile ~/.ssh/id_rsa Finally verify the SSH connection to the server works and you get a greeting from the GitLab server with your username: - xeon07$ ssh git@bscpm02.bsc.es + xeon07$ ssh git@bscpm03.bsc.es PTY allocation request failed on channel 0 Welcome to GitLab, @rarias! - Connection to bscpm02.bsc.es closed. + Connection to bscpm03.bsc.es closed. Verify that you can access nanos6/nanos6 repository (otherwise you first need to ask to be granted read access), at: @@ -96,7 +96,7 @@ ABSTRACT Finally, you should be able to download the nanos6/nanos6 git repository without any password interaction by running: - xeon07$ git clone git@bscpm02.bsc.es:nanos6/nanos6.git + xeon07$ git clone git@bscpm03.bsc.es:nanos6/nanos6.git You will also need to access MareNostrum 4 from the xeon07 node, in order to submit experiments. Add the following lines as well to the @@ -129,7 +129,7 @@ ABSTRACT Now you are ready to build and install packages with nix. Clone the bscpkgs repository: - xeon07$ git clone git@bscpm02.bsc.es:rarias/bscpkgs.git + xeon07$ git clone git@bscpm03.bsc.es:rarias/bscpkgs.git Nix looks in the current folder for a file named "default.nix" for packages, so go to the repo directory: diff --git a/bsc/llvm-ompss2/clang-git.nix b/bsc/llvm-ompss2/clang-git.nix index 40631e7..2a2959e 100644 --- a/bsc/llvm-ompss2/clang-git.nix +++ b/bsc/llvm-ompss2/clang-git.nix @@ -73,7 +73,7 @@ stdenv.mkDerivation rec { # and specify nanos6 at run time. src = builtins.fetchGit { - url = "ssh://git@bscpm02.bsc.es/llvm-ompss/llvm-mono.git"; + url = "ssh://git@bscpm03.bsc.es/llvm-ompss/llvm-mono.git"; ref = "master"; }; } diff --git a/bsc/mcxx/rarias.nix b/bsc/mcxx/rarias.nix index d44db2a..32a18af 100644 --- a/bsc/mcxx/rarias.nix +++ b/bsc/mcxx/rarias.nix @@ -19,7 +19,7 @@ stdenv.mkDerivation rec { #src = /home/Computational/rarias/mcxx; src = builtins.fetchGit { - url = "ssh://git@bscpm02.bsc.es/rarias/mcxx"; + url = "ssh://git@bscpm03.bsc.es/rarias/mcxx"; rev = "44129a6ac05b8f78b06e9e2eff71438b5ca4d29f"; }; diff --git a/bsc/nanos6/git.nix b/bsc/nanos6/git.nix index 2959e1d..64b31c6 100644 --- a/bsc/nanos6/git.nix +++ b/bsc/nanos6/git.nix @@ -24,7 +24,7 @@ stdenv.mkDerivation rec { branch = "master"; src = builtins.fetchGit { - url = "ssh://git@bscpm02.bsc.es/nanos6/nanos6"; + url = "ssh://git@bscpm03.bsc.es/nanos6/nanos6"; ref = branch; }; diff --git a/bsc/nixtools/default.nix b/bsc/nixtools/default.nix index 1e5ce4c..6d364bd 100644 --- a/bsc/nixtools/default.nix +++ b/bsc/nixtools/default.nix @@ -7,7 +7,7 @@ stdenv.mkDerivation rec { pname = "nixtools"; version = "${src.shortRev}"; src = builtins.fetchGit { - url = "ssh://git@bscpm02.bsc.es/rarias/nixtools"; + url = "ssh://git@bscpm03.bsc.es/rarias/nixtools"; ref = "master"; }; buildInputs = [ glibc.static ]; diff --git a/bsc/tampi/git.nix b/bsc/tampi/git.nix index 83f4614..c94fcee 100644 --- a/bsc/tampi/git.nix +++ b/bsc/tampi/git.nix @@ -19,7 +19,7 @@ stdenv.mkDerivation rec { dontDisableStatic = true; makeFlags = [ "V=1" ]; src = builtins.fetchGit { - url = "ssh://git@bscpm02.bsc.es/interoperability/tampi"; + url = "ssh://git@bscpm03.bsc.es/interoperability/tampi"; ref = "master"; }; } diff --git a/garlic/apps/bigsort/default.nix b/garlic/apps/bigsort/default.nix index e22097c..21c5aa2 100644 --- a/garlic/apps/bigsort/default.nix +++ b/garlic/apps/bigsort/default.nix @@ -12,7 +12,7 @@ stdenv.mkDerivation rec { name = "bigsort"; src = builtins.fetchGit { - url = "ssh://git@bscpm02.bsc.es/dalvare1/bigsort.git"; + url = "ssh://git@bscpm03.bsc.es/dalvare1/bigsort.git"; ref = "${gitBranch}"; }; diff --git a/garlic/apps/bigsort/genseq.nix b/garlic/apps/bigsort/genseq.nix index ca12edc..2071d51 100644 --- a/garlic/apps/bigsort/genseq.nix +++ b/garlic/apps/bigsort/genseq.nix @@ -9,7 +9,7 @@ stdenv.mkDerivation rec { name = "genseq"; src = builtins.fetchGit { - url = "ssh://git@bscpm02.bsc.es/dalvare1/bigsort.git"; + url = "ssh://git@bscpm03.bsc.es/dalvare1/bigsort.git"; ref = "garlic/mpi+send+omp+task"; }; diff --git a/garlic/apps/bigsort/shuffle.nix b/garlic/apps/bigsort/shuffle.nix index 55ac106..6262377 100644 --- a/garlic/apps/bigsort/shuffle.nix +++ b/garlic/apps/bigsort/shuffle.nix @@ -9,7 +9,7 @@ stdenv.mkDerivation rec { name = "shuffle"; src = builtins.fetchGit { - url = "ssh://git@bscpm02.bsc.es/dalvare1/bigsort.git"; + url = "ssh://git@bscpm03.bsc.es/dalvare1/bigsort.git"; ref = "garlic/mpi+send+omp+task"; }; diff --git a/garlic/apps/creams/default.nix b/garlic/apps/creams/default.nix index b1dd26e..a37bf02 100644 --- a/garlic/apps/creams/default.nix +++ b/garlic/apps/creams/default.nix @@ -31,7 +31,7 @@ stdenv.mkDerivation rec { # src = /home/Computational/pmartin1/creams-simplified; src = builtins.fetchGit { - url = "ssh://git@bscpm02.bsc.es/pmartin1/creams-simplified.git"; + url = "ssh://git@bscpm03.bsc.es/pmartin1/creams-simplified.git"; ref = "${gitBranch}"; }; diff --git a/garlic/apps/creams/input.nix b/garlic/apps/creams/input.nix index 30da776..60d0801 100644 --- a/garlic/apps/creams/input.nix +++ b/garlic/apps/creams/input.nix @@ -10,7 +10,7 @@ stdenv.mkDerivation rec { # src = /home/Computational/pmartin1/creams-simplified; src = builtins.fetchGit { - url = "ssh://git@bscpm02.bsc.es/pmartin1/creams-simplified.git"; + url = "ssh://git@bscpm03.bsc.es/pmartin1/creams-simplified.git"; ref = "${gitBranch}"; }; diff --git a/garlic/apps/heat/default.nix b/garlic/apps/heat/default.nix index 8fcf324..a00c2b3 100644 --- a/garlic/apps/heat/default.nix +++ b/garlic/apps/heat/default.nix @@ -24,7 +24,7 @@ stdenv.mkDerivation rec { src = ~/heat; #src = builtins.fetchGit { - # url = "ssh://git@bscpm02.bsc.es/garlic/apps/heat.git"; + # url = "ssh://git@bscpm03.bsc.es/garlic/apps/heat.git"; # ref = "garlic"; #}; diff --git a/garlic/apps/hpccg/default.nix b/garlic/apps/hpccg/default.nix index 55db352..0799aad 100644 --- a/garlic/apps/hpccg/default.nix +++ b/garlic/apps/hpccg/default.nix @@ -11,7 +11,7 @@ stdenv.mkDerivation rec { name = "hpccg"; src = builtins.fetchGit { - url = "ssh://git@bscpm02.bsc.es/mmaronas/HPCCG.git"; + url = "ssh://git@bscpm03.bsc.es/mmaronas/HPCCG.git"; ref = "mmaronas-development"; }; diff --git a/garlic/apps/hpcg/default.nix b/garlic/apps/hpcg/default.nix index 3f5737f..c864bb2 100644 --- a/garlic/apps/hpcg/default.nix +++ b/garlic/apps/hpcg/default.nix @@ -12,7 +12,7 @@ stdenv.mkDerivation rec { name = "hpcg"; src = builtins.fetchGit { - url = "ssh://git@bscpm02.bsc.es/rpenacob/garlic-hpcg.git"; + url = "ssh://git@bscpm03.bsc.es/rpenacob/garlic-hpcg.git"; ref = "${gitBranch}"; }; diff --git a/garlic/apps/ifsker/default.nix b/garlic/apps/ifsker/default.nix index 8a43fa0..812f630 100644 --- a/garlic/apps/ifsker/default.nix +++ b/garlic/apps/ifsker/default.nix @@ -13,7 +13,7 @@ stdenv.mkDerivation rec { name = "ifsker"; src = builtins.fetchGit { - url = "ssh://git@bscpm02.bsc.es/ksala/ifsker.git"; + url = "ssh://git@bscpm03.bsc.es/ksala/ifsker.git"; ref = "master"; }; diff --git a/garlic/apps/lulesh/default.nix b/garlic/apps/lulesh/default.nix index 7d8d487..d677161 100644 --- a/garlic/apps/lulesh/default.nix +++ b/garlic/apps/lulesh/default.nix @@ -9,7 +9,7 @@ stdenv.mkDerivation rec { name = "lulesh"; src = builtins.fetchGit { - url = "ssh://git@bscpm02.bsc.es/mmaronas/lulesh.git"; + url = "ssh://git@bscpm03.bsc.es/mmaronas/lulesh.git"; ref = "master"; }; diff --git a/garlic/apps/miniamr/default.nix b/garlic/apps/miniamr/default.nix index 844913f..cc0450b 100644 --- a/garlic/apps/miniamr/default.nix +++ b/garlic/apps/miniamr/default.nix @@ -19,7 +19,7 @@ stdenv.mkDerivation rec { name = "miniamr"; src = builtins.fetchGit { - url = "ssh://git@bscpm02.bsc.es/ksala/miniamr.git"; + url = "ssh://git@bscpm03.bsc.es/ksala/miniamr.git"; ref = "master"; }; diff --git a/garlic/apps/nbody/default.nix b/garlic/apps/nbody/default.nix index 57efb0c..32bcdfa 100644 --- a/garlic/apps/nbody/default.nix +++ b/garlic/apps/nbody/default.nix @@ -6,7 +6,7 @@ , mcxx ? null , cflags ? null , gitBranch -, gitURL ? "ssh://git@bscpm02.bsc.es/garlic/apps/nbody.git" +, gitURL ? "ssh://git@bscpm03.bsc.es/garlic/apps/nbody.git" , blocksize ? 2048 }: diff --git a/garlic/apps/saiph/default.nix b/garlic/apps/saiph/default.nix index 73f890c..616350e 100644 --- a/garlic/apps/saiph/default.nix +++ b/garlic/apps/saiph/default.nix @@ -21,7 +21,7 @@ stdenv.mkDerivation rec { name = "saiph"; src = builtins.fetchGit { - url = "ssh://git@bscpm02.bsc.es/DSLs/saiph.git"; + url = "ssh://git@bscpm03.bsc.es/DSLs/saiph.git"; ref = "${gitBranch}"; }; From 7d4db6b6de9af5d1e8dbdb76b270adf4aa126ae4 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 7 Dec 2020 16:33:40 +0100 Subject: [PATCH 422/987] control: Exit on error This prevents srun from silently returning with an error, without actually queueing the job of a run. --- garlic/stages/control.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/garlic/stages/control.nix b/garlic/stages/control.nix index e6efb7c..7e24b92 100644 --- a/garlic/stages/control.nix +++ b/garlic/stages/control.nix @@ -17,7 +17,7 @@ stdenv.mkDerivation { dontPatchShebangs = true; installPhase = '' cat > $out < status From 5a8cc1e51450ffd73403fda1bda221ee66b8c93f Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 10 Dec 2020 15:41:49 +0100 Subject: [PATCH 423/987] stdexp: Run python snippets and import the result --- garlic/stdexp.nix | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/garlic/stdexp.nix b/garlic/stdexp.nix index cb208f7..bb386ef 100644 --- a/garlic/stdexp.nix +++ b/garlic/stdexp.nix @@ -5,6 +5,9 @@ , targetMachine , garlicTools , bsc +, writeTextFile +, runCommandLocal +, python }: with stdenv.lib; @@ -113,4 +116,19 @@ rec { units = genUnits { inherit configs pipeline; }; in buildTrebuchet units; + + # Runs a python script and the standard output is directly imported as + # nix code + printPython = code: + let + p = writeTextFile { + name = "python-script"; + text = '' + from math import * + ${code} + ''; + }; + in + import (runCommandLocal "a" { buildInputs = [ python ]; } '' + python ${p} > $out''); } From 9646a1298d03bee119c33e9d35016085bcc9b0b5 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 11 Dec 2020 17:15:05 +0100 Subject: [PATCH 424/987] Fix propagation of bsc.extend Fixes #82 --- overlay.nix | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/overlay.nix b/overlay.nix index 901edeb..70be4db 100644 --- a/overlay.nix +++ b/overlay.nix @@ -6,7 +6,6 @@ with self.lib; let inherit (self.lib) callPackageWith; inherit (self.lib) callPackagesWith; - callPackage = callPackageWith (self // self.bsc // self.bsc.garlic); appendPasstru = drv: attrs: drv.overrideAttrs (old:{ passthru = old.passthru // attrs; @@ -16,8 +15,11 @@ let # BSC Packages # =================================================================== - _bsc = makeExtensible (bsc: { - + _bsc = makeExtensible (bsc: + let + callPackage = callPackageWith (self // bsc // bsc.garlic); + in + { inherit callPackage; # ================================================================= From 748d335a394ec87f62f85256ac63d6777ebeefca Mon Sep 17 00:00:00 2001 From: Pedro Martinez Date: Mon, 7 Dec 2020 15:36:49 +0100 Subject: [PATCH 425/987] Define variables 'ntasksPerNode' and 'cpusPerTask' for each experiment and other minor changes --- garlic/exp/creams/ss+hybrid.nix | 14 +++++++------- garlic/exp/creams/ss+pure.nix | 12 ++++++------ 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/garlic/exp/creams/ss+hybrid.nix b/garlic/exp/creams/ss+hybrid.nix index 226f7a0..5d4026d 100644 --- a/garlic/exp/creams/ss+hybrid.nix +++ b/garlic/exp/creams/ss+hybrid.nix @@ -12,17 +12,17 @@ let # Initial variable configuration varConf = { input = [ - { nodes=1 ; nprocz=2 ; granul=37; time= "10:00:00"; } - { nodes=2 ; nprocz=4 ; granul=19; time= "05:00:00"; } - { nodes=4 ; nprocz=8 ; granul=10; time= "03:00:00"; } + { nodes=1 ; nprocz=2 ; granul=37; time= "02:00:00"; } + { nodes=2 ; nprocz=4 ; granul=19; time= "02:00:00"; } + { nodes=4 ; nprocz=8 ; granul=10; time= "02:00:00"; } { nodes=8 ; nprocz=16; granul=9 ; time= "02:00:00"; } - { nodes=16; nprocz=32; granul=9 ; time= "01:00:00"; } + { nodes=16; nprocz=32; granul=9 ; time= "02:00:00"; } ]; gitBranch = [ - "garlic/mpi+isend+oss+task" "garlic/mpi+send+omp+fork" "garlic/mpi+send+oss+task" + "garlic/mpi+isend+oss+task" "garlic/tampi+isend+oss+task" ]; }; @@ -44,9 +44,9 @@ let # Resources qos = "debug"; - ntasksPerNode = hw.socketsPerNode; + ntasksPerNode = 2; + cpusPerTask = 24; inherit (c.input) time nodes; - cpusPerTask = hw.cpusPerSocket; jobName = unitName; }; diff --git a/garlic/exp/creams/ss+pure.nix b/garlic/exp/creams/ss+pure.nix index c1de84c..eec78b7 100644 --- a/garlic/exp/creams/ss+pure.nix +++ b/garlic/exp/creams/ss+pure.nix @@ -12,11 +12,11 @@ let # Initial variable configuration varConf = { input = [ - { time="10:00:00"; nodes=1; } - { time="05:00:00"; nodes=2; } - { time="03:00:00"; nodes=4; } + { time="02:00:00"; nodes=1; } + { time="02:00:00"; nodes=2; } + { time="02:00:00"; nodes=4; } { time="02:00:00"; nodes=8; } - { time="01:00:00"; nodes=16; } + { time="02:00:00"; nodes=16; } ]; }; @@ -37,9 +37,9 @@ let # Resources qos = "debug"; - ntasksPerNode = hw.cpusPerNode; + ntasksPerNode = 48; + cpusPerTask = 1; inherit (c.input) time nodes; - cpusPerTask = 1; jobName = unitName; }; From 2e18761b48d34bef718e4088f807659c6c01efc5 Mon Sep 17 00:00:00 2001 From: Pedro Martinez Date: Mon, 7 Dec 2020 15:53:01 +0100 Subject: [PATCH 426/987] Use the 'hw' attributes --- garlic/exp/creams/ss+hybrid.nix | 3 +-- garlic/exp/creams/ss+pure.nix | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/garlic/exp/creams/ss+hybrid.nix b/garlic/exp/creams/ss+hybrid.nix index 5d4026d..2c1bace 100644 --- a/garlic/exp/creams/ss+hybrid.nix +++ b/garlic/exp/creams/ss+hybrid.nix @@ -44,8 +44,7 @@ let # Resources qos = "debug"; - ntasksPerNode = 2; - cpusPerTask = 24; + ntasksPerNode = hw.socketsPerNode; inherit (c.input) time nodes; jobName = unitName; }; diff --git a/garlic/exp/creams/ss+pure.nix b/garlic/exp/creams/ss+pure.nix index eec78b7..d58e74d 100644 --- a/garlic/exp/creams/ss+pure.nix +++ b/garlic/exp/creams/ss+pure.nix @@ -37,8 +37,7 @@ let # Resources qos = "debug"; - ntasksPerNode = 48; - cpusPerTask = 1; + ntasksPerNode = hw.cpusPerNode; inherit (c.input) time nodes; jobName = unitName; }; From 203dc9f2953eb01a3bb3928823a835d76366296c Mon Sep 17 00:00:00 2001 From: Pedro Martinez Date: Tue, 15 Dec 2020 19:34:49 +0100 Subject: [PATCH 427/987] Configure the nanos6 environment and get the right hardware attributes --- garlic/exp/creams/ss+hybrid.nix | 11 ++++++++++- garlic/exp/creams/ss+pure.nix | 11 ++++++++++- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/garlic/exp/creams/ss+hybrid.nix b/garlic/exp/creams/ss+hybrid.nix index 2c1bace..e10071e 100644 --- a/garlic/exp/creams/ss+hybrid.nix +++ b/garlic/exp/creams/ss+hybrid.nix @@ -45,6 +45,7 @@ let # Resources qos = "debug"; ntasksPerNode = hw.socketsPerNode; + cpusPerTask = hw.cpusPerSocket; inherit (c.input) time nodes; jobName = unitName; }; @@ -54,6 +55,14 @@ let inherit varConf genConf; }; + # Use nanos6 with regions + nanos6Env = {nextStage, conf, ...}: with conf; stages.exec { + inherit nextStage; + env = '' + export NANOS6_CONFIG_OVERRIDE="version.dependencies=regions" + ''; + }; + # Custom stage to copy the creams input dataset copyInput = {nextStage, conf, ...}: let @@ -78,7 +87,7 @@ let inherit cc mpi gitBranch; }; - pipeline = stdexp.stdPipeline ++ [ copyInput creams ]; + pipeline = stdexp.stdPipeline ++ [ nanos6Env copyInput creams ]; in diff --git a/garlic/exp/creams/ss+pure.nix b/garlic/exp/creams/ss+pure.nix index d58e74d..75bcf5f 100644 --- a/garlic/exp/creams/ss+pure.nix +++ b/garlic/exp/creams/ss+pure.nix @@ -38,6 +38,7 @@ let # Resources qos = "debug"; ntasksPerNode = hw.cpusPerNode; + cpusPerTask = 1; inherit (c.input) time nodes; jobName = unitName; }; @@ -47,6 +48,14 @@ let inherit varConf genConf; }; + # Use nanos6 with regions + nanos6Env = {nextStage, conf, ...}: with conf; stages.exec { + inherit nextStage; + env = '' + export NANOS6_CONFIG_OVERRIDE="version.dependencies=regions" + ''; + }; + # Custom stage to copy the creams input dataset copyInput = {nextStage, conf, ...}: let @@ -71,7 +80,7 @@ let inherit cc mpi gitBranch; }; - pipeline = stdexp.stdPipeline ++ [ copyInput creams ]; + pipeline = stdexp.stdPipeline ++ [ nanos6Env copyInput creams ]; in From b5cadefca9e1764ffb9285888bb6063cafdccad3 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 17 Dec 2020 15:24:23 +0100 Subject: [PATCH 428/987] Allow a space before time tag This matches the fortran format for creams --- garlic/pp/timetable.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/garlic/pp/timetable.nix b/garlic/pp/timetable.nix index 021d64d..586d407 100644 --- a/garlic/pp/timetable.nix +++ b/garlic/pp/timetable.nix @@ -19,7 +19,7 @@ stdenv.mkDerivation { cd ${inputResult}/$exp/$unit conf=garlic_config.json for run in $(ls -d [0-9]* | sort -n); do - time=$(awk '/^time /{print $2}' $run/stdout.log) + time=$(awk '/^ ?time /{print $2}' $run/stdout.log) jq -cn "{ exp:\"$exp\", unit:\"$unit\", config:inputs, time:$time, run:$run }" $conf >> $out done done From 3b80c2fcb9d919170b60e3bafe38a99ce8340bf5 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 17 Dec 2020 15:26:25 +0100 Subject: [PATCH 429/987] creams: Merge hybrid and pure datasets into ss.all --- garlic/ds/index.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/garlic/ds/index.nix b/garlic/ds/index.nix index afd79ee..d866b86 100644 --- a/garlic/ds/index.nix +++ b/garlic/ds/index.nix @@ -36,5 +36,6 @@ in creams = with exp.creams.ss; { ss.hybrid = merge [ hybrid ]; ss.pure = merge [ pure ]; + ss.all = merge [ hybrid pure ]; }; } From ed5f6bc22b8d7f0095eab58e4f35c46bcfb5f7ca Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 17 Dec 2020 15:27:50 +0100 Subject: [PATCH 430/987] nanos6Git: Correct typo --- bsc/nanos6/git.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bsc/nanos6/git.nix b/bsc/nanos6/git.nix index 64b31c6..556fbd8 100644 --- a/bsc/nanos6/git.nix +++ b/bsc/nanos6/git.nix @@ -35,7 +35,7 @@ stdenv.mkDerivation rec { enableParallelBuilding = true; preConfigure = '' - export CACHELINE_WIDTH=${toString cacheline-width} + export CACHELINE_WIDTH=${toString cachelineBytes} export NANOS6_GIT_VERSION=${src.rev} export NANOS6_GIT_BRANCH=${branch} ''; From 76f2ef4b950f09e18bbcd5bdaa718d5ceadacfad Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 18 Dec 2020 12:26:40 +0100 Subject: [PATCH 431/987] creams: add figures for scalability --- garlic/fig/creams/ss.R | 107 +++++++++++++++++++++++++++++++++++++++++ garlic/fig/index.nix | 7 +++ 2 files changed, 114 insertions(+) create mode 100644 garlic/fig/creams/ss.R diff --git a/garlic/fig/creams/ss.R b/garlic/fig/creams/ss.R new file mode 100644 index 0000000..a94b7d5 --- /dev/null +++ b/garlic/fig/creams/ss.R @@ -0,0 +1,107 @@ +library(ggplot2) +library(dplyr) +library(scales) +library(jsonlite) + +args=commandArgs(trailingOnly=TRUE) + +# Read the timetable from args[1] +input_file = "input.json" +if (length(args)>0) { input_file = args[1] } + +# Load the dataset in NDJSON format +dataset = jsonlite::stream_in(file(input_file), verbose=FALSE) %>% + jsonlite::flatten() + +# We only need some colums +df = select(dataset, unit, config.nodes, config.gitBranch, time) %>% + rename(nodes=config.nodes, gitBranch=config.gitBranch) + +df$unit = as.factor(df$unit) +df$nnodes = df$nodes +df$nodes = as.factor(df$nodes) +df$gitBranch = as.factor(df$gitBranch) + +# Remove the "garlic/" prefix from the gitBranch +levels(df$gitBranch) <- substring((levels(df$gitBranch)), 8) + +# Compute new columns +D=group_by(df, unit) %>% + mutate(tnorm = time / median(time) - 1) %>% + mutate(bad = ifelse(max(abs(tnorm)) >= 0.01, 1, 0)) %>% + mutate(variability = ifelse(bad > 0, "large", "ok")) %>% + mutate(mtime = median(time)) %>% + mutate(nmtime = mtime*nnodes) %>% + mutate(ntime = time*nnodes) %>% + ungroup() %>% + mutate(min_nmtime = min(nmtime)) %>% + mutate(rnmtime = nmtime / min_nmtime) %>% + mutate(rntime = ntime / min_nmtime) %>% + mutate(rmeff = 1.0 / rnmtime) %>% + mutate(reff = 1.0 / rntime) %>% + group_by(gitBranch) %>% + mutate(tmax = max(mtime)) %>% + mutate(speedup=tmax/time) %>% + mutate(eff=speedup/nnodes) %>% + mutate(mspeedup=tmax/mtime) %>% + mutate(meff=mspeedup/nnodes) %>% + ungroup() + +D$bad = as.factor(D$bad > 0) +D$variability = as.factor(D$variability) + +ppi=300 +h=5 +w=5 + +png("variability.png", width=1.5*w*ppi, height=h*ppi, res=ppi) +p = ggplot(data=D, aes(x=nodes, y=tnorm, color=variability)) + + theme_bw() + + theme(plot.subtitle=element_text(size=8)) + + # Add the maximum allowed error lines + geom_hline(yintercept=c(-0.01, 0.01), + linetype="dashed", color="gray") + + # Draw boxplots + geom_boxplot(aes(fill=gitBranch)) + + scale_color_manual(values=c("brown", "black")) + + # Labels + labs(x="Nodes", y="Normalized time", title="Creams strong scaling", + subtitle=input_file) +print(p) +dev.off() + +png("time.png", width=w*1.5*ppi, height=h*ppi, res=ppi) +p = ggplot(D, aes(x=nodes, y=mtime, color=gitBranch)) + + theme_bw() + + theme(plot.subtitle=element_text(size=8)) + + geom_line(aes(group=gitBranch)) + + #geom_point() + + geom_point(aes(shape=variability), size=3) + + scale_shape_manual(values=c(21, 19)) + + # position=position_dodge(width=0.3)) + + #scale_x_continuous(trans=log2_trans()) + + scale_y_continuous(trans=log2_trans()) + + labs(x="Nodes", y="Time (s)", + title="Creams strong scaling (lower is better)", + subtitle=input_file) +print(p) +dev.off() + +png("refficiency.png", width=w*1.5*ppi, height=h*ppi, res=ppi) +p = ggplot(D, aes(x=nodes, y=rmeff, color=gitBranch)) + + theme_bw() + + theme(plot.subtitle=element_text(size=8)) + + geom_line(aes(group=gitBranch)) + + geom_point(aes(shape=variability), size=3) + + #geom_boxplot(aes(y=reff), + # position=position_dodge(width=0.0)) + + scale_shape_manual(values=c(21, 19)) + + #geom_point(aes(y=rntime), + # position=position_dodge(width=0.3)) + + #scale_x_continuous(trans=log2_trans()) + + #scale_y_continuous(trans=log2_trans()) + + labs(x="Nodes", y="Relative efficiency (to best)", + title="Creams strong scaling (higher is better)", + subtitle=input_file) +print(p) +dev.off() diff --git a/garlic/fig/index.nix b/garlic/fig/index.nix index a0445c1..97efaad 100644 --- a/garlic/fig/index.nix +++ b/garlic/fig/index.nix @@ -54,4 +54,11 @@ in dataset = test; }; }; + + creams = { + ss = with ds.creams; rPlot { + script = ./creams/ss.R; + dataset = ss.all; + }; + }; } From afd333adef729b6d2a1d2e004855dcb4f5da8deb Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 18 Dec 2020 12:43:06 +0100 Subject: [PATCH 432/987] creams: fix indentation --- garlic/fig/creams/ss.R | 82 +++++++++++++++++++++--------------------- 1 file changed, 41 insertions(+), 41 deletions(-) diff --git a/garlic/fig/creams/ss.R b/garlic/fig/creams/ss.R index a94b7d5..5f274a8 100644 --- a/garlic/fig/creams/ss.R +++ b/garlic/fig/creams/ss.R @@ -11,11 +11,11 @@ if (length(args)>0) { input_file = args[1] } # Load the dataset in NDJSON format dataset = jsonlite::stream_in(file(input_file), verbose=FALSE) %>% - jsonlite::flatten() + jsonlite::flatten() # We only need some colums df = select(dataset, unit, config.nodes, config.gitBranch, time) %>% - rename(nodes=config.nodes, gitBranch=config.gitBranch) + rename(nodes=config.nodes, gitBranch=config.gitBranch) df$unit = as.factor(df$unit) df$nnodes = df$nodes @@ -27,23 +27,23 @@ levels(df$gitBranch) <- substring((levels(df$gitBranch)), 8) # Compute new columns D=group_by(df, unit) %>% - mutate(tnorm = time / median(time) - 1) %>% - mutate(bad = ifelse(max(abs(tnorm)) >= 0.01, 1, 0)) %>% + mutate(tnorm = time / median(time) - 1) %>% + mutate(bad = ifelse(max(abs(tnorm)) >= 0.01, 1, 0)) %>% mutate(variability = ifelse(bad > 0, "large", "ok")) %>% - mutate(mtime = median(time)) %>% - mutate(nmtime = mtime*nnodes) %>% - mutate(ntime = time*nnodes) %>% + mutate(mtime = median(time)) %>% + mutate(nmtime = mtime*nnodes) %>% + mutate(ntime = time*nnodes) %>% ungroup() %>% mutate(min_nmtime = min(nmtime)) %>% mutate(rnmtime = nmtime / min_nmtime) %>% mutate(rntime = ntime / min_nmtime) %>% mutate(rmeff = 1.0 / rnmtime) %>% mutate(reff = 1.0 / rntime) %>% - group_by(gitBranch) %>% - mutate(tmax = max(mtime)) %>% - mutate(speedup=tmax/time) %>% - mutate(eff=speedup/nnodes) %>% - mutate(mspeedup=tmax/mtime) %>% + group_by(gitBranch) %>% + mutate(tmax = max(mtime)) %>% + mutate(speedup=tmax/time) %>% + mutate(eff=speedup/nnodes) %>% + mutate(mspeedup=tmax/mtime) %>% mutate(meff=mspeedup/nnodes) %>% ungroup() @@ -56,32 +56,32 @@ w=5 png("variability.png", width=1.5*w*ppi, height=h*ppi, res=ppi) p = ggplot(data=D, aes(x=nodes, y=tnorm, color=variability)) + - theme_bw() + - theme(plot.subtitle=element_text(size=8)) + - # Add the maximum allowed error lines - geom_hline(yintercept=c(-0.01, 0.01), - linetype="dashed", color="gray") + - # Draw boxplots - geom_boxplot(aes(fill=gitBranch)) + - scale_color_manual(values=c("brown", "black")) + - # Labels - labs(x="Nodes", y="Normalized time", title="Creams strong scaling", + theme_bw() + + theme(plot.subtitle=element_text(size=8)) + + # Add the maximum allowed error lines + geom_hline(yintercept=c(-0.01, 0.01), + linetype="dashed", color="gray") + + # Draw boxplots + geom_boxplot(aes(fill=gitBranch)) + + scale_color_manual(values=c("brown", "black")) + + # Labels + labs(x="Nodes", y="Normalized time", title="Creams strong scaling", subtitle=input_file) print(p) dev.off() png("time.png", width=w*1.5*ppi, height=h*ppi, res=ppi) p = ggplot(D, aes(x=nodes, y=mtime, color=gitBranch)) + - theme_bw() + - theme(plot.subtitle=element_text(size=8)) + - geom_line(aes(group=gitBranch)) + - #geom_point() + - geom_point(aes(shape=variability), size=3) + - scale_shape_manual(values=c(21, 19)) + + theme_bw() + + theme(plot.subtitle=element_text(size=8)) + + geom_line(aes(group=gitBranch)) + + #geom_point() + + geom_point(aes(shape=variability), size=3) + + scale_shape_manual(values=c(21, 19)) + # position=position_dodge(width=0.3)) + - #scale_x_continuous(trans=log2_trans()) + - scale_y_continuous(trans=log2_trans()) + - labs(x="Nodes", y="Time (s)", + #scale_x_continuous(trans=log2_trans()) + + scale_y_continuous(trans=log2_trans()) + + labs(x="Nodes", y="Time (s)", title="Creams strong scaling (lower is better)", subtitle=input_file) print(p) @@ -89,18 +89,18 @@ dev.off() png("refficiency.png", width=w*1.5*ppi, height=h*ppi, res=ppi) p = ggplot(D, aes(x=nodes, y=rmeff, color=gitBranch)) + - theme_bw() + - theme(plot.subtitle=element_text(size=8)) + - geom_line(aes(group=gitBranch)) + - geom_point(aes(shape=variability), size=3) + - #geom_boxplot(aes(y=reff), + theme_bw() + + theme(plot.subtitle=element_text(size=8)) + + geom_line(aes(group=gitBranch)) + + geom_point(aes(shape=variability), size=3) + + #geom_boxplot(aes(y=reff), # position=position_dodge(width=0.0)) + - scale_shape_manual(values=c(21, 19)) + - #geom_point(aes(y=rntime), + scale_shape_manual(values=c(21, 19)) + + #geom_point(aes(y=rntime), # position=position_dodge(width=0.3)) + - #scale_x_continuous(trans=log2_trans()) + - #scale_y_continuous(trans=log2_trans()) + - labs(x="Nodes", y="Relative efficiency (to best)", + #scale_x_continuous(trans=log2_trans()) + + #scale_y_continuous(trans=log2_trans()) + + labs(x="Nodes", y="Relative efficiency (to best)", title="Creams strong scaling (higher is better)", subtitle=input_file) print(p) From 892fb35d27dc5a1e19a311699f2799ff94f8a1a7 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 11 Jan 2021 14:30:12 +0100 Subject: [PATCH 433/987] nbody: Fix infinite recursion We want to override the previous layer (super), not the last one (self). --- garlic/exp/nbody/nblocks.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/garlic/exp/nbody/nblocks.nix b/garlic/exp/nbody/nblocks.nix index ce4a025..447c4ff 100644 --- a/garlic/exp/nbody/nblocks.nix +++ b/garlic/exp/nbody/nblocks.nix @@ -96,7 +96,7 @@ let nanos6+jemalloc as well. */ customPkgs = bsc.extend (self: super: { mpi = conf.mpi; - nanos6 = self.nanos6.override { inherit enableJemalloc; }; + nanos6 = super.nanos6.override { inherit enableJemalloc; }; }); in customPkgs.apps.nbody.override ({ From 140598a28b4a34c973aab643c12c50bda7493e61 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 11 Jan 2021 16:41:56 +0100 Subject: [PATCH 434/987] Pin nixpkgs --- default.nix | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/default.nix b/default.nix index 0077d5f..4c0c191 100644 --- a/default.nix +++ b/default.nix @@ -1,6 +1,17 @@ let bscOverlay = import ./overlay.nix; - pkgs = import { + + # Pin the nixpkgs + nixpkgsPath = builtins.fetchTarball { + # Descriptive name to make the store path easier to identify + name = "nixos-20.09"; + # Commit hash for nixos-20.09 as of 2021-01-11 + url = "https://github.com/nixos/nixpkgs/archive/41dddb1283733c4993cb6be9573d5cef937c1375.tar.gz"; + # Hash obtained using `nix-prefetch-url --unpack ` + sha256 = "1blbidbmxhaxar2x76nz72bazykc5yxi0algsbrhxgrsvijs4aiw"; + }; + + pkgs = import nixpkgsPath { overlays = [ bscOverlay ]; }; From 5c2bd13c3de5b4f5d36bd4e7845882ec792ac8c9 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 11 Jan 2021 16:42:30 +0100 Subject: [PATCH 435/987] Add unstable nix for MN4 Fixes the fallocate problem --- overlay.nix | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/overlay.nix b/overlay.nix index 70be4db..7da73a5 100644 --- a/overlay.nix +++ b/overlay.nix @@ -165,6 +165,10 @@ let }; # Use a slurm compatible with MN4 slurm = bsc.slurm17; + # We need the unstable branch to get the fallocate problem fixed, as it is + # not yet in stable nix, see: + # https://pm.bsc.es/gitlab/rarias/bscpkgs/-/issues/83 + nix-mn4 = self.nixUnstable; # Our custom version that lacks the binaries. Disabled by default. #rdma-core = callPackage ./bsc/rdma-core/default.nix { }; From 130fe39c8ef98fd98383c4e640c5307f34695b6c Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 11 Jan 2021 18:29:30 +0100 Subject: [PATCH 436/987] exec: Abort on error We need exit on the first error, as otherwise we cannot track a bad execution when no exec is done (when post is not empty). --- garlic/stages/exec.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/garlic/stages/exec.nix b/garlic/stages/exec.nix index 80db4b8..cfe4af3 100644 --- a/garlic/stages/exec.nix +++ b/garlic/stages/exec.nix @@ -25,7 +25,7 @@ stdenv.mkDerivation { phases = [ "installPhase" ]; installPhase = '' cat > $out <<'EOF' - #!/bin/sh + #!/bin/sh -e ${env} ''+pre+'' From aeac1a60688c179f8af311843a5824e117e385cf Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 11 Jan 2021 19:15:37 +0100 Subject: [PATCH 437/987] exec: Force newlines Allow single line commands like pre="true" --- garlic/stages/exec.nix | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/garlic/stages/exec.nix b/garlic/stages/exec.nix index cfe4af3..eea89f1 100644 --- a/garlic/stages/exec.nix +++ b/garlic/stages/exec.nix @@ -28,9 +28,12 @@ stdenv.mkDerivation { #!/bin/sh -e ${env} - ''+pre+'' + ${pre} + ${execMethod}${nixPrefix}${stageProgram nextStage} ${argvString} - ''+post+'' + + ${post} + EOF chmod +x $out ''; From 2b9c3da91167830363d4c8652fd87f487bed1746 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 12 Jan 2021 18:19:49 +0100 Subject: [PATCH 438/987] Add script stage --- garlic/index.nix | 1 + garlic/stages/script.nix | 23 +++++++++++++++++++++++ 2 files changed, 24 insertions(+) create mode 100644 garlic/stages/script.nix diff --git a/garlic/index.nix b/garlic/index.nix index 5e2bd60..9a1ba14 100644 --- a/garlic/index.nix +++ b/garlic/index.nix @@ -72,6 +72,7 @@ srun = callPackage ./stages/srun.nix { }; control = callPackage ./stages/control.nix { }; exec = callPackage ./stages/exec.nix { }; + script = callPackage ./stages/script.nix { }; extrae = callPackage ./stages/extrae.nix { }; valgrind = callPackage ./stages/valgrind.nix { }; perf = callPackage ./stages/perf.nix { }; diff --git a/garlic/stages/script.nix b/garlic/stages/script.nix new file mode 100644 index 0000000..4be3cec --- /dev/null +++ b/garlic/stages/script.nix @@ -0,0 +1,23 @@ +{ + stdenv +}: + +{ + script +, shell ? "/bin/sh" +}: + +stdenv.mkDerivation { + name = "script"; + preferLocalBuild = true; + phases = [ "installPhase" ]; + installPhase = '' + cat > $out <<'EOF' + #!${shell} + + ${script} + + EOF + chmod +x $out + ''; +} From 8262fd310463ce35c6411a44295e07925defdac6 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 13 Jan 2021 20:18:07 +0100 Subject: [PATCH 439/987] Add slides for meeting 3 --- garlic/doc/slides/3.mm | 181 ++++++ garlic/doc/slides/Makefile | 27 +- garlic/doc/slides/overview.svg | 479 ++++++++++++++++ garlic/doc/slides/sat.png | Bin 0 -> 79137 bytes garlic/doc/slides/scalability.svg | 265 +++++++++ garlic/doc/slides/scaling-region.svg | 806 +++++++++++++++++++++++++++ 6 files changed, 1755 insertions(+), 3 deletions(-) create mode 100644 garlic/doc/slides/3.mm create mode 100644 garlic/doc/slides/overview.svg create mode 100644 garlic/doc/slides/sat.png create mode 100644 garlic/doc/slides/scalability.svg create mode 100644 garlic/doc/slides/scaling-region.svg diff --git a/garlic/doc/slides/3.mm b/garlic/doc/slides/3.mm new file mode 100644 index 0000000..39b07d7 --- /dev/null +++ b/garlic/doc/slides/3.mm @@ -0,0 +1,181 @@ +.\"usage: NS title +.EQ +delim $$ +.EN +.de NS \" New Slide +.SK +.ev gp-top +.fam H +.vs 1.5m +.ll \\n[@ll]u +.lt \\n[@ll]u +.rs +.sp 2v +.ps +5 +\\$* +.ps -5 +.sp 1.5v +.br +.ev +.. +.\" Remove headers +.de TP +.. +.\" Bigger page number in footer +.de EOP +.fam H +.ps +2 +. ie o .tl \\*[pg*odd-footer] +. el .tl \\*[pg*even-footer] +. ds hd*format \\g[P] +. af P 0 +. ie (\\n[P]=1)&(\\n[N]=1) .tl \\*[pg*header] +. el .tl \\*[pg*footer] +. af P \\*[hd*format] +. tl ''\\*[Pg_type!\\n[@copy_type]]'' +.. +.\" Remove top and bottom margin +.VM 0 0 +.\" +.\" +.\" Set virtual page dimensions for a physical size of 16x12 cm +.PGFORM 14c 12c 1c 1 +.ND "January 14, 2021" +.\" .vs 1.5m +.S C 1.5m +.fam H +.\".PH "'cosas'''" +.COVER ms +.de cov@print-date +.DS C +.fam H +.B +\\*[cov*new-date] +.DE +.. +.TL +.ps 20 +.fam H +Garlic experiments +.AF "Barcelona Supercomputing Center" +.AU "Rodrigo Arias Mallo" +.COVEND +.PF "'''%'" +.\" Turn off justification +.SA 0 +.\".PF '''%' +.\"================================================================== +.NS "Approach 1" +This was the approach proposed for hybrids PM +.BL +.LI +Perform a granularity experiment with a \fIreasonable\fP problem size. +.LI +Take the best blocksize +.LI +Analyze strong and weak scaling with that blocksize. +.LI +Plot speedup and efficiency comparing multiple PM. +.LE 1 +The main problem is that it may lead to \fBbogus comparisons\fP. +Additionally, there is no guarantee that the best blocksize is the one +that performs better with more resources. +.\"================================================================== +.NS "Approach 2" +We want to measure scalability of the application \fBonly\fP, not mixed +with runtime overhead or lack of parallelism. +.P +We define \fBsaturation\fP as the state of an execution that allows a +program to potentially use all the resources (the name comes from the +transistor state, when current flows freely). +.P +Design a new experiment which tests multiple blocksizes and multiple +input sizes to find these states: \fBthe saturation experiment\fP. +.P +Begin with small problems and increase the size, so you get to the +answer quickly. +.\"================================================================== +.NS "Saturation experiment" +.2C +\X'pdf: pdfpic sat.png.tk.pdf -R 7c' +.NCOL +.S -1 -3 +.BL 1m +.LI +The objetive is to find the minimum input size that allows us to get +meaningful scalability results. +.LI +More precisely, a unit is in \fBsaturation state\fP if the median time +is below the \fBsaturation time limit\fP, currently set to 110% the minimum +median time (red dashed lines). +.LI +An input size is in \fBsaturation zone\fP if it allows at least K=3 +consecutive points in the saturation state. +.LI +With less than 512 particles/CPU (green line) we cannot be sure that the +performance is not impacted by the runtime overhead or lack of +parallelism. +.LE +.S P P +.1C +.\"================================================================== +.NS "Experiment space" +.2C +\X'pdf: pdfpic scaling-region.svg.tk.pdf -L 7c' +.NCOL +.S -1 -3 +.BL 1m +.LI +\fBSaturation limit\fP: small tasks cannot be solved without overhead +from the runtime, no matter the blocksize. +.LI +Different limits for OmpSs-2 and OpenMP. +.LI +Experiment A will show the scaling of the app while in the saturation +zone. +.LI +Experiment B will show that OpenMP scales bad in the last 2 points. +.LI +Experiment C will show that at some point both OpenMP and OmpSs-2 scale +bad. +.LE +.S P P +.1C +.\"================================================================== +.NS "Experiment space: experiment C" +.2C +\X'pdf: pdfpic scalability.svg.tk.pdf -L 7c' +.NCOL +.BL 1m +.LI +The experiment C will show a difference in performance when approached +to the saturation limit. +.LI +We could say that OmpSs-2 introduces less overhead, therefore allows +better scalability. +.LE +.1C +.\"================================================================== +.NS "Reproducibility" +How easy can we get the same results? Three properties R0 < R1 < R2 (no common nomenclature yet!): +.BL 1m +.LI +R0: \fBSame\fP humans on the \fBsame\fP machine obtain the same result +.LI +R1: \fBDifferent\fP humans on the \fBsame\fP machine obtain the same result +.LI +R2: \fBDifferent\fP humans on a \fBdifferent\fP machine obtain same result +.LE +.P +Garlic provides 2 types of properties: for software and for experimental +results: +.BL 1m +.LI +Software is R2: you can get the exact same software by any one, in any +machine +.LI +Experimental results are R1: you cannot change the machine MN4 (yet) +.LE +.P +Same experimental result means that the mean of your results is in the confidence +interval of our results \fBand the relative std is < 1%\fP. diff --git a/garlic/doc/slides/Makefile b/garlic/doc/slides/Makefile index 748666a..5dfe6b1 100644 --- a/garlic/doc/slides/Makefile +++ b/garlic/doc/slides/Makefile @@ -1,8 +1,29 @@ -all: 2.pdf Makefile +GENFIG=scaling-region.svg.tk.pdf \ + sat.png.tk.pdf \ + scalability.svg.tk.pdf +GENPDF=2.pdf 3.pdf -%.pdf: %.mm - groff -Tpdf -t -p -P-p12c,16c -mm $< > $@ +all: $(GENPDF) + +keep_figs: $(GENFIG) + +%.svg.pdf: %.svg Makefile + inkscape $< --export-pdf=$@ + +%.png.pdf: %.png Makefile + gm convert $< -density 30 $@ + +%.tk.pdf: %.pdf Makefile + pdftk $< output $@ + +%.pdf: %.mm $(GENFIG) + groff -Tpdf -e -t -p -P-p12c,16c -mm $< > $@ -killall -HUP mupdf watch: while [ 1 ]; do inotifywait -e modify *; make; done + +.PRECIOUS: *.svg.pdf *.tk.pdf + +clean: + rm -f $(GENFIG) $(GENPDF) diff --git a/garlic/doc/slides/overview.svg b/garlic/doc/slides/overview.svg new file mode 100644 index 0000000..e36e047 --- /dev/null +++ b/garlic/doc/slides/overview.svg @@ -0,0 +1,479 @@ + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + Garlic overview + bscpkgs + + Isolation + Apps + Postprocess + Replicable + + + + + + + + + + + + + + + + + + Filesystem isolation ensures the appsalways use the same software libraries + Zero human intervention, all datapostprocessing scripts are included + Different team, same results onthe same system (ACM) + Repository with BSC and custompackages + nix + Backwards tracking + Every result is hashed by the softwareused to generate it (datasets, plots ...) + Reproducible builds from source usingthe nix package manager + Several benchmark programs withmultiple programming models + nixpkgs + Large repository of common packages,maintaned by the community + Reproducible + Different team, same results ona different system (ACM). + Is a complete benchmark framework(green = not mature yet) + + diff --git a/garlic/doc/slides/sat.png b/garlic/doc/slides/sat.png new file mode 100644 index 0000000000000000000000000000000000000000..bca6bed66d6e30a8ea0b5814d4d1a85e5df78e05 GIT binary patch literal 79137 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 Y{^*Zd$=@Ld%|VuUy85}Sb4q9e04!CrVE_OC literal 0 HcmV?d00001 diff --git a/garlic/doc/slides/scalability.svg b/garlic/doc/slides/scalability.svg new file mode 100644 index 0000000..19fb326 --- /dev/null +++ b/garlic/doc/slides/scalability.svg @@ -0,0 +1,265 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + Efficiency + Nodes: log(n) + + + Too small + OmpSs-2 scale bad + OpenMP scale bad + + + + We can explain this difference + + + diff --git a/garlic/doc/slides/scaling-region.svg b/garlic/doc/slides/scaling-region.svg new file mode 100644 index 0000000..3cb2857 --- /dev/null +++ b/garlic/doc/slides/scaling-region.svg @@ -0,0 +1,806 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + Problemsize: log(N) + Nodes: log(n) + + Constant workper CPU + + + OpenMPsat. limit + OmpSs-2sat. limit + + Too small + + ENOMEM + + + + + + + + + + + + + + + + + + + + + + + + + + + + Strong + A + B + C + + + + + Weak + + + + + + + Saturation + OpenMP scale bad + OmpSs-2 scale bad + ENOTIME + + + Saturationzone + + + + + 1 task/CPUlimit + + + From 3d0e93b4d3968e20ca3eca7281f13fe1adaea7bd Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 14 Jan 2021 13:06:20 +0100 Subject: [PATCH 440/987] Add slides pdf --- garlic/doc/slides/3.pdf | Bin 0 -> 122774 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 garlic/doc/slides/3.pdf diff --git a/garlic/doc/slides/3.pdf b/garlic/doc/slides/3.pdf new file mode 100644 index 0000000000000000000000000000000000000000..0bbb7dcf0c3e7bda53062758fcf21c0e2a67f93e GIT binary patch literal 122774 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%0DEs$f`t$ZX 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%0DIi1^1nQ|^44 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 QBSUjTBQ8}{SARDy0KqwSod5s; literal 0 HcmV?d00001 From 1e84dc196a85db506053c064195f088ef6b646cf Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 18 Jan 2021 18:42:07 +0100 Subject: [PATCH 441/987] ctfast: Add experimental ctf conversor --- bsc/ctfast/default.nix | 35 +++++++++++++++++++++++++++++++++++ overlay.nix | 2 ++ 2 files changed, 37 insertions(+) create mode 100644 bsc/ctfast/default.nix diff --git a/bsc/ctfast/default.nix b/bsc/ctfast/default.nix new file mode 100644 index 0000000..4988a68 --- /dev/null +++ b/bsc/ctfast/default.nix @@ -0,0 +1,35 @@ +{ + stdenv +, babeltrace2 +, pkg-config +, uthash +}: + +stdenv.mkDerivation rec { + pname = "ctfast"; + version = "${src.shortRev}"; + + buildInputs = [ + babeltrace2 + pkg-config + uthash + ]; + + src = builtins.fetchGit { + url = "ssh://git@bscpm03.bsc.es/rarias/ctfast.git"; + ref = "master"; + }; + + # Fix the search path + configurePhase = '' + sed -i "s@^CTFPLUGINS=.*@CTFPLUGINS=$out/lib/nanos6@" ctfast2prv + ''; + + installPhase = '' + mkdir -p $out/bin + cp ctfast2prv $out/bin + + mkdir -p $out/lib/nanos6 + cp prv.so $out/lib/nanos6/ + ''; +} diff --git a/overlay.nix b/overlay.nix index 7da73a5..d7e3437 100644 --- a/overlay.nix +++ b/overlay.nix @@ -151,6 +151,8 @@ let systemtap = self.linuxPackages_4_9.systemtap; }; + ctfast = callPackage ./bsc/ctfast/default.nix { }; + # ================================================================= # MN4 specific # ================================================================= From 57c60821ce045a7ec654f2bc4449aaa0327a4c06 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 25 Jan 2021 15:25:42 +0100 Subject: [PATCH 442/987] icc: Update url Fixes #87 --- bsc/intel-compiler/icc2020.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bsc/intel-compiler/icc2020.nix b/bsc/intel-compiler/icc2020.nix index 1c5eff0..9f7ea46 100644 --- a/bsc/intel-compiler/icc2020.nix +++ b/bsc/intel-compiler/icc2020.nix @@ -25,7 +25,7 @@ stdenv.mkDerivation rec { tgz="parallel_studio_xe_2020_update${update}_professional_edition.tgz"; src = fetchurl { - url = "http://registrationcenter-download.intel.com/akdlm/IRC_NAS/tec/${dir_nr}/${tgz}"; + url = "https://registrationcenter-download.intel.com/akdlm/irc_nas/tec/${dir_nr}/${tgz}"; sha256 = "1rn9kk5bjj0jfv853b09dxrx7kzvv8dlyzw3hl9ijx9mqr09lrzr"; }; From ed4a9e1bc37ad5b9c799cca736bcabaff87ea801 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 25 Jan 2021 17:54:24 +0100 Subject: [PATCH 443/987] Add branch diagram --- garlic/doc/Makefile | 3 +- garlic/doc/branch.ms | 22 ++++++ garlic/doc/gitbranch.pic | 152 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 176 insertions(+), 1 deletion(-) create mode 100644 garlic/doc/branch.ms create mode 100644 garlic/doc/gitbranch.pic diff --git a/garlic/doc/Makefile b/garlic/doc/Makefile index a6270bb..d6f72f9 100644 --- a/garlic/doc/Makefile +++ b/garlic/doc/Makefile @@ -1,4 +1,5 @@ -all: execution.pdf execution.utf8 execution.ascii pp.pdf pp.utf8 pp.ascii +all: execution.pdf execution.utf8 execution.ascii pp.pdf pp.utf8 pp.ascii\ + branch.pdf TTYOPT=-rPO=4m -rLL=72m PDFOPT=-dpaper=a4 -rPO=4c -rLL=13c diff --git a/garlic/doc/branch.ms b/garlic/doc/branch.ms new file mode 100644 index 0000000..b4e6216 --- /dev/null +++ b/garlic/doc/branch.ms @@ -0,0 +1,22 @@ +.\".fam CMU +.\".TL +.\"Garlic: git branch name +.\".AU +.\"Rodrigo Arias Mallo +.\".AI +.\"Barcelona Supercomputing Center +.\"##################################################################### +.nr GROWPS 3 +.nr PSINCR 1.5p +.\".nr PD 0.5m +.nr PI 2m +\".2C +.\"##################################################################### +\".NH 1 +\"Instructions +\".LP +\"To name a branch of a program, please follow the flowchart below. +.ps -2 +.PS 5/25.4 +copy "gitbranch.pic" +.PE diff --git a/garlic/doc/gitbranch.pic b/garlic/doc/gitbranch.pic new file mode 100644 index 0000000..939e926 --- /dev/null +++ b/garlic/doc/gitbranch.pic @@ -0,0 +1,152 @@ +#.ps -3 +#.fam CMU +#.PS 4.5/25.4 # Scale drawing to 20/25.4 in = +# = 20/25.4[in]/25.4[mm/in] = 20 mm +# FLOWCHART - Basic flow chart blocks. +scale=25.4 #Scale units from inches to mm +csize=2.0 #Cell size in mm +pstricks=0 +dx=0; dy=2; +define process +{[ + box $1; +]} +# decision(): rhomboid -> if block +define decision {[ + boxwid=boxwid*1.2 + boxht=boxht*1.2 + B: box invis $1; + line from B.n to B.e to B.s to B.w to B.n; +]} + +#--- END OF MACROS --- +boxwid=30 +fillval=1 +circlerad=10 +down +START: circle "Start" +arrow +D_MPIB: decision("MPI-based?") +arrow " Yes" ljust +D_TAMPI: decision("TAMPI?") +arrow " Yes" ljust +TAMPI: process("\fB+tampi\fP") +right +move to D_TAMPI.e +arrow "No" above +D_MPI: decision("MPI?") +down +move to D_MPI.s +arrow " Yes" ljust +MPI: process("\fB+mpi\fP") +move to TAMPI.s +A_TAMPI: arrow linewid +line from MPI.s to MPI.c - (0,boxht) \ + to A_TAMPI.c +circle at A_TAMPI.c rad 0.7 filled +move at A_TAMPI +D_ISEND: decision("MPI_Isend()?") +arrow " Yes" ljust +ISEND: process("\fB+isend\fP") +A_ISEND: arrow +right +move to D_ISEND.e +arrow "No" above +D_SEND: decision("MPI_Send()?") +down +move to D_SEND.s +arrow " Yes" ljust +SEND: process("\fB+send\fP") +right +move to D_SEND.e +arrow "No" above +D_RMA: decision("MPI_Get()?") +down +move to D_RMA.s +arrow " Yes" ljust +RMA: process("\fB+rma\fP") +line "No" above from D_MPIB.w to D_MPIB.w - (boxwid,0) +line to (D_MPIB.w.x-boxwid, A_ISEND.c.y) \ + to A_ISEND.c +line from SEND.s to SEND.c - (0,boxht) \ + to A_ISEND.c +line from RMA.s to RMA.c - (0,boxht) \ + to SEND.c - (0,boxht) +circle at A_ISEND.c rad 0.7 filled +move at A_ISEND +D_MT: decision("multithread?") +arrow " Yes" ljust +D_OMP: decision("OpenMP?") +arrow " Yes" ljust +OMP: process("\fB+omp\fP") +right +move to D_OMP.e +arrow "No" above +D_OSS: decision("OmpSs-2?") +down +move to D_OSS.s +arrow " Yes" ljust +OSS: process("\fB+oss\fP") +down +move to OMP.s +A_OMP: arrow +circle at A_OMP.c rad 0.7 filled +line from OSS.s to OSS.c - (0,boxht) \ + to A_OMP.c +move to A_OMP.s +D_FJ: decision("fork-join?") +arrow " Yes" ljust +FJ: process("\fB+fork\fP") +right +move to D_FJ.e +arrow "No" above +D_TASKFOR: decision("task for?") +arrow "No" above +down +move to D_TASKFOR.s +arrow " Yes" ljust +TASKFOR: process("\fB+taskfor\fP") +right +move to D_TASKFOR.e +arrow "No" above +D_TASK: decision("task model?") +down +move to D_TASK.s +arrow " Yes" ljust +TASK: process("\fB+task\fP") +move to FJ.s +A_FJ: arrow +circle at A_FJ.c rad 0.7 filled +line from TASKFOR.s to TASKFOR.c - (0,boxht) \ + to A_FJ.c +line from TASK.s to TASK.c - (0,boxht) \ + to TASKFOR.c - (0,boxht) +left +move to OMP.c - (boxwid,0) +SEQ: process("\fB+seq\fP") +line "No" above from D_MT.w to (SEQ.x, D_MT.w.y) +arrow to SEQ.n +line from SEQ.s to (SEQ.s.x, A_FJ.c.y) to A_FJ.c +down +move to A_FJ.s +D_SIMD: decision("SIMD opt.?") +move to D_SIMD.e +right +arrow "Yes" above +SIMD: process("\fB+simd\fP") +down +move to D_SIMD.s +arrow " No" ljust +END: circle "End" +circle radius circlerad*0.9 at END +arrow from SIMD.s to (SIMD.x, END.y) to END.e + +# Error lines +ERR: circle "Error" at (TASK.x+boxwid, END.y) +circle radius circlerad*0.9 at ERR +line "No" above from D_TASK.e to (ERR.n.x,D_TASK.e.y) +line "No" above from D_OSS.e to (ERR.n.x,D_OSS.e.y) +line "No" above from D_RMA.e to (ERR.n.x,D_RMA.e.y) +line "No" above from D_MPI.e to (ERR.n.x,D_MPI.e.y) +arrow to ERR.n +#.PE From a3804e31f2e5b3610e6bb0e2a98654f672b34bd5 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 26 Jan 2021 14:59:24 +0100 Subject: [PATCH 444/987] develop: Simplify packages --- garlic/index.nix | 64 ++++++++++++++++++++++++++---------------------- 1 file changed, 35 insertions(+), 29 deletions(-) diff --git a/garlic/index.nix b/garlic/index.nix index 9a1ba14..7d5a479 100644 --- a/garlic/index.nix +++ b/garlic/index.nix @@ -6,37 +6,43 @@ }: { - unsafeDevelop = callPackage ./develop/default.nix { - extraInputs = with self; [ - coreutils htop procps-ng vim which strace - tmux gdb kakoune universal-ctags bashInteractive - glibcLocales ncurses git screen curl - # Add more nixpkgs packages here... - bsc.slurm bsc.clangOmpss2 bsc.icc bsc.mcxx bsc.perf - # Add more bscpkgs packages here... - ]; + develop = let + commonPackages = with self; [ + coreutils htop procps-ng vim which strace + tmux gdb kakoune universal-ctags bashInteractive + glibcLocales ncurses git screen curl + # Add more nixpkgs packages here... + ]; + bscPackages = with bsc; [ + slurm clangOmpss2 icc mcxx perf tampi impi + # Add more bsc packages here... + ]; + packages = commonPackages ++ bscPackages; + in + bsc.garlic.stages.exec rec { + nextStage = bsc.garlic.stages.isolate { + nextStage = bsc.garlic.unsafeDevelop.override { + extraInputs = packages; + }; + nixPrefix = bsc.garlic.targetMachine.config.nixPrefix; + extraMounts = [ "/tmp:$TMPDIR" ]; + }; + nixPrefix = bsc.garlic.targetMachine.config.nixPrefix; + # This hack uploads all dependencies to MN4 + pre = let + nixPrefix = bsc.garlic.targetMachine.config.nixPrefix; + stageProgram = bsc.garlicTools.stageProgram; + in + '' + # Hack to upload this to MN4: @upload-to-mn@ + + # Create a link to the develop script + ln -fs ${nixPrefix}${stageProgram nextStage} .nix-develop + ''; + post = "\n"; }; - develop = bsc.garlic.stages.exec rec { - nextStage = bsc.garlic.stages.isolate { - nextStage = bsc.garlic.unsafeDevelop; - nixPrefix = bsc.garlic.targetMachine.config.nixPrefix; - extraMounts = [ "/tmp:$TMPDIR" ]; - }; - nixPrefix = bsc.garlic.targetMachine.config.nixPrefix; - # This hack uploads all dependencies to MN4 - pre = let - nixPrefix = bsc.garlic.targetMachine.config.nixPrefix; - stageProgram = bsc.garlicTools.stageProgram; - in - '' - # Hack to upload this to MN4: @upload-to-mn@ - - # Create a link to the develop script - ln -fs ${nixPrefix}${stageProgram nextStage} .nix-develop - ''; - post = "\n"; - }; + unsafeDevelop = callPackage ./develop/default.nix { }; # Configuration for the machines machines = callPackage ./machines.nix { }; From 0bc81c8943b375d211ce390b1d4cf313dbf5736f Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 28 Jan 2021 15:00:43 +0100 Subject: [PATCH 445/987] tools: add range2 function --- garlic/tools.nix | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/garlic/tools.nix b/garlic/tools.nix index 0c29722..836ee73 100644 --- a/garlic/tools.nix +++ b/garlic/tools.nix @@ -51,6 +51,13 @@ let # each element of the list. expRange = base: a: b: (map (ex: pow base ex) (range a b)); + # Generates a range from start to end (inclusive) by multiplying start by 2. + range2 = start: end: + let + _range2 = s: e: if (s > e) then [] else [ s ] ++ (_range2 (s * 2) e); + in + _range2 start end; + # Generates a list of integers by halving number N until it reaches 1. Is # sorted from the smallest to largest. halfList = N: From 0f62151dcf0e75d9a40d7ed29aa7561bda45f12b Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 28 Jan 2021 14:57:51 +0100 Subject: [PATCH 446/987] lulesh: follow garlic git branches --- garlic/apps/lulesh/default.nix | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/garlic/apps/lulesh/default.nix b/garlic/apps/lulesh/default.nix index d677161..3659caf 100644 --- a/garlic/apps/lulesh/default.nix +++ b/garlic/apps/lulesh/default.nix @@ -1,31 +1,40 @@ { stdenv -, mpi +, impi , mcxx , icc +, gitBranch ? "garlic/tampi+isend+oss+taskfor" +, tampi ? null }: +with stdenv.lib; + stdenv.mkDerivation rec { name = "lulesh"; src = builtins.fetchGit { - url = "ssh://git@bscpm03.bsc.es/mmaronas/lulesh.git"; - ref = "master"; + url = "ssh://git@bscpm03.bsc.es/garlic/apps/lulesh.git"; + ref = gitBranch; }; dontConfigure = true; + preBuild = optionalString (tampi != null) "export TAMPI_HOME=${tampi}"; + + #TODO: Allow multiple MPI implementations and compilers buildInputs = [ - mpi + impi icc mcxx ]; enableParallelBuilding = true; + #TODO: Can we build an executable named "lulesh" in all branches? installPhase = '' mkdir -p $out/bin - find . -name 'lulesh*' -type f -executable -exec cp \{\} $out/bin/ \; + find . -name 'lulesh*' -type f -executable -exec cp \{\} $out/bin/${name} \; ''; + programPath = "/bin/${name}"; } From 9beda657785f9db546620baa79644a08c3e9007f Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 28 Jan 2021 14:59:14 +0100 Subject: [PATCH 447/987] lulesh: add experiment with all variants --- garlic/exp/index.nix | 4 ++ garlic/exp/lulesh/test.nix | 84 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 88 insertions(+) create mode 100644 garlic/exp/lulesh/test.nix diff --git a/garlic/exp/index.nix b/garlic/exp/index.nix index e88f8ee..aeb0e1d 100644 --- a/garlic/exp/index.nix +++ b/garlic/exp/index.nix @@ -90,4 +90,8 @@ slurm = { cpu = callPackage ./slurm/cpu.nix { }; }; + + lulesh = { + test = callPackage ./lulesh/test.nix { }; + }; } diff --git a/garlic/exp/lulesh/test.nix b/garlic/exp/lulesh/test.nix new file mode 100644 index 0000000..595be9d --- /dev/null +++ b/garlic/exp/lulesh/test.nix @@ -0,0 +1,84 @@ +{ + stdenv +, stdexp +, bsc +, targetMachine +, stages +}: + +with stdenv.lib; + +let + + # Initial variable configuration + varConf = with bsc; { + gitBranch = [ + "garlic/mpi+isend+seq" + "garlic/tampi+isend+oss+taskloop" + "garlic/tampi+isend+oss+taskfor" + "garlic/tampi+isend+oss+task" + "garlic/mpi+isend+seq" + "garlic/mpi+isend+oss+task" + "garlic/mpi+isend+omp+fork" + "garlic/tampi+isend+oss+taskloopfor" + ]; + }; + + machineConfig = targetMachine.config; + + # Generate the complete configuration for each unit + genConf = with bsc; c: targetMachine.config // rec { + expName = "lulesh"; + unitName = "${expName}-test"; + inherit (machineConfig) hw; + + # options + iterations = 10; + size = 30; + gitBranch = c.gitBranch; + + # Repeat the execution of each unit several times + loops = 10; + + # Resources + qos = "debug"; + cpusPerTask = hw.cpusPerSocket; + ntasksPerNode = 1; + nodes = 1; + time = "02:00:00"; + jobName = unitName; + }; + + # Compute the array of configurations + configs = stdexp.buildConfigs { + inherit varConf genConf; + }; + + /* Lulesh options: + -q : quiet mode - suppress all stdout + -i : number of cycles to run + -s : length of cube mesh along side + -r : Number of distinct regions (def: 11) + -b : Load balance between regions of a domain (def: 1) + -c : Extra cost of more expensive regions (def: 1) + -f : Number of files to split viz dump into (def: (np+10)/9) + -p : Print out progress + -v : Output viz file (requires compiling with -DVIZ_MESH + -h : This message + */ + exec = {nextStage, conf, ...}: with conf; stages.exec { + inherit nextStage; + argv = [ "-i" iterations "-s" size ]; + }; + + apps = bsc.garlic.apps; + + program = {nextStage, conf, ...}: apps.lulesh.override { + inherit (conf) gitBranch; + }; + + pipeline = stdexp.stdPipeline ++ [ exec program ]; + +in + + stdexp.genExperiment { inherit configs pipeline; } From 4591eca1fdd28b21ed149dd6637849e0cab656c1 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 1 Feb 2021 11:09:53 +0100 Subject: [PATCH 448/987] garlic: Add blackbox diagram --- garlic/doc/Makefile | 6 +++++- garlic/doc/blackbox.ms | 40 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+), 1 deletion(-) create mode 100644 garlic/doc/blackbox.ms diff --git a/garlic/doc/Makefile b/garlic/doc/Makefile index d6f72f9..f2ecc0a 100644 --- a/garlic/doc/Makefile +++ b/garlic/doc/Makefile @@ -1,10 +1,14 @@ all: execution.pdf execution.utf8 execution.ascii pp.pdf pp.utf8 pp.ascii\ - branch.pdf + branch.pdf blackbox.pdf TTYOPT=-rPO=4m -rLL=72m PDFOPT=-dpaper=a4 -rPO=4c -rLL=13c PREPROC=-k -t -p -R +blackbox.pdf: blackbox.ms Makefile + REFER=ref.i groff -ms $(PREPROC) -dpaper=a4 -rPO=2c -rLL=17c -Tpdf $< > $@ + -killall -HUP mupdf + %.pdf: %.ms Makefile REFER=ref.i groff -ms $(PREPROC) $(PDFOPT) -Tpdf $< > $@ -killall -HUP mupdf diff --git a/garlic/doc/blackbox.ms b/garlic/doc/blackbox.ms new file mode 100644 index 0000000..313a0f5 --- /dev/null +++ b/garlic/doc/blackbox.ms @@ -0,0 +1,40 @@ +.\" Use helvetica family +.fam H +.PS +moveht=0.1 +boxwid=1 +sht=boxht + 0.1 +hspace = boxwid + 0.2 +right +G: [ + boxwid=1 + extrawid=1.8 + right + A: box "nix"; arrow; + B1: box wid extrawid "App source code" "PM branch, defines..."; + move to (A.sw.x, A.y - boxht - moveht) + A: box "garlic/nix"; arrow; + B2: box wid extrawid "App run config" "Input size, algorithm..."; + move to (A.sw.x, A.y - boxht - moveht) + A: box "garlic/nix"; arrow; + B3: box wid extrawid "Build config" "MPI impl, O3, CC version..."; + move to (A.sw.x, A.y - boxht - moveht) + A: box "garlic/nix"; arrow; + B4: box wid extrawid "Run config" "Nodes, affinity"; + move to (A.sw.x, A.y - boxht - moveht) + A: box "MN4"; arrow; + B5: box wid extrawid "Hardware" "Cache size, intercomm..."; +] +movewid=1 +move +circlerad=0.4 +E: circle "Execution" +arrow +box "Result" +rspline = 0.5 +arrow from G.B1.e to E chop 0 chop circlerad +arrow from G.B2.e to E chop 0 chop circlerad +arrow from G.B3.e to E chop 0 chop circlerad +arrow from G.B4.e to E chop 0 chop circlerad +arrow from G.B5.e to E chop 0 chop circlerad +.PE From fe760c00238c42a5e556bf2a77d174fa57e1ed34 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 3 Feb 2021 11:50:31 +0100 Subject: [PATCH 449/987] garlic: sent trebuchet output to stderr --- garlic/sh/garlic | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/garlic/sh/garlic b/garlic/sh/garlic index 24b760b..9da6520 100755 --- a/garlic/sh/garlic +++ b/garlic/sh/garlic @@ -150,7 +150,7 @@ do_fetch() { do_run() { - $trebuchet + >&2 $trebuchet } waitResults=1 From e4e427b7f6d4f9d9f18e1ece0c5f3ee4eff266f6 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 3 Feb 2021 12:08:25 +0100 Subject: [PATCH 450/987] garlicd: add daemon to launch experiments --- garlic/garlicd/garlicd | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100755 garlic/garlicd/garlicd diff --git a/garlic/garlicd/garlicd b/garlic/garlicd/garlicd new file mode 100755 index 0000000..c63216b --- /dev/null +++ b/garlic/garlicd/garlicd @@ -0,0 +1,33 @@ +#!/bin/bash + +if [ -z "$1" -o -z "$2" ]; then + >&2 echo "usage: garlicd " +fi + +bscpkgsdir=$(readlink -f "$1") +mountdir=$(readlink -f "$2") +run="$mountdir/run" +completed="$mountdir/completed" + +[ -p "$run" ] || mkfifo "$run" +[ -p "$completed" ] || mkfifo "$completed" + +cd "$bscpkgsdir" + +echo "Waiting for experiments..." + +while read -r line < "$run"; do + echo Attempting to run: $line + + echo Copying files to MN4... + nix copy --to ssh://mn1 $line + results=$(garlic -RFv $line) + echo "The results are: $results" + drv=$(nix-store -q --deriver $results) + echo "drv = $drv" + if [ -z "$drv" ]; then + echo "Something failed, drv is empty. Check the logs." + else + echo -n "$drv" >> "$completed" + fi +done From 32d8636ae1d8e754c3d8d9ada35ed54f2cbb71d2 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 3 Feb 2021 12:27:23 +0100 Subject: [PATCH 451/987] timetable: prevent empty time lines --- garlic/pp/timetable.nix | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/garlic/pp/timetable.nix b/garlic/pp/timetable.nix index 586d407..0f2e18b 100644 --- a/garlic/pp/timetable.nix +++ b/garlic/pp/timetable.nix @@ -20,11 +20,14 @@ stdenv.mkDerivation { conf=garlic_config.json for run in $(ls -d [0-9]* | sort -n); do time=$(awk '/^ ?time /{print $2}' $run/stdout.log) + if [ -z "$time" ]; then + echo "error: cannot match \"time\" line + echo "check stdout log file: ${inputResult}/$exp/$unit/$run/stdout.log" + exit 1 + fi jq -cn "{ exp:\"$exp\", unit:\"$unit\", config:inputs, time:$time, run:$run }" $conf >> $out done done done - - #gzip $out ''; } From b453c122534c441266db899f3d6ce89ba74a62a8 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 3 Feb 2021 12:36:59 +0100 Subject: [PATCH 452/987] pp: Add automatic launcher --- garlic/index.nix | 4 ++++ garlic/pp/launcher.nix | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+) create mode 100644 garlic/pp/launcher.nix diff --git a/garlic/index.nix b/garlic/index.nix index 7d5a479..556b85f 100644 --- a/garlic/index.nix +++ b/garlic/index.nix @@ -118,6 +118,10 @@ # Takes a list of experiments and returns a file that contains # all timetable results from the experiments. merge = exps: mergeDatasets (map timetableFromTrebuchet exps); + + # Automatic launcher + launcher = callPackage ./pp/launcher.nix { }; + resultFromLauncher = l: import (builtins.readFile l); }; # Apps for Garlic diff --git a/garlic/pp/launcher.nix b/garlic/pp/launcher.nix new file mode 100644 index 0000000..e362cdb --- /dev/null +++ b/garlic/pp/launcher.nix @@ -0,0 +1,32 @@ +{ + stdenv +}: + +trebuchet: + +stdenv.mkDerivation { + name = "launcher"; + preferLocalBuild = true; + + phases = [ "installPhase" ]; + + installPhase = '' + if [ ! -e /garlic/run ]; then + echo "Missing /garlic/run, cannot continue" + echo "Are you running the garlicd daemon?" + echo + echo "You can manually run the experiment and fetch the results with:" + echo + echo -e "\e[30;48;5;2mgarlic -RFv ${trebuchetStage}\e[0m" + echo + echo "See garlic(1) for more details." + exit 1 + fi + + echo ${trebuchet} >> /garlic/run + echo "Waiting for experiment results..." + results=$(cat /garlic/completed) + #ln -s $results $out + echo -n "$results" > $out + ''; +} From e89139284a89a0b527b2d33557aa9d2c1e414b58 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 3 Feb 2021 12:37:54 +0100 Subject: [PATCH 453/987] stdexp: add result and timetable targets These targets allow one experiment to directly refer to another experiment results, thus a dependency chain can be formed to ensure execution order. It also simplifies the dataset definition, as they can be automatically fetched from the experiment directly. --- garlic/index.nix | 2 +- garlic/stdexp.nix | 21 ++++++++++++++------- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/garlic/index.nix b/garlic/index.nix index 556b85f..a9b31cb 100644 --- a/garlic/index.nix +++ b/garlic/index.nix @@ -69,7 +69,7 @@ # Load some helper functions to generate app variants stdexp = callPackage ./stdexp.nix { - inherit (bsc.garlic) targetMachine stages; + inherit (bsc.garlic) targetMachine stages pp; }; # Execution stages diff --git a/garlic/stdexp.nix b/garlic/stdexp.nix index bb386ef..e9a9d27 100644 --- a/garlic/stdexp.nix +++ b/garlic/stdexp.nix @@ -8,6 +8,7 @@ , writeTextFile , runCommandLocal , python +, pp }: with stdenv.lib; @@ -19,17 +20,23 @@ in rec { /* Takes a list of units and builds an experiment, after executing the trebuchet, runexp and isolate stages. Returns the trebuchet stage. */ - buildTrebuchet = units: stages.trebuchet { - inherit (machineConf) nixPrefix sshHost; - nextStage = stages.runexp { - inherit (machineConf) nixPrefix; - nextStage = stages.isolate { + buildTrebuchet = units: + let + trebuchet = stages.trebuchet { + inherit (machineConf) nixPrefix sshHost; + nextStage = stages.runexp { inherit (machineConf) nixPrefix; - nextStage = stages.experiment { - inherit units; + nextStage = stages.isolate { + inherit (machineConf) nixPrefix; + nextStage = stages.experiment { + inherit units; + }; }; }; }; + in trebuchet // rec { + result = pp.resultFromLauncher (pp.launcher trebuchet); + timetable = pp.timetable result; }; /* Given an attrset of lists `varConf` and a function `genConf` that accepts a From 0faf22a43f93f94f4dca0a4fa7f3c3a7fb1ec7d6 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 3 Feb 2021 12:39:44 +0100 Subject: [PATCH 454/987] fig: add nbody example using timetable attribute --- garlic/fig/index.nix | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/garlic/fig/index.nix b/garlic/fig/index.nix index 97efaad..5abc91d 100644 --- a/garlic/fig/index.nix +++ b/garlic/fig/index.nix @@ -9,17 +9,20 @@ let rPlot = garlic.pp.rPlot; ds = garlic.ds; + exp = garlic.exp; + pp = garlic.pp; + + rPlotExp = rScript: exp: rPlot { script = rScript; dataset = exp; }; in { - nbody = { + nbody = with exp.nbody; { baseline = rPlot { script = ./nbody/baseline.R; dataset = ds.nbody.baseline; }; - small = rPlot { - script = ./nbody/baseline.R; - dataset = ds.nbody.small; - }; + + small = rPlotExp ./nbody/baseline.R small.timetable; + jemalloc = rPlot { script = ./nbody/jemalloc.R; dataset = ds.nbody.jemalloc; From d84ccf566bd6deec34925d0d27914361318bfbdf Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 3 Feb 2021 13:51:04 +0100 Subject: [PATCH 455/987] launcher: fix typo --- garlic/pp/launcher.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/garlic/pp/launcher.nix b/garlic/pp/launcher.nix index e362cdb..428388b 100644 --- a/garlic/pp/launcher.nix +++ b/garlic/pp/launcher.nix @@ -17,7 +17,7 @@ stdenv.mkDerivation { echo echo "You can manually run the experiment and fetch the results with:" echo - echo -e "\e[30;48;5;2mgarlic -RFv ${trebuchetStage}\e[0m" + echo -e "\e[30;48;5;2mgarlic -RFv ${trebuchet}\e[0m" echo echo "See garlic(1) for more details." exit 1 From 9c6b7a9f870cbe0686833541e62711cd0de2d045 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 3 Feb 2021 13:51:24 +0100 Subject: [PATCH 456/987] timetable: missing quote --- garlic/pp/timetable.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/garlic/pp/timetable.nix b/garlic/pp/timetable.nix index 0f2e18b..3bed915 100644 --- a/garlic/pp/timetable.nix +++ b/garlic/pp/timetable.nix @@ -21,7 +21,7 @@ stdenv.mkDerivation { for run in $(ls -d [0-9]* | sort -n); do time=$(awk '/^ ?time /{print $2}' $run/stdout.log) if [ -z "$time" ]; then - echo "error: cannot match \"time\" line + echo "error: cannot match \"time\" line" echo "check stdout log file: ${inputResult}/$exp/$unit/$run/stdout.log" exit 1 fi From b65a442cb097df6b347b4e8aa04e82624798b55f Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 3 Feb 2021 13:02:18 +0100 Subject: [PATCH 457/987] fig: use timetable attribute in other plots --- garlic/fig/index.nix | 57 +++++++++++++------------------------------- 1 file changed, 17 insertions(+), 40 deletions(-) diff --git a/garlic/fig/index.nix b/garlic/fig/index.nix index 5abc91d..5cb454d 100644 --- a/garlic/fig/index.nix +++ b/garlic/fig/index.nix @@ -12,56 +12,33 @@ let exp = garlic.exp; pp = garlic.pp; - rPlotExp = rScript: exp: rPlot { script = rScript; dataset = exp; }; + exptt = exlist: map (e: e.timetable) exlist; + rPlotExp = rScript: exp: rPlot { + script = rScript; + dataset = pp.mergeDatasets (exptt exp); + }; in { nbody = with exp.nbody; { - baseline = rPlot { - script = ./nbody/baseline.R; - dataset = ds.nbody.baseline; - }; - - small = rPlotExp ./nbody/baseline.R small.timetable; - - jemalloc = rPlot { - script = ./nbody/jemalloc.R; - dataset = ds.nbody.jemalloc; - }; - #freeCpu = rPlot { - # script = ./nbody/freeCpu.R; - # dataset = ds.nbody.freeCpu; - #}; - ctf = rPlot { - script = ./nbody/baseline.R; - dataset = ds.nbody.ctf; - }; + baseline = rPlotExp ./nbody/baseline.R [ baseline ]; + small = rPlotExp ./nbody/baseline.R [ small ]; + jemalloc = rPlotExp ./nbody/jemalloc.R [ baseline jemalloc ]; + ctf = rPlotExp ./nbody/baseline.R [ ctf ]; }; - hpcg = { - oss = with ds.hpcg; rPlot { - script = ./hpcg/oss.R; - dataset = oss; - }; + hpcg = with exp.hpcg; { + oss = rPlotExp ./hpcg/oss.R [ oss ]; }; - saiph = { - granularity = with ds.saiph; rPlot { - script = ./saiph/granularity.R; - dataset = granularity; - }; + saiph = with exp.saiph; { + granularity = rPlotExp ./saiph/granularity.R [ granularity ]; }; - heat = { - test = with ds.heat; rPlot { - script = ./heat/test.R; - dataset = test; - }; + heat = with exp.heat; { + test = rPlotExp ./heat/test.R [ test ]; }; - creams = { - ss = with ds.creams; rPlot { - script = ./creams/ss.R; - dataset = ss.all; - }; + creams = with exp.creams; { + ss = rPlotExp ./creams/ss.R [ ss.hybrid ss.pure ]; }; } From d4dfbb75013d46cdb2ba62296d1aa0e8c0e98632 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 3 Feb 2021 15:31:19 +0100 Subject: [PATCH 458/987] Remove garlic.ds attribute Datasets are now handled directly when creating the figures, via the timetable attribute. --- garlic/ds/index.nix | 41 ----------------------------------------- garlic/fig/index.nix | 1 - garlic/index.nix | 3 --- 3 files changed, 45 deletions(-) delete mode 100644 garlic/ds/index.nix diff --git a/garlic/ds/index.nix b/garlic/ds/index.nix deleted file mode 100644 index d866b86..0000000 --- a/garlic/ds/index.nix +++ /dev/null @@ -1,41 +0,0 @@ -{ - super -, self -, bsc -, garlic -, callPackage -}: - -with garlic.pp; - -let - exp = garlic.exp; -in -{ - nbody = with exp.nbody; { - baseline = merge [ baseline ]; - small = merge [ small ]; - jemalloc = merge [ baseline jemalloc ]; - #freeCpu = merge [ baseline freeCpu ]; - ctf = merge [ ctf ]; - }; - - hpcg = with exp.hpcg; { - oss = merge [ oss ]; - }; - - saiph = with exp.saiph; { - numcomm = merge [ numcomm ]; - granularity = merge [ granularity ]; - }; - - heat = with exp.heat; { - test = merge [ test ]; - }; - - creams = with exp.creams.ss; { - ss.hybrid = merge [ hybrid ]; - ss.pure = merge [ pure ]; - ss.all = merge [ hybrid pure ]; - }; -} diff --git a/garlic/fig/index.nix b/garlic/fig/index.nix index 5cb454d..eef5ce5 100644 --- a/garlic/fig/index.nix +++ b/garlic/fig/index.nix @@ -8,7 +8,6 @@ let rPlot = garlic.pp.rPlot; - ds = garlic.ds; exp = garlic.exp; pp = garlic.pp; diff --git a/garlic/index.nix b/garlic/index.nix index a9b31cb..461fc6b 100644 --- a/garlic/index.nix +++ b/garlic/index.nix @@ -130,9 +130,6 @@ # Experiments exp = callPackage ./exp/index.nix { }; - # Datasets used in the figures - ds = callPackage ./ds/index.nix { }; - # Figures generated from the experiments fig = callPackage ./fig/index.nix { }; From ed1cd75d56e7e8ae99c5e23db9f74ea7fa30e144 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 5 Feb 2021 10:16:57 +0100 Subject: [PATCH 459/987] impi: update 2019.9.304 -> 2019.10.317 --- bsc/intel-mpi/default.nix | 22 ++++++++++------------ bsc/intel-mpi/mpicc.patch | 20 ++++++++++---------- bsc/intel-mpi/mpicxx.patch | 20 ++++++++++---------- 3 files changed, 30 insertions(+), 32 deletions(-) diff --git a/bsc/intel-mpi/default.nix b/bsc/intel-mpi/default.nix index 8082a2e..c2740a4 100644 --- a/bsc/intel-mpi/default.nix +++ b/bsc/intel-mpi/default.nix @@ -29,13 +29,12 @@ in stdenv.mkDerivation rec { name = "intel-mpi-${version}"; - version = "2019.9.304"; - dir_nr = "17263"; - internal-ver = "2020.4.304"; + version = "2019.10.317"; + dir_nr = "17534"; src = builtins.fetchTarball { url = "http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/${dir_nr}/l_mpi_${version}.tgz"; - sha256 = "0nmp6np4s7nx2p94x40bpqkp5nasgif3gmbfl4lajzgj2rkh871v"; + sha256 = "00nimgqywr20dv1ns5kg4r8539gvharn0xfj48i7mhbg8kwf8s08"; }; buildInputs = [ @@ -53,7 +52,10 @@ stdenv.mkDerivation rec { postUnpack = '' pushd $sourceRoot rpmextract rpm/intel-mpi-*.rpm + # Predictable name + mv opt/intel/compilers_and_libraries_* opt/intel/compilers_and_libraries popd + sourceRoot="$sourceRoot/opt/intel/compilers_and_libraries/linux/mpi/intel64" ''; patches = [ @@ -62,19 +64,15 @@ stdenv.mkDerivation rec { ]; postPatch = '' - ls -l opt/intel/ - pushd opt/intel/compilers_and_libraries_${internal-ver}/linux/mpi/intel64/bin - for i in mpi* ; do - echo "Fixing paths in $i" - sed -i "s:I_MPI_SUBSTITUTE_INSTALLDIR:$out:g" "$i" - done - popd + for i in bin/mpi* ; do + echo "Fixing paths in $i" + sed -i "s:I_MPI_SUBSTITUTE_INSTALLDIR:$out:g" "$i" + done ''; dontBuild = true; installPhase = '' - cd opt/intel/compilers_and_libraries_${internal-ver}/linux/mpi/intel64 mkdir -p $out mv etc $out mv bin $out diff --git a/bsc/intel-mpi/mpicc.patch b/bsc/intel-mpi/mpicc.patch index 0122ec6..d91f77e 100644 --- a/bsc/intel-mpi/mpicc.patch +++ b/bsc/intel-mpi/mpicc.patch @@ -1,20 +1,20 @@ ---- a/opt/intel/compilers_and_libraries_2020.4.304/linux/mpi/intel64/bin/mpicc 2020-11-06 15:17:24.746803639 +0100 -+++ b/opt/intel/compilers_and_libraries_2020.4.304/linux/mpi/intel64/bin/mpicc 2020-11-06 15:18:41.806654112 +0100 +--- a/bin/mpicc 2021-02-04 18:15:11.233632360 +0100 ++++ b/bin/mpicc 2021-02-05 09:33:49.493598479 +0100 @@ -50,7 +50,7 @@ if [ x"$opt_args" == x"" ]; then case "${compiler_short_name}" in - icc|icx) $dir/mpiicc -cc=$compiler_name "$@" ;; -- cc|*gcc*|clang*) $dir/mpigcc -cc=$compiler_name "$@" ;; -+ cc|*gcc*|clang*|mcc|echo) $dir/mpigcc -cc=$compiler_name "$@" ;; - mpicc) $dir/mpigcc "$@" ;; + icc|icx) "$dir"/mpiicc -cc=$compiler_name "$@" ;; +- cc|*gcc*|clang*) "$dir"/mpigcc -cc=$compiler_name "$@" ;; ++ cc|*gcc*|clang*|mcc|echo) "$dir"/mpigcc -cc=$compiler_name "$@" ;; + mpicc) "$dir"/mpigcc "$@" ;; *) echo "Error: unsupported compiler name '$compiler_name'." @@ -60,7 +60,7 @@ else case "${compiler_short_name}" in - icc|icx) $dir/mpiicc -cc=$compiler_name "$@" $opt_args ;; -- cc|*gcc*|clang*) $dir/mpigcc -cc=$compiler_name "$@" $opt_args ;; -+ cc|*gcc*|clang*|mcc|echo) $dir/mpigcc -cc=$compiler_name "$@" $opt_args ;; - mpicc) $dir/mpigcc "$@" $opt_args ;; + icc|icx) "$dir"/mpiicc -cc=$compiler_name "$@" $opt_args ;; +- cc|*gcc*|clang*) "$dir"/mpigcc -cc=$compiler_name "$@" $opt_args ;; ++ cc|*gcc*|clang*|mcc|echo) "$dir"/mpigcc -cc=$compiler_name "$@" $opt_args ;; + mpicc) "$dir"/mpigcc "$@" $opt_args ;; *) echo "Error: unsupported compiler name '$compiler_name'." diff --git a/bsc/intel-mpi/mpicxx.patch b/bsc/intel-mpi/mpicxx.patch index c48eb69..76bdfce 100644 --- a/bsc/intel-mpi/mpicxx.patch +++ b/bsc/intel-mpi/mpicxx.patch @@ -1,20 +1,20 @@ ---- a/opt/intel/compilers_and_libraries_2020.4.304/linux/mpi/intel64/bin/mpicxx 2020-11-06 15:14:35.911131270 +0100 -+++ b/opt/intel/compilers_and_libraries_2020.4.304/linux/mpi/intel64/bin/mpicxx 2020-11-06 15:23:41.198073231 +0100 +--- a/bin/mpicxx 2021-02-04 18:15:11.233632360 +0100 ++++ b/bin/mpicxx 2021-02-05 09:36:21.396922569 +0100 @@ -50,7 +50,7 @@ if [ x"$opt_args" == x"" ]; then case "${compiler_short_name}" in - icc|icpc|dpcpp) $dir/mpiicpc -cxx=$compiler_name "$@" ;; -- *g++*) $dir/mpigxx -cxx=$compiler_name "$@" ;; -+ *g++*|clang*++|mcxx|echo) $dir/mpigxx -cxx=$compiler_name "$@" ;; - mpicxx) $dir/mpigxx "$@" ;; + icc|icpc|dpcpp) "$dir"/mpiicpc -cxx=$compiler_name "$@" ;; +- *g++*) "$dir"/mpigxx -cxx=$compiler_name "$@" ;; ++ *g++*|clang*++|mcxx|echo) "$dir"/mpigxx -cxx=$compiler_name "$@" ;; + mpicxx) "$dir"/mpigxx "$@" ;; *) echo "Error: unsupported compiler name '$compiler_name'." @@ -60,7 +60,7 @@ else case "${compiler_short_name}" in - icc|icpc|dpcpp) $dir/mpiicpc -cxx=$compiler_name "$@" $opt_args ;; -- *g++*) $dir/mpigxx -cxx=$compiler_name "$@" $opt_args ;; -+ *g++*|clang*++|mcxx|echo) $dir/mpigxx -cxx=$compiler_name "$@" $opt_args ;; - mpicxx) $dir/mpigxx "$@" $opt_args ;; + icc|icpc|dpcpp) "$dir"/mpiicpc -cxx=$compiler_name "$@" $opt_args ;; +- *g++*) "$dir"/mpigxx -cxx=$compiler_name "$@" $opt_args ;; ++ *g++*|clang*++|mcxx|echo) "$dir"/mpigxx -cxx=$compiler_name "$@" $opt_args ;; + mpicxx) "$dir"/mpigxx "$@" $opt_args ;; *) echo "Error: unsupported compiler name '$compiler_name'." From e5561b873543324cb8f07ae9f291c285afa7f375 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 8 Feb 2021 14:14:08 +0100 Subject: [PATCH 460/987] control: save total execution time --- garlic/pp/timetable.nix | 5 ++++- garlic/sh/garlic | 2 ++ garlic/stages/control.nix | 15 +++++++++------ 3 files changed, 15 insertions(+), 7 deletions(-) diff --git a/garlic/pp/timetable.nix b/garlic/pp/timetable.nix index 3bed915..811e5ce 100644 --- a/garlic/pp/timetable.nix +++ b/garlic/pp/timetable.nix @@ -25,7 +25,10 @@ stdenv.mkDerivation { echo "check stdout log file: ${inputResult}/$exp/$unit/$run/stdout.log" exit 1 fi - jq -cn "{ exp:\"$exp\", unit:\"$unit\", config:inputs, time:$time, run:$run }" $conf >> $out + start_time=$(cat $run/.garlic/total_time_start) + end_time=$(cat $run/.garlic/total_time_end) + total_time=$(($end_time - $start_time)) + jq -cn "{ exp:\"$exp\", unit:\"$unit\", config:inputs, time:$time, run:$run, total_time:$total_time }" $conf >> $out done done done diff --git a/garlic/sh/garlic b/garlic/sh/garlic index 9da6520..765e875 100755 --- a/garlic/sh/garlic +++ b/garlic/sh/garlic @@ -136,6 +136,8 @@ do_fetch() { --include='*/*/garlic_config.json' \ --include='*/*/std*.log' \ --include='*/*/*/std*.log' \ + --include='*/*/*/.garlic' \ + --include='*/*/*/.garlic/*' \ --exclude='*/*/*/*' \ $exp $garlicTemp diff --git a/garlic/stages/control.nix b/garlic/stages/control.nix index 7e24b92..123c560 100644 --- a/garlic/stages/control.nix +++ b/garlic/stages/control.nix @@ -16,14 +16,17 @@ stdenv.mkDerivation { phases = [ "installPhase" ]; dontPatchShebangs = true; installPhase = '' - cat > $out < $out <<"EOF" #!/bin/sh -e - for n in \$(seq 1 ${toString loops}); do - export GARLIC_RUN="\$n" - echo "running \$n of ${toString loops}" > status - mkdir "\$n" - cd "\$n" + for n in $(seq 1 ${toString loops}); do + export GARLIC_RUN="$n" + echo "running $n of ${toString loops}" > status + mkdir "$n" + cd "$n" + mkdir .garlic + date +%s > .garlic/total_time_start ${stageProgram nextStage} + date +%s > .garlic/total_time_end cd .. done echo "completed" > status From 95809bd2bf56c4b091eb3cbe2b9b0cee22206117 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 8 Feb 2021 19:00:38 +0100 Subject: [PATCH 461/987] user guide: add stub with mm macro --- garlic/doc/ug.mm | 181 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 181 insertions(+) create mode 100644 garlic/doc/ug.mm diff --git a/garlic/doc/ug.mm b/garlic/doc/ug.mm new file mode 100644 index 0000000..b0a4c48 --- /dev/null +++ b/garlic/doc/ug.mm @@ -0,0 +1,181 @@ +.COVER +.TL +Garlic: User guide +.AF "Barcelona Supercomputing Center" +.AU "Rodrigo Arias Mallo" +.COVEND +.H 1 "Overview" +Dependency graph of a complete experiment that produces a figure. Each box +is a derivation and arrows represent \fBbuild dependencies\fP. +.DS CB +.PS +linewid=0.9; +right +box "Source" "code" +arrow <-> "Develop" above +box "Program" +arrow <-> "Experiment" above +box "Results" +arrow <-> "Data" "exploration" +box "Figures" +.PE +.DE +.H 1 "Development" +.P +The development phase consists in creating a functional program by +modifying the source code. This process is generally cyclic, where the +developer needs to compile the program, correct mistakes and debug the +program. +.P +It requires to be running in the target machine. +.\" =================================================================== +.H 1 "Experimentation" +The experimentation phase begins with a functional program which is the +object of study. The experimenter then designs an experiment aimed at +measuring some properties of the program. The experiment is then +executed and the results are stored for further analysis. +.H 2 "Writing the experiment configuration" +.P +The term experiment is quite overloaded in this document. We are going +to see how to write the recipe that describes the execution pipeline of +an experiment. +.P +Within the garlic benchmark, experiments are typically sorted by a +hierarchy depending on which application they belong. Take a look at the +\fCgarlic/exp\fP directory and you will find some folders and .nix +files. +.P +Each of those recipes files describe a function that returns a +derivation, which, once built will result in the first stage script of +the execution pipeline. +.P +The first part of states the name of the attributes required as the +input of the function. Typically some packages, common tools and options: +.DS I +.VERBON +{ + stdenv +, stdexp +, bsc +, targetMachine +, stages +, garlicTools +}: +.VERBOFF +.DE +.P +Notice the \fCtargetMachine\fP argument, which provides information +about the machine in which the experiment will run. You should write +your experiment in such a way that runs in multiple clusters. +.DS I +.VERBON +varConf = { + blocks = [ 1 2 4 ]; + nodes = [ 1 ]; +}; +.VERBOFF +.DE +.P +The \fCvarConf\fP is the attribute set that allows you to vary some +factors in the experiment. +.DS I +.VERBON +genConf = var: fix (self: targetMachine.config // { + expName = "example"; + unitName = self.expName + "-b" + toString self.blocks; + blocks = var.blocks; + nodes = var.nodes; + cpusPerTask = 1; + tasksPerNode = self.hw.socketsPerNode; +}); +.VERBOFF +.DE +.P +The \fCgenConf\fP function is the central part of the description of the +experiment. Takes as input \fBone\fP configuration from the cartesian +product of +.I varConfig +and returns the complete configuration. In our case, it will be +called 3 times, with the following inputs at each time: +.DS I +.VERBON +{ blocks = 1; nodes = 1; } +{ blocks = 2; nodes = 1; } +{ blocks = 4; nodes = 1; } +.VERBOFF +.DE +.P +The return value can be inspected by calling the function in the +interactive nix repl: +.DS I +.VERBON +nix-repl> genConf { blocks = 2; nodes = 1; } +{ + blocks = 2; + cpusPerTask = 1; + expName = "example"; + hw = { ... }; + march = "skylake-avx512"; + mtune = "skylake-avx512"; + name = "mn4"; + nixPrefix = "/gpfs/projects/bsc15/nix"; + nodes = 1; + sshHost = "mn1"; + tasksPerNode = 2; + unitName = "example-b2"; +} +.VERBOFF +.DE +.P +Some configuration parameters were added by +.I targetMachine.config , +such as the +.I nixPrefix , +.I sshHost +or the +.I hw +attribute set, which are specific for the cluster they experiment is +going to run. Also, the +.I unitName +got assigned the proper name based on the number of blocks, but the +number of tasks per node were assigned based on the hardware description +of the target machine. +.P +By following this rule, the experiments can easily be ported to machines +with other hardware characteristics, and we only need to define the +hardware details once. Then all the experiments will be updated based on +those details. +.H 2 "First steps" +.P +The complete results generally take a long time to be finished, so it is +advisable to design the experiments iteratively, in order to quickly +obtain some feedback. Some recommendations: +.BL +.LI +Start with one unit only. +.LI +Set the number of runs low (say 5) but more than one. +.LI +Use a small problem size, so the execution time is low. +.LI +Set the time limit low, so deadlocks are caught early. +.LE +.P +As soon as the first runs are complete, examine the results and test +that everything looks good. You would likely want to check: +.BL +.LI +The resources where assigned as intended (nodes and CPU affinity). +.LI +No errors or warnings: look at stderr and stdout logs. +.LI +If a deadlock happens, it will run out of the time limit. +.LE +.P +As you gain confidence over that the execution went as planned, begin +increasing the problem size, the number of runs, the time limit and +lastly the number of units. The rationale is that each unit that is +shared among experiments gets assigned the same hash. Therefore, you can +iteratively add more units to an experiment, and if they are already +executed (and the results were generated) is reused. +.TC From 60cab85fc4630afb45dc7e78c23030416686edb5 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 25 Jan 2021 20:02:25 +0100 Subject: [PATCH 462/987] user guide: expand the develop section --- garlic/doc/Makefile | 5 +- garlic/doc/ug.mm | 187 +++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 180 insertions(+), 12 deletions(-) diff --git a/garlic/doc/Makefile b/garlic/doc/Makefile index f2ecc0a..77adcd0 100644 --- a/garlic/doc/Makefile +++ b/garlic/doc/Makefile @@ -1,5 +1,5 @@ all: execution.pdf execution.utf8 execution.ascii pp.pdf pp.utf8 pp.ascii\ - branch.pdf blackbox.pdf + branch.pdf blackbox.pdf ug.mm.pdf TTYOPT=-rPO=4m -rLL=72m PDFOPT=-dpaper=a4 -rPO=4c -rLL=13c @@ -7,6 +7,9 @@ PREPROC=-k -t -p -R blackbox.pdf: blackbox.ms Makefile REFER=ref.i groff -ms $(PREPROC) -dpaper=a4 -rPO=2c -rLL=17c -Tpdf $< > $@ + +%.mm.pdf: %.mm Makefile + groff -mm $(PREPROC) -Tpdf $< > $@ -killall -HUP mupdf %.pdf: %.ms Makefile diff --git a/garlic/doc/ug.mm b/garlic/doc/ug.mm index b0a4c48..de1a558 100644 --- a/garlic/doc/ug.mm +++ b/garlic/doc/ug.mm @@ -1,3 +1,5 @@ +\"Header point size +.ds HP "15 12 12 0 0 0 0 0 0 0 0 0 0 0" .COVER .TL Garlic: User guide @@ -5,29 +7,183 @@ Garlic: User guide .AU "Rodrigo Arias Mallo" .COVEND .H 1 "Overview" -Dependency graph of a complete experiment that produces a figure. Each box -is a derivation and arrows represent \fBbuild dependencies\fP. +.P +The garlic framework is designed to fulfill all the requirements of an +experimenter in all the steps up to publication. The experience gained +while using it suggests that we move along three stages despicted in the +following diagram: .DS CB .PS linewid=0.9; right box "Source" "code" -arrow <-> "Develop" above +arrow "Development" above box "Program" -arrow <-> "Experiment" above +arrow "Experiment" above box "Results" -arrow <-> "Data" "exploration" +arrow "Data" "exploration" box "Figures" .PE .DE -.H 1 "Development" +In the development phase the experimenter changes the source code in +order to introduce new features or fix bugs. Once the program is +considered functional, the next phase is the experimentation, where +several experiment configurations are tested to evaluate the program. It +is common that some problems are spotted during this phase, which lead +the experimenter to go back to the development phase and change the +source code. .P -The development phase consists in creating a functional program by -modifying the source code. This process is generally cyclic, where the -developer needs to compile the program, correct mistakes and debug the -program. +Finally, when the experiment is considered completed, the +experimenter moves to the next phase, which envolves the exploration of +the data generated by the experiment. During this phase, it is common to +generate results in the form of plots or tables which provide a clear +insight in those quantities of interest. It is also common that after +looking at the figures, some changes in the experiment configuration +need to be introduced (or even in the source code of the program). .P -It requires to be running in the target machine. +Therefore, the experimenter may move forward and backwards along three +phases several times. The garlic framework provides support for all the +three stages (with different degrees of madurity). +.H 1 "Development (work in progress)" +.P +During the development phase, a functional program is produced by +modifying its source code. This process is generally cyclic: the +developer needs to compile, debug and correct mistakes. We want to +minimize the delay times, so the programs can be executed as soon as +needed, but under a controlled environment so that the same behavior +occurs during the experimentation phase. +.P +The development phase is typically carried directly in the target +machine, so we need the resources first. +.H 2 "Allocating resources for development" +.P +Our target machine (MareNostrum 4) provides an interactive shell, that +can be requested with the number of computational resources required for +development. +.P +To do so, connect to it and allocate an interactive session: +.DS I +.VERBON +build% ssh target +target% salloc ... +compute% +.VERBOFF +.DE +This operation may take some minutes to complete depending on the load +of the cluster. But once the session is ready, any subsequent execution +will be immediate. +.H 2 "Getting the development tools" +.P +In order to get the same packages provided for the experiments, we can +use the \fInix-develop\fP utility, which creates a namespace where the +required packages are installed. Use the build machine to generate a +develop environment: +.DS I +.VERBON +build% nix-build -A garlic.develop +\&... +build% grep ln result +ln -fs /gpfs/projects/bsc15/nix/...olate/bin/stage1 .nix-develop +.VERBOFF +.DE +Copy the \fIln\fP command and run it in the target machine, in a new +directory used for your program development. The link will be placed in +a hidden file named \fI.nix-develop\fP and will be used to remember your +environment. Several environments can be stored using this method, with +different packages on each. +.P +Now you can access the newly created environment by running: +.DS I +.VERBON +compute% nix-develop +develop% +.VERBOFF +.DE +The spawned shell contains all the packages pre-defined in the +\fIgarlic.develop\fP derivation, and can now be accessed by typing the +name of the commands. +.DS I +.VERBON +develop$ which gcc +/nix/store/azayfhqyg9...s8aqfmy-gcc-wrapper-9.3.0/bin/gcc +develop$ which gdb +/nix/store/1c833b2y8j...pnjn2nv9d46zv44dk-gdb-9.2/bin/gdb +.VERBOFF +.DE +If you need additional packages, you can add them in the +\fIgarlic/index.nix\fP file: +.\" FIXME: Unify garlic.unsafeDevelop in garlic.develop, so we can +.\" specify the packages directly +.DS I +.VERBON +unsafeDevelop = callPackage ./develop/default.nix { + extraInputs = with self; [ + coreutils htop procps-ng vim which strace + tmux gdb kakoune universal-ctags bashInteractive + glibcLocales ncurses git screen curl + # Add more nixpkgs packages here... + bsc.slurm bsc.clangOmpss2 bsc.icc bsc.mcxx bsc.perf + # Add more bscpkgs packages here... + ]; +}; +.VERBOFF +.DE +Then re-execute the steps again, to build the new develop environment. +.H 2 "Execution" +The allocated shell can only execute tasks in the current node, which +may be enough for some tests. To do so, you can directly run your +program as: +.DS I +.VERBON +develop$ ./program +.VERBOFF +.DE +If you need to run a multi-node program, typically using MPI +communications, then you can do so by using srun. Notice that you need +to allocate several nodes when calling salloc previously. The srun +command will execute the given program \fBoutside\fP the develop +environment if executed as-is. So we re-enter the develop environment by +calling nix-develop as a wrapper of the program: +.\" FIXME: wrap srun to reenter the develop environment by its own +.DS I +.VERBON +develop$ srun nix-develop ./program +.VERBOFF +.DE +.H 2 "Debugging" +The debugger can be used to directly execute the program if is executed +in only one node by using: +.DS I +.VERBON +develop$ gdb ./program +.VERBOFF +.DE +Or it can be attached to an already running program by using its pid. +You will need to first connect to the node running it, and run gdb +inside the nix-develop environment. Use squeue to see the compute nodes +running your program: +.DS I +.VERBON +target$ ssh compute +compute$ cd project-develop +compute$ nix-develop +develop$ gdb -p $pid +.VERBOFF +.DE +You can repeat this step in other nodes to control the execution in +multiple nodes. +.P +In those cases where the program crashes before being able to attach the +debugger, you can enable the generation of core dumps: +.DS I +.VERBON +develop$ ulimit -c unlimited +.VERBOFF +.DE +And rerun the program, which will generate a core file that can be +opened by gdb and contains the state of the memory when the crash +happened. Beware that the core dump file can be very large, depending on +the memory used by your program at the crash. .\" =================================================================== .H 1 "Experimentation" The experimentation phase begins with a functional program which is the @@ -178,4 +334,13 @@ lastly the number of units. The rationale is that each unit that is shared among experiments gets assigned the same hash. Therefore, you can iteratively add more units to an experiment, and if they are already executed (and the results were generated) is reused. +.SK +.H 1 "Annex A: Branch name diagram" +.DS CB +.S -2 +.PS 4.6/25.4 +copy "gitbranch.pic" +.PE +.S P +.DE .TC From 3ce0d3934bd8f330ebbd85964a7b1e7a592d44d2 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 26 Jan 2021 12:57:09 +0100 Subject: [PATCH 463/987] user guide: reorder development --- garlic/doc/Makefile | 10 ++- garlic/doc/ug.mm | 183 ++++++++++++++++++++++++++++---------------- 2 files changed, 124 insertions(+), 69 deletions(-) diff --git a/garlic/doc/Makefile b/garlic/doc/Makefile index 77adcd0..91a81f7 100644 --- a/garlic/doc/Makefile +++ b/garlic/doc/Makefile @@ -1,15 +1,19 @@ all: execution.pdf execution.utf8 execution.ascii pp.pdf pp.utf8 pp.ascii\ - branch.pdf blackbox.pdf ug.mm.pdf + branch.pdf blackbox.pdf ug.pdf TTYOPT=-rPO=4m -rLL=72m PDFOPT=-dpaper=a4 -rPO=4c -rLL=13c +#MMOPT=-dpaper=a4 -rpo=5c -rll=13c PREPROC=-k -t -p -R +POSTPROC= +# Embed fonts? +#POSTPROC+=-P -e blackbox.pdf: blackbox.ms Makefile REFER=ref.i groff -ms $(PREPROC) -dpaper=a4 -rPO=2c -rLL=17c -Tpdf $< > $@ -%.mm.pdf: %.mm Makefile - groff -mm $(PREPROC) -Tpdf $< > $@ +ug.pdf: ug.mm Makefile + groff -mm $(PREPROC) $(POSTPROC) -dpaper=a4 -Tpdf $< > $@ -killall -HUP mupdf %.pdf: %.ms Makefile diff --git a/garlic/doc/ug.mm b/garlic/doc/ug.mm index de1a558..0c4e0d6 100644 --- a/garlic/doc/ug.mm +++ b/garlic/doc/ug.mm @@ -1,11 +1,13 @@ \"Header point size .ds HP "15 12 12 0 0 0 0 0 0 0 0 0 0 0" -.COVER -.TL -Garlic: User guide -.AF "Barcelona Supercomputing Center" -.AU "Rodrigo Arias Mallo" -.COVEND +.S 11p 1.3m +.PGFORM 14c 28c 3.5c +.\" .COVER +.\" .TL +.\" Garlic: User guide +.\" .AF "Barcelona Supercomputing Center" +.\" .AU "Rodrigo Arias Mallo" +.\" .COVEND .H 1 "Overview" .P The garlic framework is designed to fulfill all the requirements of an @@ -13,8 +15,9 @@ experimenter in all the steps up to publication. The experience gained while using it suggests that we move along three stages despicted in the following diagram: .DS CB -.PS -linewid=0.9; +.S 9p 10p +.PS 5 +linewid=1; right box "Source" "code" arrow "Development" above @@ -24,6 +27,7 @@ box "Results" arrow "Data" "exploration" box "Figures" .PE +.S P P .DE In the development phase the experimenter changes the source code in order to introduce new features or fix bugs. Once the program is @@ -53,49 +57,94 @@ minimize the delay times, so the programs can be executed as soon as needed, but under a controlled environment so that the same behavior occurs during the experimentation phase. .P -The development phase is typically carried directly in the target -machine, so we need the resources first. -.H 2 "Allocating resources for development" -.P -Our target machine (MareNostrum 4) provides an interactive shell, that -can be requested with the number of computational resources required for -development. -.P -To do so, connect to it and allocate an interactive session: -.DS I -.VERBON -build% ssh target -target% salloc ... -compute% -.VERBOFF -.DE -This operation may take some minutes to complete depending on the load -of the cluster. But once the session is ready, any subsequent execution -will be immediate. +In particular, we want that several experimenters can reproduce the +the same development environment so they can debug each other programs +when reporting bugs. Therefore, the environment must be carefully +controlled to avoid non-reproducible scenarios. +.\" =================================================================== .H 2 "Getting the development tools" .P -In order to get the same packages provided for the experiments, we can -use the \fInix-develop\fP utility, which creates a namespace where the -required packages are installed. Use the build machine to generate a -develop environment: +To create a development +environment, first copy or download the sources of your program (not the +dependencies) in a new directory placed in the target machine +(MareNostrum\~4). +.P +The default environment contains packages commonly used to develop +programs, listed in the \fIgarlic/index.nix\fP file: +.\" FIXME: Unify garlic.unsafeDevelop in garlic.develop, so we can +.\" specify the packages directly +.DS I +.VERBON +develop = let + packages = with self; [ + coreutils htop procps-ng vim which strace + tmux gdb kakoune universal-ctags bashInteractive + glibcLocales ncurses git screen curl + # Add more nixpkgs packages here... + ] ++ with bsc; [ + slurm clangOmpss2 icc mcxx perf + # Add more bsc packages here... + ]; + ... +.VERBOFF +.DE +If you need additional packages, add them to the list, so that they +become available in the environment. Those may include any dependency +required to build your program. +.P +Then use the build machine (xeon07) to build the +.I garlic.develop +derivation: .DS I .VERBON build% nix-build -A garlic.develop \&... build% grep ln result -ln -fs /gpfs/projects/bsc15/nix/...olate/bin/stage1 .nix-develop +ln -fs /gpfs/projects/.../bin/stage1 .nix-develop .VERBOFF .DE -Copy the \fIln\fP command and run it in the target machine, in a new -directory used for your program development. The link will be placed in -a hidden file named \fI.nix-develop\fP and will be used to remember your -environment. Several environments can be stored using this method, with -different packages on each. +Copy the \fIln\fP command and run it in the target machine +(MareNostrum\~4), in the new directory used for your program +development. The link will be created as a hidden file named +\fI.nix-develop\fP and will be used to remember your environment. +Several environments can be stored using this method, with different +packages in different directories. You will need to rebuild the +.I garlic.develop +derivation and update the +.I .nix-develop +link after the package list changes to update the environment. Once the +environment link is created, there is no need to repeat this steps again. .P -Now you can access the newly created environment by running: +Before entering the environment, you will need to access the required +resources for your progam, which may include several compute nodes. +.\" =================================================================== +.H 2 "Allocating resources for development" +.P +Our target machine (MareNostrum 4) provides an interactive shell, that +can be requested with the number of computational resources required for +development. To do so, connect to the login node and allocate an +interactive session: .DS I .VERBON -compute% nix-develop +% ssh mn1 +login% salloc ... +target% +.VERBOFF +.DE +This operation may take some minutes to complete depending on the load +of the cluster. But once the session is ready, any subsequent execution +of programs will be immediate. +.\" =================================================================== +.H 2 "Accessing the developement environment" +.P +The utility program \fInix-develop\fP has been designed to access the +development environment of the current directory, by looking for the +\fI.nix-develop\fP file. It creates a namespace where the required +packages are installed and ready to be used. Now you can access the +newly created environment by running: +.DS I +.VERBON +target% nix-develop develop% .VERBOFF .DE @@ -104,31 +153,32 @@ The spawned shell contains all the packages pre-defined in the name of the commands. .DS I .VERBON -develop$ which gcc +develop% which gcc /nix/store/azayfhqyg9...s8aqfmy-gcc-wrapper-9.3.0/bin/gcc -develop$ which gdb +develop% which gdb /nix/store/1c833b2y8j...pnjn2nv9d46zv44dk-gdb-9.2/bin/gdb .VERBOFF .DE If you need additional packages, you can add them in the -\fIgarlic/index.nix\fP file: -.\" FIXME: Unify garlic.unsafeDevelop in garlic.develop, so we can -.\" specify the packages directly +\fIgarlic/index.nix\fP file as mentioned previously. To keep the +same current resources, so you don't need to wait again for the +resources to be allocated, exit only from the development shell: .DS I .VERBON -unsafeDevelop = callPackage ./develop/default.nix { - extraInputs = with self; [ - coreutils htop procps-ng vim which strace - tmux gdb kakoune universal-ctags bashInteractive - glibcLocales ncurses git screen curl - # Add more nixpkgs packages here... - bsc.slurm bsc.clangOmpss2 bsc.icc bsc.mcxx bsc.perf - # Add more bscpkgs packages here... - ]; -}; +develop% exit +target% .VERBOFF .DE -Then re-execute the steps again, to build the new develop environment. +Then update the +.I .nix-develop +link and enter into the new develop environment: +.DS I +.VERBON +target% nix-develop +develop% +.VERBOFF +.DE +.\" =================================================================== .H 2 "Execution" The allocated shell can only execute tasks in the current node, which may be enough for some tests. To do so, you can directly run your @@ -141,7 +191,7 @@ develop$ ./program If you need to run a multi-node program, typically using MPI communications, then you can do so by using srun. Notice that you need to allocate several nodes when calling salloc previously. The srun -command will execute the given program \fBoutside\fP the develop +command will execute the given program \fBoutside\fP the development environment if executed as-is. So we re-enter the develop environment by calling nix-develop as a wrapper of the program: .\" FIXME: wrap srun to reenter the develop environment by its own @@ -158,23 +208,24 @@ in only one node by using: develop$ gdb ./program .VERBOFF .DE -Or it can be attached to an already running program by using its pid. -You will need to first connect to the node running it, and run gdb -inside the nix-develop environment. Use squeue to see the compute nodes -running your program: +Or it can be attached to an already running program by using its PID. +You will need to first connect to the node running it (say target2), and +run gdb inside the nix-develop environment. Use +.I squeue +to see the compute nodes running your program: .DS I .VERBON -target$ ssh compute -compute$ cd project-develop -compute$ nix-develop +login$ ssh target2 +target2$ cd project-develop +target2$ nix-develop develop$ gdb -p $pid .VERBOFF .DE -You can repeat this step in other nodes to control the execution in -multiple nodes. +You can repeat this step to control the execution of programs running in +different nodes simultaneously. .P In those cases where the program crashes before being able to attach the -debugger, you can enable the generation of core dumps: +debugger, enable the generation of core dumps: .DS I .VERBON develop$ ulimit -c unlimited From 39c360b41316ad59b2778128193bf53792ffe13b Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 26 Jan 2021 22:44:15 +0100 Subject: [PATCH 464/987] user guide: add readme and branch name conventions --- garlic/doc/Makefile | 7 +- garlic/doc/ug.mm | 496 +++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 477 insertions(+), 26 deletions(-) diff --git a/garlic/doc/Makefile b/garlic/doc/Makefile index 91a81f7..6d320b7 100644 --- a/garlic/doc/Makefile +++ b/garlic/doc/Makefile @@ -6,6 +6,8 @@ PDFOPT=-dpaper=a4 -rPO=4c -rLL=13c #MMOPT=-dpaper=a4 -rpo=5c -rll=13c PREPROC=-k -t -p -R POSTPROC= +REGISTERS=-dcurdate="`date '+%Y-%m-%d'`" +REGISTERS+=-dgitcommit="`git rev-parse HEAD`" # Embed fonts? #POSTPROC+=-P -e @@ -13,9 +15,12 @@ blackbox.pdf: blackbox.ms Makefile REFER=ref.i groff -ms $(PREPROC) -dpaper=a4 -rPO=2c -rLL=17c -Tpdf $< > $@ ug.pdf: ug.mm Makefile - groff -mm $(PREPROC) $(POSTPROC) -dpaper=a4 -Tpdf $< > $@ + groff -mm $(PREPROC) $(POSTPROC) $(REGISTERS) -dpaper=a4 -Tpdf $< > $@ -killall -HUP mupdf +ug.xhtml: ug.mm Makefile + groff -mm $(PREPROC) $(POSTPROC) -Txhtml $< > $@ + %.pdf: %.ms Makefile REFER=ref.i groff -ms $(PREPROC) $(PDFOPT) -Tpdf $< > $@ -killall -HUP mupdf diff --git a/garlic/doc/ug.mm b/garlic/doc/ug.mm index 0c4e0d6..b5fa9e2 100644 --- a/garlic/doc/ug.mm +++ b/garlic/doc/ug.mm @@ -1,13 +1,375 @@ -\"Header point size -.ds HP "15 12 12 0 0 0 0 0 0 0 0 0 0 0" +.ds HP "21 16 13 12 0 0 0 0 0 0 0 0 0 0" +.nr Ej 1 +.nr Hb 3 +.nr Hs 3 .S 11p 1.3m -.PGFORM 14c 28c 3.5c -.\" .COVER -.\" .TL -.\" Garlic: User guide -.\" .AF "Barcelona Supercomputing Center" -.\" .AU "Rodrigo Arias Mallo" -.\" .COVEND +.PH "''''" +.PF "''''" +.PGFORM 14c 29c 3.5c +.\".COVER +.\".de cov@print-date +.\".DS C +.\"\\*[cov*new-date] +.\".DE +.\".. +.\".TL +.\".ps 20 +.\"Garlic: User guide +.\".AF "Barcelona Supercomputing Center" +.\".AU "Rodrigo Arias Mallo" +.\".COVEND +\& +.SP 3c +.DS C +.S 25 1 +Garlic: User guide +.S P P +.SP 1v +.S 12 1.5m +Rodrigo Arias Mallo +.I "Barcelona Supercomputing Center" +\*[curdate] +.S P P +.SP 15c +.S 9 1.5m +Git commit hash +\f(CW\*[gitcommit]\fP +.S P P +.DE +.bp +.PF "''%''" +.\" =================================================================== +.H 1 "Introduction" +.P +The garlic framework provides all the tools to experiment with HPC +programs and produce publication articles. +.\" =================================================================== +.H 2 "Machines and clusters" +Our current setup employs multiple machines to build and execute the +experiments. Each cluster and node has it's own name and will be +different in other clusters. Therefore, instead of using the names of +the machines we use machine classes to generalize our setup. Those +machine clases currently correspond to a physical machine each: +.BL +.LI +.B Builder +(xeon07): runs the nix-daemon and performs the builds in /nix. Requires +root access to setup de nix-daemon. +.LI +.B Target +(MareNostrum 4 compute nodes): the nodes where the experiments +are executed. It doesn't need to have /nix installed or root access. +.LI +.B Login +(MareNostrum 4 login nodes): used to allocate resources and run jobs. It +doesn't need to have /nix installed or root access. +.LI +.B Laptop +(where the keyboard is attached): used to connect to the other machines. +No root access is required or /nix, but needs to be able to connect to +the builder. +.LE +.\".P +.\"The specific details of each machine class can be summarized in the +.\"following table: +.\".TS +.\"center; +.\"lB cB cB cB cB lB lB lB +.\"lB c c c c l l l. +.\"_ +.\"Class daemon store root dl cpus space cluster node +.\"_ +.\"laptop no no no yes low 1GB - - +.\"build yes yes yes yes high 50GB Cobi xeon07 +.\"login no yes no no low MN4 mn1 +.\"target no yes no no high MN4 compute nodes +.\"_ +.\".TE +.P +The machines don't need to be different of each others, as one machine +can implement several classes. For example the laptop can act as the +builder too but is not recommended. Or the login machine can also +perform the builds, but is not possible yet in our setup. +.\" =================================================================== +.H 2 "Properties" +.P +We can define the following three properties: +.BL 1m +.LI +R0: \fBSame\fP people on the \fBsame\fP machine obtain the same result +.LI +R1: \fBDifferent\fP people on the \fBsame\fP machine obtain the same result +.LI +R2: \fBDifferent\fP people on a \fBdifferent\fP machine obtain the same result +.LE +.P +The garlic framework distinguishes two classes of results: the result of +building a derivation, which are usually binary programs, and the +results of the execution of an experiment. +.P +Building a derivation is usually R2, the result is bit-by-bit identical +excepting some rare cases. One example is that during the build process, +a directory is listed by the order of the inodes, giving a random order +which is different between builds. These problems are tracked by the +.I https://r13y.com/ +project. In the minimal installation, less than 1% of the derivations +don't achieve the R2 property. +.P +On the other hand, the results of the experiments are not yet R2, as +they are tied to the target machine. +.\" =================================================================== +.H 1 "Preliminary steps" +The peculiarities of our setup require that users perform some actions +to use the garlic framework. The content of this section is only +intended for the users of our machines, but can serve as reference in +other machines. +.P +The names of the machine classes are used in the command line prompt +instead of the actual name of the machine, to indicate that the command +needs to be executed in the stated machine class, for example: +.DS I +.VERBON +builder% echo hi +hi +.VERBOFF +.DE +When the machine class is not important, it is ignored and only the +"\f(CW%\fP" prompt appears. +.\" =================================================================== +.H 2 "Configure your laptop" +.P +To easily connect to the builder (xeon07) in one step, configure the SSH +client to perform a jump over the Cobi login node. The +.I ProxyJump +directive is only available in version 7.3 and upwards. Add the +following lines in the \f(CW\(ti/.ssh/config\fP file of your laptop: +.DS I +.VERBON +Host cobi + HostName ssflogin.bsc.es + User your-username-here + +Host xeon07 + ProxyJump cobi + HostName xeon07 + User your-username-here +.VERBOFF +.DE +You should be able to connect to the builder typing: +.DS I +.VERBON +laptop$ ssh xeon07 +.VERBOFF +.DE +To spot any problems try with the \f(CW-v\fP option to enable verbose +output. +.\" =================================================================== +.H 2 "Configure the builder (xeon07)" +.P +In order to use nix you would need to be able to download the sources +from Internet. Usually the download requires the ports 22, 80 and 443 +to be open for outgoing traffic. +.P +Check that you have network access in +xeon07 provided by the environment variables \fIhttp_proxy\fP and +\fIhttps_proxy\fP. Try to fetch a webpage with curl, to ensure the proxy +is working: +.DS I +.VERBON + xeon07$ curl x.com + x +.VERBOFF +.DE +.\" =================================================================== +.H 3 "Create a new SSH key" +.P +There is one DSA key in your current home called "cluster" that is no +longer supported in recent SSH versions and should not be used. Before +removing it, create a new one without password protection leaving the +passphrase empty (in case that you don't have one already created) by +running: +.DS I +.VERBON +xeon07$ ssh-keygen +Generating public/private rsa key pair. +Enter file in which to save the key (\(ti/.ssh/id_rsa): +Enter passphrase (empty for no passphrase): +Enter same passphrase again: +Your identification has been saved in \(ti/.ssh/id_rsa. +Your public key has been saved in \(ti/.ssh/id_rsa.pub. +\&... +.VERBOFF +.DE +By default it will create the public key at \f(CW\(ti/.ssh/id_rsa.pub\fP. +Then add the newly created key to the authorized keys, so you can +connect to other nodes of the Cobi cluster: +.DS I +.VERBON +xeon07$ cat \(ti/.ssh/id_rsa.pub >> \(ti/.ssh/authorized_keys +.VERBOFF +.DE +Finally, delete the old "cluster" key: +.DS I +.VERBON +xeon07$ rm \(ti/.ssh/cluster \(ti/.ssh/cluster.pub +.VERBOFF +.DE +And remove the section in the configuration \f(CW\(ti/.ssh/config\fP +where the key was assigned to be used in all hosts along with the +\f(CWStrictHostKeyChecking=no\fP option. Remove the following lines (if +they exist): +.DS I +.VERBON +Host * + IdentityFile \(ti/.ssh/cluster + StrictHostKeyChecking=no +.VERBOFF +.DE +By default, the SSH client already searchs for a keypair called +\f(CW\(ti/.ssh/id_rsa\fP and \f(CW\(ti/.ssh/id_rsa.pub\fP, so there is +no need to manually specify them. +.P +You should be able to access the login node with your new key by using: +.DS I +.VERBON +xeon07$ ssh ssfhead +.VERBOFF +.DE +.\" =================================================================== +.H 3 "Authorize access to the repository" +.P +The sources of BSC packages are usually downloaded directly from the PM +git server, so you must be able to access all repositories without a +password prompt. +.P +Most repositories are open to read for logged in users, but there are +some exceptions (for example the nanos6 repository) where you must have +explicitly granted read access. +.P +Copy the contents of your public SSH key in \f(CW\(ti/.ssh/id_rsa.pub\fP +and paste it in GitLab at +.DS I +.VERBON +https://pm.bsc.es/gitlab/profile/keys +.VERBOFF +.DE +Finally verify the SSH connection to the server works and you get a +greeting from the GitLab server with your username: +.DS I +.VERBON +xeon07$ ssh git@bscpm03.bsc.es +PTY allocation request failed on channel 0 +Welcome to GitLab, @rarias! +Connection to bscpm03.bsc.es closed. +.VERBOFF +.DE +Verify that you can access the nanos6 repository (otherwise you +first need to ask to be granted read access), at: +.DS I +.VERBON +https://pm.bsc.es/gitlab/nanos6/nanos6 +.VERBOFF +.DE +Finally, you should be able to download the nanos6 git +repository without any password interaction by running: +.DS I +.VERBON +xeon07$ git clone git@bscpm03.bsc.es:nanos6/nanos6.git +.VERBOFF +.DE +Which will create the nanos6 directory. +.\" =================================================================== +.H 3 "Authorize access to MareNostrum 4" +You will also need to access MareNostrum 4 from the xeon07 machine, in +order to run experiments. Add the following lines to the +\f(CW\(ti/.ssh/config\fP file and set your user name: +.DS I +.VERBON +Host mn0 mn1 mn2 + User +.VERBOFF +.DE +Then copy your SSH key to MareNostrum 4 (it will ask you for your login +password): +.DS I +.VERBON +xeon07$ ssh-copy-id -i \(ti/.ssh/id_rsa.pub mn1 +.VERBOFF +.DE +Finally, ensure that you can connect without a password: +.DS I +.VERBON +xeon07$ ssh mn1 +\&... +login1$ +.VERBOFF +.DE +.\" =================================================================== +.H 3 "Clone the bscpkgs repository" +.P +Once you have Internet and you have granted access to the PM GitLab +repositories you can begin building software with nix. First ensure +that the nix binaries are available from your shell in xeon07: +.DS I +.VERBON +xeon07$ nix --version +nix (Nix) 2.3.6 +.VERBOFF +.DE +Now you are ready to build and install packages with nix. Clone the +bscpkgs repository: +.DS I +.VERBON +xeon07$ git clone git@bscpm03.bsc.es:rarias/bscpkgs.git +.VERBOFF +.DE +Nix looks in the current folder for a file named \f(CWdefault.nix\fP for +packages, so go to the bscpkgs directory: +.DS I +.VERBON +xeon07$ cd bscpkgs +.VERBOFF +.DE +Now you should be able to build nanos6 (which is probably already +compiled): +.DS I +.VERBON +xeon07$ nix-build -A bsc.nanos6 +\&... +/nix/store/...2cm1ldx9smb552sf6r1-nanos6-2.4-6f10a32 +.VERBOFF +.DE +The installation is placed in the nix store (with the path stated in +the last line of the build process), with the \f(CWresult\fP symbolic +link pointing to the same location: +.DS I +.VERBON +xeon07$ readlink result +/nix/store/...2cm1ldx9smb552sf6r1-nanos6-2.4-6f10a32 +.VERBOFF +.DE +.\" =================================================================== +.H 2 "Configure the login and target (MareNostrum 4)" +.P +In order to execute the programs in MareNostrum 4, you first need load +some utilities in the PATH. Add to the end of the file +\f(CW\(ti/.bashrc\fP in MareNostrum 4 the following line: +.DS I +.VERBON +export PATH=/gpfs/projects/bsc15/nix/bin:$PATH +.VERBOFF +.DE +Then logout and login again (our source the \f(CW\(ti/.bashrc\fP file) +and check that now you have the \f(CWnix-develop\fP command available: +.DS I +.VERBON +login1$ which nix-develop +/gpfs/projects/bsc15/nix/bin/nix-develop +.VERBOFF +.DE +The new utilities are available both in the login nodes and in the +compute (target) nodes, as they share the file system over the network. +.\" =================================================================== .H 1 "Overview" .P The garlic framework is designed to fulfill all the requirements of an @@ -57,10 +419,18 @@ minimize the delay times, so the programs can be executed as soon as needed, but under a controlled environment so that the same behavior occurs during the experimentation phase. .P -In particular, we want that several experimenters can reproduce the +In particular, we want that several developers can reproduce the the same development environment so they can debug each other programs when reporting bugs. Therefore, the environment must be carefully controlled to avoid non-reproducible scenarios. +.P +The current development environment provides an isolated shell with a +clean environment, which runs in a new mount namespace where access to +the filesystem is restricted. Only the project directory and the nix +store are available (with some other exceptions), to ensure that you +cannot accidentally link with the wrong library or modify the build +process with a forgotten environment variable in the \f(CW\(ti/.bashrc\fP +file. .\" =================================================================== .H 2 "Getting the development tools" .P @@ -76,13 +446,14 @@ programs, listed in the \fIgarlic/index.nix\fP file: .DS I .VERBON develop = let - packages = with self; [ + commonPackages = with self; [ coreutils htop procps-ng vim which strace tmux gdb kakoune universal-ctags bashInteractive glibcLocales ncurses git screen curl # Add more nixpkgs packages here... - ] ++ with bsc; [ - slurm clangOmpss2 icc mcxx perf + ]; + bscPackages = with bsc; [ + slurm clangOmpss2 icc mcxx perf tampi impi # Add more bsc packages here... ]; ... @@ -104,19 +475,20 @@ ln -fs /gpfs/projects/.../bin/stage1 .nix-develop .VERBOFF .DE Copy the \fIln\fP command and run it in the target machine -(MareNostrum\~4), in the new directory used for your program -development. The link will be created as a hidden file named -\fI.nix-develop\fP and will be used to remember your environment. -Several environments can be stored using this method, with different -packages in different directories. You will need to rebuild the +(MareNostrum\~4), inside the new directory used for your program +development, to create the link \fI.nix-develop\fP (which is used to +remember your environment). Several environments can be stored in +different directories using this method, with different packages in each +environment. You will need +to rebuild the .I garlic.develop derivation and update the .I .nix-develop -link after the package list changes to update the environment. Once the -environment link is created, there is no need to repeat this steps again. +link after the package list is changed. Once the +environment link is created, there is no need to repeat these steps again. .P Before entering the environment, you will need to access the required -resources for your progam, which may include several compute nodes. +resources for your program, which may include several compute nodes. .\" =================================================================== .H 2 "Allocating resources for development" .P @@ -200,6 +572,7 @@ calling nix-develop as a wrapper of the program: develop$ srun nix-develop ./program .VERBOFF .DE +.\" =================================================================== .H 2 "Debugging" The debugger can be used to directly execute the program if is executed in only one node by using: @@ -235,6 +608,79 @@ And rerun the program, which will generate a core file that can be opened by gdb and contains the state of the memory when the crash happened. Beware that the core dump file can be very large, depending on the memory used by your program at the crash. +.H 2 "Git branch name convention" +.P +The garlic benchmark imposes a set of requirements to be meet for each +application in order to coordinate the execution of the benchmark and +the gathering process of the results. +.P +Each application must be available in a git repository so it can be +included into the garlic benchmark. The different combinations of +programming models and communication schemes should be each placed in +one git branch, which are referred to as \fIbenchmark branches\fP. At +least one benchmark branch should exist and they all must begin with the +prefix \f(CWgarlic/\fP (other branches will be ignored). +.P +The branch name is formed by adding keywords separated by the "+" +character. The keywords must follow the given order and can only +appear zero or once each. At least one keyword must be included. The +following keywords are available: +.LB 12 2 0 0 +.LI \f(CWmpi\fP +A significant fraction of the communications uses only the standard MPI +(without extensions like TAMPI). +.LI \f(CWtampi\fP +A significant fraction of the communications uses TAMPI. +.LI \f(CWsend\fP +A significant part of the MPI communication uses the blocking family of +methods (MPI_Send, MPI_Recv, MPI_Gather...). +.LI \f(CWisend\fP +A significant part of the MPI communication uses the non-blocking family +of methods (MPI_Isend, MPI_Irecv, MPI_Igather...). +.LI \f(CWrma\fP +A significant part of the MPI communication uses remote memory access +(one-sided) methods (MPI_Get, MPI_Put...). +.LI \f(CWseq\fP +The complete execution is sequential in each process (one thread per +process). +.LI \f(CWomp\fP +A significant fraction of the execution uses the OpenMP programming +model. +.LI \f(CWoss\fP +A significant fraction of the execution uses the OmpSs-2 programming +model. +.LI \f(CWtask\fP +A significant part of the execution involves the use of the tasking +model. +.LI \f(CWtaskfor\fP +A significant part of the execution uses the taskfor construct. +.LI \f(CWfork\fP +A significant part of the execution uses the fork-join model (including +hybrid programming techniques with parallel computations and sequential +communications). +.LI \f(CWsimd\fP +A significant part of the computation has been optimized to use SIMD +instructions. +.LE +.P +In the \fBAppendix A\fP there is a flowchart to help the decision +process of the branch name. +.P +Additional user defined keywords may be added at the end using the +separator "+" as well. User keywords must consist of capital +alphanumeric characters only and be kept short. These additional +keywords must be different (case insensitive) to the already defined +above. Some examples: +.DS I +.VERBON +garlic/mpi+send+seq +garlic/mpi+send+omp+fork +garlic/mpi+isend+oss+task +garlic/tampi+isend+oss+task +garlic/tampi+isend+oss+task+COLOR +garlic/tampi+isend+oss+task+COLOR+BTREE +.VERBOFF +.DE .\" =================================================================== .H 1 "Experimentation" The experimentation phase begins with a functional program which is the @@ -386,12 +832,12 @@ shared among experiments gets assigned the same hash. Therefore, you can iteratively add more units to an experiment, and if they are already executed (and the results were generated) is reused. .SK -.H 1 "Annex A: Branch name diagram" +.APP "" "Branch name diagram" .DS CB -.S -2 -.PS 4.6/25.4 +.S -3 10 +.PS 4.4/25.4 copy "gitbranch.pic" .PE -.S P +.S P P .DE .TC From edd71815eb4e18be5806e04906f7d8debeaa05bb Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 8 Feb 2021 18:49:56 +0100 Subject: [PATCH 465/987] pp: fix code block for html --- garlic/doc/pp.ms | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/garlic/doc/pp.ms b/garlic/doc/pp.ms index 1bda461..700057a 100644 --- a/garlic/doc/pp.ms +++ b/garlic/doc/pp.ms @@ -52,22 +52,23 @@ Results The results are generated in the same .I "target" machine where the experiment is executed and are stored in the garlic -.I out +\fCout\fP directory, organized into a tree structure following the experiment name, the unit name and the run number (governed by the .I control stage): -.QS -.CW - |-- 6lp88vlj7m8hvvhpfz25p5mvvg7ycflb-experiment - | |-- 8lpmmfix52a8v7kfzkzih655awchl9f1-unit - | | |-- 1 - | | | |-- stderr.log - | | | |-- stdout.log - | | | |-- ... - | | |-- 2 - ... -.QE +.DS L +\fC +|-- 6lp88vlj7m8hvvhpfz25p5mvvg7ycflb-experiment +| |-- 8lpmmfix52a8v7kfzkzih655awchl9f1-unit +| | |-- 1 +| | | |-- stderr.log +| | | |-- stdout.log +| | | |-- ... +| | |-- 2 +\&... +\fP +.DE In order to provide an easier access to the results, an index is also created by taking the .I expName From 042876a287f74e0aa0b29c798e29d9c3650eccda Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 8 Feb 2021 18:53:10 +0100 Subject: [PATCH 466/987] user guide: generate html with css --- garlic/doc/.gitignore | 1 + garlic/doc/Makefile | 5 +++-- garlic/doc/s.css | 19 +++++++++++++++++++ 3 files changed, 23 insertions(+), 2 deletions(-) create mode 100644 garlic/doc/s.css diff --git a/garlic/doc/.gitignore b/garlic/doc/.gitignore index b30e586..6d3a60e 100644 --- a/garlic/doc/.gitignore +++ b/garlic/doc/.gitignore @@ -2,3 +2,4 @@ *.ascii *.html *.pdf +grohtml* diff --git a/garlic/doc/Makefile b/garlic/doc/Makefile index 6d320b7..2831ca6 100644 --- a/garlic/doc/Makefile +++ b/garlic/doc/Makefile @@ -18,8 +18,9 @@ ug.pdf: ug.mm Makefile groff -mm $(PREPROC) $(POSTPROC) $(REGISTERS) -dpaper=a4 -Tpdf $< > $@ -killall -HUP mupdf -ug.xhtml: ug.mm Makefile - groff -mm $(PREPROC) $(POSTPROC) -Txhtml $< > $@ +%.html: %.ms Makefile + REFER=ref.i groff -ms $(PREPROC) $(POSTPROC) $(REGISTERS) -Thtml $< > $@ + sed -i '/<\/head>/i' $@ %.pdf: %.ms Makefile REFER=ref.i groff -ms $(PREPROC) $(PDFOPT) -Tpdf $< > $@ diff --git a/garlic/doc/s.css b/garlic/doc/s.css new file mode 100644 index 0000000..324f1ce --- /dev/null +++ b/garlic/doc/s.css @@ -0,0 +1,19 @@ +html { + line-height: 1.6; + margin-bottom: 50px; + padding-bottom: 80px; +} + +body { + max-width: 700px; + text-align: justify; + margin:0 auto; +} + +pre { + overflow: auto; + display: block; + padding: 3px 3px; + line-height: 1.4; + background-color: #eeeeee; +} From 4d626bff97f0840b7f353b5e3a7e09a82f7a57bd Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 8 Feb 2021 18:53:55 +0100 Subject: [PATCH 467/987] user guide: test ms macros --- garlic/doc/ug.ms | 846 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 846 insertions(+) create mode 100644 garlic/doc/ug.ms diff --git a/garlic/doc/ug.ms b/garlic/doc/ug.ms new file mode 100644 index 0000000..a9fffaf --- /dev/null +++ b/garlic/doc/ug.ms @@ -0,0 +1,846 @@ +.ds HP "21 16 13 12 0 0 0 0 0 0 0 0 0 0" +.nr Ej 1 +.nr Hb 3 +.nr Hs 3 +.S 11p 1.3m +.PH "''''" +.PF "''''" +.PGFORM 14c 29c 3.5c +.\".COVER +.\".de cov@print-date +.\".DS C +.\"\\*[cov*new-date] +.\".DE +.\".. +.\".TL +.\".ps 20 +.\"Garlic: User guide +.\".AF "Barcelona Supercomputing Center" +.\".AU "Rodrigo Arias Mallo" +.\".COVEND +\& +.SP 3c +.DS C +.S 25 1 +Garlic: User guide +.S P P +.SP 1v +.S 12 1.5m +Rodrigo Arias Mallo +.I "Barcelona Supercomputing Center" +\*[curdate] +.S P P +.SP 15c +.S 9 1.5m +Git commit hash +\f(CW\*[gitcommit]\fP +.S P P +.DE +.bp +.PF "''%''" +.\" =================================================================== +.NH 1 +Introduction +.PP +The garlic framework provides all the tools to experiment with HPC +programs and produce publication articles. +.\" =================================================================== +.NH 2 +Machines and clusters +.PP +Our current setup employs multiple machines to build and execute the +experiments. Each cluster and node has it's own name and will be +different in other clusters. Therefore, instead of using the names of +the machines we use machine classes to generalize our setup. Those +machine clases currently correspond to a physical machine each: +.BL +.LI +.B Builder +(xeon07): runs the nix-daemon and performs the builds in /nix. Requires +root access to setup de nix-daemon. +.LI +.B Target +(MareNostrum 4 compute nodes): the nodes where the experiments +are executed. It doesn't need to have /nix installed or root access. +.LI +.B Login +(MareNostrum 4 login nodes): used to allocate resources and run jobs. It +doesn't need to have /nix installed or root access. +.LI +.B Laptop +(where the keyboard is attached): used to connect to the other machines. +No root access is required or /nix, but needs to be able to connect to +the builder. +.LE +.\".P +.\"The specific details of each machine class can be summarized in the +.\"following table: +.\".TS +.\"center; +.\"lB cB cB cB cB lB lB lB +.\"lB c c c c l l l. +.\"_ +.\"Class daemon store root dl cpus space cluster node +.\"_ +.\"laptop no no no yes low 1GB - - +.\"build yes yes yes yes high 50GB Cobi xeon07 +.\"login no yes no no low MN4 mn1 +.\"target no yes no no high MN4 compute nodes +.\"_ +.\".TE +.PP +The machines don't need to be different of each others, as one machine +can implement several classes. For example the laptop can act as the +builder too but is not recommended. Or the login machine can also +perform the builds, but is not possible yet in our setup. +.\" =================================================================== +.H 2 "Properties" +.PP +We can define the following three properties: +.BL 1m +.LI +R0: \fBSame\fP people on the \fBsame\fP machine obtain the same result +.LI +R1: \fBDifferent\fP people on the \fBsame\fP machine obtain the same result +.LI +R2: \fBDifferent\fP people on a \fBdifferent\fP machine obtain the same result +.LE +.PP +The garlic framework distinguishes two classes of results: the result of +building a derivation, which are usually binary programs, and the +results of the execution of an experiment. +.PP +Building a derivation is usually R2, the result is bit-by-bit identical +excepting some rare cases. One example is that during the build process, +a directory is listed by the order of the inodes, giving a random order +which is different between builds. These problems are tracked by the +.I https://r13y.com/ +project. In the minimal installation, less than 1% of the derivations +don't achieve the R2 property. +.PP +On the other hand, the results of the experiments are not yet R2, as +they are tied to the target machine. +.\" =================================================================== +.H 1 "Preliminary steps" +The peculiarities of our setup require that users perform some actions +to use the garlic framework. The content of this section is only +intended for the users of our machines, but can serve as reference in +other machines. +.PP +The names of the machine classes are used in the command line prompt +instead of the actual name of the machine, to indicate that the command +needs to be executed in the stated machine class, for example: +.DS I +.VERBON +builder% echo hi +hi +.VERBOFF +.DE +When the machine class is not important, it is ignored and only the +"\f(CW%\fP" prompt appears. +.\" =================================================================== +.H 2 "Configure your laptop" +.PP +To easily connect to the builder (xeon07) in one step, configure the SSH +client to perform a jump over the Cobi login node. The +.I ProxyJump +directive is only available in version 7.3 and upwards. Add the +following lines in the \f(CW\(ti/.ssh/config\fP file of your laptop: +.DS L +\fC +Host cobi + HostName ssflogin.bsc.es + User your-username-here + +Host xeon07 + ProxyJump cobi + HostName xeon07 + User your-username-here +\fP +.DE +You should be able to connect to the builder typing: +.DS I +.VERBON +laptop$ ssh xeon07 +.VERBOFF +.DE +To spot any problems try with the \f(CW-v\fP option to enable verbose +output. +.\" =================================================================== +.H 2 "Configure the builder (xeon07)" +.PP +In order to use nix you would need to be able to download the sources +from Internet. Usually the download requires the ports 22, 80 and 443 +to be open for outgoing traffic. +.PP +Check that you have network access in +xeon07 provided by the environment variables \fIhttp_proxy\fP and +\fIhttps_proxy\fP. Try to fetch a webpage with curl, to ensure the proxy +is working: +.DS I +.VERBON + xeon07$ curl x.com + x +.VERBOFF +.DE +.\" =================================================================== +.H 3 "Create a new SSH key" +.PP +There is one DSA key in your current home called "cluster" that is no +longer supported in recent SSH versions and should not be used. Before +removing it, create a new one without password protection leaving the +passphrase empty (in case that you don't have one already created) by +running: +.DS I +.VERBON +xeon07$ ssh-keygen +Generating public/private rsa key pair. +Enter file in which to save the key (\(ti/.ssh/id_rsa): +Enter passphrase (empty for no passphrase): +Enter same passphrase again: +Your identification has been saved in \(ti/.ssh/id_rsa. +Your public key has been saved in \(ti/.ssh/id_rsa.pub. +\&... +.VERBOFF +.DE +By default it will create the public key at \f(CW\(ti/.ssh/id_rsa.pub\fP. +Then add the newly created key to the authorized keys, so you can +connect to other nodes of the Cobi cluster: +.DS I +.VERBON +xeon07$ cat \(ti/.ssh/id_rsa.pub >> \(ti/.ssh/authorized_keys +.VERBOFF +.DE +Finally, delete the old "cluster" key: +.DS I +.VERBON +xeon07$ rm \(ti/.ssh/cluster \(ti/.ssh/cluster.pub +.VERBOFF +.DE +And remove the section in the configuration \f(CW\(ti/.ssh/config\fP +where the key was assigned to be used in all hosts along with the +\f(CWStrictHostKeyChecking=no\fP option. Remove the following lines (if +they exist): +.DS I +.VERBON +Host * + IdentityFile \(ti/.ssh/cluster + StrictHostKeyChecking=no +.VERBOFF +.DE +By default, the SSH client already searchs for a keypair called +\f(CW\(ti/.ssh/id_rsa\fP and \f(CW\(ti/.ssh/id_rsa.pub\fP, so there is +no need to manually specify them. +.PP +You should be able to access the login node with your new key by using: +.DS I +.VERBON +xeon07$ ssh ssfhead +.VERBOFF +.DE +.\" =================================================================== +.H 3 "Authorize access to the repository" +.PP +The sources of BSC packages are usually downloaded directly from the PM +git server, so you must be able to access all repositories without a +password prompt. +.PP +Most repositories are open to read for logged in users, but there are +some exceptions (for example the nanos6 repository) where you must have +explicitly granted read access. +.PP +Copy the contents of your public SSH key in \f(CW\(ti/.ssh/id_rsa.pub\fP +and paste it in GitLab at +.DS I +.VERBON +https://pm.bsc.es/gitlab/profile/keys +.VERBOFF +.DE +Finally verify the SSH connection to the server works and you get a +greeting from the GitLab server with your username: +.DS I +.VERBON +xeon07$ ssh git@bscpm03.bsc.es +PTY allocation request failed on channel 0 +Welcome to GitLab, @rarias! +Connection to bscpm03.bsc.es closed. +.VERBOFF +.DE +Verify that you can access the nanos6 repository (otherwise you +first need to ask to be granted read access), at: +.DS I +.VERBON +https://pm.bsc.es/gitlab/nanos6/nanos6 +.VERBOFF +.DE +Finally, you should be able to download the nanos6 git +repository without any password interaction by running: +.DS I +.VERBON +xeon07$ git clone git@bscpm03.bsc.es:nanos6/nanos6.git +.VERBOFF +.DE +Which will create the nanos6 directory. +.\" =================================================================== +.H 3 "Authorize access to MareNostrum 4" +You will also need to access MareNostrum 4 from the xeon07 machine, in +order to run experiments. Add the following lines to the +\f(CW\(ti/.ssh/config\fP file and set your user name: +.DS I +.VERBON +Host mn0 mn1 mn2 + User +.VERBOFF +.DE +Then copy your SSH key to MareNostrum 4 (it will ask you for your login +password): +.DS I +.VERBON +xeon07$ ssh-copy-id -i \(ti/.ssh/id_rsa.pub mn1 +.VERBOFF +.DE +Finally, ensure that you can connect without a password: +.DS I +.VERBON +xeon07$ ssh mn1 +\&... +login1$ +.VERBOFF +.DE +.\" =================================================================== +.H 3 "Clone the bscpkgs repository" +.PP +Once you have Internet and you have granted access to the PM GitLab +repositories you can begin building software with nix. First ensure +that the nix binaries are available from your shell in xeon07: +.DS I +.VERBON +xeon07$ nix --version +nix (Nix) 2.3.6 +.VERBOFF +.DE +Now you are ready to build and install packages with nix. Clone the +bscpkgs repository: +.DS I +.VERBON +xeon07$ git clone git@bscpm03.bsc.es:rarias/bscpkgs.git +.VERBOFF +.DE +Nix looks in the current folder for a file named \f(CWdefault.nix\fP for +packages, so go to the bscpkgs directory: +.DS I +.VERBON +xeon07$ cd bscpkgs +.VERBOFF +.DE +Now you should be able to build nanos6 (which is probably already +compiled): +.DS I +.VERBON +xeon07$ nix-build -A bsc.nanos6 +\&... +/nix/store/...2cm1ldx9smb552sf6r1-nanos6-2.4-6f10a32 +.VERBOFF +.DE +The installation is placed in the nix store (with the path stated in +the last line of the build process), with the \f(CWresult\fP symbolic +link pointing to the same location: +.DS I +.VERBON +xeon07$ readlink result +/nix/store/...2cm1ldx9smb552sf6r1-nanos6-2.4-6f10a32 +.VERBOFF +.DE +.\" =================================================================== +.H 2 "Configure the login and target (MareNostrum 4)" +.PP +In order to execute the programs in MareNostrum 4, you first need load +some utilities in the PATH. Add to the end of the file +\f(CW\(ti/.bashrc\fP in MareNostrum 4 the following line: +.DS I +.VERBON +export PATH=/gpfs/projects/bsc15/nix/bin:$PATH +.VERBOFF +.DE +Then logout and login again (our source the \f(CW\(ti/.bashrc\fP file) +and check that now you have the \f(CWnix-develop\fP command available: +.DS I +.VERBON +login1$ which nix-develop +/gpfs/projects/bsc15/nix/bin/nix-develop +.VERBOFF +.DE +The new utilities are available both in the login nodes and in the +compute (target) nodes, as they share the file system over the network. +.\" =================================================================== +.H 1 "Overview" +.PP +The garlic framework is designed to fulfill all the requirements of an +experimenter in all the steps up to publication. The experience gained +while using it suggests that we move along three stages despicted in the +following diagram: +.DS CB +.S 9p 10p +.PS 5 +linewid=1; +right +box "Source" "code" +arrow "Development" above +box "Program" +arrow "Experiment" above +box "Results" +arrow "Data" "exploration" +box "Figures" +.PE +.S P P +.DE +In the development phase the experimenter changes the source code in +order to introduce new features or fix bugs. Once the program is +considered functional, the next phase is the experimentation, where +several experiment configurations are tested to evaluate the program. It +is common that some problems are spotted during this phase, which lead +the experimenter to go back to the development phase and change the +source code. +.PP +Finally, when the experiment is considered completed, the +experimenter moves to the next phase, which envolves the exploration of +the data generated by the experiment. During this phase, it is common to +generate results in the form of plots or tables which provide a clear +insight in those quantities of interest. It is also common that after +looking at the figures, some changes in the experiment configuration +need to be introduced (or even in the source code of the program). +.PP +Therefore, the experimenter may move forward and backwards along three +phases several times. The garlic framework provides support for all the +three stages (with different degrees of madurity). +.H 1 "Development (work in progress)" +.PP +During the development phase, a functional program is produced by +modifying its source code. This process is generally cyclic: the +developer needs to compile, debug and correct mistakes. We want to +minimize the delay times, so the programs can be executed as soon as +needed, but under a controlled environment so that the same behavior +occurs during the experimentation phase. +.PP +In particular, we want that several developers can reproduce the +the same development environment so they can debug each other programs +when reporting bugs. Therefore, the environment must be carefully +controlled to avoid non-reproducible scenarios. +.PP +The current development environment provides an isolated shell with a +clean environment, which runs in a new mount namespace where access to +the filesystem is restricted. Only the project directory and the nix +store are available (with some other exceptions), to ensure that you +cannot accidentally link with the wrong library or modify the build +process with a forgotten environment variable in the \f(CW\(ti/.bashrc\fP +file. +.\" =================================================================== +.H 2 "Getting the development tools" +.PP +To create a development +environment, first copy or download the sources of your program (not the +dependencies) in a new directory placed in the target machine +(MareNostrum\~4). +.PP +The default environment contains packages commonly used to develop +programs, listed in the \fIgarlic/index.nix\fP file: +.\" FIXME: Unify garlic.unsafeDevelop in garlic.develop, so we can +.\" specify the packages directly +.DS I +.VERBON +develop = let + commonPackages = with self; [ + coreutils htop procps-ng vim which strace + tmux gdb kakoune universal-ctags bashInteractive + glibcLocales ncurses git screen curl + # Add more nixpkgs packages here... + ]; + bscPackages = with bsc; [ + slurm clangOmpss2 icc mcxx perf tampi impi + # Add more bsc packages here... + ]; + ... +.VERBOFF +.DE +If you need additional packages, add them to the list, so that they +become available in the environment. Those may include any dependency +required to build your program. +.PP +Then use the build machine (xeon07) to build the +.I garlic.develop +derivation: +.DS I +.VERBON +build% nix-build -A garlic.develop +\&... +build% grep ln result +ln -fs /gpfs/projects/.../bin/stage1 .nix-develop +.VERBOFF +.DE +Copy the \fIln\fP command and run it in the target machine +(MareNostrum\~4), inside the new directory used for your program +development, to create the link \fI.nix-develop\fP (which is used to +remember your environment). Several environments can be stored in +different directories using this method, with different packages in each +environment. You will need +to rebuild the +.I garlic.develop +derivation and update the +.I .nix-develop +link after the package list is changed. Once the +environment link is created, there is no need to repeat these steps again. +.PP +Before entering the environment, you will need to access the required +resources for your program, which may include several compute nodes. +.\" =================================================================== +.H 2 "Allocating resources for development" +.PP +Our target machine (MareNostrum 4) provides an interactive shell, that +can be requested with the number of computational resources required for +development. To do so, connect to the login node and allocate an +interactive session: +.DS I +.VERBON +% ssh mn1 +login% salloc ... +target% +.VERBOFF +.DE +This operation may take some minutes to complete depending on the load +of the cluster. But once the session is ready, any subsequent execution +of programs will be immediate. +.\" =================================================================== +.H 2 "Accessing the developement environment" +.PP +The utility program \fInix-develop\fP has been designed to access the +development environment of the current directory, by looking for the +\fI.nix-develop\fP file. It creates a namespace where the required +packages are installed and ready to be used. Now you can access the +newly created environment by running: +.DS I +.VERBON +target% nix-develop +develop% +.VERBOFF +.DE +The spawned shell contains all the packages pre-defined in the +\fIgarlic.develop\fP derivation, and can now be accessed by typing the +name of the commands. +.DS I +.VERBON +develop% which gcc +/nix/store/azayfhqyg9...s8aqfmy-gcc-wrapper-9.3.0/bin/gcc +develop% which gdb +/nix/store/1c833b2y8j...pnjn2nv9d46zv44dk-gdb-9.2/bin/gdb +.VERBOFF +.DE +If you need additional packages, you can add them in the +\fIgarlic/index.nix\fP file as mentioned previously. To keep the +same current resources, so you don't need to wait again for the +resources to be allocated, exit only from the development shell: +.DS I +.VERBON +develop% exit +target% +.VERBOFF +.DE +Then update the +.I .nix-develop +link and enter into the new develop environment: +.DS I +.VERBON +target% nix-develop +develop% +.VERBOFF +.DE +.\" =================================================================== +.H 2 "Execution" +The allocated shell can only execute tasks in the current node, which +may be enough for some tests. To do so, you can directly run your +program as: +.DS I +.VERBON +develop$ ./program +.VERBOFF +.DE +If you need to run a multi-node program, typically using MPI +communications, then you can do so by using srun. Notice that you need +to allocate several nodes when calling salloc previously. The srun +command will execute the given program \fBoutside\fP the development +environment if executed as-is. So we re-enter the develop environment by +calling nix-develop as a wrapper of the program: +.\" FIXME: wrap srun to reenter the develop environment by its own +.DS I +.VERBON +develop$ srun nix-develop ./program +.VERBOFF +.DE +.\" =================================================================== +.H 2 "Debugging" +The debugger can be used to directly execute the program if is executed +in only one node by using: +.DS I +.VERBON +develop$ gdb ./program +.VERBOFF +.DE +Or it can be attached to an already running program by using its PID. +You will need to first connect to the node running it (say target2), and +run gdb inside the nix-develop environment. Use +.I squeue +to see the compute nodes running your program: +.DS I +.VERBON +login$ ssh target2 +target2$ cd project-develop +target2$ nix-develop +develop$ gdb -p $pid +.VERBOFF +.DE +You can repeat this step to control the execution of programs running in +different nodes simultaneously. +.PP +In those cases where the program crashes before being able to attach the +debugger, enable the generation of core dumps: +.DS I +.VERBON +develop$ ulimit -c unlimited +.VERBOFF +.DE +And rerun the program, which will generate a core file that can be +opened by gdb and contains the state of the memory when the crash +happened. Beware that the core dump file can be very large, depending on +the memory used by your program at the crash. +.H 2 "Git branch name convention" +.PP +The garlic benchmark imposes a set of requirements to be meet for each +application in order to coordinate the execution of the benchmark and +the gathering process of the results. +.PP +Each application must be available in a git repository so it can be +included into the garlic benchmark. The different combinations of +programming models and communication schemes should be each placed in +one git branch, which are referred to as \fIbenchmark branches\fP. At +least one benchmark branch should exist and they all must begin with the +prefix \f(CWgarlic/\fP (other branches will be ignored). +.PP +The branch name is formed by adding keywords separated by the "+" +character. The keywords must follow the given order and can only +appear zero or once each. At least one keyword must be included. The +following keywords are available: +.LB 12 2 0 0 +.LI \f(CWmpi\fP +A significant fraction of the communications uses only the standard MPI +(without extensions like TAMPI). +.LI \f(CWtampi\fP +A significant fraction of the communications uses TAMPI. +.LI \f(CWsend\fP +A significant part of the MPI communication uses the blocking family of +methods (MPI_Send, MPI_Recv, MPI_Gather...). +.LI \f(CWisend\fP +A significant part of the MPI communication uses the non-blocking family +of methods (MPI_Isend, MPI_Irecv, MPI_Igather...). +.LI \f(CWrma\fP +A significant part of the MPI communication uses remote memory access +(one-sided) methods (MPI_Get, MPI_Put...). +.LI \f(CWseq\fP +The complete execution is sequential in each process (one thread per +process). +.LI \f(CWomp\fP +A significant fraction of the execution uses the OpenMP programming +model. +.LI \f(CWoss\fP +A significant fraction of the execution uses the OmpSs-2 programming +model. +.LI \f(CWtask\fP +A significant part of the execution involves the use of the tasking +model. +.LI \f(CWtaskfor\fP +A significant part of the execution uses the taskfor construct. +.LI \f(CWfork\fP +A significant part of the execution uses the fork-join model (including +hybrid programming techniques with parallel computations and sequential +communications). +.LI \f(CWsimd\fP +A significant part of the computation has been optimized to use SIMD +instructions. +.LE +.PP +In the \fBAppendix A\fP there is a flowchart to help the decision +process of the branch name. +.PP +Additional user defined keywords may be added at the end using the +separator "+" as well. User keywords must consist of capital +alphanumeric characters only and be kept short. These additional +keywords must be different (case insensitive) to the already defined +above. Some examples: +.DS I +.VERBON +garlic/mpi+send+seq +garlic/mpi+send+omp+fork +garlic/mpi+isend+oss+task +garlic/tampi+isend+oss+task +garlic/tampi+isend+oss+task+COLOR +garlic/tampi+isend+oss+task+COLOR+BTREE +.VERBOFF +.DE +.\" =================================================================== +.H 1 "Experimentation" +The experimentation phase begins with a functional program which is the +object of study. The experimenter then designs an experiment aimed at +measuring some properties of the program. The experiment is then +executed and the results are stored for further analysis. +.H 2 "Writing the experiment configuration" +.PP +The term experiment is quite overloaded in this document. We are going +to see how to write the recipe that describes the execution pipeline of +an experiment. +.PP +Within the garlic benchmark, experiments are typically sorted by a +hierarchy depending on which application they belong. Take a look at the +\fCgarlic/exp\fP directory and you will find some folders and .nix +files. +.PP +Each of those recipes files describe a function that returns a +derivation, which, once built will result in the first stage script of +the execution pipeline. +.PP +The first part of states the name of the attributes required as the +input of the function. Typically some packages, common tools and options: +.DS I +.VERBON +{ + stdenv +, stdexp +, bsc +, targetMachine +, stages +, garlicTools +}: +.VERBOFF +.DE +.PP +Notice the \fCtargetMachine\fP argument, which provides information +about the machine in which the experiment will run. You should write +your experiment in such a way that runs in multiple clusters. +.DS I +.VERBON +varConf = { + blocks = [ 1 2 4 ]; + nodes = [ 1 ]; +}; +.VERBOFF +.DE +.PP +The \fCvarConf\fP is the attribute set that allows you to vary some +factors in the experiment. +.DS I +.VERBON +genConf = var: fix (self: targetMachine.config // { + expName = "example"; + unitName = self.expName + "-b" + toString self.blocks; + blocks = var.blocks; + nodes = var.nodes; + cpusPerTask = 1; + tasksPerNode = self.hw.socketsPerNode; +}); +.VERBOFF +.DE +.PP +The \fCgenConf\fP function is the central part of the description of the +experiment. Takes as input \fBone\fP configuration from the cartesian +product of +.I varConfig +and returns the complete configuration. In our case, it will be +called 3 times, with the following inputs at each time: +.DS I +.VERBON +{ blocks = 1; nodes = 1; } +{ blocks = 2; nodes = 1; } +{ blocks = 4; nodes = 1; } +.VERBOFF +.DE +.PP +The return value can be inspected by calling the function in the +interactive nix repl: +.DS I +.VERBON +nix-repl> genConf { blocks = 2; nodes = 1; } +{ + blocks = 2; + cpusPerTask = 1; + expName = "example"; + hw = { ... }; + march = "skylake-avx512"; + mtune = "skylake-avx512"; + name = "mn4"; + nixPrefix = "/gpfs/projects/bsc15/nix"; + nodes = 1; + sshHost = "mn1"; + tasksPerNode = 2; + unitName = "example-b2"; +} +.VERBOFF +.DE +.PP +Some configuration parameters were added by +.I targetMachine.config , +such as the +.I nixPrefix , +.I sshHost +or the +.I hw +attribute set, which are specific for the cluster they experiment is +going to run. Also, the +.I unitName +got assigned the proper name based on the number of blocks, but the +number of tasks per node were assigned based on the hardware description +of the target machine. +.PP +By following this rule, the experiments can easily be ported to machines +with other hardware characteristics, and we only need to define the +hardware details once. Then all the experiments will be updated based on +those details. +.H 2 "First steps" +.PP +The complete results generally take a long time to be finished, so it is +advisable to design the experiments iteratively, in order to quickly +obtain some feedback. Some recommendations: +.BL +.LI +Start with one unit only. +.LI +Set the number of runs low (say 5) but more than one. +.LI +Use a small problem size, so the execution time is low. +.LI +Set the time limit low, so deadlocks are caught early. +.LE +.PP +As soon as the first runs are complete, examine the results and test +that everything looks good. You would likely want to check: +.BL +.LI +The resources where assigned as intended (nodes and CPU affinity). +.LI +No errors or warnings: look at stderr and stdout logs. +.LI +If a deadlock happens, it will run out of the time limit. +.LE +.PP +As you gain confidence over that the execution went as planned, begin +increasing the problem size, the number of runs, the time limit and +lastly the number of units. The rationale is that each unit that is +shared among experiments gets assigned the same hash. Therefore, you can +iteratively add more units to an experiment, and if they are already +executed (and the results were generated) is reused. +.SK +.APP "" "Branch name diagram" +.DS CB +.S -3 10 +.PS 4.4/25.4 +copy "gitbranch.pic" +.PE +.S P P +.DE +.TC From c46feb4bf2d550c3b70ef610a26a30a6f4dcf97a Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 4 Feb 2021 14:49:02 +0100 Subject: [PATCH 468/987] user guide: use ms macros Added HTML output --- garlic/doc/Makefile | 21 +- garlic/doc/ug.mm | 843 ----------------------- garlic/doc/ug.ms | 1556 ++++++++++++++++++++++++++++--------------- 3 files changed, 1024 insertions(+), 1396 deletions(-) delete mode 100644 garlic/doc/ug.mm diff --git a/garlic/doc/Makefile b/garlic/doc/Makefile index 2831ca6..5de21d3 100644 --- a/garlic/doc/Makefile +++ b/garlic/doc/Makefile @@ -1,5 +1,5 @@ all: execution.pdf execution.utf8 execution.ascii pp.pdf pp.utf8 pp.ascii\ - branch.pdf blackbox.pdf ug.pdf + branch.pdf blackbox.pdf ug.pdf ug.html TTYOPT=-rPO=4m -rLL=72m PDFOPT=-dpaper=a4 -rPO=4c -rLL=13c @@ -8,26 +8,29 @@ PREPROC=-k -t -p -R POSTPROC= REGISTERS=-dcurdate="`date '+%Y-%m-%d'`" REGISTERS+=-dgitcommit="`git rev-parse HEAD`" + +PREPROC+=$(REGISTERS) +HTML_OPT=$(PREPROC) -P-y -P-V -P-Dimg -P-i120 -Thtml # Embed fonts? #POSTPROC+=-P -e blackbox.pdf: blackbox.ms Makefile REFER=ref.i groff -ms $(PREPROC) -dpaper=a4 -rPO=2c -rLL=17c -Tpdf $< > $@ -ug.pdf: ug.mm Makefile - groff -mm $(PREPROC) $(POSTPROC) $(REGISTERS) -dpaper=a4 -Tpdf $< > $@ - -killall -HUP mupdf - %.html: %.ms Makefile - REFER=ref.i groff -ms $(PREPROC) $(POSTPROC) $(REGISTERS) -Thtml $< > $@ + REFER=ref.i groff -ms -mwww $(HTML_OPT) $< > $@ + echo $(HTML_OPT) sed -i '/<\/head>/i' $@ + sed -i 's/^<\/a>/\§<\/a>/g' $@ + #sed -i '/

/s/^ $@ + REFER=ref.i groff -ms -mwww $(PREPROC) $(PDFOPT) -Tpdf $< > $@ -killall -HUP mupdf %.utf8: %.ms - REFER=ref.i groff -ms $(PREPROC) $(TTYOPT) -Tutf8 $^ > $@ + REFER=ref.i groff -ms -mwww $(PREPROC) $(TTYOPT) -Tutf8 $^ > $@ %.ascii: %.ms - REFER=ref.i groff -ms -c $(PREPROC) $(TTYOPT) -Tascii $^ > $@ + REFER=ref.i groff -ms -mwww -c $(PREPROC) $(TTYOPT) -Tascii $^ > $@ diff --git a/garlic/doc/ug.mm b/garlic/doc/ug.mm deleted file mode 100644 index b5fa9e2..0000000 --- a/garlic/doc/ug.mm +++ /dev/null @@ -1,843 +0,0 @@ -.ds HP "21 16 13 12 0 0 0 0 0 0 0 0 0 0" -.nr Ej 1 -.nr Hb 3 -.nr Hs 3 -.S 11p 1.3m -.PH "''''" -.PF "''''" -.PGFORM 14c 29c 3.5c -.\".COVER -.\".de cov@print-date -.\".DS C -.\"\\*[cov*new-date] -.\".DE -.\".. -.\".TL -.\".ps 20 -.\"Garlic: User guide -.\".AF "Barcelona Supercomputing Center" -.\".AU "Rodrigo Arias Mallo" -.\".COVEND -\& -.SP 3c -.DS C -.S 25 1 -Garlic: User guide -.S P P -.SP 1v -.S 12 1.5m -Rodrigo Arias Mallo -.I "Barcelona Supercomputing Center" -\*[curdate] -.S P P -.SP 15c -.S 9 1.5m -Git commit hash -\f(CW\*[gitcommit]\fP -.S P P -.DE -.bp -.PF "''%''" -.\" =================================================================== -.H 1 "Introduction" -.P -The garlic framework provides all the tools to experiment with HPC -programs and produce publication articles. -.\" =================================================================== -.H 2 "Machines and clusters" -Our current setup employs multiple machines to build and execute the -experiments. Each cluster and node has it's own name and will be -different in other clusters. Therefore, instead of using the names of -the machines we use machine classes to generalize our setup. Those -machine clases currently correspond to a physical machine each: -.BL -.LI -.B Builder -(xeon07): runs the nix-daemon and performs the builds in /nix. Requires -root access to setup de nix-daemon. -.LI -.B Target -(MareNostrum 4 compute nodes): the nodes where the experiments -are executed. It doesn't need to have /nix installed or root access. -.LI -.B Login -(MareNostrum 4 login nodes): used to allocate resources and run jobs. It -doesn't need to have /nix installed or root access. -.LI -.B Laptop -(where the keyboard is attached): used to connect to the other machines. -No root access is required or /nix, but needs to be able to connect to -the builder. -.LE -.\".P -.\"The specific details of each machine class can be summarized in the -.\"following table: -.\".TS -.\"center; -.\"lB cB cB cB cB lB lB lB -.\"lB c c c c l l l. -.\"_ -.\"Class daemon store root dl cpus space cluster node -.\"_ -.\"laptop no no no yes low 1GB - - -.\"build yes yes yes yes high 50GB Cobi xeon07 -.\"login no yes no no low MN4 mn1 -.\"target no yes no no high MN4 compute nodes -.\"_ -.\".TE -.P -The machines don't need to be different of each others, as one machine -can implement several classes. For example the laptop can act as the -builder too but is not recommended. Or the login machine can also -perform the builds, but is not possible yet in our setup. -.\" =================================================================== -.H 2 "Properties" -.P -We can define the following three properties: -.BL 1m -.LI -R0: \fBSame\fP people on the \fBsame\fP machine obtain the same result -.LI -R1: \fBDifferent\fP people on the \fBsame\fP machine obtain the same result -.LI -R2: \fBDifferent\fP people on a \fBdifferent\fP machine obtain the same result -.LE -.P -The garlic framework distinguishes two classes of results: the result of -building a derivation, which are usually binary programs, and the -results of the execution of an experiment. -.P -Building a derivation is usually R2, the result is bit-by-bit identical -excepting some rare cases. One example is that during the build process, -a directory is listed by the order of the inodes, giving a random order -which is different between builds. These problems are tracked by the -.I https://r13y.com/ -project. In the minimal installation, less than 1% of the derivations -don't achieve the R2 property. -.P -On the other hand, the results of the experiments are not yet R2, as -they are tied to the target machine. -.\" =================================================================== -.H 1 "Preliminary steps" -The peculiarities of our setup require that users perform some actions -to use the garlic framework. The content of this section is only -intended for the users of our machines, but can serve as reference in -other machines. -.P -The names of the machine classes are used in the command line prompt -instead of the actual name of the machine, to indicate that the command -needs to be executed in the stated machine class, for example: -.DS I -.VERBON -builder% echo hi -hi -.VERBOFF -.DE -When the machine class is not important, it is ignored and only the -"\f(CW%\fP" prompt appears. -.\" =================================================================== -.H 2 "Configure your laptop" -.P -To easily connect to the builder (xeon07) in one step, configure the SSH -client to perform a jump over the Cobi login node. The -.I ProxyJump -directive is only available in version 7.3 and upwards. Add the -following lines in the \f(CW\(ti/.ssh/config\fP file of your laptop: -.DS I -.VERBON -Host cobi - HostName ssflogin.bsc.es - User your-username-here - -Host xeon07 - ProxyJump cobi - HostName xeon07 - User your-username-here -.VERBOFF -.DE -You should be able to connect to the builder typing: -.DS I -.VERBON -laptop$ ssh xeon07 -.VERBOFF -.DE -To spot any problems try with the \f(CW-v\fP option to enable verbose -output. -.\" =================================================================== -.H 2 "Configure the builder (xeon07)" -.P -In order to use nix you would need to be able to download the sources -from Internet. Usually the download requires the ports 22, 80 and 443 -to be open for outgoing traffic. -.P -Check that you have network access in -xeon07 provided by the environment variables \fIhttp_proxy\fP and -\fIhttps_proxy\fP. Try to fetch a webpage with curl, to ensure the proxy -is working: -.DS I -.VERBON - xeon07$ curl x.com - x -.VERBOFF -.DE -.\" =================================================================== -.H 3 "Create a new SSH key" -.P -There is one DSA key in your current home called "cluster" that is no -longer supported in recent SSH versions and should not be used. Before -removing it, create a new one without password protection leaving the -passphrase empty (in case that you don't have one already created) by -running: -.DS I -.VERBON -xeon07$ ssh-keygen -Generating public/private rsa key pair. -Enter file in which to save the key (\(ti/.ssh/id_rsa): -Enter passphrase (empty for no passphrase): -Enter same passphrase again: -Your identification has been saved in \(ti/.ssh/id_rsa. -Your public key has been saved in \(ti/.ssh/id_rsa.pub. -\&... -.VERBOFF -.DE -By default it will create the public key at \f(CW\(ti/.ssh/id_rsa.pub\fP. -Then add the newly created key to the authorized keys, so you can -connect to other nodes of the Cobi cluster: -.DS I -.VERBON -xeon07$ cat \(ti/.ssh/id_rsa.pub >> \(ti/.ssh/authorized_keys -.VERBOFF -.DE -Finally, delete the old "cluster" key: -.DS I -.VERBON -xeon07$ rm \(ti/.ssh/cluster \(ti/.ssh/cluster.pub -.VERBOFF -.DE -And remove the section in the configuration \f(CW\(ti/.ssh/config\fP -where the key was assigned to be used in all hosts along with the -\f(CWStrictHostKeyChecking=no\fP option. Remove the following lines (if -they exist): -.DS I -.VERBON -Host * - IdentityFile \(ti/.ssh/cluster - StrictHostKeyChecking=no -.VERBOFF -.DE -By default, the SSH client already searchs for a keypair called -\f(CW\(ti/.ssh/id_rsa\fP and \f(CW\(ti/.ssh/id_rsa.pub\fP, so there is -no need to manually specify them. -.P -You should be able to access the login node with your new key by using: -.DS I -.VERBON -xeon07$ ssh ssfhead -.VERBOFF -.DE -.\" =================================================================== -.H 3 "Authorize access to the repository" -.P -The sources of BSC packages are usually downloaded directly from the PM -git server, so you must be able to access all repositories without a -password prompt. -.P -Most repositories are open to read for logged in users, but there are -some exceptions (for example the nanos6 repository) where you must have -explicitly granted read access. -.P -Copy the contents of your public SSH key in \f(CW\(ti/.ssh/id_rsa.pub\fP -and paste it in GitLab at -.DS I -.VERBON -https://pm.bsc.es/gitlab/profile/keys -.VERBOFF -.DE -Finally verify the SSH connection to the server works and you get a -greeting from the GitLab server with your username: -.DS I -.VERBON -xeon07$ ssh git@bscpm03.bsc.es -PTY allocation request failed on channel 0 -Welcome to GitLab, @rarias! -Connection to bscpm03.bsc.es closed. -.VERBOFF -.DE -Verify that you can access the nanos6 repository (otherwise you -first need to ask to be granted read access), at: -.DS I -.VERBON -https://pm.bsc.es/gitlab/nanos6/nanos6 -.VERBOFF -.DE -Finally, you should be able to download the nanos6 git -repository without any password interaction by running: -.DS I -.VERBON -xeon07$ git clone git@bscpm03.bsc.es:nanos6/nanos6.git -.VERBOFF -.DE -Which will create the nanos6 directory. -.\" =================================================================== -.H 3 "Authorize access to MareNostrum 4" -You will also need to access MareNostrum 4 from the xeon07 machine, in -order to run experiments. Add the following lines to the -\f(CW\(ti/.ssh/config\fP file and set your user name: -.DS I -.VERBON -Host mn0 mn1 mn2 - User -.VERBOFF -.DE -Then copy your SSH key to MareNostrum 4 (it will ask you for your login -password): -.DS I -.VERBON -xeon07$ ssh-copy-id -i \(ti/.ssh/id_rsa.pub mn1 -.VERBOFF -.DE -Finally, ensure that you can connect without a password: -.DS I -.VERBON -xeon07$ ssh mn1 -\&... -login1$ -.VERBOFF -.DE -.\" =================================================================== -.H 3 "Clone the bscpkgs repository" -.P -Once you have Internet and you have granted access to the PM GitLab -repositories you can begin building software with nix. First ensure -that the nix binaries are available from your shell in xeon07: -.DS I -.VERBON -xeon07$ nix --version -nix (Nix) 2.3.6 -.VERBOFF -.DE -Now you are ready to build and install packages with nix. Clone the -bscpkgs repository: -.DS I -.VERBON -xeon07$ git clone git@bscpm03.bsc.es:rarias/bscpkgs.git -.VERBOFF -.DE -Nix looks in the current folder for a file named \f(CWdefault.nix\fP for -packages, so go to the bscpkgs directory: -.DS I -.VERBON -xeon07$ cd bscpkgs -.VERBOFF -.DE -Now you should be able to build nanos6 (which is probably already -compiled): -.DS I -.VERBON -xeon07$ nix-build -A bsc.nanos6 -\&... -/nix/store/...2cm1ldx9smb552sf6r1-nanos6-2.4-6f10a32 -.VERBOFF -.DE -The installation is placed in the nix store (with the path stated in -the last line of the build process), with the \f(CWresult\fP symbolic -link pointing to the same location: -.DS I -.VERBON -xeon07$ readlink result -/nix/store/...2cm1ldx9smb552sf6r1-nanos6-2.4-6f10a32 -.VERBOFF -.DE -.\" =================================================================== -.H 2 "Configure the login and target (MareNostrum 4)" -.P -In order to execute the programs in MareNostrum 4, you first need load -some utilities in the PATH. Add to the end of the file -\f(CW\(ti/.bashrc\fP in MareNostrum 4 the following line: -.DS I -.VERBON -export PATH=/gpfs/projects/bsc15/nix/bin:$PATH -.VERBOFF -.DE -Then logout and login again (our source the \f(CW\(ti/.bashrc\fP file) -and check that now you have the \f(CWnix-develop\fP command available: -.DS I -.VERBON -login1$ which nix-develop -/gpfs/projects/bsc15/nix/bin/nix-develop -.VERBOFF -.DE -The new utilities are available both in the login nodes and in the -compute (target) nodes, as they share the file system over the network. -.\" =================================================================== -.H 1 "Overview" -.P -The garlic framework is designed to fulfill all the requirements of an -experimenter in all the steps up to publication. The experience gained -while using it suggests that we move along three stages despicted in the -following diagram: -.DS CB -.S 9p 10p -.PS 5 -linewid=1; -right -box "Source" "code" -arrow "Development" above -box "Program" -arrow "Experiment" above -box "Results" -arrow "Data" "exploration" -box "Figures" -.PE -.S P P -.DE -In the development phase the experimenter changes the source code in -order to introduce new features or fix bugs. Once the program is -considered functional, the next phase is the experimentation, where -several experiment configurations are tested to evaluate the program. It -is common that some problems are spotted during this phase, which lead -the experimenter to go back to the development phase and change the -source code. -.P -Finally, when the experiment is considered completed, the -experimenter moves to the next phase, which envolves the exploration of -the data generated by the experiment. During this phase, it is common to -generate results in the form of plots or tables which provide a clear -insight in those quantities of interest. It is also common that after -looking at the figures, some changes in the experiment configuration -need to be introduced (or even in the source code of the program). -.P -Therefore, the experimenter may move forward and backwards along three -phases several times. The garlic framework provides support for all the -three stages (with different degrees of madurity). -.H 1 "Development (work in progress)" -.P -During the development phase, a functional program is produced by -modifying its source code. This process is generally cyclic: the -developer needs to compile, debug and correct mistakes. We want to -minimize the delay times, so the programs can be executed as soon as -needed, but under a controlled environment so that the same behavior -occurs during the experimentation phase. -.P -In particular, we want that several developers can reproduce the -the same development environment so they can debug each other programs -when reporting bugs. Therefore, the environment must be carefully -controlled to avoid non-reproducible scenarios. -.P -The current development environment provides an isolated shell with a -clean environment, which runs in a new mount namespace where access to -the filesystem is restricted. Only the project directory and the nix -store are available (with some other exceptions), to ensure that you -cannot accidentally link with the wrong library or modify the build -process with a forgotten environment variable in the \f(CW\(ti/.bashrc\fP -file. -.\" =================================================================== -.H 2 "Getting the development tools" -.P -To create a development -environment, first copy or download the sources of your program (not the -dependencies) in a new directory placed in the target machine -(MareNostrum\~4). -.P -The default environment contains packages commonly used to develop -programs, listed in the \fIgarlic/index.nix\fP file: -.\" FIXME: Unify garlic.unsafeDevelop in garlic.develop, so we can -.\" specify the packages directly -.DS I -.VERBON -develop = let - commonPackages = with self; [ - coreutils htop procps-ng vim which strace - tmux gdb kakoune universal-ctags bashInteractive - glibcLocales ncurses git screen curl - # Add more nixpkgs packages here... - ]; - bscPackages = with bsc; [ - slurm clangOmpss2 icc mcxx perf tampi impi - # Add more bsc packages here... - ]; - ... -.VERBOFF -.DE -If you need additional packages, add them to the list, so that they -become available in the environment. Those may include any dependency -required to build your program. -.P -Then use the build machine (xeon07) to build the -.I garlic.develop -derivation: -.DS I -.VERBON -build% nix-build -A garlic.develop -\&... -build% grep ln result -ln -fs /gpfs/projects/.../bin/stage1 .nix-develop -.VERBOFF -.DE -Copy the \fIln\fP command and run it in the target machine -(MareNostrum\~4), inside the new directory used for your program -development, to create the link \fI.nix-develop\fP (which is used to -remember your environment). Several environments can be stored in -different directories using this method, with different packages in each -environment. You will need -to rebuild the -.I garlic.develop -derivation and update the -.I .nix-develop -link after the package list is changed. Once the -environment link is created, there is no need to repeat these steps again. -.P -Before entering the environment, you will need to access the required -resources for your program, which may include several compute nodes. -.\" =================================================================== -.H 2 "Allocating resources for development" -.P -Our target machine (MareNostrum 4) provides an interactive shell, that -can be requested with the number of computational resources required for -development. To do so, connect to the login node and allocate an -interactive session: -.DS I -.VERBON -% ssh mn1 -login% salloc ... -target% -.VERBOFF -.DE -This operation may take some minutes to complete depending on the load -of the cluster. But once the session is ready, any subsequent execution -of programs will be immediate. -.\" =================================================================== -.H 2 "Accessing the developement environment" -.P -The utility program \fInix-develop\fP has been designed to access the -development environment of the current directory, by looking for the -\fI.nix-develop\fP file. It creates a namespace where the required -packages are installed and ready to be used. Now you can access the -newly created environment by running: -.DS I -.VERBON -target% nix-develop -develop% -.VERBOFF -.DE -The spawned shell contains all the packages pre-defined in the -\fIgarlic.develop\fP derivation, and can now be accessed by typing the -name of the commands. -.DS I -.VERBON -develop% which gcc -/nix/store/azayfhqyg9...s8aqfmy-gcc-wrapper-9.3.0/bin/gcc -develop% which gdb -/nix/store/1c833b2y8j...pnjn2nv9d46zv44dk-gdb-9.2/bin/gdb -.VERBOFF -.DE -If you need additional packages, you can add them in the -\fIgarlic/index.nix\fP file as mentioned previously. To keep the -same current resources, so you don't need to wait again for the -resources to be allocated, exit only from the development shell: -.DS I -.VERBON -develop% exit -target% -.VERBOFF -.DE -Then update the -.I .nix-develop -link and enter into the new develop environment: -.DS I -.VERBON -target% nix-develop -develop% -.VERBOFF -.DE -.\" =================================================================== -.H 2 "Execution" -The allocated shell can only execute tasks in the current node, which -may be enough for some tests. To do so, you can directly run your -program as: -.DS I -.VERBON -develop$ ./program -.VERBOFF -.DE -If you need to run a multi-node program, typically using MPI -communications, then you can do so by using srun. Notice that you need -to allocate several nodes when calling salloc previously. The srun -command will execute the given program \fBoutside\fP the development -environment if executed as-is. So we re-enter the develop environment by -calling nix-develop as a wrapper of the program: -.\" FIXME: wrap srun to reenter the develop environment by its own -.DS I -.VERBON -develop$ srun nix-develop ./program -.VERBOFF -.DE -.\" =================================================================== -.H 2 "Debugging" -The debugger can be used to directly execute the program if is executed -in only one node by using: -.DS I -.VERBON -develop$ gdb ./program -.VERBOFF -.DE -Or it can be attached to an already running program by using its PID. -You will need to first connect to the node running it (say target2), and -run gdb inside the nix-develop environment. Use -.I squeue -to see the compute nodes running your program: -.DS I -.VERBON -login$ ssh target2 -target2$ cd project-develop -target2$ nix-develop -develop$ gdb -p $pid -.VERBOFF -.DE -You can repeat this step to control the execution of programs running in -different nodes simultaneously. -.P -In those cases where the program crashes before being able to attach the -debugger, enable the generation of core dumps: -.DS I -.VERBON -develop$ ulimit -c unlimited -.VERBOFF -.DE -And rerun the program, which will generate a core file that can be -opened by gdb and contains the state of the memory when the crash -happened. Beware that the core dump file can be very large, depending on -the memory used by your program at the crash. -.H 2 "Git branch name convention" -.P -The garlic benchmark imposes a set of requirements to be meet for each -application in order to coordinate the execution of the benchmark and -the gathering process of the results. -.P -Each application must be available in a git repository so it can be -included into the garlic benchmark. The different combinations of -programming models and communication schemes should be each placed in -one git branch, which are referred to as \fIbenchmark branches\fP. At -least one benchmark branch should exist and they all must begin with the -prefix \f(CWgarlic/\fP (other branches will be ignored). -.P -The branch name is formed by adding keywords separated by the "+" -character. The keywords must follow the given order and can only -appear zero or once each. At least one keyword must be included. The -following keywords are available: -.LB 12 2 0 0 -.LI \f(CWmpi\fP -A significant fraction of the communications uses only the standard MPI -(without extensions like TAMPI). -.LI \f(CWtampi\fP -A significant fraction of the communications uses TAMPI. -.LI \f(CWsend\fP -A significant part of the MPI communication uses the blocking family of -methods (MPI_Send, MPI_Recv, MPI_Gather...). -.LI \f(CWisend\fP -A significant part of the MPI communication uses the non-blocking family -of methods (MPI_Isend, MPI_Irecv, MPI_Igather...). -.LI \f(CWrma\fP -A significant part of the MPI communication uses remote memory access -(one-sided) methods (MPI_Get, MPI_Put...). -.LI \f(CWseq\fP -The complete execution is sequential in each process (one thread per -process). -.LI \f(CWomp\fP -A significant fraction of the execution uses the OpenMP programming -model. -.LI \f(CWoss\fP -A significant fraction of the execution uses the OmpSs-2 programming -model. -.LI \f(CWtask\fP -A significant part of the execution involves the use of the tasking -model. -.LI \f(CWtaskfor\fP -A significant part of the execution uses the taskfor construct. -.LI \f(CWfork\fP -A significant part of the execution uses the fork-join model (including -hybrid programming techniques with parallel computations and sequential -communications). -.LI \f(CWsimd\fP -A significant part of the computation has been optimized to use SIMD -instructions. -.LE -.P -In the \fBAppendix A\fP there is a flowchart to help the decision -process of the branch name. -.P -Additional user defined keywords may be added at the end using the -separator "+" as well. User keywords must consist of capital -alphanumeric characters only and be kept short. These additional -keywords must be different (case insensitive) to the already defined -above. Some examples: -.DS I -.VERBON -garlic/mpi+send+seq -garlic/mpi+send+omp+fork -garlic/mpi+isend+oss+task -garlic/tampi+isend+oss+task -garlic/tampi+isend+oss+task+COLOR -garlic/tampi+isend+oss+task+COLOR+BTREE -.VERBOFF -.DE -.\" =================================================================== -.H 1 "Experimentation" -The experimentation phase begins with a functional program which is the -object of study. The experimenter then designs an experiment aimed at -measuring some properties of the program. The experiment is then -executed and the results are stored for further analysis. -.H 2 "Writing the experiment configuration" -.P -The term experiment is quite overloaded in this document. We are going -to see how to write the recipe that describes the execution pipeline of -an experiment. -.P -Within the garlic benchmark, experiments are typically sorted by a -hierarchy depending on which application they belong. Take a look at the -\fCgarlic/exp\fP directory and you will find some folders and .nix -files. -.P -Each of those recipes files describe a function that returns a -derivation, which, once built will result in the first stage script of -the execution pipeline. -.P -The first part of states the name of the attributes required as the -input of the function. Typically some packages, common tools and options: -.DS I -.VERBON -{ - stdenv -, stdexp -, bsc -, targetMachine -, stages -, garlicTools -}: -.VERBOFF -.DE -.P -Notice the \fCtargetMachine\fP argument, which provides information -about the machine in which the experiment will run. You should write -your experiment in such a way that runs in multiple clusters. -.DS I -.VERBON -varConf = { - blocks = [ 1 2 4 ]; - nodes = [ 1 ]; -}; -.VERBOFF -.DE -.P -The \fCvarConf\fP is the attribute set that allows you to vary some -factors in the experiment. -.DS I -.VERBON -genConf = var: fix (self: targetMachine.config // { - expName = "example"; - unitName = self.expName + "-b" + toString self.blocks; - blocks = var.blocks; - nodes = var.nodes; - cpusPerTask = 1; - tasksPerNode = self.hw.socketsPerNode; -}); -.VERBOFF -.DE -.P -The \fCgenConf\fP function is the central part of the description of the -experiment. Takes as input \fBone\fP configuration from the cartesian -product of -.I varConfig -and returns the complete configuration. In our case, it will be -called 3 times, with the following inputs at each time: -.DS I -.VERBON -{ blocks = 1; nodes = 1; } -{ blocks = 2; nodes = 1; } -{ blocks = 4; nodes = 1; } -.VERBOFF -.DE -.P -The return value can be inspected by calling the function in the -interactive nix repl: -.DS I -.VERBON -nix-repl> genConf { blocks = 2; nodes = 1; } -{ - blocks = 2; - cpusPerTask = 1; - expName = "example"; - hw = { ... }; - march = "skylake-avx512"; - mtune = "skylake-avx512"; - name = "mn4"; - nixPrefix = "/gpfs/projects/bsc15/nix"; - nodes = 1; - sshHost = "mn1"; - tasksPerNode = 2; - unitName = "example-b2"; -} -.VERBOFF -.DE -.P -Some configuration parameters were added by -.I targetMachine.config , -such as the -.I nixPrefix , -.I sshHost -or the -.I hw -attribute set, which are specific for the cluster they experiment is -going to run. Also, the -.I unitName -got assigned the proper name based on the number of blocks, but the -number of tasks per node were assigned based on the hardware description -of the target machine. -.P -By following this rule, the experiments can easily be ported to machines -with other hardware characteristics, and we only need to define the -hardware details once. Then all the experiments will be updated based on -those details. -.H 2 "First steps" -.P -The complete results generally take a long time to be finished, so it is -advisable to design the experiments iteratively, in order to quickly -obtain some feedback. Some recommendations: -.BL -.LI -Start with one unit only. -.LI -Set the number of runs low (say 5) but more than one. -.LI -Use a small problem size, so the execution time is low. -.LI -Set the time limit low, so deadlocks are caught early. -.LE -.P -As soon as the first runs are complete, examine the results and test -that everything looks good. You would likely want to check: -.BL -.LI -The resources where assigned as intended (nodes and CPU affinity). -.LI -No errors or warnings: look at stderr and stdout logs. -.LI -If a deadlock happens, it will run out of the time limit. -.LE -.P -As you gain confidence over that the execution went as planned, begin -increasing the problem size, the number of runs, the time limit and -lastly the number of units. The rationale is that each unit that is -shared among experiments gets assigned the same hash. Therefore, you can -iteratively add more units to an experiment, and if they are already -executed (and the results were generated) is reused. -.SK -.APP "" "Branch name diagram" -.DS CB -.S -3 10 -.PS 4.4/25.4 -copy "gitbranch.pic" -.PE -.S P P -.DE -.TC diff --git a/garlic/doc/ug.ms b/garlic/doc/ug.ms index a9fffaf..8398fa9 100644 --- a/garlic/doc/ug.ms +++ b/garlic/doc/ug.ms @@ -1,398 +1,102 @@ -.ds HP "21 16 13 12 0 0 0 0 0 0 0 0 0 0" -.nr Ej 1 -.nr Hb 3 -.nr Hs 3 -.S 11p 1.3m -.PH "''''" -.PF "''''" -.PGFORM 14c 29c 3.5c -.\".COVER -.\".de cov@print-date -.\".DS C -.\"\\*[cov*new-date] -.\".DE -.\".. -.\".TL -.\".ps 20 -.\"Garlic: User guide -.\".AF "Barcelona Supercomputing Center" -.\".AU "Rodrigo Arias Mallo" -.\".COVEND -\& -.SP 3c -.DS C -.S 25 1 -Garlic: User guide -.S P P -.SP 1v -.S 12 1.5m -Rodrigo Arias Mallo -.I "Barcelona Supercomputing Center" -\*[curdate] -.S P P -.SP 15c -.S 9 1.5m -Git commit hash -\f(CW\*[gitcommit]\fP -.S P P +.\" Point size fails when rending html in the code blocks +.\".nr PS 11p +.nr GROWPS 3 +.nr PSINCR 2p +.fam P +.\" =================================================================== +.\" Some useful macros +.\" =================================================================== +.\" +.\" Code start (CS) and end (CE) blocks +.de CS +.DS L +\fC +.. +.de CE +\fP .DE -.bp -.PF "''%''" +.. +.\" Code inline: +.\" .CI "inline code" +.de CI +\fC\\$1\fP\\$2 +.. +.\" =================================================================== +.\" \& +.\" .sp 3c +.\" .LG +.\" .LG +.\" .LG +.\" .LG +.\" Garlic: User guide +.\" .br +.\" .NL +.\" Rodrigo Arias Mallo +.\" .br +.\" .I "Barcelona Supercomputing Center" +.\" .br +.\" \*[curdate] +.\" .sp 17c +.\" .DE +.\" .CI \*[gitcommit] +.TL +Garlic: User Guide +.AU +Rodrigo Arias Mallo +.AI +Barcelona Supercomputing Center +.AB +.LP +This document contains all the information to configure and use the +garlic benchmark. All stages from the development to the publication +are covered, as well as the introductory steps required to setup the +machines. +.DS L +.SM +\fC +Generated on \*[curdate] +Git commit: \*[gitcommit] +\fP +.DE +.AE .\" =================================================================== .NH 1 Introduction -.PP -The garlic framework provides all the tools to experiment with HPC -programs and produce publication articles. -.\" =================================================================== -.NH 2 -Machines and clusters -.PP -Our current setup employs multiple machines to build and execute the -experiments. Each cluster and node has it's own name and will be -different in other clusters. Therefore, instead of using the names of -the machines we use machine classes to generalize our setup. Those -machine clases currently correspond to a physical machine each: -.BL -.LI -.B Builder -(xeon07): runs the nix-daemon and performs the builds in /nix. Requires -root access to setup de nix-daemon. -.LI -.B Target -(MareNostrum 4 compute nodes): the nodes where the experiments -are executed. It doesn't need to have /nix installed or root access. -.LI -.B Login -(MareNostrum 4 login nodes): used to allocate resources and run jobs. It -doesn't need to have /nix installed or root access. -.LI -.B Laptop -(where the keyboard is attached): used to connect to the other machines. -No root access is required or /nix, but needs to be able to connect to -the builder. -.LE -.\".P -.\"The specific details of each machine class can be summarized in the -.\"following table: -.\".TS -.\"center; -.\"lB cB cB cB cB lB lB lB -.\"lB c c c c l l l. -.\"_ -.\"Class daemon store root dl cpus space cluster node -.\"_ -.\"laptop no no no yes low 1GB - - -.\"build yes yes yes yes high 50GB Cobi xeon07 -.\"login no yes no no low MN4 mn1 -.\"target no yes no no high MN4 compute nodes -.\"_ -.\".TE -.PP -The machines don't need to be different of each others, as one machine -can implement several classes. For example the laptop can act as the -builder too but is not recommended. Or the login machine can also -perform the builds, but is not possible yet in our setup. -.\" =================================================================== -.H 2 "Properties" -.PP -We can define the following three properties: -.BL 1m -.LI -R0: \fBSame\fP people on the \fBsame\fP machine obtain the same result -.LI -R1: \fBDifferent\fP people on the \fBsame\fP machine obtain the same result -.LI -R2: \fBDifferent\fP people on a \fBdifferent\fP machine obtain the same result -.LE -.PP -The garlic framework distinguishes two classes of results: the result of -building a derivation, which are usually binary programs, and the -results of the execution of an experiment. -.PP -Building a derivation is usually R2, the result is bit-by-bit identical -excepting some rare cases. One example is that during the build process, -a directory is listed by the order of the inodes, giving a random order -which is different between builds. These problems are tracked by the -.I https://r13y.com/ -project. In the minimal installation, less than 1% of the derivations -don't achieve the R2 property. -.PP -On the other hand, the results of the experiments are not yet R2, as -they are tied to the target machine. -.\" =================================================================== -.H 1 "Preliminary steps" -The peculiarities of our setup require that users perform some actions -to use the garlic framework. The content of this section is only -intended for the users of our machines, but can serve as reference in -other machines. -.PP -The names of the machine classes are used in the command line prompt -instead of the actual name of the machine, to indicate that the command -needs to be executed in the stated machine class, for example: -.DS I -.VERBON -builder% echo hi -hi -.VERBOFF -.DE -When the machine class is not important, it is ignored and only the -"\f(CW%\fP" prompt appears. -.\" =================================================================== -.H 2 "Configure your laptop" -.PP -To easily connect to the builder (xeon07) in one step, configure the SSH -client to perform a jump over the Cobi login node. The -.I ProxyJump -directive is only available in version 7.3 and upwards. Add the -following lines in the \f(CW\(ti/.ssh/config\fP file of your laptop: -.DS L -\fC -Host cobi - HostName ssflogin.bsc.es - User your-username-here - -Host xeon07 - ProxyJump cobi - HostName xeon07 - User your-username-here -\fP -.DE -You should be able to connect to the builder typing: -.DS I -.VERBON -laptop$ ssh xeon07 -.VERBOFF -.DE -To spot any problems try with the \f(CW-v\fP option to enable verbose -output. -.\" =================================================================== -.H 2 "Configure the builder (xeon07)" -.PP -In order to use nix you would need to be able to download the sources -from Internet. Usually the download requires the ports 22, 80 and 443 -to be open for outgoing traffic. -.PP -Check that you have network access in -xeon07 provided by the environment variables \fIhttp_proxy\fP and -\fIhttps_proxy\fP. Try to fetch a webpage with curl, to ensure the proxy -is working: -.DS I -.VERBON - xeon07$ curl x.com - x -.VERBOFF -.DE -.\" =================================================================== -.H 3 "Create a new SSH key" -.PP -There is one DSA key in your current home called "cluster" that is no -longer supported in recent SSH versions and should not be used. Before -removing it, create a new one without password protection leaving the -passphrase empty (in case that you don't have one already created) by -running: -.DS I -.VERBON -xeon07$ ssh-keygen -Generating public/private rsa key pair. -Enter file in which to save the key (\(ti/.ssh/id_rsa): -Enter passphrase (empty for no passphrase): -Enter same passphrase again: -Your identification has been saved in \(ti/.ssh/id_rsa. -Your public key has been saved in \(ti/.ssh/id_rsa.pub. -\&... -.VERBOFF -.DE -By default it will create the public key at \f(CW\(ti/.ssh/id_rsa.pub\fP. -Then add the newly created key to the authorized keys, so you can -connect to other nodes of the Cobi cluster: -.DS I -.VERBON -xeon07$ cat \(ti/.ssh/id_rsa.pub >> \(ti/.ssh/authorized_keys -.VERBOFF -.DE -Finally, delete the old "cluster" key: -.DS I -.VERBON -xeon07$ rm \(ti/.ssh/cluster \(ti/.ssh/cluster.pub -.VERBOFF -.DE -And remove the section in the configuration \f(CW\(ti/.ssh/config\fP -where the key was assigned to be used in all hosts along with the -\f(CWStrictHostKeyChecking=no\fP option. Remove the following lines (if -they exist): -.DS I -.VERBON -Host * - IdentityFile \(ti/.ssh/cluster - StrictHostKeyChecking=no -.VERBOFF -.DE -By default, the SSH client already searchs for a keypair called -\f(CW\(ti/.ssh/id_rsa\fP and \f(CW\(ti/.ssh/id_rsa.pub\fP, so there is -no need to manually specify them. -.PP -You should be able to access the login node with your new key by using: -.DS I -.VERBON -xeon07$ ssh ssfhead -.VERBOFF -.DE -.\" =================================================================== -.H 3 "Authorize access to the repository" -.PP -The sources of BSC packages are usually downloaded directly from the PM -git server, so you must be able to access all repositories without a -password prompt. -.PP -Most repositories are open to read for logged in users, but there are -some exceptions (for example the nanos6 repository) where you must have -explicitly granted read access. -.PP -Copy the contents of your public SSH key in \f(CW\(ti/.ssh/id_rsa.pub\fP -and paste it in GitLab at -.DS I -.VERBON -https://pm.bsc.es/gitlab/profile/keys -.VERBOFF -.DE -Finally verify the SSH connection to the server works and you get a -greeting from the GitLab server with your username: -.DS I -.VERBON -xeon07$ ssh git@bscpm03.bsc.es -PTY allocation request failed on channel 0 -Welcome to GitLab, @rarias! -Connection to bscpm03.bsc.es closed. -.VERBOFF -.DE -Verify that you can access the nanos6 repository (otherwise you -first need to ask to be granted read access), at: -.DS I -.VERBON -https://pm.bsc.es/gitlab/nanos6/nanos6 -.VERBOFF -.DE -Finally, you should be able to download the nanos6 git -repository without any password interaction by running: -.DS I -.VERBON -xeon07$ git clone git@bscpm03.bsc.es:nanos6/nanos6.git -.VERBOFF -.DE -Which will create the nanos6 directory. -.\" =================================================================== -.H 3 "Authorize access to MareNostrum 4" -You will also need to access MareNostrum 4 from the xeon07 machine, in -order to run experiments. Add the following lines to the -\f(CW\(ti/.ssh/config\fP file and set your user name: -.DS I -.VERBON -Host mn0 mn1 mn2 - User -.VERBOFF -.DE -Then copy your SSH key to MareNostrum 4 (it will ask you for your login -password): -.DS I -.VERBON -xeon07$ ssh-copy-id -i \(ti/.ssh/id_rsa.pub mn1 -.VERBOFF -.DE -Finally, ensure that you can connect without a password: -.DS I -.VERBON -xeon07$ ssh mn1 -\&... -login1$ -.VERBOFF -.DE -.\" =================================================================== -.H 3 "Clone the bscpkgs repository" -.PP -Once you have Internet and you have granted access to the PM GitLab -repositories you can begin building software with nix. First ensure -that the nix binaries are available from your shell in xeon07: -.DS I -.VERBON -xeon07$ nix --version -nix (Nix) 2.3.6 -.VERBOFF -.DE -Now you are ready to build and install packages with nix. Clone the -bscpkgs repository: -.DS I -.VERBON -xeon07$ git clone git@bscpm03.bsc.es:rarias/bscpkgs.git -.VERBOFF -.DE -Nix looks in the current folder for a file named \f(CWdefault.nix\fP for -packages, so go to the bscpkgs directory: -.DS I -.VERBON -xeon07$ cd bscpkgs -.VERBOFF -.DE -Now you should be able to build nanos6 (which is probably already -compiled): -.DS I -.VERBON -xeon07$ nix-build -A bsc.nanos6 -\&... -/nix/store/...2cm1ldx9smb552sf6r1-nanos6-2.4-6f10a32 -.VERBOFF -.DE -The installation is placed in the nix store (with the path stated in -the last line of the build process), with the \f(CWresult\fP symbolic -link pointing to the same location: -.DS I -.VERBON -xeon07$ readlink result -/nix/store/...2cm1ldx9smb552sf6r1-nanos6-2.4-6f10a32 -.VERBOFF -.DE -.\" =================================================================== -.H 2 "Configure the login and target (MareNostrum 4)" -.PP -In order to execute the programs in MareNostrum 4, you first need load -some utilities in the PATH. Add to the end of the file -\f(CW\(ti/.bashrc\fP in MareNostrum 4 the following line: -.DS I -.VERBON -export PATH=/gpfs/projects/bsc15/nix/bin:$PATH -.VERBOFF -.DE -Then logout and login again (our source the \f(CW\(ti/.bashrc\fP file) -and check that now you have the \f(CWnix-develop\fP command available: -.DS I -.VERBON -login1$ which nix-develop -/gpfs/projects/bsc15/nix/bin/nix-develop -.VERBOFF -.DE -The new utilities are available both in the login nodes and in the -compute (target) nodes, as they share the file system over the network. -.\" =================================================================== -.H 1 "Overview" -.PP +.LP The garlic framework is designed to fulfill all the requirements of an experimenter in all the steps up to publication. The experience gained while using it suggests that we move along three stages despicted in the following diagram: -.DS CB -.S 9p 10p +.DS L +.SM .PS 5 -linewid=1; +linewid=1.4; +arcrad=1; right -box "Source" "code" -arrow "Development" above -box "Program" -arrow "Experiment" above -box "Results" -arrow "Data" "exploration" -box "Figures" +S: box "Source" "code" +arrow "Development" invis +#move "Development" above +P: box "Program" +arrow "Experimentation" invis +R:box "Results" +arrow "Data" "exploration" invis +F:box "Figures" + +arc cw from 1/2 of the way between S.n and S.ne \ + to 1/2 of the way between P.nw and P.n ->; +arc cw from 1/2 of the way between P.s and P.sw \ + to 1/2 of the way between S.se and S.s ->; + +arc cw from 1/2 of the way between P.n and P.ne \ + to 1/2 of the way between R.nw and R.n ->; +arc cw from 1/2 of the way between R.s and R.sw \ + to 1/2 of the way between P.se and P.s ->; + +arc cw from 1/2 of the way between R.n and R.ne \ + to 1/2 of the way between F.nw and F.n ->; +arc cw from 1/2 of the way between F.s and F.sw \ + to 1/2 of the way between R.se and R.s ->; .PE -.S P P .DE In the development phase the experimenter changes the source code in order to introduce new features or fix bugs. Once the program is @@ -413,8 +117,305 @@ need to be introduced (or even in the source code of the program). Therefore, the experimenter may move forward and backwards along three phases several times. The garlic framework provides support for all the three stages (with different degrees of madurity). -.H 1 "Development (work in progress)" +.\" =================================================================== +.NH 2 +Machines and clusters +.LP +Our current setup employs multiple machines to build and execute the +experiments. Each cluster and node has it's own name and will be +different in other clusters. Therefore, instead of using the names of +the machines we use machine classes to generalize our setup. Those +machine clases currently correspond to a physical machine each: +.IP \(bu 12p +.B Builder +(xeon07): runs the nix-daemon and performs the builds in /nix. Requires +root access to setup the +.I nix-daemon +with multiple users. +.IP \(bu +.B Target +(MareNostrum 4 compute nodes): the nodes where the experiments +are executed. It doesn't need to have /nix installed or root access. +.IP \(bu +.B Login +(MareNostrum 4 login nodes): used to allocate resources and run jobs. It +doesn't need to have /nix installed or root access. +.IP \(bu +.B Laptop +(where the keyboard is attached, can be anything): used to connect to the other machines. +No root access is required or /nix, but needs to be able to connect to +the builder. +.LP +The machines don't need to be different of each others, as one machine +can implement several classes. For example the laptop can act as the +builder too but is not recommended. Or the login machine can also +perform the builds, but is not possible yet in our setup. +.\" =================================================================== +.NH 2 +Reproducibility +.LP +An effort to facilitate the reproducibility of the experiments has been +done, with varying degrees of success. The names of the different levels +of reproducibility have not been yet standarized, so we define our own +to avoid any confusion. We define three levels of reproducibility based +on the people and the machine involved: +.IP \(bu 12p +R0: The \fIsame\fP people on the \fIsame\fP machine obtain the same result +.IP \(bu +R1: \fIDifferent\fP people on the \fIsame\fP machine obtain the same result +.IP \(bu +R2: \fIDifferent\fP people on a \fIdifferent\fP machine obtain the same result +.LP +The garlic framework distinguishes two types of results: the result of +\fIbuilding a derivation\fP (usually building a binary or a library from the +sources) and the results of the \fIexecution of an experiment\fP (typically +those are the measurements performed during the execution of the program +of study). .PP +For those two types, the meaning of +.I "same result" +is different. In the case of building a binary, we define the same +result if it is bit-by-bit identical. In the packages provided by nixos +is usually the case except some rare cases. One example is that during the build process, +a directory is listed by the order of the inodes, giving a random order +which is different between builds. These problems are tracked by the +.URL https://r13y.com/ r13y +project. About 99% of the derivations of the minimal package set achieve +the R2 property. +.PP +On the other hand, the results of the experiments are always bit-by-bit +different. So we change the definition to state that they are the same +if the conclusions that can be obtained are the same. In particular, we +assume that the results are within the confidence interval. With this +definition, all experiments are currently R1. The reproducibility level +R2 is not posible yet as the software is compiled to support only the +target machine, with an specific interconnection. +.\" =================================================================== +.bp +.NH 1 +Preliminary steps +.LP +The peculiarities of our setup require that users perform some actions +to use the garlic framework. The content of this section is only +intended for the users of our machines, but can serve as reference in +other machines. +.PP +The names of the machine classes are used in the command line prompt +instead of the actual name of the machine, to indicate that the command +needs to be executed in the stated machine class, for example: +.CS +builder% echo hi +hi +.CE +When the machine class is not important, it is ignored and only the +.CI "%" +prompt appears. +.\" =================================================================== +.NH 2 +Configure your laptop +.LP +To easily connect to the builder (xeon07) in one step, configure the SSH +client to perform a jump over the Cobi login node. The +.I ProxyJump +directive is only available in version 7.3 and upwards. Add the +following lines in the +.CI \(ti/.ssh/config +file of your laptop: +.CS +Host cobi + HostName ssflogin.bsc.es + User your-username-here + +Host xeon07 + ProxyJump cobi + HostName xeon07 + User your-username-here +.CE +You should be able to connect to the builder typing: +.CS +laptop$ ssh xeon07 +.CE +To spot any problems try with the +.CI -v +option to enable verbose output. +.\" =================================================================== +.NH 2 +Configure the builder (xeon07) +.LP +In order to use nix you would need to be able to download the sources +from Internet. Usually the download requires the ports 22, 80 and 443 +to be open for outgoing traffic. +.PP +Check that you have network access in +xeon07 provided by the environment variables \fIhttp_proxy\fP and +\fIhttps_proxy\fP. Try to fetch a webpage with curl, to ensure the proxy +is working: +.CS + xeon07$ curl x.com + x +.CE +.\" =================================================================== +.NH 3 +Create a new SSH key +.LP +There is one DSA key in your current home called "cluster" that is no +longer supported in recent SSH versions and should not be used. Before +removing it, create a new one without password protection leaving the +passphrase empty (in case that you don't have one already created) by +running: +.CS +xeon07$ ssh-keygen +Generating public/private rsa key pair. +Enter file in which to save the key (\(ti/.ssh/id_rsa): +Enter passphrase (empty for no passphrase): +Enter same passphrase again: +Your identification has been saved in \(ti/.ssh/id_rsa. +Your public key has been saved in \(ti/.ssh/id_rsa.pub. +\&... +.CE +By default it will create the public key at \f(CW\(ti/.ssh/id_rsa.pub\fP. +Then add the newly created key to the authorized keys, so you can +connect to other nodes of the Cobi cluster: +.CS +xeon07$ cat \(ti/.ssh/id_rsa.pub >> \(ti/.ssh/authorized_keys +.CE +Finally, delete the old "cluster" key: +.CS +xeon07$ rm \(ti/.ssh/cluster \(ti/.ssh/cluster.pub +.CE +And remove the section in the configuration \f(CW\(ti/.ssh/config\fP +where the key was assigned to be used in all hosts along with the +\f(CWStrictHostKeyChecking=no\fP option. Remove the following lines (if +they exist): +.CS +Host * + IdentityFile \(ti/.ssh/cluster + StrictHostKeyChecking=no +.CE +By default, the SSH client already searchs for a keypair called +\f(CW\(ti/.ssh/id_rsa\fP and \f(CW\(ti/.ssh/id_rsa.pub\fP, so there is +no need to manually specify them. +.PP +You should be able to access the login node with your new key by using: +.CS +xeon07$ ssh ssfhead +.CE +.\" =================================================================== +.NH 3 +Authorize access to the repository +.LP +The sources of BSC packages are usually downloaded directly from the PM +git server, so you must be able to access all repositories without a +password prompt. +.PP +Most repositories are open to read for logged in users, but there are +some exceptions (for example the nanos6 repository) where you must have +explicitly granted read access. +.PP +Copy the contents of your public SSH key in \f(CW\(ti/.ssh/id_rsa.pub\fP +and paste it in GitLab at +.CS +https://pm.bsc.es/gitlab/profile/keys +.CE +Finally verify the SSH connection to the server works and you get a +greeting from the GitLab server with your username: +.CS +xeon07$ ssh git@bscpm03.bsc.es +PTY allocation request failed on channel 0 +Welcome to GitLab, @rarias! +Connection to bscpm03.bsc.es closed. +.CE +Verify that you can access the nanos6 repository (otherwise you +first need to ask to be granted read access), at: +.CS +https://pm.bsc.es/gitlab/nanos6/nanos6 +.CE +Finally, you should be able to download the nanos6 git +repository without any password interaction by running: +.CS +xeon07$ git clone git@bscpm03.bsc.es:nanos6/nanos6.git +.CE +Which will create the nanos6 directory. +.\" =================================================================== +.NH 3 +Authorize access to MareNostrum 4 +.LP +You will also need to access MareNostrum 4 from the xeon07 machine, in +order to run experiments. Add the following lines to the +\f(CW\(ti/.ssh/config\fP file and set your user name: +.CS +Host mn0 mn1 mn2 + User +.CE +Then copy your SSH key to MareNostrum 4 (it will ask you for your login +password): +.CS +xeon07$ ssh-copy-id -i \(ti/.ssh/id_rsa.pub mn1 +.CE +Finally, ensure that you can connect without a password: +.CS +xeon07$ ssh mn1 +\&... +login1$ +.CE +.\" =================================================================== +.NH 3 +Clone the bscpkgs repository +.LP +Once you have Internet and you have granted access to the PM GitLab +repositories you can begin building software with nix. First ensure +that the nix binaries are available from your shell in xeon07: +.CS +xeon07$ nix --version +nix (Nix) 2.3.6 +.CE +Now you are ready to build and install packages with nix. Clone the +bscpkgs repository: +.CS +xeon07$ git clone git@bscpm03.bsc.es:rarias/bscpkgs.git +.CE +Nix looks in the current folder for a file named \f(CWdefault.nix\fP for +packages, so go to the bscpkgs directory: +.CS +xeon07$ cd bscpkgs +.CE +Now you should be able to build nanos6 (which is probably already +compiled): +.CS +xeon07$ nix-build -A bsc.nanos6 +\&... +/nix/store/...2cm1ldx9smb552sf6r1-nanos6-2.4-6f10a32 +.CE +The installation is placed in the nix store (with the path stated in +the last line of the build process), with the \f(CWresult\fP symbolic +link pointing to the same location: +.CS +xeon07$ readlink result +/nix/store/...2cm1ldx9smb552sf6r1-nanos6-2.4-6f10a32 +.CE +.\" =================================================================== +.NH 2 +Configure the login and target (MareNostrum 4) +.LP +In order to execute the programs in MareNostrum 4, you first need load +some utilities in the PATH. Add to the end of the file +\f(CW\(ti/.bashrc\fP in MareNostrum 4 the following line: +.CS +export PATH=/gpfs/projects/bsc15/nix/bin:$PATH +.CE +Then logout and login again (our source the \f(CW\(ti/.bashrc\fP file) +and check that now you have the \f(CWnix-develop\fP command available: +.CS +login1$ which nix-develop +/gpfs/projects/bsc15/nix/bin/nix-develop +.CE +The new utilities are available both in the login nodes and in the +compute (target) nodes, as they share the file system over the network. +.\" =================================================================== +.bp +.NH 1 +Development +.LP During the development phase, a functional program is produced by modifying its source code. This process is generally cyclic: the developer needs to compile, debug and correct mistakes. We want to @@ -435,8 +436,9 @@ cannot accidentally link with the wrong library or modify the build process with a forgotten environment variable in the \f(CW\(ti/.bashrc\fP file. .\" =================================================================== -.H 2 "Getting the development tools" -.PP +.NH 2 +Getting the development tools +.LP To create a development environment, first copy or download the sources of your program (not the dependencies) in a new directory placed in the target machine @@ -446,8 +448,7 @@ The default environment contains packages commonly used to develop programs, listed in the \fIgarlic/index.nix\fP file: .\" FIXME: Unify garlic.unsafeDevelop in garlic.develop, so we can .\" specify the packages directly -.DS I -.VERBON +.CS develop = let commonPackages = with self; [ coreutils htop procps-ng vim which strace @@ -460,8 +461,7 @@ develop = let # Add more bsc packages here... ]; ... -.VERBOFF -.DE +.CE If you need additional packages, add them to the list, so that they become available in the environment. Those may include any dependency required to build your program. @@ -469,14 +469,12 @@ required to build your program. Then use the build machine (xeon07) to build the .I garlic.develop derivation: -.DS I -.VERBON +.CS build% nix-build -A garlic.develop \&... build% grep ln result ln -fs /gpfs/projects/.../bin/stage1 .nix-develop -.VERBOFF -.DE +.CE Copy the \fIln\fP command and run it in the target machine (MareNostrum\~4), inside the new directory used for your program development, to create the link \fI.nix-develop\fP (which is used to @@ -493,76 +491,68 @@ environment link is created, there is no need to repeat these steps again. Before entering the environment, you will need to access the required resources for your program, which may include several compute nodes. .\" =================================================================== -.H 2 "Allocating resources for development" -.PP +.NH 2 +Allocating resources for development +.LP Our target machine (MareNostrum 4) provides an interactive shell, that can be requested with the number of computational resources required for development. To do so, connect to the login node and allocate an interactive session: -.DS I -.VERBON +.CS % ssh mn1 login% salloc ... target% -.VERBOFF -.DE +.CE This operation may take some minutes to complete depending on the load of the cluster. But once the session is ready, any subsequent execution of programs will be immediate. .\" =================================================================== -.H 2 "Accessing the developement environment" +.NH 2 +Accessing the developement environment .PP The utility program \fInix-develop\fP has been designed to access the development environment of the current directory, by looking for the \fI.nix-develop\fP file. It creates a namespace where the required packages are installed and ready to be used. Now you can access the newly created environment by running: -.DS I -.VERBON +.CS target% nix-develop develop% -.VERBOFF -.DE +.CE The spawned shell contains all the packages pre-defined in the \fIgarlic.develop\fP derivation, and can now be accessed by typing the name of the commands. -.DS I -.VERBON +.CS develop% which gcc /nix/store/azayfhqyg9...s8aqfmy-gcc-wrapper-9.3.0/bin/gcc develop% which gdb /nix/store/1c833b2y8j...pnjn2nv9d46zv44dk-gdb-9.2/bin/gdb -.VERBOFF -.DE +.CE If you need additional packages, you can add them in the \fIgarlic/index.nix\fP file as mentioned previously. To keep the same current resources, so you don't need to wait again for the resources to be allocated, exit only from the development shell: -.DS I -.VERBON +.CS develop% exit target% -.VERBOFF -.DE +.CE Then update the .I .nix-develop link and enter into the new develop environment: -.DS I -.VERBON +.CS target% nix-develop develop% -.VERBOFF -.DE +.CE .\" =================================================================== -.H 2 "Execution" +.NH 2 +Execution +.LP The allocated shell can only execute tasks in the current node, which may be enough for some tests. To do so, you can directly run your program as: -.DS I -.VERBON +.CS develop$ ./program -.VERBOFF -.DE +.CE If you need to run a multi-node program, typically using MPI communications, then you can do so by using srun. Notice that you need to allocate several nodes when calling salloc previously. The srun @@ -570,49 +560,45 @@ command will execute the given program \fBoutside\fP the development environment if executed as-is. So we re-enter the develop environment by calling nix-develop as a wrapper of the program: .\" FIXME: wrap srun to reenter the develop environment by its own -.DS I -.VERBON +.CS develop$ srun nix-develop ./program -.VERBOFF -.DE +.CE .\" =================================================================== -.H 2 "Debugging" +.NH 2 +Debugging +.LP The debugger can be used to directly execute the program if is executed in only one node by using: -.DS I -.VERBON +.CS develop$ gdb ./program -.VERBOFF -.DE +.CE Or it can be attached to an already running program by using its PID. You will need to first connect to the node running it (say target2), and run gdb inside the nix-develop environment. Use .I squeue to see the compute nodes running your program: -.DS I -.VERBON +.CS login$ ssh target2 target2$ cd project-develop target2$ nix-develop develop$ gdb -p $pid -.VERBOFF -.DE +.CE You can repeat this step to control the execution of programs running in different nodes simultaneously. .PP In those cases where the program crashes before being able to attach the debugger, enable the generation of core dumps: -.DS I -.VERBON +.CS develop$ ulimit -c unlimited -.VERBOFF -.DE +.CE And rerun the program, which will generate a core file that can be opened by gdb and contains the state of the memory when the crash happened. Beware that the core dump file can be very large, depending on the memory used by your program at the crash. -.H 2 "Git branch name convention" -.PP +.\" =================================================================== +.NH 2 +Git branch name convention +.LP The garlic benchmark imposes a set of requirements to be meet for each application in order to coordinate the execution of the benchmark and the gathering process of the results. @@ -628,143 +614,404 @@ The branch name is formed by adding keywords separated by the "+" character. The keywords must follow the given order and can only appear zero or once each. At least one keyword must be included. The following keywords are available: -.LB 12 2 0 0 -.LI \f(CWmpi\fP +.DS L +.IP \f(CWmpi\fP 5m A significant fraction of the communications uses only the standard MPI (without extensions like TAMPI). -.LI \f(CWtampi\fP +.IP \f(CWtampi\fP A significant fraction of the communications uses TAMPI. -.LI \f(CWsend\fP +.IP \f(CWsend\fP A significant part of the MPI communication uses the blocking family of -methods (MPI_Send, MPI_Recv, MPI_Gather...). -.LI \f(CWisend\fP +methods +.I MPI_Send , ( +.I MPI_Recv , +.I MPI_Gather "...)." +.IP \f(CWisend\fP A significant part of the MPI communication uses the non-blocking family -of methods (MPI_Isend, MPI_Irecv, MPI_Igather...). -.LI \f(CWrma\fP +of methods +.I MPI_Isend , ( +.I MPI_Irecv , +.I MPI_Igather "...)." +.IP \f(CWrma\fP A significant part of the MPI communication uses remote memory access -(one-sided) methods (MPI_Get, MPI_Put...). -.LI \f(CWseq\fP +(one-sided) methods +.I MPI_Get , ( +.I MPI_Put "...)." +.IP \f(CWseq\fP The complete execution is sequential in each process (one thread per process). -.LI \f(CWomp\fP +.IP \f(CWomp\fP A significant fraction of the execution uses the OpenMP programming model. -.LI \f(CWoss\fP +.IP \f(CWoss\fP A significant fraction of the execution uses the OmpSs-2 programming model. -.LI \f(CWtask\fP +.IP \f(CWtask\fP A significant part of the execution involves the use of the tasking model. -.LI \f(CWtaskfor\fP +.IP \f(CWtaskfor\fP A significant part of the execution uses the taskfor construct. -.LI \f(CWfork\fP +.IP \f(CWfork\fP A significant part of the execution uses the fork-join model (including hybrid programming techniques with parallel computations and sequential communications). -.LI \f(CWsimd\fP +.IP \f(CWsimd\fP A significant part of the computation has been optimized to use SIMD instructions. -.LE -.PP -In the \fBAppendix A\fP there is a flowchart to help the decision -process of the branch name. -.PP -Additional user defined keywords may be added at the end using the -separator "+" as well. User keywords must consist of capital -alphanumeric characters only and be kept short. These additional -keywords must be different (case insensitive) to the already defined -above. Some examples: -.DS I -.VERBON +.DE +.LP +In the +.URL #appendixA "Appendix A" +there is a flowchart to help the decision +process of the branch name. Additional user defined keywords may be +added at the end using the separator "+" as well. User keywords must +consist of capital alphanumeric characters only and be kept short. These +additional keywords must be different (case insensitive) to the already +defined above. Some examples: +.CS garlic/mpi+send+seq garlic/mpi+send+omp+fork garlic/mpi+isend+oss+task garlic/tampi+isend+oss+task garlic/tampi+isend+oss+task+COLOR garlic/tampi+isend+oss+task+COLOR+BTREE -.VERBOFF -.DE +.CE .\" =================================================================== -.H 1 "Experimentation" -The experimentation phase begins with a functional program which is the -object of study. The experimenter then designs an experiment aimed at -measuring some properties of the program. The experiment is then -executed and the results are stored for further analysis. -.H 2 "Writing the experiment configuration" +.bp +.NH 1 +Experimentation +.LP +During the experimentation, a program is studied by running it and +measuring some properties. The experimenter is in charge of the +experiment design, which is typically controlled by a single +.I nix +file placed in the +.CI garlic/exp +subdirectory. +Experiments are formed by several +.I "experimental units" +or simply +.I units . +A unit is the result of each unique configuration of the experiment +(typically involves the cartesian product of all factors) and +consists of several shell scripts executed sequentially to setup the +.I "execution environment" , +which finally launch the actual program being analyzed. +The scripts that prepare the environment and the program itself are +called the +.I stages +of the execution and altogether form the +.I "execution pipeline" +or simply the +.I pipeline . +The experimenter must know with very good details all the stages +involved in the pipeline, as they have a large impact on the execution. .PP -The term experiment is quite overloaded in this document. We are going -to see how to write the recipe that describes the execution pipeline of -an experiment. +Additionally, the execution time is impacted by the target machine in +which the experiments run. The software used for the benchmark is +carefully configured and tuned for the hardware used in the execution; +in particular, the experiments are designed to run in MareNostrum 4 +cluster with the SLURM workload manager and the Omni-Path +interconnection network. In the future we plan to add +support for other clusters in order to execute the experiments in other +machines. +.\"##################################################################### +.NH 2 +Isolation +.LP +The benchmark is designed so that both the compilation of every software +package and the execution of the experiment is performed under strict +conditions. We can ensure that two executions of the same experiment are +actually running the same program in the same software environment. .PP -Within the garlic benchmark, experiments are typically sorted by a -hierarchy depending on which application they belong. Take a look at the -\fCgarlic/exp\fP directory and you will find some folders and .nix -files. +All the software used by an experiment is included in the +.I "nix store" +which is, by convention, located at the +.CI /nix +directory. Unfortunately, it is common for libraries to try to load +software from other paths like +.CI /usr +or +.CI /lib . +It is also common that configuration files are loaded from +.CW /etc +and from the home directory of the user that runs the experiment. +Additionally, some environment variables are recognized by the libraries +used in the experiment, which change their behavior. As we cannot +control the software and configuration files in those directories, we +couldn't guarantee that the execution behaves as intended. .PP -Each of those recipes files describe a function that returns a -derivation, which, once built will result in the first stage script of -the execution pipeline. +In order to avoid this problem, we create a +.I sandbox +where only the files in the nix store are available (with some other +exceptions). Therefore, even if the libraries try to access any path +outside the nix store, they will find that the files are not there +anymore. Additionally, the environment variables are cleared before +entering the environment (with some exceptions as well). +.\"##################################################################### +.NH 2 +Execution pipeline +.LP +Several predefined stages form the +.I standard +execution pipeline and are defined in the +.I stdPipeline +array. The standard pipeline prepares the resources and the environment +to run a program (usually in parallel) in the compute nodes. It is +divided in two main parts: +connecting to the target machine to submit a job and executing the job. +Finally, the complete execution pipeline ends by running the actual +program, which is not part of the standard pipeline, as should be +defined differently for each program. +.\"##################################################################### +.NH 3 +Job submission +.LP +Some stages are involved in the job submission: the +.I trebuchet +stage connects via +.I ssh +to the target machine and executes the next stage there. Once in the +target machine, the +.I runexp +stage computes the output path to store the experiment results, using +the user in the target machine and changes the working directory there. +In MareNostrum 4 the output path is at +.CI /gpfs/projects/bsc15/garlic/$user/out . +Then the +.I isolate +stage is executed to enter the sandbox and the +.I experiment +stage begins, which creates a directory to store the experiment output, +and launches several +.I unit +stages. .PP -The first part of states the name of the attributes required as the -input of the function. Typically some packages, common tools and options: -.DS I -.VERBON -{ - stdenv -, stdexp -, bsc -, targetMachine -, stages -, garlicTools -}: -.VERBOFF +Each unit executes a +.I sbatch +stage which runs the +.I sbatch(1) +program with a job script that simply calls the next stage. The +sbatch program internally reads the +.CW /etc/slurm/slurm.conf +file from outside the sandbox, so we must explicitly allow this file to +be available, as well as the +.I munge +socket used for authentication by the SLURM daemon. Once the jobs are +submitted to SLURM, the experiment stage ends and the trebuchet finishes +the execution. The jobs will be queued for execution without any other +intervention from the user. +.PP +The rationale behind running sbatch from the sandbox is because the +options provided in environment variables override the options from the +job script. Therefore, we avoid this problem by running sbatch from the +sandbox, where the interfering environment variables are removed. The +sbatch program is also provided in the +.I "nix store" , +with a version compatible with the SLURM daemon running in the target +machine. +.\"##################################################################### +.NH 3 +Job execution +.LP +Once an unit job has been selected for execution, SLURM +allocates the resources (usually several nodes) and then selects one of +the nodes to run the job script: it is not executed in parallel yet. +The job script runs from a child process forked from on of the SLURM +daemon processes, which are outside the sandbox. Therefore, we first run the +.I isolate +stage +to enter the sandbox again. +.PP +The next stage is called +.I control +and determines if enough data has been generated by the experiment unit +or if it should continue repeating the execution. At the current time, +it is only implemented as a simple loop that runs the next stage a fixed +amount of times (by default, it is repeated 30 times). +.PP +The following stage is +.I srun +which launches several copies of the next stage to run in +parallel (when using more than one task). Runs one copy per task, +effectively creating one process per task. The CPUs affinity is +configured by the parameter +.I --cpu-bind +and is important to set it correctly (see more details in the +.I srun(1) +manual). Appending the +.I verbose +value to the cpu bind option causes srun to print the assigned affinity +of each task, which is very valuable when examining the execution log. +.PP +The mechanism by which srun executes multiple processes is the same used +by sbatch, it forks from a SLURM daemon running in the computing nodes. +Therefore, the execution begins outside the sandbox. The next stage is +.I isolate +which enters again the sandbox in every task. All remaining stages are +running now in parallel. +.\" ################################################################### +.NH 3 +The program +.LP +At this point in the execution, the standard pipeline has been +completely executed, and we are ready to run the actual program that is +the matter of the experiment. Usually, programs require some arguments +to be passed in the command line. The +.I exec +stage sets the arguments (and optionally some environment variables) and +executes the last stage, the +.I program . +.PP +The experimenters are required to define these last stages, as they +define the specific way in which the program must be executed. +Additional stages may be included before or after the program run, so +they can perform additional steps. +.\" ################################################################### +.NH 3 +Stage overview +.LP +The complete execution pipeline using the standard pipeline is shown in +the Table 1. Some properties are also reflected about the execution +stages. +.DS L +.TS +center; +lB cB cB cB cB cB +l c c c c c. +_ +Stage Where Safe Copies User Std +_ +trebuchet * no no yes yes +runexp login no no no yes +isolate login no no no yes +experiment login yes no no yes +unit login yes no no yes +sbatch login yes no no yes +_ +isolate target no no no yes +control target yes no no yes +srun target yes no no yes +isolate target no yes no yes +_ +exec target yes yes no no +program target yes yes no no +_ +.TE .DE -.PP -Notice the \fCtargetMachine\fP argument, which provides information -about the machine in which the experiment will run. You should write -your experiment in such a way that runs in multiple clusters. -.DS I -.VERBON +.LP +.B "Table 1" : +The stages of a complete execution pipeline. The +.I where +column determines where the stage is running, +.I safe +states if the stage begins the execution inside the sandbox, +.I user +if it can be executed directly by the user, +.I copies +if there are several instances running in parallel and +.I std +if is part of the standard execution pipeline. +.\" ################################################################### +.NH 2 +Writing the experiment +.LP +The experiments are generally written in the +.I nix +language as it provides very easy management for the packages an their +customization. An experiment file is formed by several parts, which +produce the execution pipeline when built. The experiment file describes +a function (which is typical in nix) and takes as argument an +attribute set with some common packages, tools and options: +.CS +{ stdenv, bsc, stdexp, targetMachine, stages, garlicTools }: +.CE +The +.I bsc +attribute contains all the BSC and nixpkgs packages, as defined in the +overlay. The +.I stdexp +contains some useful tools and functions to build the experiments, like +the standard execution pipeline, so you don't need to redefine the +stages in every experiment. The configuration of the target machine is +specified in the +.I targetMachine +attribute which includes information like the number of CPUs per node or +the cache line length. It is used to define the experiments in such a +way that they are not tailored to an specific machine hardware +(sometimes this is not posible). All the execution stages are available +in the +.I stages +attribute which are used when some extra stage is required. And finally, +the +.I garlicTools +attribute provide some functions to aid common tasks when defining the +experiment configuration +.\" ################################################################### +.NH 3 +Experiment configuration +.LP +The next step is to define some variables in a +.CI let +\&... +.CI in +\&... +.CI ; +construct, to be used later. The first one, is the variable +configuration of the experiment called +.I varConf , +which include all +the factors that will be changed. All the attributes of this set +.I must +be arrays, even if they only contain one element: +.CS varConf = { blocks = [ 1 2 4 ]; nodes = [ 1 ]; }; -.VERBOFF -.DE -.PP -The \fCvarConf\fP is the attribute set that allows you to vary some -factors in the experiment. -.DS I -.VERBON +.CE +In this example, the variable +.I blocks +will be set to the values 1, 2 and 4; while +.I nodes +will remain set to 1 always. These variables are used later to build the +experiment configuration. The +.I varConf +is later converted to a list of attribute sets, where every attribute +contains only one value, covering all the combinations (the Cartesian +product is computed): +.CS +[ { blocks = 1; nodes = 1; } + { blocks = 2; nodes = 1; } + { blocks = 4; nodes = 1; } ] +.CE +These configurations are then passed to the +.I genConf +function one at a time, which is the central part of the description of +the experiment: +.CS genConf = var: fix (self: targetMachine.config // { expName = "example"; unitName = self.expName + "-b" + toString self.blocks; blocks = var.blocks; - nodes = var.nodes; cpusPerTask = 1; tasksPerNode = self.hw.socketsPerNode; + nodes = var.nodes; }); -.VERBOFF -.DE -.PP -The \fCgenConf\fP function is the central part of the description of the -experiment. Takes as input \fBone\fP configuration from the cartesian -product of -.I varConfig -and returns the complete configuration. In our case, it will be -called 3 times, with the following inputs at each time: -.DS I -.VERBON -{ blocks = 1; nodes = 1; } +.CE +It takes as input +.I one +configuration from the Cartesian product, for example: +.CS { blocks = 2; nodes = 1; } -{ blocks = 4; nodes = 1; } -.VERBOFF -.DE -.PP -The return value can be inspected by calling the function in the -interactive nix repl: -.DS I -.VERBON +.CE +And returns the complete configuration for that input, which usually +expand the input configuration with some derived variables along with +other constant parameters. The return value can be inspected by calling +the function in the interactive +.I "nix repl" +session: +.CS nix-repl> genConf { blocks = 2; nodes = 1; } { blocks = 2; @@ -780,9 +1027,7 @@ nix-repl> genConf { blocks = 2; nodes = 1; } tasksPerNode = 2; unitName = "example-b2"; } -.VERBOFF -.DE -.PP +.CE Some configuration parameters were added by .I targetMachine.config , such as the @@ -801,7 +1046,228 @@ By following this rule, the experiments can easily be ported to machines with other hardware characteristics, and we only need to define the hardware details once. Then all the experiments will be updated based on those details. -.H 2 "First steps" +.\" ################################################################### +.NH 3 +Adding the stages +.LP +Once the configuration is ready, it will be passed to each stage of the +execution pipeline which will take the parameters it needs. The +connection between the parameters and how they are passed to each stage +is done either by convention or manually. There is a list of parameters that +are recognized by the standard pipeline stages. For example the +attribute +.I nodes , +it is recognized as the number of nodes in the standard +.I sbatch +stage when allocating resources: +.DS L +.TS +center; +lB lB cB cB lB +l l c c l. +_ +Stage Attribute Std Req Description +_ +* nixPrefix yes yes Path to the nix store in the target +unit expName yes yes Name of the experiment +unit unitName yes yes Name of the unit +control loops yes yes Number of runs of each unit +sbatch cpusPerTask yes yes Number of CPUs per task (process) +sbatch jobName yes yes Name of the job +sbatch nodes yes yes Number of nodes allocated +sbatch ntasksPerNode yes yes Number of tasks (processes) per node +sbatch qos yes no Name of the QoS queue +sbatch reservation yes no Name of the reservation +sbatch time yes no Maximum allocated time (string) +_ +exec argv no no Array of arguments to execve +exec env no no Environment variable settings +exec pre no no Code before the execution +exec post no no Code after the execution +_ +.TE +.DE +.QP +.B "Table 2" : +The attributes recognized by the stages in the execution pipeline. The +column +.I std +indicates if they are part of the standard execution pipeline. Some +attributes are required as indicated by the +.I req +column. +.QE +.LP +Other attribute names can be used to specify custom information used in +additional stages. The two most common stages required to complete the +pipeline are the +.I exec +and the +.I program . +Let see an example of +.I exec : +.CS +exec = {nextStage, conf, ...}: stages.exec { + inherit nextStage; + argv = [ "--blocks" conf.blocks ]; +}; +.CE +The +.I exec +stage is defined as a function that uses the predefined +.I stages.exec +stage, which accepts the +.I argv +array, and sets the argv of the program. In our case, we fill the +.I argv +array by setting the +.I --blocks +parameter to the number of blocks, specified in the configuration in the +attribute +.I blocks . +The name of this attribute can be freely choosen, as long as the +.I exec +stage refers to it properly. The +.I nextStage +attribute is mandatory in all stages, and is automatically set when +building the pipeline. +.PP +The last step is to configure the actual program to be executed, +which can be specified as another stage: +.CS +program = {nextStage, conf, ...}: bsc.apps.example; +.CE +Notice that this function only returns the +.I bsc.apps.example +derivation, which will be translated to the path where the example +program is installed. If the program is located inside a directory +(typically +.I bin ), +it must define the attribute +.I programPath +in the +.I bsc.apps.example +derivation, which points to the executable program. An example: +.CS +stdenv.mkDerivation { +\& ... + programPath = "/bin/example"; +\& ... +}; +.CE +.\" ################################################################### +.NH 3 +Building the pipeline +.LP +With the +.I exec +and +.I program +stages defined and the ones provided by the standard pipeline, the +complete execution pipeline can be formed. To do so, the stages are +placed in an array, in the order they will be executed: +.CS +pipeline = stdexp.stdPipeline ++ [ exec program ]; +.CE +The attribute +.I stdexp.stdPipeline +contains the standard pipeline stages, and we only append our two +defined stages +.I exec +and +.I program . +The +.I pipeline +is an array of functions, and must be transformed in something that can +be executed in the target machine. For that purpose, the +.I stdexp +provides the +.I genExperiment +function, which takes the +.I pipeline +array and the list of configurations and builds the execution pipeline: +.CS +stdexp.genExperiment { inherit configs pipeline; } +.CE +The complete example experiment can be shown here: +.CS +{ stdenv, stdexp, bsc, targetMachine, stages }: +with stdenv.lib; +let + # Initial variable configuration + varConf = { + blocks = [ 1 2 4 ]; + nodes = [ 1 ]; + }; + # Generate the complete configuration for each unit + genConf = c: targetMachine.config // rec { + expName = "example"; + unitName = "${expName}-b${toString blocks}"; + inherit (targetMachine.config) hw; + inherit (c) blocks nodes; + loops = 30; + ntasksPerNode = hw.socketPerNode; + cpusPerTask = hw.cpusPerSocket; + jobName = unitName; + }; + # Compute the array of configurations + configs = stdexp.buildConfigs { + inherit varConf genConf; + }; + exec = {nextStage, conf, ...}: stages.exec { + inherit nextStage; + argv = [ "--blocks" conf.blocks ]; + }; + program = {nextStage, conf, ...}: bsc.garlic.apps.example; + pipeline = stdexp.stdPipeline ++ [ exec program ]; +in + stdexp.genExperiment { inherit configs pipeline; } +.CE +.\" ################################################################### +.NH 3 +Adding the experiment to the index +.LP +The experiment file must be located in a named directory inside the +.I garlic/exp +directory. The name is usually the program name. Once the experiment is +placed in a nix file, it must be added to the index of experiments, so +it can be build. The index is hyerarchically organized as attribute +sets, with +.I exp +containing all the experiments; +.I exp.example +the experiments of the +.I example +program; and +.I exp.example.test1 +referring to the +.I test1 +experiment of the +.I example +program. Additional attributes can be added, like +.I exp.example.test1.variantA +to handle more details. +.PP +For this example we are going to use the attribute path +.I exp.example.test +and add it to the index, in the +.I garlic/exp/index.nix +file. We append to the end of the attribute set, the following +definition: +.CS +\&... + example = { + test = callPackage ./example/test.nix { }; + }; +} +.CE +The experiment can now be built with: +.CS +builder% nix-build -A exp.example.test +.CE +.\" ################################################################### +.NH 2 +Recommendations .PP The complete results generally take a long time to be finished, so it is advisable to design the experiments iteratively, in order to quickly @@ -835,12 +1301,14 @@ shared among experiments gets assigned the same hash. Therefore, you can iteratively add more units to an experiment, and if they are already executed (and the results were generated) is reused. .SK -.APP "" "Branch name diagram" -.DS CB -.S -3 10 +.bp +.SH 1 +Appendix A: Branch name diagram +.LP +.TAG appendixA +.DS B +.SM .PS 4.4/25.4 copy "gitbranch.pic" .PE -.S P P .DE -.TC From 25208a81580f3312d497548aa8c777d1cff93dbb Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 4 Feb 2021 15:03:28 +0100 Subject: [PATCH 469/987] user guide: add tar.gz target for the web --- garlic/doc/Makefile | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/garlic/doc/Makefile b/garlic/doc/Makefile index 5de21d3..91f4377 100644 --- a/garlic/doc/Makefile +++ b/garlic/doc/Makefile @@ -1,5 +1,4 @@ -all: execution.pdf execution.utf8 execution.ascii pp.pdf pp.utf8 pp.ascii\ - branch.pdf blackbox.pdf ug.pdf ug.html +all: ug.pdf ug.html doc.tar.gz TTYOPT=-rPO=4m -rLL=72m PDFOPT=-dpaper=a4 -rPO=4c -rLL=13c @@ -18,6 +17,7 @@ blackbox.pdf: blackbox.ms Makefile REFER=ref.i groff -ms $(PREPROC) -dpaper=a4 -rPO=2c -rLL=17c -Tpdf $< > $@ %.html: %.ms Makefile + mkdir -p img REFER=ref.i groff -ms -mwww $(HTML_OPT) $< > $@ echo $(HTML_OPT) sed -i '/<\/head>/i' $@ @@ -34,3 +34,9 @@ blackbox.pdf: blackbox.ms Makefile %.ascii: %.ms REFER=ref.i groff -ms -mwww -c $(PREPROC) $(TTYOPT) -Tascii $^ > $@ + +doc.tar.gz: ug.pdf ug.html s.css + tar czf $@ $^ img s.css + +clean: + rm -rf img ug.pdf ug.html doc.tar.gz From 2ca58c46b4194fe9bfc2660f09474fa62903721a Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 4 Feb 2021 18:01:45 +0100 Subject: [PATCH 470/987] user guide: Add postprocessing section --- garlic/doc/.gitignore | 1 + garlic/doc/Makefile | 4 +- garlic/doc/ug.ms | 271 ++++++++++++++++++++++++++++++++++++++---- 3 files changed, 248 insertions(+), 28 deletions(-) diff --git a/garlic/doc/.gitignore b/garlic/doc/.gitignore index 6d3a60e..b5900c7 100644 --- a/garlic/doc/.gitignore +++ b/garlic/doc/.gitignore @@ -3,3 +3,4 @@ *.html *.pdf grohtml* +doc.tar.gz diff --git a/garlic/doc/Makefile b/garlic/doc/Makefile index 91f4377..97fc1ef 100644 --- a/garlic/doc/Makefile +++ b/garlic/doc/Makefile @@ -1,4 +1,4 @@ -all: ug.pdf ug.html doc.tar.gz +all: ug.pdf ug.html TTYOPT=-rPO=4m -rLL=72m PDFOPT=-dpaper=a4 -rPO=4c -rLL=13c @@ -9,7 +9,7 @@ REGISTERS=-dcurdate="`date '+%Y-%m-%d'`" REGISTERS+=-dgitcommit="`git rev-parse HEAD`" PREPROC+=$(REGISTERS) -HTML_OPT=$(PREPROC) -P-y -P-V -P-Dimg -P-i120 -Thtml +HTML_OPT=$(PREPROC) -P-Dimg -P-i120 -Thtml # Embed fonts? #POSTPROC+=-P -e diff --git a/garlic/doc/ug.ms b/garlic/doc/ug.ms index 8398fa9..3ffa709 100644 --- a/garlic/doc/ug.ms +++ b/garlic/doc/ug.ms @@ -74,28 +74,22 @@ linewid=1.4; arcrad=1; right S: box "Source" "code" -arrow "Development" invis -#move "Development" above +line "Development" invis P: box "Program" -arrow "Experimentation" invis +line "Experimentation" invis R:box "Results" -arrow "Data" "exploration" invis +line "Data" "exploration" invis F:box "Figures" - -arc cw from 1/2 of the way between S.n and S.ne \ - to 1/2 of the way between P.nw and P.n ->; -arc cw from 1/2 of the way between P.s and P.sw \ - to 1/2 of the way between S.se and S.s ->; - -arc cw from 1/2 of the way between P.n and P.ne \ - to 1/2 of the way between R.nw and R.n ->; -arc cw from 1/2 of the way between R.s and R.sw \ - to 1/2 of the way between P.se and P.s ->; - -arc cw from 1/2 of the way between R.n and R.ne \ - to 1/2 of the way between F.nw and F.n ->; -arc cw from 1/2 of the way between F.s and F.sw \ - to 1/2 of the way between R.se and R.s ->; +# Creates a "cycle" around two boxes +define cycle { + arc cw from 1/2 of the way between $1.n and $1.ne \ + to 1/2 of the way between $2.nw and $2.n ->; + arc cw from 1/2 of the way between $2.s and $2.sw \ + to 1/2 of the way between $1.se and $1.s ->; +} +cycle(S, P) +cycle(P, R) +cycle(R, F) .PE .DE In the development phase the experimenter changes the source code in @@ -251,8 +245,8 @@ xeon07 provided by the environment variables \fIhttp_proxy\fP and \fIhttps_proxy\fP. Try to fetch a webpage with curl, to ensure the proxy is working: .CS - xeon07$ curl x.com - x +xeon07$ curl x.com +x .CE .\" =================================================================== .NH 3 @@ -614,7 +608,6 @@ The branch name is formed by adding keywords separated by the "+" character. The keywords must follow the given order and can only appear zero or once each. At least one keyword must be included. The following keywords are available: -.DS L .IP \f(CWmpi\fP 5m A significant fraction of the communications uses only the standard MPI (without extensions like TAMPI). @@ -658,7 +651,6 @@ communications). .IP \f(CWsimd\fP A significant part of the computation has been optimized to use SIMD instructions. -.DE .LP In the .URL #appendixA "Appendix A" @@ -899,7 +891,8 @@ program target yes yes no no _ .TE .DE -.LP +.QS +.SM .B "Table 1" : The stages of a complete execution pipeline. The .I where @@ -912,6 +905,7 @@ if it can be executed directly by the user, if there are several instances running in parallel and .I std if is part of the standard execution pipeline. +.QE .\" ################################################################### .NH 2 Writing the experiment @@ -1087,7 +1081,8 @@ exec post no no Code after the execution _ .TE .DE -.QP +.QS +.SM .B "Table 2" : The attributes recognized by the stages in the execution pipeline. The column @@ -1300,7 +1295,231 @@ lastly the number of units. The rationale is that each unit that is shared among experiments gets assigned the same hash. Therefore, you can iteratively add more units to an experiment, and if they are already executed (and the results were generated) is reused. -.SK +.\" ################################################################### +.bp +.NH 1 +Post-processing +.LP +After the correct execution of an experiment the results are stored for +further investigation. Typically the time of the execution or other +quantities are measured and presented later in a figure (generally a +plot or a table). The +.I "postprocess pipeline" +consists of all the steps required to create a set of figures from the +results. Similarly to the execution pipeline where several stages run +sequentially, +.[ +garlic execution +.] +the postprocess pipeline is also formed by multiple stages executed +in order. +.PP +The rationale behind dividing execution and postprocess is +that usually the experiments are costly to run (they take a long time to +complete) while generating a figure require less time. Refining the +figures multiple times reusing the same experimental results doesn't +require the execution of the complete experiment, so the experimenter +can try multiple ways to present the data without waiting a large delay. +.NH 2 +Results +.LP +The results are generated in the same +.I "target" +machine where the experiment is executed and are stored in the garlic +\fCout\fP +directory, organized into a tree structure following the experiment +name, the unit name and the run number (governed by the +.I control +stage): +.DS L +\fC +|-- 6lp88vlj7m8hvvhpfz25p5mvvg7ycflb-experiment +| |-- 8lpmmfix52a8v7kfzkzih655awchl9f1-unit +| | |-- 1 +| | | |-- stderr.log +| | | |-- stdout.log +| | | |-- ... +| | |-- 2 +\&... +\fP +.DE +In order to provide an easier access to the results, an index is also +created by taking the +.I expName +and +.I unitName +attributes (defined in the experiment configuration) and linking them to +the appropriate experiment and unit directories. These links are +overwritten by the last experiment with the same names so they are only +valid for the last execution. The out and index directories are +placed into a per-user directory, as we cannot guarantee the complete +execution of each unit when multiple users share units. +.PP +The messages printed to +.I stdout +and +.I stderr +are stored in the log files with the same name inside each run +directory. Additional data is sometimes generated by the experiments, +and is found in each run directory. As the generated data can be very +large, is ignored by default when fetching the results. +.NH 2 +Fetching the results +.LP +Consider a program of interest for which an experiment has been designed to +measure some properties that the experimenter wants to present in a +visual plot. When the experiment is launched, the execution +pipeline (EP) is completely executed and it will generate some +results. In this escenario, the execution pipeline depends on the +program\[em]any changes in the program will cause nix to build the +pipeline again +using the updated program. The results will also depend on the +execution pipeline as well as the postprocess pipeline (PP) and the plot +on the results. This chain of dependencies can be shown in the +following dependency graph: +.PS +circlerad=0.22; +linewid=0.3; +right +circle "Prog" +arrow +circle "EP" +arrow +circle "Result" +arrow +circle "PP" +arrow +circle "Plot" +.PE +Ideally, the dependencies should be handled by nix, so it can detect any +change and rebuild the necessary parts automatically. Unfortunately, nix +is not able to build the result as a derivation directly, as it requires +access to the +.I "target" +machine with several user accounts. In order to let several users reuse +the same results from a shared cache, we would like to use the +.I "nix store" . +.PP +To generate the results from the +experiment, we add some extra steps that must be executed manually: +.PS +circle "Prog" +arrow +diag=linewid + circlerad; +far=circlerad*3 + linewid*4 +E: circle "EP" +R: circle "Result" at E + (far,0) +RUN: circle "Run" at E + (diag,-diag) dashed +FETCH: circle "Fetch" at R + (-diag,-diag) dashed +move to R.e +arrow +P: circle "PP" +arrow +circle "Plot" +arrow dashed from E to RUN chop +arrow dashed from RUN to FETCH chop +arrow dashed from FETCH to R chop +arrow from E to R chop +.PE +The run and fetch steps are provided by the helper tool +.I "garlic(1)" , +which launches the experiment using the user credentials at the +.I "target" +machine and then fetches the results, placing them in a directory known +by nix. When the result derivation needs to be built, nix will look in +this directory for the results of the execution. If the directory is not +found, a message is printed to suggest the user to launch the experiment +and the build process is stopped. When the result is successfully built +by any user, is stored in the +.I "nix store" +and it won't need to be rebuilt again until the experiment changes, as +the hash only depends on the experiment and not on the contents of the +results. +.PP +Notice that this mechanism violates the deterministic nature of the nix +store, as from a given input (the experiment) we can generate different +outputs (each result from different executions). We knowingly relaxed +this restriction by providing a guarantee that the results are +equivalent and there is no need to execute an experiment more than once. +.PP +To force the execution of an experiment you can use the +.I rev +attribute which is a number assigned to each experiment +and can be incremented to create copies that only differs on that +number. The experiment hash will change but the experiment will be the +same, as long as the revision number is ignored along the execution +stages. +.NH 2 +Postprocess stages +.LP +Once the results are completely generated in the +.I "target" +machine there are several stages required to build a set of figures: +.PP +.I fetch \[em] +waits until all the experiment units are completed and then executes the +next stage. This stage is performed by the +.I garlic(1) +tool using the +.I -F +option and also reports the current state of the execution. +.PP +.I store \[em] +copies from the +.I target +machine into the nix store all log files generated by the experiment, +keeping the same directory structure. It tracks the execution state of +each unit and only copies the results once the experiment is complete. +Other files are ignored as they are often very large and not required +for the subsequent stages. +.PP +.I timetable \[em] +converts the results of the experiment into a NDJSON file with one +line per run for each unit. Each line is a valid JSON object, containing +the +.I exp , +.I unit +and +.I run +keys and the unit configuration (as a JSON object) in the +.I config +key. The execution time is captured from the standard output and is +added in the +.I time +key. +.PP +.I merge \[em] +one or more timetable datasets are joined, by simply concatenating them. +This step allows building one dataset to compare multiple experiments in +the same figure. +.PP +.I rPlot \[em] +one ot more figures are generated by a single R script +.[ +r cookbook +.] +which takes as input the previously generated dataset. +The path of the dataset is recorded in the figure as well, which +contains enough information to determine all the stages in the execution +and postprocess pipelines. +.NH 2 +Current setup +.LP +As of this moment, the +.I build +machine which contains the nix store is +.I xeon07 +and the +.I "target" +machine used to run the experiments is Mare Nostrum 4 with the +.I output +directory placed at +.CW /gpfs/projects/bsc15/garlic . +By default, the experiment results are never deleted from the +.I target +so you may want to remove the ones already stored in the nix store to +free space. +.\" ################################################################### .bp .SH 1 Appendix A: Branch name diagram From a6b7b14d5e7dc0f156ff997123d12861fbde48f9 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 5 Feb 2021 16:13:47 +0100 Subject: [PATCH 471/987] user guide: add initialization time limit --- garlic/doc/ug.ms | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/garlic/doc/ug.ms b/garlic/doc/ug.ms index 3ffa709..79993b2 100644 --- a/garlic/doc/ug.ms +++ b/garlic/doc/ug.ms @@ -669,6 +669,30 @@ garlic/tampi+isend+oss+task+COLOR garlic/tampi+isend+oss+task+COLOR+BTREE .CE .\" =================================================================== +.NH 2 +Initialization time +.LP +It is common for programs to have an initialization phase prior to the +execution of the main computation task which is the objective of the study. +The initialization phase is usually not considered when taking +measurements, but the time it takes to complete can limit seriously the +amount of information that can be extracted from the computation phase. +As an example, if the computation phase is in the order of seconds, but +the initialization phase takes several minutes, the number of runs would +need to be set low, as the units could exceed the time limits. Also, the +experimenter may be reluctant to modify the experiments to test other +parameters, as the waiting time for the results is unavoidably large. +.PP +To prevent this problem the programs must reduce the time of the +initialization phase to be no larger than the computation time. To do +so, the initialization phase can be optimized either with +parallelization, or it can be modified to store the result of the +initialization to the disk to be later at the computation phase. In the +garlic framework an experiment can have a dependency over the results of +another experiment (the results of the initialization). The +initialization results will be cached if the derivation is kept +invariant, when modifying the computation phase parameters. +.\" =================================================================== .bp .NH 1 Experimentation From cdf48181e5507443ae7cb3dd33a2dc357b380151 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 5 Feb 2021 19:20:48 +0100 Subject: [PATCH 472/987] user guide: add time measurement sections --- garlic/doc/ug.ms | 69 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) diff --git a/garlic/doc/ug.ms b/garlic/doc/ug.ms index 79993b2..2710023 100644 --- a/garlic/doc/ug.ms +++ b/garlic/doc/ug.ms @@ -693,6 +693,75 @@ another experiment (the results of the initialization). The initialization results will be cached if the derivation is kept invariant, when modifying the computation phase parameters. .\" =================================================================== +.NH 2 +Measurement of the execution time +.LP +The programs must measure the wall time of the computation phase following a +set of rules. The way in which the wall time is measured is very important to +get accurate results. The measured time must be implemented by using a +monotonic clock which is able to correct the drift of the oscillator of +the internal clock due to changes in temperature. This clock must be +measured in C and C++ with: +.CS +clock_gettime(CLOCK_MONOTONIC, &ts); +.CE +A helper function can be used the approximate value of the clock in a +double precision float, in seconds: +.CS +double get_time() +{ + struct timespec tv; + if(clock_gettime(CLOCK_MONOTONIC, &tv) != 0) + { + perror("clock_gettime failed"); + exit(EXIT_FAILURE); + } + return (double)(ts.tv_sec) + + (double)ts.tv_nsec * 1.0e-9; +} +.CE +The start and end points must be measured after the synchronization of +all the processes and threads, so the complete computation work can be +bounded to fit inside the measured interval. An example for a MPI +program: +.CS +double start, end, delta_time; +MPI_Barrier(); +start = get_time(); +run_simulation(); +MPI_Barrier(); +end = get_time(); +delta_time = end - start; +.CE +.\" =================================================================== +.NH 2 +Format of the execution time +.LP +The measured execution time must be printed to the standard output +(stdout) in scientific notation with at least 7 significative digits. +The following the printf format (or the strict equivalent in other languages) +must be used: +.CS +printf("time %e\\n", delta_time); +.CE +The line must be printed alone and only once: for MPI programs, +only one process shall print the time: +.CS +if(rank == 0) printf("time %e\\n", delta_time); +.CE +Other lines can be printed in the stdout, but without the +.I time +prefix, so that the following pipe can be used to capture the line: +.CS +% ./app | grep "^time" +1.234567e-01 +.CE +Ensure that your program follows this convention by testing it with the +above +.I grep +filter; otherwise the results will fail to be parsed when building +the dataset with the execution time. +.\" =================================================================== .bp .NH 1 Experimentation From c36b724e9a16cf8e9ce5fa2f437d54f77745d3ba Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 15 Feb 2021 12:51:20 +0100 Subject: [PATCH 473/987] Add experimental garlicd doc --- garlic/doc/ug.ms | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/garlic/doc/ug.ms b/garlic/doc/ug.ms index 2710023..ab228af 100644 --- a/garlic/doc/ug.ms +++ b/garlic/doc/ug.ms @@ -387,6 +387,39 @@ link pointing to the same location: xeon07$ readlink result /nix/store/...2cm1ldx9smb552sf6r1-nanos6-2.4-6f10a32 .CE +.\" ################################################################### +.NH 3 +Configure the garlic daemon (experimental) +.LP +The garlic benchmark has a experimental daemon which can be used to +automatically launch the experiments in the +.I target +machine. In order to configure it, a folder must be accesible in the +build process. To enable it, add the following configuration line in the +.CI \(ti/.config/nix/nix.config +file at xeon07: +.CS +extra-sandbox-paths = /garlic=\fI\fP/garlic/garlicd +.CE +The +.I "" +component must be replaced to the +.I full +path of the bscpkgs directory. Then, go to the +.I garlic/garlid +directory and run the daemon: +.CS +\&./garlicd \fI\fP . +.CE +Again, put the path to the bscpkgs directory as the first argument. The +second directoty is where the daemon will create the two FIFO files: +.I run +and +.I completed , +to comunicate with the build process. Notice that the daemon stays +running in the foreground, waiting for submission jobs. At this moment, +it can only process one experiment at a time, and it it fails to run, +you should restart the daemon. .\" =================================================================== .NH 2 Configure the login and target (MareNostrum 4) From d51fe5db4870009f6964b87088afcbf2d2b87e1c Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 15 Feb 2021 16:18:21 +0100 Subject: [PATCH 474/987] garlic tool: ensure the mountpoint is enabled --- garlic/sh/garlic | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/garlic/sh/garlic b/garlic/sh/garlic index 765e875..c976dfa 100755 --- a/garlic/sh/garlic +++ b/garlic/sh/garlic @@ -76,6 +76,14 @@ checkExperiment() { return 0 } +checkMountpoint() { + if [ ! -e "$garlicPrefix/garlic.control" ]; then + >&2 echo "error: missing $garlicPrefix/garlic.control" + >&2 echo "Is the mountpoint enabled?" + exit 1 + fi +} + do_fetch() { expName=$(basename $experiment) user=$(ssh -G "$sshHost" | awk '/^user /{print $2}') @@ -184,6 +192,8 @@ if [ -z "$trebuchet" ]; then usage fi +checkMountpoint + checkTrebuchet $trebuchet experiment=$(findExperiment "$trebuchet") From cb5bcd70972ed461211ffe563033a67b53bb59f1 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 15 Feb 2021 16:20:06 +0100 Subject: [PATCH 475/987] garlicd: add to index and check for error The garlicd is now available under garlic.garlid and it requires the extra-sandbox-path option to be properly set. --- garlic/garlicd/default.nix | 28 ++++++++++++++++ garlic/garlicd/garlicd | 69 ++++++++++++++++++++++++++++---------- garlic/index.nix | 4 +++ 3 files changed, 84 insertions(+), 17 deletions(-) create mode 100644 garlic/garlicd/default.nix diff --git a/garlic/garlicd/default.nix b/garlic/garlicd/default.nix new file mode 100644 index 0000000..b34efdf --- /dev/null +++ b/garlic/garlicd/default.nix @@ -0,0 +1,28 @@ +{ + stdenv +, nix +, garlicTool +}: + +let + extraPath = "${garlicTool}:${nix}"; +in + stdenv.mkDerivation { + name = "garlicd"; + preferLocalBuild = true; + + phases = [ "unpackPhase" "installPhase" ]; + + src = ./garlicd; + + unpackPhase = '' + cp $src garlicd + ''; + + installPhase = '' + substituteInPlace garlicd \ + --replace @extraPath@ ${extraPath} + mkdir -p $out/bin + cp -a garlicd $out/bin + ''; + } diff --git a/garlic/garlicd/garlicd b/garlic/garlicd/garlicd index c63216b..cabb674 100755 --- a/garlic/garlicd/garlicd +++ b/garlic/garlicd/garlicd @@ -1,11 +1,32 @@ #!/bin/bash -if [ -z "$1" -o -z "$2" ]; then - >&2 echo "usage: garlicd " +set -e + +msg() { + >&2 echo "garlicd: $@" +} + +if [ -z "$1" ]; then + >&2 echo "usage: garlicd " + exit 1 fi +export PATH="@extraPath@:$PATH" + bscpkgsdir=$(readlink -f "$1") -mountdir=$(readlink -f "$2") + +garlic_sandbox=$(nix show-config |\ + grep extra-sandbox-paths |\ + grep -o '/garlic=[^ ]*') + +if [ -z "$garlic_sandbox" ]; then + msg "Missing extra-sandbox-paths /garlic mountpoint" + msg "Check the ~/.config/nix/nix.conf file" + exit 1 +fi + +mountdir_rel=$(echo "$garlic_sandbox" | sed 's@^/garlic=@@g') +mountdir=$(readlink -f "$mountdir_rel") run="$mountdir/run" completed="$mountdir/completed" @@ -14,20 +35,34 @@ completed="$mountdir/completed" cd "$bscpkgsdir" -echo "Waiting for experiments..." -while read -r line < "$run"; do - echo Attempting to run: $line +while true; do + msg "Waiting for experiments ..." + read -r tre < "$run" - echo Copying files to MN4... - nix copy --to ssh://mn1 $line - results=$(garlic -RFv $line) - echo "The results are: $results" - drv=$(nix-store -q --deriver $results) - echo "drv = $drv" - if [ -z "$drv" ]; then - echo "Something failed, drv is empty. Check the logs." - else - echo -n "$drv" >> "$completed" - fi + msg "Attempting to run: $tre" + msg "Copying files to MN4..." + # It fails if the user doesn't have nix-store, but is already copied + # with the post build hook + nix copy --to ssh://mn1 $tre || true + + msg "Launching the experiment..." + garlic -R "$tre" + + msg "Fetching results..." + results=$(garlic -Fv "$tre") + + msg "results=\"$results\"" + + msg "Searching drv..." + drv=$(nix-store -q --deriver $results) + + msg "drv = \"$drv\"" + if [ -z "$drv" ]; then + msg "Something failed, drv is empty. Check the logs." + exit 1 + fi + + echo -n "$drv" >> "$completed" + msg "execution completed :-)" done diff --git a/garlic/index.nix b/garlic/index.nix index 461fc6b..59faad9 100644 --- a/garlic/index.nix +++ b/garlic/index.nix @@ -124,6 +124,10 @@ resultFromLauncher = l: import (builtins.readFile l); }; + garlicd = callPackage ./garlicd/default.nix { + garlicTool = bsc.garlic.tool; + }; + # Apps for Garlic apps = callPackage ./apps/index.nix { }; From 0e0bf9e7a74372100bd2de63dadbb3d9209c2f2f Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 15 Feb 2021 16:22:06 +0100 Subject: [PATCH 476/987] garlic: add shell with the garlic tools --- garlic/shell.nix | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 garlic/shell.nix diff --git a/garlic/shell.nix b/garlic/shell.nix new file mode 100644 index 0000000..f45b8b4 --- /dev/null +++ b/garlic/shell.nix @@ -0,0 +1,28 @@ +{ pkgs ? import ./. }: + +with pkgs; +with bsc; + +mkShell { + name = "garlic-shell"; + + buildInputs = + # Packages from garlic + (with garlic; [ tool garlicd ]) ++ + # Packages from bsc + [ groff paraver icc nix openssh git ]; + + # inputsFrom to get build dependencies + + shellHook = '' + alias l="ls -l --color=auto -v" + alias ll="ls -l --color=auto -v" + alias lh="ls -hAl --color=auto -v" + alias ls="ls --color=auto -v" + alias ..="cd .." + + export LANG=C + + echo Welcome to the garlic shell + ''; +} From 5fd2a62684b650eaddf67e4b22043db26fd586c8 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 15 Feb 2021 16:22:45 +0100 Subject: [PATCH 477/987] doc: update garlicd usage from the nix-shell --- garlic/doc/ug.ms | 34 ++++++++++++++++++---------------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/garlic/doc/ug.ms b/garlic/doc/ug.ms index ab228af..28bb8a4 100644 --- a/garlic/doc/ug.ms +++ b/garlic/doc/ug.ms @@ -394,10 +394,15 @@ Configure the garlic daemon (experimental) The garlic benchmark has a experimental daemon which can be used to automatically launch the experiments in the .I target -machine. In order to configure it, a folder must be accesible in the -build process. To enable it, add the following configuration line in the +machine. The daemon creates to FIFO pipes to communicate with the +experiment in the build environment: +.I run +and +.I completed . +In order to use it, an existing directory must be specified, where those +two files can be created. In the configuration file .CI \(ti/.config/nix/nix.config -file at xeon07: +in xeon07, append the following line: .CS extra-sandbox-paths = /garlic=\fI\fP/garlic/garlicd .CE @@ -405,21 +410,18 @@ The .I "" component must be replaced to the .I full -path of the bscpkgs directory. Then, go to the -.I garlic/garlid -directory and run the daemon: +path of the bscpkgs directory. Then, go to the +.I garlic +directory and run +.CI nix-shell +to enter the shell. Finally, execute the daemon inside the nix shell: .CS -\&./garlicd \fI\fP . +garlicd \fI\fP .CE -Again, put the path to the bscpkgs directory as the first argument. The -second directoty is where the daemon will create the two FIFO files: -.I run -and -.I completed , -to comunicate with the build process. Notice that the daemon stays -running in the foreground, waiting for submission jobs. At this moment, -it can only process one experiment at a time, and it it fails to run, -you should restart the daemon. +Again, put the path to the bscpkgs directory as the first argument. +Notice that the daemon stays running in the foreground, waiting for +submission jobs. At this moment, it can only process one experiment at a +time. .\" =================================================================== .NH 2 Configure the login and target (MareNostrum 4) From 0ee2747215034d4b8a1ed9339cd50a3d1e47a996 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 15 Feb 2021 16:32:06 +0100 Subject: [PATCH 478/987] garlicd: avoid no match fail We check the result in the next if. --- garlic/garlicd/garlicd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/garlic/garlicd/garlicd b/garlic/garlicd/garlicd index cabb674..0d5dbe8 100755 --- a/garlic/garlicd/garlicd +++ b/garlic/garlicd/garlicd @@ -17,7 +17,7 @@ bscpkgsdir=$(readlink -f "$1") garlic_sandbox=$(nix show-config |\ grep extra-sandbox-paths |\ - grep -o '/garlic=[^ ]*') + grep -o '/garlic=[^ ]*' || true) if [ -z "$garlic_sandbox" ]; then msg "Missing extra-sandbox-paths /garlic mountpoint" From 243d022620cd24acc2c8ae0bdd2a089d7e0d29f6 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 15 Feb 2021 17:44:20 +0100 Subject: [PATCH 479/987] cn6: update name and add to the shell --- bsc/{ctfast => cn6}/default.nix | 8 ++++---- garlic/shell.nix | 2 +- overlay.nix | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) rename bsc/{ctfast => cn6}/default.nix (69%) diff --git a/bsc/ctfast/default.nix b/bsc/cn6/default.nix similarity index 69% rename from bsc/ctfast/default.nix rename to bsc/cn6/default.nix index 4988a68..3456a00 100644 --- a/bsc/ctfast/default.nix +++ b/bsc/cn6/default.nix @@ -6,7 +6,7 @@ }: stdenv.mkDerivation rec { - pname = "ctfast"; + pname = "cn6"; version = "${src.shortRev}"; buildInputs = [ @@ -16,18 +16,18 @@ stdenv.mkDerivation rec { ]; src = builtins.fetchGit { - url = "ssh://git@bscpm03.bsc.es/rarias/ctfast.git"; + url = "ssh://git@bscpm03.bsc.es/rarias/cn6.git"; ref = "master"; }; # Fix the search path configurePhase = '' - sed -i "s@^CTFPLUGINS=.*@CTFPLUGINS=$out/lib/nanos6@" ctfast2prv + sed -i "s@^PRV_LIB_PATH=.*@PRV_LIB_PATH=$out/lib/nanos6@" Makefile ''; installPhase = '' mkdir -p $out/bin - cp ctfast2prv $out/bin + cp cn6 $out/bin mkdir -p $out/lib/nanos6 cp prv.so $out/lib/nanos6/ diff --git a/garlic/shell.nix b/garlic/shell.nix index f45b8b4..4bd1fc3 100644 --- a/garlic/shell.nix +++ b/garlic/shell.nix @@ -10,7 +10,7 @@ mkShell { # Packages from garlic (with garlic; [ tool garlicd ]) ++ # Packages from bsc - [ groff paraver icc nix openssh git ]; + [ groff paraver icc nix openssh git cn6 ]; # inputsFrom to get build dependencies diff --git a/overlay.nix b/overlay.nix index d7e3437..e44aa0f 100644 --- a/overlay.nix +++ b/overlay.nix @@ -151,7 +151,7 @@ let systemtap = self.linuxPackages_4_9.systemtap; }; - ctfast = callPackage ./bsc/ctfast/default.nix { }; + cn6 = callPackage ./bsc/cn6/default.nix { }; # ================================================================= # MN4 specific From d4947a40b92949bf5267cf8e50a0b24ce46003ba Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 17 Feb 2021 10:28:11 +0100 Subject: [PATCH 480/987] Fix ssh missing shell --- garlic/shell.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/garlic/shell.nix b/garlic/shell.nix index 4bd1fc3..4516ea1 100644 --- a/garlic/shell.nix +++ b/garlic/shell.nix @@ -22,6 +22,7 @@ mkShell { alias ..="cd .." export LANG=C + export SHELL=${bash}/bin/bash echo Welcome to the garlic shell ''; From 3e2b369e3e64dd57deb0e9ec8fd52a653b1d4b97 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 17 Feb 2021 10:28:34 +0100 Subject: [PATCH 481/987] garlicd: allow nix builders write to the pipes --- garlic/garlicd/garlicd | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/garlic/garlicd/garlicd b/garlic/garlicd/garlicd index 0d5dbe8..bb2f9c5 100755 --- a/garlic/garlicd/garlicd +++ b/garlic/garlicd/garlicd @@ -30,12 +30,16 @@ mountdir=$(readlink -f "$mountdir_rel") run="$mountdir/run" completed="$mountdir/completed" -[ -p "$run" ] || mkfifo "$run" -[ -p "$completed" ] || mkfifo "$completed" +for fifo in "$run" "$completed"; do + if [ ! -e "$fifo" ]; then + mkfifo "$fifo" + # FIXME: Use more resctrictive permissions + chmod 666 "$fifo" + fi +done cd "$bscpkgsdir" - while true; do msg "Waiting for experiments ..." read -r tre < "$run" From ebcbf91fbef0b930991f72e37161f7f1c6d57a0a Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 23 Feb 2021 15:22:18 +0100 Subject: [PATCH 482/987] exec: allow manual specification of program path --- garlic/stages/exec.nix | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/garlic/stages/exec.nix b/garlic/stages/exec.nix index eea89f1..8717041 100644 --- a/garlic/stages/exec.nix +++ b/garlic/stages/exec.nix @@ -10,6 +10,7 @@ , argv ? [] , post ? "" , nixPrefix ? "" +, program ? null }: with builtins; @@ -18,6 +19,7 @@ with garlicTools; let argvString = concatStringsSep " " (map (e: toString e) argv); execMethod = if (post == "") then "exec " else ""; + programPath = if (program != null) then program else (stageProgram nextStage); in stdenv.mkDerivation { name = "exec"; @@ -30,7 +32,7 @@ stdenv.mkDerivation { ${pre} - ${execMethod}${nixPrefix}${stageProgram nextStage} ${argvString} + ${execMethod}${nixPrefix}${programPath} ${argvString} ${post} From 0c9e89dcc0466d4391cc9423138257491f6b262b Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 23 Feb 2021 15:22:56 +0100 Subject: [PATCH 483/987] osu: update experiments using stdexp --- garlic/exp/index.nix | 4 ++ garlic/exp/osu/latency.nix | 94 ++++++++++++-------------------------- 2 files changed, 34 insertions(+), 64 deletions(-) diff --git a/garlic/exp/index.nix b/garlic/exp/index.nix index aeb0e1d..ca5c810 100644 --- a/garlic/exp/index.nix +++ b/garlic/exp/index.nix @@ -94,4 +94,8 @@ lulesh = { test = callPackage ./lulesh/test.nix { }; }; + + osu = { + latency = callPackage ./osu/latency.nix { }; + }; } diff --git a/garlic/exp/osu/latency.nix b/garlic/exp/osu/latency.nix index 77970c6..e168dd7 100644 --- a/garlic/exp/osu/latency.nix +++ b/garlic/exp/osu/latency.nix @@ -1,86 +1,52 @@ { - bsc -, genApp -, genConfigs - -# Wrappers -, launchWrapper -, sbatchWrapper -, srunWrapper -, argvWrapper -, controlWrapper -, nixsetupWrapper + stdenv +, stdexp +, bsc +, targetMachine +, stages # Should we test the network (true) or the shared memory (false)? , interNode ? true - -# Enable multiple threads? -, multiThread ? false }: let - # Set the configuration for the experiment - config = { - mpi = [ bsc.impi bsc.openmpi bsc.mpich ]; + # Initial variable configuration + varConf = with bsc; { + mpi = [ impi bsc.openmpi mpich ]; }; - extraConfig = { + # Generate the complete configuration for each unit + genConf = with bsc; c: targetMachine.config // rec { nodes = if interNode then 2 else 1; ntasksPerNode = if interNode then 1 else 2; + cpusPerTask = 1; time = "00:10:00"; qos = "debug"; + loops = 30; + expName = "osu-latency-${mpi.name}"; + unitName = expName; + jobName = expName; + inherit (c) mpi; }; - # Compute the cartesian product of all configurations - configs = map (conf: conf // extraConfig) (genConfigs config); - - sbatch = conf: app: sbatchWrapper { - app = app; - nixPrefix = "/gpfs/projects/bsc15/nix"; - exclusive = true; - ntasksPerNode = "${toString conf.ntasksPerNode}"; - nodes = "${toString conf.nodes}"; - time = conf.time; - qos = conf.qos; - chdirPrefix = "/home/bsc15/bsc15557/bsc-nixpkgs/out"; + # Compute the array of configurations + configs = stdexp.buildConfigs { + inherit varConf genConf; }; - srun = app: srunWrapper { - app = app; - nixPrefix = "/gpfs/projects/bsc15/nix"; + exec = {nextStage, conf, ...}: with conf; stages.exec { + inherit nextStage; + # We simply run the osu_latency test + program = "${nextStage}/bin/osu_latency"; }; - argv = app: - argvWrapper { - app = app; - program = "bin/osu_latency"; - argv = "()"; - env = '' - export I_MPI_THREAD_SPLIT=1 - ''; - }; + program = {nextStage, conf, ...}: bsc.osumb.override { + # Use the specified MPI implementation + inherit (conf) mpi; + }; - osumbFn = conf: - with conf; - bsc.osumb.override { inherit mpi; }; - - - pipeline = conf: - sbatch conf ( - nixsetupWrapper ( - controlWrapper ( - srun ( - nixsetupWrapper ( - argv ( - osumbFn conf)))))); - - #pipeline = conf: sbatch conf (srun (nixsetupWrapper (argv (osumbFn conf)))); - #pipeline = conf: sbatch conf (srun (nixsetupWrapper (argv bsc.osumb))); - - # Ideally it should look like this: - #pipeline = sbatch nixsetup control argv nbodyFn; - - jobs = map pipeline configs; + pipeline = stdexp.stdPipeline ++ [ exec program ]; in - launchWrapper jobs + + stdexp.genExperiment { inherit configs pipeline; } From ceb25e5d18fddf645b42f12fa2d9ef48bff9b7d5 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 23 Feb 2021 17:52:48 +0100 Subject: [PATCH 484/987] osu: add figure for latency tests --- garlic/exp/osu/latency.nix | 2 +- garlic/fig/index.nix | 12 +++++++++++ garlic/fig/osu/latency.R | 43 ++++++++++++++++++++++++++++++++++++++ garlic/index.nix | 1 + garlic/pp/osu-latency.nix | 31 +++++++++++++++++++++++++++ 5 files changed, 88 insertions(+), 1 deletion(-) create mode 100644 garlic/fig/osu/latency.R create mode 100644 garlic/pp/osu-latency.nix diff --git a/garlic/exp/osu/latency.nix b/garlic/exp/osu/latency.nix index e168dd7..facd4fa 100644 --- a/garlic/exp/osu/latency.nix +++ b/garlic/exp/osu/latency.nix @@ -12,7 +12,7 @@ let # Initial variable configuration varConf = with bsc; { - mpi = [ impi bsc.openmpi mpich ]; + mpi = [ impi bsc.openmpi mpich ]; #psmpi ]; }; # Generate the complete configuration for each unit diff --git a/garlic/fig/index.nix b/garlic/fig/index.nix index eef5ce5..24b516a 100644 --- a/garlic/fig/index.nix +++ b/garlic/fig/index.nix @@ -40,4 +40,16 @@ in creams = with exp.creams; { ss = rPlotExp ./creams/ss.R [ ss.hybrid ss.pure ]; }; + + osu = with exp.osu; { + #latency = pp.osu-latency latency.result; + latency = + let + resultJson = pp.osu-latency latency.result; + in + rPlot { + script = ./osu/latency.R; + dataset = resultJson; + }; + }; } diff --git a/garlic/fig/osu/latency.R b/garlic/fig/osu/latency.R new file mode 100644 index 0000000..ade4819 --- /dev/null +++ b/garlic/fig/osu/latency.R @@ -0,0 +1,43 @@ +library(ggplot2) +library(dplyr) +library(scales) +library(jsonlite) + +args=commandArgs(trailingOnly=TRUE) + +# Read the timetable from args[1] +input_file = "input.json" +if (length(args)>0) { input_file = args[1] } + +# Load the dataset in NDJSON format +dataset = jsonlite::stream_in(file(input_file)) %>% + jsonlite::flatten() + +# We only need the nblocks and time +df = select(dataset, config.unitName, size, latency) %>% + rename(unitName=config.unitName) + +df$unitName = as.factor(df$unitName) +df$sizeFactor = as.factor(df$size) + +ppi=300 +h=8 +w=12 + +png("latency.png", width=w*ppi, height=h*ppi, res=ppi) + +p = ggplot(data=df, aes(x=size, y=latency)) + + labs(x="Size (bytes)", y="Latency (us)", + title="OSU latency benchmark", + subtitle=input_file) + + geom_boxplot(aes(color=unitName, group=interaction(unitName, sizeFactor))) + + scale_y_continuous(trans=log10_trans()) + + scale_x_continuous(trans=log2_trans()) + + theme_bw() + + theme(legend.position = c(0.15, 0.9)) + +# Render the plot +print(p) + +## Save the png image +dev.off() diff --git a/garlic/index.nix b/garlic/index.nix index 59faad9..e49a20f 100644 --- a/garlic/index.nix +++ b/garlic/index.nix @@ -111,6 +111,7 @@ inherit trebuchetStage; }); timetable = callPackage ./pp/timetable.nix { }; + osu-latency = callPackage ./pp/osu-latency.nix { }; rPlot = callPackage ./pp/rplot.nix { }; timetableFromTrebuchet = tre: timetable (resultFromTrebuchet tre); mergeDatasets = callPackage ./pp/merge.nix { }; diff --git a/garlic/pp/osu-latency.nix b/garlic/pp/osu-latency.nix new file mode 100644 index 0000000..c37397e --- /dev/null +++ b/garlic/pp/osu-latency.nix @@ -0,0 +1,31 @@ +{ + stdenv +, jq +}: + +inputResult: + +stdenv.mkDerivation { + name = "osu-latency.json"; + preferLocalBuild = true; + phases = [ "installPhase" ]; + buildInputs = [ jq ]; + installPhase = '' + touch $out + cd ${inputResult} + for exp in *-experiment; do + cd ${inputResult}/$exp + for unit in *-unit; do + cd ${inputResult}/$exp/$unit + conf=garlic_config.json + for run in $(ls -d [0-9]* | sort -n); do + awk '/^[0-9]+ +[0-9\.]+$/{print $1, $2}' $run/stdout.log | ( + while read -r size latency; do + jq -cn "{ exp:\"$exp\", unit:\"$unit\", config:inputs, run:$run, \ + size:$size, latency:$latency }" $conf >> $out + done) + done + done + done + ''; +} From 0b95ea20b7c68e07724572574691082643d45f32 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 24 Feb 2021 19:45:47 +0100 Subject: [PATCH 485/987] garlicd: allow manual experiment executions --- garlic/garlicd/garlicd | 34 ++++++++++++------- garlic/pp/store.nix | 75 ++++++++++++++++++++++++++++-------------- garlic/sh/default.nix | 3 +- garlic/sh/garlic | 57 +++++++++++++++++++++++--------- garlic/stdexp.nix | 5 ++- 5 files changed, 119 insertions(+), 55 deletions(-) diff --git a/garlic/garlicd/garlicd b/garlic/garlicd/garlicd index bb2f9c5..abfc466 100755 --- a/garlic/garlicd/garlicd +++ b/garlic/garlicd/garlicd @@ -29,8 +29,17 @@ mountdir_rel=$(echo "$garlic_sandbox" | sed 's@^/garlic=@@g') mountdir=$(readlink -f "$mountdir_rel") run="$mountdir/run" completed="$mountdir/completed" +wipe="$mountdir/wipe" -for fifo in "$run" "$completed"; do +handle_bad_signal() { + msg "cleaning FIFO pipes" + rm -f "$run" "$completed" "$wipe" + exit 1 +} + +trap handle_bad_signal SIGINT + +for fifo in "$run" "$completed" "$wipe"; do if [ ! -e "$fifo" ]; then mkfifo "$fifo" # FIXME: Use more resctrictive permissions @@ -54,19 +63,22 @@ while true; do garlic -R "$tre" msg "Fetching results..." - results=$(garlic -Fv "$tre") + garlic -FKv "$tre" - msg "results=\"$results\"" - - msg "Searching drv..." - drv=$(nix-store -q --deriver $results) + echo -n "$tre" >> "$completed" - msg "drv = \"$drv\"" - if [ -z "$drv" ]; then - msg "Something failed, drv is empty. Check the logs." + msg "Waiting for nix to finish the build..." + + read -r tre2 < "$wipe" + if [ "$tre" != "$tre2" ]; then + msg "error: trebuchet mismatch" exit 1 fi - echo -n "$drv" >> "$completed" - msg "execution completed :-)" + msg "Removing temporal files..." + garlic -D "$tre" + + echo -n "$tre" >> "$completed" + + msg "Execution completed :-)" done diff --git a/garlic/pp/store.nix b/garlic/pp/store.nix index a7fd38e..3944286 100644 --- a/garlic/pp/store.nix +++ b/garlic/pp/store.nix @@ -3,52 +3,77 @@ }: { - experimentStage -, trebuchetStage + trebuchet, + experiment }: with builtins; -#assert typeOf experimentStage == "string"; -#assert typeOf trebuchetStage == "string"; - let - # We cannot keep the context of the string when called from a derivation, as - # they will produce a different resultTree derivation vs called from the - # garlic script tool. - #_experimentStage = unsafeDiscardStringContext experimentStage; - #_trebuchetStage = unsafeDiscardStringContext trebuchetStage; - - experimentName = baseNameOf (experimentStage); - trebuchetName = baseNameOf (trebuchetStage); - garlicTemp = "/tmp/garlic"; + experimentName = baseNameOf (experiment); + trebuchetName = baseNameOf (trebuchet); in - #assert hasContext _trebuchetStage == false; - #assert hasContext _experimentStage == false; stdenv.mkDerivation { name = "resultTree"; preferLocalBuild = true; - __noChroot = true; phases = [ "installPhase" ]; installPhase = '' - exp=${garlicTemp}/${experimentName} + echo "resultTree: searching for garlicd daemon..." + if [ -e /garlic/run ]; then + echo "resultTree: asking the daemon to run and fetch the experiment" + + echo ${trebuchet} >> /garlic/run + echo "resultTree: waiting for experiment results..." + res=$(cat /garlic/completed) + + if [ "$res" != "${trebuchet}" ]; then + echo "resultTree: unknown trebuchet received" + exit 1 + fi + else + echo "resultTree: garlicd not detected: /garlic/run not found" + echo "resultTree: assuming results are already in /garlic" + fi + + echo "resultTree: attempting to copy the results from /garlic ..." + + exp=/garlic/cache/${experimentName} if [ ! -e "$exp" ]; then - echo "$exp: not found" - echo "Run the experiment and fetch the results with:" + echo "resultTree: $exp: not found" + echo "resultTree: run the experiment and fetch the results with:" echo - echo -e "\e[30;48;5;2mgarlic -RFv ${trebuchetStage}\e[0m" + echo -e "\e[30;48;5;2mgarlic -RFv ${trebuchet}\e[0m" echo - echo "See garlic(1) for more details." - echo "cannot continue building $out, aborting" + echo "resultTree: see garlic(1) for more details." + echo "resultTree: cannot continue building $out, aborting" exit 1 fi + echo "resultTree: copying results from /garlic into the nix store..." + mkdir -p $out cp -aL $exp $out/ - ln -s ${trebuchetStage} $out/trebuchet - ln -s ${experimentStage} $out/experiment + ln -s ${trebuchet} $out/trebuchet + ln -s ${experiment} $out/experiment + + + if [ -e /garlic/run ]; then + echo "resultTree: removing temp files..." + echo ${trebuchet} >> /garlic/wipe + echo "resultTree: waiting confimation from daemon..." + cat /garlic/completed > /dev/null + else + echo "resultTree: garlicd not detected: /garlic/run not found" + echo "resultTree: ignoring temp files" + fi + + echo "resultTree: successfully copied into the nix store" + + echo " experiment: ${experiment}" + echo " trebuchet: ${trebuchet}" + echo " resultTree: $out" ''; } diff --git a/garlic/sh/default.nix b/garlic/sh/default.nix index ed1ab77..63d252a 100644 --- a/garlic/sh/default.nix +++ b/garlic/sh/default.nix @@ -11,7 +11,6 @@ with garlicTools; let garlicPrefix = "/mnt/garlic"; - garlicTemp = "/tmp/garlic"; in stdenv.mkDerivation { name = "garlic-tool"; @@ -22,7 +21,7 @@ in src = ./.; - inherit garlicPrefix garlicTemp sshHost; + inherit garlicPrefix sshHost; installPhase = '' substituteAllInPlace garlic diff --git a/garlic/sh/garlic b/garlic/sh/garlic index c976dfa..01dbd41 100755 --- a/garlic/sh/garlic +++ b/garlic/sh/garlic @@ -1,15 +1,9 @@ #!/bin/bash -e garlicPrefix=@garlicPrefix@ -garlicTemp=@garlicTemp@ sshHost=@sshHost@ PATH=@PATH@ -#garlicPrefix=/mnt/garlic -#garlicTemp=/tmp/garlic -#sshHost=mn1 -#PATH=/nix/store/yjkcxbf0y1jdlbj0axghlg2fndc4dqkz-patchelf-0.11/bin:/nix/store/6is25fyx29d731idycngl7qmgcax5xng-gcc-wrapper-9.3.0/bin:/nix/store/h986r9i2j9x5z8i5g8aj0z8jdd129wyx-gcc-9.3.0/bin:/nix/store/48dypl6qdsj3vdzh7hjg5qnngfpdcz7h-glibc-2.31-bin/bin:/nix/store/zmac3n79ayg4fdqgznmi2v3lmcprzx4g-coreutils-8.31/bin:/nix/store/dmnnqr6j7kqgcr357b5qwiwvjvg2yyhd-binutils-wrapper-2.31.1/bin:/nix/store/gmi6xrkl95h6iypv00dvdpm3f4md9i6i-binutils-2.31.1/bin:/nix/store/48dypl6qdsj3vdzh7hjg5qnngfpdcz7h-glibc-2.31-bin/bin:/nix/store/zmac3n79ayg4fdqgznmi2v3lmcprzx4g-coreutils-8.31/bin:/nix/store/a41ky6icdgxa54jzps32gfgcrdyx94hs-rsync-3.1.3/bin:/nix/store/sxll2dlamfm32xd2nyfx7v8mlnx0gxks-openssh-8.3p1/bin:/nix/store/3gp7gv5z9jj3g92czxadvgphpwiviv28-nix-2.3.7/bin:/nix/store/zmac3n79ayg4fdqgznmi2v3lmcprzx4g-coreutils-8.31/bin:/nix/store/f2hn65ksj194nmy58nrjikv9r9w25irh-findutils-4.7.0/bin:/nix/store/m39n3m5c7r22b3ma2phnwmp0jj8a5jja-diffutils-3.7/bin:/nix/store/ray7jgwsr5xbxp28wvr427vywd08nz9s-gnused-4.8/bin:/nix/store/gzc092gzsanvym4c6sjgh22dsh9fzj4s-gnugrep-3.4/bin:/nix/store/mn412q9rz9afdrhl9v2ybf605r91wzl2-gawk-5.1.0/bin:/nix/store/xca341k5x5b4hcmi310gjhdlgqm4l56m-gnutar-1.32/bin:/nix/store/zvb8qad72bz6j7ia60dcsf3dfncxxqc7-gzip-1.10/bin:/nix/store/9pb8zp3zyykw09rg60f2nv32plamhd7h-bzip2-1.0.6.0.1-bin/bin:/nix/store/fm2p1d8w9sx4gbaf8qfv2rsailsyhvm3-gnumake-4.3/bin:/nix/store/npfsrhkjww5q7sax7p7ijcrj3wlbrxn7-bash-4.4-p23/bin:/nix/store/72m0m8v6mbp58vbngjgv5pn2scqhs6kk-patch-2.7.6/bin:/nix/store/7vh7fckk2srlkmmkfhs9y85icwm9rhj5-xz-5.2.5-bin/bin - usage() { echo "Usage: garlic [-RFwv] trebuchet" 1>&2; exit 1; } findClosure() { @@ -32,6 +26,23 @@ findExperiment() { grep -o -- "/nix/store/.*-experiment" "$1" } +findOutputDir() { + garlic_sandbox=$(nix show-config |\ + grep extra-sandbox-paths |\ + grep -o '/garlic=[^ ]*' || true) + + if [ -z "$garlic_sandbox" ]; then + >&2 echo "Missing extra-sandbox-paths /garlic mountpoint" + >&2 echo "Check the ~/.config/nix/nix.conf file" + exit 1 + fi + + mountdir_rel=$(echo "$garlic_sandbox" | sed 's@^/garlic=@@g') + mountdir=$(readlink -f "$mountdir_rel") + + echo "$mountdir/cache" +} + drvFromOutput() { nix-store -q --deriver $1 } @@ -138,7 +149,7 @@ do_fetch() { test $verbose && >&2 echo "$exp: execution complete, fetching results" - mkdir -p $garlicTemp + mkdir -p "$outputDir" rsync -rt --copy-links \ --include='*/*/garlic_config.json' \ @@ -147,15 +158,17 @@ do_fetch() { --include='*/*/*/.garlic' \ --include='*/*/*/.garlic/*' \ --exclude='*/*/*/*' \ - $exp $garlicTemp + "$exp" "$outputDir" - nix-build -E "(with import ./default.nix; \ - garlic.pp.store { \ - experimentStage = import \"$experimentDrv\"; - trebuchetStage = import \"$trebuchetDrv\"; - })" + if [ ! $enableKeep ]; then + nix-build -E "(with import ./default.nix; \ + garlic.pp.store { \ + trebuchet = (import \"$trebuchetDrv\" ); \ + experiment = (import \"$experimentDrv\"); \ + })" - rm -rf $garlicTemp/$expName + rm -rf "$outputDir/$expName" + fi } do_run() { @@ -163,17 +176,26 @@ do_run() { >&2 $trebuchet } +do_delete() { + expName=$(basename $experiment) + rm -rf $outputDir/$expName +} + waitResults=1 verbose= operation= target= enableRun= enableFetch= +enableKeep= +enableDelete= -while getopts "vwRF" o; do +while getopts "vwRFKD" o; do case "${o}" in R) enableRun=1 ;; F) enableFetch=1 ;; + K) enableKeep=1 ;; + D) enableDelete=1 ;; w) waitResults=0 ;; v) verbose=1 ;; *) usage ;; @@ -182,7 +204,7 @@ done shift $((OPTIND-1)) trebuchet="$1" -if [ -z "$enableRun" -a -z "$enableFetch" ]; then +if [ -z "$enableRun" -a -z "$enableFetch" -a -z "$enableDelete" ]; then >&2 echo "missing operation" usage fi @@ -196,6 +218,8 @@ checkMountpoint checkTrebuchet $trebuchet +outputDir=$(findOutputDir) + experiment=$(findExperiment "$trebuchet") checkExperiment $experiment @@ -204,3 +228,4 @@ experimentDrv=$(drvFromOutput $experiment) if [ $enableRun ]; then do_run; fi if [ $enableFetch ]; then do_fetch; fi +if [ $enableDelete ]; then do_delete; fi diff --git a/garlic/stdexp.nix b/garlic/stdexp.nix index e9a9d27..efddd96 100644 --- a/garlic/stdexp.nix +++ b/garlic/stdexp.nix @@ -35,7 +35,10 @@ rec { }; }; in trebuchet // rec { - result = pp.resultFromLauncher (pp.launcher trebuchet); + result = pp.store { + trebuchet=trebuchet; + experiment=trebuchet.experiment; + }; timetable = pp.timetable result; }; From c869b6e3b46ec81c302c0876049af0b246ad43a3 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 25 Feb 2021 11:16:35 +0100 Subject: [PATCH 486/987] garlic: enable verbose rsync fetch --- garlic/sh/garlic | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/garlic/sh/garlic b/garlic/sh/garlic index 01dbd41..a7382bb 100755 --- a/garlic/sh/garlic +++ b/garlic/sh/garlic @@ -151,7 +151,7 @@ do_fetch() { mkdir -p "$outputDir" - rsync -rt --copy-links \ + rsync -vrt --copy-links \ --include='*/*/garlic_config.json' \ --include='*/*/std*.log' \ --include='*/*/*/std*.log' \ From 9277e600796a6f48ca7d2341b1559b017ca00051 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 25 Feb 2021 11:18:02 +0100 Subject: [PATCH 487/987] timetable: enable verbose processing --- garlic/pp/osu-latency.nix | 1 + garlic/pp/timetable.nix | 1 + 2 files changed, 2 insertions(+) diff --git a/garlic/pp/osu-latency.nix b/garlic/pp/osu-latency.nix index c37397e..4b4a4d1 100644 --- a/garlic/pp/osu-latency.nix +++ b/garlic/pp/osu-latency.nix @@ -19,6 +19,7 @@ stdenv.mkDerivation { cd ${inputResult}/$exp/$unit conf=garlic_config.json for run in $(ls -d [0-9]* | sort -n); do + echo "processing unit=$unit run=$run" awk '/^[0-9]+ +[0-9\.]+$/{print $1, $2}' $run/stdout.log | ( while read -r size latency; do jq -cn "{ exp:\"$exp\", unit:\"$unit\", config:inputs, run:$run, \ diff --git a/garlic/pp/timetable.nix b/garlic/pp/timetable.nix index 811e5ce..9fdbf95 100644 --- a/garlic/pp/timetable.nix +++ b/garlic/pp/timetable.nix @@ -19,6 +19,7 @@ stdenv.mkDerivation { cd ${inputResult}/$exp/$unit conf=garlic_config.json for run in $(ls -d [0-9]* | sort -n); do + echo "processing unit=$unit run=$run" time=$(awk '/^ ?time /{print $2}' $run/stdout.log) if [ -z "$time" ]; then echo "error: cannot match \"time\" line" From 48820ee2d322dfd6f4a040c9a5cac79205908456 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 25 Feb 2021 11:18:56 +0100 Subject: [PATCH 488/987] resultTree: garlic must be used from the nix shell --- garlic/pp/store.nix | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/garlic/pp/store.nix b/garlic/pp/store.nix index 3944286..40d5591 100644 --- a/garlic/pp/store.nix +++ b/garlic/pp/store.nix @@ -43,7 +43,8 @@ in if [ ! -e "$exp" ]; then echo "resultTree: $exp: not found" - echo "resultTree: run the experiment and fetch the results with:" + echo "resultTree: run the experiment and fetch the results running" + echo "resultTree: the following command from the nix-shell" echo echo -e "\e[30;48;5;2mgarlic -RFv ${trebuchet}\e[0m" echo From 6e0e2f0bf6f804a2b260a1410abb48d7fa301b64 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 25 Feb 2021 11:19:45 +0100 Subject: [PATCH 489/987] garlicd: drop bscpkgs argument requirement The bscpkgs/default.nix is not longer read, as the garlic tool only needs it for the fetching (-F), when it runs nix-build. --- garlic/garlicd/garlicd | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/garlic/garlicd/garlicd b/garlic/garlicd/garlicd index abfc466..4dfb8ed 100755 --- a/garlic/garlicd/garlicd +++ b/garlic/garlicd/garlicd @@ -6,15 +6,13 @@ msg() { >&2 echo "garlicd: $@" } -if [ -z "$1" ]; then - >&2 echo "usage: garlicd " +if [ ! -z "$1" ]; then + >&2 echo "usage: garlicd" exit 1 fi export PATH="@extraPath@:$PATH" -bscpkgsdir=$(readlink -f "$1") - garlic_sandbox=$(nix show-config |\ grep extra-sandbox-paths |\ grep -o '/garlic=[^ ]*' || true) @@ -47,8 +45,6 @@ for fifo in "$run" "$completed" "$wipe"; do fi done -cd "$bscpkgsdir" - while true; do msg "Waiting for experiments ..." read -r tre < "$run" From 9612c69aec90a194917b3d3d814450e601929358 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 25 Feb 2021 11:33:50 +0100 Subject: [PATCH 490/987] doc: add garlic configuration section Update the garlicd usage as well. --- garlic/doc/ug.ms | 80 +++++++++++++++++++++++++++++++++--------------- 1 file changed, 55 insertions(+), 25 deletions(-) diff --git a/garlic/doc/ug.ms b/garlic/doc/ug.ms index 28bb8a4..25c14a5 100644 --- a/garlic/doc/ug.ms +++ b/garlic/doc/ug.ms @@ -389,38 +389,68 @@ xeon07$ readlink result .CE .\" ################################################################### .NH 3 -Configure the garlic daemon (experimental) +Configure garlic .LP -The garlic benchmark has a experimental daemon which can be used to +In order to launch experiments in the +.I target +machine, it is required to configure nix to allow a directory to be +available during the build process, where the results will be stored +before being copied in the nix store. Create a new +.CI garlic +directory in your +personal cache directory and copy the full path: +.CS +xeon07$ mkdir -p \(ti/.cache/garlic +xeon07$ readlink -f \(ti/.cache/garlic +/home/Computational/rarias/.cache/garlic +.CE +Then create the nix configuration directory (if it has not already been +created): +.CS +xeon07$ mkdir -p \(ti/.config/nix +.CE +And add the following line in the +.CI \(ti/.config/nix/nix.conf +file, replacing it with the path you copied before: +.CS +.SM +extra-sandbox-paths = /garlic=/home/Computational/rarias/.cache/garlic +.CE +This option creates a virtual directory called +.CI /garlic +inside the build environment, whose contents are the ones you specify at +the right hand side of the equal sign (in this case the +.CI \(ti/.cache/garlic +directory). It will be used to allow the results of the experiments to +be passed to nix from the +.I target +machine. +.\" ################################################################### +.NH 3 +Run the garlic daemon (optional) +.LP +The garlic benchmark has a daemon which can be used to automatically launch the experiments in the .I target -machine. The daemon creates to FIFO pipes to communicate with the -experiment in the build environment: -.I run -and -.I completed . -In order to use it, an existing directory must be specified, where those -two files can be created. In the configuration file -.CI \(ti/.config/nix/nix.config -in xeon07, append the following line: -.CS -extra-sandbox-paths = /garlic=\fI\fP/garlic/garlicd -.CE -The -.I "" -component must be replaced to the -.I full -path of the bscpkgs directory. Then, go to the -.I garlic +machine on demand, when they are required to build other derivations, so +they can be launched without user interaction. The daemon creates some +FIFO pipes to communicate with the build environment, and must be +running to be able to run the experiments. To execute it, go to the +.CI bscpkgs/garlic directory and run -.CI nix-shell -to enter the shell. Finally, execute the daemon inside the nix shell: .CS -garlicd \fI\fP +xeon07$ nix-shell +nix-shell$ +.CE +to enter the nix shell (or specify the path to the +.CI garlic/shell.nix +file as argument). Then, run the daemon inside the nix shell: +.CS +nix-shell$ garlicd +garlicd: Waiting for experiments ... .CE -Again, put the path to the bscpkgs directory as the first argument. Notice that the daemon stays running in the foreground, waiting for -submission jobs. At this moment, it can only process one experiment at a +experiments. At this moment, it can only process one experiment at a time. .\" =================================================================== .NH 2 From 0015c7e4cd0f14254eac56d2075a616311945e27 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 25 Feb 2021 12:29:12 +0100 Subject: [PATCH 491/987] pp: remove launcher It has now been integrated with resultTree in pp/store.nix --- garlic/index.nix | 4 ---- garlic/pp/launcher.nix | 32 -------------------------------- 2 files changed, 36 deletions(-) delete mode 100644 garlic/pp/launcher.nix diff --git a/garlic/index.nix b/garlic/index.nix index e49a20f..1a52a67 100644 --- a/garlic/index.nix +++ b/garlic/index.nix @@ -119,10 +119,6 @@ # Takes a list of experiments and returns a file that contains # all timetable results from the experiments. merge = exps: mergeDatasets (map timetableFromTrebuchet exps); - - # Automatic launcher - launcher = callPackage ./pp/launcher.nix { }; - resultFromLauncher = l: import (builtins.readFile l); }; garlicd = callPackage ./garlicd/default.nix { diff --git a/garlic/pp/launcher.nix b/garlic/pp/launcher.nix deleted file mode 100644 index 428388b..0000000 --- a/garlic/pp/launcher.nix +++ /dev/null @@ -1,32 +0,0 @@ -{ - stdenv -}: - -trebuchet: - -stdenv.mkDerivation { - name = "launcher"; - preferLocalBuild = true; - - phases = [ "installPhase" ]; - - installPhase = '' - if [ ! -e /garlic/run ]; then - echo "Missing /garlic/run, cannot continue" - echo "Are you running the garlicd daemon?" - echo - echo "You can manually run the experiment and fetch the results with:" - echo - echo -e "\e[30;48;5;2mgarlic -RFv ${trebuchet}\e[0m" - echo - echo "See garlic(1) for more details." - exit 1 - fi - - echo ${trebuchet} >> /garlic/run - echo "Waiting for experiment results..." - results=$(cat /garlic/completed) - #ln -s $results $out - echo -n "$results" > $out - ''; -} From 8e130604aa660602a39481275c1b7c32afd15dd9 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 25 Feb 2021 20:45:20 +0100 Subject: [PATCH 492/987] machines: set the hardware revision for MN4 This change will cause a rebuild of all experiments. --- garlic/machines.nix | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/garlic/machines.nix b/garlic/machines.nix index 57d8ea4..4015112 100644 --- a/garlic/machines.nix +++ b/garlic/machines.nix @@ -12,6 +12,13 @@ march = "skylake-avx512"; mtune = "skylake-avx512"; hw = { + # The rev attribute attemps to capture the hardware configuration of the + # machine, and will rebuild all experiments if it changed. It only holds + # the timestamp at the current time, representing the HW configuration at + # that moment. + rev = 1614253003; + + # Node and socket details cpusPerNode = 48; cpusPerSocket = 24; socketsPerNode = 2; From 1291b90b7ff0ce30ad2942fbba2a0d778abde5db Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 26 Feb 2021 12:18:50 +0100 Subject: [PATCH 493/987] user guide: correct typo --- garlic/doc/ug.ms | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/garlic/doc/ug.ms b/garlic/doc/ug.ms index 25c14a5..d826bd6 100644 --- a/garlic/doc/ug.ms +++ b/garlic/doc/ug.ms @@ -483,7 +483,7 @@ needed, but under a controlled environment so that the same behavior occurs during the experimentation phase. .PP In particular, we want that several developers can reproduce the -the same development environment so they can debug each other programs +same development environment so they can debug each other programs when reporting bugs. Therefore, the environment must be carefully controlled to avoid non-reproducible scenarios. .PP From 8a77900201ad54c43c82f588451d259a9d487334 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 26 Feb 2021 16:59:29 +0100 Subject: [PATCH 494/987] srun: don't expand variables on install --- garlic/stages/srun.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/garlic/stages/srun.nix b/garlic/stages/srun.nix index bbc23b2..e6231b5 100644 --- a/garlic/stages/srun.nix +++ b/garlic/stages/srun.nix @@ -20,7 +20,7 @@ stdenv.mkDerivation rec { preferLocalBuild = true; dontPatchShebangs = true; installPhase = '' - cat > $out < $out <<'EOF' #!/bin/sh -e exec ${slurm}/bin/srun \ --mpi=pmi2 \ From 051a74b85dbc2fe8d486a516500a64b8b1218c81 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 26 Feb 2021 17:00:09 +0100 Subject: [PATCH 495/987] srun: allow commands to run before srun --- garlic/stages/srun.nix | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/garlic/stages/srun.nix b/garlic/stages/srun.nix index e6231b5..d7e8539 100644 --- a/garlic/stages/srun.nix +++ b/garlic/stages/srun.nix @@ -7,6 +7,7 @@ nextStage , cpuBind , nixPrefix +, preSrun ? "" , srunOptions ? "" , output ? "stdout.log" , error ? "stderr.log" @@ -22,6 +23,9 @@ stdenv.mkDerivation rec { installPhase = '' cat > $out <<'EOF' #!/bin/sh -e + + ${preSrun} + exec ${slurm}/bin/srun \ --mpi=pmi2 \ --cpu-bind=${cpuBind} \ From 09a0348b0e16e504a012b964afb6d2841b3c6da3 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 1 Mar 2021 11:16:03 +0100 Subject: [PATCH 496/987] ds: add fast timetable generator --- garlic/ds/index.nix | 13 +++++++ garlic/ds/std/timetable.nix | 23 +++++++++++++ garlic/ds/std/timetable.py | 68 +++++++++++++++++++++++++++++++++++++ garlic/index.nix | 5 ++- 4 files changed, 108 insertions(+), 1 deletion(-) create mode 100644 garlic/ds/index.nix create mode 100644 garlic/ds/std/timetable.nix create mode 100644 garlic/ds/std/timetable.py diff --git a/garlic/ds/index.nix b/garlic/ds/index.nix new file mode 100644 index 0000000..89d2907 --- /dev/null +++ b/garlic/ds/index.nix @@ -0,0 +1,13 @@ +{ + super +, self +, bsc +, garlic +, callPackage +}: + +{ + std = { + timetable = callPackage ./std/timetable.nix {}; + }; +} diff --git a/garlic/ds/std/timetable.nix b/garlic/ds/std/timetable.nix new file mode 100644 index 0000000..496dc58 --- /dev/null +++ b/garlic/ds/std/timetable.nix @@ -0,0 +1,23 @@ +{ + stdenv +, python3 +}: + +resultTree: + +stdenv.mkDerivation { + name = "timetable.json"; + preferLocalBuild = true; + src = ./timetable.py; + phases = [ "unpackPhase" "installPhase" ]; + + unpackPhase = '' + cp $src timetable.py + ''; + + buildInputs = [ python3 ]; + installPhase = '' + touch $out + python timetable.py ${resultTree} > $out + ''; +} diff --git a/garlic/ds/std/timetable.py b/garlic/ds/std/timetable.py new file mode 100644 index 0000000..d79bf13 --- /dev/null +++ b/garlic/ds/std/timetable.py @@ -0,0 +1,68 @@ +import json, re, sys, os, glob +from os import path + +def eprint(*args, **kwargs): + print(*args, file=sys.stderr, flush=True, **kwargs) + +def process_run(tree, runPath): + with open("stdout.log", "r") as f: + lines = [line.strip() for line in f.readlines()] + + time_line = None + for line in lines: + + if re.match(r'^ ?time .*', line): + time_line = line + break + + if time_line is None: + eprint("missing time line, aborting") + eprint("stdout file = {}/stdout.log".format(runPath)) + exit(1) + + time_str = time_line.split()[1] + + tree['time'] = float(time_str) + print(json.dumps(tree)) + +def process_result_tree(resultTree): + + eprint("processing resultTree: " + resultTree) + + os.chdir(resultTree) + + experiments = glob.glob(resultTree + "/*-experiment") + + for exp in glob.glob("*-experiment"): + eprint("found experiment: " + exp) + expPath = path.join(resultTree, exp) + os.chdir(expPath) + + for unit in glob.glob("*-unit"): + eprint("found unit: " + unit) + unitPath = path.join(resultTree, exp, unit) + os.chdir(unitPath) + + with open('garlic_config.json') as json_file: + garlic_conf = json.load(json_file) + + tree = {"exp":exp, "unit":unit, "config":garlic_conf} + + for i in range(garlic_conf['loops']): + run = str(i + 1) + runPath = path.join(resultTree, exp, unit, run) + if path.isdir(runPath) == False: + eprint("missing run {}, aborting".format(run)) + exit(1) + + tree["run"] = run + os.chdir(runPath) + + process_run(tree, runPath) + + +if len(sys.argv) != 2: + eprint("usage: python {} ".format(argv[0])) + exit(1) + +process_result_tree(sys.argv[1]) diff --git a/garlic/index.nix b/garlic/index.nix index 1a52a67..1902d8e 100644 --- a/garlic/index.nix +++ b/garlic/index.nix @@ -131,7 +131,10 @@ # Experiments exp = callPackage ./exp/index.nix { }; - # Figures generated from the experiments + # Dataset generators from resultTree + ds = callPackage ./ds/index.nix { }; + + # Figures generated from the datasets fig = callPackage ./fig/index.nix { }; } From 6dd41fd96f7a54f1e76a6a4e1dae0487e280827b Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 1 Mar 2021 11:38:28 +0100 Subject: [PATCH 497/987] fig: use the fast timetable generator by default --- garlic/fig/index.nix | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/garlic/fig/index.nix b/garlic/fig/index.nix index 24b516a..34d2ccf 100644 --- a/garlic/fig/index.nix +++ b/garlic/fig/index.nix @@ -10,35 +10,35 @@ let rPlot = garlic.pp.rPlot; exp = garlic.exp; pp = garlic.pp; + ds = garlic.ds; - exptt = exlist: map (e: e.timetable) exlist; - rPlotExp = rScript: exp: rPlot { + stdPlot = rScript: expList: rPlot { script = rScript; - dataset = pp.mergeDatasets (exptt exp); + dataset = pp.mergeDatasets (map (e: ds.std.timetable e.result) expList); }; in { nbody = with exp.nbody; { - baseline = rPlotExp ./nbody/baseline.R [ baseline ]; - small = rPlotExp ./nbody/baseline.R [ small ]; - jemalloc = rPlotExp ./nbody/jemalloc.R [ baseline jemalloc ]; - ctf = rPlotExp ./nbody/baseline.R [ ctf ]; + baseline = stdPlot ./nbody/baseline.R [ baseline ]; + small = stdPlot ./nbody/baseline.R [ small ]; + jemalloc = stdPlot ./nbody/jemalloc.R [ baseline jemalloc ]; + ctf = stdPlot ./nbody/baseline.R [ ctf ]; }; hpcg = with exp.hpcg; { - oss = rPlotExp ./hpcg/oss.R [ oss ]; + oss = stdPlot ./hpcg/oss.R [ oss ]; }; saiph = with exp.saiph; { - granularity = rPlotExp ./saiph/granularity.R [ granularity ]; + granularity = stdPlot ./saiph/granularity.R [ granularity ]; }; heat = with exp.heat; { - test = rPlotExp ./heat/test.R [ test ]; + test = stdPlot ./heat/test.R [ test ]; }; creams = with exp.creams; { - ss = rPlotExp ./creams/ss.R [ ss.hybrid ss.pure ]; + ss = stdPlot ./creams/ss.R [ ss.hybrid ss.pure ]; }; osu = with exp.osu; { From 2f7032aca660c8db146cb4b08e0df0430b2f8f4c Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 1 Mar 2021 11:39:24 +0100 Subject: [PATCH 498/987] pp: remove unused derivations and helpers --- garlic/index.nix | 14 ++------------ garlic/pp/timetable.nix | 37 ------------------------------------- 2 files changed, 2 insertions(+), 49 deletions(-) delete mode 100644 garlic/pp/timetable.nix diff --git a/garlic/index.nix b/garlic/index.nix index 1902d8e..c513af9 100644 --- a/garlic/index.nix +++ b/garlic/index.nix @@ -103,22 +103,12 @@ sshHost = "mn1"; }; - # Post processing tools - pp = with bsc.garlicTools; rec { + # Post processing + pp = { store = callPackage ./pp/store.nix { }; - resultFromTrebuchet = trebuchetStage: (store { - experimentStage = getExperimentStage trebuchetStage; - inherit trebuchetStage; - }); - timetable = callPackage ./pp/timetable.nix { }; osu-latency = callPackage ./pp/osu-latency.nix { }; rPlot = callPackage ./pp/rplot.nix { }; - timetableFromTrebuchet = tre: timetable (resultFromTrebuchet tre); mergeDatasets = callPackage ./pp/merge.nix { }; - - # Takes a list of experiments and returns a file that contains - # all timetable results from the experiments. - merge = exps: mergeDatasets (map timetableFromTrebuchet exps); }; garlicd = callPackage ./garlicd/default.nix { diff --git a/garlic/pp/timetable.nix b/garlic/pp/timetable.nix deleted file mode 100644 index 9fdbf95..0000000 --- a/garlic/pp/timetable.nix +++ /dev/null @@ -1,37 +0,0 @@ -{ - stdenv -, jq -}: - -inputResult: - -stdenv.mkDerivation { - name = "timetable.json"; - preferLocalBuild = true; - phases = [ "installPhase" ]; - buildInputs = [ jq ]; - installPhase = '' - touch $out - cd ${inputResult} - for exp in *-experiment; do - cd ${inputResult}/$exp - for unit in *-unit; do - cd ${inputResult}/$exp/$unit - conf=garlic_config.json - for run in $(ls -d [0-9]* | sort -n); do - echo "processing unit=$unit run=$run" - time=$(awk '/^ ?time /{print $2}' $run/stdout.log) - if [ -z "$time" ]; then - echo "error: cannot match \"time\" line" - echo "check stdout log file: ${inputResult}/$exp/$unit/$run/stdout.log" - exit 1 - fi - start_time=$(cat $run/.garlic/total_time_start) - end_time=$(cat $run/.garlic/total_time_end) - total_time=$(($end_time - $start_time)) - jq -cn "{ exp:\"$exp\", unit:\"$unit\", config:inputs, time:$time, run:$run, total_time:$total_time }" $conf >> $out - done - done - done - ''; -} From 8373751f6723a8ae9460748d45c232b8a045ac56 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 1 Mar 2021 11:41:28 +0100 Subject: [PATCH 499/987] rplot: remove suffix from input link We may have compressed input datasets --- garlic/pp/rplot.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/garlic/pp/rplot.nix b/garlic/pp/rplot.nix index 343e2f6..17d7d54 100644 --- a/garlic/pp/rplot.nix +++ b/garlic/pp/rplot.nix @@ -28,7 +28,7 @@ in stdenv.mkDerivation { installPhase = '' mkdir -p $out cd $out - ln -s ${dataset} input.json + ln -s ${dataset} input Rscript --vanilla ${script} ${dataset} ''; } From a36d91202263dac580e087769db84647495bf4a8 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 1 Mar 2021 11:55:13 +0100 Subject: [PATCH 500/987] osu: add multithread benchmark --- garlic/exp/index.nix | 5 ++++- garlic/exp/osu/latency.nix | 22 +++++++++++++++++++--- 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/garlic/exp/index.nix b/garlic/exp/index.nix index ca5c810..736eae8 100644 --- a/garlic/exp/index.nix +++ b/garlic/exp/index.nix @@ -95,7 +95,10 @@ test = callPackage ./lulesh/test.nix { }; }; - osu = { + osu = rec { latency = callPackage ./osu/latency.nix { }; + latencyShm = latency.override { interNode = false; }; + latencyMt = latency.override { enableMultithread = true; }; + latencyMtShm = latency.override { enableMultithread = true; interNode = true; }; }; } diff --git a/garlic/exp/osu/latency.nix b/garlic/exp/osu/latency.nix index facd4fa..a59c0fa 100644 --- a/garlic/exp/osu/latency.nix +++ b/garlic/exp/osu/latency.nix @@ -7,9 +7,16 @@ # Should we test the network (true) or the shared memory (false)? , interNode ? true +, enableMultithread ? false }: +with builtins; +with stdenv.lib; + let + + machineConfig = targetMachine.config; + # Initial variable configuration varConf = with bsc; { mpi = [ impi bsc.openmpi mpich ]; #psmpi ]; @@ -17,9 +24,10 @@ let # Generate the complete configuration for each unit genConf = with bsc; c: targetMachine.config // rec { + inherit (machineConfig) hw; nodes = if interNode then 2 else 1; ntasksPerNode = if interNode then 1 else 2; - cpusPerTask = 1; + cpusPerTask = if (enableMultithread) then hw.cpusPerSocket else 1; time = "00:10:00"; qos = "debug"; loops = 30; @@ -27,6 +35,7 @@ let unitName = expName; jobName = expName; inherit (c) mpi; + inherit enableMultithread; }; # Compute the array of configurations @@ -36,8 +45,15 @@ let exec = {nextStage, conf, ...}: with conf; stages.exec { inherit nextStage; - # We simply run the osu_latency test - program = "${nextStage}/bin/osu_latency"; + + program = if (enableMultithread) then + "${nextStage}/bin/osu_latency_mt" + else + "${nextStage}/bin/osu_latency"; + + argv = optionals (enableMultithread) [ + "-t" "${toString conf.cpusPerTask}:${toString conf.cpusPerTask}" + ]; }; program = {nextStage, conf, ...}: bsc.osumb.override { From ed932c9921692596f70cd531e90bbb3ed8eb199f Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 1 Mar 2021 11:58:23 +0100 Subject: [PATCH 501/987] osu: add bw test --- garlic/exp/index.nix | 2 ++ garlic/exp/osu/bw.nix | 59 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 61 insertions(+) create mode 100644 garlic/exp/osu/bw.nix diff --git a/garlic/exp/index.nix b/garlic/exp/index.nix index 736eae8..6d4c2a5 100644 --- a/garlic/exp/index.nix +++ b/garlic/exp/index.nix @@ -100,5 +100,7 @@ latencyShm = latency.override { interNode = false; }; latencyMt = latency.override { enableMultithread = true; }; latencyMtShm = latency.override { enableMultithread = true; interNode = true; }; + bw = callPackage ./osu/bw.nix { }; + bwShm = bw.override { interNode = false; }; }; } diff --git a/garlic/exp/osu/bw.nix b/garlic/exp/osu/bw.nix new file mode 100644 index 0000000..47671be --- /dev/null +++ b/garlic/exp/osu/bw.nix @@ -0,0 +1,59 @@ +{ + stdenv +, stdexp +, bsc +, targetMachine +, stages + +# Should we test the network (true) or the shared memory (false)? +, interNode ? true +}: + +with builtins; +with stdenv.lib; + +let + + machineConfig = targetMachine.config; + + # Initial variable configuration + varConf = with bsc; { + mpi = [ impi bsc.openmpi mpich ]; #psmpi ]; + }; + + # Generate the complete configuration for each unit + genConf = with bsc; c: targetMachine.config // rec { + inherit (machineConfig) hw; + nodes = if interNode then 2 else 1; + ntasksPerNode = if interNode then 1 else 2; + cpusPerTask = 1; + time = "00:10:00"; + qos = "debug"; + loops = 30; + expName = "osu-bw-${mpi.name}"; + unitName = expName; + jobName = expName; + inherit (c) mpi; + }; + + # Compute the array of configurations + configs = stdexp.buildConfigs { + inherit varConf genConf; + }; + + exec = {nextStage, conf, ...}: with conf; stages.exec { + inherit nextStage; + + program = "${nextStage}/bin/osu_bw"; + }; + + program = {nextStage, conf, ...}: bsc.osumb.override { + # Use the specified MPI implementation + inherit (conf) mpi; + }; + + pipeline = stdexp.stdPipeline ++ [ exec program ]; + +in + + stdexp.genExperiment { inherit configs pipeline; } From 1d015c7e1edb6ed4fe6cc403675a753516bc0d6b Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 1 Mar 2021 12:00:58 +0100 Subject: [PATCH 502/987] ds: add osu fast generators --- garlic/ds/index.nix | 5 +++ garlic/ds/osu/bw.nix | 23 ++++++++++++++ garlic/ds/osu/bw.py | 64 +++++++++++++++++++++++++++++++++++++++ garlic/ds/osu/latency.nix | 23 ++++++++++++++ garlic/ds/osu/latency.py | 64 +++++++++++++++++++++++++++++++++++++++ 5 files changed, 179 insertions(+) create mode 100644 garlic/ds/osu/bw.nix create mode 100644 garlic/ds/osu/bw.py create mode 100644 garlic/ds/osu/latency.nix create mode 100644 garlic/ds/osu/latency.py diff --git a/garlic/ds/index.nix b/garlic/ds/index.nix index 89d2907..c3c0454 100644 --- a/garlic/ds/index.nix +++ b/garlic/ds/index.nix @@ -10,4 +10,9 @@ std = { timetable = callPackage ./std/timetable.nix {}; }; + + osu = { + latency = callPackage ./osu/latency.nix {}; + bw = callPackage ./osu/bw.nix {}; + }; } diff --git a/garlic/ds/osu/bw.nix b/garlic/ds/osu/bw.nix new file mode 100644 index 0000000..9426998 --- /dev/null +++ b/garlic/ds/osu/bw.nix @@ -0,0 +1,23 @@ +{ + stdenv +, python3 +, gzip +}: + +resultTree: + +stdenv.mkDerivation { + name = "osu-bw.json.gz"; + preferLocalBuild = true; + src = ./bw.py; + phases = [ "unpackPhase" "installPhase" ]; + + unpackPhase = '' + cp $src bw.py + ''; + + buildInputs = [ python3 gzip ]; + installPhase = '' + python bw.py ${resultTree} | gzip > $out + ''; +} diff --git a/garlic/ds/osu/bw.py b/garlic/ds/osu/bw.py new file mode 100644 index 0000000..4b1df43 --- /dev/null +++ b/garlic/ds/osu/bw.py @@ -0,0 +1,64 @@ +import json, re, sys, os, glob +from os import path + +def eprint(*args, **kwargs): + print(*args, file=sys.stderr, flush=True, **kwargs) + +def process_run(tree, runPath): + with open("stdout.log", "r") as f: + lines = [line.strip() for line in f.readlines()] + + for line in lines: + + if not re.match('^[0-9]+ *[0-9\.]+$', line): + continue + + slices = line.split() + size = slices[0] + bw = slices[1] + + tree['size'] = int(size) + tree['bw'] = float(bw) + print(json.dumps(tree)) + +def process_result_tree(resultTree): + + eprint("processing resultTree: " + resultTree) + + os.chdir(resultTree) + + experiments = glob.glob(resultTree + "/*-experiment") + + for exp in glob.glob("*-experiment"): + eprint("found experiment: " + exp) + expPath = path.join(resultTree, exp) + os.chdir(expPath) + + for unit in glob.glob("*-unit"): + eprint("found unit: " + unit) + unitPath = path.join(resultTree, exp, unit) + os.chdir(unitPath) + + with open('garlic_config.json') as json_file: + garlic_conf = json.load(json_file) + + tree = {"exp":exp, "unit":unit, "config":garlic_conf} + + for i in range(garlic_conf['loops']): + run = str(i + 1) + runPath = path.join(resultTree, exp, unit, run) + if path.isdir(runPath) == False: + eprint("missing run {}, aborting".format(run)) + exit(1) + + tree["run"] = run + os.chdir(runPath) + + process_run(tree, runPath) + + +if len(sys.argv) != 2: + eprint("usage: python {} ".format(argv[0])) + exit(1) + +process_result_tree(sys.argv[1]) diff --git a/garlic/ds/osu/latency.nix b/garlic/ds/osu/latency.nix new file mode 100644 index 0000000..3fe0426 --- /dev/null +++ b/garlic/ds/osu/latency.nix @@ -0,0 +1,23 @@ +{ + stdenv +, python3 +, gzip +}: + +resultTree: + +stdenv.mkDerivation { + name = "osu-latency.json.gz"; + preferLocalBuild = true; + src = ./latency.py; + phases = [ "unpackPhase" "installPhase" ]; + + unpackPhase = '' + cp $src latency.py + ''; + + buildInputs = [ python3 gzip ]; + installPhase = '' + python latency.py ${resultTree} | gzip > $out + ''; +} diff --git a/garlic/ds/osu/latency.py b/garlic/ds/osu/latency.py new file mode 100644 index 0000000..2df08ee --- /dev/null +++ b/garlic/ds/osu/latency.py @@ -0,0 +1,64 @@ +import json, re, sys, os, glob +from os import path + +def eprint(*args, **kwargs): + print(*args, file=sys.stderr, flush=True, **kwargs) + +def process_run(tree, runPath): + with open("stdout.log", "r") as f: + lines = [line.strip() for line in f.readlines()] + + for line in lines: + + if not re.match('^[0-9]+ *[0-9\.]+$', line): + continue + + slices = line.split() + size = slices[0] + latency = slices[1] + + tree['size'] = int(size) + tree['latency'] = float(latency) + print(json.dumps(tree)) + +def process_result_tree(resultTree): + + eprint("processing resultTree: " + resultTree) + + os.chdir(resultTree) + + experiments = glob.glob(resultTree + "/*-experiment") + + for exp in glob.glob("*-experiment"): + eprint("found experiment: " + exp) + expPath = path.join(resultTree, exp) + os.chdir(expPath) + + for unit in glob.glob("*-unit"): + eprint("found unit: " + unit) + unitPath = path.join(resultTree, exp, unit) + os.chdir(unitPath) + + with open('garlic_config.json') as json_file: + garlic_conf = json.load(json_file) + + tree = {"exp":exp, "unit":unit, "config":garlic_conf} + + for i in range(garlic_conf['loops']): + run = str(i + 1) + runPath = path.join(resultTree, exp, unit, run) + if path.isdir(runPath) == False: + eprint("missing run {}, aborting".format(run)) + exit(1) + + tree["run"] = run + os.chdir(runPath) + + process_run(tree, runPath) + + +if len(sys.argv) != 2: + eprint("usage: python {} ".format(argv[0])) + exit(1) + +process_result_tree(sys.argv[1]) From 4ffb609261263796f3b6a5a795b0df89f94d7fd3 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 1 Mar 2021 12:19:10 +0100 Subject: [PATCH 503/987] osu: add figures using the fast generators --- garlic/fig/index.nix | 21 +++++++++------- garlic/fig/osu/bw.R | 50 +++++++++++++++++++++++++++++++++++++++ garlic/fig/osu/latency.R | 13 +++++++--- garlic/index.nix | 1 - garlic/pp/osu-latency.nix | 32 ------------------------- 5 files changed, 72 insertions(+), 45 deletions(-) create mode 100644 garlic/fig/osu/bw.R delete mode 100644 garlic/pp/osu-latency.nix diff --git a/garlic/fig/index.nix b/garlic/fig/index.nix index 34d2ccf..bb0e052 100644 --- a/garlic/fig/index.nix +++ b/garlic/fig/index.nix @@ -16,6 +16,11 @@ let script = rScript; dataset = pp.mergeDatasets (map (e: ds.std.timetable e.result) expList); }; + + customPlot = rScript: dataset: rPlot { + script = rScript; + dataset = dataset; + }; in { nbody = with exp.nbody; { @@ -42,14 +47,12 @@ in }; osu = with exp.osu; { - #latency = pp.osu-latency latency.result; - latency = - let - resultJson = pp.osu-latency latency.result; - in - rPlot { - script = ./osu/latency.R; - dataset = resultJson; - }; + latency = customPlot ./osu/latency.R (ds.osu.latency latency.result); + latencyShm = customPlot ./osu/latency.R (ds.osu.latency latencyShm.result); + latencyMt = customPlot ./osu/latency.R (ds.osu.latency latencyMt.result); + latencyMtShm = customPlot ./osu/latency.R (ds.osu.latency latencyMtShm.result); + + bw = customPlot ./osu/bw.R (ds.osu.bw bw.result); + bwShm = customPlot ./osu/bw.R (ds.osu.bw bwShm.result); }; } diff --git a/garlic/fig/osu/bw.R b/garlic/fig/osu/bw.R new file mode 100644 index 0000000..6744dbc --- /dev/null +++ b/garlic/fig/osu/bw.R @@ -0,0 +1,50 @@ +library(ggplot2) +library(dplyr) +library(scales) +library(jsonlite) + +args=commandArgs(trailingOnly=TRUE) + +# Read the timetable from args[1] +input_file = "input.json" +if (length(args)>0) { input_file = args[1] } + +# Load the dataset in NDJSON format +dataset = jsonlite::stream_in(file(input_file)) %>% + jsonlite::flatten() + +# We only need the nblocks and time +df = select(dataset, config.unitName, config.nodes, config.ntasksPerNode, config.cpusPerTask, size, bw) %>% + rename(unitName=config.unitName) + +nodes = unique(df$config.nodes) +tasksPerNode = unique(df$config.ntasksPerNode) +cpusPerTask = unique(df$config.cpusPerTask) +df$unitName = as.factor(df$unitName) +df$sizeFactor = as.factor(df$size) + +ppi=300 +h=8 +w=12 + +png("bw.png", width=w*ppi, height=h*ppi, res=ppi) + +breaks = 10^(-10:10) +minor_breaks <- rep(1:9, 21)*(10^rep(-10:10, each=9)) + +p = ggplot(data=df, aes(x=size, y=bw)) + + labs(x="Size (bytes)", y="Bandwidth (MB/s)", + title=sprintf("OSU bandwidth benchmark: nodes=%d tasksPerNode=%d cpusPerTask=%d", + nodes, tasksPerNode, cpusPerTask), + subtitle=input_file) + + geom_boxplot(aes(color=unitName, group=interaction(unitName, sizeFactor))) + + scale_x_continuous(trans=log2_trans()) + + scale_y_log10(breaks = breaks, minor_breaks = minor_breaks) + + theme_bw() + + theme(legend.position = c(0.15, 0.9)) + +# Render the plot +print(p) + +## Save the png image +dev.off() diff --git a/garlic/fig/osu/latency.R b/garlic/fig/osu/latency.R index ade4819..53e7bb7 100644 --- a/garlic/fig/osu/latency.R +++ b/garlic/fig/osu/latency.R @@ -14,9 +14,12 @@ dataset = jsonlite::stream_in(file(input_file)) %>% jsonlite::flatten() # We only need the nblocks and time -df = select(dataset, config.unitName, size, latency) %>% +df = select(dataset, config.unitName, config.nodes, config.ntasksPerNode, config.cpusPerTask, size, latency) %>% rename(unitName=config.unitName) +nodes = unique(df$config.nodes) +tasksPerNode = unique(df$config.ntasksPerNode) +cpusPerTask = unique(df$config.cpusPerTask) df$unitName = as.factor(df$unitName) df$sizeFactor = as.factor(df$size) @@ -26,13 +29,17 @@ w=12 png("latency.png", width=w*ppi, height=h*ppi, res=ppi) +breaks = 10^(-10:10) +minor_breaks <- rep(1:9, 21)*(10^rep(-10:10, each=9)) + p = ggplot(data=df, aes(x=size, y=latency)) + labs(x="Size (bytes)", y="Latency (us)", - title="OSU latency benchmark", + title=sprintf("OSU latency benchmark nodes=%d tasksPerNode=%d cpusPerTask=%d", + nodes, tasksPerNode, cpusPerTask), subtitle=input_file) + geom_boxplot(aes(color=unitName, group=interaction(unitName, sizeFactor))) + - scale_y_continuous(trans=log10_trans()) + scale_x_continuous(trans=log2_trans()) + + scale_y_log10(breaks = breaks, minor_breaks = minor_breaks) + theme_bw() + theme(legend.position = c(0.15, 0.9)) diff --git a/garlic/index.nix b/garlic/index.nix index c513af9..815864c 100644 --- a/garlic/index.nix +++ b/garlic/index.nix @@ -106,7 +106,6 @@ # Post processing pp = { store = callPackage ./pp/store.nix { }; - osu-latency = callPackage ./pp/osu-latency.nix { }; rPlot = callPackage ./pp/rplot.nix { }; mergeDatasets = callPackage ./pp/merge.nix { }; }; diff --git a/garlic/pp/osu-latency.nix b/garlic/pp/osu-latency.nix deleted file mode 100644 index 4b4a4d1..0000000 --- a/garlic/pp/osu-latency.nix +++ /dev/null @@ -1,32 +0,0 @@ -{ - stdenv -, jq -}: - -inputResult: - -stdenv.mkDerivation { - name = "osu-latency.json"; - preferLocalBuild = true; - phases = [ "installPhase" ]; - buildInputs = [ jq ]; - installPhase = '' - touch $out - cd ${inputResult} - for exp in *-experiment; do - cd ${inputResult}/$exp - for unit in *-unit; do - cd ${inputResult}/$exp/$unit - conf=garlic_config.json - for run in $(ls -d [0-9]* | sort -n); do - echo "processing unit=$unit run=$run" - awk '/^[0-9]+ +[0-9\.]+$/{print $1, $2}' $run/stdout.log | ( - while read -r size latency; do - jq -cn "{ exp:\"$exp\", unit:\"$unit\", config:inputs, run:$run, \ - size:$size, latency:$latency }" $conf >> $out - done) - done - done - done - ''; -} From 6f2375804dcdb2569fb40074937ec15d3fd5948a Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 3 Mar 2021 11:53:12 +0100 Subject: [PATCH 504/987] nixtools: pin commit --- bsc/nixtools/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/bsc/nixtools/default.nix b/bsc/nixtools/default.nix index 6d364bd..7fb146d 100644 --- a/bsc/nixtools/default.nix +++ b/bsc/nixtools/default.nix @@ -9,6 +9,7 @@ stdenv.mkDerivation rec { src = builtins.fetchGit { url = "ssh://git@bscpm03.bsc.es/rarias/nixtools"; ref = "master"; + rev = "a103e392048ace3ed88ce74648b32c9e6ed094da"; }; buildInputs = [ glibc.static ]; makeFlags = [ "DESTDIR=$(out)" ]; From a6815dc7cf1390f0175727f9866dafb4ee98bf55 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 3 Mar 2021 12:41:31 +0100 Subject: [PATCH 505/987] fig: add article figure directory --- garlic/fig/index.nix | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/garlic/fig/index.nix b/garlic/fig/index.nix index bb0e052..8d9af00 100644 --- a/garlic/fig/index.nix +++ b/garlic/fig/index.nix @@ -11,6 +11,7 @@ let exp = garlic.exp; pp = garlic.pp; ds = garlic.ds; + fig = garlic.fig; stdPlot = rScript: expList: rPlot { script = rScript; @@ -21,6 +22,11 @@ let script = rScript; dataset = dataset; }; + + linkTree = name: tree: self.linkFarm name ( + self.lib.mapAttrsToList ( + name: value: { name=name; path=value; } + ) tree); in { nbody = with exp.nbody; { @@ -55,4 +61,12 @@ in bw = customPlot ./osu/bw.R (ds.osu.bw bw.result); bwShm = customPlot ./osu/bw.R (ds.osu.bw bwShm.result); }; + + # The figures used in the article contained in a directory per figure + article = with fig; linkTree "article-fig" { + "osu/latency" = osu.latency; + "osu/latencyMt" = osu.latencyMt; + "osu/bw" = osu.bw; + "osu/bwShm" = osu.bwShm; + }; } From 4786953eeb07ebf57034b790a67d19fdf9c077ab Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 3 Mar 2021 12:30:00 +0100 Subject: [PATCH 506/987] garlic: fix self/super with correct scope The callPackage function was trying to find packages in bsc.self before the self of the input parameters. --- garlic/index.nix | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/garlic/index.nix b/garlic/index.nix index 815864c..e7f9e3d 100644 --- a/garlic/index.nix +++ b/garlic/index.nix @@ -115,15 +115,23 @@ }; # Apps for Garlic - apps = callPackage ./apps/index.nix { }; + apps = callPackage ./apps/index.nix { + inherit self super bsc; + }; # Experiments - exp = callPackage ./exp/index.nix { }; + exp = callPackage ./exp/index.nix { + inherit self super bsc; + }; # Dataset generators from resultTree - ds = callPackage ./ds/index.nix { }; + ds = callPackage ./ds/index.nix { + inherit self super bsc; + }; # Figures generated from the datasets - fig = callPackage ./fig/index.nix { }; + fig = callPackage ./fig/index.nix { + inherit self super bsc; + }; } From 6973f48638c437b40c250286d2c8448d1c308719 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 3 Mar 2021 12:33:59 +0100 Subject: [PATCH 507/987] osu: add an experiment for Intel MPI tunning --- garlic/exp/index.nix | 1 + garlic/exp/osu/impi.nix | 68 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 69 insertions(+) create mode 100644 garlic/exp/osu/impi.nix diff --git a/garlic/exp/index.nix b/garlic/exp/index.nix index 6d4c2a5..955f735 100644 --- a/garlic/exp/index.nix +++ b/garlic/exp/index.nix @@ -101,6 +101,7 @@ latencyMt = latency.override { enableMultithread = true; }; latencyMtShm = latency.override { enableMultithread = true; interNode = true; }; bw = callPackage ./osu/bw.nix { }; + impi = callPackage ./osu/impi.nix { }; bwShm = bw.override { interNode = false; }; }; } diff --git a/garlic/exp/osu/impi.nix b/garlic/exp/osu/impi.nix new file mode 100644 index 0000000..7123560 --- /dev/null +++ b/garlic/exp/osu/impi.nix @@ -0,0 +1,68 @@ +{ + stdenv +, stdexp +, bsc +, targetMachine +, stages + +# Should we test the network (true) or the shared memory (false)? +, interNode ? true +}: + +with builtins; +with stdenv.lib; + +let + + machineConfig = targetMachine.config; + + # Initial variable configuration + varConf = with bsc; { + threshold = [ 8000 16000 32000 64000 ]; + #threshold = [ 4096 8192 10240 ]; + }; + + # Generate the complete configuration for each unit + genConf = with bsc; c: targetMachine.config // rec { + inherit (machineConfig) hw; + nodes = if interNode then 2 else 1; + ntasksPerNode = if interNode then 1 else 2; + mpi = impi; + cpusPerTask = 1; + time = "00:10:00"; + qos = "debug"; + loops = 10; + expName = "osu-impi-rndv"; + unitName = expName + "-${toString threshold}"; + jobName = expName; + inherit (c) threshold; + }; + + # Compute the array of configurations + configs = stdexp.buildConfigs { + inherit varConf genConf; + }; + + exec = {nextStage, conf, ...}: stages.exec { + inherit nextStage; + env = '' + export PSM2_MQ_RNDV_SHM_THRESH=${toString conf.threshold} + export PSM2_MQ_RNDV_HFI_THRESH=${toString conf.threshold} + export PSM2_MQ_EAGER_SDMA_SZ=${toString conf.threshold} + #export PSM2_MTU=${toString conf.threshold} + export PSM2_TRACEMASK=0x101 + ''; + + program = "${nextStage}/bin/osu_bw"; + }; + + program = {nextStage, conf, ...}: bsc.osumb.override { + # Use the specified MPI implementation + inherit (conf) mpi; + }; + + pipeline = stdexp.stdPipeline ++ [ exec program ]; + +in + + stdexp.genExperiment { inherit configs pipeline; } From 14211c98952c3921e7ee360c7f6fc23d58f249bd Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 3 Mar 2021 12:37:46 +0100 Subject: [PATCH 508/987] osu: use ggsave and reduce verbosity --- garlic/fig/osu/bw.R | 41 +++++++++++++++++++++++++++------------- garlic/fig/osu/latency.R | 37 ++++++++++++++++++++++++------------ 2 files changed, 53 insertions(+), 25 deletions(-) diff --git a/garlic/fig/osu/bw.R b/garlic/fig/osu/bw.R index 6744dbc..d81a894 100644 --- a/garlic/fig/osu/bw.R +++ b/garlic/fig/osu/bw.R @@ -1,5 +1,5 @@ library(ggplot2) -library(dplyr) +library(dplyr, warn.conflicts = FALSE) library(scales) library(jsonlite) @@ -10,7 +10,7 @@ input_file = "input.json" if (length(args)>0) { input_file = args[1] } # Load the dataset in NDJSON format -dataset = jsonlite::stream_in(file(input_file)) %>% +dataset = jsonlite::stream_in(file(input_file), verbose=FALSE) %>% jsonlite::flatten() # We only need the nblocks and time @@ -23,11 +23,9 @@ cpusPerTask = unique(df$config.cpusPerTask) df$unitName = as.factor(df$unitName) df$sizeFactor = as.factor(df$size) -ppi=300 -h=8 -w=12 - -png("bw.png", width=w*ppi, height=h*ppi, res=ppi) +df = group_by(df, unitName, sizeFactor) %>% + mutate(medianBw = median(bw)) %>% + ungroup() breaks = 10^(-10:10) minor_breaks <- rep(1:9, 21)*(10^rep(-10:10, each=9)) @@ -39,12 +37,29 @@ p = ggplot(data=df, aes(x=size, y=bw)) + subtitle=input_file) + geom_boxplot(aes(color=unitName, group=interaction(unitName, sizeFactor))) + scale_x_continuous(trans=log2_trans()) + - scale_y_log10(breaks = breaks, minor_breaks = minor_breaks) + + #scale_y_log10(breaks = breaks, minor_breaks = minor_breaks) + theme_bw() + - theme(legend.position = c(0.15, 0.9)) + theme(legend.position = c(0.8, 0.2)) -# Render the plot -print(p) +ppi=300 +h=4 +w=8 +ggsave("boxplot.pdf", plot=p, width=w, height=h, dpi=ppi) +ggsave("boxplot.png", plot=p, width=w, height=h, dpi=ppi) -## Save the png image -dev.off() +p = ggplot(data=df, aes(x=size, y=medianBw)) + + labs(x="Size (bytes)", y="Bandwidth (MB/s)", + title=sprintf("OSU benchmark: osu_bw", + nodes, tasksPerNode, cpusPerTask), + subtitle=input_file) + + geom_line(aes(color=unitName, linetype=unitName)) + + geom_point(aes(color=unitName, shape=unitName)) + + geom_hline(yintercept = 100e3 / 8, color="red") + + annotate("text", x = 8, y = (100e3 / 8) * 0.95, label = "12.5GB/s (100Gb/s)") + + scale_x_continuous(trans=log2_trans()) + + #scale_y_log10(breaks = breaks, minor_breaks = minor_breaks) + + theme_bw() + + theme(legend.position = c(0.8, 0.2)) + +ggsave("median-lines.png", plot=p, width=w, height=h, dpi=ppi) +ggsave("median-lines.pdf", plot=p, width=w, height=h, dpi=ppi) diff --git a/garlic/fig/osu/latency.R b/garlic/fig/osu/latency.R index 53e7bb7..a91fc05 100644 --- a/garlic/fig/osu/latency.R +++ b/garlic/fig/osu/latency.R @@ -1,5 +1,5 @@ library(ggplot2) -library(dplyr) +library(dplyr, warn.conflicts = FALSE) library(scales) library(jsonlite) @@ -10,7 +10,7 @@ input_file = "input.json" if (length(args)>0) { input_file = args[1] } # Load the dataset in NDJSON format -dataset = jsonlite::stream_in(file(input_file)) %>% +dataset = jsonlite::stream_in(file(input_file), verbose=FALSE) %>% jsonlite::flatten() # We only need the nblocks and time @@ -23,11 +23,9 @@ cpusPerTask = unique(df$config.cpusPerTask) df$unitName = as.factor(df$unitName) df$sizeFactor = as.factor(df$size) -ppi=300 -h=8 -w=12 - -png("latency.png", width=w*ppi, height=h*ppi, res=ppi) +df = group_by(df, unitName, sizeFactor) %>% + mutate(medianLatency = median(latency)) %>% + ungroup() breaks = 10^(-10:10) minor_breaks <- rep(1:9, 21)*(10^rep(-10:10, each=9)) @@ -41,10 +39,25 @@ p = ggplot(data=df, aes(x=size, y=latency)) + scale_x_continuous(trans=log2_trans()) + scale_y_log10(breaks = breaks, minor_breaks = minor_breaks) + theme_bw() + - theme(legend.position = c(0.15, 0.9)) + theme(legend.position = c(0.8, 0.2)) -# Render the plot -print(p) +ppi=300 +h=4 +w=8 +ggsave("boxplot.png", plot=p, width=w, height=h, dpi=ppi) +ggsave("boxplot.pdf", plot=p, width=w, height=h, dpi=ppi) -## Save the png image -dev.off() +p = ggplot(data=df, aes(x=size, y=medianLatency)) + + labs(x="Size (bytes)", y="Latency (us)", + title=sprintf("OSU benchmark: osu_latency", + nodes, tasksPerNode, cpusPerTask), + subtitle=input_file) + + geom_line(aes(color=unitName, linetype=unitName)) + + geom_point(aes(color=unitName, shape=unitName)) + + scale_x_continuous(trans=log2_trans()) + + scale_y_log10(breaks = breaks, minor_breaks = minor_breaks) + + theme_bw() + + theme(legend.position = c(0.2, 0.8)) + +ggsave("median-lines.png", plot=p, width=w, height=h, dpi=ppi) +ggsave("median-lines.pdf", plot=p, width=w, height=h, dpi=ppi) From 651d91ef79424834d9bd8eebb4acc2fd7555d23e Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 3 Mar 2021 12:39:23 +0100 Subject: [PATCH 509/987] fig: improve indentation --- garlic/fig/index.nix | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/garlic/fig/index.nix b/garlic/fig/index.nix index 8d9af00..f6709d1 100644 --- a/garlic/fig/index.nix +++ b/garlic/fig/index.nix @@ -53,12 +53,12 @@ in }; osu = with exp.osu; { - latency = customPlot ./osu/latency.R (ds.osu.latency latency.result); - latencyShm = customPlot ./osu/latency.R (ds.osu.latency latencyShm.result); - latencyMt = customPlot ./osu/latency.R (ds.osu.latency latencyMt.result); - latencyMtShm = customPlot ./osu/latency.R (ds.osu.latency latencyMtShm.result); + latency = customPlot ./osu/latency.R (ds.osu.latency latency.result); + latencyShm = customPlot ./osu/latency.R (ds.osu.latency latencyShm.result); + latencyMt = customPlot ./osu/latency.R (ds.osu.latency latencyMt.result); + latencyMtShm = customPlot ./osu/latency.R (ds.osu.latency latencyMtShm.result); - bw = customPlot ./osu/bw.R (ds.osu.bw bw.result); + bw = customPlot ./osu/bw.R (ds.osu.bw bw.result); bwShm = customPlot ./osu/bw.R (ds.osu.bw bwShm.result); }; From 5afe819724d8a08c8ea7f640e41caa5f92020f41 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 3 Mar 2021 12:40:15 +0100 Subject: [PATCH 510/987] osu: add impi figure --- garlic/fig/index.nix | 1 + garlic/fig/osu/impi.R | 67 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 68 insertions(+) create mode 100644 garlic/fig/osu/impi.R diff --git a/garlic/fig/index.nix b/garlic/fig/index.nix index f6709d1..850ba96 100644 --- a/garlic/fig/index.nix +++ b/garlic/fig/index.nix @@ -60,6 +60,7 @@ in bw = customPlot ./osu/bw.R (ds.osu.bw bw.result); bwShm = customPlot ./osu/bw.R (ds.osu.bw bwShm.result); + impi = customPlot ./osu/impi.R (ds.osu.bw impi.result); }; # The figures used in the article contained in a directory per figure diff --git a/garlic/fig/osu/impi.R b/garlic/fig/osu/impi.R new file mode 100644 index 0000000..e2b7418 --- /dev/null +++ b/garlic/fig/osu/impi.R @@ -0,0 +1,67 @@ +library(ggplot2) +library(dplyr, warn.conflicts = FALSE) +library(scales) +library(jsonlite) + +args=commandArgs(trailingOnly=TRUE) + +# Read the timetable from args[1] +input_file = "input.json" +if (length(args)>0) { input_file = args[1] } + +# Load the dataset in NDJSON format +dataset = jsonlite::stream_in(file(input_file), verbose=FALSE) %>% + jsonlite::flatten() + +# We only need the nblocks and time +df = select(dataset, config.unitName, config.nodes, config.ntasksPerNode, config.cpusPerTask, config.threshold, size, bw) %>% + rename(unitName=config.unitName) %>% + rename(threshold=config.threshold) + +nodes = unique(df$config.nodes) +tasksPerNode = unique(df$config.ntasksPerNode) +cpusPerTask = unique(df$config.cpusPerTask) +df$unitName = as.factor(df$unitName) +df$sizeFactor = as.factor(df$size) +df$threshold = as.factor(df$threshold) + +df = group_by(df, unitName, sizeFactor) %>% + mutate(medianBw = median(bw)) %>% + ungroup() + +breaks = 10^(-10:10) +minor_breaks <- rep(1:9, 21)*(10^rep(-10:10, each=9)) + +p = ggplot(data=df, aes(x=size, y=bw)) + + labs(x="Size (bytes)", y="Bandwidth (MB/s)", + title=sprintf("OSU bandwidth benchmark: nodes=%d tasksPerNode=%d cpusPerTask=%d", + nodes, tasksPerNode, cpusPerTask), + subtitle=input_file) + + geom_boxplot(aes(color=threshold, group=interaction(threshold, sizeFactor))) + + scale_x_continuous(trans=log2_trans()) + + #scale_y_log10(breaks = breaks, minor_breaks = minor_breaks) + + theme_bw() + + theme(legend.position = c(0.8, 0.2)) + +ppi=300 +h=4 +w=8 +ggsave("boxplot.pdf", plot=p, width=w, height=h, dpi=ppi) +ggsave("boxplot.png", plot=p, width=w, height=h, dpi=ppi) + +p = ggplot(data=df, aes(x=size, y=medianBw)) + + labs(x="Size (bytes)", y="Bandwidth (MB/s)", + title=sprintf("OSU benchmark: osu_bw", + nodes, tasksPerNode, cpusPerTask), + subtitle=input_file) + + geom_line(aes(color=threshold, linetype=threshold)) + + geom_point(aes(color=threshold, shape=threshold)) + + geom_hline(yintercept = 100e3 / 8, color="red") + + annotate("text", x = 8, y = (100e3 / 8) * 0.95, label = "12.5GB/s (100Gb/s)") + + scale_x_continuous(trans=log2_trans()) + + #scale_y_log10(breaks = breaks, minor_breaks = minor_breaks) + + theme_bw() + + theme(legend.position = c(0.8, 0.2)) + +ggsave("median-lines.png", plot=p, width=w, height=h, dpi=ppi) +ggsave("median-lines.pdf", plot=p, width=w, height=h, dpi=ppi) From c684b1870a19db95ac71ed94049679a71c773242 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 3 Mar 2021 17:41:05 +0100 Subject: [PATCH 511/987] osu: update 5.6.3 -> 5.7 --- bsc/osu/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bsc/osu/default.nix b/bsc/osu/default.nix index bbe8dc1..af91d81 100644 --- a/bsc/osu/default.nix +++ b/bsc/osu/default.nix @@ -5,12 +5,12 @@ }: stdenv.mkDerivation rec { - version = "5.6.3"; + version = "5.7"; name = "osu-micro-benchmarks-${version}"; src = fetchurl { url = "http://mvapich.cse.ohio-state.edu/download/mvapich/osu-micro-benchmarks-${version}.tar.gz"; - sha256 = "1f5fc252c0k4rd26xh1v5017wfbbsr2w7jm49x8yigc6n32sisn5"; + sha256 = "1425ygxpk3kyy6ilh4f6qjsjdyx0gjjzs7ic1cb7zjmn1vhfnw0l"; }; doCheck = true; From b79951c9fe2b69e40a6a57f2261a32d6ae7cfbc6 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 3 Mar 2021 17:43:09 +0100 Subject: [PATCH 512/987] bsc: add new package lmbench --- bsc/lmbench/default.nix | 40 ++++++++++++++++++++++++++++++++++++++++ overlay.nix | 1 + 2 files changed, 41 insertions(+) create mode 100644 bsc/lmbench/default.nix diff --git a/bsc/lmbench/default.nix b/bsc/lmbench/default.nix new file mode 100644 index 0000000..0c847c4 --- /dev/null +++ b/bsc/lmbench/default.nix @@ -0,0 +1,40 @@ +{ + stdenv, + fetchFromGitHub +}: + +stdenv.mkDerivation rec { + pname = "lmbench"; + version = "701c6c35"; + + # We use the intel repo as they have fixed some problems + src = fetchFromGitHub { + owner = "intel"; + repo = pname; + rev = "701c6c35b0270d4634fb1dc5272721340322b8ed"; + sha256 = "0sf6zk03knkardsfd6qx7drpm56nhg53n885cylkggk83r38idyr"; + }; + + postUnpack = '' + export sourceRoot="$sourceRoot/src" + ''; + + postPatch = '' + sed -i "s@/bin/rm@rm@g" $(find . -name Makefile) + ''; + + hardeningDisable = [ "format" ]; + + enableParallelBuilding = false; + + preBuild = '' + makeFlagsArray+=(BASE=$out) + ''; + + meta = { + description = "lmbench"; + homepage = "http://www.bitmover.com/lmbench/"; + maintainers = [ ]; + platforms = stdenv.lib.platforms.all; + }; +} diff --git a/overlay.nix b/overlay.nix index e44aa0f..a2a440b 100644 --- a/overlay.nix +++ b/overlay.nix @@ -158,6 +158,7 @@ let # ================================================================= osumb = callPackage ./bsc/osu/default.nix { }; + lmbench = callPackage ./bsc/lmbench/default.nix { }; pmix2 = callPackage ./bsc/pmix/pmix2.nix { }; slurm17 = callPackage ./bsc/slurm/default.nix { pmix = bsc.pmix2; From 6b6b54f757400b1890a1fe3609743bee45469b0b Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 3 Mar 2021 19:00:36 +0100 Subject: [PATCH 513/987] timetable: add total_time column --- garlic/ds/std/timetable.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/garlic/ds/std/timetable.py b/garlic/ds/std/timetable.py index d79bf13..c183097 100644 --- a/garlic/ds/std/timetable.py +++ b/garlic/ds/std/timetable.py @@ -5,6 +5,13 @@ def eprint(*args, **kwargs): print(*args, file=sys.stderr, flush=True, **kwargs) def process_run(tree, runPath): + + with open(".garlic/total_time_start", "r") as f: + total_time_start = float(f.readline().strip()) + + with open(".garlic/total_time_end", "r") as f: + total_time_end = float(f.readline().strip()) + with open("stdout.log", "r") as f: lines = [line.strip() for line in f.readlines()] @@ -23,6 +30,8 @@ def process_run(tree, runPath): time_str = time_line.split()[1] tree['time'] = float(time_str) + tree['total_time'] = total_time_end - total_time_start + print(json.dumps(tree)) def process_result_tree(resultTree): From 5fae560ce9e9e5330e464d179936983cf0a2abb5 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 3 Mar 2021 19:05:03 +0100 Subject: [PATCH 514/987] nanos6: update 2.5 -> 2.5.1 --- bsc/nanos6/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bsc/nanos6/default.nix b/bsc/nanos6/default.nix index 0a13bdb..24fdf7d 100644 --- a/bsc/nanos6/default.nix +++ b/bsc/nanos6/default.nix @@ -20,13 +20,13 @@ with stdenv.lib; stdenv.mkDerivation rec { pname = "nanos6"; - version = "2.5"; + version = "2.5.1"; src = fetchFromGitHub { owner = "bsc-pm"; repo = "nanos6"; rev = "version-${version}"; - sha256 = "1wyr8liyz1l7rbf5flxihabasm887bq2jcp2csma7b9rhrfyhkm1"; + sha256 = "17z6gr122cw0l4lsp0qdrdbcl1zcls4i0haxqpj3g60fvjx3fznp"; }; prePatch = '' From cb12aa2d94c85cbb657ae38e63f9661da2b536c7 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 3 Mar 2021 19:05:33 +0100 Subject: [PATCH 515/987] nanos6: enable jemalloc by default --- bsc/nanos6/default.nix | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/bsc/nanos6/default.nix b/bsc/nanos6/default.nix index 24fdf7d..2c06b12 100644 --- a/bsc/nanos6/default.nix +++ b/bsc/nanos6/default.nix @@ -11,11 +11,13 @@ , papi , extrae , boost -, enableJemalloc ? false +, enableJemalloc ? true , jemalloc ? null , cachelineBytes ? 64 }: +assert enableJemalloc -> (jemalloc != null); + with stdenv.lib; stdenv.mkDerivation rec { From d5912c38893c13e1e3ad0174229c21df670128fe Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 3 Mar 2021 19:06:25 +0100 Subject: [PATCH 516/987] tampi: update to last commit --- bsc/tampi/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/bsc/tampi/default.nix b/bsc/tampi/default.nix index d5c113f..e6160ca 100644 --- a/bsc/tampi/default.nix +++ b/bsc/tampi/default.nix @@ -12,7 +12,7 @@ }: stdenv.mkDerivation rec { - version = "1.0.2"; + version = "1.0.2+6b11368e"; pname = "tampi"; enableParallelBuilding = true; buildInputs = [ autoreconfHook automake autoconf libtool gnumake boost mpi gcc ]; @@ -21,7 +21,7 @@ stdenv.mkDerivation rec { src = fetchFromGitHub { owner = "bsc-pm"; repo = "tampi"; - rev = "v${version}"; - sha256 = "09711av3qbah56mchr81679x05zxl3hi0pjndcnvk7jsfcdxvbm7"; + rev = "6b11368ea522cd7095cfcf163831b8285faeee7e"; + sha256 = "0519lb1rinhzkk0iy5cjjiqnk1bzhnnzhfigj9ac2c3wl0zcsrvy"; }; } From d4ca58db2c00901e7615177ccf53921170129619 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 4 Mar 2021 12:42:44 +0100 Subject: [PATCH 517/987] mcxx: update to tag 2.2.98 --- bsc/mcxx/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/bsc/mcxx/default.nix b/bsc/mcxx/default.nix index b903f96..87fee60 100644 --- a/bsc/mcxx/default.nix +++ b/bsc/mcxx/default.nix @@ -15,7 +15,7 @@ stdenv.mkDerivation rec { pname = "mcxx"; - version = "2.3-8e998824"; + version = "2.2.98"; passthru = { CC = "mcc"; @@ -26,8 +26,8 @@ stdenv.mkDerivation rec { src = fetchFromGitHub { owner = "bsc-pm"; repo = pname; - rev = "8e998824f0fde001340dbec369ef59e40e53761e"; - sha256 = "0ix20l50m52kcw12a6dhrasgzjjc2y73j55c994sbhyd133n3pln"; + rev = version; + sha256 = "1ha1vn1jy817r3mvv8mzf18qmd93m238mr3j74q0k12qs333mwwk"; }; enableParallelBuilding = true; From c4e49ea2491ce86e6c7c4cf5ebc68957af77014b Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 4 Mar 2021 12:43:17 +0100 Subject: [PATCH 518/987] llvm-ompss2: update to last commit d2d451fb --- bsc/llvm-ompss2/clang.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/bsc/llvm-ompss2/clang.nix b/bsc/llvm-ompss2/clang.nix index 9d57186..97ec345 100644 --- a/bsc/llvm-ompss2/clang.nix +++ b/bsc/llvm-ompss2/clang.nix @@ -14,14 +14,14 @@ }: stdenv.mkDerivation rec { - version = "2020.11"; + version = "2020.11+d2d451fb"; pname = "clang-ompss2"; src = fetchFromGitHub { owner = "bsc-pm"; repo = "llvm"; - rev = "github-release-${version}"; - sha256 = "00z3xlw36lbiz84a47k95gin9fzsni5jd1f71dpg5l2qjy961qma"; + rev = "d2d451fb1a886b52d0ff95ec8484df7afa7a8132"; + sha256 = "1yrfxfp2wz3qpb7j39ra8kkjsqm328j611yrks8bjc86lscmp6yz"; }; enableParallelBuilding = true; From 7e10a43b40bcc1b31cd2d9dd644759081622f2db Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 5 Mar 2021 16:16:06 +0100 Subject: [PATCH 519/987] heat: update new app version The blocksize is now specified at runtime --- garlic/apps/heat/default.nix | 32 +++++++++----------------------- 1 file changed, 9 insertions(+), 23 deletions(-) diff --git a/garlic/apps/heat/default.nix b/garlic/apps/heat/default.nix index a00c2b3..c950600 100644 --- a/garlic/apps/heat/default.nix +++ b/garlic/apps/heat/default.nix @@ -2,43 +2,29 @@ stdenv , mpi , tampi -, clangOmpss2 -, bsx ? 1024 -, bsy ? 1024 +, mcxx +, gitBranch ? "master" }: stdenv.mkDerivation rec { name = "heat"; - extension = if (bsx == bsy) - then "${toString bsx}bs.exe" - else "${toString bsx}x${toString bsy}bs.exe"; - variant = "heat_ompss"; - target = "${variant}.${extension}"; - - makeFlags = [ - "BSX=${toString bsx}" - "BSY=${toString bsy}" - target - ]; - - src = ~/heat; - #src = builtins.fetchGit { - # url = "ssh://git@bscpm03.bsc.es/garlic/apps/heat.git"; - # ref = "garlic"; - #}; + src = builtins.fetchGit { + url = "ssh://git@bscpm03.bsc.es/garlic/apps/heat.git"; + ref = gitBranch; + }; buildInputs = [ mpi - clangOmpss2 + mcxx tampi ]; - programPath = "/bin/${target}"; + programPath = "/bin/${name}"; installPhase = '' mkdir -p $out/bin - cp ${target} $out/bin/ + cp ${name} $out/bin/ mkdir -p $out/etc cp heat.conf $out/etc/ From 363700eb9aef5886986ac4e1c147657b47d68b04 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 5 Mar 2021 16:18:51 +0100 Subject: [PATCH 520/987] heat: update test experiment --- garlic/exp/heat/test.nix | 39 +++++++++++++++++++++++++++------------ 1 file changed, 27 insertions(+), 12 deletions(-) diff --git a/garlic/exp/heat/test.nix b/garlic/exp/heat/test.nix index b22a057..4edd013 100644 --- a/garlic/exp/heat/test.nix +++ b/garlic/exp/heat/test.nix @@ -4,14 +4,17 @@ , bsc , targetMachine , stages +, garlicTools }: with stdenv.lib; +with garlicTools; let # Initial variable configuration varConf = with bsc; { - bsx = [ 1024 2048 4096 ]; + cbs = range2 8 4096; + rbs = range2 32 4096; }; machineConfig = targetMachine.config; @@ -19,12 +22,19 @@ let # Generate the complete configuration for each unit genConf = with bsc; c: targetMachine.config // rec { expName = "heat"; - unitName = "${expName}.bsx-${toString bsx}"; + unitName = expName + + ".cbs-${toString cbs}" + + ".rbs-${toString rbs}"; + inherit (machineConfig) hw; # heat options - inherit (c) bsx; timesteps = 10; + cols = 1024 * 16; # Columns + rows = 1024 * 16; # Rows + cbs = c.cbs; + rbs = c.rbs; + gitBranch = "garlic/tampi+isend+oss+task"; # Repeat the execution of each unit 30 times loops = 10; @@ -44,20 +54,25 @@ let inherit varConf genConf; }; - exec = {nextStage, conf, ...}: with conf; stages.exec { + exec = {nextStage, conf, ...}: stages.exec { inherit nextStage; - argv = [ "-s" 1024 "-t" timesteps ]; + argv = [ + "--rows" conf.rows + "--cols" conf.cols + "--rbs" conf.rbs + "--cbs" conf.cbs + "--timesteps" conf.timesteps + ]; + + # The next stage is the program env = '' - export LD_DEBUG=libs - export NANOS6_LOADER_VERBOSE=1 - cp ${nextStage}/etc/heat.conf . + ln -sf ${nextStage}/etc/heat.conf heat.conf || true ''; }; - program = {nextStage, conf, ...}: with conf; - bsc.garlic.apps.heat.override { - inherit bsx; - }; + program = {nextStage, conf, ...}: bsc.garlic.apps.heat.override { + inherit (conf) gitBranch; + }; pipeline = stdexp.stdPipeline ++ [ exec program ]; From 29d7245135e130813c020f9975954398720a526d Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 5 Mar 2021 16:21:13 +0100 Subject: [PATCH 521/987] heat: add figure with heatmap --- garlic/fig/heat/test.R | 47 ++++++++++++++++++++++++++++++++---------- 1 file changed, 36 insertions(+), 11 deletions(-) diff --git a/garlic/fig/heat/test.R b/garlic/fig/heat/test.R index cbf3295..d3dc5d7 100644 --- a/garlic/fig/heat/test.R +++ b/garlic/fig/heat/test.R @@ -15,16 +15,20 @@ dataset = jsonlite::stream_in(file(input_file)) %>% # We only need the nblocks and time -df = select(dataset, config.bsx, time) %>% - rename(bsx=config.bsx) +df = select(dataset, config.cbs, config.rbs, time) %>% + rename(cbs=config.cbs, rbs=config.rbs) -df$bsx = as.factor(df$bsx) +df$cbs = as.factor(df$cbs) +df$rbs = as.factor(df$rbs) # Normalize the time by the median -D=group_by(df, bsx) %>% - mutate(tnorm = time / median(time) - 1) - -print(D) +df=group_by(df, cbs, rbs) %>% + mutate(mtime = median(time)) %>% + mutate(tnorm = time / mtime - 1) %>% + mutate(logmtime = log(mtime)) %>% + ungroup() %>% + filter(between(mtime, mean(time) - (1 * sd(time)), + mean(time) + (1 * sd(time)))) ppi=300 h=5 @@ -35,10 +39,10 @@ png("box.png", width=w*ppi, height=h*ppi, res=ppi) # # # Create the plot with the normalized time vs nblocks -p = ggplot(data=D, aes(x=bsx, y=tnorm)) + +p = ggplot(data=df, aes(x=cbs, y=tnorm)) + # Labels - labs(x="bsx", y="Normalized time", + labs(x="cbs", y="Normalized time", title=sprintf("Heat normalized time"), subtitle=input_file) + @@ -75,9 +79,9 @@ dev.off() png("scatter.png", width=w*ppi, height=h*ppi, res=ppi) # ## Create the plot with the normalized time vs nblocks -p = ggplot(D, aes(x=bsx, y=time)) + +p = ggplot(df, aes(x=cbs, y=time, linetype=rbs, group=rbs)) + - labs(x="bsx", y="Time (s)", + labs(x="cbs", y="Time (s)", title=sprintf("Heat granularity"), subtitle=input_file) + theme_bw() + @@ -85,6 +89,7 @@ p = ggplot(D, aes(x=bsx, y=time)) + theme(legend.position = c(0.5, 0.88)) + geom_point(shape=21, size=3) + + geom_line(aes(y=mtime)) + #scale_x_continuous(trans=log2_trans()) + scale_y_continuous(trans=log2_trans()) @@ -93,3 +98,23 @@ print(p) # Save the png image dev.off() + + +png("heatmap.png", width=w*ppi, height=h*ppi, res=ppi) +# +## Create the plot with the normalized time vs nblocks +p = ggplot(df, aes(x=cbs, y=rbs, fill=logmtime)) + + geom_raster() + + scale_fill_gradient(high="black", low="white") + + coord_fixed() + + theme_bw() + + theme(plot.subtitle=element_text(size=8)) + + labs(x="cbs", y="rbs", + title=sprintf("Heat granularity"), + subtitle=input_file) + +# Render the plot +print(p) + +# Save the png image +dev.off() From c1efba1e65751be6a167a6c3d2acab050bb1aadf Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 5 Mar 2021 18:28:32 +0100 Subject: [PATCH 522/987] heat: rename test -> granul experiment --- garlic/exp/heat/{test.nix => granul.nix} | 0 garlic/exp/index.nix | 2 +- garlic/fig/heat/{test.R => granul.R} | 0 garlic/fig/index.nix | 2 +- 4 files changed, 2 insertions(+), 2 deletions(-) rename garlic/exp/heat/{test.nix => granul.nix} (100%) rename garlic/fig/heat/{test.R => granul.R} (100%) diff --git a/garlic/exp/heat/test.nix b/garlic/exp/heat/granul.nix similarity index 100% rename from garlic/exp/heat/test.nix rename to garlic/exp/heat/granul.nix diff --git a/garlic/exp/index.nix b/garlic/exp/index.nix index 955f735..c3d8beb 100644 --- a/garlic/exp/index.nix +++ b/garlic/exp/index.nix @@ -64,7 +64,7 @@ }; heat = { - test = callPackage ./heat/test.nix { }; + granul = callPackage ./heat/granul.nix { }; }; bigsort = rec { diff --git a/garlic/fig/heat/test.R b/garlic/fig/heat/granul.R similarity index 100% rename from garlic/fig/heat/test.R rename to garlic/fig/heat/granul.R diff --git a/garlic/fig/index.nix b/garlic/fig/index.nix index 850ba96..01477ba 100644 --- a/garlic/fig/index.nix +++ b/garlic/fig/index.nix @@ -45,7 +45,7 @@ in }; heat = with exp.heat; { - test = stdPlot ./heat/test.R [ test ]; + granul = stdPlot ./heat/granul.R [ granul ]; }; creams = with exp.creams; { From 14fbb1499be15165bb0dd1565941974809f207eb Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 5 Mar 2021 18:29:43 +0100 Subject: [PATCH 523/987] ds: add perf stat parser We can only read one output file by now, located at: .garlic/perf.csv --- garlic/ds/index.nix | 2 ++ garlic/ds/perf/stat.nix | 23 +++++++++++++ garlic/ds/perf/stat.py | 71 +++++++++++++++++++++++++++++++++++++++++ 3 files changed, 96 insertions(+) create mode 100644 garlic/ds/perf/stat.nix create mode 100644 garlic/ds/perf/stat.py diff --git a/garlic/ds/index.nix b/garlic/ds/index.nix index c3c0454..1c2c28e 100644 --- a/garlic/ds/index.nix +++ b/garlic/ds/index.nix @@ -15,4 +15,6 @@ latency = callPackage ./osu/latency.nix {}; bw = callPackage ./osu/bw.nix {}; }; + + perf.stat = callPackage ./perf/stat.nix {}; } diff --git a/garlic/ds/perf/stat.nix b/garlic/ds/perf/stat.nix new file mode 100644 index 0000000..14b55c4 --- /dev/null +++ b/garlic/ds/perf/stat.nix @@ -0,0 +1,23 @@ +{ + stdenv +, python3 +, gzip +}: + +resultTree: + +stdenv.mkDerivation { + name = "perf-stat.json.gz"; + preferLocalBuild = true; + src = ./stat.py; + phases = [ "unpackPhase" "installPhase" ]; + + unpackPhase = '' + cp $src stat.py + ''; + + buildInputs = [ python3 gzip ]; + installPhase = '' + python stat.py ${resultTree} | gzip > $out + ''; +} diff --git a/garlic/ds/perf/stat.py b/garlic/ds/perf/stat.py new file mode 100644 index 0000000..ac180fe --- /dev/null +++ b/garlic/ds/perf/stat.py @@ -0,0 +1,71 @@ +import json, re, sys, os, glob +from os import path + +def eprint(*args, **kwargs): + print(*args, file=sys.stderr, flush=True, **kwargs) + +def process_run(tree, runPath): + with open(".garlic/perf.csv", "r") as f: + lines = [line.strip() for line in f.readlines()] + + perf_data = {} + + for line in lines: + if len(line) == 0: continue + if line[0] == '#': continue + + slices = line.split(',') + if len(slices) != 7: + print("error: mismatched columns") + exit(1) + + name = slices[2].replace("-", "_") + value = float(slices[0]) + + perf_data[name] = value + + tree['perf'] = perf_data + + print(json.dumps(tree)) + +def process_result_tree(resultTree): + + eprint("processing resultTree: " + resultTree) + + os.chdir(resultTree) + + experiments = glob.glob(resultTree + "/*-experiment") + + for exp in glob.glob("*-experiment"): + eprint("found experiment: " + exp) + expPath = path.join(resultTree, exp) + os.chdir(expPath) + + for unit in glob.glob("*-unit"): + eprint("found unit: " + unit) + unitPath = path.join(resultTree, exp, unit) + os.chdir(unitPath) + + with open('garlic_config.json') as json_file: + garlic_conf = json.load(json_file) + + tree = {"exp":exp, "unit":unit, "config":garlic_conf} + + for i in range(garlic_conf['loops']): + run = str(i + 1) + runPath = path.join(resultTree, exp, unit, run) + if path.isdir(runPath) == False: + eprint("missing run {}, aborting".format(run)) + exit(1) + + tree["run"] = run + os.chdir(runPath) + + process_run(tree, runPath) + + +if len(sys.argv) != 2: + eprint("usage: python {} ".format(argv[0])) + exit(1) + +process_result_tree(sys.argv[1]) From b600f64fcc20eb2e7485ec87b756acfba7c16c2e Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 5 Mar 2021 18:31:31 +0100 Subject: [PATCH 524/987] heat: add cache miss experiment and figure --- garlic/exp/heat/cache.nix | 87 +++++++++++++++++++++++++++++++++++++++ garlic/exp/index.nix | 1 + garlic/fig/heat/cache.R | 51 +++++++++++++++++++++++ garlic/fig/index.nix | 1 + 4 files changed, 140 insertions(+) create mode 100644 garlic/exp/heat/cache.nix create mode 100644 garlic/fig/heat/cache.R diff --git a/garlic/exp/heat/cache.nix b/garlic/exp/heat/cache.nix new file mode 100644 index 0000000..979533b --- /dev/null +++ b/garlic/exp/heat/cache.nix @@ -0,0 +1,87 @@ +{ + stdenv +, stdexp +, bsc +, targetMachine +, stages +, garlicTools +}: + +with stdenv.lib; +with garlicTools; + +let + # Initial variable configuration + varConf = with bsc; { + cbs = range2 8 4096; + rbs = range2 32 4096; + }; + + machineConfig = targetMachine.config; + + # Generate the complete configuration for each unit + genConf = with bsc; c: targetMachine.config // rec { + expName = "heat"; + unitName = expName + + ".cbs-${toString cbs}" + + ".rbs-${toString rbs}"; + + inherit (machineConfig) hw; + + # heat options + timesteps = 10; + cols = 1024 * 16; # Columns + rows = 1024 * 16; # Rows + cbs = c.cbs; + rbs = c.rbs; + gitBranch = "garlic/tampi+isend+oss+task"; + + # Repeat the execution of each unit 30 times + loops = 10; + + # Resources + qos = "debug"; + ntasksPerNode = 1; + nodes = 1; + time = "02:00:00"; + # Assign one socket to each task (only one process) + cpusPerTask = hw.cpusPerSocket; + jobName = unitName; + }; + + # Compute the array of configurations + configs = stdexp.buildConfigs { + inherit varConf genConf; + }; + + perf = {nextStage, conf, ...}: stages.perf { + inherit nextStage; + perfOptions = "stat -o .garlic/perf.csv -x , " + + "-e cycles,instructions,cache-references,cache-misses"; + }; + + exec = {nextStage, conf, ...}: stages.exec { + inherit nextStage; + argv = [ + "--rows" conf.rows + "--cols" conf.cols + "--rbs" conf.rbs + "--cbs" conf.cbs + "--timesteps" conf.timesteps + ]; + + # The next stage is the program + env = '' + ln -sf ${nextStage}/etc/heat.conf heat.conf || true + ''; + }; + + program = {nextStage, conf, ...}: bsc.garlic.apps.heat.override { + inherit (conf) gitBranch; + }; + + pipeline = stdexp.stdPipeline ++ [ perf exec program ]; + +in + + stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/index.nix b/garlic/exp/index.nix index c3d8beb..f616e07 100644 --- a/garlic/exp/index.nix +++ b/garlic/exp/index.nix @@ -65,6 +65,7 @@ heat = { granul = callPackage ./heat/granul.nix { }; + cache = callPackage ./heat/cache.nix { }; }; bigsort = rec { diff --git a/garlic/fig/heat/cache.R b/garlic/fig/heat/cache.R new file mode 100644 index 0000000..b9025ae --- /dev/null +++ b/garlic/fig/heat/cache.R @@ -0,0 +1,51 @@ +library(ggplot2) +library(dplyr) +library(scales) +library(jsonlite) + +args=commandArgs(trailingOnly=TRUE) + +# Read the timetable from args[1] +input_file = "input.json" +if (length(args)>0) { input_file = args[1] } + +# Load the dataset in NDJSON format +dataset = jsonlite::stream_in(file(input_file)) %>% + jsonlite::flatten() + +# We only need the nblocks and time +df = select(dataset, config.cbs, config.rbs, perf.cache_misses) %>% + rename(cbs=config.cbs, rbs=config.rbs) + +df$cbs = as.factor(df$cbs) +df$rbs = as.factor(df$rbs) + +# Normalize the time by the median +df=group_by(df, cbs, rbs) %>% + mutate(median.misses = median(perf.cache_misses)) %>% + mutate(log.median.misses = log(median.misses)) %>% + ungroup() + +ppi=300 +h=5 +w=5 + + +png("heatmap.png", width=1.5*w*ppi, height=h*ppi, res=ppi) +# +## Create the plot with the normalized time vs nblocks +p = ggplot(df, aes(x=cbs, y=rbs, fill=log.median.misses)) + + geom_raster() + + scale_fill_gradient(high="black", low="white") + + coord_fixed() + + theme_bw() + + theme(plot.subtitle=element_text(size=8)) + + labs(x="cbs", y="rbs", + title=sprintf("Heat granularity: cache misses"), + subtitle=input_file) + +# Render the plot +print(p) + +# Save the png image +dev.off() diff --git a/garlic/fig/index.nix b/garlic/fig/index.nix index 01477ba..b790cef 100644 --- a/garlic/fig/index.nix +++ b/garlic/fig/index.nix @@ -46,6 +46,7 @@ in heat = with exp.heat; { granul = stdPlot ./heat/granul.R [ granul ]; + cache = customPlot ./heat/cache.R (ds.perf.stat cache.result); }; creams = with exp.creams; { From 71a13969550a4ca41c2599a0e40a5d8f1dc425ed Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 9 Mar 2021 11:07:19 +0100 Subject: [PATCH 525/987] ds: parse time with perf generator --- garlic/ds/perf/stat.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/garlic/ds/perf/stat.py b/garlic/ds/perf/stat.py index ac180fe..a6d69bc 100644 --- a/garlic/ds/perf/stat.py +++ b/garlic/ds/perf/stat.py @@ -26,6 +26,25 @@ def process_run(tree, runPath): tree['perf'] = perf_data + with open("stdout.log", "r") as f: + lines = [line.strip() for line in f.readlines()] + + time_line = None + for line in lines: + + if re.match(r'^ ?time .*', line): + time_line = line + break + + if time_line is None: + eprint("missing time line, aborting") + eprint("stdout file = {}/stdout.log".format(runPath)) + exit(1) + + time_str = time_line.split()[1] + + tree['time'] = float(time_str) + print(json.dumps(tree)) def process_result_tree(resultTree): From 52360c9459eb6fbea95f7b38763476f76bef34cf Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 9 Mar 2021 18:20:40 +0100 Subject: [PATCH 526/987] rplot: add viridis R package --- garlic/pp/rplot.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/garlic/pp/rplot.nix b/garlic/pp/rplot.nix index 17d7d54..f061a28 100644 --- a/garlic/pp/rplot.nix +++ b/garlic/pp/rplot.nix @@ -15,7 +15,7 @@ with stdenv.lib; let customR = rWrapper.override { - packages = with rPackages; [ tidyverse ] ++ extraRPackages; + packages = with rPackages; [ tidyverse viridis ] ++ extraRPackages; }; in stdenv.mkDerivation { From 3bcbc62a989e63cfaf07d59c796020d00f419c17 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 9 Mar 2021 18:21:22 +0100 Subject: [PATCH 527/987] fig: add fig.heat.cache to fig.article --- garlic/fig/index.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/garlic/fig/index.nix b/garlic/fig/index.nix index b790cef..ada3a2b 100644 --- a/garlic/fig/index.nix +++ b/garlic/fig/index.nix @@ -70,5 +70,6 @@ in "osu/latencyMt" = osu.latencyMt; "osu/bw" = osu.bw; "osu/bwShm" = osu.bwShm; + "heat/cache" = heat.cache; }; } From 7b4da07dbfd37e8526553a14df63ccd27cce0c4d Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 9 Mar 2021 18:21:59 +0100 Subject: [PATCH 528/987] heat: add more figures from perf counters --- garlic/fig/heat/cache.R | 68 ++++++++++++++++++++++++++++------------- 1 file changed, 47 insertions(+), 21 deletions(-) diff --git a/garlic/fig/heat/cache.R b/garlic/fig/heat/cache.R index b9025ae..a9fa5eb 100644 --- a/garlic/fig/heat/cache.R +++ b/garlic/fig/heat/cache.R @@ -2,6 +2,7 @@ library(ggplot2) library(dplyr) library(scales) library(jsonlite) +library(viridis) args=commandArgs(trailingOnly=TRUE) @@ -14,7 +15,7 @@ dataset = jsonlite::stream_in(file(input_file)) %>% jsonlite::flatten() # We only need the nblocks and time -df = select(dataset, config.cbs, config.rbs, perf.cache_misses) %>% +df = select(dataset, config.cbs, config.rbs, perf.cache_misses, perf.instructions, perf.cycles, time) %>% rename(cbs=config.cbs, rbs=config.rbs) df$cbs = as.factor(df$cbs) @@ -22,30 +23,55 @@ df$rbs = as.factor(df$rbs) # Normalize the time by the median df=group_by(df, cbs, rbs) %>% + mutate(median.time = median(time)) %>% + mutate(log.median.time = log(median.time)) %>% mutate(median.misses = median(perf.cache_misses)) %>% mutate(log.median.misses = log(median.misses)) %>% - ungroup() + mutate(median.instr= median(perf.instructions)) %>% + mutate(log.median.instr= log(median.instr)) %>% + mutate(median.cycles = median(perf.cycles)) %>% + mutate(median.cpi = median.cycles / median.instr) %>% + mutate(median.ipc = median.instr / median.cycles) %>% + mutate(median.ips = median.instr / median.time) %>% + mutate(median.cps = median.cycles / median.time) %>% + ungroup()# %>% -ppi=300 -h=5 -w=5 +heatmap_plot = function(df, colname, title) { + p = ggplot(df, aes(x=cbs, y=rbs, fill=!!ensym(colname))) + + geom_raster() + + #scale_fill_gradient(high="black", low="white") + + scale_fill_viridis(option="plasma") + + coord_fixed() + + theme_bw() + + theme(axis.text.x=element_text(angle = -45, hjust = 0)) + + theme(plot.subtitle=element_text(size=8)) + + #guides(fill = guide_colorbar(barwidth=15, title.position="top")) + + guides(fill = guide_colorbar(barwidth=12, title.vjust=0.8)) + + labs(x="cbs", y="rbs", + title=sprintf("Heat granularity: %s", title), + subtitle=input_file) + + theme(legend.position="bottom") + k=1 + ggsave(sprintf("%s.png", colname), plot=p, width=4.8*k, height=5*k, dpi=300) + ggsave(sprintf("%s.pdf", colname), plot=p, width=4.8*k, height=5*k, dpi=300) +} -png("heatmap.png", width=1.5*w*ppi, height=h*ppi, res=ppi) -# -## Create the plot with the normalized time vs nblocks -p = ggplot(df, aes(x=cbs, y=rbs, fill=log.median.misses)) + - geom_raster() + - scale_fill_gradient(high="black", low="white") + - coord_fixed() + - theme_bw() + - theme(plot.subtitle=element_text(size=8)) + - labs(x="cbs", y="rbs", - title=sprintf("Heat granularity: cache misses"), - subtitle=input_file) +heatmap_plot(df, "median.misses", "cache misses") +heatmap_plot(df, "log.median.misses", "cache misses") +heatmap_plot(df, "median.instr", "instructions") +heatmap_plot(df, "log.median.instr", "instructions") +heatmap_plot(df, "median.cycles", "cycles") +heatmap_plot(df, "median.ipc", "IPC") +heatmap_plot(df, "median.cpi", "cycles/instruction") +heatmap_plot(df, "median.ips", "instructions/second") +heatmap_plot(df, "median.cps", "cycles/second") -# Render the plot -print(p) +cutlevel = 0.5 +# To plot the median.time we crop the larger values: +df_filtered = filter(df, between(median.time, + median(time) - (cutlevel * sd(time)), + median(time) + (cutlevel * sd(time)))) -# Save the png image -dev.off() +heatmap_plot(df_filtered, "median.time", "execution time (seconds)") +heatmap_plot(df_filtered, "log.median.time", "execution time") From b192fc44f5ad63e3b5f37a83ba88de0475110b1b Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 9 Mar 2021 18:45:33 +0100 Subject: [PATCH 529/987] heat: refactor cache into granul experiment --- garlic/exp/heat/cache.nix | 87 -------------------------------------- garlic/exp/heat/granul.nix | 11 ++++- garlic/exp/index.nix | 4 +- 3 files changed, 12 insertions(+), 90 deletions(-) delete mode 100644 garlic/exp/heat/cache.nix diff --git a/garlic/exp/heat/cache.nix b/garlic/exp/heat/cache.nix deleted file mode 100644 index 979533b..0000000 --- a/garlic/exp/heat/cache.nix +++ /dev/null @@ -1,87 +0,0 @@ -{ - stdenv -, stdexp -, bsc -, targetMachine -, stages -, garlicTools -}: - -with stdenv.lib; -with garlicTools; - -let - # Initial variable configuration - varConf = with bsc; { - cbs = range2 8 4096; - rbs = range2 32 4096; - }; - - machineConfig = targetMachine.config; - - # Generate the complete configuration for each unit - genConf = with bsc; c: targetMachine.config // rec { - expName = "heat"; - unitName = expName + - ".cbs-${toString cbs}" + - ".rbs-${toString rbs}"; - - inherit (machineConfig) hw; - - # heat options - timesteps = 10; - cols = 1024 * 16; # Columns - rows = 1024 * 16; # Rows - cbs = c.cbs; - rbs = c.rbs; - gitBranch = "garlic/tampi+isend+oss+task"; - - # Repeat the execution of each unit 30 times - loops = 10; - - # Resources - qos = "debug"; - ntasksPerNode = 1; - nodes = 1; - time = "02:00:00"; - # Assign one socket to each task (only one process) - cpusPerTask = hw.cpusPerSocket; - jobName = unitName; - }; - - # Compute the array of configurations - configs = stdexp.buildConfigs { - inherit varConf genConf; - }; - - perf = {nextStage, conf, ...}: stages.perf { - inherit nextStage; - perfOptions = "stat -o .garlic/perf.csv -x , " + - "-e cycles,instructions,cache-references,cache-misses"; - }; - - exec = {nextStage, conf, ...}: stages.exec { - inherit nextStage; - argv = [ - "--rows" conf.rows - "--cols" conf.cols - "--rbs" conf.rbs - "--cbs" conf.cbs - "--timesteps" conf.timesteps - ]; - - # The next stage is the program - env = '' - ln -sf ${nextStage}/etc/heat.conf heat.conf || true - ''; - }; - - program = {nextStage, conf, ...}: bsc.garlic.apps.heat.override { - inherit (conf) gitBranch; - }; - - pipeline = stdexp.stdPipeline ++ [ perf exec program ]; - -in - - stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/heat/granul.nix b/garlic/exp/heat/granul.nix index 4edd013..0cd8f16 100644 --- a/garlic/exp/heat/granul.nix +++ b/garlic/exp/heat/granul.nix @@ -5,6 +5,7 @@ , targetMachine , stages , garlicTools +, enablePerf ? false }: with stdenv.lib; @@ -54,6 +55,12 @@ let inherit varConf genConf; }; + perf = {nextStage, conf, ...}: stages.perf { + inherit nextStage; + perfOptions = "stat -o .garlic/perf.csv -x , " + + "-e cycles,instructions,cache-references,cache-misses"; + }; + exec = {nextStage, conf, ...}: stages.exec { inherit nextStage; argv = [ @@ -74,7 +81,9 @@ let inherit (conf) gitBranch; }; - pipeline = stdexp.stdPipeline ++ [ exec program ]; + pipeline = stdexp.stdPipeline ++ + (optional enablePerf perf) ++ + [ exec program ]; in diff --git a/garlic/exp/index.nix b/garlic/exp/index.nix index f616e07..f51895a 100644 --- a/garlic/exp/index.nix +++ b/garlic/exp/index.nix @@ -63,9 +63,9 @@ }; }; - heat = { + heat = rec { granul = callPackage ./heat/granul.nix { }; - cache = callPackage ./heat/cache.nix { }; + cache = granul.override { enablePerf = true; }; }; bigsort = rec { From 4780a81d70fdccc88828c83cce876d5bf5c997e8 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 10 Mar 2021 18:42:59 +0100 Subject: [PATCH 530/987] nanos6: add patch to use CLOCK_MONOTONIC in CTF --- bsc/nanos6/clock-monotonic.patch | 21 +++++++++++++++++++++ bsc/nanos6/default.nix | 2 ++ 2 files changed, 23 insertions(+) create mode 100644 bsc/nanos6/clock-monotonic.patch diff --git a/bsc/nanos6/clock-monotonic.patch b/bsc/nanos6/clock-monotonic.patch new file mode 100644 index 0000000..b05b17b --- /dev/null +++ b/bsc/nanos6/clock-monotonic.patch @@ -0,0 +1,21 @@ +diff --git a/src/instrument/ctf/ctfapi/CTFClock.hpp b/src/instrument/ctf/ctfapi/CTFClock.hpp +index 7df821c9..27cf269b 100644 +--- a/src/instrument/ctf/ctfapi/CTFClock.hpp ++++ b/src/instrument/ctf/ctfapi/CTFClock.hpp +@@ -9,13 +9,9 @@ + + #include + +-// We prefer CLOCK_MONOTONIC_RAW to prevent dynamic NTF time adjustments. +-// However, if the system does not support it, we fall back to CLOCK_MONOTONIC +- +-#ifdef CLOCK_MONOTONIC_RAW +-#define CTF_CLOCK CLOCK_MONOTONIC_RAW +-#else ++// Always use the CLOCK_MONOTONIC clock as it is drift-corrected by NTP, ++// and is the most reliable to compensate changes the oscillator ++// frequency. It is not affected by time jumps. + #define CTF_CLOCK CLOCK_MONOTONIC +-#endif + + #endif // CTF_CLOCK_HPP diff --git a/bsc/nanos6/default.nix b/bsc/nanos6/default.nix index 2c06b12..4c5e41c 100644 --- a/bsc/nanos6/default.nix +++ b/bsc/nanos6/default.nix @@ -31,6 +31,8 @@ stdenv.mkDerivation rec { sha256 = "17z6gr122cw0l4lsp0qdrdbcl1zcls4i0haxqpj3g60fvjx3fznp"; }; + patches = [ ./clock-monotonic.patch ]; + prePatch = '' patchShebangs scripts/generate_config.sh ''; From f68564efe63e605b91c40fee8a8d2938d2b7c990 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 11 Mar 2021 17:56:12 +0100 Subject: [PATCH 531/987] nanos6: add debug version for for libstdc++ --- bsc/nanos6/default.nix | 4 +++- overlay.nix | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/bsc/nanos6/default.nix b/bsc/nanos6/default.nix index 4c5e41c..66ee301 100644 --- a/bsc/nanos6/default.nix +++ b/bsc/nanos6/default.nix @@ -14,6 +14,7 @@ , enableJemalloc ? true , jemalloc ? null , cachelineBytes ? 64 +, enableGlibcxxDebug ? false }: assert enableJemalloc -> (jemalloc != null); @@ -44,7 +45,8 @@ stdenv.mkDerivation rec { ''; configureFlags = [] ++ - optional enableJemalloc "--with-jemalloc=${jemalloc}"; + optional enableJemalloc "--with-jemalloc=${jemalloc}" ++ + optional enableGlibcxxDebug "CXXFLAGS=-D_GLIBCXX_DEBUG"; # The "bindnow" flags are incompatible with ifunc resolution mechanism. We # disable all by default, which includes bindnow. diff --git a/overlay.nix b/overlay.nix index a2a440b..8e4b01a 100644 --- a/overlay.nix +++ b/overlay.nix @@ -82,7 +82,9 @@ let dontStrip = true; enableDebugging = true; }); - nanos6Jemalloc = bsc.nanos6.override { enableJemalloc = true; }; + nanos6GlibcxxDebug = bsc.nanos6Debug.override { + enableGlibcxxDebug = true; + }; jemalloc = self.jemalloc.overrideAttrs (old: { From 3445a72686867658f39559dba8246b222e6d9d07 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 12 Mar 2021 11:13:35 +0100 Subject: [PATCH 532/987] garlic tool: copy recursively from .garlic/ It allows an experiment to store a CTF trace in the resultTree (which is not recommended for large traces). --- garlic/sh/garlic | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/garlic/sh/garlic b/garlic/sh/garlic index a7382bb..e123d3a 100755 --- a/garlic/sh/garlic +++ b/garlic/sh/garlic @@ -156,7 +156,7 @@ do_fetch() { --include='*/*/std*.log' \ --include='*/*/*/std*.log' \ --include='*/*/*/.garlic' \ - --include='*/*/*/.garlic/*' \ + --include='*/*/*/.garlic/**' \ --exclude='*/*/*/*' \ "$exp" "$outputDir" From 968accd552598477b234f1deb9825f1ad71dbbc2 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 12 Mar 2021 12:09:02 +0100 Subject: [PATCH 533/987] cn6: install dur utility for extracting statistics --- bsc/cn6/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bsc/cn6/default.nix b/bsc/cn6/default.nix index 3456a00..d9a62fd 100644 --- a/bsc/cn6/default.nix +++ b/bsc/cn6/default.nix @@ -27,7 +27,7 @@ stdenv.mkDerivation rec { installPhase = '' mkdir -p $out/bin - cp cn6 $out/bin + cp cn6 dur $out/bin mkdir -p $out/lib/nanos6 cp prv.so $out/lib/nanos6/ From 56c625bfe413d904da0e794e22798a64c2d759c6 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 12 Mar 2021 12:10:18 +0100 Subject: [PATCH 534/987] ds: add ctf mode analysis --- garlic/ds/ctf/mode.nix | 23 ++++++++++++ garlic/ds/ctf/mode.py | 83 ++++++++++++++++++++++++++++++++++++++++++ garlic/ds/index.nix | 2 + 3 files changed, 108 insertions(+) create mode 100644 garlic/ds/ctf/mode.nix create mode 100644 garlic/ds/ctf/mode.py diff --git a/garlic/ds/ctf/mode.nix b/garlic/ds/ctf/mode.nix new file mode 100644 index 0000000..d3348eb --- /dev/null +++ b/garlic/ds/ctf/mode.nix @@ -0,0 +1,23 @@ +{ + stdenv +, python3 +, gzip +}: + +resultTree: + +stdenv.mkDerivation { + name = "ctf-mode.json.gz"; + preferLocalBuild = true; + src = ./mode.py; + phases = [ "unpackPhase" "installPhase" ]; + + unpackPhase = '' + cp $src mode.py + ''; + + buildInputs = [ python3 gzip ]; + installPhase = '' + python mode.py ${resultTree} | gzip > $out + ''; +} diff --git a/garlic/ds/ctf/mode.py b/garlic/ds/ctf/mode.py new file mode 100644 index 0000000..669508f --- /dev/null +++ b/garlic/ds/ctf/mode.py @@ -0,0 +1,83 @@ +import json, re, sys, os, glob +from os import path + +def eprint(*args, **kwargs): + print(*args, file=sys.stderr, flush=True, **kwargs) + +def process_run(tree, runPath): + + ctf_mode = {} + + with open(".garlic/time_mode_runtime.csv", "r") as f: + ctf_mode['runtime'] = float(f.readline()) + + with open(".garlic/time_mode_dead.csv", "r") as f: + ctf_mode['dead'] = float(f.readline()) + + with open(".garlic/time_mode_task.csv", "r") as f: + ctf_mode['task'] = float(f.readline()) + + tree['ctf_mode'] = ctf_mode + + with open("stdout.log", "r") as f: + lines = [line.strip() for line in f.readlines()] + + time_line = None + for line in lines: + + if re.match(r'^ ?time .*', line): + time_line = line + break + + if time_line is None: + eprint("missing time line, aborting") + eprint("stdout file = {}/stdout.log".format(runPath)) + exit(1) + + time_str = time_line.split()[1] + + tree['time'] = float(time_str) + + print(json.dumps(tree)) + +def process_result_tree(resultTree): + + eprint("processing resultTree: " + resultTree) + + os.chdir(resultTree) + + experiments = glob.glob(resultTree + "/*-experiment") + + for exp in glob.glob("*-experiment"): + eprint("found experiment: " + exp) + expPath = path.join(resultTree, exp) + os.chdir(expPath) + + for unit in glob.glob("*-unit"): + eprint("found unit: " + unit) + unitPath = path.join(resultTree, exp, unit) + os.chdir(unitPath) + + with open('garlic_config.json') as json_file: + garlic_conf = json.load(json_file) + + tree = {"exp":exp, "unit":unit, "config":garlic_conf} + + for i in range(garlic_conf['loops']): + run = str(i + 1) + runPath = path.join(resultTree, exp, unit, run) + if path.isdir(runPath) == False: + eprint("missing run {}, aborting".format(run)) + exit(1) + + tree["run"] = run + os.chdir(runPath) + + process_run(tree, runPath) + + +if len(sys.argv) != 2: + eprint("usage: python {} ".format(argv[0])) + exit(1) + +process_result_tree(sys.argv[1]) diff --git a/garlic/ds/index.nix b/garlic/ds/index.nix index 1c2c28e..b0dc7ec 100644 --- a/garlic/ds/index.nix +++ b/garlic/ds/index.nix @@ -17,4 +17,6 @@ }; perf.stat = callPackage ./perf/stat.nix {}; + + ctf.mode = callPackage ./ctf/mode.nix {}; } From 972be56eed046afc07413b9f19235f2e1f3c1d44 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 12 Mar 2021 12:11:24 +0100 Subject: [PATCH 535/987] heat: patch to print the start and end time It will be used to cut the CTF traces to take only the computation part in cosideration. --- garlic/apps/heat/default.nix | 2 ++ garlic/apps/heat/print-times.patch | 13 +++++++++++++ 2 files changed, 15 insertions(+) create mode 100644 garlic/apps/heat/print-times.patch diff --git a/garlic/apps/heat/default.nix b/garlic/apps/heat/default.nix index c950600..6e92218 100644 --- a/garlic/apps/heat/default.nix +++ b/garlic/apps/heat/default.nix @@ -14,6 +14,8 @@ stdenv.mkDerivation rec { ref = gitBranch; }; + patches = [ ./print-times.patch ]; + buildInputs = [ mpi mcxx diff --git a/garlic/apps/heat/print-times.patch b/garlic/apps/heat/print-times.patch new file mode 100644 index 0000000..bf5d28a --- /dev/null +++ b/garlic/apps/heat/print-times.patch @@ -0,0 +1,13 @@ +diff --git a/src/mpi/main.c b/src/mpi/main.c +index 44f4a99..08a1f5c 100644 +--- a/src/mpi/main.c ++++ b/src/mpi/main.c +@@ -83,6 +83,8 @@ int main(int argc, char **argv) + conf.rows, conf.cols, conf.rows/nranks, totalElements, totalElements/nranks, + conf.rbs, conf.cbs, nranks, threads, conf.timesteps, end-start, throughput); + printf("time %e\n", end - start); ++ printf("start_time %.9f\n", start); ++ printf("end_time %.9f\n", end); + } + + if (conf.generateImage) { From 854707103c772b2f16996d51c7cfac025580c160 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 12 Mar 2021 12:13:10 +0100 Subject: [PATCH 536/987] heat: add ctf stage to analyze mode times --- garlic/exp/heat/granul.nix | 62 ++++++++++++++++++++++++++++++++++++-- garlic/exp/index.nix | 1 + 2 files changed, 60 insertions(+), 3 deletions(-) diff --git a/garlic/exp/heat/granul.nix b/garlic/exp/heat/granul.nix index 0cd8f16..6fab7b6 100644 --- a/garlic/exp/heat/granul.nix +++ b/garlic/exp/heat/granul.nix @@ -6,6 +6,7 @@ , stages , garlicTools , enablePerf ? false +, enableCTF ? false }: with stdenv.lib; @@ -14,8 +15,12 @@ with garlicTools; let # Initial variable configuration varConf = with bsc; { - cbs = range2 8 4096; - rbs = range2 32 4096; + #cbs = range2 32 4096; + #rbs = range2 32 4096; + cbs = [ 64 256 1024 4096 ]; + rbs = [ 32 128 512 1024 ]; + #cbs = [ 4096 ]; + #rbs = [ 32 ]; }; machineConfig = targetMachine.config; @@ -38,7 +43,7 @@ let gitBranch = "garlic/tampi+isend+oss+task"; # Repeat the execution of each unit 30 times - loops = 10; + loops = 1; # Resources qos = "debug"; @@ -61,6 +66,56 @@ let "-e cycles,instructions,cache-references,cache-misses"; }; + ctf = {nextStage, conf, ...}: with conf; stages.exec { + inherit nextStage; + env = '' + export NANOS6_CONFIG_OVERRIDE="version.instrument=ctf,\ + instrument.ctf.converter.enabled=false" + ''; + # Only one process converts the trace, otherwise use: + # if [ $SLURM_PROCID == 0 ]; then + # ... + # fi + post = '' + if [ $SLURM_PROCID == 0 ]; then + sleep 2 + for tracedir in trace_*; do + offset=$(grep 'offset =' $tracedir/ctf/ust/uid/1000/64-bit/metadata | \ + grep -o '[0-9]*') + echo "offset = $offset" + + start_time=$(awk '/^start_time / {print $2}' stdout.log) + end_time=$(awk '/^end_time / {print $2}' stdout.log) + + begin=$(awk "BEGIN{print $start_time*1e9 - $offset}") + end=$(awk "BEGIN{print $end_time*1e9 - $offset}") + + echo "only events between $begin and $end" + + ${bsc.cn6}/bin/cn6 -s $tracedir + + awk -F: "NR==1 {print} \$6 >= $begin && \$6 <= $end" $tracedir/prv/trace.prv |\ + ${bsc.cn6}/bin/dur 6400025 0 |\ + awk '{s+=$1} END {print s}' >> .garlic/time_mode_dead.csv & + + awk -F: "NR==1 {print} \$6 >= $begin && \$6 <= $end" $tracedir/prv/trace.prv |\ + ${bsc.cn6}/bin/dur 6400025 1 |\ + awk '{s+=$1} END {print s}' >> .garlic/time_mode_runtime.csv & + + awk -F: "NR==1 {print} \$6 >= $begin && \$6 <= $end" $tracedir/prv/trace.prv |\ + ${bsc.cn6}/bin/dur 6400025 3 |\ + awk '{s+=$1} END {print s}' >> .garlic/time_mode_task.csv & + + wait + + # Remove the traces at the end, as they are huge + rm -rf $tracedir + #cp -a $tracedir .garlic/ + done + fi + ''; + }; + exec = {nextStage, conf, ...}: stages.exec { inherit nextStage; argv = [ @@ -83,6 +138,7 @@ let pipeline = stdexp.stdPipeline ++ (optional enablePerf perf) ++ + (optional enableCTF ctf) ++ [ exec program ]; in diff --git a/garlic/exp/index.nix b/garlic/exp/index.nix index f51895a..11a189b 100644 --- a/garlic/exp/index.nix +++ b/garlic/exp/index.nix @@ -66,6 +66,7 @@ heat = rec { granul = callPackage ./heat/granul.nix { }; cache = granul.override { enablePerf = true; }; + ctf = cache.override { enableCTF = true; }; }; bigsort = rec { From d70adae9ec9b53fc41a0032864ad0bea3848ecd7 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 12 Mar 2021 12:14:51 +0100 Subject: [PATCH 537/987] heat: add figure for the mode experiment --- garlic/fig/heat/mode.R | 81 ++++++++++++++++++++++++++++++++++++++++++ garlic/fig/index.nix | 1 + 2 files changed, 82 insertions(+) create mode 100644 garlic/fig/heat/mode.R diff --git a/garlic/fig/heat/mode.R b/garlic/fig/heat/mode.R new file mode 100644 index 0000000..66bde82 --- /dev/null +++ b/garlic/fig/heat/mode.R @@ -0,0 +1,81 @@ +library(ggplot2) +library(dplyr) +library(scales) +library(jsonlite) +library(viridis) + +args=commandArgs(trailingOnly=TRUE) + +# Read the timetable from args[1] +input_file = "input.json" +if (length(args)>0) { input_file = args[1] } + +# Load the dataset in NDJSON format +dataset = jsonlite::stream_in(file(input_file)) %>% + jsonlite::flatten() + +# We only need the nblocks and time +df = select(dataset, config.cbs, config.rbs, + ctf_mode.runtime, + ctf_mode.task, + ctf_mode.dead, + time) %>% + rename( + cbs=config.cbs, + rbs=config.rbs, + runtime=ctf_mode.runtime, + task=ctf_mode.task, + dead=ctf_mode.dead, + ) + +df$cbs = as.factor(df$cbs) +df$rbs = as.factor(df$rbs) + +# Normalize the time by the median +df = df %>% + mutate(runtime = runtime * 1e-9) %>% + mutate(dead = dead * 1e-9) %>% + mutate(task = task * 1e-9) %>% + group_by(cbs, rbs) %>% + mutate(median.time = median(time)) %>% + mutate(log.median.time = log(median.time)) %>% + mutate(median.dead = median(dead)) %>% + mutate(median.runtime = median(runtime)) %>% + mutate(median.task = median(task)) %>% + ungroup()# %>% + +print(df) + +heatmap_plot = function(df, colname, title) { + p = ggplot(df, aes(x=cbs, y=rbs, fill=!!ensym(colname))) + + geom_raster() + + #scale_fill_gradient(high="black", low="white") + + scale_fill_viridis(option="plasma") + + coord_fixed() + + theme_bw() + + theme(axis.text.x=element_text(angle = -45, hjust = 0)) + + theme(plot.subtitle=element_text(size=8)) + + #guides(fill = guide_colorbar(barwidth=15, title.position="top")) + + guides(fill = guide_colorbar(barwidth=12, title.vjust=0.8)) + + labs(x="cbs", y="rbs", + title=sprintf("Heat granularity: %s", title), + subtitle=input_file) + + theme(legend.position="bottom") + + k=1 + ggsave(sprintf("%s.png", colname), plot=p, width=4.8*k, height=5*k, dpi=300) + ggsave(sprintf("%s.pdf", colname), plot=p, width=4.8*k, height=5*k, dpi=300) +} + +heatmap_plot(df, "median.runtime", "runtime") +heatmap_plot(df, "median.dead", "not used") +heatmap_plot(df, "median.task", "task") + +cutlevel = 0.5 +# To plot the median.time we crop the larger values: +df_filtered = filter(df, between(median.time, + median(time) - (cutlevel * sd(time)), + median(time) + (cutlevel * sd(time)))) + +heatmap_plot(df, "median.time", "execution time (seconds)") +heatmap_plot(df, "log.median.time", "execution time") diff --git a/garlic/fig/index.nix b/garlic/fig/index.nix index ada3a2b..65034f7 100644 --- a/garlic/fig/index.nix +++ b/garlic/fig/index.nix @@ -47,6 +47,7 @@ in heat = with exp.heat; { granul = stdPlot ./heat/granul.R [ granul ]; cache = customPlot ./heat/cache.R (ds.perf.stat cache.result); + ctf = customPlot ./heat/mode.R (ds.ctf.mode ctf.result); }; creams = with exp.creams; { From a2864889792ddd174e505d138a0c635630632835 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 3 Feb 2021 12:46:54 +0100 Subject: [PATCH 538/987] rplot: add egg package for ggarange function --- garlic/fig/dev/shell.nix | 2 +- garlic/pp/rplot.nix | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/garlic/fig/dev/shell.nix b/garlic/fig/dev/shell.nix index 29bb35c..840c83e 100644 --- a/garlic/fig/dev/shell.nix +++ b/garlic/fig/dev/shell.nix @@ -4,7 +4,7 @@ with pkgs; let rWrapper = pkgs.rWrapper.override { - packages = with pkgs.rPackages; [ tidyverse rjson jsonlite ]; + packages = with pkgs.rPackages; [ tidyverse rjson jsonlite egg ]; }; in stdenv.mkDerivation { diff --git a/garlic/pp/rplot.nix b/garlic/pp/rplot.nix index f061a28..19b092d 100644 --- a/garlic/pp/rplot.nix +++ b/garlic/pp/rplot.nix @@ -15,7 +15,7 @@ with stdenv.lib; let customR = rWrapper.override { - packages = with rPackages; [ tidyverse viridis ] ++ extraRPackages; + packages = with rPackages; [ tidyverse viridis egg ] ++ extraRPackages; }; in stdenv.mkDerivation { From 425479c9fc2123d7334ff68c0f8aa8c6cf55cbd9 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 3 Feb 2021 12:49:17 +0100 Subject: [PATCH 539/987] nbody: add scaling experiment --- garlic/exp/index.nix | 4 ++ garlic/exp/nbody/scaling.nix | 113 +++++++++++++++++++++++++++++++++++ 2 files changed, 117 insertions(+) create mode 100644 garlic/exp/nbody/scaling.nix diff --git a/garlic/exp/index.nix b/garlic/exp/index.nix index 11a189b..ae3120c 100644 --- a/garlic/exp/index.nix +++ b/garlic/exp/index.nix @@ -32,6 +32,10 @@ enableJemalloc = true; }; }; + + scaling = callPackage ./nbody/scaling.nix { + particles = 12 * 4096; + }; }; saiph = { diff --git a/garlic/exp/nbody/scaling.nix b/garlic/exp/nbody/scaling.nix new file mode 100644 index 0000000..dd29e8a --- /dev/null +++ b/garlic/exp/nbody/scaling.nix @@ -0,0 +1,113 @@ +{ + stdenv +, stdexp +, bsc +, targetMachine +, stages +, garlicTools + +# Options for the experiment +, enableJemalloc ? false +, enableCTF ? false +# Number of cases tested +, steps ? 6 +# nbody iterations +, timesteps ? 10 +# nbody total number of particles +, particles ? null +, loops ? 10 +, nblocks0 ? null +}: + +with stdenv.lib; +with garlicTools; + +let + + defaultOpt = var: def: if (var != null) then var else def; + + machineConfig = targetMachine.config; + inherit (machineConfig) hw; + + # Initial variable configuration + varConf = with bsc; { + # Create a list with values 2^n with n from 0 to (steps - 1) inclusive + i = expRange 2 0 (steps - 1); + nodes = [ 1 2 4 8 16 ]; + gitBranch = [ + "garlic/tampi+send+oss+task" + "garlic/tampi+isend+oss+task" + ]; + }; + + # Generate the complete configuration for each unit + genConf = var: fix (self: var // targetMachine.config // { + expName = "nbody-nblocks"; + unitName = "${self.expName}${toString self.nblocks}"; + + inherit (machineConfig) hw; + + # nbody options + particles = defaultOpt particles (4096 * self.hw.cpusPerSocket); + nblocks0 = defaultOpt nblocks0 (self.hw.cpusPerSocket / 2); + # The number of blocks is then computed from the multiplier "i" and + # the initial number of blocks "nblocks0" + nblocks = self.i * self.nblocks0; + + totalTasks = self.ntasksPerNode * self.nodes; + particlesPerTask = self.particles / self.totalTasks; + blocksize = self.particlesPerTask / self.nblocks; + cc = bsc.icc; + mpi = bsc.impi; + cflags = "-g"; + inherit timesteps enableJemalloc enableCTF loops; + + # Resources + qos = "debug"; + cpusPerTask = self.hw.cpusPerSocket; + ntasksPerNode = self.hw.socketsPerNode; + jobName = self.unitName; + }); + + # Compute the array of configurations + configs = stdexp.buildConfigs { + inherit varConf genConf; + }; + + perf = {nextStage, conf, ...}: with conf; stages.perf { + inherit nextStage; + perfOptions = "record --call-graph dwarf -o \\$\\$.perf"; + }; + + ctf = {nextStage, conf, ...}: with conf; stages.exec { + inherit nextStage; + env = optionalString (conf.enableCTF) '' + export NANOS6_CONFIG_OVERRIDE="version.instrument=ctf,\ + instrument.ctf.conversor.enabled=false" + ''; + }; + + exec = {nextStage, conf, ...}: with conf; stages.exec { + inherit nextStage; + argv = [ "-t" timesteps "-p" particles ]; + }; + + program = {nextStage, conf, ...}: with conf; + let + /* These changes are propagated to all dependencies. For example, + when changing nanos6+jemalloc, we will get tampi built with + nanos6+jemalloc as well. */ + customPkgs = bsc.extend (self: super: { + mpi = conf.mpi; + nanos6 = super.nanos6.override { inherit enableJemalloc; }; + }); + in + customPkgs.apps.nbody.override ({ + inherit (conf) cc blocksize mpi gitBranch cflags; + }); + + pipeline = stdexp.stdPipeline ++ [ ctf exec program ]; + +in + + stdexp.genExperiment { inherit configs pipeline; } From 5804b167dbe66b964c589766b0b3b51704ef76a4 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 3 Feb 2021 13:03:28 +0100 Subject: [PATCH 540/987] nbody: add scaling figure --- garlic/fig/index.nix | 1 + garlic/fig/nbody/baseline.R | 131 ++++++++++++++++++++++++++++++------ garlic/fig/nbody/scaling.R | 110 ++++++++++++++++++++++++++++++ 3 files changed, 221 insertions(+), 21 deletions(-) create mode 100644 garlic/fig/nbody/scaling.R diff --git a/garlic/fig/index.nix b/garlic/fig/index.nix index 65034f7..3219ae8 100644 --- a/garlic/fig/index.nix +++ b/garlic/fig/index.nix @@ -34,6 +34,7 @@ in small = stdPlot ./nbody/baseline.R [ small ]; jemalloc = stdPlot ./nbody/jemalloc.R [ baseline jemalloc ]; ctf = stdPlot ./nbody/baseline.R [ ctf ]; + scaling = stdPlot ./nbody/baseline.R [ scaling ]; }; hpcg = with exp.hpcg; { diff --git a/garlic/fig/nbody/baseline.R b/garlic/fig/nbody/baseline.R index cf91a87..2744175 100644 --- a/garlic/fig/nbody/baseline.R +++ b/garlic/fig/nbody/baseline.R @@ -2,6 +2,7 @@ library(ggplot2) library(dplyr) library(scales) library(jsonlite) +library(egg) args=commandArgs(trailingOnly=TRUE) @@ -16,18 +17,42 @@ dataset = jsonlite::stream_in(file(input_file)) %>% particles = unique(dataset$config.particles) # We only need the nblocks and time -df = select(dataset, config.nblocks, config.hw.cpusPerSocket, time) %>% +df = select(dataset, + config.nblocks, + config.hw.cpusPerSocket, + config.nodes, + config.blocksize, + config.particles, + config.gitBranch, + time) %>% rename(nblocks=config.nblocks, + nodes=config.nodes, + blocksize=config.blocksize, + particles=config.particles, + gitBranch=config.gitBranch, cpusPerSocket=config.hw.cpusPerSocket) df = df %>% mutate(blocksPerCpu = nblocks / cpusPerSocket) df$nblocks = as.factor(df$nblocks) +df$nodesFactor = as.factor(df$nodes) df$blocksPerCpuFactor = as.factor(df$blocksPerCpu) +df$blocksizeFactor = as.factor(df$blocksize) +df$particlesFactor = as.factor(df$particles) +df$gitBranch = as.factor(df$gitBranch) # Normalize the time by the median -D=group_by(df, nblocks) %>% +D=group_by(df, nblocks, nodesFactor, gitBranch) %>% + mutate(tmedian = median(time)) %>% mutate(tnorm = time / median(time) - 1) %>% - mutate(bad = max(ifelse(abs(tnorm) >= 0.01, 1, 0))) + mutate(bad = max(ifelse(abs(tnorm) >= 0.01, 1, 0))) %>% + ungroup() %>% + group_by(nodesFactor, gitBranch) %>% + mutate(tmedian_min = min(tmedian)) %>% + ungroup() %>% + group_by(gitBranch) %>% + mutate(tmin_max = max(tmedian_min)) %>% + mutate(tideal = tmin_max / nodes) %>% + ungroup() D$bad = as.factor(D$bad) @@ -67,44 +92,108 @@ p = ggplot(data=D, aes(x=blocksPerCpuFactor, y=tnorm, color=bad)) + linetype="dashed", color="gray") + # Draw boxplots - geom_boxplot() + + geom_boxplot(aes(fill=nodesFactor)) + scale_color_manual(values=c("black", "brown")) + + facet_grid(gitBranch ~ .) + #scale_y_continuous(breaks = scales::pretty_breaks(n = 10)) + - theme_bw() + - theme(plot.subtitle=element_text(size=8)) + - theme(legend.position = "none") + #theme(legend.position = "none") #theme(legend.position = c(0.85, 0.85)) + theme_bw()+ + theme(plot.subtitle=element_text(size=8)) # Render the plot print(p) - -## Save the png image dev.off() -# -png("scatter.png", width=w*ppi, height=h*ppi, res=ppi) -# -## Create the plot with the normalized time vs nblocks -p = ggplot(D, aes(x=blocksPerCpuFactor, y=time)) + + + +p1 = ggplot(D, aes(x=blocksizeFactor, y=tmedian)) + + + labs(x="Blocksize", y="Time (s)", + title=sprintf("Nbody granularity. Particles=%d", particles), + subtitle=input_file) + + theme_bw() + + theme(plot.subtitle=element_text(size=8)) + + #theme(legend.position = c(0.5, 0.8)) + + + geom_line(aes(y=tmedian, + group=interaction(gitBranch, nodesFactor), + color=nodesFactor)) + + geom_point(aes(color=nodesFactor), size=3) + + facet_grid(gitBranch ~ .) + + scale_shape_manual(values=c(21, 22)) + + scale_y_continuous(trans=log2_trans()) + +png("time-blocksize.png", width=1.5*w*ppi, height=1.5*h*ppi, res=ppi) +print(p1) +dev.off() + +p2 = ggplot(D, aes(x=blocksPerCpuFactor, y=tmedian)) + labs(x="Blocks/CPU", y="Time (s)", title=sprintf("Nbody granularity. Particles=%d", particles), subtitle=input_file) + theme_bw() + theme(plot.subtitle=element_text(size=8)) + - theme(legend.position = c(0.5, 0.88)) + - geom_point(shape=21, size=3) + - #scale_x_continuous(trans=log2_trans()) + + geom_line(aes(y=tmedian, + group=interaction(gitBranch, nodesFactor), + color=nodesFactor)) + + geom_point(aes(color=nodesFactor), size=3) + + facet_grid(gitBranch ~ .) + + + scale_shape_manual(values=c(21, 22)) + scale_y_continuous(trans=log2_trans()) -# Render the plot -print(p) - -# Save the png image +png("time-blocks-per-cpu.png", width=1.5*w*ppi, height=1.5*h*ppi, res=ppi) +print(p2) +dev.off() + +#p = ggarrange(p1, p2, ncol=2) +#png("time-gra.png", width=2*w*ppi, height=h*ppi, res=ppi) +#print(p) +#dev.off() + + + +png("exp-space.png", width=w*ppi, height=h*ppi, res=ppi) +p = ggplot(data=df, aes(x=nodesFactor, y=particlesFactor)) + + labs(x="Nodes", y="Particles", title="Nbody: Experiment space") + + geom_line(aes(group=particles)) + + geom_point(aes(color=nodesFactor), size=3) + + facet_grid(gitBranch ~ .) + + theme_bw() +print(p) +dev.off() + + +png("gra-space.png", width=w*ppi, height=h*ppi, res=ppi) +p = ggplot(data=D, aes(x=nodesFactor, y=blocksPerCpuFactor)) + + labs(x="Nodes", y="Blocks/CPU", title="Nbody: Granularity space") + + geom_line(aes(group=nodesFactor)) + + geom_point(aes(color=nodesFactor), size=3) + + facet_grid(gitBranch ~ .) + + theme_bw() +print(p) +dev.off() + + +png("performance.png", width=1.5*w*ppi, height=1.5*h*ppi, res=ppi) +p = ggplot(D, aes(x=nodesFactor)) + + labs(x="Nodes", y="Time (s)", title="Nbody strong scaling") + + theme_bw() + + geom_line(aes(y=tmedian, + linetype=blocksPerCpuFactor, + group=interaction(gitBranch, blocksPerCpuFactor))) + + geom_line(aes(y=tideal, group=gitBranch), color="red") + + geom_point(aes(y=tmedian, color=nodesFactor), size=3) + + facet_grid(gitBranch ~ .) + + scale_shape_manual(values=c(21, 22)) + + scale_y_continuous(trans=log2_trans()) +print(p) dev.off() diff --git a/garlic/fig/nbody/scaling.R b/garlic/fig/nbody/scaling.R new file mode 100644 index 0000000..cf91a87 --- /dev/null +++ b/garlic/fig/nbody/scaling.R @@ -0,0 +1,110 @@ +library(ggplot2) +library(dplyr) +library(scales) +library(jsonlite) + +args=commandArgs(trailingOnly=TRUE) + +# Read the timetable from args[1] +input_file = "input.json" +if (length(args)>0) { input_file = args[1] } + +# Load the dataset in NDJSON format +dataset = jsonlite::stream_in(file(input_file)) %>% + jsonlite::flatten() + +particles = unique(dataset$config.particles) + +# We only need the nblocks and time +df = select(dataset, config.nblocks, config.hw.cpusPerSocket, time) %>% + rename(nblocks=config.nblocks, + cpusPerSocket=config.hw.cpusPerSocket) + +df = df %>% mutate(blocksPerCpu = nblocks / cpusPerSocket) +df$nblocks = as.factor(df$nblocks) +df$blocksPerCpuFactor = as.factor(df$blocksPerCpu) + +# Normalize the time by the median +D=group_by(df, nblocks) %>% + mutate(tnorm = time / median(time) - 1) %>% + mutate(bad = max(ifelse(abs(tnorm) >= 0.01, 1, 0))) + +D$bad = as.factor(D$bad) + +#D$bad = as.factor(ifelse(abs(D$tnorm) >= 0.01, 2, +# ifelse(abs(D$tnorm) >= 0.005, 1, 0))) + +bs_unique = unique(df$nblocks) +nbs=length(bs_unique) + +print(D) + +ppi=300 +h=5 +w=5 + +png("box.png", width=w*ppi, height=h*ppi, res=ppi) +# +# +# +# Create the plot with the normalized time vs nblocks +p = ggplot(data=D, aes(x=blocksPerCpuFactor, y=tnorm, color=bad)) + + + # Labels + labs(x="Blocks/CPU", y="Normalized time", + title=sprintf("Nbody normalized time. Particles=%d", particles), + subtitle=input_file) + + + + # Center the title + #theme(plot.title = element_text(hjust = 0.5)) + + + # Black and white mode (useful for printing) + #theme_bw() + + + # Add the maximum allowed error lines + geom_hline(yintercept=c(-0.01, 0.01), + linetype="dashed", color="gray") + + + # Draw boxplots + geom_boxplot() + + scale_color_manual(values=c("black", "brown")) + + + #scale_y_continuous(breaks = scales::pretty_breaks(n = 10)) + + + theme_bw() + + + theme(plot.subtitle=element_text(size=8)) + + theme(legend.position = "none") + #theme(legend.position = c(0.85, 0.85)) + + + + +# Render the plot +print(p) + +## Save the png image +dev.off() +# +png("scatter.png", width=w*ppi, height=h*ppi, res=ppi) +# +## Create the plot with the normalized time vs nblocks +p = ggplot(D, aes(x=blocksPerCpuFactor, y=time)) + + + labs(x="Blocks/CPU", y="Time (s)", + title=sprintf("Nbody granularity. Particles=%d", particles), + subtitle=input_file) + + theme_bw() + + theme(plot.subtitle=element_text(size=8)) + + theme(legend.position = c(0.5, 0.88)) + + + geom_point(shape=21, size=3) + + #scale_x_continuous(trans=log2_trans()) + + scale_y_continuous(trans=log2_trans()) + +# Render the plot +print(p) + +# Save the png image +dev.off() From 3a2694ad3630fb986a3f08e187c7bd51800edc05 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 3 Feb 2021 13:06:23 +0100 Subject: [PATCH 541/987] nbody: add mpi branch in scaling experiment --- garlic/exp/nbody/scaling.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/garlic/exp/nbody/scaling.nix b/garlic/exp/nbody/scaling.nix index dd29e8a..20051a8 100644 --- a/garlic/exp/nbody/scaling.nix +++ b/garlic/exp/nbody/scaling.nix @@ -37,6 +37,7 @@ let gitBranch = [ "garlic/tampi+send+oss+task" "garlic/tampi+isend+oss+task" + "garlic/mpi+send+oss+task" ]; }; From 133ef50bb476b2261e8b073da036638918168181 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 3 Feb 2021 13:48:50 +0100 Subject: [PATCH 542/987] nbody: show time points --- garlic/fig/nbody/baseline.R | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/garlic/fig/nbody/baseline.R b/garlic/fig/nbody/baseline.R index 2744175..2e23213 100644 --- a/garlic/fig/nbody/baseline.R +++ b/garlic/fig/nbody/baseline.R @@ -65,8 +65,8 @@ nbs=length(bs_unique) print(D) ppi=300 -h=5 -w=5 +h=7.5 +w=7.5 png("box.png", width=w*ppi, height=h*ppi, res=ppi) # @@ -112,7 +112,7 @@ print(p) dev.off() -p1 = ggplot(D, aes(x=blocksizeFactor, y=tmedian)) + +p1 = ggplot(D, aes(x=blocksizeFactor, y=time)) + labs(x="Blocksize", y="Time (s)", title=sprintf("Nbody granularity. Particles=%d", particles), @@ -124,16 +124,16 @@ p1 = ggplot(D, aes(x=blocksizeFactor, y=tmedian)) + geom_line(aes(y=tmedian, group=interaction(gitBranch, nodesFactor), color=nodesFactor)) + - geom_point(aes(color=nodesFactor), size=3) + + geom_point(aes(color=nodesFactor), size=3, shape=21) + facet_grid(gitBranch ~ .) + scale_shape_manual(values=c(21, 22)) + scale_y_continuous(trans=log2_trans()) -png("time-blocksize.png", width=1.5*w*ppi, height=1.5*h*ppi, res=ppi) +png("time-blocksize.png", width=w*ppi, height=h*ppi, res=ppi) print(p1) dev.off() -p2 = ggplot(D, aes(x=blocksPerCpuFactor, y=tmedian)) + +p2 = ggplot(D, aes(x=blocksPerCpuFactor, y=time)) + labs(x="Blocks/CPU", y="Time (s)", title=sprintf("Nbody granularity. Particles=%d", particles), @@ -144,13 +144,13 @@ p2 = ggplot(D, aes(x=blocksPerCpuFactor, y=tmedian)) + geom_line(aes(y=tmedian, group=interaction(gitBranch, nodesFactor), color=nodesFactor)) + - geom_point(aes(color=nodesFactor), size=3) + + geom_point(aes(color=nodesFactor), size=3, shape=21) + facet_grid(gitBranch ~ .) + scale_shape_manual(values=c(21, 22)) + scale_y_continuous(trans=log2_trans()) -png("time-blocks-per-cpu.png", width=1.5*w*ppi, height=1.5*h*ppi, res=ppi) +png("time-blocks-per-cpu.png", width=w*ppi, height=h*ppi, res=ppi) print(p2) dev.off() @@ -183,7 +183,7 @@ print(p) dev.off() -png("performance.png", width=1.5*w*ppi, height=1.5*h*ppi, res=ppi) +png("performance.png", width=w*ppi, height=h*ppi, res=ppi) p = ggplot(D, aes(x=nodesFactor)) + labs(x="Nodes", y="Time (s)", title="Nbody strong scaling") + theme_bw() + From 26ab2d9bbd3d45ba26df0e249fb9fed375bb26ad Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 3 Mar 2021 18:28:38 +0100 Subject: [PATCH 543/987] nbody: fix indentation in baseline R script --- garlic/fig/nbody/baseline.R | 115 ++++++++++++++++++------------------ 1 file changed, 58 insertions(+), 57 deletions(-) diff --git a/garlic/fig/nbody/baseline.R b/garlic/fig/nbody/baseline.R index 2e23213..b0c73c3 100644 --- a/garlic/fig/nbody/baseline.R +++ b/garlic/fig/nbody/baseline.R @@ -12,7 +12,7 @@ if (length(args)>0) { input_file = args[1] } # Load the dataset in NDJSON format dataset = jsonlite::stream_in(file(input_file)) %>% - jsonlite::flatten() + jsonlite::flatten() particles = unique(dataset$config.particles) @@ -25,12 +25,12 @@ df = select(dataset, config.particles, config.gitBranch, time) %>% - rename(nblocks=config.nblocks, + rename(nblocks=config.nblocks, nodes=config.nodes, blocksize=config.blocksize, particles=config.particles, gitBranch=config.gitBranch, - cpusPerSocket=config.hw.cpusPerSocket) + cpusPerSocket=config.hw.cpusPerSocket) df = df %>% mutate(blocksPerCpu = nblocks / cpusPerSocket) df$nblocks = as.factor(df$nblocks) @@ -42,22 +42,23 @@ df$gitBranch = as.factor(df$gitBranch) # Normalize the time by the median D=group_by(df, nblocks, nodesFactor, gitBranch) %>% - mutate(tmedian = median(time)) %>% - mutate(tnorm = time / median(time) - 1) %>% - mutate(bad = max(ifelse(abs(tnorm) >= 0.01, 1, 0))) %>% + mutate(tmedian = median(time)) %>% + mutate(tn = tmedian * nodes) %>% + mutate(tnorm = time / median(time) - 1) %>% + mutate(bad = max(ifelse(abs(tnorm) >= 0.01, 1, 0))) %>% ungroup() %>% group_by(nodesFactor, gitBranch) %>% - mutate(tmedian_min = min(tmedian)) %>% + mutate(tmedian_min = min(tmedian)) %>% ungroup() %>% group_by(gitBranch) %>% - mutate(tmin_max = max(tmedian_min)) %>% - mutate(tideal = tmin_max / nodes) %>% + mutate(tmin_max = max(tmedian_min)) %>% + mutate(tideal = tmin_max / nodes) %>% ungroup() D$bad = as.factor(D$bad) #D$bad = as.factor(ifelse(abs(D$tnorm) >= 0.01, 2, -# ifelse(abs(D$tnorm) >= 0.005, 1, 0))) +# ifelse(abs(D$tnorm) >= 0.005, 1, 0))) bs_unique = unique(df$nblocks) nbs=length(bs_unique) @@ -75,34 +76,34 @@ png("box.png", width=w*ppi, height=h*ppi, res=ppi) # Create the plot with the normalized time vs nblocks p = ggplot(data=D, aes(x=blocksPerCpuFactor, y=tnorm, color=bad)) + - # Labels - labs(x="Blocks/CPU", y="Normalized time", + # Labels + labs(x="Blocks/CPU", y="Normalized time", title=sprintf("Nbody normalized time. Particles=%d", particles), subtitle=input_file) + - # Center the title - #theme(plot.title = element_text(hjust = 0.5)) + + # Center the title + #theme(plot.title = element_text(hjust = 0.5)) + - # Black and white mode (useful for printing) - #theme_bw() + + # Black and white mode (useful for printing) + #theme_bw() + - # Add the maximum allowed error lines - geom_hline(yintercept=c(-0.01, 0.01), - linetype="dashed", color="gray") + + # Add the maximum allowed error lines + geom_hline(yintercept=c(-0.01, 0.01), + linetype="dashed", color="gray") + - # Draw boxplots - geom_boxplot(aes(fill=nodesFactor)) + - scale_color_manual(values=c("black", "brown")) + + # Draw boxplots + geom_boxplot(aes(fill=nodesFactor)) + + scale_color_manual(values=c("black", "brown")) + facet_grid(gitBranch ~ .) + - #scale_y_continuous(breaks = scales::pretty_breaks(n = 10)) + + #scale_y_continuous(breaks = scales::pretty_breaks(n = 10)) + - #theme(legend.position = "none") - #theme(legend.position = c(0.85, 0.85)) - theme_bw()+ - theme(plot.subtitle=element_text(size=8)) + #theme(legend.position = "none") + #theme(legend.position = c(0.85, 0.85)) + theme_bw()+ + theme(plot.subtitle=element_text(size=8)) @@ -114,20 +115,20 @@ dev.off() p1 = ggplot(D, aes(x=blocksizeFactor, y=time)) + - labs(x="Blocksize", y="Time (s)", + labs(x="Blocksize", y="Time (s)", title=sprintf("Nbody granularity. Particles=%d", particles), subtitle=input_file) + - theme_bw() + - theme(plot.subtitle=element_text(size=8)) + - #theme(legend.position = c(0.5, 0.8)) + + theme_bw() + + theme(plot.subtitle=element_text(size=8)) + + #theme(legend.position = c(0.5, 0.8)) + - geom_line(aes(y=tmedian, + geom_line(aes(y=tmedian, group=interaction(gitBranch, nodesFactor), color=nodesFactor)) + - geom_point(aes(color=nodesFactor), size=3, shape=21) + + geom_point(aes(color=nodesFactor), size=3, shape=21) + facet_grid(gitBranch ~ .) + - scale_shape_manual(values=c(21, 22)) + - scale_y_continuous(trans=log2_trans()) + scale_shape_manual(values=c(21, 22)) + + scale_y_continuous(trans=log2_trans()) png("time-blocksize.png", width=w*ppi, height=h*ppi, res=ppi) print(p1) @@ -135,20 +136,20 @@ dev.off() p2 = ggplot(D, aes(x=blocksPerCpuFactor, y=time)) + - labs(x="Blocks/CPU", y="Time (s)", + labs(x="Blocks/CPU", y="Time (s)", title=sprintf("Nbody granularity. Particles=%d", particles), subtitle=input_file) + - theme_bw() + - theme(plot.subtitle=element_text(size=8)) + + theme_bw() + + theme(plot.subtitle=element_text(size=8)) + - geom_line(aes(y=tmedian, + geom_line(aes(y=tmedian, group=interaction(gitBranch, nodesFactor), color=nodesFactor)) + - geom_point(aes(color=nodesFactor), size=3, shape=21) + + geom_point(aes(color=nodesFactor), size=3, shape=21) + facet_grid(gitBranch ~ .) + - scale_shape_manual(values=c(21, 22)) + - scale_y_continuous(trans=log2_trans()) + scale_shape_manual(values=c(21, 22)) + + scale_y_continuous(trans=log2_trans()) png("time-blocks-per-cpu.png", width=w*ppi, height=h*ppi, res=ppi) print(p2) @@ -163,37 +164,37 @@ dev.off() png("exp-space.png", width=w*ppi, height=h*ppi, res=ppi) p = ggplot(data=df, aes(x=nodesFactor, y=particlesFactor)) + - labs(x="Nodes", y="Particles", title="Nbody: Experiment space") + - geom_line(aes(group=particles)) + - geom_point(aes(color=nodesFactor), size=3) + + labs(x="Nodes", y="Particles", title="Nbody: Experiment space") + + geom_line(aes(group=particles)) + + geom_point(aes(color=nodesFactor), size=3) + facet_grid(gitBranch ~ .) + - theme_bw() + theme_bw() print(p) dev.off() png("gra-space.png", width=w*ppi, height=h*ppi, res=ppi) p = ggplot(data=D, aes(x=nodesFactor, y=blocksPerCpuFactor)) + - labs(x="Nodes", y="Blocks/CPU", title="Nbody: Granularity space") + - geom_line(aes(group=nodesFactor)) + - geom_point(aes(color=nodesFactor), size=3) + + labs(x="Nodes", y="Blocks/CPU", title="Nbody: Granularity space") + + geom_line(aes(group=nodesFactor)) + + geom_point(aes(color=nodesFactor), size=3) + facet_grid(gitBranch ~ .) + - theme_bw() + theme_bw() print(p) dev.off() png("performance.png", width=w*ppi, height=h*ppi, res=ppi) p = ggplot(D, aes(x=nodesFactor)) + - labs(x="Nodes", y="Time (s)", title="Nbody strong scaling") + - theme_bw() + - geom_line(aes(y=tmedian, + labs(x="Nodes", y="Time (s)", title="Nbody strong scaling") + + theme_bw() + + geom_line(aes(y=tmedian, linetype=blocksPerCpuFactor, group=interaction(gitBranch, blocksPerCpuFactor))) + - geom_line(aes(y=tideal, group=gitBranch), color="red") + - geom_point(aes(y=tmedian, color=nodesFactor), size=3) + + geom_line(aes(y=tideal, group=gitBranch), color="red") + + geom_point(aes(y=tmedian, color=nodesFactor), size=3) + facet_grid(gitBranch ~ .) + - scale_shape_manual(values=c(21, 22)) + - scale_y_continuous(trans=log2_trans()) + scale_shape_manual(values=c(21, 22)) + + scale_y_continuous(trans=log2_trans()) print(p) dev.off() From 637c57b3882309b666c23351a8b23808fe21428d Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 3 Mar 2021 18:29:21 +0100 Subject: [PATCH 544/987] nbody: improve unit name --- garlic/exp/nbody/scaling.nix | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/garlic/exp/nbody/scaling.nix b/garlic/exp/nbody/scaling.nix index 20051a8..ad0e4f7 100644 --- a/garlic/exp/nbody/scaling.nix +++ b/garlic/exp/nbody/scaling.nix @@ -43,8 +43,10 @@ let # Generate the complete configuration for each unit genConf = var: fix (self: var // targetMachine.config // { - expName = "nbody-nblocks"; - unitName = "${self.expName}${toString self.nblocks}"; + expName = "nbody-scaling"; + unitName = self.expName + + "-nb${toString self.nblocks}"+ + "-nodes${toString self.nodes}"; inherit (machineConfig) hw; From 88087bb4b7aed646c156fa37de196c7fbf6df4ad Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 3 Mar 2021 18:31:43 +0100 Subject: [PATCH 545/987] nbody: add time-node plot --- garlic/fig/nbody/baseline.R | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/garlic/fig/nbody/baseline.R b/garlic/fig/nbody/baseline.R index b0c73c3..11584dd 100644 --- a/garlic/fig/nbody/baseline.R +++ b/garlic/fig/nbody/baseline.R @@ -198,3 +198,14 @@ p = ggplot(D, aes(x=nodesFactor)) + scale_y_continuous(trans=log2_trans()) print(p) dev.off() + + +png("time-nodes.png", width=w*ppi, height=h*ppi, res=ppi) +p = ggplot(D, aes(x=nodesFactor)) + + labs(x="Nodes", y="Time * nodes (s)", title="Nbody strong scaling") + + theme_bw() + + geom_line(aes(y=tn, group=gitBranch)) + + facet_grid(gitBranch ~ .) + + scale_y_continuous(trans=log2_trans()) +print(p) +dev.off() From 0781e8b28e3fb1547379171be29a69cac2a829c2 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 4 Mar 2021 19:02:08 +0100 Subject: [PATCH 546/987] nbody: remove jemalloc experiments Nanos6 has jemalloc enabled by default --- garlic/exp/index.nix | 7 ------- garlic/exp/nbody/nblocks.nix | 11 ++--------- garlic/exp/nbody/scaling.nix | 11 ++--------- 3 files changed, 4 insertions(+), 25 deletions(-) diff --git a/garlic/exp/index.nix b/garlic/exp/index.nix index ae3120c..d5ddc20 100644 --- a/garlic/exp/index.nix +++ b/garlic/exp/index.nix @@ -14,9 +14,6 @@ small = baseline.override { particles = 12 * 4096; }; - # TODO: Update freeCpu using a non-standard pipeline - #freeCpu = baseline.override { freeCpu = true; }; - jemalloc = baseline.override { enableJemalloc = true; }; # Some experiments with traces trace = { @@ -27,10 +24,6 @@ steps = 1; }; - # Same but with jemalloc enabled - jemalloc = trace.baseline.override { - enableJemalloc = true; - }; }; scaling = callPackage ./nbody/scaling.nix { diff --git a/garlic/exp/nbody/nblocks.nix b/garlic/exp/nbody/nblocks.nix index 447c4ff..c6ec3e7 100644 --- a/garlic/exp/nbody/nblocks.nix +++ b/garlic/exp/nbody/nblocks.nix @@ -7,7 +7,6 @@ , garlicTools # Options for the experiment -, enableJemalloc ? false , enableCTF ? false # Number of cases tested , steps ? 7 @@ -56,7 +55,7 @@ let cc = bsc.icc; mpi = bsc.impi; cflags = "-g"; - inherit timesteps gitBranch enableJemalloc enableCTF loops; + inherit timesteps gitBranch enableCTF loops; # Resources qos = "debug"; @@ -91,13 +90,7 @@ let program = {nextStage, conf, ...}: with conf; let - /* These changes are propagated to all dependencies. For example, - when changing nanos6+jemalloc, we will get tampi built with - nanos6+jemalloc as well. */ - customPkgs = bsc.extend (self: super: { - mpi = conf.mpi; - nanos6 = super.nanos6.override { inherit enableJemalloc; }; - }); + customPkgs = stdexp.replaceMpi conf.mpi; in customPkgs.apps.nbody.override ({ inherit cc blocksize mpi gitBranch cflags; diff --git a/garlic/exp/nbody/scaling.nix b/garlic/exp/nbody/scaling.nix index ad0e4f7..900841b 100644 --- a/garlic/exp/nbody/scaling.nix +++ b/garlic/exp/nbody/scaling.nix @@ -7,7 +7,6 @@ , garlicTools # Options for the experiment -, enableJemalloc ? false , enableCTF ? false # Number of cases tested , steps ? 6 @@ -63,7 +62,7 @@ let cc = bsc.icc; mpi = bsc.impi; cflags = "-g"; - inherit timesteps enableJemalloc enableCTF loops; + inherit timesteps enableCTF loops; # Resources qos = "debug"; @@ -97,13 +96,7 @@ let program = {nextStage, conf, ...}: with conf; let - /* These changes are propagated to all dependencies. For example, - when changing nanos6+jemalloc, we will get tampi built with - nanos6+jemalloc as well. */ - customPkgs = bsc.extend (self: super: { - mpi = conf.mpi; - nanos6 = super.nanos6.override { inherit enableJemalloc; }; - }); + customPkgs = stdexp.replaceMpi conf.mpi; in customPkgs.apps.nbody.override ({ inherit (conf) cc blocksize mpi gitBranch cflags; From 7d66b3414086b7be7ba5a1176534a907497fc1c0 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 12 Mar 2021 12:49:08 +0100 Subject: [PATCH 547/987] nbody: fix converter rename in nanos6 CTF options --- garlic/exp/nbody/nblocks.nix | 2 +- garlic/exp/nbody/scaling.nix | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/garlic/exp/nbody/nblocks.nix b/garlic/exp/nbody/nblocks.nix index c6ec3e7..1c092e2 100644 --- a/garlic/exp/nbody/nblocks.nix +++ b/garlic/exp/nbody/nblocks.nix @@ -79,7 +79,7 @@ let inherit nextStage; env = optionalString (conf.enableCTF) '' export NANOS6_CONFIG_OVERRIDE="version.instrument=ctf,\ - instrument.ctf.conversor.enabled=false" + instrument.ctf.converter.enabled=false" ''; }; diff --git a/garlic/exp/nbody/scaling.nix b/garlic/exp/nbody/scaling.nix index 900841b..40ef4ed 100644 --- a/garlic/exp/nbody/scaling.nix +++ b/garlic/exp/nbody/scaling.nix @@ -85,7 +85,7 @@ let inherit nextStage; env = optionalString (conf.enableCTF) '' export NANOS6_CONFIG_OVERRIDE="version.instrument=ctf,\ - instrument.ctf.conversor.enabled=false" + instrument.ctf.converter.enabled=false" ''; }; From 9d38a3778788df5bae0ecb0caddb4ad2ddf2e176 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 12 Mar 2021 13:15:46 +0100 Subject: [PATCH 548/987] doc: link to the user guide in the readme --- README | 462 ------------------------------------------------------ README.md | 8 + 2 files changed, 8 insertions(+), 462 deletions(-) delete mode 100644 README create mode 100644 README.md diff --git a/README b/README deleted file mode 100644 index 08f3b32..0000000 --- a/README +++ /dev/null @@ -1,462 +0,0 @@ - - - bscpkgs: User guide - - -ABSTRACT - - This repository contains a set of nix packages used in the Barcelona - Supercomputing Center by the Programming Models group. - - The current setup uses the xeon07 machine to build packages, which are - automatically uploaded to MareNostrum4, due to lack of permissions in - the latter to perform the build safely. - - Some preliminary steps must be done manually to be able to build and - install packages (derivations in nix jargon). - -1. Introduction - - To easily connect to xeon07 in one step, setup the SSH (for version - 7.3 and upwards) configuration file in ~/.ssh/config adding these - lines: - - Host cobi - HostName ssflogin.bsc.es - User your-username-here - - Host xeon07 - ProxyJump cobi - HostName xeon07 - User your-username-here - - You should be able to connect with: - - laptop$ ssh xeon07 - -1.1 Network access - - In order to use nix you would need to be able to download the sources - from Internet. Usually the download requires the ports 22, 80 and 443 - to be open for outgoing traffic. - - Check that you have network access in xeon07 provided by the - environment variables "http_proxy" and "https_proxy". Try to fetch a - webpage with curl, to ensure the proxy is working: - - xeon07$ curl x.com - x - -1.2 SSH keys - - Package sources are usually downloaded directly from the git server, - so you must be able to access all repositories without a password - prompt. - - Most repositories at https://pm.bsc.es/gitlab are open to read for - logged in users, but there are some exceptions (for example the nanos6 - repository) where you must have explicitly granted read access. - - If you don't have a ssh key at ~/.ssh/*.pub in xeon07 create a new one - without password protection by running: - - xeon07$ ssh-keygen - Generating public/private rsa key pair. - Enter file in which to save the key (~/.ssh/id_rsa): - Enter passphrase (empty for no passphrase): - Enter same passphrase again: - Your identification has been saved in ~/.ssh/id_rsa. - Your public key has been saved in ~/.ssh/id_rsa.pub. - ... - - By default it will create the private key at ~/.ssh/id_rsa. Copy the - contents of your public ssh key in ~/.ssh/id_rsa.pub and paste it in - GitLab at: - - https://pm.bsc.es/gitlab/profile/keys - - Then, configure it for use in the ~/.ssh/config file, adding: - - Host bscpm03.bsc.es - IdentityFile ~/.ssh/id_rsa - - Finally verify the SSH connection to the server works and you get a - greeting from the GitLab server with your username: - - xeon07$ ssh git@bscpm03.bsc.es - PTY allocation request failed on channel 0 - Welcome to GitLab, @rarias! - Connection to bscpm03.bsc.es closed. - - Verify that you can access nanos6/nanos6 repository (otherwise you - first need to ask to be granted read access), at: - - https://pm.bsc.es/gitlab/nanos6/nanos6 - - Finally, you should be able to download the nanos6/nanos6 git - repository without any password interaction by running: - - xeon07$ git clone git@bscpm03.bsc.es:nanos6/nanos6.git - - You will also need to access MareNostrum 4 from the xeon07 node, in - order to submit experiments. Add the following lines as well to the - ~/.ssh/config file and set your user name: - - Host mn0 mn1 mn2 - User your-mn4-username - IdentityFile ~/.ssh/id_rsa - - Then copy the key to MareNostrum 4 (it will ask you the first time for - your password): - - xeon07$ ssh-copy-id -i ~/.ssh/id_rsa.pub mn1 - - And ensure that you can connect without a password: - - xeon07$ ssh mn1 - ... - login1$ - -1.3 The bscpkgs repo - - Once you have Internet and you have granted access to the PM GitLab - repositories you can begin building software with nix. First ensure - that the nix binaries are available from your shell in xeon07: - - xeon07$ nix --version - nix (Nix) 2.3.6 - - Now you are ready to build and install packages with nix. Clone the - bscpkgs repository: - - xeon07$ git clone git@bscpm03.bsc.es:rarias/bscpkgs.git - - Nix looks in the current folder for a file named "default.nix" for - packages, so go to the repo directory: - - xeon07$ cd bscpkgs - - Now you should be able to build nanos6: - - xeon07$ nix-build -A bsc.nanos6 - .. - /nix/store/3i0qkdywm9xjv2cm1ldx9smb552sf6r1-nanos6-2.4-6f10a32 - - The installation is placed in the nix store (with the path stated in - the last line of the build process), with the "result" symbolic link - pointing to the same location: - - xeon07$ readlink result - /nix/store/3i0qkdywm9xjv2cm1ldx9smb552sf6r1-nanos6-2.4-6f10a32 - -1.4 Configuration of mn4 (MareNostrum 4) - - In order to execute the programs built at xeon07, you first need to - enter nix environment. To do so, add to the end of the file ~/.bashrc - in mn4 the following line: - - export PATH=/gpfs/projects/bsc15/nix/bin:$PATH - - Then logout and login again (our source the ~/.bashrc file) and you - will now have the `nix-setup` command available. This command executes - a new shell where the /nix store is available. To execute it: - - mn4$ nix-setup - - Now you will see a new shell, where you can access the nix store: - - nix|mn4$ ls /nix - gcroots profiles store var - - The last build of nanos6 can be also found in mn4 at the same - location: - - /nix/store/3i0qkdywm9xjv2cm1ldx9smb552sf6r1-nanos6-2.4-6f10a32 - - Remember to enter the nix environment by running `nix-setup` when you - need something from the nix store. - - You cannot perform any build operations from mn4: to do so use the - xeon07 machine. - -2. Basic usage of nix - - Nix is a package manager which handles easily reproducibility and - configuration of packages and dependencies. See more info here: - - https://nixos.org/nix/manual/ - - We will only cover the basic usage of nix for the BSC packages. - -2.1 The user environment - - All nix packages are stored under the /nix directory. When you need to - "install" some binary from nix, a symlink is added to a folder - included in the $PATH variable. In particular, you should have - something similar added to your $PATH: - - xeon07$ echo $PATH | sed 's/:/\n/g' | grep nix - /home/Computational/rarias/.nix-profile/bin - /nix/var/nix/profiles/default/bin - - The first one is your custom installation of packages that are stored - in your home directory and the second one is the default installation - which contains the nix tools (which are installed in the /nix - directory as well). - - Use `nix search` to look for official packages in the "nixpkgs" - channel (the default repository of packages): - - xeon07$ nix search cowsay - warning: using cached results; pass '-u' to update the cache - * cowsay (cowsay) - A program which generates ASCII pictures of a cow with a message - - * neo-cowsay (neo-cowsay) - Cowsay reborn, written in Go - - * ponysay (ponysay-3.0.3) - Cowsay reimplemention for ponies - - * tewisay (tewisay-unstable-2017-04-14) - Cowsay replacement with unicode and partial ansi escape support - - When you need a program that is not available in your environment, - much like when you use "module load ..." you can use nix-env to modify - what is currently loaded. For example: - - xeon07$ nix-env -iA nixpkgs.cowsay - - Notice that you should specify the prefix "nixpkgs." before. The - command will download (if not found already in the nix store), compile - (if necessary) and load the program `cowsay` from the nixpkgs - repository in the environment. You should be able to run it as: - - xeon07$ cowsay "hello world" - _____________ - < hello world > - ------------- - \ ^__^ - \ (oo)\_______ - (__)\ )\/\ - ||----w | - || || - - You can now inspect the ~/.nix-profile/bin folder, and see that a new - symlink was added to the actual installation of the binary: - - xeon07$ file ~/.nix-profile/bin/cowsay - /home/Computational/rarias/.nix-profile/bin/cowsay: symbolic link to - `/nix/store/673gczmhr5b449521srz2n7g1klykz6n-cowsay-3.03+dfsg2/bin/cowsay' - - You can list the current packages installed in your environment by - running: - - xeon07$ nix-env -q - cowsay-3.03+dfsg2 - nix-2.3.6 - - Notice that this setup only affects your user environment. Also, it is - permanent for any new session until you modify the environment again - and is immediate, all sessions will have the new environment - instantaneously. - - You can remove any package from the environment using: - - xeon07$ nix-env -e cowsay - - See the manual with `nix-env --help` if you want to know more details. - -2.2 Building packages - - Usually, all official packages are already compiled and distributed - from a cache server so you don't need to rebuild them again. However, - BSC packages are distributed only in source code form as we don't have - any binary cache server yet. - - Nix will handle the build process without any user interaction (with a - few exceptions which you shouldn't have to worry). If any other user - has already built the package then the build process is not needed, - and the package is used as is. - - In order to build a BSC package go to the `bscpkgs` directory, and - run: - - xeon07$ nix-build -A bsc.dummy - - Notice the "bsc." prefix for BSC packages. The package will be built - and installed in the /nix directory, then a symlink is placed in the - result directory: - - xeon07$ find result/ -type f - result/ - result/bin - result/bin/dummy - - The way in which nix handles the packages and dependencies ensures - that the environment of the build process of any package is exactly - the same, so the generated output should be the same if the builds are - deterministic. - - You can check the reproducibility of the build by adding the "--check" - flag, which will rebuild the package and compare the checksum of every - file with the ones previously built: - - xeon07$ nix-build -A bsc.dummy --check - ... - xeon07$ echo $? - 0 - - A return code of zero ensures the output is bit by bit identical to - the one installed. There are some packages that include - indeterministic information in the build process (such as the - timestamp of the current time) which will produce an error. Those - packages must be patched to ensure the output is deterministic. - - Notice that if you "cd" into the "result/" directory you will be at - /nix directory (as you have follow the symlink) where you don't have - write permission. Therefore if your program attempts to write to the - current directory it will fail. It is recommended to instead run your - program from the top directory: - - xeon07$ result/bin/dummy - Hello world! - - Or you can install it in the environment: - - xeon07$ nix-env -i ./result - - And "cd" into any directory where you want to output some files and - just run it by the name: - - xeon07$ cd /tmp - xeon07$ dummy - Hello world! - - Finally, you can remove it from the environment if you don't need it: - - xeon07$ nix-env -e dummy - - If you want to know more details use "nix-build --help" to see the - manual. - -2.3 The build process - - Each package is built following a programmable configuration - description in the nix language. Builds in nix are performed under - very strict conditions. No access to any file in the file system is - allowed, unless stated in the dependencies, which are in the /nix - store only. - - There is no network access in the build process and other restrictions - are enforced so that the build environment is reproducible. See more - details here: - - https://nixos.wiki/wiki/Nix#Sandboxing - - The top level "default.nix" file of the bscpkgs serves as a index - of all BSC packages. You can see the definition for each package, for - example the nbody app: - - nbody = callPackage ./bsc/apps/nbody/default.nix { - stdenv = pkgs.gcc9Stdenv; - mpi = intel-mpi; - icc = icc; - tampi = tampi; - nanos6 = nanos6-git; - }; - - The compilation details are specified in the - "bsc/apps/nbody/default.nix" file. You can configure the package by - changing the inputs, for example, what specific implementation of - nanos6 or MPI you want to use. To change the MPI implementation to the - official MPICH package use: - - nbody = callPackage ./bsc/apps/nbody/default.nix { - stdenv = pkgs.gcc9Stdenv; - mpi = pkgs.mpich; # Notice pkgs prefix for official packages - icc = icc; - tampi = tampi; - nanos6 = nanos6-git; - }; - - Then you can rebuild the nbody package: - - xeon07$ nix-build -A bsc.nbody - ... - - And verify that the binary is indeed linked to MPICH now: - - xeon07$ ldd result/bin/nbody_mpi.N2.2048.exe | grep mpi - libmpi.so.12 => /nix/store/dwkkcv78a5bs8smflpx9ppp3klhz3i98-mpich-3.3.2/lib/libmpi.so.12 (0x00007f6be0f07000) - - If you modify a package which another package requires as a - dependency, nix will rebuild all required packages to propagate your - changes on demand. - - However, if you come back to the original configuration, the package - will still be in the /nix store (unless the garbage collector was - manually run and removed your old build), so you don't need to rebuild - it again. - - For example if nbody is configured back to use Intel MPI: - - nbody = callPackage ./bsc/apps/nbody/default.nix { - stdenv = pkgs.gcc9Stdenv; - mpi = intel-mpi; - icc = icc; - tampi = tampi; - nanos6 = nanos6-git; - }; - - The build process now is not required: - - xeon07$ nix-build -A bsc.nbody - /nix/store/rbq7wrjcmg6fzd6yhrlnkfvzcavdbdpc-nbody - xeon07$ ldd result/bin/nbody_mpi.N2.2048.exe | grep mpi - libmpifort.so.12 => /nix/store/jvsjvxj2a08340fpdrqbqix9z3mpp3bd-intel-mpi-2019.7.217/lib/libmpifort.so.12 (0x00007f3a00402000) - libmpi.so.12 => /nix/store/jvsjvxj2a08340fpdrqbqix9z3mpp3bd-intel-mpi-2019.7.217/lib/libmpi.so.12 (0x00007f39fed34000) - - Take a look at the different package description files in the - bscpkgs repository if you want to understand more details. Also - the nix pills are a very good reference: - - https://nixos.org/nixos/nix-pills/ - -2.4 Debugging the build process - - It may happen that the build process fails in an unexpected way. Most - problems are related to missing dependencies and can be easily found - by looking at the error messages. - - Other build problems are more subtle and require more debugging time. - One way of inspecting a build problem is by adding the breakpointHook - hook to the nativeBuildInputs array in a nix derivation (see - https://nixos.org/nixpkgs/manual/#ssec-setup-hooks for more info), - which will stop the build process and allow a shell to be attached to - the sandbox. - - xeon07$ nix-build -A bsc.nbody - ... - /nix/store/gvqm2yc9xx4vh3nglgckz8siya66jnkx-stdenv-linux/setup: line - 83: fake-missing-command: command not found - build failed in buildPhase with exit code 127 - To attach install cntr and run the following command as root: - - cntr attach -t command \ - cntr-/nix/store/sk2nsj7xfr62cjk6m3725ydfyswqz7n1-nbody - - The command must run as root user, so you can use `sudo -i` to run it, - (the -i option is required to load the shell profile which provides - the nix path containing the cntr tool): - - xeon$ sudo -i cntr attach -t command \ - cntr-/nix/store/sk2nsj7xfr62cjk6m3725ydfyswqz7n1-nbody - nixbld@localhost:/var/lib/cntr> ls - bin build dev etc nix proc tmp var - - Then you can inspect the build environment to see why the build - failed. Source the build/env-vars file to get the same environment - variables (which include the $PATH) of the build process. - -/* vim: set ts=2 sw=2 tw=72 fo=watqc expandtab spell autoindent: */ diff --git a/README.md b/README.md new file mode 100644 index 0000000..aecda86 --- /dev/null +++ b/README.md @@ -0,0 +1,8 @@ +This repository contains the garlic benchmark with all the BSC +packages and patches required to compile it. + +See the user guide at + (also available in +[PDF](https://pm.bsc.es/ftp/garlic/ug.pdf)). + +Questions? From f0ae0df341b934254803c5a489168c2833450dc2 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 12 Mar 2021 13:57:22 +0100 Subject: [PATCH 549/987] Add MIT license --- COPYING | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 COPYING diff --git a/COPYING b/COPYING new file mode 100644 index 0000000..7dacb7a --- /dev/null +++ b/COPYING @@ -0,0 +1,21 @@ +Copyright (c) 2020-2021 Barcelona Supercomputing Center +Copyright (c) 2003-2020 Eelco Dolstra and the Nixpkgs/NixOS contributors + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. From c41456412c8d09c9f8f09ef6f9297c73f9f159de Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 12 Mar 2021 19:33:40 +0100 Subject: [PATCH 550/987] examples: Add granularity examples --- garlic/exp/examples/granularity.nix | 188 +++++++++++++++++++++++++++ garlic/exp/index.nix | 4 + garlic/fig/examples/granularity.R | 194 ++++++++++++++++++++++++++++ garlic/fig/index.nix | 4 + 4 files changed, 390 insertions(+) create mode 100644 garlic/exp/examples/granularity.nix create mode 100644 garlic/fig/examples/granularity.R diff --git a/garlic/exp/examples/granularity.nix b/garlic/exp/examples/granularity.nix new file mode 100644 index 0000000..5425e54 --- /dev/null +++ b/garlic/exp/examples/granularity.nix @@ -0,0 +1,188 @@ +# This file defines an experiment. It is designed as a function that takes +# several parameters and returns a derivation. This derivation, when built will +# create several scripts that can be executed and launch the experiment. + +# These are the inputs to this function: an attribute set which must contain the +# following keys: +{ + stdenv +, stdexp +, bsc +, targetMachine +, stages +, garlicTools +}: + +# We import in the scope the content of the `stdenv.lib` attribute, which +# contain useful functions like `toString`, which will be used later. This is +# handy to avoid writting `stdenv.lib.tostring`. + +with stdenv.lib; + +# We also have some functions specific to the garlic benchmark which we import +# as well. Take a look at the garlic/tools.nix file for more details. +with garlicTools; + +# The `let` keyword allows us to define some local variables which will be used +# later. It works as the local variable concept in the C language. +let + + # Initial variable configuration: every attribute in this set contains lists + # of options which will be used to compute the configuration of the units. The + # cartesian product of all the values will be computed. + varConf = { + # In this case we will vary the columns and rows of the blocksize. This + # configuration will create 3 x 2 = 6 units. + cbs = [ 256 1024 4096 ]; + rbs = [ 512 1024 ]; + }; + + # Generate the complete configuration for each unit: genConf is a function + # that accepts the argument `c` and returns a attribute set. The attribute set + # is formed by joining the configuration of the machine (which includes + # details like the number of nodes or the architecture) and the configuration + # that we define for our units. + # + # Notice the use of the `rec` keyword, which allows us to access the elements + # of the set while is being defined. + genConf = c: targetMachine.config // rec { + + # These attributes are user defined, and thus the user will need to handle + # them manually. They are not read by the standard pipeline: + + # Here we load the `hw` attribute from the machine configuration, so we can + # access it, for example, the number of CPUs per socket as hw.cpusPerSocket. + hw = targetMachine.config.hw; + + # These options will be used by the heat app, be we write them here so they + # are stored in the unit configuration. + timesteps = 10; + cols = 1024 * 16; # Columns + rows = 1024 * 16; # Rows + + # The blocksize is set to the values passed in the `c` parameter, which will + # be set to one of all the configurations of the cartesian product. for + # example: cbs = 256 and rbs = 512. + # We can also write `inherit (c) cbs rbs`, as is a shorthand notation. + cbs = c.cbs; + rbs = c.rbs; + + # The git branch is specified here as well, as will be used when we specify + # the heat app + gitBranch = "garlic/tampi+isend+oss+task"; + + # ------------------------------------------------------------------------- + + # These attributes are part of the standard pipeline, and are required for + # each experiment. They are automatically recognized by the standard + # execution pipeline. + + # The experiment name: + expName = "example-granularity-heat"; + + # The experimental unit name. It will be used to create a symlink in the + # index (at /gpfs/projects/bsc15/garlic/$USER/index/) so you can easily find + # the unit. Notice that the symlink is overwritten each time you run a unit + # with the same same. + # + # We use the toString function to convert the numeric value of cbs and rbs + # to a string like: "example-granularity-heat.cbs-256.rbs-512" + unitName = expName + + ".cbs-${toString cbs}" + + ".rbs-${toString rbs}"; + + # Repeat the execution of each unit a few times: this option is + # automatically taken by the experiment, which will repeat the execution of + # the program that many times. It is recommended to run the app at least 30 + # times, but we only used 10 here for demostration purposes (as it will be + # faster to run) + loops = 10; + + # Resources: here we configure the resources in the machine. The queue to be + # used is `debug` as is the fastest for small jobs. + qos = "debug"; + + # Then the number of MPI processes or tasks per node: + ntasksPerNode = 1; + + # And the number of nodes: + nodes = 1; + + # We use all the CPUs available in one socket to each MPI process or task. + # Notice that the number of CPUs per socket is not specified directly. but + # loaded from the configuration of the machine that will be used to run our + # experiment. The affinity mask is set accordingly. + cpusPerTask = hw.cpusPerSocket; + + # The time will limit the execution of the program in case of a deadlock + time = "02:00:00"; + + # The job name will appear in the `squeue` and helps to identify what is + # running. Currently is set to the name of the unit. + jobName = unitName; + }; + + # Using the `varConf` and our function `genConf` we compute a list of the + # complete configuration of every unit. + configs = stdexp.buildConfigs { + inherit varConf genConf; + }; + + # Now that we have the list of configs, we need to write how that information + # is used to run our program. In our case we will use some params such as the + # number of rows and columns of the input problem or the blocksize as argv + # values. + + # The exec stage is used to run a program with some arguments. + exec = {nextStage, conf, ...}: stages.exec { + # All stages require the nextStage attribute, which is passed as parameter. + inherit nextStage; + + # Then, we fill the argv array with the elements that will be used when + # running our program. Notice that we load the attributes from the + # configuration which is passed as argument as well. + argv = [ + "--rows" conf.rows + "--cols" conf.cols + "--rbs" conf.rbs + "--cbs" conf.cbs + "--timesteps" conf.timesteps + ]; + + # This program requires a file called `head.conf` in the current directory. + # To do it, we run this small script in the `pre` hook, which simple runs + # some commands before running the program. Notice that this command is + # executed in every MPI task. + pre = '' + ln -sf ${nextStage}/etc/heat.conf heat.conf || true + ''; + }; + + # The program stage is only used to specify which program we should run. + # We use this stage to specify build-time parameters such as the gitBranch, + # which will be used to fetch the source code. We use the `override` function + # of the `bsc.garlic.apps.heat` derivation to change the input paramenters. + program = {nextStage, conf, ...}: bsc.garlic.apps.heat.override { + inherit (conf) gitBranch; + }; + + # Other stages may be defined here, in case that we want to do something + # additional, like running the program under `perf stats` or set some + # envionment variables. + + # Once all the stages are defined, we build the pipeline array. The + # `stdexp.stdPipeline` contains the standard pipeline stages, so we don't need + # to specify them. We only specify how we run our program, and what program + # exactly, by adding our `exec` and `program` stages: + pipeline = stdexp.stdPipeline ++ [ exec program ]; + +# Then, we use the `configs` and the `pipeline` just defined inside the `in` +# part, to build the complete experiment: +in + + # The `stdexp.genExperiment` function generates an experiment by calling every + # stage of the pipeline with the different configs, and thus creating + # different units. The result is the top level derivation which is the + # `trebuchet`, which is the script that, when executed, launches the complete + # experiment. + stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/index.nix b/garlic/exp/index.nix index d5ddc20..a90daa0 100644 --- a/garlic/exp/index.nix +++ b/garlic/exp/index.nix @@ -103,4 +103,8 @@ impi = callPackage ./osu/impi.nix { }; bwShm = bw.override { interNode = false; }; }; + + examples = { + granularity = callPackage ./examples/granularity.nix { }; + }; } diff --git a/garlic/fig/examples/granularity.R b/garlic/fig/examples/granularity.R new file mode 100644 index 0000000..2fddf5d --- /dev/null +++ b/garlic/fig/examples/granularity.R @@ -0,0 +1,194 @@ +# This R program takes as argument the dataset that contains the results of the +# execution of the heat example experiment and produces some plots. All the +# knowledge to understand how this script works is covered by this nice R book: +# +# Winston Chang, R Graphics Cookbook: Practical Recipes for Visualizing Data, +# O’Reilly Media (2020). 2nd edition +# +# Which can be freely read it online here: https://r-graphics.org/ +# +# Please, search in this book before copying some random (and probably oudated) +# reply on stack overflow. + +# We load some R packages to import the required functions. We mainly use the +# tidyverse packages, which are very good for ploting data, +library(ggplot2) +library(dplyr, warn.conflicts = FALSE) +library(scales) +library(jsonlite) +library(viridis, warn.conflicts = FALSE) + +# Here we simply load the arguments to find the input dataset. If nothing is +# specified we use the file named `input` in the current directory. +# We can run this script directly using: +# Rscript + +# Load the arguments (argv) +args = commandArgs(trailingOnly=TRUE) + +# Set the input dataset if given in argv[1], or use "input" as default +if (length(args)>0) { input_file = args[1] } else { input_file = "input" } + +# Here we build of dataframe from the input dataset by chaining operations using +# the magritte operator `%>%`, which is similar to a UNIX pipe. +# First we read the input file, which is expected to be NDJSON +df = jsonlite::stream_in(file(input_file), verbose=FALSE) %>% + + # Then we flatten it, as it may contain dictionaries inside the columns + jsonlite::flatten() %>% + + # Now the dataframe contains all the configuration of the units inside the + # columns named `config.*`, for example `config.cbs`. We first select only + # the columns that we need: + select(config.cbs, config.rbs, unit, time) %>% + + # And then we rename those columns to something shorter: + rename(cbs=config.cbs, rbs=config.rbs) %>% + + # The columns contain the values that we specified in the experiment as + # integers. However, we need to tell R that those values are factors. So we + # apply to those columns the `as.factor()` function: + mutate(cbs = as.factor(cbs)) %>% + mutate(rbs = as.factor(rbs)) %>% + + # The same for the unit (which is the hash that nix has given to each unit) + mutate(unit = as.factor(unit)) %>% + + # Then, we can group our dataset by each unit. This will always work + # independently of the variables that vary from unit to unit. + group_by(unit) %>% + + # And compute some metrics which are applied to each group. For example we + # compute the median time within the runs of a unit: + mutate(median.time = median(time)) %>% + mutate(normalized.time = time / median.time - 1) %>% + mutate(log.median.time = log(median.time)) %>% + + # Then, we remove the grouping. This step is very important, otherwise the + # plotting functions get confused: + ungroup() + + +# These constants will be used when creating the plots. We use high quality +# images with 300 dots per inch and 5 x 5 inches of size by default. +dpi = 300 +h = 5 +w = 5 + + +# --------------------------------------------------------------------- + + +# We plot the median time (of each unit) as we vary the block size. As we vary +# both the cbs and rbs, we plot cbs while fixing rbs at a time. +p = ggplot(df, aes(x=cbs, y=median.time, color=rbs)) + + # We add a point to the median + geom_point() + + + # We also add the lines to connect the points. We need to specify which + # variable will do the grouping, otherwise we will have one line per point. + geom_line(aes(group=rbs)) + + + # The bw theme is recommended for publications + theme_bw() + + + # Here we add the title and the labels of the axes + labs(x="cbs", y="Median time (s)", title="Heat granularity: median time", + subtitle=input_file) + + + # And set the subtitle font size a bit smaller, so it fits nicely + theme(plot.subtitle=element_text(size=8)) + +# Then, we save the plot both in png and pdf +ggsave("median.time.png", plot=p, width=w, height=h, dpi=dpi) +ggsave("median.time.pdf", plot=p, width=w, height=h, dpi=dpi) + + +# --------------------------------------------------------------------- + + +# Another interesting plot is the normalized time, which shows the variance of +# the execution times, and can be used to find problems: +p = ggplot(df, aes(x=cbs, y=normalized.time)) + + + # The boxplots are useful to identify outliers and problems with the + # distribution of time + geom_boxplot() + + + # We add a line to mark the 1% limit above and below the median + geom_hline(yintercept=c(-0.01, 0.01), linetype="dashed", color="red") + + + # We split the plot into subplots, one for each value of the rbs column + facet_wrap(~ rbs) + + + # The bw theme is recommended for publications + theme_bw() + + + # Here we add the title and the labels of the axes + labs(x="cbs", y="Normalized time", title="Heat granularity: normalized time", + subtitle=input_file) + + + # And set the subtitle font size a bit smaller, so it fits nicely + theme(plot.subtitle=element_text(size=8)) + +# Then, we save the plot both in png and pdf +ggsave("normalized.time.png", plot=p, width=w, height=h, dpi=dpi) +ggsave("normalized.time.pdf", plot=p, width=w, height=h, dpi=dpi) + + +# --------------------------------------------------------------------- + + +# We plot the time of each run as we vary the block size +p = ggplot(df, aes(x=cbs, y=time, color=rbs)) + + + # We add a points (scatter plot) using circles (shape=21) a bit larger + # than the default (size=3) + geom_point(shape=21, size=3) + + + # The bw theme is recommended for publications + theme_bw() + + + # Here we add the title and the labels of the axes + labs(x="cbs", y="Time (s)", title="Heat granularity: time", + subtitle=input_file) + + + # And set the subtitle font size a bit smaller, so it fits nicely + theme(plot.subtitle=element_text(size=8)) + +# Then, we save the plot both in png and pdf +ggsave("time.png", plot=p, width=w, height=h, dpi=dpi) +ggsave("time.pdf", plot=p, width=w, height=h, dpi=dpi) + + +# --------------------------------------------------------------------- + + +# We can also plot both cbs and rbs in each dimension by mapping the time with a +# color. The `fill` argument instruct R to use the `median.time` as color +p = ggplot(df, aes(x=cbs, y=rbs, fill=median.time)) + + + # Then we use the geom_raster method to paint rectangles filled with color + geom_raster() + + + # The colors are set using the viridis package, using the plasma palete. Those + # colors are designed to be safe for color impaired people and also when + # converting the figures to grayscale. + scale_fill_viridis(option="plasma") + + + # We also force each tile to be an square + coord_fixed() + + + # The bw theme is recommended for publications + theme_bw() + + + # Here we add the title and the labels of the axes + labs(x="cbs", y="rbs", title="Heat granularity: time", + subtitle=input_file) + + + # And set the subtitle font size a bit smaller, so it fits nicely + theme(plot.subtitle=element_text(size=8)) + +# Then, we save the plot both in png and pdf +ggsave("time.heatmap.png", plot=p, width=w, height=h, dpi=dpi) +ggsave("time.heatmap.pdf", plot=p, width=w, height=h, dpi=dpi) diff --git a/garlic/fig/index.nix b/garlic/fig/index.nix index 3219ae8..1b370ae 100644 --- a/garlic/fig/index.nix +++ b/garlic/fig/index.nix @@ -74,4 +74,8 @@ in "osu/bwShm" = osu.bwShm; "heat/cache" = heat.cache; }; + + examples = with exp.examples; { + granularity = stdPlot ./examples/granularity.R [ granularity ]; + }; } From 74cd3d4fbc0cbbde47014045ef7f014f2e528efb Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 12 Mar 2021 19:53:24 +0100 Subject: [PATCH 551/987] rplot: fix fontconfig warning --- garlic/pp/rplot.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/garlic/pp/rplot.nix b/garlic/pp/rplot.nix index 19b092d..262e6c4 100644 --- a/garlic/pp/rplot.nix +++ b/garlic/pp/rplot.nix @@ -2,6 +2,7 @@ stdenv , rWrapper , rPackages +, fontconfig }: { @@ -26,6 +27,7 @@ in stdenv.mkDerivation { phases = [ "installPhase" ]; installPhase = '' + export FONTCONFIG_PATH=${fontconfig.out}/etc/fonts mkdir -p $out cd $out ln -s ${dataset} input From 9c8282362abd3115f2fc0ace63f2a4545309b038 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 19 Mar 2021 11:39:58 +0100 Subject: [PATCH 552/987] cn6: use install target from the Makefile The PREFIX must be set both at build and install time. --- bsc/cn6/default.nix | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/bsc/cn6/default.nix b/bsc/cn6/default.nix index d9a62fd..941e4e1 100644 --- a/bsc/cn6/default.nix +++ b/bsc/cn6/default.nix @@ -20,16 +20,5 @@ stdenv.mkDerivation rec { ref = "master"; }; - # Fix the search path - configurePhase = '' - sed -i "s@^PRV_LIB_PATH=.*@PRV_LIB_PATH=$out/lib/nanos6@" Makefile - ''; - - installPhase = '' - mkdir -p $out/bin - cp cn6 dur $out/bin - - mkdir -p $out/lib/nanos6 - cp prv.so $out/lib/nanos6/ - ''; + makeFlags = [ "PREFIX=$(out)" ]; } From 87fa3bb336b3baafa0ed3e922a27e6e8abdc8f89 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 19 Mar 2021 16:37:31 +0100 Subject: [PATCH 553/987] sbatch: assert types to avoid silent parse errors --- NOISE | 13 +++++++++++++ garlic/stages/sbatch.nix | 19 ++++++++++++++++++- 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/NOISE b/NOISE index ccc460c..32cda73 100644 --- a/NOISE +++ b/NOISE @@ -120,5 +120,18 @@ ABSTRACT we build within Nix, they will be copied with the current data and consequently not updated during the Nix compilation process. +1.9 Sbatch silently fails on parsing + + When submitting a job with a wrong specification in MN4 with SLURM + 17.11.9-2, for example this bogus line: + + #SBATCH --nodes=1 2 + + It silently fails to parse the options, falling back to the defaults, + without any error. + + We have improved our checking to detect bogus options passed to SLURM, + so we prevent this problem from happening. + /* vim: set ts=2 sw=2 tw=72 fo=watqc expandtab spell autoindent: */ diff --git a/garlic/stages/sbatch.nix b/garlic/stages/sbatch.nix index d088807..b32334b 100644 --- a/garlic/stages/sbatch.nix +++ b/garlic/stages/sbatch.nix @@ -22,7 +22,6 @@ , time ? null , output ? "stdout.log" , error ? "stderr.log" -, contiguous ? null , extra ? null , acctgFreq ? null }: @@ -30,6 +29,24 @@ with stdenv.lib; with garlicTools; +# sbatch fails silently if we pass garbage, so we assert the types here to avoid +# sending `nodes = [ 1 2 ]` by mistake. +assert (jobName != null) -> isString jobName; +assert (chdir != null) -> isString chdir; +assert (nixPrefix != null) -> isString nixPrefix; +assert (ntasks != null) -> isInt ntasks; +assert (ntasksPerNode != null) -> isInt ntasksPerNode; +assert (ntasksPerSocket != null) -> isInt ntasksPerSocket; +assert (cpusPerTask != null) -> isInt cpusPerTask; +assert (nodes != null) -> isInt nodes; +assert (exclusive != null) -> isBool exclusive; +assert (qos != null) -> isString qos; +assert (reservation != null) -> isString reservation; +assert (time != null) -> isString time; +assert (output != null) -> isString output; +assert (error != null) -> isString error; +assert (extra != null) -> isString extra; + let sbatchOpt = name: value: optionalString (value!=null) From 46f7add84ce5e54d405ef0cf8bc6814c3e8e9d35 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 22 Mar 2021 18:43:01 +0100 Subject: [PATCH 554/987] garlicd: use head instead of the read builtin It seems that bash is unable to propagate the SIGINT while reading from the FIFO. This fixes the anoying ^C^C^C problems found when running garlicd. --- garlic/garlicd/garlicd | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/garlic/garlicd/garlicd b/garlic/garlicd/garlicd index 4dfb8ed..cc67089 100755 --- a/garlic/garlicd/garlicd +++ b/garlic/garlicd/garlicd @@ -47,7 +47,7 @@ done while true; do msg "Waiting for experiments ..." - read -r tre < "$run" + tre=$(head -1 "$run") msg "Attempting to run: $tre" msg "Copying files to MN4..." @@ -65,7 +65,7 @@ while true; do msg "Waiting for nix to finish the build..." - read -r tre2 < "$wipe" + tre2=$(head -1 "$wipe") if [ "$tre" != "$tre2" ]; then msg "error: trebuchet mismatch" exit 1 From 6c0f4ec1b3e128b773cf04277cf911dbb4f1cad2 Mon Sep 17 00:00:00 2001 From: Pedro Martinez Date: Mon, 22 Feb 2021 20:47:26 +0100 Subject: [PATCH 555/987] creams: add granularity experiments --- garlic/exp/creams/gran+node1.nix | 100 ++++++++++++++++++++++++++++++ garlic/exp/creams/gran+node16.nix | 98 +++++++++++++++++++++++++++++ garlic/exp/index.nix | 4 ++ 3 files changed, 202 insertions(+) create mode 100644 garlic/exp/creams/gran+node1.nix create mode 100644 garlic/exp/creams/gran+node16.nix diff --git a/garlic/exp/creams/gran+node1.nix b/garlic/exp/creams/gran+node1.nix new file mode 100644 index 0000000..dd4a0d5 --- /dev/null +++ b/garlic/exp/creams/gran+node1.nix @@ -0,0 +1,100 @@ +{ + stdenv +, stdexp +, bsc +, targetMachine +, stages +}: + +with stdenv.lib; + +let + # Initial variable configuration + varConf = { + input = [ + { nodes=1 ; nprocz=2 ; granul=256; time= "02:00:00"; } + { nodes=1 ; nprocz=2 ; granul=128; time= "02:00:00"; } + { nodes=1 ; nprocz=2 ; granul=64; time= "02:00:00"; } + { nodes=1 ; nprocz=2 ; granul=37; time= "02:00:00"; } + { nodes=1 ; nprocz=2 ; granul=32; time= "02:00:00"; } + { nodes=1 ; nprocz=2 ; granul=16; time= "02:00:00"; } + { nodes=1 ; nprocz=2 ; granul= 9; time= "02:00:00"; } + { nodes=1 ; nprocz=2 ; granul= 5; time= "02:00:00"; } + { nodes=1 ; nprocz=2 ; granul= 4; time= "02:00:00"; } + { nodes=1 ; nprocz=2 ; granul= 2; time= "02:00:00"; } + { nodes=1 ; nprocz=2 ; granul= 1; time= "02:00:00"; } + ]; + + gitBranch = [ + "garlic/mpi+send+omp+fork" + "garlic/mpi+send+oss+task" + "garlic/mpi+isend+oss+task" + "garlic/tampi+isend+oss+task" + ]; + }; + + # Generate the complete configuration for each unit + genConf = with bsc; c: targetMachine.config // rec { + expName = "creams-gran-node1"; + unitName = "${expName}-${toString nodes}-${gitBranch}"; + inherit (targetMachine.config) hw; + # Options for creams + cc = icc; + mpi = impi; + inherit (c.input) granul; + inherit (c) gitBranch; + nprocz = ntasksPerNode * nodes; + + # Repeat the execution of each unit 30 times + loops = 30; + + # Resources + qos = "debug"; + ntasksPerNode = hw.socketsPerNode; + cpusPerTask = hw.cpusPerSocket; + inherit (c.input) time nodes; + jobName = unitName; + }; + + # Compute the array of configurations + configs = stdexp.buildConfigs { + inherit varConf genConf; + }; + + # Use nanos6 with regions + nanos6Env = {nextStage, conf, ...}: with conf; stages.exec { + inherit nextStage; + env = '' + export NANOS6_CONFIG_OVERRIDE="version.dependencies=regions" + ''; + }; + + # Custom stage to copy the creams input dataset + copyInput = {nextStage, conf, ...}: + let + input = bsc.garlic.apps.creamsInput.override { + inherit (conf) gitBranch granul nprocz; + }; + in + stages.exec { + inherit nextStage; + env = '' + cp -r ${input}/SodTubeBenchmark/* . + chmod +w -R . + ''; + }; + + # Creams program + creams = {nextStage, conf, ...}: with conf; + let + customPkgs = stdexp.replaceMpi conf.mpi; + in + customPkgs.apps.creams.override { + inherit cc mpi gitBranch; + }; + + pipeline = stdexp.stdPipeline ++ [ nanos6Env copyInput creams ]; + +in + + stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/creams/gran+node16.nix b/garlic/exp/creams/gran+node16.nix new file mode 100644 index 0000000..16d0471 --- /dev/null +++ b/garlic/exp/creams/gran+node16.nix @@ -0,0 +1,98 @@ +{ + stdenv +, stdexp +, bsc +, targetMachine +, stages +}: + +with stdenv.lib; + +let + # Initial variable configuration + varConf = { + input = [ + { nodes=16 ; nprocz=32 ; granul=128; time= "02:00:00"; } + { nodes=16 ; nprocz=32 ; granul=64; time= "02:00:00"; } + { nodes=16 ; nprocz=32 ; granul=32; time= "02:00:00"; } + { nodes=16 ; nprocz=32 ; granul=16; time= "02:00:00"; } + { nodes=16 ; nprocz=32 ; granul= 9; time= "02:00:00"; } + { nodes=16 ; nprocz=32 ; granul= 5; time= "02:00:00"; } + { nodes=16 ; nprocz=32 ; granul= 4; time= "02:00:00"; } + { nodes=16 ; nprocz=32 ; granul= 2; time= "02:00:00"; } + { nodes=16 ; nprocz=32 ; granul= 1; time= "02:00:00"; } + ]; + + gitBranch = [ + "garlic/mpi+send+omp+fork" + "garlic/mpi+send+oss+task" + "garlic/mpi+isend+oss+task" + "garlic/tampi+isend+oss+task" + ]; + }; + + # Generate the complete configuration for each unit + genConf = with bsc; c: targetMachine.config // rec { + expName = "creams-gran-node16"; + unitName = "${expName}-${toString nodes}-${gitBranch}"; + inherit (targetMachine.config) hw; + # Options for creams + cc = icc; + mpi = impi; + inherit (c.input) granul; + inherit (c) gitBranch; + nprocz = ntasksPerNode * nodes; + + # Repeat the execution of each unit 30 times + loops = 30; + + # Resources + qos = "debug"; + ntasksPerNode = hw.socketsPerNode; + cpusPerTask = hw.cpusPerSocket; + inherit (c.input) time nodes; + jobName = unitName; + }; + + # Compute the array of configurations + configs = stdexp.buildConfigs { + inherit varConf genConf; + }; + + # Use nanos6 with regions + nanos6Env = {nextStage, conf, ...}: with conf; stages.exec { + inherit nextStage; + env = '' + export NANOS6_CONFIG_OVERRIDE="version.dependencies=regions" + ''; + }; + + # Custom stage to copy the creams input dataset + copyInput = {nextStage, conf, ...}: + let + input = bsc.garlic.apps.creamsInput.override { + inherit (conf) gitBranch granul nprocz; + }; + in + stages.exec { + inherit nextStage; + env = '' + cp -r ${input}/SodTubeBenchmark/* . + chmod +w -R . + ''; + }; + + # Creams program + creams = {nextStage, conf, ...}: with conf; + let + customPkgs = stdexp.replaceMpi conf.mpi; + in + customPkgs.apps.creams.override { + inherit cc mpi gitBranch; + }; + + pipeline = stdexp.stdPipeline ++ [ nanos6Env copyInput creams ]; + +in + + stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/index.nix b/garlic/exp/index.nix index a90daa0..6b93c92 100644 --- a/garlic/exp/index.nix +++ b/garlic/exp/index.nix @@ -41,6 +41,10 @@ pure = callPackage ./creams/ss+pure.nix { }; hybrid = callPackage ./creams/ss+hybrid.nix { }; }; + gran = { + pure = callPackage ./creams/gran+node1.nix { }; + hybrid = callPackage ./creams/gran+node16.nix { }; + }; }; hpcg = rec { From 938246322f3327076cf3e366988b1abfa348f42c Mon Sep 17 00:00:00 2001 From: Pedro Martinez Date: Wed, 24 Feb 2021 15:31:13 +0100 Subject: [PATCH 556/987] creams: add OpenMP branches --- garlic/exp/creams/gran+node1.nix | 2 ++ garlic/exp/creams/gran+node16.nix | 2 ++ garlic/exp/creams/ss+hybrid.nix | 2 ++ 3 files changed, 6 insertions(+) diff --git a/garlic/exp/creams/gran+node1.nix b/garlic/exp/creams/gran+node1.nix index dd4a0d5..f874f36 100644 --- a/garlic/exp/creams/gran+node1.nix +++ b/garlic/exp/creams/gran+node1.nix @@ -27,7 +27,9 @@ let gitBranch = [ "garlic/mpi+send+omp+fork" + "garlic/mpi+send+omp+task" "garlic/mpi+send+oss+task" + "garlic/mpi+isend+omp+task" "garlic/mpi+isend+oss+task" "garlic/tampi+isend+oss+task" ]; diff --git a/garlic/exp/creams/gran+node16.nix b/garlic/exp/creams/gran+node16.nix index 16d0471..a0b794c 100644 --- a/garlic/exp/creams/gran+node16.nix +++ b/garlic/exp/creams/gran+node16.nix @@ -25,7 +25,9 @@ let gitBranch = [ "garlic/mpi+send+omp+fork" + "garlic/mpi+send+omp+task" "garlic/mpi+send+oss+task" + "garlic/mpi+isend+omp+task" "garlic/mpi+isend+oss+task" "garlic/tampi+isend+oss+task" ]; diff --git a/garlic/exp/creams/ss+hybrid.nix b/garlic/exp/creams/ss+hybrid.nix index e10071e..15fdb72 100644 --- a/garlic/exp/creams/ss+hybrid.nix +++ b/garlic/exp/creams/ss+hybrid.nix @@ -21,7 +21,9 @@ let gitBranch = [ "garlic/mpi+send+omp+fork" + "garlic/mpi+send+omp+task" "garlic/mpi+send+oss+task" + "garlic/mpi+isend+omp+task" "garlic/mpi+isend+oss+task" "garlic/tampi+isend+oss+task" ]; From 1aa0e77157397374670de40462cf116e49e21693 Mon Sep 17 00:00:00 2001 From: Pedro Martinez Date: Fri, 26 Feb 2021 09:10:26 +0100 Subject: [PATCH 557/987] creams: avoid race condition Ensure only one Slurm process performs environment operations --- garlic/exp/creams/gran+node1.nix | 7 +++++-- garlic/exp/creams/gran+node16.nix | 7 +++++-- garlic/exp/creams/ss+hybrid.nix | 7 +++++-- garlic/exp/creams/ss+pure.nix | 7 +++++-- 4 files changed, 20 insertions(+), 8 deletions(-) diff --git a/garlic/exp/creams/gran+node1.nix b/garlic/exp/creams/gran+node1.nix index f874f36..075d631 100644 --- a/garlic/exp/creams/gran+node1.nix +++ b/garlic/exp/creams/gran+node1.nix @@ -81,8 +81,11 @@ let stages.exec { inherit nextStage; env = '' - cp -r ${input}/SodTubeBenchmark/* . - chmod +w -R . + # Only the MPI rank 0 will copy the files + if [ $SLURM_PROCID == 0 ]; then + cp -fr ${input}/SodTubeBenchmark/* . + chmod +w -R . + fi ''; }; diff --git a/garlic/exp/creams/gran+node16.nix b/garlic/exp/creams/gran+node16.nix index a0b794c..942b474 100644 --- a/garlic/exp/creams/gran+node16.nix +++ b/garlic/exp/creams/gran+node16.nix @@ -79,8 +79,11 @@ let stages.exec { inherit nextStage; env = '' - cp -r ${input}/SodTubeBenchmark/* . - chmod +w -R . + # Only the MPI rank 0 will copy the files + if [ $SLURM_PROCID == 0 ]; then + cp -fr ${input}/SodTubeBenchmark/* . + chmod +w -R . + fi ''; }; diff --git a/garlic/exp/creams/ss+hybrid.nix b/garlic/exp/creams/ss+hybrid.nix index 15fdb72..0b39d36 100644 --- a/garlic/exp/creams/ss+hybrid.nix +++ b/garlic/exp/creams/ss+hybrid.nix @@ -75,8 +75,11 @@ let stages.exec { inherit nextStage; env = '' - cp -r ${input}/SodTubeBenchmark/* . - chmod +w -R . + # Only the MPI rank 0 will copy the files + if [ $SLURM_PROCID == 0 ]; then + cp -fr ${input}/SodTubeBenchmark/* . + chmod +w -R . + fi ''; }; diff --git a/garlic/exp/creams/ss+pure.nix b/garlic/exp/creams/ss+pure.nix index 75bcf5f..244ccd2 100644 --- a/garlic/exp/creams/ss+pure.nix +++ b/garlic/exp/creams/ss+pure.nix @@ -66,8 +66,11 @@ let stages.exec { inherit nextStage; env = '' - cp -r ${input}/SodTubeBenchmark/* . - chmod +w -R . + # Only the MPI rank 0 will copy the files + if [ $SLURM_PROCID == 0 ]; then + cp -fr ${input}/SodTubeBenchmark/* . + chmod +w -R . + fi ''; }; From 8445fb0928417aef7d978e3fb2ee1501152e9a15 Mon Sep 17 00:00:00 2001 From: Pedro Martinez Date: Mon, 1 Mar 2021 09:39:57 +0100 Subject: [PATCH 558/987] creams: run the cp command in one process only --- garlic/exp/creams/gran+node1.nix | 48 +++++++++++----------- garlic/exp/creams/gran+node16.nix | 48 +++++++++++----------- garlic/exp/creams/ss+hybrid.nix | 52 ++++++++++++------------ garlic/exp/creams/ss+pure.nix | 66 ++++++++++++++++--------------- 4 files changed, 109 insertions(+), 105 deletions(-) diff --git a/garlic/exp/creams/gran+node1.nix b/garlic/exp/creams/gran+node1.nix index 075d631..35a2c1c 100644 --- a/garlic/exp/creams/gran+node1.nix +++ b/garlic/exp/creams/gran+node1.nix @@ -38,24 +38,24 @@ let # Generate the complete configuration for each unit genConf = with bsc; c: targetMachine.config // rec { expName = "creams-gran-node1"; - unitName = "${expName}-${toString nodes}-${gitBranch}"; inherit (targetMachine.config) hw; # Options for creams cc = icc; mpi = impi; - inherit (c.input) granul; + inherit (c.input) granul time nodes; inherit (c) gitBranch; - nprocz = ntasksPerNode * nodes; + unitName = "${expName}-${toString nodes}-${gitBranch}"; - # Repeat the execution of each unit 30 times - loops = 30; + # Repeat the execution of each unit 10 times + loops = 10; # Resources qos = "debug"; ntasksPerNode = hw.socketsPerNode; cpusPerTask = hw.cpusPerSocket; - inherit (c.input) time nodes; jobName = unitName; + + nprocz = ntasksPerNode * nodes; }; # Compute the array of configurations @@ -63,29 +63,24 @@ let inherit varConf genConf; }; - # Use nanos6 with regions - nanos6Env = {nextStage, conf, ...}: with conf; stages.exec { - inherit nextStage; - env = '' - export NANOS6_CONFIG_OVERRIDE="version.dependencies=regions" - ''; - }; - - # Custom stage to copy the creams input dataset - copyInput = {nextStage, conf, ...}: + # Custom srun stage to copy the creams input dataset + customSrun = {nextStage, conf, ...}: let input = bsc.garlic.apps.creamsInput.override { inherit (conf) gitBranch granul nprocz; }; in - stages.exec { + stages.srun { + # These are part of the stdndard srun stage: + inherit (conf) nixPrefix; inherit nextStage; - env = '' - # Only the MPI rank 0 will copy the files - if [ $SLURM_PROCID == 0 ]; then - cp -fr ${input}/SodTubeBenchmark/* . - chmod +w -R . - fi + cpuBind = "cores,verbose"; + + # Now we add some commands to execute before calling srun. These will + # only run in one rank (the first in the list of allocated nodes) + preSrun = '' + cp -r ${input}/SodTubeBenchmark/* . + chmod +w -R . ''; }; @@ -98,7 +93,12 @@ let inherit cc mpi gitBranch; }; - pipeline = stdexp.stdPipeline ++ [ nanos6Env copyInput creams ]; + pipeline = stdexp.stdPipelineOverride { + overrides = { + # Replace the stdandard srun stage with our own + srun = customSrun; + }; + } ++ [ creams ]; in diff --git a/garlic/exp/creams/gran+node16.nix b/garlic/exp/creams/gran+node16.nix index 942b474..f295c4b 100644 --- a/garlic/exp/creams/gran+node16.nix +++ b/garlic/exp/creams/gran+node16.nix @@ -36,24 +36,24 @@ let # Generate the complete configuration for each unit genConf = with bsc; c: targetMachine.config // rec { expName = "creams-gran-node16"; - unitName = "${expName}-${toString nodes}-${gitBranch}"; inherit (targetMachine.config) hw; # Options for creams cc = icc; mpi = impi; - inherit (c.input) granul; + inherit (c.input) granul time nodes; inherit (c) gitBranch; - nprocz = ntasksPerNode * nodes; + unitName = "${expName}-${toString nodes}-${gitBranch}"; - # Repeat the execution of each unit 30 times - loops = 30; + # Repeat the execution of each unit 10 times + loops = 10; # Resources qos = "debug"; ntasksPerNode = hw.socketsPerNode; cpusPerTask = hw.cpusPerSocket; - inherit (c.input) time nodes; jobName = unitName; + + nprocz = ntasksPerNode * nodes; }; # Compute the array of configurations @@ -61,29 +61,24 @@ let inherit varConf genConf; }; - # Use nanos6 with regions - nanos6Env = {nextStage, conf, ...}: with conf; stages.exec { - inherit nextStage; - env = '' - export NANOS6_CONFIG_OVERRIDE="version.dependencies=regions" - ''; - }; - - # Custom stage to copy the creams input dataset - copyInput = {nextStage, conf, ...}: + # Custom srun stage to copy the creams input dataset + customSrun = {nextStage, conf, ...}: let input = bsc.garlic.apps.creamsInput.override { inherit (conf) gitBranch granul nprocz; }; in - stages.exec { + stages.srun { + # These are part of the stdndard srun stage: + inherit (conf) nixPrefix; inherit nextStage; - env = '' - # Only the MPI rank 0 will copy the files - if [ $SLURM_PROCID == 0 ]; then - cp -fr ${input}/SodTubeBenchmark/* . - chmod +w -R . - fi + cpuBind = "cores,verbose"; + + # Now we add some commands to execute before calling srun. These will + # only run in one rank (the first in the list of allocated nodes) + preSrun = '' + cp -r ${input}/SodTubeBenchmark/* . + chmod +w -R . ''; }; @@ -96,7 +91,12 @@ let inherit cc mpi gitBranch; }; - pipeline = stdexp.stdPipeline ++ [ nanos6Env copyInput creams ]; + pipeline = stdexp.stdPipelineOverride { + overrides = { + # Replace the stdandard srun stage with our own + srun = customSrun; + }; + } ++ [ creams ]; in diff --git a/garlic/exp/creams/ss+hybrid.nix b/garlic/exp/creams/ss+hybrid.nix index 0b39d36..5b20531 100644 --- a/garlic/exp/creams/ss+hybrid.nix +++ b/garlic/exp/creams/ss+hybrid.nix @@ -16,7 +16,7 @@ let { nodes=2 ; nprocz=4 ; granul=19; time= "02:00:00"; } { nodes=4 ; nprocz=8 ; granul=10; time= "02:00:00"; } { nodes=8 ; nprocz=16; granul=9 ; time= "02:00:00"; } - { nodes=16; nprocz=32; granul=9 ; time= "02:00:00"; } + { nodes=16; nprocz=32; granul=9 ; time= "02:00:00"; } ]; gitBranch = [ @@ -31,25 +31,25 @@ let # Generate the complete configuration for each unit genConf = with bsc; c: targetMachine.config // rec { - expName = "creams-ss"; - unitName = "${expName}-${toString nodes}-${gitBranch}"; + expName = "creams-ss-hybrid"; inherit (targetMachine.config) hw; # Options for creams cc = icc; mpi = impi; - inherit (c.input) granul; + inherit (c.input) granul time nodes; inherit (c) gitBranch; - nprocz = ntasksPerNode * nodes; + unitName = "${expName}-${toString nodes}-${gitBranch}"; - # Repeat the execution of each unit 30 times - loops = 30; + # Repeat the execution of each unit 10 times + loops = 10; # Resources qos = "debug"; ntasksPerNode = hw.socketsPerNode; cpusPerTask = hw.cpusPerSocket; - inherit (c.input) time nodes; jobName = unitName; + + nprocz = ntasksPerNode * nodes; }; # Compute the array of configurations @@ -57,29 +57,24 @@ let inherit varConf genConf; }; - # Use nanos6 with regions - nanos6Env = {nextStage, conf, ...}: with conf; stages.exec { - inherit nextStage; - env = '' - export NANOS6_CONFIG_OVERRIDE="version.dependencies=regions" - ''; - }; - - # Custom stage to copy the creams input dataset - copyInput = {nextStage, conf, ...}: + # Custom srun stage to copy the creams input dataset + customSrun = {nextStage, conf, ...}: let input = bsc.garlic.apps.creamsInput.override { inherit (conf) gitBranch granul nprocz; }; in - stages.exec { + stages.srun { + # These are part of the stdndard srun stage: + inherit (conf) nixPrefix; inherit nextStage; - env = '' - # Only the MPI rank 0 will copy the files - if [ $SLURM_PROCID == 0 ]; then - cp -fr ${input}/SodTubeBenchmark/* . - chmod +w -R . - fi + cpuBind = "cores,verbose"; + + # Now we add some commands to execute before calling srun. These will + # only run in one rank (the first in the list of allocated nodes) + preSrun = '' + cp -r ${input}/SodTubeBenchmark/* . + chmod +w -R . ''; }; @@ -92,7 +87,12 @@ let inherit cc mpi gitBranch; }; - pipeline = stdexp.stdPipeline ++ [ nanos6Env copyInput creams ]; + pipeline = stdexp.stdPipelineOverride { + overrides = { + # Replace the stdandard srun stage with our own + srun = customSrun; + }; + } ++ [ creams ]; in diff --git a/garlic/exp/creams/ss+pure.nix b/garlic/exp/creams/ss+pure.nix index 244ccd2..7585576 100644 --- a/garlic/exp/creams/ss+pure.nix +++ b/garlic/exp/creams/ss+pure.nix @@ -12,35 +12,39 @@ let # Initial variable configuration varConf = { input = [ - { time="02:00:00"; nodes=1; } - { time="02:00:00"; nodes=2; } - { time="02:00:00"; nodes=4; } - { time="02:00:00"; nodes=8; } - { time="02:00:00"; nodes=16; } + { nodes=1 ; nprocz=2 ; granul=999999; time= "02:00:00"; } + { nodes=2 ; nprocz=4 ; granul=999999; time= "02:00:00"; } + { nodes=4 ; nprocz=8 ; granul=999999; time= "02:00:00"; } + { nodes=8 ; nprocz=16; granul=999999; time= "02:00:00"; } + { nodes=16; nprocz=32; granul=999999; time= "02:00:00"; } + ]; + + gitBranch = [ + "garlic/mpi+send+seq" ]; }; # Generate the complete configuration for each unit genConf = with bsc; c: targetMachine.config // rec { - expName = "creams-ss"; - unitName = "${expName}-${toString nodes}-${gitBranch}"; + expName = "creams-ss-pure"; inherit (targetMachine.config) hw; # Options for creams cc = icc; mpi = impi; - granul = 0; - gitBranch = "garlic/mpi+send+seq"; - nprocz = ntasksPerNode * nodes; + inherit (c.input) granul time nodes; + inherit (c) gitBranch; + unitName = "${expName}-${toString nodes}-${gitBranch}"; - # Repeat the execution of each unit 30 times - loops = 30; + # Repeat the execution of each unit 10 times + loops = 10; # Resources qos = "debug"; ntasksPerNode = hw.cpusPerNode; cpusPerTask = 1; - inherit (c.input) time nodes; jobName = unitName; + + nprocz = ntasksPerNode * nodes; }; # Compute the array of configurations @@ -48,29 +52,24 @@ let inherit varConf genConf; }; - # Use nanos6 with regions - nanos6Env = {nextStage, conf, ...}: with conf; stages.exec { - inherit nextStage; - env = '' - export NANOS6_CONFIG_OVERRIDE="version.dependencies=regions" - ''; - }; - - # Custom stage to copy the creams input dataset - copyInput = {nextStage, conf, ...}: + # Custom srun stage to copy the creams input dataset + customSrun = {nextStage, conf, ...}: let input = bsc.garlic.apps.creamsInput.override { inherit (conf) gitBranch granul nprocz; }; in - stages.exec { + stages.srun { + # These are part of the stdndard srun stage: + inherit (conf) nixPrefix; inherit nextStage; - env = '' - # Only the MPI rank 0 will copy the files - if [ $SLURM_PROCID == 0 ]; then - cp -fr ${input}/SodTubeBenchmark/* . - chmod +w -R . - fi + cpuBind = "cores,verbose"; + + # Now we add some commands to execute before calling srun. These will + # only run in one rank (the first in the list of allocated nodes) + preSrun = '' + cp -r ${input}/SodTubeBenchmark/* . + chmod +w -R . ''; }; @@ -83,7 +82,12 @@ let inherit cc mpi gitBranch; }; - pipeline = stdexp.stdPipeline ++ [ nanos6Env copyInput creams ]; + pipeline = stdexp.stdPipelineOverride { + overrides = { + # Replace the stdandard srun stage with our own + srun = customSrun; + }; + } ++ [ creams ]; in From 6818b29d02f4d322ad0374e964a61d43122f9f84 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 4 Mar 2021 12:45:29 +0100 Subject: [PATCH 559/987] creams: fix outdated nanos6.toml This temporal fix allows the experiment to ignore the nanos6.toml in the git repository, and only set version.dependencies variable. --- garlic/exp/creams/gran+node16.nix | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/garlic/exp/creams/gran+node16.nix b/garlic/exp/creams/gran+node16.nix index f295c4b..7322175 100644 --- a/garlic/exp/creams/gran+node16.nix +++ b/garlic/exp/creams/gran+node16.nix @@ -79,9 +79,22 @@ let preSrun = '' cp -r ${input}/SodTubeBenchmark/* . chmod +w -R . + rm -f nanos6.toml ''; }; + exec = {nextStage, conf, ...}: with conf; stages.exec { + inherit nextStage; + env = '' + export NANOS6_CONFIG_OVERRIDE="version.dependencies=regions" + ''; + + # Remove restarts as is not needed and is huge + post = '' + rm -rf restarts || true + ''; + }; + # Creams program creams = {nextStage, conf, ...}: with conf; let @@ -96,7 +109,7 @@ let # Replace the stdandard srun stage with our own srun = customSrun; }; - } ++ [ creams ]; + } ++ [ exec creams ]; in From c59f298ae27781f9cbbe52cf65ab481cab2f4a00 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 4 Mar 2021 12:46:42 +0100 Subject: [PATCH 560/987] creams: reduce granularity experiment units --- garlic/exp/creams/gran+node16.nix | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/garlic/exp/creams/gran+node16.nix b/garlic/exp/creams/gran+node16.nix index 7322175..4818dc8 100644 --- a/garlic/exp/creams/gran+node16.nix +++ b/garlic/exp/creams/gran+node16.nix @@ -12,23 +12,23 @@ let # Initial variable configuration varConf = { input = [ - { nodes=16 ; nprocz=32 ; granul=128; time= "02:00:00"; } +# { nodes=16 ; nprocz=32 ; granul=128; time= "02:00:00"; } { nodes=16 ; nprocz=32 ; granul=64; time= "02:00:00"; } { nodes=16 ; nprocz=32 ; granul=32; time= "02:00:00"; } { nodes=16 ; nprocz=32 ; granul=16; time= "02:00:00"; } { nodes=16 ; nprocz=32 ; granul= 9; time= "02:00:00"; } { nodes=16 ; nprocz=32 ; granul= 5; time= "02:00:00"; } { nodes=16 ; nprocz=32 ; granul= 4; time= "02:00:00"; } - { nodes=16 ; nprocz=32 ; granul= 2; time= "02:00:00"; } - { nodes=16 ; nprocz=32 ; granul= 1; time= "02:00:00"; } +# { nodes=16 ; nprocz=32 ; granul= 2; time= "02:00:00"; } +# { nodes=16 ; nprocz=32 ; granul= 1; time= "02:00:00"; } ]; gitBranch = [ - "garlic/mpi+send+omp+fork" - "garlic/mpi+send+omp+task" - "garlic/mpi+send+oss+task" - "garlic/mpi+isend+omp+task" - "garlic/mpi+isend+oss+task" +# "garlic/mpi+send+omp+fork" +# "garlic/mpi+send+omp+task" +# "garlic/mpi+send+oss+task" +# "garlic/mpi+isend+omp+task" +# "garlic/mpi+isend+oss+task" "garlic/tampi+isend+oss+task" ]; }; From 8a81c6bfbac6d8b11c7626e7d2b1bec0c8097929 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 4 Mar 2021 12:53:07 +0100 Subject: [PATCH 561/987] creams: add granularity figure Only the hybrid experiment is used by now --- garlic/fig/creams/gran.R | 71 ++++++++++++++++++++++++++++++++++++++++ garlic/fig/index.nix | 1 + 2 files changed, 72 insertions(+) create mode 100644 garlic/fig/creams/gran.R diff --git a/garlic/fig/creams/gran.R b/garlic/fig/creams/gran.R new file mode 100644 index 0000000..d0d3149 --- /dev/null +++ b/garlic/fig/creams/gran.R @@ -0,0 +1,71 @@ +library(ggplot2) +library(dplyr) +library(scales) +library(jsonlite) + +args=commandArgs(trailingOnly=TRUE) + +# Read the timetable from args[1] +input_file = "input.json" +if (length(args)>0) { input_file = args[1] } + +# Load the dataset in NDJSON format +dataset = jsonlite::stream_in(file(input_file), verbose=FALSE) %>% + jsonlite::flatten() + +# We only need some colums +df = select(dataset, unit, config.nodes, config.gitBranch, + config.granul, time, total_time) %>% + rename(nodes=config.nodes, gitBranch=config.gitBranch, + granul=config.granul) + +df$unit = as.factor(df$unit) +df$nnodes = df$nodes +df$nodes = as.factor(df$nodes) +df$gitBranch = as.factor(df$gitBranch) +df$granul = as.factor(df$granul) + +# Remove the "garlic/" prefix from the gitBranch +levels(df$gitBranch) <- substring((levels(df$gitBranch)), 8) + +# Compute new columns +D=group_by(df, unit) %>% + mutate(tnorm = time / median(time) - 1) %>% + mutate(bad = ifelse(max(abs(tnorm)) >= 0.01, 1, 0)) %>% + mutate(variability = ifelse(bad > 0, "large", "ok")) %>% + mutate(mtime = median(time)) %>% + mutate(nmtime = mtime*nnodes) %>% + mutate(ntime = time*nnodes) %>% + ungroup() %>% + mutate(min_nmtime = min(nmtime)) %>% + mutate(rnmtime = nmtime / min_nmtime) %>% + mutate(rntime = ntime / min_nmtime) %>% + mutate(rmeff = 1.0 / rnmtime) %>% + mutate(reff = 1.0 / rntime) %>% + group_by(gitBranch) %>% + mutate(tmax = max(mtime)) %>% + mutate(speedup=tmax/time) %>% + mutate(eff=speedup/nnodes) %>% + mutate(mspeedup=tmax/mtime) %>% + mutate(meff=mspeedup/nnodes) %>% + ungroup() + +D$bad = as.factor(D$bad > 0) +D$variability = as.factor(D$variability) + +ppi=300 +h=5 +w=5 + +png("time.png", width=w*1.5*ppi, height=h*ppi, res=ppi) +p = ggplot(D, aes(x=granul, y=mtime, linetype=gitBranch, shape=nodes)) + + geom_line(aes(group=interaction(nodes, gitBranch))) + + geom_point(aes(y=time)) + + scale_y_continuous(trans=log2_trans()) + + labs(x="Granularity", y="Time (s)", + title="Creams granularity", + subtitle=input_file) + + theme_bw() + + theme(plot.subtitle=element_text(size=8)) +print(p) +dev.off() diff --git a/garlic/fig/index.nix b/garlic/fig/index.nix index 1b370ae..c51d328 100644 --- a/garlic/fig/index.nix +++ b/garlic/fig/index.nix @@ -53,6 +53,7 @@ in creams = with exp.creams; { ss = stdPlot ./creams/ss.R [ ss.hybrid ss.pure ]; + gran = stdPlot ./creams/gran.R [ gran.hybrid ]; }; osu = with exp.osu; { From a55019c6ef4d5b1acb5d70f85e203604197cd86c Mon Sep 17 00:00:00 2001 From: Pedro Martinez Date: Fri, 5 Mar 2021 14:46:48 +0100 Subject: [PATCH 562/987] creams: add more nodes for granularity experiments --- garlic/exp/creams/gran+node1.nix | 17 ++++- garlic/exp/creams/gran+node16.nix | 16 ++--- garlic/exp/creams/gran+node2.nix | 116 ++++++++++++++++++++++++++++++ garlic/exp/creams/gran+node4.nix | 116 ++++++++++++++++++++++++++++++ garlic/exp/creams/gran+node8.nix | 116 ++++++++++++++++++++++++++++++ garlic/exp/creams/ss+hybrid.nix | 15 +++- garlic/exp/creams/ss+pure.nix | 15 +++- garlic/exp/index.nix | 7 +- garlic/fig/index.nix | 2 +- 9 files changed, 404 insertions(+), 16 deletions(-) create mode 100644 garlic/exp/creams/gran+node2.nix create mode 100644 garlic/exp/creams/gran+node4.nix create mode 100644 garlic/exp/creams/gran+node8.nix diff --git a/garlic/exp/creams/gran+node1.nix b/garlic/exp/creams/gran+node1.nix index 35a2c1c..5bd2726 100644 --- a/garlic/exp/creams/gran+node1.nix +++ b/garlic/exp/creams/gran+node1.nix @@ -21,8 +21,6 @@ let { nodes=1 ; nprocz=2 ; granul= 9; time= "02:00:00"; } { nodes=1 ; nprocz=2 ; granul= 5; time= "02:00:00"; } { nodes=1 ; nprocz=2 ; granul= 4; time= "02:00:00"; } - { nodes=1 ; nprocz=2 ; granul= 2; time= "02:00:00"; } - { nodes=1 ; nprocz=2 ; granul= 1; time= "02:00:00"; } ]; gitBranch = [ @@ -81,9 +79,22 @@ let preSrun = '' cp -r ${input}/SodTubeBenchmark/* . chmod +w -R . + rm -f nanos6.toml ''; }; + exec = {nextStage, conf, ...}: with conf; stages.exec { + inherit nextStage; + env = '' + export NANOS6_CONFIG_OVERRIDE="version.dependencies=regions" + ''; + + # Remove restarts as is not needed and is huge + post = '' + rm -rf restarts || true + ''; + }; + # Creams program creams = {nextStage, conf, ...}: with conf; let @@ -98,7 +109,7 @@ let # Replace the stdandard srun stage with our own srun = customSrun; }; - } ++ [ creams ]; + } ++ [ exec creams ]; in diff --git a/garlic/exp/creams/gran+node16.nix b/garlic/exp/creams/gran+node16.nix index 4818dc8..7322175 100644 --- a/garlic/exp/creams/gran+node16.nix +++ b/garlic/exp/creams/gran+node16.nix @@ -12,23 +12,23 @@ let # Initial variable configuration varConf = { input = [ -# { nodes=16 ; nprocz=32 ; granul=128; time= "02:00:00"; } + { nodes=16 ; nprocz=32 ; granul=128; time= "02:00:00"; } { nodes=16 ; nprocz=32 ; granul=64; time= "02:00:00"; } { nodes=16 ; nprocz=32 ; granul=32; time= "02:00:00"; } { nodes=16 ; nprocz=32 ; granul=16; time= "02:00:00"; } { nodes=16 ; nprocz=32 ; granul= 9; time= "02:00:00"; } { nodes=16 ; nprocz=32 ; granul= 5; time= "02:00:00"; } { nodes=16 ; nprocz=32 ; granul= 4; time= "02:00:00"; } -# { nodes=16 ; nprocz=32 ; granul= 2; time= "02:00:00"; } -# { nodes=16 ; nprocz=32 ; granul= 1; time= "02:00:00"; } + { nodes=16 ; nprocz=32 ; granul= 2; time= "02:00:00"; } + { nodes=16 ; nprocz=32 ; granul= 1; time= "02:00:00"; } ]; gitBranch = [ -# "garlic/mpi+send+omp+fork" -# "garlic/mpi+send+omp+task" -# "garlic/mpi+send+oss+task" -# "garlic/mpi+isend+omp+task" -# "garlic/mpi+isend+oss+task" + "garlic/mpi+send+omp+fork" + "garlic/mpi+send+omp+task" + "garlic/mpi+send+oss+task" + "garlic/mpi+isend+omp+task" + "garlic/mpi+isend+oss+task" "garlic/tampi+isend+oss+task" ]; }; diff --git a/garlic/exp/creams/gran+node2.nix b/garlic/exp/creams/gran+node2.nix new file mode 100644 index 0000000..0e022f0 --- /dev/null +++ b/garlic/exp/creams/gran+node2.nix @@ -0,0 +1,116 @@ +{ + stdenv +, stdexp +, bsc +, targetMachine +, stages +}: + +with stdenv.lib; + +let + # Initial variable configuration + varConf = { + input = [ + { nodes=2 ; nprocz=4 ; granul=256; time= "02:00:00"; } + { nodes=2 ; nprocz=4 ; granul=128; time= "02:00:00"; } + { nodes=2 ; nprocz=4 ; granul=64; time= "02:00:00"; } + { nodes=2 ; nprocz=4 ; granul=37; time= "02:00:00"; } + { nodes=2 ; nprocz=4 ; granul=32; time= "02:00:00"; } + { nodes=2 ; nprocz=4 ; granul=16; time= "02:00:00"; } + { nodes=2 ; nprocz=4 ; granul= 9; time= "02:00:00"; } + { nodes=2 ; nprocz=4 ; granul= 5; time= "02:00:00"; } + { nodes=2 ; nprocz=4 ; granul= 4; time= "02:00:00"; } + ]; + + gitBranch = [ + "garlic/mpi+send+omp+fork" + "garlic/mpi+send+omp+task" + "garlic/mpi+send+oss+task" + "garlic/mpi+isend+omp+task" + "garlic/mpi+isend+oss+task" + "garlic/tampi+isend+oss+task" + ]; + }; + + # Generate the complete configuration for each unit + genConf = with bsc; c: targetMachine.config // rec { + expName = "creams-gran-node2"; + inherit (targetMachine.config) hw; + # Options for creams + cc = icc; + mpi = impi; + inherit (c.input) granul time nodes; + inherit (c) gitBranch; + unitName = "${expName}-${toString nodes}-${gitBranch}"; + + # Repeat the execution of each unit 10 times + loops = 10; + + # Resources + qos = "debug"; + ntasksPerNode = hw.socketsPerNode; + cpusPerTask = hw.cpusPerSocket; + jobName = unitName; + + nprocz = ntasksPerNode * nodes; + }; + + # Compute the array of configurations + configs = stdexp.buildConfigs { + inherit varConf genConf; + }; + + # Custom srun stage to copy the creams input dataset + customSrun = {nextStage, conf, ...}: + let + input = bsc.garlic.apps.creamsInput.override { + inherit (conf) gitBranch granul nprocz; + }; + in + stages.srun { + # These are part of the stdndard srun stage: + inherit (conf) nixPrefix; + inherit nextStage; + cpuBind = "cores,verbose"; + + # Now we add some commands to execute before calling srun. These will + # only run in one rank (the first in the list of allocated nodes) + preSrun = '' + cp -r ${input}/SodTubeBenchmark/* . + chmod +w -R . + rm -f nanos6.toml + ''; + }; + + exec = {nextStage, conf, ...}: with conf; stages.exec { + inherit nextStage; + env = '' + export NANOS6_CONFIG_OVERRIDE="version.dependencies=regions" + ''; + + # Remove restarts as is not needed and is huge + post = '' + rm -rf restarts || true + ''; + }; + + # Creams program + creams = {nextStage, conf, ...}: with conf; + let + customPkgs = stdexp.replaceMpi conf.mpi; + in + customPkgs.apps.creams.override { + inherit cc mpi gitBranch; + }; + + pipeline = stdexp.stdPipelineOverride { + overrides = { + # Replace the stdandard srun stage with our own + srun = customSrun; + }; + } ++ [ exec creams ]; + +in + + stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/creams/gran+node4.nix b/garlic/exp/creams/gran+node4.nix new file mode 100644 index 0000000..628ae1d --- /dev/null +++ b/garlic/exp/creams/gran+node4.nix @@ -0,0 +1,116 @@ +{ + stdenv +, stdexp +, bsc +, targetMachine +, stages +}: + +with stdenv.lib; + +let + # Initial variable configuration + varConf = { + input = [ + { nodes=4 ; nprocz=8 ; granul=64; time= "02:00:00"; } + { nodes=4 ; nprocz=8 ; granul=37; time= "02:00:00"; } + { nodes=4 ; nprocz=8 ; granul=32; time= "02:00:00"; } + { nodes=4 ; nprocz=8 ; granul=16; time= "02:00:00"; } + { nodes=4 ; nprocz=8 ; granul= 9; time= "02:00:00"; } + { nodes=4 ; nprocz=8 ; granul= 5; time= "02:00:00"; } + { nodes=4 ; nprocz=4 ; granul= 4; time= "02:00:00"; } + { nodes=4 ; nprocz=8 ; granul= 2; time= "02:00:00"; } + { nodes=4 ; nprocz=8 ; granul= 1; time= "02:00:00"; } + ]; + + gitBranch = [ + "garlic/mpi+send+omp+fork" + "garlic/mpi+send+omp+task" + "garlic/mpi+send+oss+task" + "garlic/mpi+isend+omp+task" + "garlic/mpi+isend+oss+task" + "garlic/tampi+isend+oss+task" + ]; + }; + + # Generate the complete configuration for each unit + genConf = with bsc; c: targetMachine.config // rec { + expName = "creams-gran-node4"; + inherit (targetMachine.config) hw; + # Options for creams + cc = icc; + mpi = impi; + inherit (c.input) granul time nodes; + inherit (c) gitBranch; + unitName = "${expName}-${toString nodes}-${gitBranch}"; + + # Repeat the execution of each unit 10 times + loops = 10; + + # Resources + qos = "debug"; + ntasksPerNode = hw.socketsPerNode; + cpusPerTask = hw.cpusPerSocket; + jobName = unitName; + + nprocz = ntasksPerNode * nodes; + }; + + # Compute the array of configurations + configs = stdexp.buildConfigs { + inherit varConf genConf; + }; + + # Custom srun stage to copy the creams input dataset + customSrun = {nextStage, conf, ...}: + let + input = bsc.garlic.apps.creamsInput.override { + inherit (conf) gitBranch granul nprocz; + }; + in + stages.srun { + # These are part of the stdndard srun stage: + inherit (conf) nixPrefix; + inherit nextStage; + cpuBind = "cores,verbose"; + + # Now we add some commands to execute before calling srun. These will + # only run in one rank (the first in the list of allocated nodes) + preSrun = '' + cp -r ${input}/SodTubeBenchmark/* . + chmod +w -R . + rm -f nanos6.toml + ''; + }; + + exec = {nextStage, conf, ...}: with conf; stages.exec { + inherit nextStage; + env = '' + export NANOS6_CONFIG_OVERRIDE="version.dependencies=regions" + ''; + + # Remove restarts as is not needed and is huge + post = '' + rm -rf restarts || true + ''; + }; + + # Creams program + creams = {nextStage, conf, ...}: with conf; + let + customPkgs = stdexp.replaceMpi conf.mpi; + in + customPkgs.apps.creams.override { + inherit cc mpi gitBranch; + }; + + pipeline = stdexp.stdPipelineOverride { + overrides = { + # Replace the stdandard srun stage with our own + srun = customSrun; + }; + } ++ [ exec creams ]; + +in + + stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/creams/gran+node8.nix b/garlic/exp/creams/gran+node8.nix new file mode 100644 index 0000000..d0fec23 --- /dev/null +++ b/garlic/exp/creams/gran+node8.nix @@ -0,0 +1,116 @@ +{ + stdenv +, stdexp +, bsc +, targetMachine +, stages +}: + +with stdenv.lib; + +let + # Initial variable configuration + varConf = { + input = [ + { nodes=8 ; nprocz=16 ; granul=128; time= "02:00:00"; } + { nodes=8 ; nprocz=16 ; granul=64; time= "02:00:00"; } + { nodes=8 ; nprocz=16 ; granul=32; time= "02:00:00"; } + { nodes=8 ; nprocz=16 ; granul=16; time= "02:00:00"; } + { nodes=8 ; nprocz=16 ; granul= 9; time= "02:00:00"; } + { nodes=8 ; nprocz=16 ; granul= 5; time= "02:00:00"; } + { nodes=8 ; nprocz=16 ; granul= 4; time= "02:00:00"; } + { nodes=8 ; nprocz=16 ; granul= 2; time= "02:00:00"; } + { nodes=8 ; nprocz=16 ; granul= 1; time= "02:00:00"; } + ]; + + gitBranch = [ + "garlic/mpi+send+omp+fork" + "garlic/mpi+send+omp+task" + "garlic/mpi+send+oss+task" + "garlic/mpi+isend+omp+task" + "garlic/mpi+isend+oss+task" + "garlic/tampi+isend+oss+task" + ]; + }; + + # Generate the complete configuration for each unit + genConf = with bsc; c: targetMachine.config // rec { + expName = "creams-gran-node8"; + inherit (targetMachine.config) hw; + # Options for creams + cc = icc; + mpi = impi; + inherit (c.input) granul time nodes; + inherit (c) gitBranch; + unitName = "${expName}-${toString nodes}-${gitBranch}"; + + # Repeat the execution of each unit 10 times + loops = 10; + + # Resources + qos = "debug"; + ntasksPerNode = hw.socketsPerNode; + cpusPerTask = hw.cpusPerSocket; + jobName = unitName; + + nprocz = ntasksPerNode * nodes; + }; + + # Compute the array of configurations + configs = stdexp.buildConfigs { + inherit varConf genConf; + }; + + # Custom srun stage to copy the creams input dataset + customSrun = {nextStage, conf, ...}: + let + input = bsc.garlic.apps.creamsInput.override { + inherit (conf) gitBranch granul nprocz; + }; + in + stages.srun { + # These are part of the stdndard srun stage: + inherit (conf) nixPrefix; + inherit nextStage; + cpuBind = "cores,verbose"; + + # Now we add some commands to execute before calling srun. These will + # only run in one rank (the first in the list of allocated nodes) + preSrun = '' + cp -r ${input}/SodTubeBenchmark/* . + chmod +w -R . + rm -f nanos6.toml + ''; + }; + + exec = {nextStage, conf, ...}: with conf; stages.exec { + inherit nextStage; + env = '' + export NANOS6_CONFIG_OVERRIDE="version.dependencies=regions" + ''; + + # Remove restarts as is not needed and is huge + post = '' + rm -rf restarts || true + ''; + }; + + # Creams program + creams = {nextStage, conf, ...}: with conf; + let + customPkgs = stdexp.replaceMpi conf.mpi; + in + customPkgs.apps.creams.override { + inherit cc mpi gitBranch; + }; + + pipeline = stdexp.stdPipelineOverride { + overrides = { + # Replace the stdandard srun stage with our own + srun = customSrun; + }; + } ++ [ exec creams ]; + +in + + stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/creams/ss+hybrid.nix b/garlic/exp/creams/ss+hybrid.nix index 5b20531..c78376b 100644 --- a/garlic/exp/creams/ss+hybrid.nix +++ b/garlic/exp/creams/ss+hybrid.nix @@ -75,9 +75,22 @@ let preSrun = '' cp -r ${input}/SodTubeBenchmark/* . chmod +w -R . + rm -f nanos6.toml ''; }; + exec = {nextStage, conf, ...}: with conf; stages.exec { + inherit nextStage; + env = '' + export NANOS6_CONFIG_OVERRIDE="version.dependencies=regions" + ''; + + # Remove restarts as is not needed and is huge + post = '' + rm -rf restarts || true + ''; + }; + # Creams program creams = {nextStage, conf, ...}: with conf; let @@ -92,7 +105,7 @@ let # Replace the stdandard srun stage with our own srun = customSrun; }; - } ++ [ creams ]; + } ++ [ exec creams ]; in diff --git a/garlic/exp/creams/ss+pure.nix b/garlic/exp/creams/ss+pure.nix index 7585576..5d36e5e 100644 --- a/garlic/exp/creams/ss+pure.nix +++ b/garlic/exp/creams/ss+pure.nix @@ -70,9 +70,22 @@ let preSrun = '' cp -r ${input}/SodTubeBenchmark/* . chmod +w -R . + rm -f nanos6.toml ''; }; + exec = {nextStage, conf, ...}: with conf; stages.exec { + inherit nextStage; + env = '' + export NANOS6_CONFIG_OVERRIDE="version.dependencies=regions" + ''; + + # Remove restarts as is not needed and is huge + post = '' + rm -rf restarts || true + ''; + }; + # Creams program creams = {nextStage, conf, ...}: with conf; let @@ -87,7 +100,7 @@ let # Replace the stdandard srun stage with our own srun = customSrun; }; - } ++ [ creams ]; + } ++ [ exec creams ]; in diff --git a/garlic/exp/index.nix b/garlic/exp/index.nix index 6b93c92..ec90363 100644 --- a/garlic/exp/index.nix +++ b/garlic/exp/index.nix @@ -42,8 +42,11 @@ hybrid = callPackage ./creams/ss+hybrid.nix { }; }; gran = { - pure = callPackage ./creams/gran+node1.nix { }; - hybrid = callPackage ./creams/gran+node16.nix { }; + node1 = callPackage ./creams/gran+node1.nix { }; + node2 = callPackage ./creams/gran+node2.nix { }; + node4 = callPackage ./creams/gran+node4.nix { }; + node8 = callPackage ./creams/gran+node8.nix { }; + node16 = callPackage ./creams/gran+node16.nix { }; }; }; diff --git a/garlic/fig/index.nix b/garlic/fig/index.nix index c51d328..d2e4d5b 100644 --- a/garlic/fig/index.nix +++ b/garlic/fig/index.nix @@ -53,7 +53,7 @@ in creams = with exp.creams; { ss = stdPlot ./creams/ss.R [ ss.hybrid ss.pure ]; - gran = stdPlot ./creams/gran.R [ gran.hybrid ]; + gran = stdPlot ./creams/gran.R [ gran.node1 gran.node2 gran.node4 gran.node8 gran.node16 ]; }; osu = with exp.osu; { From d27c6962592d46cccf792cbf2fe5657ef7a5751f Mon Sep 17 00:00:00 2001 From: Pedro Martinez Date: Tue, 16 Mar 2021 20:19:45 +0100 Subject: [PATCH 563/987] creams: reduce granularity combinations to 8 --- garlic/exp/creams/gran+node1.nix | 1 - garlic/exp/creams/gran+node16.nix | 1 - garlic/exp/creams/gran+node2.nix | 1 - garlic/exp/creams/gran+node4.nix | 1 - garlic/exp/creams/gran+node8.nix | 1 - 5 files changed, 5 deletions(-) diff --git a/garlic/exp/creams/gran+node1.nix b/garlic/exp/creams/gran+node1.nix index 5bd2726..c4c836f 100644 --- a/garlic/exp/creams/gran+node1.nix +++ b/garlic/exp/creams/gran+node1.nix @@ -12,7 +12,6 @@ let # Initial variable configuration varConf = { input = [ - { nodes=1 ; nprocz=2 ; granul=256; time= "02:00:00"; } { nodes=1 ; nprocz=2 ; granul=128; time= "02:00:00"; } { nodes=1 ; nprocz=2 ; granul=64; time= "02:00:00"; } { nodes=1 ; nprocz=2 ; granul=37; time= "02:00:00"; } diff --git a/garlic/exp/creams/gran+node16.nix b/garlic/exp/creams/gran+node16.nix index 7322175..5b41d6a 100644 --- a/garlic/exp/creams/gran+node16.nix +++ b/garlic/exp/creams/gran+node16.nix @@ -20,7 +20,6 @@ let { nodes=16 ; nprocz=32 ; granul= 5; time= "02:00:00"; } { nodes=16 ; nprocz=32 ; granul= 4; time= "02:00:00"; } { nodes=16 ; nprocz=32 ; granul= 2; time= "02:00:00"; } - { nodes=16 ; nprocz=32 ; granul= 1; time= "02:00:00"; } ]; gitBranch = [ diff --git a/garlic/exp/creams/gran+node2.nix b/garlic/exp/creams/gran+node2.nix index 0e022f0..e572447 100644 --- a/garlic/exp/creams/gran+node2.nix +++ b/garlic/exp/creams/gran+node2.nix @@ -12,7 +12,6 @@ let # Initial variable configuration varConf = { input = [ - { nodes=2 ; nprocz=4 ; granul=256; time= "02:00:00"; } { nodes=2 ; nprocz=4 ; granul=128; time= "02:00:00"; } { nodes=2 ; nprocz=4 ; granul=64; time= "02:00:00"; } { nodes=2 ; nprocz=4 ; granul=37; time= "02:00:00"; } diff --git a/garlic/exp/creams/gran+node4.nix b/garlic/exp/creams/gran+node4.nix index 628ae1d..71dc974 100644 --- a/garlic/exp/creams/gran+node4.nix +++ b/garlic/exp/creams/gran+node4.nix @@ -20,7 +20,6 @@ let { nodes=4 ; nprocz=8 ; granul= 5; time= "02:00:00"; } { nodes=4 ; nprocz=4 ; granul= 4; time= "02:00:00"; } { nodes=4 ; nprocz=8 ; granul= 2; time= "02:00:00"; } - { nodes=4 ; nprocz=8 ; granul= 1; time= "02:00:00"; } ]; gitBranch = [ diff --git a/garlic/exp/creams/gran+node8.nix b/garlic/exp/creams/gran+node8.nix index d0fec23..01b66fa 100644 --- a/garlic/exp/creams/gran+node8.nix +++ b/garlic/exp/creams/gran+node8.nix @@ -20,7 +20,6 @@ let { nodes=8 ; nprocz=16 ; granul= 5; time= "02:00:00"; } { nodes=8 ; nprocz=16 ; granul= 4; time= "02:00:00"; } { nodes=8 ; nprocz=16 ; granul= 2; time= "02:00:00"; } - { nodes=8 ; nprocz=16 ; granul= 1; time= "02:00:00"; } ]; gitBranch = [ From cb4d27aefb8e7db77ea5d04e421240d6ef87d85a Mon Sep 17 00:00:00 2001 From: Pedro Martinez Date: Mon, 22 Mar 2021 12:34:49 +0100 Subject: [PATCH 564/987] creams: bugfix in granularity values --- garlic/exp/creams/gran+node1.nix | 2 +- garlic/exp/creams/gran+node2.nix | 2 +- garlic/exp/creams/gran+node4.nix | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/garlic/exp/creams/gran+node1.nix b/garlic/exp/creams/gran+node1.nix index c4c836f..10be85d 100644 --- a/garlic/exp/creams/gran+node1.nix +++ b/garlic/exp/creams/gran+node1.nix @@ -12,9 +12,9 @@ let # Initial variable configuration varConf = { input = [ + { nodes=1 ; nprocz=2 ; granul=256; time= "02:00:00"; } { nodes=1 ; nprocz=2 ; granul=128; time= "02:00:00"; } { nodes=1 ; nprocz=2 ; granul=64; time= "02:00:00"; } - { nodes=1 ; nprocz=2 ; granul=37; time= "02:00:00"; } { nodes=1 ; nprocz=2 ; granul=32; time= "02:00:00"; } { nodes=1 ; nprocz=2 ; granul=16; time= "02:00:00"; } { nodes=1 ; nprocz=2 ; granul= 9; time= "02:00:00"; } diff --git a/garlic/exp/creams/gran+node2.nix b/garlic/exp/creams/gran+node2.nix index e572447..d7937e3 100644 --- a/garlic/exp/creams/gran+node2.nix +++ b/garlic/exp/creams/gran+node2.nix @@ -12,9 +12,9 @@ let # Initial variable configuration varConf = { input = [ + { nodes=2 ; nprocz=4 ; granul=256; time= "02:00:00"; } { nodes=2 ; nprocz=4 ; granul=128; time= "02:00:00"; } { nodes=2 ; nprocz=4 ; granul=64; time= "02:00:00"; } - { nodes=2 ; nprocz=4 ; granul=37; time= "02:00:00"; } { nodes=2 ; nprocz=4 ; granul=32; time= "02:00:00"; } { nodes=2 ; nprocz=4 ; granul=16; time= "02:00:00"; } { nodes=2 ; nprocz=4 ; granul= 9; time= "02:00:00"; } diff --git a/garlic/exp/creams/gran+node4.nix b/garlic/exp/creams/gran+node4.nix index 71dc974..6e0ef6a 100644 --- a/garlic/exp/creams/gran+node4.nix +++ b/garlic/exp/creams/gran+node4.nix @@ -12,8 +12,8 @@ let # Initial variable configuration varConf = { input = [ + { nodes=4 ; nprocz=8 ; granul=128; time= "02:00:00"; } { nodes=4 ; nprocz=8 ; granul=64; time= "02:00:00"; } - { nodes=4 ; nprocz=8 ; granul=37; time= "02:00:00"; } { nodes=4 ; nprocz=8 ; granul=32; time= "02:00:00"; } { nodes=4 ; nprocz=8 ; granul=16; time= "02:00:00"; } { nodes=4 ; nprocz=8 ; granul= 9; time= "02:00:00"; } From bfc32ef4b7c879a9a0c20c8d62b1f568900af15a Mon Sep 17 00:00:00 2001 From: Pedro Martinez Date: Mon, 22 Mar 2021 12:37:42 +0100 Subject: [PATCH 565/987] creams: readjust granularity for strong scalability --- garlic/exp/creams/ss+hybrid.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/garlic/exp/creams/ss+hybrid.nix b/garlic/exp/creams/ss+hybrid.nix index c78376b..26e1293 100644 --- a/garlic/exp/creams/ss+hybrid.nix +++ b/garlic/exp/creams/ss+hybrid.nix @@ -12,9 +12,9 @@ let # Initial variable configuration varConf = { input = [ - { nodes=1 ; nprocz=2 ; granul=37; time= "02:00:00"; } - { nodes=2 ; nprocz=4 ; granul=19; time= "02:00:00"; } - { nodes=4 ; nprocz=8 ; granul=10; time= "02:00:00"; } + { nodes=1 ; nprocz=2 ; granul=16; time= "02:00:00"; } + { nodes=2 ; nprocz=4 ; granul=16; time= "02:00:00"; } + { nodes=4 ; nprocz=8 ; granul=9 ; time= "02:00:00"; } { nodes=8 ; nprocz=16; granul=9 ; time= "02:00:00"; } { nodes=16; nprocz=32; granul=9 ; time= "02:00:00"; } ]; From 5cd9894636c4eb0b472296f404cefb71ab9dc08b Mon Sep 17 00:00:00 2001 From: Pedro Martinez Date: Tue, 23 Mar 2021 11:21:01 +0100 Subject: [PATCH 566/987] creams: redefine granularity experiments --- garlic/exp/creams/gran+node1.nix | 1 - garlic/exp/creams/gran+node16.nix | 3 +-- garlic/exp/creams/gran+node2.nix | 1 - garlic/exp/creams/gran+node4.nix | 3 +-- garlic/exp/creams/gran+node8.nix | 3 +-- 5 files changed, 3 insertions(+), 8 deletions(-) diff --git a/garlic/exp/creams/gran+node1.nix b/garlic/exp/creams/gran+node1.nix index 10be85d..beb23cf 100644 --- a/garlic/exp/creams/gran+node1.nix +++ b/garlic/exp/creams/gran+node1.nix @@ -23,7 +23,6 @@ let ]; gitBranch = [ - "garlic/mpi+send+omp+fork" "garlic/mpi+send+omp+task" "garlic/mpi+send+oss+task" "garlic/mpi+isend+omp+task" diff --git a/garlic/exp/creams/gran+node16.nix b/garlic/exp/creams/gran+node16.nix index 5b41d6a..54a1ff2 100644 --- a/garlic/exp/creams/gran+node16.nix +++ b/garlic/exp/creams/gran+node16.nix @@ -12,7 +12,6 @@ let # Initial variable configuration varConf = { input = [ - { nodes=16 ; nprocz=32 ; granul=128; time= "02:00:00"; } { nodes=16 ; nprocz=32 ; granul=64; time= "02:00:00"; } { nodes=16 ; nprocz=32 ; granul=32; time= "02:00:00"; } { nodes=16 ; nprocz=32 ; granul=16; time= "02:00:00"; } @@ -20,10 +19,10 @@ let { nodes=16 ; nprocz=32 ; granul= 5; time= "02:00:00"; } { nodes=16 ; nprocz=32 ; granul= 4; time= "02:00:00"; } { nodes=16 ; nprocz=32 ; granul= 2; time= "02:00:00"; } + { nodes=16 ; nprocz=32 ; granul= 1; time= "02:00:00"; } ]; gitBranch = [ - "garlic/mpi+send+omp+fork" "garlic/mpi+send+omp+task" "garlic/mpi+send+oss+task" "garlic/mpi+isend+omp+task" diff --git a/garlic/exp/creams/gran+node2.nix b/garlic/exp/creams/gran+node2.nix index d7937e3..4e05306 100644 --- a/garlic/exp/creams/gran+node2.nix +++ b/garlic/exp/creams/gran+node2.nix @@ -23,7 +23,6 @@ let ]; gitBranch = [ - "garlic/mpi+send+omp+fork" "garlic/mpi+send+omp+task" "garlic/mpi+send+oss+task" "garlic/mpi+isend+omp+task" diff --git a/garlic/exp/creams/gran+node4.nix b/garlic/exp/creams/gran+node4.nix index 6e0ef6a..5fc46ca 100644 --- a/garlic/exp/creams/gran+node4.nix +++ b/garlic/exp/creams/gran+node4.nix @@ -12,7 +12,6 @@ let # Initial variable configuration varConf = { input = [ - { nodes=4 ; nprocz=8 ; granul=128; time= "02:00:00"; } { nodes=4 ; nprocz=8 ; granul=64; time= "02:00:00"; } { nodes=4 ; nprocz=8 ; granul=32; time= "02:00:00"; } { nodes=4 ; nprocz=8 ; granul=16; time= "02:00:00"; } @@ -20,10 +19,10 @@ let { nodes=4 ; nprocz=8 ; granul= 5; time= "02:00:00"; } { nodes=4 ; nprocz=4 ; granul= 4; time= "02:00:00"; } { nodes=4 ; nprocz=8 ; granul= 2; time= "02:00:00"; } + { nodes=4 ; nprocz=8 ; granul= 1; time= "02:00:00"; } ]; gitBranch = [ - "garlic/mpi+send+omp+fork" "garlic/mpi+send+omp+task" "garlic/mpi+send+oss+task" "garlic/mpi+isend+omp+task" diff --git a/garlic/exp/creams/gran+node8.nix b/garlic/exp/creams/gran+node8.nix index 01b66fa..c6ad00c 100644 --- a/garlic/exp/creams/gran+node8.nix +++ b/garlic/exp/creams/gran+node8.nix @@ -12,7 +12,6 @@ let # Initial variable configuration varConf = { input = [ - { nodes=8 ; nprocz=16 ; granul=128; time= "02:00:00"; } { nodes=8 ; nprocz=16 ; granul=64; time= "02:00:00"; } { nodes=8 ; nprocz=16 ; granul=32; time= "02:00:00"; } { nodes=8 ; nprocz=16 ; granul=16; time= "02:00:00"; } @@ -20,10 +19,10 @@ let { nodes=8 ; nprocz=16 ; granul= 5; time= "02:00:00"; } { nodes=8 ; nprocz=16 ; granul= 4; time= "02:00:00"; } { nodes=8 ; nprocz=16 ; granul= 2; time= "02:00:00"; } + { nodes=8 ; nprocz=16 ; granul= 1; time= "02:00:00"; } ]; gitBranch = [ - "garlic/mpi+send+omp+fork" "garlic/mpi+send+omp+task" "garlic/mpi+send+oss+task" "garlic/mpi+isend+omp+task" From 617ef21d384cfc32565f8fcc6e0b5946b7370e36 Mon Sep 17 00:00:00 2001 From: Pedro Martinez Date: Wed, 24 Mar 2021 13:51:11 +0100 Subject: [PATCH 567/987] creams: redefine granularity figures --- garlic/fig/index.nix | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/garlic/fig/index.nix b/garlic/fig/index.nix index d2e4d5b..137c629 100644 --- a/garlic/fig/index.nix +++ b/garlic/fig/index.nix @@ -53,7 +53,11 @@ in creams = with exp.creams; { ss = stdPlot ./creams/ss.R [ ss.hybrid ss.pure ]; - gran = stdPlot ./creams/gran.R [ gran.node1 gran.node2 gran.node4 gran.node8 gran.node16 ]; + gran1 = stdPlot ./creams/gran.R [ gran.node1 ]; + gran2 = stdPlot ./creams/gran.R [ gran.node2 ]; + gran4 = stdPlot ./creams/gran.R [ gran.node4 ]; + gran8 = stdPlot ./creams/gran.R [ gran.node8 ]; + gran16 = stdPlot ./creams/gran.R [ gran.node16 ]; }; osu = with exp.osu; { From 872ad1a2897cf9868a662a81261c9f76d3d35a35 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 29 Mar 2021 17:46:19 +0200 Subject: [PATCH 568/987] stdexp: allow preSrun attribute in the srun stage This option allows an experiment to inject commands before srun starts, while keeping the standard srun stage options. --- garlic/stdexp.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/garlic/stdexp.nix b/garlic/stdexp.nix index efddd96..52e8ab9 100644 --- a/garlic/stdexp.nix +++ b/garlic/stdexp.nix @@ -76,12 +76,12 @@ rec { inherit nextStage; }; - srun = {nextStage, conf, ...}: ( + srun = {nextStage, conf, preSrun ? "", ...}: ( assert (assertMsg (!(conf ? cpuBind)) "cpuBind is no longer available in the standard srun stage"); stages.srun { inherit (conf) nixPrefix; - inherit nextStage; + inherit nextStage preSrun; # Binding is set to cores always cpuBind = "cores,verbose"; From ec056d97e5fbe45e26a48468316c5d8b8bf6f385 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 30 Mar 2021 15:49:40 +0200 Subject: [PATCH 569/987] rplot: add total job time in the plots --- garlic/pp/rplot.nix | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/garlic/pp/rplot.nix b/garlic/pp/rplot.nix index 262e6c4..9366fb0 100644 --- a/garlic/pp/rplot.nix +++ b/garlic/pp/rplot.nix @@ -3,6 +3,7 @@ , rWrapper , rPackages , fontconfig +, jq }: { @@ -21,7 +22,7 @@ let in stdenv.mkDerivation { name = "plot"; - buildInputs = [ customR ]; + buildInputs = [ customR jq ]; preferLocalBuild = true; dontPatchShebangs = true; phases = [ "installPhase" ]; @@ -32,5 +33,7 @@ in stdenv.mkDerivation { cd $out ln -s ${dataset} input Rscript --vanilla ${script} ${dataset} + jq -c .total_time input |\ + awk '{s+=$1} END {printf "%f\n", s/60}' > total_job_time_minutes ''; } From 87f751185c07c20bc40649c5bc88181046c5f7cf Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 30 Mar 2021 15:55:57 +0200 Subject: [PATCH 570/987] creams: merge similar experiments together Large experiments have the enableExtended parameter disabled by default, which enables more tests. --- garlic/exp/creams/gran+node1.nix | 114 --------------------------- garlic/exp/creams/gran+node16.nix | 114 --------------------------- garlic/exp/creams/gran+node2.nix | 114 --------------------------- garlic/exp/creams/gran+node4.nix | 114 --------------------------- garlic/exp/creams/gran+node8.nix | 114 --------------------------- garlic/exp/creams/granularity.nix | 125 ++++++++++++++++++++++++++++++ garlic/exp/creams/ss+hybrid.nix | 112 -------------------------- garlic/exp/creams/ss+pure.nix | 107 ------------------------- garlic/exp/creams/ss.nix | 125 ++++++++++++++++++++++++++++++ garlic/exp/index.nix | 20 ++--- 10 files changed, 258 insertions(+), 801 deletions(-) delete mode 100644 garlic/exp/creams/gran+node1.nix delete mode 100644 garlic/exp/creams/gran+node16.nix delete mode 100644 garlic/exp/creams/gran+node2.nix delete mode 100644 garlic/exp/creams/gran+node4.nix delete mode 100644 garlic/exp/creams/gran+node8.nix create mode 100644 garlic/exp/creams/granularity.nix delete mode 100644 garlic/exp/creams/ss+hybrid.nix delete mode 100644 garlic/exp/creams/ss+pure.nix create mode 100644 garlic/exp/creams/ss.nix diff --git a/garlic/exp/creams/gran+node1.nix b/garlic/exp/creams/gran+node1.nix deleted file mode 100644 index beb23cf..0000000 --- a/garlic/exp/creams/gran+node1.nix +++ /dev/null @@ -1,114 +0,0 @@ -{ - stdenv -, stdexp -, bsc -, targetMachine -, stages -}: - -with stdenv.lib; - -let - # Initial variable configuration - varConf = { - input = [ - { nodes=1 ; nprocz=2 ; granul=256; time= "02:00:00"; } - { nodes=1 ; nprocz=2 ; granul=128; time= "02:00:00"; } - { nodes=1 ; nprocz=2 ; granul=64; time= "02:00:00"; } - { nodes=1 ; nprocz=2 ; granul=32; time= "02:00:00"; } - { nodes=1 ; nprocz=2 ; granul=16; time= "02:00:00"; } - { nodes=1 ; nprocz=2 ; granul= 9; time= "02:00:00"; } - { nodes=1 ; nprocz=2 ; granul= 5; time= "02:00:00"; } - { nodes=1 ; nprocz=2 ; granul= 4; time= "02:00:00"; } - ]; - - gitBranch = [ - "garlic/mpi+send+omp+task" - "garlic/mpi+send+oss+task" - "garlic/mpi+isend+omp+task" - "garlic/mpi+isend+oss+task" - "garlic/tampi+isend+oss+task" - ]; - }; - - # Generate the complete configuration for each unit - genConf = with bsc; c: targetMachine.config // rec { - expName = "creams-gran-node1"; - inherit (targetMachine.config) hw; - # Options for creams - cc = icc; - mpi = impi; - inherit (c.input) granul time nodes; - inherit (c) gitBranch; - unitName = "${expName}-${toString nodes}-${gitBranch}"; - - # Repeat the execution of each unit 10 times - loops = 10; - - # Resources - qos = "debug"; - ntasksPerNode = hw.socketsPerNode; - cpusPerTask = hw.cpusPerSocket; - jobName = unitName; - - nprocz = ntasksPerNode * nodes; - }; - - # Compute the array of configurations - configs = stdexp.buildConfigs { - inherit varConf genConf; - }; - - # Custom srun stage to copy the creams input dataset - customSrun = {nextStage, conf, ...}: - let - input = bsc.garlic.apps.creamsInput.override { - inherit (conf) gitBranch granul nprocz; - }; - in - stages.srun { - # These are part of the stdndard srun stage: - inherit (conf) nixPrefix; - inherit nextStage; - cpuBind = "cores,verbose"; - - # Now we add some commands to execute before calling srun. These will - # only run in one rank (the first in the list of allocated nodes) - preSrun = '' - cp -r ${input}/SodTubeBenchmark/* . - chmod +w -R . - rm -f nanos6.toml - ''; - }; - - exec = {nextStage, conf, ...}: with conf; stages.exec { - inherit nextStage; - env = '' - export NANOS6_CONFIG_OVERRIDE="version.dependencies=regions" - ''; - - # Remove restarts as is not needed and is huge - post = '' - rm -rf restarts || true - ''; - }; - - # Creams program - creams = {nextStage, conf, ...}: with conf; - let - customPkgs = stdexp.replaceMpi conf.mpi; - in - customPkgs.apps.creams.override { - inherit cc mpi gitBranch; - }; - - pipeline = stdexp.stdPipelineOverride { - overrides = { - # Replace the stdandard srun stage with our own - srun = customSrun; - }; - } ++ [ exec creams ]; - -in - - stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/creams/gran+node16.nix b/garlic/exp/creams/gran+node16.nix deleted file mode 100644 index 54a1ff2..0000000 --- a/garlic/exp/creams/gran+node16.nix +++ /dev/null @@ -1,114 +0,0 @@ -{ - stdenv -, stdexp -, bsc -, targetMachine -, stages -}: - -with stdenv.lib; - -let - # Initial variable configuration - varConf = { - input = [ - { nodes=16 ; nprocz=32 ; granul=64; time= "02:00:00"; } - { nodes=16 ; nprocz=32 ; granul=32; time= "02:00:00"; } - { nodes=16 ; nprocz=32 ; granul=16; time= "02:00:00"; } - { nodes=16 ; nprocz=32 ; granul= 9; time= "02:00:00"; } - { nodes=16 ; nprocz=32 ; granul= 5; time= "02:00:00"; } - { nodes=16 ; nprocz=32 ; granul= 4; time= "02:00:00"; } - { nodes=16 ; nprocz=32 ; granul= 2; time= "02:00:00"; } - { nodes=16 ; nprocz=32 ; granul= 1; time= "02:00:00"; } - ]; - - gitBranch = [ - "garlic/mpi+send+omp+task" - "garlic/mpi+send+oss+task" - "garlic/mpi+isend+omp+task" - "garlic/mpi+isend+oss+task" - "garlic/tampi+isend+oss+task" - ]; - }; - - # Generate the complete configuration for each unit - genConf = with bsc; c: targetMachine.config // rec { - expName = "creams-gran-node16"; - inherit (targetMachine.config) hw; - # Options for creams - cc = icc; - mpi = impi; - inherit (c.input) granul time nodes; - inherit (c) gitBranch; - unitName = "${expName}-${toString nodes}-${gitBranch}"; - - # Repeat the execution of each unit 10 times - loops = 10; - - # Resources - qos = "debug"; - ntasksPerNode = hw.socketsPerNode; - cpusPerTask = hw.cpusPerSocket; - jobName = unitName; - - nprocz = ntasksPerNode * nodes; - }; - - # Compute the array of configurations - configs = stdexp.buildConfigs { - inherit varConf genConf; - }; - - # Custom srun stage to copy the creams input dataset - customSrun = {nextStage, conf, ...}: - let - input = bsc.garlic.apps.creamsInput.override { - inherit (conf) gitBranch granul nprocz; - }; - in - stages.srun { - # These are part of the stdndard srun stage: - inherit (conf) nixPrefix; - inherit nextStage; - cpuBind = "cores,verbose"; - - # Now we add some commands to execute before calling srun. These will - # only run in one rank (the first in the list of allocated nodes) - preSrun = '' - cp -r ${input}/SodTubeBenchmark/* . - chmod +w -R . - rm -f nanos6.toml - ''; - }; - - exec = {nextStage, conf, ...}: with conf; stages.exec { - inherit nextStage; - env = '' - export NANOS6_CONFIG_OVERRIDE="version.dependencies=regions" - ''; - - # Remove restarts as is not needed and is huge - post = '' - rm -rf restarts || true - ''; - }; - - # Creams program - creams = {nextStage, conf, ...}: with conf; - let - customPkgs = stdexp.replaceMpi conf.mpi; - in - customPkgs.apps.creams.override { - inherit cc mpi gitBranch; - }; - - pipeline = stdexp.stdPipelineOverride { - overrides = { - # Replace the stdandard srun stage with our own - srun = customSrun; - }; - } ++ [ exec creams ]; - -in - - stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/creams/gran+node2.nix b/garlic/exp/creams/gran+node2.nix deleted file mode 100644 index 4e05306..0000000 --- a/garlic/exp/creams/gran+node2.nix +++ /dev/null @@ -1,114 +0,0 @@ -{ - stdenv -, stdexp -, bsc -, targetMachine -, stages -}: - -with stdenv.lib; - -let - # Initial variable configuration - varConf = { - input = [ - { nodes=2 ; nprocz=4 ; granul=256; time= "02:00:00"; } - { nodes=2 ; nprocz=4 ; granul=128; time= "02:00:00"; } - { nodes=2 ; nprocz=4 ; granul=64; time= "02:00:00"; } - { nodes=2 ; nprocz=4 ; granul=32; time= "02:00:00"; } - { nodes=2 ; nprocz=4 ; granul=16; time= "02:00:00"; } - { nodes=2 ; nprocz=4 ; granul= 9; time= "02:00:00"; } - { nodes=2 ; nprocz=4 ; granul= 5; time= "02:00:00"; } - { nodes=2 ; nprocz=4 ; granul= 4; time= "02:00:00"; } - ]; - - gitBranch = [ - "garlic/mpi+send+omp+task" - "garlic/mpi+send+oss+task" - "garlic/mpi+isend+omp+task" - "garlic/mpi+isend+oss+task" - "garlic/tampi+isend+oss+task" - ]; - }; - - # Generate the complete configuration for each unit - genConf = with bsc; c: targetMachine.config // rec { - expName = "creams-gran-node2"; - inherit (targetMachine.config) hw; - # Options for creams - cc = icc; - mpi = impi; - inherit (c.input) granul time nodes; - inherit (c) gitBranch; - unitName = "${expName}-${toString nodes}-${gitBranch}"; - - # Repeat the execution of each unit 10 times - loops = 10; - - # Resources - qos = "debug"; - ntasksPerNode = hw.socketsPerNode; - cpusPerTask = hw.cpusPerSocket; - jobName = unitName; - - nprocz = ntasksPerNode * nodes; - }; - - # Compute the array of configurations - configs = stdexp.buildConfigs { - inherit varConf genConf; - }; - - # Custom srun stage to copy the creams input dataset - customSrun = {nextStage, conf, ...}: - let - input = bsc.garlic.apps.creamsInput.override { - inherit (conf) gitBranch granul nprocz; - }; - in - stages.srun { - # These are part of the stdndard srun stage: - inherit (conf) nixPrefix; - inherit nextStage; - cpuBind = "cores,verbose"; - - # Now we add some commands to execute before calling srun. These will - # only run in one rank (the first in the list of allocated nodes) - preSrun = '' - cp -r ${input}/SodTubeBenchmark/* . - chmod +w -R . - rm -f nanos6.toml - ''; - }; - - exec = {nextStage, conf, ...}: with conf; stages.exec { - inherit nextStage; - env = '' - export NANOS6_CONFIG_OVERRIDE="version.dependencies=regions" - ''; - - # Remove restarts as is not needed and is huge - post = '' - rm -rf restarts || true - ''; - }; - - # Creams program - creams = {nextStage, conf, ...}: with conf; - let - customPkgs = stdexp.replaceMpi conf.mpi; - in - customPkgs.apps.creams.override { - inherit cc mpi gitBranch; - }; - - pipeline = stdexp.stdPipelineOverride { - overrides = { - # Replace the stdandard srun stage with our own - srun = customSrun; - }; - } ++ [ exec creams ]; - -in - - stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/creams/gran+node4.nix b/garlic/exp/creams/gran+node4.nix deleted file mode 100644 index 5fc46ca..0000000 --- a/garlic/exp/creams/gran+node4.nix +++ /dev/null @@ -1,114 +0,0 @@ -{ - stdenv -, stdexp -, bsc -, targetMachine -, stages -}: - -with stdenv.lib; - -let - # Initial variable configuration - varConf = { - input = [ - { nodes=4 ; nprocz=8 ; granul=64; time= "02:00:00"; } - { nodes=4 ; nprocz=8 ; granul=32; time= "02:00:00"; } - { nodes=4 ; nprocz=8 ; granul=16; time= "02:00:00"; } - { nodes=4 ; nprocz=8 ; granul= 9; time= "02:00:00"; } - { nodes=4 ; nprocz=8 ; granul= 5; time= "02:00:00"; } - { nodes=4 ; nprocz=4 ; granul= 4; time= "02:00:00"; } - { nodes=4 ; nprocz=8 ; granul= 2; time= "02:00:00"; } - { nodes=4 ; nprocz=8 ; granul= 1; time= "02:00:00"; } - ]; - - gitBranch = [ - "garlic/mpi+send+omp+task" - "garlic/mpi+send+oss+task" - "garlic/mpi+isend+omp+task" - "garlic/mpi+isend+oss+task" - "garlic/tampi+isend+oss+task" - ]; - }; - - # Generate the complete configuration for each unit - genConf = with bsc; c: targetMachine.config // rec { - expName = "creams-gran-node4"; - inherit (targetMachine.config) hw; - # Options for creams - cc = icc; - mpi = impi; - inherit (c.input) granul time nodes; - inherit (c) gitBranch; - unitName = "${expName}-${toString nodes}-${gitBranch}"; - - # Repeat the execution of each unit 10 times - loops = 10; - - # Resources - qos = "debug"; - ntasksPerNode = hw.socketsPerNode; - cpusPerTask = hw.cpusPerSocket; - jobName = unitName; - - nprocz = ntasksPerNode * nodes; - }; - - # Compute the array of configurations - configs = stdexp.buildConfigs { - inherit varConf genConf; - }; - - # Custom srun stage to copy the creams input dataset - customSrun = {nextStage, conf, ...}: - let - input = bsc.garlic.apps.creamsInput.override { - inherit (conf) gitBranch granul nprocz; - }; - in - stages.srun { - # These are part of the stdndard srun stage: - inherit (conf) nixPrefix; - inherit nextStage; - cpuBind = "cores,verbose"; - - # Now we add some commands to execute before calling srun. These will - # only run in one rank (the first in the list of allocated nodes) - preSrun = '' - cp -r ${input}/SodTubeBenchmark/* . - chmod +w -R . - rm -f nanos6.toml - ''; - }; - - exec = {nextStage, conf, ...}: with conf; stages.exec { - inherit nextStage; - env = '' - export NANOS6_CONFIG_OVERRIDE="version.dependencies=regions" - ''; - - # Remove restarts as is not needed and is huge - post = '' - rm -rf restarts || true - ''; - }; - - # Creams program - creams = {nextStage, conf, ...}: with conf; - let - customPkgs = stdexp.replaceMpi conf.mpi; - in - customPkgs.apps.creams.override { - inherit cc mpi gitBranch; - }; - - pipeline = stdexp.stdPipelineOverride { - overrides = { - # Replace the stdandard srun stage with our own - srun = customSrun; - }; - } ++ [ exec creams ]; - -in - - stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/creams/gran+node8.nix b/garlic/exp/creams/gran+node8.nix deleted file mode 100644 index c6ad00c..0000000 --- a/garlic/exp/creams/gran+node8.nix +++ /dev/null @@ -1,114 +0,0 @@ -{ - stdenv -, stdexp -, bsc -, targetMachine -, stages -}: - -with stdenv.lib; - -let - # Initial variable configuration - varConf = { - input = [ - { nodes=8 ; nprocz=16 ; granul=64; time= "02:00:00"; } - { nodes=8 ; nprocz=16 ; granul=32; time= "02:00:00"; } - { nodes=8 ; nprocz=16 ; granul=16; time= "02:00:00"; } - { nodes=8 ; nprocz=16 ; granul= 9; time= "02:00:00"; } - { nodes=8 ; nprocz=16 ; granul= 5; time= "02:00:00"; } - { nodes=8 ; nprocz=16 ; granul= 4; time= "02:00:00"; } - { nodes=8 ; nprocz=16 ; granul= 2; time= "02:00:00"; } - { nodes=8 ; nprocz=16 ; granul= 1; time= "02:00:00"; } - ]; - - gitBranch = [ - "garlic/mpi+send+omp+task" - "garlic/mpi+send+oss+task" - "garlic/mpi+isend+omp+task" - "garlic/mpi+isend+oss+task" - "garlic/tampi+isend+oss+task" - ]; - }; - - # Generate the complete configuration for each unit - genConf = with bsc; c: targetMachine.config // rec { - expName = "creams-gran-node8"; - inherit (targetMachine.config) hw; - # Options for creams - cc = icc; - mpi = impi; - inherit (c.input) granul time nodes; - inherit (c) gitBranch; - unitName = "${expName}-${toString nodes}-${gitBranch}"; - - # Repeat the execution of each unit 10 times - loops = 10; - - # Resources - qos = "debug"; - ntasksPerNode = hw.socketsPerNode; - cpusPerTask = hw.cpusPerSocket; - jobName = unitName; - - nprocz = ntasksPerNode * nodes; - }; - - # Compute the array of configurations - configs = stdexp.buildConfigs { - inherit varConf genConf; - }; - - # Custom srun stage to copy the creams input dataset - customSrun = {nextStage, conf, ...}: - let - input = bsc.garlic.apps.creamsInput.override { - inherit (conf) gitBranch granul nprocz; - }; - in - stages.srun { - # These are part of the stdndard srun stage: - inherit (conf) nixPrefix; - inherit nextStage; - cpuBind = "cores,verbose"; - - # Now we add some commands to execute before calling srun. These will - # only run in one rank (the first in the list of allocated nodes) - preSrun = '' - cp -r ${input}/SodTubeBenchmark/* . - chmod +w -R . - rm -f nanos6.toml - ''; - }; - - exec = {nextStage, conf, ...}: with conf; stages.exec { - inherit nextStage; - env = '' - export NANOS6_CONFIG_OVERRIDE="version.dependencies=regions" - ''; - - # Remove restarts as is not needed and is huge - post = '' - rm -rf restarts || true - ''; - }; - - # Creams program - creams = {nextStage, conf, ...}: with conf; - let - customPkgs = stdexp.replaceMpi conf.mpi; - in - customPkgs.apps.creams.override { - inherit cc mpi gitBranch; - }; - - pipeline = stdexp.stdPipelineOverride { - overrides = { - # Replace the stdandard srun stage with our own - srun = customSrun; - }; - } ++ [ exec creams ]; - -in - - stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/creams/granularity.nix b/garlic/exp/creams/granularity.nix new file mode 100644 index 0000000..e97a558 --- /dev/null +++ b/garlic/exp/creams/granularity.nix @@ -0,0 +1,125 @@ +{ + stdenv +, stdexp +, bsc +, targetMachine +, stages +, garlicTools +, enableExtended ? false +}: + +with stdenv.lib; +with garlicTools; + +let + # Initial variable configuration + varConf = { + granul = range2 4 128; + + gitBranch = [ + "garlic/tampi+isend+oss+task" + "garlic/mpi+isend+omp+task" + "garlic/mpi+send+seq" + ] ++ optionals (enableExtended) [ + #"garlic/mpi+send+omp+fork" # Don't use fork for granularity + "garlic/mpi+send+omp+task" + "garlic/mpi+send+oss+task" + "garlic/mpi+isend+oss+task" + ]; + + # Max. number of iterations + iterations = [ 10 20 ]; + + nodes = [ 1 ] ++ optionals (enableExtended) (range2 2 16); + }; + + # We use these auxiliary functions to assign different configurations + # depending on the git branch. + getGranul = branch: oldGranul: + if (branch == "garlic/mpi+send+seq") + then 999999 else oldGranul; + + getCpusPerTask = branch: hw: + if (branch == "garlic/mpi+send+seq") + then 1 else hw.cpusPerSocket; + + getNtasksPerNode = branch: hw: + if (branch == "garlic/mpi+send+seq") + then hw.cpusPerNode else hw.socketsPerNode; + + # Generate the complete configuration for each unit + genConf = c: targetMachine.config // rec { + + expName = "creams-gran"; + unitName = "${expName}"+ + "-nodes${toString nodes}"+ + "-granul${toString granul}"+ + "-${gitBranch}"; + + inherit (targetMachine.config) hw; + + # Options for creams + inherit (c) gitBranch nodes iterations; + granul = getGranul gitBranch c.granul; + nprocz = ntasksPerNode * nodes; + + # Repeat the execution of each unit 10 times + loops = 10; + + # Resources + qos = "debug"; + time = "02:00:00"; + ntasksPerNode = getNtasksPerNode gitBranch hw; + cpusPerTask = getCpusPerTask gitBranch hw; + jobName = unitName; + }; + + # Compute the array of configurations + configs = stdexp.buildConfigs { + inherit varConf genConf; + }; + + # Custom srun stage to copy the creams input dataset + customSrun = {nextStage, conf, ...}: + let + input = bsc.garlic.apps.creamsInput.override { + inherit (conf) gitBranch granul nprocz; + }; + in + stdexp.stdStages.srun { + inherit nextStage conf; + # Now we add some commands to execute before calling srun. These will + # only run in one rank (the first in the list of allocated nodes) + preSrun = '' + cp -r ${input}/SodTubeBenchmark/* . + chmod +w -R . + sed -i '/maximum number of iterations/s/50/${toString conf.iterations}/' input.dat + rm -f nanos6.toml + ''; + }; + + exec = {nextStage, conf, ...}: stages.exec { + inherit nextStage; + env = '' + export NANOS6_CONFIG_OVERRIDE="version.dependencies=regions" + ''; + + # Remove restarts as is not needed and is huge + post = '' + rm -rf restarts || true + ''; + }; + + # Creams program + creams = {nextStage, conf, ...}: bsc.apps.creams.override { + inherit (conf) gitBranch; + }; + + pipeline = stdexp.stdPipelineOverride { + # Replace the stdandard srun stage with our own + overrides = { srun = customSrun; }; + } ++ [ exec creams ]; + +in + + stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/creams/ss+hybrid.nix b/garlic/exp/creams/ss+hybrid.nix deleted file mode 100644 index 26e1293..0000000 --- a/garlic/exp/creams/ss+hybrid.nix +++ /dev/null @@ -1,112 +0,0 @@ -{ - stdenv -, stdexp -, bsc -, targetMachine -, stages -}: - -with stdenv.lib; - -let - # Initial variable configuration - varConf = { - input = [ - { nodes=1 ; nprocz=2 ; granul=16; time= "02:00:00"; } - { nodes=2 ; nprocz=4 ; granul=16; time= "02:00:00"; } - { nodes=4 ; nprocz=8 ; granul=9 ; time= "02:00:00"; } - { nodes=8 ; nprocz=16; granul=9 ; time= "02:00:00"; } - { nodes=16; nprocz=32; granul=9 ; time= "02:00:00"; } - ]; - - gitBranch = [ - "garlic/mpi+send+omp+fork" - "garlic/mpi+send+omp+task" - "garlic/mpi+send+oss+task" - "garlic/mpi+isend+omp+task" - "garlic/mpi+isend+oss+task" - "garlic/tampi+isend+oss+task" - ]; - }; - - # Generate the complete configuration for each unit - genConf = with bsc; c: targetMachine.config // rec { - expName = "creams-ss-hybrid"; - inherit (targetMachine.config) hw; - # Options for creams - cc = icc; - mpi = impi; - inherit (c.input) granul time nodes; - inherit (c) gitBranch; - unitName = "${expName}-${toString nodes}-${gitBranch}"; - - # Repeat the execution of each unit 10 times - loops = 10; - - # Resources - qos = "debug"; - ntasksPerNode = hw.socketsPerNode; - cpusPerTask = hw.cpusPerSocket; - jobName = unitName; - - nprocz = ntasksPerNode * nodes; - }; - - # Compute the array of configurations - configs = stdexp.buildConfigs { - inherit varConf genConf; - }; - - # Custom srun stage to copy the creams input dataset - customSrun = {nextStage, conf, ...}: - let - input = bsc.garlic.apps.creamsInput.override { - inherit (conf) gitBranch granul nprocz; - }; - in - stages.srun { - # These are part of the stdndard srun stage: - inherit (conf) nixPrefix; - inherit nextStage; - cpuBind = "cores,verbose"; - - # Now we add some commands to execute before calling srun. These will - # only run in one rank (the first in the list of allocated nodes) - preSrun = '' - cp -r ${input}/SodTubeBenchmark/* . - chmod +w -R . - rm -f nanos6.toml - ''; - }; - - exec = {nextStage, conf, ...}: with conf; stages.exec { - inherit nextStage; - env = '' - export NANOS6_CONFIG_OVERRIDE="version.dependencies=regions" - ''; - - # Remove restarts as is not needed and is huge - post = '' - rm -rf restarts || true - ''; - }; - - # Creams program - creams = {nextStage, conf, ...}: with conf; - let - customPkgs = stdexp.replaceMpi conf.mpi; - in - customPkgs.apps.creams.override { - inherit cc mpi gitBranch; - }; - - pipeline = stdexp.stdPipelineOverride { - overrides = { - # Replace the stdandard srun stage with our own - srun = customSrun; - }; - } ++ [ exec creams ]; - -in - - stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/creams/ss+pure.nix b/garlic/exp/creams/ss+pure.nix deleted file mode 100644 index 5d36e5e..0000000 --- a/garlic/exp/creams/ss+pure.nix +++ /dev/null @@ -1,107 +0,0 @@ -{ - stdenv -, stdexp -, bsc -, targetMachine -, stages -}: - -with stdenv.lib; - -let - # Initial variable configuration - varConf = { - input = [ - { nodes=1 ; nprocz=2 ; granul=999999; time= "02:00:00"; } - { nodes=2 ; nprocz=4 ; granul=999999; time= "02:00:00"; } - { nodes=4 ; nprocz=8 ; granul=999999; time= "02:00:00"; } - { nodes=8 ; nprocz=16; granul=999999; time= "02:00:00"; } - { nodes=16; nprocz=32; granul=999999; time= "02:00:00"; } - ]; - - gitBranch = [ - "garlic/mpi+send+seq" - ]; - }; - - # Generate the complete configuration for each unit - genConf = with bsc; c: targetMachine.config // rec { - expName = "creams-ss-pure"; - inherit (targetMachine.config) hw; - # Options for creams - cc = icc; - mpi = impi; - inherit (c.input) granul time nodes; - inherit (c) gitBranch; - unitName = "${expName}-${toString nodes}-${gitBranch}"; - - # Repeat the execution of each unit 10 times - loops = 10; - - # Resources - qos = "debug"; - ntasksPerNode = hw.cpusPerNode; - cpusPerTask = 1; - jobName = unitName; - - nprocz = ntasksPerNode * nodes; - }; - - # Compute the array of configurations - configs = stdexp.buildConfigs { - inherit varConf genConf; - }; - - # Custom srun stage to copy the creams input dataset - customSrun = {nextStage, conf, ...}: - let - input = bsc.garlic.apps.creamsInput.override { - inherit (conf) gitBranch granul nprocz; - }; - in - stages.srun { - # These are part of the stdndard srun stage: - inherit (conf) nixPrefix; - inherit nextStage; - cpuBind = "cores,verbose"; - - # Now we add some commands to execute before calling srun. These will - # only run in one rank (the first in the list of allocated nodes) - preSrun = '' - cp -r ${input}/SodTubeBenchmark/* . - chmod +w -R . - rm -f nanos6.toml - ''; - }; - - exec = {nextStage, conf, ...}: with conf; stages.exec { - inherit nextStage; - env = '' - export NANOS6_CONFIG_OVERRIDE="version.dependencies=regions" - ''; - - # Remove restarts as is not needed and is huge - post = '' - rm -rf restarts || true - ''; - }; - - # Creams program - creams = {nextStage, conf, ...}: with conf; - let - customPkgs = stdexp.replaceMpi conf.mpi; - in - customPkgs.apps.creams.override { - inherit cc mpi gitBranch; - }; - - pipeline = stdexp.stdPipelineOverride { - overrides = { - # Replace the stdandard srun stage with our own - srun = customSrun; - }; - } ++ [ exec creams ]; - -in - - stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/creams/ss.nix b/garlic/exp/creams/ss.nix new file mode 100644 index 0000000..f152d6c --- /dev/null +++ b/garlic/exp/creams/ss.nix @@ -0,0 +1,125 @@ +{ + stdenv +, stdexp +, bsc +, targetMachine +, stages +, garlicTools +, enableExtended ? false +}: + +with stdenv.lib; +with garlicTools; + +let + # Initial variable configuration + varConf = { + + nodes = range2 1 16; + granul = [ 16 ] ++ optionals (enableExtended) [ 8 32 ]; + + # Max. number of iterations + iterations = [ 20 ] ++ optionals (enableExtended) [ 10 ]; + + gitBranch = [ + "garlic/tampi+isend+oss+task" + "garlic/mpi+send+omp+task" + "garlic/mpi+send+seq" + ] ++ optionals (enableExtended) [ + "garlic/mpi+send+omp+fork" + "garlic/mpi+send+oss+task" + "garlic/mpi+isend+omp+task" + "garlic/mpi+isend+oss+task" + ]; + }; + + # We use these auxiliary functions to assign different configurations + # depending on the git branch. + getGranul = branch: oldGranul: + if (branch == "garlic/mpi+send+seq") + then 999999 else oldGranul; + + getCpusPerTask = branch: hw: + if (branch == "garlic/mpi+send+seq") + then 1 else hw.cpusPerSocket; + + getNtasksPerNode = branch: hw: + if (branch == "garlic/mpi+send+seq") + then hw.cpusPerNode else hw.socketsPerNode; + + # Generate the complete configuration for each unit + genConf = c: targetMachine.config // rec { + + expName = "creams-ss"; + unitName = "${expName}"+ + "-nodes${toString nodes}"+ + "-granul${toString granul}"+ + "-${gitBranch}"; + + inherit (targetMachine.config) hw; + + # Options for creams + inherit (c) iterations gitBranch nodes; + granul = getGranul gitBranch c.granul; + nprocz = ntasksPerNode * nodes; + + # Repeat the execution of each unit 10 times + loops = 10; + + # Resources + qos = "debug"; + time = "02:00:00"; + ntasksPerNode = getNtasksPerNode gitBranch hw; + cpusPerTask = getCpusPerTask gitBranch hw; + jobName = unitName; + }; + + # Compute the array of configurations + configs = stdexp.buildConfigs { + inherit varConf genConf; + }; + + # Custom srun stage to copy the creams input dataset + customSrun = {nextStage, conf, ...}: + let + input = bsc.garlic.apps.creamsInput.override { + inherit (conf) gitBranch granul nprocz; + }; + in + stdexp.stdStages.srun { + inherit nextStage conf; + # Now we add some commands to execute before calling srun. These will + # only run in one rank (the first in the list of allocated nodes) + preSrun = '' + cp -r ${input}/SodTubeBenchmark/* . + chmod +w -R . + sed -i '/maximum number of iterations/s/50/${toString conf.iterations}/' input.dat + rm -f nanos6.toml + ''; + }; + + exec = {nextStage, conf, ...}: stages.exec { + inherit nextStage; + env = '' + export NANOS6_CONFIG_OVERRIDE="version.dependencies=regions" + ''; + + # Remove restarts as is not needed and is huge + post = '' + rm -rf restarts || true + ''; + }; + + # Creams program + creams = {nextStage, conf, ...}: bsc.apps.creams.override { + inherit (conf) gitBranch; + }; + + pipeline = stdexp.stdPipelineOverride { + # Replace the stdandard srun stage with our own + overrides = { srun = customSrun; }; + } ++ [ exec creams ]; + +in + + stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/index.nix b/garlic/exp/index.nix index ec90363..68cedd9 100644 --- a/garlic/exp/index.nix +++ b/garlic/exp/index.nix @@ -36,18 +36,14 @@ granularity = callPackage ./saiph/granularity.nix { }; }; - creams = { - ss = { - pure = callPackage ./creams/ss+pure.nix { }; - hybrid = callPackage ./creams/ss+hybrid.nix { }; - }; - gran = { - node1 = callPackage ./creams/gran+node1.nix { }; - node2 = callPackage ./creams/gran+node2.nix { }; - node4 = callPackage ./creams/gran+node4.nix { }; - node8 = callPackage ./creams/gran+node8.nix { }; - node16 = callPackage ./creams/gran+node16.nix { }; - }; + creams = rec { + ss = callPackage ./creams/ss.nix { }; + granularity = callPackage ./creams/granularity.nix { }; + + # These experiments are the extended versions of the previous + # ones. We split them so we can keep a reasonable execution time + big.granularity = granularity.override { enableExtended = true; }; + big.ss = granularity.override { enableExtended = true; }; }; hpcg = rec { From 76deac0a63897786bc11cab5f156d22b04db082a Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 30 Mar 2021 15:59:52 +0200 Subject: [PATCH 571/987] creams: update figures using one single pipeline --- garlic/fig/creams/gran.R | 71 ------------ garlic/fig/creams/granularity.R | 97 ++++++++++++++++ garlic/fig/creams/ss.R | 198 ++++++++++++++++++-------------- garlic/fig/index.nix | 12 +- 4 files changed, 212 insertions(+), 166 deletions(-) delete mode 100644 garlic/fig/creams/gran.R create mode 100644 garlic/fig/creams/granularity.R diff --git a/garlic/fig/creams/gran.R b/garlic/fig/creams/gran.R deleted file mode 100644 index d0d3149..0000000 --- a/garlic/fig/creams/gran.R +++ /dev/null @@ -1,71 +0,0 @@ -library(ggplot2) -library(dplyr) -library(scales) -library(jsonlite) - -args=commandArgs(trailingOnly=TRUE) - -# Read the timetable from args[1] -input_file = "input.json" -if (length(args)>0) { input_file = args[1] } - -# Load the dataset in NDJSON format -dataset = jsonlite::stream_in(file(input_file), verbose=FALSE) %>% - jsonlite::flatten() - -# We only need some colums -df = select(dataset, unit, config.nodes, config.gitBranch, - config.granul, time, total_time) %>% - rename(nodes=config.nodes, gitBranch=config.gitBranch, - granul=config.granul) - -df$unit = as.factor(df$unit) -df$nnodes = df$nodes -df$nodes = as.factor(df$nodes) -df$gitBranch = as.factor(df$gitBranch) -df$granul = as.factor(df$granul) - -# Remove the "garlic/" prefix from the gitBranch -levels(df$gitBranch) <- substring((levels(df$gitBranch)), 8) - -# Compute new columns -D=group_by(df, unit) %>% - mutate(tnorm = time / median(time) - 1) %>% - mutate(bad = ifelse(max(abs(tnorm)) >= 0.01, 1, 0)) %>% - mutate(variability = ifelse(bad > 0, "large", "ok")) %>% - mutate(mtime = median(time)) %>% - mutate(nmtime = mtime*nnodes) %>% - mutate(ntime = time*nnodes) %>% - ungroup() %>% - mutate(min_nmtime = min(nmtime)) %>% - mutate(rnmtime = nmtime / min_nmtime) %>% - mutate(rntime = ntime / min_nmtime) %>% - mutate(rmeff = 1.0 / rnmtime) %>% - mutate(reff = 1.0 / rntime) %>% - group_by(gitBranch) %>% - mutate(tmax = max(mtime)) %>% - mutate(speedup=tmax/time) %>% - mutate(eff=speedup/nnodes) %>% - mutate(mspeedup=tmax/mtime) %>% - mutate(meff=mspeedup/nnodes) %>% - ungroup() - -D$bad = as.factor(D$bad > 0) -D$variability = as.factor(D$variability) - -ppi=300 -h=5 -w=5 - -png("time.png", width=w*1.5*ppi, height=h*ppi, res=ppi) -p = ggplot(D, aes(x=granul, y=mtime, linetype=gitBranch, shape=nodes)) + - geom_line(aes(group=interaction(nodes, gitBranch))) + - geom_point(aes(y=time)) + - scale_y_continuous(trans=log2_trans()) + - labs(x="Granularity", y="Time (s)", - title="Creams granularity", - subtitle=input_file) + - theme_bw() + - theme(plot.subtitle=element_text(size=8)) -print(p) -dev.off() diff --git a/garlic/fig/creams/granularity.R b/garlic/fig/creams/granularity.R new file mode 100644 index 0000000..d77740a --- /dev/null +++ b/garlic/fig/creams/granularity.R @@ -0,0 +1,97 @@ +library(ggplot2) +library(dplyr, warn.conflicts = FALSE) +library(scales) +library(jsonlite) +library(viridis, warn.conflicts = FALSE) +library(stringr) + +args = commandArgs(trailingOnly=TRUE) + +# Set the input dataset if given in argv[1], or use "input" as default +if (length(args)>0) { input_file = args[1] } else { input_file = "input" } + +df = jsonlite::stream_in(file(input_file), verbose=FALSE) %>% + + jsonlite::flatten() %>% + + select(unit, + config.nodes, + config.gitBranch, + config.granul, + config.iterations, + time, + total_time) %>% + + rename(nodes=config.nodes, + gitBranch=config.gitBranch, + granul=config.granul, + iterations=config.iterations) %>% + + # Remove the "garlic/" prefix from the gitBranch + mutate(branch = str_replace(gitBranch, "garlic/", "")) %>% + + # Computations before converting to factor + mutate(time.iter = time / iterations) %>% + + # Convert to factors + mutate(unit = as.factor(unit)) %>% + mutate(nodesFactor = as.factor(nodes)) %>% + mutate(gitBranch = as.factor(gitBranch)) %>% + mutate(granul = as.factor(granul)) %>% + mutate(iterations = as.factor(iterations)) %>% + mutate(unit = as.factor(unit)) %>% + + # Compute median times + group_by(unit) %>% + mutate(median.time = median(time)) %>% + mutate(normalized.time = time / median.time - 1) %>% + mutate(log.median.time = log(median.time)) %>% + mutate(median.time.iter = median(time.iter)) %>% + ungroup() + +dpi = 300 +h = 6 +w = 6 + +# --------------------------------------------------------------------- + +p = ggplot(df, aes(x=granul, y=normalized.time)) + + geom_boxplot() + + geom_hline(yintercept=c(-0.01, 0.01), linetype="dashed", color="red") + + theme_bw() + + facet_wrap(branch ~ .) + + labs(x="granul", y="Normalized time", + title="Creams granularity: normalized time", + subtitle=input_file) + + theme(plot.subtitle=element_text(size=8)) + +ggsave("normalized.time.png", plot=p, width=w, height=h, dpi=dpi) +ggsave("normalized.time.pdf", plot=p, width=w, height=h, dpi=dpi) + +# --------------------------------------------------------------------- + +p = ggplot(df, aes(x=granul, y=time)) + + geom_point(shape=21, size=3) + + geom_line(aes(y=median.time, group=iterations)) + + theme_bw() + + facet_wrap(branch ~ .) + + labs(x="granul", y="Time (s)", title="Creams granularity: time", + subtitle=input_file) + + theme(plot.subtitle=element_text(size=8)) + +ggsave("time.png", plot=p, width=w, height=h, dpi=dpi) +ggsave("time.pdf", plot=p, width=w, height=h, dpi=dpi) + +# --------------------------------------------------------------------- + +p = ggplot(df, aes(x=granul, y=time.iter, color=iterations)) + + geom_point(shape=21, size=3) + + geom_line(aes(y=median.time.iter, group=iterations)) + + theme_bw() + + facet_wrap(branch ~ .) + + labs(x="granul", y="Time (s)", title="Creams granularity: time / iterations", + subtitle=input_file) + + theme(plot.subtitle=element_text(size=8)) + +ggsave("time.iter.png", plot=p, width=w, height=h, dpi=dpi) +ggsave("time.iter.pdf", plot=p, width=w, height=h, dpi=dpi) diff --git a/garlic/fig/creams/ss.R b/garlic/fig/creams/ss.R index 5f274a8..1f09842 100644 --- a/garlic/fig/creams/ss.R +++ b/garlic/fig/creams/ss.R @@ -1,107 +1,127 @@ library(ggplot2) -library(dplyr) +library(dplyr, warn.conflicts = FALSE) library(scales) library(jsonlite) +library(viridis, warn.conflicts = FALSE) +library(stringr) -args=commandArgs(trailingOnly=TRUE) +args = commandArgs(trailingOnly=TRUE) -# Read the timetable from args[1] -input_file = "input.json" -if (length(args)>0) { input_file = args[1] } +# Set the input dataset if given in argv[1], or use "input" as default +if (length(args)>0) { input_file = args[1] } else { input_file = "input" } -# Load the dataset in NDJSON format -dataset = jsonlite::stream_in(file(input_file), verbose=FALSE) %>% - jsonlite::flatten() +df = jsonlite::stream_in(file(input_file), verbose=FALSE) %>% -# We only need some colums -df = select(dataset, unit, config.nodes, config.gitBranch, time) %>% - rename(nodes=config.nodes, gitBranch=config.gitBranch) + jsonlite::flatten() %>% -df$unit = as.factor(df$unit) -df$nnodes = df$nodes -df$nodes = as.factor(df$nodes) -df$gitBranch = as.factor(df$gitBranch) + select(unit, + config.nodes, + config.gitBranch, + config.granul, + config.iterations, + time, + total_time) %>% -# Remove the "garlic/" prefix from the gitBranch -levels(df$gitBranch) <- substring((levels(df$gitBranch)), 8) + rename(nodes=config.nodes, + gitBranch=config.gitBranch, + granul=config.granul, + iterations=config.iterations) %>% -# Compute new columns -D=group_by(df, unit) %>% - mutate(tnorm = time / median(time) - 1) %>% - mutate(bad = ifelse(max(abs(tnorm)) >= 0.01, 1, 0)) %>% - mutate(variability = ifelse(bad > 0, "large", "ok")) %>% - mutate(mtime = median(time)) %>% - mutate(nmtime = mtime*nnodes) %>% - mutate(ntime = time*nnodes) %>% - ungroup() %>% - mutate(min_nmtime = min(nmtime)) %>% - mutate(rnmtime = nmtime / min_nmtime) %>% - mutate(rntime = ntime / min_nmtime) %>% - mutate(rmeff = 1.0 / rnmtime) %>% - mutate(reff = 1.0 / rntime) %>% - group_by(gitBranch) %>% - mutate(tmax = max(mtime)) %>% - mutate(speedup=tmax/time) %>% - mutate(eff=speedup/nnodes) %>% - mutate(mspeedup=tmax/mtime) %>% - mutate(meff=mspeedup/nnodes) %>% + # Remove the "garlic/" prefix from the gitBranch + mutate(branch = str_replace(gitBranch, "garlic/", "")) %>% + + # Computations before converting to factor + mutate(time.nodes = time * nodes) %>% + mutate(time.nodes.iter = time.nodes / iterations) %>% + + # Convert to factors + mutate(unit = as.factor(unit)) %>% + mutate(nodes = as.factor(nodes)) %>% + mutate(gitBranch = as.factor(gitBranch)) %>% + mutate(granul = as.factor(granul)) %>% + mutate(iterations = as.factor(iterations)) %>% + mutate(unit = as.factor(unit)) %>% + + # Compute median times + group_by(unit) %>% + mutate(median.time = median(time)) %>% + mutate(median.time.nodes = median(time.nodes)) %>% + mutate(normalized.time = time / median.time - 1) %>% + mutate(log.median.time = log(median.time)) %>% + mutate(median.time.nodes.iter = median(time.nodes.iter)) %>% ungroup() -D$bad = as.factor(D$bad > 0) -D$variability = as.factor(D$variability) +dpi = 300 +h = 5 +w = 8 -ppi=300 -h=5 -w=5 +# --------------------------------------------------------------------- -png("variability.png", width=1.5*w*ppi, height=h*ppi, res=ppi) -p = ggplot(data=D, aes(x=nodes, y=tnorm, color=variability)) + +p = ggplot(df, aes(x=nodes, y=normalized.time, fill=granul, color=iterations)) + + geom_boxplot() + + geom_hline(yintercept=c(-0.01, 0.01), linetype="dashed", color="red") + theme_bw() + - theme(plot.subtitle=element_text(size=8)) + - # Add the maximum allowed error lines - geom_hline(yintercept=c(-0.01, 0.01), - linetype="dashed", color="gray") + - # Draw boxplots - geom_boxplot(aes(fill=gitBranch)) + - scale_color_manual(values=c("brown", "black")) + - # Labels - labs(x="Nodes", y="Normalized time", title="Creams strong scaling", - subtitle=input_file) -print(p) -dev.off() + facet_wrap(branch ~ .) + + labs(x="nodes", y="Normalized time", + title="Creams strong scaling: normalized time", + subtitle=input_file) + + theme(plot.subtitle=element_text(size=8)) -png("time.png", width=w*1.5*ppi, height=h*ppi, res=ppi) -p = ggplot(D, aes(x=nodes, y=mtime, color=gitBranch)) + - theme_bw() + - theme(plot.subtitle=element_text(size=8)) + - geom_line(aes(group=gitBranch)) + - #geom_point() + - geom_point(aes(shape=variability), size=3) + - scale_shape_manual(values=c(21, 19)) + - # position=position_dodge(width=0.3)) + - #scale_x_continuous(trans=log2_trans()) + - scale_y_continuous(trans=log2_trans()) + - labs(x="Nodes", y="Time (s)", - title="Creams strong scaling (lower is better)", - subtitle=input_file) -print(p) -dev.off() +ggsave("normalized.time.png", plot=p, width=w, height=h, dpi=dpi) +ggsave("normalized.time.pdf", plot=p, width=w, height=h, dpi=dpi) -png("refficiency.png", width=w*1.5*ppi, height=h*ppi, res=ppi) -p = ggplot(D, aes(x=nodes, y=rmeff, color=gitBranch)) + +# --------------------------------------------------------------------- + +p = ggplot(df, aes(x=nodes, y=time, color=gitBranch)) + + geom_point(shape=21, size=3) + + geom_line(aes(y=median.time, group=gitBranch)) + theme_bw() + - theme(plot.subtitle=element_text(size=8)) + - geom_line(aes(group=gitBranch)) + - geom_point(aes(shape=variability), size=3) + - #geom_boxplot(aes(y=reff), - # position=position_dodge(width=0.0)) + - scale_shape_manual(values=c(21, 19)) + - #geom_point(aes(y=rntime), - # position=position_dodge(width=0.3)) + - #scale_x_continuous(trans=log2_trans()) + - #scale_y_continuous(trans=log2_trans()) + - labs(x="Nodes", y="Relative efficiency (to best)", - title="Creams strong scaling (higher is better)", - subtitle=input_file) -print(p) -dev.off() +# facet_wrap(branch ~ .) + + labs(x="nodes", y="Time (s)", title="Creams strong scaling: time", + subtitle=input_file) + + theme(plot.subtitle=element_text(size=8)) + +ggsave("time.png", plot=p, width=w, height=h, dpi=dpi) +ggsave("time.pdf", plot=p, width=w, height=h, dpi=dpi) + +# --------------------------------------------------------------------- + +p = ggplot(df, aes(x=nodes, y=median.time.nodes, color=branch)) + + geom_point(shape=21, size=3) + + geom_line(aes(group=branch)) + + theme_bw() + + #facet_wrap(branch ~ .) + + labs(x="nodes", y="Median time * nodes (s)", title="Creams strong scaling: median time * nodes", + subtitle=input_file) + + theme(plot.subtitle=element_text(size=8)) + +ggsave("median.time.nodes.png", plot=p, width=w, height=h, dpi=dpi) +ggsave("median.time.nodes.pdf", plot=p, width=w, height=h, dpi=dpi) + +# --------------------------------------------------------------------- + +p = ggplot(df, aes(x=nodes, y=time.nodes, color=branch)) + + geom_boxplot() + + theme_bw() + + facet_wrap(branch ~ .) + + labs(x="nodes", y="Time * nodes (s)", title="Creams strong scaling: time * nodes", + subtitle=input_file) + + theme(plot.subtitle=element_text(size=8)) + +ggsave("time.nodes.boxplot.png", plot=p, width=w, height=h, dpi=dpi) +ggsave("time.nodes.boxplot.pdf", plot=p, width=w, height=h, dpi=dpi) + +# --------------------------------------------------------------------- + +#p = ggplot(df, aes(x=nodes, y=time.nodes.iter, color=branch)) + +# geom_point(shape=21, size=3) + +# geom_line(aes(y=median.time.nodes.iter, group=interaction(granul,iterations))) + +# theme_bw() + +# #facet_wrap(branch ~ .) + +# labs(x="nodes", y="Time * nodes / iterations (s)", +# title="Creams strong scaling: time * nodes / iterations", +# subtitle=input_file) + +# theme(plot.subtitle=element_text(size=8)) +# +#ggsave("time.nodes.iter.png", plot=p, width=w, height=h, dpi=dpi) +#ggsave("time.nodes.iter.pdf", plot=p, width=w, height=h, dpi=dpi) diff --git a/garlic/fig/index.nix b/garlic/fig/index.nix index 137c629..201d68f 100644 --- a/garlic/fig/index.nix +++ b/garlic/fig/index.nix @@ -52,12 +52,12 @@ in }; creams = with exp.creams; { - ss = stdPlot ./creams/ss.R [ ss.hybrid ss.pure ]; - gran1 = stdPlot ./creams/gran.R [ gran.node1 ]; - gran2 = stdPlot ./creams/gran.R [ gran.node2 ]; - gran4 = stdPlot ./creams/gran.R [ gran.node4 ]; - gran8 = stdPlot ./creams/gran.R [ gran.node8 ]; - gran16 = stdPlot ./creams/gran.R [ gran.node16 ]; + ss = stdPlot ./creams/ss.R [ ss ]; + granularity = stdPlot ./creams/granularity.R [ granularity ]; + + # Extended version (we could use another R script for those plots + big.ss = stdPlot ./creams/ss.R [ big.ss ]; + big.granularity = stdPlot ./creams/granularity.R [ big.granularity ]; }; osu = with exp.osu; { From 389d3f6310b4451efd152ad70e5678b690d92ed8 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 30 Mar 2021 16:07:14 +0200 Subject: [PATCH 572/987] creams: simplify granularity figure --- garlic/exp/creams/granularity.nix | 2 +- garlic/fig/creams/granularity.R | 19 ++----------------- 2 files changed, 3 insertions(+), 18 deletions(-) diff --git a/garlic/exp/creams/granularity.nix b/garlic/exp/creams/granularity.nix index e97a558..d31b928 100644 --- a/garlic/exp/creams/granularity.nix +++ b/garlic/exp/creams/granularity.nix @@ -28,7 +28,7 @@ let ]; # Max. number of iterations - iterations = [ 10 20 ]; + iterations = [ 20 ] ++ optionals (enableExtended) [ 10 ]; nodes = [ 1 ] ++ optionals (enableExtended) (range2 2 16); }; diff --git a/garlic/fig/creams/granularity.R b/garlic/fig/creams/granularity.R index d77740a..998329d 100644 --- a/garlic/fig/creams/granularity.R +++ b/garlic/fig/creams/granularity.R @@ -70,28 +70,13 @@ ggsave("normalized.time.pdf", plot=p, width=w, height=h, dpi=dpi) # --------------------------------------------------------------------- -p = ggplot(df, aes(x=granul, y=time)) + +p = ggplot(df, aes(x=granul, y=time, color=branch)) + geom_point(shape=21, size=3) + - geom_line(aes(y=median.time, group=iterations)) + + geom_line(aes(y=median.time, group=branch)) + theme_bw() + - facet_wrap(branch ~ .) + labs(x="granul", y="Time (s)", title="Creams granularity: time", subtitle=input_file) + theme(plot.subtitle=element_text(size=8)) ggsave("time.png", plot=p, width=w, height=h, dpi=dpi) ggsave("time.pdf", plot=p, width=w, height=h, dpi=dpi) - -# --------------------------------------------------------------------- - -p = ggplot(df, aes(x=granul, y=time.iter, color=iterations)) + - geom_point(shape=21, size=3) + - geom_line(aes(y=median.time.iter, group=iterations)) + - theme_bw() + - facet_wrap(branch ~ .) + - labs(x="granul", y="Time (s)", title="Creams granularity: time / iterations", - subtitle=input_file) + - theme(plot.subtitle=element_text(size=8)) - -ggsave("time.iter.png", plot=p, width=w, height=h, dpi=dpi) -ggsave("time.iter.pdf", plot=p, width=w, height=h, dpi=dpi) From b900cb95f089ffa6b2f2055b8c8f41c491e23dd7 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 30 Mar 2021 16:14:11 +0200 Subject: [PATCH 573/987] creams: make configurations unique --- garlic/exp/creams/granularity.nix | 4 ++-- garlic/exp/creams/ss.nix | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/garlic/exp/creams/granularity.nix b/garlic/exp/creams/granularity.nix index d31b928..27f443d 100644 --- a/garlic/exp/creams/granularity.nix +++ b/garlic/exp/creams/granularity.nix @@ -75,9 +75,9 @@ let }; # Compute the array of configurations - configs = stdexp.buildConfigs { + configs = unique (stdexp.buildConfigs { inherit varConf genConf; - }; + }); # Custom srun stage to copy the creams input dataset customSrun = {nextStage, conf, ...}: diff --git a/garlic/exp/creams/ss.nix b/garlic/exp/creams/ss.nix index f152d6c..0194dec 100644 --- a/garlic/exp/creams/ss.nix +++ b/garlic/exp/creams/ss.nix @@ -75,9 +75,9 @@ let }; # Compute the array of configurations - configs = stdexp.buildConfigs { + configs = unique (stdexp.buildConfigs { inherit varConf genConf; - }; + }); # Custom srun stage to copy the creams input dataset customSrun = {nextStage, conf, ...}: From 5ac581b573c9479069c4f10e71b280f78f0060e6 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 30 Mar 2021 16:14:32 +0200 Subject: [PATCH 574/987] creams: remove pure mpi from granularity --- garlic/exp/creams/granularity.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/garlic/exp/creams/granularity.nix b/garlic/exp/creams/granularity.nix index 27f443d..1a7c38d 100644 --- a/garlic/exp/creams/granularity.nix +++ b/garlic/exp/creams/granularity.nix @@ -19,9 +19,9 @@ let gitBranch = [ "garlic/tampi+isend+oss+task" "garlic/mpi+isend+omp+task" - "garlic/mpi+send+seq" ] ++ optionals (enableExtended) [ #"garlic/mpi+send+omp+fork" # Don't use fork for granularity + "garlic/mpi+send+seq" "garlic/mpi+send+omp+task" "garlic/mpi+send+oss+task" "garlic/mpi+isend+oss+task" From b7dcf7bc696aad395b364ace5cbe5f0afc982ce6 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 30 Mar 2021 16:35:47 +0200 Subject: [PATCH 575/987] rplot: add support for gziped datasets --- garlic/pp/rplot.nix | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/garlic/pp/rplot.nix b/garlic/pp/rplot.nix index 9366fb0..12b3b47 100644 --- a/garlic/pp/rplot.nix +++ b/garlic/pp/rplot.nix @@ -31,9 +31,16 @@ in stdenv.mkDerivation { export FONTCONFIG_PATH=${fontconfig.out}/etc/fonts mkdir -p $out cd $out - ln -s ${dataset} input + dataset="${dataset}" + + ln -s $dataset input Rscript --vanilla ${script} ${dataset} - jq -c .total_time input |\ + + if [ "''${dataset##*.}" == gz ]; then + gunzip --stdout $dataset + else + cat $dataset + fi | jq -c .total_time |\ awk '{s+=$1} END {printf "%f\n", s/60}' > total_job_time_minutes ''; } From e4ab177d6cdfae7c35ac39537dc2798078446e25 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 5 Feb 2021 12:05:18 +0100 Subject: [PATCH 576/987] saiph: remove dangerous Intel MPI envvar It is no longer used, as we have moved to the release library version. --- garlic/exp/saiph/granularity.nix | 1 - garlic/exp/saiph/numcomm.nix | 1 - 2 files changed, 2 deletions(-) diff --git a/garlic/exp/saiph/granularity.nix b/garlic/exp/saiph/granularity.nix index f0db5c5..b27827a 100644 --- a/garlic/exp/saiph/granularity.nix +++ b/garlic/exp/saiph/granularity.nix @@ -49,7 +49,6 @@ let env = '' export OMP_NUM_THREADS=${toString hw.cpusPerSocket} export NANOS6_REPORT_PREFIX="#" - export I_MPI_THREAD_SPLIT=1 export ASAN_SYMBOLIZER_PATH=${bsc.clangOmpss2Unwrapped}/bin/llvm-symbolizer ''; }; diff --git a/garlic/exp/saiph/numcomm.nix b/garlic/exp/saiph/numcomm.nix index 891f78e..03bd7e2 100644 --- a/garlic/exp/saiph/numcomm.nix +++ b/garlic/exp/saiph/numcomm.nix @@ -47,7 +47,6 @@ let env = '' export OMP_NUM_THREADS=24 export NANOS6_REPORT_PREFIX="#" - export I_MPI_THREAD_SPLIT=1 export ASAN_SYMBOLIZER_PATH=${bsc.clangOmpss2Unwrapped}/bin/llvm-symbolizer ''; }; From 830d64892590f5b065c48f5122df292688da45a9 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 5 Feb 2021 12:07:22 +0100 Subject: [PATCH 577/987] saiph: reduce the number of loops The current app Heat3D_vect has a long initialization time --- garlic/exp/saiph/granularity.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/garlic/exp/saiph/granularity.nix b/garlic/exp/saiph/granularity.nix index b27827a..2cbde8d 100644 --- a/garlic/exp/saiph/granularity.nix +++ b/garlic/exp/saiph/granularity.nix @@ -28,7 +28,7 @@ let gitBranch = "garlic/tampi+isend+oss+task+simd"; # Repeat the execution of each unit 50 times - loops = 50; + loops = 10; # Resources qos = "debug"; From a4b2dfddb489ad0c95a86537f558c7460722174b Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 23 Feb 2021 11:49:14 +0100 Subject: [PATCH 578/987] saiph: update granularity experiment --- garlic/exp/saiph/granularity.nix | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/garlic/exp/saiph/granularity.nix b/garlic/exp/saiph/granularity.nix index 2cbde8d..43e251a 100644 --- a/garlic/exp/saiph/granularity.nix +++ b/garlic/exp/saiph/granularity.nix @@ -11,7 +11,7 @@ with stdenv.lib; let # Initial variable configuration varConf = with bsc; { - nb = [ 1 2 4 8 ]; + nb = [ 1 2 4 8 16 32 64 ]; }; # Generate the complete configuration for each unit @@ -21,7 +21,7 @@ let inherit (targetMachine.config) hw; # saiph options - nbx = c.nb; + nbx = 1; nby = c.nb; nbz = c.nb; mpi = impi; @@ -32,7 +32,7 @@ let # Resources qos = "debug"; - time = "00:30:00"; + time = "02:00:00"; ntasksPerNode = 1; nodes = 1; cpusPerTask = hw.cpusPerSocket; @@ -48,7 +48,6 @@ let inherit nextStage; env = '' export OMP_NUM_THREADS=${toString hw.cpusPerSocket} - export NANOS6_REPORT_PREFIX="#" export ASAN_SYMBOLIZER_PATH=${bsc.clangOmpss2Unwrapped}/bin/llvm-symbolizer ''; }; From 99f33266092e6d73dbac2332c1c81f218227ca2a Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 23 Feb 2021 11:51:07 +0100 Subject: [PATCH 579/987] saiph: allow custom gitCommit --- garlic/apps/saiph/default.nix | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/garlic/apps/saiph/default.nix b/garlic/apps/saiph/default.nix index 616350e..f9e315f 100644 --- a/garlic/apps/saiph/default.nix +++ b/garlic/apps/saiph/default.nix @@ -7,6 +7,7 @@ , vtk , boost , gitBranch ? "master" +, gitCommit ? null , numComm ? null , nbx ? null , nby ? null @@ -20,10 +21,13 @@ with stdenv.lib; stdenv.mkDerivation rec { name = "saiph"; - src = builtins.fetchGit { + inherit gitBranch gitCommit; + src = builtins.fetchGit ({ url = "ssh://git@bscpm03.bsc.es/DSLs/saiph.git"; ref = "${gitBranch}"; - }; + } // (if (gitCommit != null) then { + rev = gitCommit; + } else {})); programPath = "/bin/Heat3D_vect"; From 992af14c7fb40f077893672fb1300454b301980c Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 23 Feb 2021 11:52:42 +0100 Subject: [PATCH 580/987] saiph: add scaling experiment --- garlic/exp/index.nix | 1 + garlic/exp/saiph/scaling.nix | 73 +++++++++++++++++ garlic/fig/index.nix | 3 +- garlic/fig/saiph/scaling.R | 151 +++++++++++++++++++++++++++++++++++ 4 files changed, 227 insertions(+), 1 deletion(-) create mode 100644 garlic/exp/saiph/scaling.nix create mode 100644 garlic/fig/saiph/scaling.R diff --git a/garlic/exp/index.nix b/garlic/exp/index.nix index 68cedd9..1d71c1e 100644 --- a/garlic/exp/index.nix +++ b/garlic/exp/index.nix @@ -34,6 +34,7 @@ saiph = { numcomm = callPackage ./saiph/numcomm.nix { }; granularity = callPackage ./saiph/granularity.nix { }; + scaling = callPackage ./saiph/scaling.nix { }; }; creams = rec { diff --git a/garlic/exp/saiph/scaling.nix b/garlic/exp/saiph/scaling.nix new file mode 100644 index 0000000..3ea0c3b --- /dev/null +++ b/garlic/exp/saiph/scaling.nix @@ -0,0 +1,73 @@ +{ + stdenv +, stdexp +, bsc +, targetMachine +, stages +}: + +with stdenv.lib; + +let + # Initial variable configuration + varConf = with bsc; { + nb = [ 1 2 4 8 16 32 64 ]; + nodes = [ 1 2 4 ]; + gitCommit = [ + "3ecae7c209ec3e33d1108ae4783d7e733d54f2ca" + ]; + }; + + # Generate the complete configuration for each unit + genConf = with bsc; c: targetMachine.config // rec { + expName = "saiph"; + unitName = "${expName}-N${toString nodes}" + + "-nbx${toString nbx}-nby${toString nby}"; + + inherit (targetMachine.config) hw; + + # saiph options + nbx = 1; + nby = c.nb; + nbz = c.nb; + mpi = impi; + gitBranch = "garlic/tampi+isend+oss+task+simd"; + inherit (c) gitCommit; + + # Repeat the execution of each unit 50 times + loops = 10; + + # Resources + qos = "bsc_cs"; + ntasksPerNode = 1; + nodes = c.nodes; + cpusPerTask = hw.cpusPerSocket; + jobName = "${unitName}"; + }; + + # Compute the array of configurations + configs = stdexp.buildConfigs { + inherit varConf genConf; + }; + + exec = {nextStage, conf, ...}: with conf; stages.exec { + inherit nextStage; + env = '' + export OMP_NUM_THREADS=${toString hw.cpusPerSocket} + export ASAN_SYMBOLIZER_PATH=${bsc.clangOmpss2Unwrapped}/bin/llvm-symbolizer + ''; + }; + + program = {nextStage, conf, ...}: + let + customPkgs = stdexp.replaceMpi conf.mpi; + in + customPkgs.apps.saiph.override { + inherit (conf) nbx nby nbz mpi gitBranch gitCommit; + }; + + pipeline = stdexp.stdPipeline ++ [ exec program ]; + +in + + stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/fig/index.nix b/garlic/fig/index.nix index 201d68f..0d60563 100644 --- a/garlic/fig/index.nix +++ b/garlic/fig/index.nix @@ -42,7 +42,8 @@ in }; saiph = with exp.saiph; { - granularity = stdPlot ./saiph/granularity.R [ granularity ]; + granularity = rPlotExp ./saiph/granularity.R [ granularity ]; + scaling = rPlotExp ./saiph/scaling.R [ scaling ]; }; heat = with exp.heat; { diff --git a/garlic/fig/saiph/scaling.R b/garlic/fig/saiph/scaling.R new file mode 100644 index 0000000..dc587e3 --- /dev/null +++ b/garlic/fig/saiph/scaling.R @@ -0,0 +1,151 @@ +library(ggplot2) +library(dplyr) +library(scales) +library(jsonlite) + +args=commandArgs(trailingOnly=TRUE) + +# Read the timetable from args[1] +input_file = "input.json" +if (length(args)>0) { input_file = args[1] } + +# Load the dataset in NDJSON format +dataset = jsonlite::stream_in(file(input_file)) %>% + jsonlite::flatten() + + +# We only need the nblocks and time +df = select(dataset, config.nby, config.nodes, time, total_time) %>% + rename(nby=config.nby, nnodes=config.nodes) + +df$nby = as.factor(df$nby) +df$nodes = as.factor(df$nnodes) + +# Normalize the time by the median +D=group_by(df, nby, nodes) %>% + mutate(tmedian = median(time)) %>% + mutate(ttmedian = median(total_time)) %>% + mutate(tnorm = time / tmedian - 1) %>% + mutate(bad = max(ifelse(abs(tnorm) >= 0.01, 1, 0))) %>% + mutate(tn = tmedian * nnodes) %>% + ungroup() + +D$bad = as.factor(D$bad) + + +print(D) + +ppi=300 +h=5 +w=5 + +png("box.png", width=w*ppi, height=h*ppi, res=ppi) +# +# +# +# Create the plot with the normalized time vs nblocks +p = ggplot(data=D, aes(x=nby, y=tnorm, color=bad)) + + + # Labels + labs(x="nby", y="Normalized time", + title=sprintf("Saiph-Heat3D normalized time"), + subtitle=input_file) + + + # Center the title + #theme(plot.title = element_text(hjust = 0.5)) + + + # Black and white mode (useful for printing) + #theme_bw() + + + # Add the maximum allowed error lines + geom_hline(yintercept=c(-0.01, 0.01), + linetype="dashed", color="gray") + + + # Draw boxplots + geom_boxplot() + + scale_color_manual(values=c("black", "brown")) + + + #scale_y_continuous(breaks = scales::pretty_breaks(n = 10)) + + + theme_bw() + + + theme(plot.subtitle=element_text(size=8)) + + theme(legend.position = "none") + #theme(legend.position = c(0.85, 0.85)) + + + + +# Render the plot +print(p) + +## Save the png image +dev.off() +# +png("scatter.png", width=w*ppi, height=h*ppi, res=ppi) +# +## Create the plot with the normalized time vs nblocks +p = ggplot(D, aes(x=nby, y=time)) + + + labs(x="nby", y="Time (s)", + title=sprintf("Saiph-Heat3D granularity"), + subtitle=input_file) + + theme_bw() + + theme(plot.subtitle=element_text(size=8)) + + theme(legend.position = c(0.5, 0.88)) + + + geom_point(shape=21, size=3) + + #scale_x_continuous(trans=log2_trans()) + + scale_y_continuous(trans=log2_trans()) + +# Render the plot +print(p) + +# Save the png image +dev.off() + +png("wasted.png", width=w*ppi, height=h*ppi, res=ppi) +# +## Create the plot with the normalized time vs nblocks +p = ggplot(D, aes(x=nby, y=time)) + + + labs(x="nby", y="Time (s)", + title=sprintf("Saiph-Heat3D granularity"), + subtitle=input_file) + + theme_bw() + + theme(plot.subtitle=element_text(size=8)) + + + geom_point(shape=21, size=3) + + geom_point(aes(y=total_time), shape=1, size=3, color="red") + + geom_line(aes(y=tmedian, color=nodes, group=nodes)) + + geom_line(aes(y=ttmedian, color=nodes, group=nodes)) + + #scale_x_continuous(trans=log2_trans()) + + scale_y_continuous(trans=log2_trans()) + +# Render the plot +print(p) + +# Save the png image +dev.off() + +png("test.png", width=w*ppi, height=h*ppi, res=ppi) +# +## Create the plot with the normalized time vs nblocks +p = ggplot(D, aes(x=nby, y=tn)) + + + labs(x="nby", y="Time (s) * nodes", + title=sprintf("Saiph-Heat3D granularity"), + subtitle=input_file) + + theme_bw() + + theme(plot.subtitle=element_text(size=8)) + + + geom_point(shape=21, size=3) + + geom_line(aes(color=nodes, group=nodes)) + + #scale_x_continuous(trans=log2_trans()) + + scale_y_continuous(trans=log2_trans()) + +# Render the plot +print(p) + +# Save the png image +dev.off() From 63b08fa4e8e528af3377afb9cf3962e137c7822d Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 23 Feb 2021 11:53:34 +0100 Subject: [PATCH 581/987] saiph: use nby for granularity plot --- garlic/fig/saiph/granularity.R | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/garlic/fig/saiph/granularity.R b/garlic/fig/saiph/granularity.R index 2b7f377..ba093a8 100644 --- a/garlic/fig/saiph/granularity.R +++ b/garlic/fig/saiph/granularity.R @@ -15,13 +15,13 @@ dataset = jsonlite::stream_in(file(input_file)) %>% # We only need the nblocks and time -df = select(dataset, config.nbx, time) %>% - rename(nbx=config.nbx) +df = select(dataset, config.nby, time) %>% + rename(nby=config.nby) -df$nbx = as.factor(df$nbx) +df$nby = as.factor(df$nby) # Normalize the time by the median -D=group_by(df, nbx) %>% +D=group_by(df, nby) %>% mutate(tnorm = time / median(time) - 1) %>% mutate(bad = max(ifelse(abs(tnorm) >= 0.01, 1, 0))) @@ -39,10 +39,10 @@ png("box.png", width=w*ppi, height=h*ppi, res=ppi) # # # Create the plot with the normalized time vs nblocks -p = ggplot(data=D, aes(x=nbx, y=tnorm, color=bad)) + +p = ggplot(data=D, aes(x=nby, y=tnorm, color=bad)) + # Labels - labs(x="nbx", y="Normalized time", + labs(x="nby", y="Normalized time", title=sprintf("Saiph-Heat3D normalized time"), subtitle=input_file) + @@ -80,9 +80,9 @@ dev.off() png("scatter.png", width=w*ppi, height=h*ppi, res=ppi) # ## Create the plot with the normalized time vs nblocks -p = ggplot(D, aes(x=nbx, y=time)) + +p = ggplot(D, aes(x=nby, y=time)) + - labs(x="nbx", y="Time (s)", + labs(x="nby", y="Time (s)", title=sprintf("Saiph-Heat3D granularity"), subtitle=input_file) + theme_bw() + From 38d4d0b48ca40c5498021965568fe89f4aad57ba Mon Sep 17 00:00:00 2001 From: Sandra Date: Fri, 19 Feb 2021 11:06:50 +0100 Subject: [PATCH 582/987] saiph: delete extrae XML configuration files --- garlic/exp/saiph/extrae.xml | 210 ----------------------- garlic/exp/saiph/extraeOPENMPI_OMP.xml | 82 --------- garlic/exp/saiph/extraeOPENMPI_OMPSS.xml | 99 ----------- garlic/exp/saiph/myextrae.xml | 0 4 files changed, 391 deletions(-) delete mode 100644 garlic/exp/saiph/extrae.xml delete mode 100644 garlic/exp/saiph/extraeOPENMPI_OMP.xml delete mode 100644 garlic/exp/saiph/extraeOPENMPI_OMPSS.xml delete mode 100644 garlic/exp/saiph/myextrae.xml diff --git a/garlic/exp/saiph/extrae.xml b/garlic/exp/saiph/extrae.xml deleted file mode 100644 index 45a7574..0000000 --- a/garlic/exp/saiph/extrae.xml +++ /dev/null @@ -1,210 +0,0 @@ - - - - - - - - - - - - - - - - - 1-3 - - 1-5 - - 1-3 - - 1-3 - - 1-3 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - PAPI_TOT_INS,PAPI_TOT_CYC - - - - - - - - - - - - - - - - - TRACE - - 5 - - /scratch - - /gpfs/scratch/bsc41/bsc41273 - - - - - - 5000000 - - - - - - - - /gpfs/scratch/bsc41/bsc41273/control - - - - - - - 10M - - - - - - - - - - - 500u - - - - - - - - - - - - - - - - - - - - diff --git a/garlic/exp/saiph/extraeOPENMPI_OMP.xml b/garlic/exp/saiph/extraeOPENMPI_OMP.xml deleted file mode 100644 index a8e46e3..0000000 --- a/garlic/exp/saiph/extraeOPENMPI_OMP.xml +++ /dev/null @@ -1,82 +0,0 @@ - - - - - - - - - - - - - - - - - - - PAPI_TOT_INS,PAPI_TOT_CYC,PAPI_L1_DCM,PAPI_L2_DCM,PAPI_L3_TCM,PAPI_BR_INS,PAPI_BR_MSP,RESOURCE_STALLS - - - PAPI_TOT_INS,PAPI_TOT_CYC,PAPI_VEC_SP,PAPI_SR_INS,PAPI_LD_INS,PAPI_FP_INS - PAPI_TOT_CYC - - - - - - - - - - - - TRACE - 5 - /scratch - /gpfs/scratch/bsc41/bsc41273 - - - - 5000000 - - - - - /gpfs/scratch/bsc41/bsc41273/control - - - - - 10M - - - - - - - - - - - - - - - diff --git a/garlic/exp/saiph/extraeOPENMPI_OMPSS.xml b/garlic/exp/saiph/extraeOPENMPI_OMPSS.xml deleted file mode 100644 index 7cd2fdc..0000000 --- a/garlic/exp/saiph/extraeOPENMPI_OMPSS.xml +++ /dev/null @@ -1,99 +0,0 @@ - - - - - - - - - - - - - - - - - 1-3 - 1-5 - 1-3 - 1-3 - 1-3 - - - - - - - - - - PAPI_TOT_INS,PAPI_TOT_CYC,PAPI_L1_DCM,PAPI_L2_DCM,PAPI_L3_TCM,PAPI_BR_INS,PAPI_BR_MSP,RESOURCE_STALLS - - - PAPI_TOT_INS,PAPI_TOT_CYC,PAPI_VEC_SP,PAPI_SR_INS,PAPI_LD_INS,PAPI_FP_INS - PAPI_TOT_CYC - - - - - - - - - - - - TRACE - 5 - /scratch - /gpfs/scratch/bsc41/bsc41273 - - - - 5000000 - - - - - /gpfs/scratch/bsc41/bsc41273/control - - - - - 10M - - - - - - 500u - - - - - - - - - - - - - - diff --git a/garlic/exp/saiph/myextrae.xml b/garlic/exp/saiph/myextrae.xml deleted file mode 100644 index e69de29..0000000 From a2306eb9419eecf06fc8e2bed02136a56df78e33 Mon Sep 17 00:00:00 2001 From: Sandra Date: Fri, 19 Feb 2021 11:07:58 +0100 Subject: [PATCH 583/987] saiph: add some blocking experiments --- garlic/exp/saiph/blocking.nix | 68 +++++++++++++++++++++++++++++++ garlic/exp/saiph/blocking_Y.nix | 69 ++++++++++++++++++++++++++++++++ garlic/exp/saiph/blocking_YZ.nix | 69 ++++++++++++++++++++++++++++++++ garlic/exp/saiph/blocking_Z.nix | 69 ++++++++++++++++++++++++++++++++ garlic/exp/saiph/blocking_ZY.nix | 69 ++++++++++++++++++++++++++++++++ 5 files changed, 344 insertions(+) create mode 100644 garlic/exp/saiph/blocking.nix create mode 100644 garlic/exp/saiph/blocking_Y.nix create mode 100644 garlic/exp/saiph/blocking_YZ.nix create mode 100644 garlic/exp/saiph/blocking_Z.nix create mode 100644 garlic/exp/saiph/blocking_ZY.nix diff --git a/garlic/exp/saiph/blocking.nix b/garlic/exp/saiph/blocking.nix new file mode 100644 index 0000000..d8fc11f --- /dev/null +++ b/garlic/exp/saiph/blocking.nix @@ -0,0 +1,68 @@ +{ + stdenv +, stdexp +, bsc +, targetMachine +, stages +}: + +with stdenv.lib; + +let + # Initial variable configuration + varConf = with bsc; { + nb = [ 2 4 8 16 32 ]; + }; + + # Generate the complete configuration for each unit + genConf = with bsc; c: targetMachine.config // rec { + expName = "saiph.blocking"; + unitName = "${expName}.1-nby-nbz-${toString nby}-${toString nbz}"; + inherit (targetMachine.config) hw; + + # saiph options + nby = c.nb; + nbz = c.nb; + mpi = impi; + gitBranch = "garlic/tampi+isend+oss+task+simd"; + + # Repeat the execution of each unit 50 times + loops = 30; + + # Resources + cachelineBytes = hw.cachelineBytes; + qos = "debug"; + time = "00:50:00"; + nodes = 1; + ntasksPerNode = hw.socketsPerNode; + cpusPerTask = hw.cpusPerSocket; + jobName = "${unitName}-${gitBranch}"; + }; + + # Compute the array of configurations + configs = stdexp.buildConfigs { + inherit varConf genConf; + }; + + exec = {nextStage, conf, ...}: with conf; stages.exec { + inherit nextStage; + env = '' + export NANOS6_REPORT_PREFIX="#" + export I_MPI_THREAD_SPLIT=1 + export ASAN_SYMBOLIZER_PATH=${bsc.clangOmpss2Unwrapped}/bin/llvm-symbolizer + ''; + }; + + program = {nextStage, conf, ...}: with conf; + let + customPkgs = stdexp.replaceMpi conf.mpi; + in + customPkgs.apps.saiph.override { + inherit nby nbz mpi gitBranch cachelineBytes; + }; + + pipeline = stdexp.stdPipeline ++ [ exec program ]; + +in + + stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/saiph/blocking_Y.nix b/garlic/exp/saiph/blocking_Y.nix new file mode 100644 index 0000000..1f5b1ed --- /dev/null +++ b/garlic/exp/saiph/blocking_Y.nix @@ -0,0 +1,69 @@ +{ + stdenv +, stdexp +, bsc +, targetMachine +, stages +}: + +with stdenv.lib; + +let + # Initial variable configuration + varConf = with bsc; { + nb = [ 1 2 4 8 16 32 64 128 ]; + }; + + # Generate the complete configuration for each unit + genConf = with bsc; c: targetMachine.config // rec { + expName = "saiph.blockingY"; + unitName = "${expName}.nbx-nby-nbz-${toString nbx}-${toString nby}-${toString nbz}"; + inherit (targetMachine.config) hw; + + # saiph options + nbx = 1; + nby = c.nb; + nbz = 1; + mpi = impi; + gitBranch = "garlic/tampi+isend+oss+task+simd"; + + # Repeat the execution of each unit 50 times + loops = 30; + + # Resources + cachelineBytes = hw.cachelineBytes; + qos = "debug"; + time = "01:00:00"; + nodes = 1; + ntasksPerNode = hw.socketsPerNode; + cpusPerTask = hw.cpusPerSocket; + jobName = "${unitName}-${gitBranch}"; + }; + + # Compute the array of configurations + configs = stdexp.buildConfigs { + inherit varConf genConf; + }; + + exec = {nextStage, conf, ...}: with conf; stages.exec { + inherit nextStage; + env = '' + export NANOS6_REPORT_PREFIX="#" + export I_MPI_THREAD_SPLIT=1 + export ASAN_SYMBOLIZER_PATH=${bsc.clangOmpss2Unwrapped}/bin/llvm-symbolizer + ''; + }; + + program = {nextStage, conf, ...}: with conf; + let + customPkgs = stdexp.replaceMpi conf.mpi; + in + customPkgs.apps.saiph.override { + inherit nbx nby nbz mpi gitBranch cachelineBytes; + }; + + pipeline = stdexp.stdPipeline ++ [ exec program ]; + +in + + stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/saiph/blocking_YZ.nix b/garlic/exp/saiph/blocking_YZ.nix new file mode 100644 index 0000000..a283727 --- /dev/null +++ b/garlic/exp/saiph/blocking_YZ.nix @@ -0,0 +1,69 @@ +{ + stdenv +, stdexp +, bsc +, targetMachine +, stages +}: + +with stdenv.lib; + +let + # Initial variable configuration + varConf = with bsc; { + nb = [ 4 8 16 32 64 128 ]; + }; + + # Generate the complete configuration for each unit + genConf = with bsc; c: targetMachine.config // rec { + expName = "saiph.blockingY"; + unitName = "${expName}.nbx-nby-nbz-${toString nbx}-${toString nby}-${toString nbz}"; + inherit (targetMachine.config) hw; + + # saiph options + nbx = 1; + nby = 8; + nbz = c.nb; + mpi = impi; + gitBranch = "garlic/tampi+isend+oss+task+simd"; + + # Repeat the execution of each unit 50 times + loops = 30; + + # Resources + cachelineBytes = hw.cachelineBytes; + qos = "debug"; + time = "01:00:00"; + nodes = 1; + ntasksPerNode = hw.socketsPerNode; + cpusPerTask = hw.cpusPerSocket; + jobName = "${unitName}-${gitBranch}"; + }; + + # Compute the array of configurations + configs = stdexp.buildConfigs { + inherit varConf genConf; + }; + + exec = {nextStage, conf, ...}: with conf; stages.exec { + inherit nextStage; + env = '' + export NANOS6_REPORT_PREFIX="#" + export I_MPI_THREAD_SPLIT=1 + export ASAN_SYMBOLIZER_PATH=${bsc.clangOmpss2Unwrapped}/bin/llvm-symbolizer + ''; + }; + + program = {nextStage, conf, ...}: with conf; + let + customPkgs = stdexp.replaceMpi conf.mpi; + in + customPkgs.apps.saiph.override { + inherit nbx nby nbz mpi gitBranch cachelineBytes; + }; + + pipeline = stdexp.stdPipeline ++ [ exec program ]; + +in + + stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/saiph/blocking_Z.nix b/garlic/exp/saiph/blocking_Z.nix new file mode 100644 index 0000000..d3ee3c5 --- /dev/null +++ b/garlic/exp/saiph/blocking_Z.nix @@ -0,0 +1,69 @@ +{ + stdenv +, stdexp +, bsc +, targetMachine +, stages +}: + +with stdenv.lib; + +let + # Initial variable configuration + varConf = with bsc; { + nb = [ 1 2 4 8 16 32 64 128 ]; + }; + + # Generate the complete configuration for each unit + genConf = with bsc; c: targetMachine.config // rec { + expName = "saiph.blockingZ"; + unitName = "${expName}.nbx-nby-nbz-${toString nbx}-${toString nby}-${toString nbz}"; + inherit (targetMachine.config) hw; + + # saiph options + nbx = 1; + nby = 1; + nbz = c.nb; + mpi = impi; + gitBranch = "garlic/tampi+isend+oss+task+simd"; + + # Repeat the execution of each unit 50 times + loops = 30; + + # Resources + cachelineBytes = hw.cachelineBytes; + qos = "debug"; + time = "01:00:00"; + nodes = 1; + ntasksPerNode = hw.socketsPerNode; + cpusPerTask = hw.cpusPerSocket; + jobName = "${unitName}-${gitBranch}"; + }; + + # Compute the array of configurations + configs = stdexp.buildConfigs { + inherit varConf genConf; + }; + + exec = {nextStage, conf, ...}: with conf; stages.exec { + inherit nextStage; + env = '' + export NANOS6_REPORT_PREFIX="#" + export I_MPI_THREAD_SPLIT=1 + export ASAN_SYMBOLIZER_PATH=${bsc.clangOmpss2Unwrapped}/bin/llvm-symbolizer + ''; + }; + + program = {nextStage, conf, ...}: with conf; + let + customPkgs = stdexp.replaceMpi conf.mpi; + in + customPkgs.apps.saiph.override { + inherit nbx nby nbz mpi gitBranch cachelineBytes; + }; + + pipeline = stdexp.stdPipeline ++ [ exec program ]; + +in + + stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/saiph/blocking_ZY.nix b/garlic/exp/saiph/blocking_ZY.nix new file mode 100644 index 0000000..12749f2 --- /dev/null +++ b/garlic/exp/saiph/blocking_ZY.nix @@ -0,0 +1,69 @@ +{ + stdenv +, stdexp +, bsc +, targetMachine +, stages +}: + +with stdenv.lib; + +let + # Initial variable configuration + varConf = with bsc; { + nb = [ 4 8 16 32 64 128 ]; + }; + + # Generate the complete configuration for each unit + genConf = with bsc; c: targetMachine.config // rec { + expName = "saiph.blockingZY"; + unitName = "${expName}.nbx-nby-nbz-${toString nbx}-${toString nby}-${toString nbz}"; + inherit (targetMachine.config) hw; + + # saiph options + nbx = 1; + nby = c.nb; + nbz = 8; + mpi = impi; + gitBranch = "garlic/tampi+isend+oss+task+simd"; + + # Repeat the execution of each unit 50 times + loops = 30; + + # Resources + cachelineBytes = hw.cachelineBytes; + qos = "debug"; + time = "01:00:00"; + nodes = 1; + ntasksPerNode = hw.socketsPerNode; + cpusPerTask = hw.cpusPerSocket; + jobName = "${unitName}-${gitBranch}"; + }; + + # Compute the array of configurations + configs = stdexp.buildConfigs { + inherit varConf genConf; + }; + + exec = {nextStage, conf, ...}: with conf; stages.exec { + inherit nextStage; + env = '' + export NANOS6_REPORT_PREFIX="#" + export I_MPI_THREAD_SPLIT=1 + export ASAN_SYMBOLIZER_PATH=${bsc.clangOmpss2Unwrapped}/bin/llvm-symbolizer + ''; + }; + + program = {nextStage, conf, ...}: with conf; + let + customPkgs = stdexp.replaceMpi conf.mpi; + in + customPkgs.apps.saiph.override { + inherit nbx nby nbz mpi gitBranch cachelineBytes; + }; + + pipeline = stdexp.stdPipeline ++ [ exec program ]; + +in + + stdexp.genExperiment { inherit configs pipeline; } From 0ac02053668acee1dd0c5b114ed7ce791148b208 Mon Sep 17 00:00:00 2001 From: Sandra Date: Fri, 19 Feb 2021 11:09:27 +0100 Subject: [PATCH 584/987] saiph: add figures for blocking experiment --- garlic/fig/saiph/blocking.R | 100 ++++++++++++++++++++++++ garlic/fig/saiph/blockingY_blocking_Z.R | 77 ++++++++++++++++++ garlic/fig/saiph/blocking_Y.R | 100 ++++++++++++++++++++++++ garlic/fig/saiph/blocking_YZ.R | 100 ++++++++++++++++++++++++ garlic/fig/saiph/blocking_Z.R | 100 ++++++++++++++++++++++++ garlic/fig/saiph/blocking_ZY.R | 100 ++++++++++++++++++++++++ garlic/fig/saiph/granBlock.R | 67 ++++++++++++++++ garlic/fig/saiph/strongScaling.R | 100 ++++++++++++++++++++++++ 8 files changed, 744 insertions(+) create mode 100644 garlic/fig/saiph/blocking.R create mode 100644 garlic/fig/saiph/blockingY_blocking_Z.R create mode 100644 garlic/fig/saiph/blocking_Y.R create mode 100644 garlic/fig/saiph/blocking_YZ.R create mode 100644 garlic/fig/saiph/blocking_Z.R create mode 100644 garlic/fig/saiph/blocking_ZY.R create mode 100644 garlic/fig/saiph/granBlock.R create mode 100644 garlic/fig/saiph/strongScaling.R diff --git a/garlic/fig/saiph/blocking.R b/garlic/fig/saiph/blocking.R new file mode 100644 index 0000000..9eda0cc --- /dev/null +++ b/garlic/fig/saiph/blocking.R @@ -0,0 +1,100 @@ +library(ggplot2) +library(dplyr) +library(scales) +library(jsonlite) + +args=commandArgs(trailingOnly=TRUE) + +# Read the timetable from args[1] +input_file = "input.json" +if (length(args)>0) { input_file = args[1] } + +# Load the dataset in NDJSON format +dataset = jsonlite::stream_in(file(input_file)) %>% + jsonlite::flatten() + + +# We only need the nblocks and time +df = select(dataset, config.nby, time) %>% + rename(nby=config.nby) + +df$nby = as.factor(df$nby) + +# Normalize the time by the median +D=group_by(df, nby) %>% + mutate(tnorm = time / median(time) - 1) %>% + mutate(bad = max(ifelse(abs(tnorm) >= 0.01, 1, 0))) + +D$bad = as.factor(D$bad) + + +print(D) + +ppi=300 +h=5 +w=5 + +png("box.png", width=w*ppi, height=h*ppi, res=ppi) +# +# +# +# Create the plot with the normalized time vs nblocks +p = ggplot(data=D, aes(x=nby, y=tnorm, color=bad)) + + + # Labels + labs(x="nb{y-z}", y="Normalized time", + title=sprintf("Saiph-Heat3D normalized time"), + subtitle=input_file) + + + # Center the title + #theme(plot.title = element_text(hjust = 0.5)) + + + # Black and white mode (useful for printing) + #theme_bw() + + + # Add the maximum allowed error lines + geom_hline(yintercept=c(-0.01, 0.01), + linetype="dashed", color="gray") + + + # Draw boxplots + geom_boxplot() + + scale_color_manual(values=c("black", "brown")) + + + #scale_y_continuous(breaks = scales::pretty_breaks(n = 10)) + + + theme_bw() + + + theme(plot.subtitle=element_text(size=8)) + + theme(legend.position = "none") + #theme(legend.position = c(0.85, 0.85)) + + + + +# Render the plot +print(p) + +## Save the png image +dev.off() +# +png("scatter.png", width=w*ppi, height=h*ppi, res=ppi) +# +## Create the plot with the normalized time vs nblocks +p = ggplot(D, aes(x=nby, y=time)) + + + labs(x="nb{y-z}", y="Time (s)", + title=sprintf("Saiph-Heat3D blocking-granularity"), + subtitle=input_file) + + theme_bw() + + theme(plot.subtitle=element_text(size=8)) + + theme(legend.position = c(0.5, 0.88)) + + + geom_point(shape=21, size=3) + + #scale_x_continuous(trans=log2_trans()) + + scale_y_continuous(trans=log2_trans()) + +# Render the plot +print(p) + +# Save the png image +dev.off() diff --git a/garlic/fig/saiph/blockingY_blocking_Z.R b/garlic/fig/saiph/blockingY_blocking_Z.R new file mode 100644 index 0000000..d4201d3 --- /dev/null +++ b/garlic/fig/saiph/blockingY_blocking_Z.R @@ -0,0 +1,77 @@ +library(ggplot2) +library(dplyr) +library(scales) +library(jsonlite) + +args=commandArgs(trailingOnly=TRUE) + +# Read the timetable from args[1] +input_file = "input1.json" +if (length(args)>0) { input_file = args[1] } + +input_file2 = "input2.json" +if (length(args)>0) { input_file2 = args[1] } + +# Load the dataset in NDJSON format +dataset = jsonlite::stream_in(file(input_file)) %>% + jsonlite::flatten() + +dataset2 = jsonlite::stream_in(file(input_file2)) %>% + jsonlite::flatten() + + +# We only need the nblocks and time +df = select(dataset, config.nby, time) %>% + rename(nby=config.nby) + +df$nby = as.factor(df$nby) + +df2 = select(dataset2, config.nbz, time) %>% + rename(nbz=config.nbz) + +df2$nbz = as.factor(df2$nbz) + + +# Normalize the time by the median +D=group_by(df, nby) %>% + mutate(tnorm = time / median(time) - 1) %>% + mutate(bad = max(ifelse(abs(tnorm) >= 0.01, 1, 0))) + +D$bad = as.factor(D$bad) + + +print(D) + +D2=group_by(df2, nbz) %>% + mutate(tnorm = time / median(time) - 1) %>% + mutate(bad = max(ifelse(abs(tnorm) >= 0.01, 1, 0))) + +D2$bad = as.factor(D2$bad) + +print(D) +print(D2) + +png("scatter-blockY8Z_yZ8.png", width=w*ppi, height=h*ppi, res=ppi) +# +## Create the plot with the normalized time vs nblocks +p = ggplot() + + geom_point(data=D, aes(x=nby, y=time, colour="nby blocks - nbz = 8"), shape=1, size=3) + + geom_point(data=D2, aes(x=nbz, y=time, colour="nby = 8 - nbz blocks"), shape=1, size=3) + + + labs(x="nb", y="Time (s)", + title=sprintf("Saiph-Heat3D blockingY/Z"), + subtitle=input_file) + + theme_bw() + + theme(plot.subtitle=element_text(size=8)) + + theme(legend.position = "right") + + + geom_point(shape=21, size=3) + + scale_colour_discrete("Blocked directions") + #+ scale_x_continuous(trans=log2_trans()) + #+ scale_y_continuous(trans=log2_trans()) + +# Render the plot +print(p) + +# Save the png image +dev.off() diff --git a/garlic/fig/saiph/blocking_Y.R b/garlic/fig/saiph/blocking_Y.R new file mode 100644 index 0000000..36c4ed5 --- /dev/null +++ b/garlic/fig/saiph/blocking_Y.R @@ -0,0 +1,100 @@ +library(ggplot2) +library(dplyr) +library(scales) +library(jsonlite) + +args=commandArgs(trailingOnly=TRUE) + +# Read the timetable from args[1] +input_file = "input.json" +if (length(args)>0) { input_file = args[1] } + +# Load the dataset in NDJSON format +dataset = jsonlite::stream_in(file(input_file)) %>% + jsonlite::flatten() + + +# We only need the nblocks and time +df = select(dataset, config.nby, time) %>% + rename(nby=config.nby) + +df$nby = as.factor(df$nby) + +# Normalize the time by the median +D=group_by(df, nby) %>% + mutate(tnorm = time / median(time) - 1) %>% + mutate(bad = max(ifelse(abs(tnorm) >= 0.01, 1, 0))) + +D$bad = as.factor(D$bad) + + +print(D) + +ppi=300 +h=5 +w=5 + +png("box.png", width=w*ppi, height=h*ppi, res=ppi) +# +# +# +# Create the plot with the normalized time vs nblocks +p = ggplot(data=D, aes(x=nby, y=tnorm, color=bad)) + + + # Labels + labs(x="nby", y="Normalized time", + title=sprintf("Saiph-Heat3D normalized time"), + subtitle=input_file) + + + # Center the title + #theme(plot.title = element_text(hjust = 0.5)) + + + # Black and white mode (useful for printing) + #theme_bw() + + + # Add the maximum allowed error lines + geom_hline(yintercept=c(-0.01, 0.01), + linetype="dashed", color="gray") + + + # Draw boxplots + geom_boxplot() + + scale_color_manual(values=c("black", "brown")) + + + #scale_y_continuous(breaks = scales::pretty_breaks(n = 10)) + + + theme_bw() + + + theme(plot.subtitle=element_text(size=8)) + + theme(legend.position = "none") + #theme(legend.position = c(0.85, 0.85)) + + + + +# Render the plot +print(p) + +## Save the png image +dev.off() +# +png("scatter.png", width=w*ppi, height=h*ppi, res=ppi) +# +## Create the plot with the normalized time vs nblocks +p = ggplot(D, aes(x=nby, y=time)) + + + labs(x="nby", y="Time (s)", + title=sprintf("Saiph-Heat3D blockingY"), + subtitle=input_file) + + theme_bw() + + theme(plot.subtitle=element_text(size=8)) + + theme(legend.position = c(0.5, 0.88)) + + + geom_point(shape=21, size=3) + #+ scale_x_continuous(trans=log2_trans()) + #+ scale_y_continuous(trans=log2_trans()) + +# Render the plot +print(p) + +# Save the png image +dev.off() diff --git a/garlic/fig/saiph/blocking_YZ.R b/garlic/fig/saiph/blocking_YZ.R new file mode 100644 index 0000000..79cd497 --- /dev/null +++ b/garlic/fig/saiph/blocking_YZ.R @@ -0,0 +1,100 @@ +library(ggplot2) +library(dplyr) +library(scales) +library(jsonlite) + +args=commandArgs(trailingOnly=TRUE) + +# Read the timetable from args[1] +input_file = "input.json" +if (length(args)>0) { input_file = args[1] } + +# Load the dataset in NDJSON format +dataset = jsonlite::stream_in(file(input_file)) %>% + jsonlite::flatten() + + +# We only need the nblocks and time +df = select(dataset, config.nbz, time) %>% + rename(nbz=config.nbz) + +df$nbz = as.factor(df$nbz) + +# Normalize the time by the median +D=group_by(df, nbz) %>% + mutate(tnorm = time / median(time) - 1) %>% + mutate(bad = max(ifelse(abs(tnorm) >= 0.01, 1, 0))) + +D$bad = as.factor(D$bad) + + +print(D) + +ppi=300 +h=5 +w=5 + +png("box.png", width=w*ppi, height=h*ppi, res=ppi) +# +# +# +# Create the plot with the normalized time vs nblocks +p = ggplot(data=D, aes(x=nbz, y=tnorm, color=bad)) + + + # Labels + labs(x="nbz", y="Normalized time", + title=sprintf("Saiph-Heat3D normalized time - nby = 8"), + subtitle=input_file) + + + # Center the title + #theme(plot.title = element_text(hjust = 0.5)) + + + # Black and white mode (useful for printing) + #theme_bw() + + + # Add the maximum allowed error lines + geom_hline(yintercept=c(-0.01, 0.01), + linetype="dashed", color="gray") + + + # Draw boxplots + geom_boxplot() + + scale_color_manual(values=c("black", "brown")) + + + #scale_y_continuous(breaks = scales::pretty_breaks(n = 10)) + + + theme_bw() + + + theme(plot.subtitle=element_text(size=8)) + + theme(legend.position = "none") + #theme(legend.position = c(0.85, 0.85)) + + + + +# Render the plot +print(p) + +## Save the png image +dev.off() +# +png("scatter.png", width=w*ppi, height=h*ppi, res=ppi) +# +## Create the plot with the normalized time vs nblocks +p = ggplot(D, aes(x=nbz, y=time)) + + + labs(x="nbz", y="Time (s)", + title=sprintf("Saiph-Heat3D blockingZ - nby = 8"), + subtitle=input_file) + + theme_bw() + + theme(plot.subtitle=element_text(size=8)) + + theme(legend.position = c(0.5, 0.88)) + + + geom_point(shape=21, size=3) + #+ scale_x_continuous(trans=log2_trans()) + #+ scale_y_continuous(trans=log2_trans()) + +# Render the plot +print(p) + +# Save the png image +dev.off() diff --git a/garlic/fig/saiph/blocking_Z.R b/garlic/fig/saiph/blocking_Z.R new file mode 100644 index 0000000..13b2b85 --- /dev/null +++ b/garlic/fig/saiph/blocking_Z.R @@ -0,0 +1,100 @@ +library(ggplot2) +library(dplyr) +library(scales) +library(jsonlite) + +args=commandArgs(trailingOnly=TRUE) + +# Read the timetable from args[1] +input_file = "input.json" +if (length(args)>0) { input_file = args[1] } + +# Load the dataset in NDJSON format +dataset = jsonlite::stream_in(file(input_file)) %>% + jsonlite::flatten() + + +# We only need the nblocks and time +df = select(dataset, config.nbz, time) %>% + rename(nbz=config.nbz) + +df$nbz = as.factor(df$nbz) + +# Normalize the time by the median +D=group_by(df, nbz) %>% + mutate(tnorm = time / median(time) - 1) %>% + mutate(bad = max(ifelse(abs(tnorm) >= 0.01, 1, 0))) + +D$bad = as.factor(D$bad) + + +print(D) + +ppi=300 +h=5 +w=5 + +png("box.png", width=w*ppi, height=h*ppi, res=ppi) +# +# +# +# Create the plot with the normalized time vs nblocks +p = ggplot(data=D, aes(x=nbz, y=tnorm, color=bad)) + + + # Labels + labs(x="nbz", y="Normalized time", + title=sprintf("Saiph-Heat3D normalized time"), + subtitle=input_file) + + + # Center the title + #theme(plot.title = element_text(hjust = 0.5)) + + + # Black and white mode (useful for printing) + #theme_bw() + + + # Add the maximum allowed error lines + geom_hline(yintercept=c(-0.01, 0.01), + linetype="dashed", color="gray") + + + # Draw boxplots + geom_boxplot() + + scale_color_manual(values=c("black", "brown")) + + + #scale_y_continuous(breaks = scales::pretty_breaks(n = 10)) + + + theme_bw() + + + theme(plot.subtitle=element_text(size=8)) + + theme(legend.position = "none") + #theme(legend.position = c(0.85, 0.85)) + + + + +# Render the plot +print(p) + +## Save the png image +dev.off() +# +png("scatter.png", width=w*ppi, height=h*ppi, res=ppi) +# +## Create the plot with the normalized time vs nblocks +p = ggplot(D, aes(x=nbz, y=time)) + + + labs(x="nbz", y="Time (s)", + title=sprintf("Saiph-Heat3D blockingZ"), + subtitle=input_file) + + theme_bw() + + theme(plot.subtitle=element_text(size=8)) + + theme(legend.position = c(0.5, 0.88)) + + + geom_point(shape=21, size=3) + #+ scale_x_continuous(trans=log2_trans()) + #+ scale_y_continuous(trans=log2_trans()) + +# Render the plot +print(p) + +# Save the png image +dev.off() diff --git a/garlic/fig/saiph/blocking_ZY.R b/garlic/fig/saiph/blocking_ZY.R new file mode 100644 index 0000000..ef40d9c --- /dev/null +++ b/garlic/fig/saiph/blocking_ZY.R @@ -0,0 +1,100 @@ +library(ggplot2) +library(dplyr) +library(scales) +library(jsonlite) + +args=commandArgs(trailingOnly=TRUE) + +# Read the timetable from args[1] +input_file = "input.json" +if (length(args)>0) { input_file = args[1] } + +# Load the dataset in NDJSON format +dataset = jsonlite::stream_in(file(input_file)) %>% + jsonlite::flatten() + + +# We only need the nblocks and time +df = select(dataset, config.nby, time) %>% + rename(nby=config.nby) + +df$nby = as.factor(df$nby) + +# Normalize the time by the median +D=group_by(df, nby) %>% + mutate(tnorm = time / median(time) - 1) %>% + mutate(bad = max(ifelse(abs(tnorm) >= 0.01, 1, 0))) + +D$bad = as.factor(D$bad) + + +print(D) + +ppi=300 +h=5 +w=5 + +png("box.png", width=w*ppi, height=h*ppi, res=ppi) +# +# +# +# Create the plot with the normalized time vs nblocks +p = ggplot(data=D, aes(x=nby, y=tnorm, color=bad)) + + + # Labels + labs(x="nby", y="Normalized time", + title=sprintf("Saiph-Heat3D normalized time - nbz = 8"), + subtitle=input_file) + + + # Center the title + #theme(plot.title = element_text(hjust = 0.5)) + + + # Black and white mode (useful for printing) + #theme_bw() + + + # Add the maximum allowed error lines + geom_hline(yintercept=c(-0.01, 0.01), + linetype="dashed", color="gray") + + + # Draw boxplots + geom_boxplot() + + scale_color_manual(values=c("black", "brown")) + + + #scale_y_continuous(breaks = scales::pretty_breaks(n = 10)) + + + theme_bw() + + + theme(plot.subtitle=element_text(size=8)) + + theme(legend.position = "none") + #theme(legend.position = c(0.85, 0.85)) + + + + +# Render the plot +print(p) + +## Save the png image +dev.off() +# +png("scatter.png", width=w*ppi, height=h*ppi, res=ppi) +# +## Create the plot with the normalized time vs nblocks +p = ggplot(D, aes(x=nby, y=time)) + + + labs(x="nby", y="Time (s)", + title=sprintf("Saiph-Heat3D blockingY - nbz = 8"), + subtitle=input_file) + + theme_bw() + + theme(plot.subtitle=element_text(size=8)) + + theme(legend.position = c(0.5, 0.88)) + + + geom_point(shape=21, size=3) + #+ scale_x_continuous(trans=log2_trans()) + #+ scale_y_continuous(trans=log2_trans()) + +# Render the plot +print(p) + +# Save the png image +dev.off() diff --git a/garlic/fig/saiph/granBlock.R b/garlic/fig/saiph/granBlock.R new file mode 100644 index 0000000..059d9a9 --- /dev/null +++ b/garlic/fig/saiph/granBlock.R @@ -0,0 +1,67 @@ +library(ggplot2) +library(dplyr) +library(scales) +library(jsonlite) + +args=commandArgs(trailingOnly=TRUE) + +# Read the timetable from args[1] +input_file1 = "input1.json" +if (length(args)>0) { input_file1 = args[1] } + +input_file2 = "input2.json" +if (length(args)>1) { input_file2 = args[2] } + +# Load the dataset in NDJSON format +dataset1 = jsonlite::stream_in(file(input_file1)) %>% + jsonlite::flatten() +dataset2 = jsonlite::stream_in(file(input_file2)) %>% + jsonlite::flatten() + +# We only need the nblocks and time +df1 = select(dataset1, config.nbx, time) %>% + rename(nb1=config.nbx) + +df2 = select(dataset2, config.nby, time) %>% + rename(nb2=config.nby) + +df1$nb1 = as.factor(df1$nb1) +df2$nb2 = as.factor(df2$nb2) + +# Normalize the time by the median +D1=group_by(df1, nb1) +D2=group_by(df2, nb2) + +print(D1) +print(D2) + +ppi=300 +h=5 +w=7 + +png("scatter_granularity_and_blocking.png", width=w*ppi, height=h*ppi, res=ppi) +# +## Create the plot with the normalized time vs nblocks +p = ggplot() + + geom_point(data=D1, aes(x=nb1, y=time, colour = 'nbx-nby-nbz'), shape=1, size=4) + + geom_point(data=D2, aes(x=nb2, y=time, colour = 'nby-nbz'), shape=1, size=4) + + + labs(x="nb", y="Time (s)", + title=sprintf("Saiph-Heat3D granularity & blocking"), + subtitle=input_file1) + + theme_bw() + + theme(plot.subtitle=element_text(size=8)) + + #theme(legend.position = c(0.5, 0.88)) + + theme(legend.position = "right") + + + geom_point(shape=21, size=3) + + #scale_x_continuous(trans=log2_trans()) + + scale_y_continuous(trans=log2_trans()) + + scale_colour_discrete("Blocked directions") + + +# Render the plot +print(p) + +# Save the png image +dev.off() diff --git a/garlic/fig/saiph/strongScaling.R b/garlic/fig/saiph/strongScaling.R new file mode 100644 index 0000000..97224a0 --- /dev/null +++ b/garlic/fig/saiph/strongScaling.R @@ -0,0 +1,100 @@ +library(ggplot2) +library(dplyr) +library(scales) +library(jsonlite) + +args=commandArgs(trailingOnly=TRUE) + +# Read the timetable from args[1] +input_file = "input.json" +if (length(args)>0) { input_file = args[1] } + +# Load the dataset in NDJSON format +dataset = jsonlite::stream_in(file(input_file)) %>% + jsonlite::flatten() + + +# We only need the nblocks and time +df = select(dataset, config.nodes, time) %>% + rename(nodes=config.nodes) + +df$nodes = as.factor(df$nodes) + +# Normalize the time by the median +D=group_by(df, nodes) %>% + mutate(tnorm = time / median(time) - 1) %>% + mutate(bad = max(ifelse(abs(tnorm) >= 0.01, 1, 0))) + +D$bad = as.factor(D$bad) + + +print(D) + +ppi=300 +h=5 +w=5 + +png("box.png", width=w*ppi, height=h*ppi, res=ppi) +# +# +# +# Create the plot with the normalized time vs nblocks +p = ggplot(data=D, aes(x=nodes, y=tnorm, color=bad)) + + + # Labels + labs(x="#nodes", y="Normalized time", + title=sprintf("Saiph-Heat3D Strong-Scaling\nLocal blocking nb{y-z} = 4"), + subtitle=input_file) + + + # Center the title + #theme(plot.title = element_text(hjust = 0.5)) + + + # Black and white mode (useful for printing) + #theme_bw() + + + # Add the maximum allowed error lines + geom_hline(yintercept=c(-0.01, 0.01), + linetype="dashed", color="gray") + + + # Draw boxplots + geom_boxplot() + + scale_color_manual(values=c("black", "brown")) + + + #scale_y_continuous(breaks = scales::pretty_breaks(n = 10)) + + + theme_bw() + + + theme(plot.subtitle=element_text(size=8)) + + theme(legend.position = "none") + #theme(legend.position = c(0.85, 0.85)) + + + + +# Render the plot +print(p) + +## Save the png image +dev.off() +# +png("scatter.png", width=w*ppi, height=h*ppi, res=ppi) +# +## Create the plot with the normalized time vs nblocks +p = ggplot(D, aes(x=nodes, y=time)) + + + labs(x="#nodes", y="Time (s)", + title=sprintf("Saiph-Heat3D Strong-Scaling\nLocal blocking nb{y-z} = 4"), + subtitle=input_file) + + theme_bw() + + theme(plot.subtitle=element_text(size=8)) + + theme(legend.position = c(0.5, 0.88)) + + + geom_point(shape=21, size=3) + + #scale_x_continuous(trans=log2_trans()) + + scale_y_continuous(trans=log2_trans()) + +# Render the plot +print(p) + +# Save the png image +dev.off() From 02a62c18ac7ee27599835da4b3f37b3c5db40006 Mon Sep 17 00:00:00 2001 From: Sandra Date: Fri, 19 Feb 2021 11:09:49 +0100 Subject: [PATCH 585/987] saiph: add strong scaling experiment --- garlic/exp/saiph/strongScaling.nix | 71 ++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 garlic/exp/saiph/strongScaling.nix diff --git a/garlic/exp/saiph/strongScaling.nix b/garlic/exp/saiph/strongScaling.nix new file mode 100644 index 0000000..cc58317 --- /dev/null +++ b/garlic/exp/saiph/strongScaling.nix @@ -0,0 +1,71 @@ +{ + stdenv +, stdexp +, bsc +, targetMachine +, stages +}: + +with stdenv.lib; + +let + # Initial variable configuration + varConf = with bsc; { + nodes = [ 1 2 4 8 16 32 ]; + }; + + # Generate the complete configuration for each unit + genConf = with bsc; c: targetMachine.config // rec { + expName = "saiph.strongScaling"; + unitName = "${expName}.nodes-${toString nodes}-nb{y, z}=4"; + inherit (targetMachine.config) hw; + + # saiph options + nbx = 1; + nby = 4; + nbz = 4; + mpi = impi; + gitBranch = "garlic/tampi+isend+oss+task+simd"; + + # Repeat the execution of each unit 50 times + loops = 30; + + # Resources + cachelineBytes = hw.cachelineBytes; + time = "02:00:00"; + nodes = c.nodes; + qos = if (nodes>16) + then "bsc_cs" + else "debug"; + ntasksPerNode = hw.socketsPerNode; + cpusPerTask = hw.cpusPerSocket; + jobName = "${unitName}-${gitBranch}"; + }; + + # Compute the array of configurations + configs = stdexp.buildConfigs { + inherit varConf genConf; + }; + + exec = {nextStage, conf, ...}: with conf; stages.exec { + inherit nextStage; + env = '' + export NANOS6_REPORT_PREFIX="#" + export I_MPI_THREAD_SPLIT=1 + export ASAN_SYMBOLIZER_PATH=${bsc.clangOmpss2Unwrapped}/bin/llvm-symbolizer + ''; + }; + + program = {nextStage, conf, ...}: with conf; + let + customPkgs = stdexp.replaceMpi conf.mpi; + in + customPkgs.apps.saiph.override { + inherit nbx nby nbz mpi gitBranch cachelineBytes; + }; + + pipeline = stdexp.stdPipeline ++ [ exec program ]; + +in + + stdexp.genExperiment { inherit configs pipeline; } From 37e11c749f0729e473deb4ba6ac45ad229163ef1 Mon Sep 17 00:00:00 2001 From: Sandra Date: Fri, 19 Feb 2021 11:10:44 +0100 Subject: [PATCH 586/987] saiph: add cacheline compilation parameter --- garlic/apps/saiph/default.nix | 3 ++- garlic/exp/saiph/granularity.nix | 10 ++++++---- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/garlic/apps/saiph/default.nix b/garlic/apps/saiph/default.nix index f9e315f..6e26f93 100644 --- a/garlic/apps/saiph/default.nix +++ b/garlic/apps/saiph/default.nix @@ -13,7 +13,7 @@ , nby ? null , nbz ? null , vectFlags ? null -#, breakpointHook +, cachelineBytes ? 64 }: with stdenv.lib; @@ -59,6 +59,7 @@ stdenv.mkDerivation rec { "-f" "Makefile.${cc.CC}" "apps" "APP=Heat3D_vect" + "ROW_ALIGNMENT=${toString cachelineBytes}" ] ++ optional (nbx != null) "NB_X=${toString nbx}" ++ optional (nby != null) "NB_Y=${toString nby}" ++ optional (nbz != null) "NB_Z=${toString nbz}" diff --git a/garlic/exp/saiph/granularity.nix b/garlic/exp/saiph/granularity.nix index 43e251a..af466e2 100644 --- a/garlic/exp/saiph/granularity.nix +++ b/garlic/exp/saiph/granularity.nix @@ -25,16 +25,18 @@ let nby = c.nb; nbz = c.nb; mpi = impi; - gitBranch = "garlic/tampi+isend+oss+task+simd"; + gitBranch = "garlic/tampi+isend+omp+task+simd"; - # Repeat the execution of each unit 50 times - loops = 10; + # Repeat the execution of each unit 30 times + loops = 30; # Resources + cachelineBytes = hw.cachelineBytes; qos = "debug"; time = "02:00:00"; ntasksPerNode = 1; nodes = 1; + ntasksPerNode = hw.socketsPerNode; cpusPerTask = hw.cpusPerSocket; jobName = "${unitName}-${gitBranch}"; }; @@ -57,7 +59,7 @@ let customPkgs = stdexp.replaceMpi conf.mpi; in customPkgs.apps.saiph.override { - inherit nbx nby nbz mpi gitBranch; + inherit nbx nby nbz mpi gitBranch cachelineBytes; }; pipeline = stdexp.stdPipeline ++ [ exec program ]; From e0fbbe32a68783d93b0fd8aaf48b56f6b035db06 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 23 Feb 2021 12:13:52 +0100 Subject: [PATCH 587/987] saiph: update granularity experiment and R script --- garlic/fig/saiph/granularity.R | 14 +-- garlic/fig/saiph/granularityPerNumBlocks.R | 100 +++++++++++++++++++++ 2 files changed, 107 insertions(+), 7 deletions(-) create mode 100644 garlic/fig/saiph/granularityPerNumBlocks.R diff --git a/garlic/fig/saiph/granularity.R b/garlic/fig/saiph/granularity.R index ba093a8..d3ed00d 100644 --- a/garlic/fig/saiph/granularity.R +++ b/garlic/fig/saiph/granularity.R @@ -42,7 +42,7 @@ png("box.png", width=w*ppi, height=h*ppi, res=ppi) p = ggplot(data=D, aes(x=nby, y=tnorm, color=bad)) + # Labels - labs(x="nby", y="Normalized time", + labs(x="nb{y-z}", y="Normalized time", title=sprintf("Saiph-Heat3D normalized time"), subtitle=input_file) + @@ -82,16 +82,16 @@ png("scatter.png", width=w*ppi, height=h*ppi, res=ppi) ## Create the plot with the normalized time vs nblocks p = ggplot(D, aes(x=nby, y=time)) + - labs(x="nby", y="Time (s)", - title=sprintf("Saiph-Heat3D granularity"), - subtitle=input_file) + + labs(x="nb{y-z}", y="Time (s)", + title=sprintf("Saiph-Heat3D granularity"), + subtitle=input_file) + theme_bw() + theme(plot.subtitle=element_text(size=8)) + theme(legend.position = c(0.5, 0.88)) + - geom_point(shape=21, size=3) + - #scale_x_continuous(trans=log2_trans()) + - scale_y_continuous(trans=log2_trans()) + geom_point(shape=21, size=3) + #+ scale_x_continuous(trans=log2_trans()) + #+ scale_y_continuous(trans=log2_trans()) # Render the plot print(p) diff --git a/garlic/fig/saiph/granularityPerNumBlocks.R b/garlic/fig/saiph/granularityPerNumBlocks.R new file mode 100644 index 0000000..4e28f1d --- /dev/null +++ b/garlic/fig/saiph/granularityPerNumBlocks.R @@ -0,0 +1,100 @@ +library(ggplot2) +library(dplyr) +library(scales) +library(jsonlite) + +args=commandArgs(trailingOnly=TRUE) + +# Read the timetable from args[1] +input_file = "nov24Gran.json" +if (length(args)>0) { input_file = args[1] } + +# Load the dataset in NDJSON format +dataset = jsonlite::stream_in(file(input_file)) %>% + jsonlite::flatten() + + +# We only need the nblocks and time +df = select(dataset, config.nby, time) %>% + rename(nby=config.nby) + +df$nby = as.factor(df$nby) + +# Normalize the time by the median +D=group_by(df, nby) %>% + mutate(tnorm = time / median(time) - 1) %>% + mutate(bad = max(ifelse(abs(tnorm) >= 0.01, 1, 0))) + +D$bad = as.factor(D$bad) + + +print(D) + +ppi=300 +h=5 +w=5 + +png("box.png", width=w*ppi, height=h*ppi, res=ppi) +# +# +# +# Create the plot with the normalized time vs nblocks +p = ggplot(data=D, aes(x=nby, y=tnorm, color=bad)) + + + # Labels + labs(x="nb{y-z}", y="Normalized time", + title=sprintf("Saiph-Heat3D normalized time"), + subtitle=input_file) + + + # Center the title + #theme(plot.title = element_text(hjust = 0.5)) + + + # Black and white mode (useful for printing) + #theme_bw() + + + # Add the maximum allowed error lines + geom_hline(yintercept=c(-0.01, 0.01), + linetype="dashed", color="gray") + + + # Draw boxplots + geom_boxplot() + + scale_color_manual(values=c("black", "brown")) + + + #scale_y_continuous(breaks = scales::pretty_breaks(n = 10)) + + + theme_bw() + + + theme(plot.subtitle=element_text(size=8)) + + theme(legend.position = "none") + #theme(legend.position = c(0.85, 0.85)) + + + + +# Render the plot +print(p) + +## Save the png image +dev.off() +# +png("scatter.png", width=w*ppi, height=h*ppi, res=ppi) +# +## Create the plot with the normalized time vs nblocks +p = ggplot(D, aes(x=nby, y=time)) + + + labs(x="nb{y-z}", y="Time (s)", + title=sprintf("Saiph-Heat3D granularity"), + subtitle=input_file) + + theme_bw() + + theme(plot.subtitle=element_text(size=8)) + + theme(legend.position = c(0.5, 0.88)) + + + geom_point(shape=21, size=3) + + #scale_x_continuous(trans=log2_trans()) + + scale_y_continuous(trans=log2_trans()) + +# Render the plot +print(p) + +# Save the png image +dev.off() From d108306a29f2e7a448bf3656b7dd6056e5a985eb Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 23 Feb 2021 12:44:17 +0100 Subject: [PATCH 588/987] saiph: add blocking experiments to index Remove unused environment variables as well. --- garlic/exp/index.nix | 4 ++++ garlic/exp/saiph/blocking.nix | 2 -- garlic/exp/saiph/blocking_Y.nix | 2 -- garlic/exp/saiph/blocking_YZ.nix | 2 -- garlic/exp/saiph/blocking_Z.nix | 2 -- garlic/exp/saiph/blocking_ZY.nix | 2 -- garlic/exp/saiph/numcomm.nix | 1 - garlic/exp/saiph/strongScaling.nix | 2 -- garlic/fig/index.nix | 4 ++++ 9 files changed, 8 insertions(+), 13 deletions(-) diff --git a/garlic/exp/index.nix b/garlic/exp/index.nix index 1d71c1e..c8335fb 100644 --- a/garlic/exp/index.nix +++ b/garlic/exp/index.nix @@ -35,6 +35,10 @@ numcomm = callPackage ./saiph/numcomm.nix { }; granularity = callPackage ./saiph/granularity.nix { }; scaling = callPackage ./saiph/scaling.nix { }; + blockingY = callPackage ./saiph/blocking_Y.nix { }; + blockingZ = callPackage ./saiph/blocking_Z.nix { }; + blockingYZ = callPackage ./saiph/blocking_YZ.nix { }; + blockingZY = callPackage ./saiph/blocking_ZY.nix { }; }; creams = rec { diff --git a/garlic/exp/saiph/blocking.nix b/garlic/exp/saiph/blocking.nix index d8fc11f..c999f91 100644 --- a/garlic/exp/saiph/blocking.nix +++ b/garlic/exp/saiph/blocking.nix @@ -47,8 +47,6 @@ let exec = {nextStage, conf, ...}: with conf; stages.exec { inherit nextStage; env = '' - export NANOS6_REPORT_PREFIX="#" - export I_MPI_THREAD_SPLIT=1 export ASAN_SYMBOLIZER_PATH=${bsc.clangOmpss2Unwrapped}/bin/llvm-symbolizer ''; }; diff --git a/garlic/exp/saiph/blocking_Y.nix b/garlic/exp/saiph/blocking_Y.nix index 1f5b1ed..9a78acc 100644 --- a/garlic/exp/saiph/blocking_Y.nix +++ b/garlic/exp/saiph/blocking_Y.nix @@ -48,8 +48,6 @@ let exec = {nextStage, conf, ...}: with conf; stages.exec { inherit nextStage; env = '' - export NANOS6_REPORT_PREFIX="#" - export I_MPI_THREAD_SPLIT=1 export ASAN_SYMBOLIZER_PATH=${bsc.clangOmpss2Unwrapped}/bin/llvm-symbolizer ''; }; diff --git a/garlic/exp/saiph/blocking_YZ.nix b/garlic/exp/saiph/blocking_YZ.nix index a283727..d85b04a 100644 --- a/garlic/exp/saiph/blocking_YZ.nix +++ b/garlic/exp/saiph/blocking_YZ.nix @@ -48,8 +48,6 @@ let exec = {nextStage, conf, ...}: with conf; stages.exec { inherit nextStage; env = '' - export NANOS6_REPORT_PREFIX="#" - export I_MPI_THREAD_SPLIT=1 export ASAN_SYMBOLIZER_PATH=${bsc.clangOmpss2Unwrapped}/bin/llvm-symbolizer ''; }; diff --git a/garlic/exp/saiph/blocking_Z.nix b/garlic/exp/saiph/blocking_Z.nix index d3ee3c5..d98a6e2 100644 --- a/garlic/exp/saiph/blocking_Z.nix +++ b/garlic/exp/saiph/blocking_Z.nix @@ -48,8 +48,6 @@ let exec = {nextStage, conf, ...}: with conf; stages.exec { inherit nextStage; env = '' - export NANOS6_REPORT_PREFIX="#" - export I_MPI_THREAD_SPLIT=1 export ASAN_SYMBOLIZER_PATH=${bsc.clangOmpss2Unwrapped}/bin/llvm-symbolizer ''; }; diff --git a/garlic/exp/saiph/blocking_ZY.nix b/garlic/exp/saiph/blocking_ZY.nix index 12749f2..f29ffb3 100644 --- a/garlic/exp/saiph/blocking_ZY.nix +++ b/garlic/exp/saiph/blocking_ZY.nix @@ -48,8 +48,6 @@ let exec = {nextStage, conf, ...}: with conf; stages.exec { inherit nextStage; env = '' - export NANOS6_REPORT_PREFIX="#" - export I_MPI_THREAD_SPLIT=1 export ASAN_SYMBOLIZER_PATH=${bsc.clangOmpss2Unwrapped}/bin/llvm-symbolizer ''; }; diff --git a/garlic/exp/saiph/numcomm.nix b/garlic/exp/saiph/numcomm.nix index 03bd7e2..9c88c7a 100644 --- a/garlic/exp/saiph/numcomm.nix +++ b/garlic/exp/saiph/numcomm.nix @@ -46,7 +46,6 @@ let inherit nextStage; env = '' export OMP_NUM_THREADS=24 - export NANOS6_REPORT_PREFIX="#" export ASAN_SYMBOLIZER_PATH=${bsc.clangOmpss2Unwrapped}/bin/llvm-symbolizer ''; }; diff --git a/garlic/exp/saiph/strongScaling.nix b/garlic/exp/saiph/strongScaling.nix index cc58317..753e61e 100644 --- a/garlic/exp/saiph/strongScaling.nix +++ b/garlic/exp/saiph/strongScaling.nix @@ -50,8 +50,6 @@ let exec = {nextStage, conf, ...}: with conf; stages.exec { inherit nextStage; env = '' - export NANOS6_REPORT_PREFIX="#" - export I_MPI_THREAD_SPLIT=1 export ASAN_SYMBOLIZER_PATH=${bsc.clangOmpss2Unwrapped}/bin/llvm-symbolizer ''; }; diff --git a/garlic/fig/index.nix b/garlic/fig/index.nix index 0d60563..3ef184d 100644 --- a/garlic/fig/index.nix +++ b/garlic/fig/index.nix @@ -44,6 +44,10 @@ in saiph = with exp.saiph; { granularity = rPlotExp ./saiph/granularity.R [ granularity ]; scaling = rPlotExp ./saiph/scaling.R [ scaling ]; + blockingY = rPlotExp ./saiph/granularityY.R [ blockingY ]; + blockingZ = rPlotExp ./saiph/granularityZ.R [ blockingZ ]; + blockingYZ = rPlotExp ./saiph/granularityYZ.R [ blockingYZ ]; + blockingZY = rPlotExp ./saiph/granularityZY.R [ blockingZY ]; }; heat = with exp.heat; { From 1ae5acfe6ab2076fb88158b223ef00bfcb78e3ea Mon Sep 17 00:00:00 2001 From: Sandra Date: Fri, 19 Feb 2021 11:18:11 +0100 Subject: [PATCH 589/987] saiph: add nsteps in saiph app --- garlic/apps/saiph/default.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/garlic/apps/saiph/default.nix b/garlic/apps/saiph/default.nix index 6e26f93..8344502 100644 --- a/garlic/apps/saiph/default.nix +++ b/garlic/apps/saiph/default.nix @@ -12,6 +12,7 @@ , nbx ? null , nby ? null , nbz ? null +, nsteps ? null , vectFlags ? null , cachelineBytes ? 64 }: @@ -63,6 +64,7 @@ stdenv.mkDerivation rec { ] ++ optional (nbx != null) "NB_X=${toString nbx}" ++ optional (nby != null) "NB_Y=${toString nby}" ++ optional (nbz != null) "NB_Z=${toString nbz}" + ++ optional (nsteps != null) "NSTEPS=${toString nsteps}" ++ optional (numComm != null) "NUM_COMM=${toString numComm}" ++ optional (vectFlags != null) "VECT_FLAGS=${toString vectFlags}" ; From ddef901e2f75d46b8587060b8a080ca6d9c316e9 Mon Sep 17 00:00:00 2001 From: Sandra Date: Fri, 19 Feb 2021 11:29:38 +0100 Subject: [PATCH 590/987] saiph: add nsteps parameter to experiments --- garlic/exp/saiph/blocking.nix | 5 +++-- garlic/exp/saiph/blocking_Y.nix | 5 +++-- garlic/exp/saiph/blocking_YZ.nix | 5 +++-- garlic/exp/saiph/blocking_Z.nix | 5 +++-- garlic/exp/saiph/blocking_ZY.nix | 5 +++-- garlic/exp/saiph/granularity.nix | 5 +++-- garlic/exp/saiph/strongScaling.nix | 5 +++-- 7 files changed, 21 insertions(+), 14 deletions(-) diff --git a/garlic/exp/saiph/blocking.nix b/garlic/exp/saiph/blocking.nix index c999f91..05b2287 100644 --- a/garlic/exp/saiph/blocking.nix +++ b/garlic/exp/saiph/blocking.nix @@ -17,12 +17,13 @@ let # Generate the complete configuration for each unit genConf = with bsc; c: targetMachine.config // rec { expName = "saiph.blocking"; - unitName = "${expName}.1-nby-nbz-${toString nby}-${toString nbz}"; + unitName = "${expName}.1-nby-nbz-${toString nby}-${toString nbz}.nsteps-${toString nsteps}"; inherit (targetMachine.config) hw; # saiph options nby = c.nb; nbz = c.nb; + nsteps = 500; mpi = impi; gitBranch = "garlic/tampi+isend+oss+task+simd"; @@ -56,7 +57,7 @@ let customPkgs = stdexp.replaceMpi conf.mpi; in customPkgs.apps.saiph.override { - inherit nby nbz mpi gitBranch cachelineBytes; + inherit nby nbz nsteps mpi gitBranch cachelineBytes; }; pipeline = stdexp.stdPipeline ++ [ exec program ]; diff --git a/garlic/exp/saiph/blocking_Y.nix b/garlic/exp/saiph/blocking_Y.nix index 9a78acc..e5c7a9d 100644 --- a/garlic/exp/saiph/blocking_Y.nix +++ b/garlic/exp/saiph/blocking_Y.nix @@ -17,13 +17,14 @@ let # Generate the complete configuration for each unit genConf = with bsc; c: targetMachine.config // rec { expName = "saiph.blockingY"; - unitName = "${expName}.nbx-nby-nbz-${toString nbx}-${toString nby}-${toString nbz}"; + unitName = "${expName}.nbx-nby-nbz-${toString nbx}-${toString nby}-${toString nbz}.nsteps-${toString nsteps}"; inherit (targetMachine.config) hw; # saiph options nbx = 1; nby = c.nb; nbz = 1; + nsteps = 500; mpi = impi; gitBranch = "garlic/tampi+isend+oss+task+simd"; @@ -57,7 +58,7 @@ let customPkgs = stdexp.replaceMpi conf.mpi; in customPkgs.apps.saiph.override { - inherit nbx nby nbz mpi gitBranch cachelineBytes; + inherit nbx nby nbz nsteps mpi gitBranch cachelineBytes; }; pipeline = stdexp.stdPipeline ++ [ exec program ]; diff --git a/garlic/exp/saiph/blocking_YZ.nix b/garlic/exp/saiph/blocking_YZ.nix index d85b04a..70041e1 100644 --- a/garlic/exp/saiph/blocking_YZ.nix +++ b/garlic/exp/saiph/blocking_YZ.nix @@ -17,13 +17,14 @@ let # Generate the complete configuration for each unit genConf = with bsc; c: targetMachine.config // rec { expName = "saiph.blockingY"; - unitName = "${expName}.nbx-nby-nbz-${toString nbx}-${toString nby}-${toString nbz}"; + unitName = "${expName}.nbx-nby-nbz-${toString nbx}-${toString nby}-${toString nbz}.nsteps-${toString nsteps}"; inherit (targetMachine.config) hw; # saiph options nbx = 1; nby = 8; nbz = c.nb; + nsteps = 500; mpi = impi; gitBranch = "garlic/tampi+isend+oss+task+simd"; @@ -57,7 +58,7 @@ let customPkgs = stdexp.replaceMpi conf.mpi; in customPkgs.apps.saiph.override { - inherit nbx nby nbz mpi gitBranch cachelineBytes; + inherit nbx nby nbz nsteps mpi gitBranch cachelineBytes; }; pipeline = stdexp.stdPipeline ++ [ exec program ]; diff --git a/garlic/exp/saiph/blocking_Z.nix b/garlic/exp/saiph/blocking_Z.nix index d98a6e2..52b282f 100644 --- a/garlic/exp/saiph/blocking_Z.nix +++ b/garlic/exp/saiph/blocking_Z.nix @@ -17,13 +17,14 @@ let # Generate the complete configuration for each unit genConf = with bsc; c: targetMachine.config // rec { expName = "saiph.blockingZ"; - unitName = "${expName}.nbx-nby-nbz-${toString nbx}-${toString nby}-${toString nbz}"; + unitName = "${expName}.nbx-nby-nbz-${toString nbx}-${toString nby}-${toString nbz}.nsteps-${toString nsteps}"; inherit (targetMachine.config) hw; # saiph options nbx = 1; nby = 1; nbz = c.nb; + nsteps = 500; mpi = impi; gitBranch = "garlic/tampi+isend+oss+task+simd"; @@ -57,7 +58,7 @@ let customPkgs = stdexp.replaceMpi conf.mpi; in customPkgs.apps.saiph.override { - inherit nbx nby nbz mpi gitBranch cachelineBytes; + inherit nbx nby nbz nsteps mpi gitBranch cachelineBytes; }; pipeline = stdexp.stdPipeline ++ [ exec program ]; diff --git a/garlic/exp/saiph/blocking_ZY.nix b/garlic/exp/saiph/blocking_ZY.nix index f29ffb3..7ea45c5 100644 --- a/garlic/exp/saiph/blocking_ZY.nix +++ b/garlic/exp/saiph/blocking_ZY.nix @@ -17,13 +17,14 @@ let # Generate the complete configuration for each unit genConf = with bsc; c: targetMachine.config // rec { expName = "saiph.blockingZY"; - unitName = "${expName}.nbx-nby-nbz-${toString nbx}-${toString nby}-${toString nbz}"; + unitName = "${expName}.nbx-nby-nbz-${toString nbx}-${toString nby}-${toString nbz}.nsteps-${toString nsteps}"; inherit (targetMachine.config) hw; # saiph options nbx = 1; nby = c.nb; nbz = 8; + nsteps = 500; mpi = impi; gitBranch = "garlic/tampi+isend+oss+task+simd"; @@ -57,7 +58,7 @@ let customPkgs = stdexp.replaceMpi conf.mpi; in customPkgs.apps.saiph.override { - inherit nbx nby nbz mpi gitBranch cachelineBytes; + inherit nbx nby nbz nsteps mpi gitBranch cachelineBytes; }; pipeline = stdexp.stdPipeline ++ [ exec program ]; diff --git a/garlic/exp/saiph/granularity.nix b/garlic/exp/saiph/granularity.nix index af466e2..f19934b 100644 --- a/garlic/exp/saiph/granularity.nix +++ b/garlic/exp/saiph/granularity.nix @@ -17,13 +17,14 @@ let # Generate the complete configuration for each unit genConf = with bsc; c: targetMachine.config // rec { expName = "saiph.granularity"; - unitName = "${expName}.nbx-nby-nbz-${toString nbx}-${toString nby}-${toString nbz}"; + unitName = "${expName}.nbx-nby-nbz-${toString nbx}-${toString nby}-${toString nbz}.nsteps-${nsteps}"; inherit (targetMachine.config) hw; # saiph options nbx = 1; nby = c.nb; nbz = c.nb; + nsteps = 500; mpi = impi; gitBranch = "garlic/tampi+isend+omp+task+simd"; @@ -59,7 +60,7 @@ let customPkgs = stdexp.replaceMpi conf.mpi; in customPkgs.apps.saiph.override { - inherit nbx nby nbz mpi gitBranch cachelineBytes; + inherit nbx nby nbz nsteps mpi gitBranch cachelineBytes; }; pipeline = stdexp.stdPipeline ++ [ exec program ]; diff --git a/garlic/exp/saiph/strongScaling.nix b/garlic/exp/saiph/strongScaling.nix index 753e61e..ec201e2 100644 --- a/garlic/exp/saiph/strongScaling.nix +++ b/garlic/exp/saiph/strongScaling.nix @@ -17,13 +17,14 @@ let # Generate the complete configuration for each unit genConf = with bsc; c: targetMachine.config // rec { expName = "saiph.strongScaling"; - unitName = "${expName}.nodes-${toString nodes}-nb{y, z}=4"; + unitName = "${expName}.nodes-${toString nodes}-nb{y, z}=4.nsteps-${toString nsteps}"; inherit (targetMachine.config) hw; # saiph options nbx = 1; nby = 4; nbz = 4; + nsteps = 500; mpi = impi; gitBranch = "garlic/tampi+isend+oss+task+simd"; @@ -59,7 +60,7 @@ let customPkgs = stdexp.replaceMpi conf.mpi; in customPkgs.apps.saiph.override { - inherit nbx nby nbz mpi gitBranch cachelineBytes; + inherit nbx nby nbz nsteps mpi gitBranch cachelineBytes; }; pipeline = stdexp.stdPipeline ++ [ exec program ]; From 99532c9c603286980be151a4318e1568bee123fe Mon Sep 17 00:00:00 2001 From: Sandra Date: Thu, 25 Feb 2021 17:59:35 +0100 Subject: [PATCH 591/987] saiph: add manual distribution and nbl/nbg --- garlic/apps/saiph/default.nix | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/garlic/apps/saiph/default.nix b/garlic/apps/saiph/default.nix index 8344502..6e1644d 100644 --- a/garlic/apps/saiph/default.nix +++ b/garlic/apps/saiph/default.nix @@ -9,9 +9,13 @@ , gitBranch ? "master" , gitCommit ? null , numComm ? null -, nbx ? null -, nby ? null -, nbz ? null +, manualDist ? 0 +, nbgx ? null +, nbgy ? null +, nbgz ? null +, nblx ? null +, nbly ? null +, nblz ? null , nsteps ? null , vectFlags ? null , cachelineBytes ? 64 @@ -61,9 +65,13 @@ stdenv.mkDerivation rec { "apps" "APP=Heat3D_vect" "ROW_ALIGNMENT=${toString cachelineBytes}" - ] ++ optional (nbx != null) "NB_X=${toString nbx}" - ++ optional (nby != null) "NB_Y=${toString nby}" - ++ optional (nbz != null) "NB_Z=${toString nbz}" + ] ++ optional (manualDist != 0) "DIST_SET=${toString manualDist}" + ++ optional (manualDist != 0) "NBG_X=${toString nbgx}" + ++ optional (manualDist != 0) "NBG_Y=${toString nbgy}" + ++ optional (manualDist != 0) "NBG_Z=${toString nbgz}" + ++ optional (nblx != null) "NBL_X=${toString nblx}" + ++ optional (nbly != null) "NBL_Y=${toString nbly}" + ++ optional (nblz != null) "NBL_Z=${toString nblz}" ++ optional (nsteps != null) "NSTEPS=${toString nsteps}" ++ optional (numComm != null) "NUM_COMM=${toString numComm}" ++ optional (vectFlags != null) "VECT_FLAGS=${toString vectFlags}" From a90c044c3e2096fb8e638683a54d71eca226b2b7 Mon Sep 17 00:00:00 2001 From: Sandra Date: Thu, 25 Feb 2021 18:00:13 +0100 Subject: [PATCH 592/987] saiph: add manual global blocking Ensure cuts in a single dimension --- garlic/exp/saiph/scaling.nix | 31 +++++++++++++++++++------------ 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/garlic/exp/saiph/scaling.nix b/garlic/exp/saiph/scaling.nix index 3ea0c3b..f69df8f 100644 --- a/garlic/exp/saiph/scaling.nix +++ b/garlic/exp/saiph/scaling.nix @@ -11,28 +11,33 @@ with stdenv.lib; let # Initial variable configuration varConf = with bsc; { - nb = [ 1 2 4 8 16 32 64 ]; - nodes = [ 1 2 4 ]; - gitCommit = [ - "3ecae7c209ec3e33d1108ae4783d7e733d54f2ca" - ]; + nbl = [ 1 2 4 8 16 32 64 ]; + nodes = [ 1 2 4 8 ]; + #gitCommit = [ "3ecae7c209ec3e33d1108ae4783d7e733d54f2ca" "3b52a616d44f4b86880663e2d951ad89c1dcab4f" ]; }; # Generate the complete configuration for each unit genConf = with bsc; c: targetMachine.config // rec { expName = "saiph"; - unitName = "${expName}-N${toString nodes}" + - "-nbx${toString nbx}-nby${toString nby}"; + unitName = "${expName}-N${toString nodes}" + "-nblx${toString nblx}-nbly${toString nbly}" + "-par-init-One-dimensionalDistribution"; +# unitName = if (gitCommit == "3b52a616d44f4b86880663e2d951ad89c1dcab4f") +# then "${expName}-N${toString nodes}" + "-nblx${toString nblx}-nbly${toString nbly}" + "-par-init" +# else "${expName}-N${toString nodes}" + "-nblx${toString nblx}-nbly${toString nbly}" + "-seq-init"; inherit (targetMachine.config) hw; # saiph options - nbx = 1; - nby = c.nb; - nbz = c.nb; + manualDist = 1; + nbgx = 1; + nbgy = 1; + nbgz = nodes; + nblx = 1; + nbly = c.nbl; + nblz = c.nbl; mpi = impi; gitBranch = "garlic/tampi+isend+oss+task+simd"; - inherit (c) gitCommit; + #gitCommit = c.gitCommit; # if exp involves more than 1 commit + #inherit (c) gitCommit; # if exp fixes the commit # Repeat the execution of each unit 50 times loops = 10; @@ -49,6 +54,8 @@ let configs = stdexp.buildConfigs { inherit varConf genConf; }; + #configs = filter (el: if el.nbly == 1 && el.nblz == 1 && el.nodes == 1 && el.gitCommit == "3b52a616d44f4b86880663e2d951ad89c1dcab4f" then false else true) configsAll; + exec = {nextStage, conf, ...}: with conf; stages.exec { inherit nextStage; @@ -63,7 +70,7 @@ let customPkgs = stdexp.replaceMpi conf.mpi; in customPkgs.apps.saiph.override { - inherit (conf) nbx nby nbz mpi gitBranch gitCommit; + inherit (conf) manualDist nbgx nbgy nbgz nblx nbly nblz mpi gitBranch; }; pipeline = stdexp.stdPipeline ++ [ exec program ]; From 5caf2f79f3d10d808f128b83f738462765164ce1 Mon Sep 17 00:00:00 2001 From: Sandra Date: Tue, 2 Mar 2021 15:45:35 +0100 Subject: [PATCH 593/987] saiph: change scaling R script --- garlic/exp/saiph/scaling.nix | 1 - garlic/fig/saiph/scaling.R | 21 +++++++++++++-------- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/garlic/exp/saiph/scaling.nix b/garlic/exp/saiph/scaling.nix index f69df8f..64ee9a6 100644 --- a/garlic/exp/saiph/scaling.nix +++ b/garlic/exp/saiph/scaling.nix @@ -56,7 +56,6 @@ let }; #configs = filter (el: if el.nbly == 1 && el.nblz == 1 && el.nodes == 1 && el.gitCommit == "3b52a616d44f4b86880663e2d951ad89c1dcab4f" then false else true) configsAll; - exec = {nextStage, conf, ...}: with conf; stages.exec { inherit nextStage; env = '' diff --git a/garlic/fig/saiph/scaling.R b/garlic/fig/saiph/scaling.R index dc587e3..f9e1b03 100644 --- a/garlic/fig/saiph/scaling.R +++ b/garlic/fig/saiph/scaling.R @@ -15,14 +15,15 @@ dataset = jsonlite::stream_in(file(input_file)) %>% # We only need the nblocks and time -df = select(dataset, config.nby, config.nodes, time, total_time) %>% - rename(nby=config.nby, nnodes=config.nodes) +df = select(dataset, config.nby, config.nodes, time, total_time, config.gitCommit) %>% + rename(nby=config.nby, nnodes=config.nodes, gitCommit=config.gitCommit) df$nby = as.factor(df$nby) df$nodes = as.factor(df$nnodes) +df$gitCommit = as.factor(df$gitCommit) # Normalize the time by the median -D=group_by(df, nby, nodes) %>% +D=group_by(df, nby, nodes, gitCommit) %>% mutate(tmedian = median(time)) %>% mutate(ttmedian = median(total_time)) %>% mutate(tnorm = time / tmedian - 1) %>% @@ -37,7 +38,7 @@ print(D) ppi=300 h=5 -w=5 +w=8 png("box.png", width=w*ppi, height=h*ppi, res=ppi) # @@ -94,9 +95,11 @@ p = ggplot(D, aes(x=nby, y=time)) + theme(plot.subtitle=element_text(size=8)) + theme(legend.position = c(0.5, 0.88)) + - geom_point(shape=21, size=3) + + geom_point(aes(color=nodes), shape=21, size=3) + #scale_x_continuous(trans=log2_trans()) + - scale_y_continuous(trans=log2_trans()) + scale_y_continuous(trans=log2_trans()) + + facet_wrap( ~ gitCommit) + # Render the plot print(p) @@ -120,7 +123,8 @@ p = ggplot(D, aes(x=nby, y=time)) + geom_line(aes(y=tmedian, color=nodes, group=nodes)) + geom_line(aes(y=ttmedian, color=nodes, group=nodes)) + #scale_x_continuous(trans=log2_trans()) + - scale_y_continuous(trans=log2_trans()) + scale_y_continuous(trans=log2_trans()) + + facet_wrap( ~ gitCommit) # Render the plot print(p) @@ -142,7 +146,8 @@ p = ggplot(D, aes(x=nby, y=tn)) + geom_point(shape=21, size=3) + geom_line(aes(color=nodes, group=nodes)) + #scale_x_continuous(trans=log2_trans()) + - scale_y_continuous(trans=log2_trans()) + scale_y_continuous(trans=log2_trans()) + + facet_wrap( ~ gitCommit) # Render the plot print(p) From 5c7af00dfacac287a25563d72a66b6aa317e7681 Mon Sep 17 00:00:00 2001 From: Sandra Date: Fri, 12 Mar 2021 12:37:34 +0100 Subject: [PATCH 594/987] saiph: add debug/asan flags parameters --- garlic/apps/saiph/default.nix | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/garlic/apps/saiph/default.nix b/garlic/apps/saiph/default.nix index 6e1644d..a40168e 100644 --- a/garlic/apps/saiph/default.nix +++ b/garlic/apps/saiph/default.nix @@ -18,6 +18,8 @@ , nblz ? null , nsteps ? null , vectFlags ? null +, debugFlags ? null +, asanFlags ? null , cachelineBytes ? 64 }: @@ -74,7 +76,9 @@ stdenv.mkDerivation rec { ++ optional (nblz != null) "NBL_Z=${toString nblz}" ++ optional (nsteps != null) "NSTEPS=${toString nsteps}" ++ optional (numComm != null) "NUM_COMM=${toString numComm}" - ++ optional (vectFlags != null) "VECT_FLAGS=${toString vectFlags}" + ++ optional (vectFlags != null) "VECT_CHECKS=${toString vectFlags}" + ++ optional (debugFlags != null) "DEBUG_CHECKS=${toString debugFlags}" + ++ optional (asanFlags != null) "SANITIZE_CHECKS=${toString asanFlags}" ; installPhase = '' From 4e727bf632b324a8512c8cd47cf7cc5e67b299d6 Mon Sep 17 00:00:00 2001 From: Sandra Date: Fri, 12 Mar 2021 12:44:09 +0100 Subject: [PATCH 595/987] shell: add nix-diff --- garlic/shell.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/garlic/shell.nix b/garlic/shell.nix index 4516ea1..145a20a 100644 --- a/garlic/shell.nix +++ b/garlic/shell.nix @@ -10,7 +10,7 @@ mkShell { # Packages from garlic (with garlic; [ tool garlicd ]) ++ # Packages from bsc - [ groff paraver icc nix openssh git cn6 ]; + [ groff paraver icc nix openssh git cn6 nix-diff ]; # inputsFrom to get build dependencies From bc912162a024ba318e3d88b8c2d5304c9ea49874 Mon Sep 17 00:00:00 2001 From: Sandra Date: Fri, 12 Mar 2021 12:44:48 +0100 Subject: [PATCH 596/987] index: add vtk and boost --- garlic/index.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/garlic/index.nix b/garlic/index.nix index e7f9e3d..e55fb38 100644 --- a/garlic/index.nix +++ b/garlic/index.nix @@ -10,11 +10,11 @@ commonPackages = with self; [ coreutils htop procps-ng vim which strace tmux gdb kakoune universal-ctags bashInteractive - glibcLocales ncurses git screen curl + glibcLocales ncurses git screen curl boost # Add more nixpkgs packages here... ]; bscPackages = with bsc; [ - slurm clangOmpss2 icc mcxx perf tampi impi + slurm clangOmpss2 icc mcxx perf tampi impi vtk # Add more bsc packages here... ]; packages = commonPackages ++ bscPackages; From 8406c1c4e535caa3e4bdf6eaee6fd31f237de166 Mon Sep 17 00:00:00 2001 From: Sandra Date: Fri, 12 Mar 2021 12:45:59 +0100 Subject: [PATCH 597/987] saiph: add total number of local blocks (#tasks) parameter --- garlic/apps/saiph/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/garlic/apps/saiph/default.nix b/garlic/apps/saiph/default.nix index a40168e..7b2e25b 100644 --- a/garlic/apps/saiph/default.nix +++ b/garlic/apps/saiph/default.nix @@ -16,6 +16,7 @@ , nblx ? null , nbly ? null , nblz ? null +, nbltotal ? null , nsteps ? null , vectFlags ? null , debugFlags ? null From 46536548ca7613fa4763df8ef2d50b6bf1eba0cc Mon Sep 17 00:00:00 2001 From: Sandra Date: Fri, 12 Mar 2021 15:15:53 +0100 Subject: [PATCH 598/987] saiph: update scaling exp and figures --- garlic/exp/index.nix | 2 + garlic/exp/saiph/debug.nix | 89 ++++++++++++++ garlic/exp/saiph/scaling.nix | 45 +++++-- garlic/exp/saiph/scaling2.nix | 104 ++++++++++++++++ garlic/fig/index.nix | 14 ++- garlic/fig/saiph/scaling.R | 94 +++++++++++--- garlic/fig/saiph/scaling2.R | 210 ++++++++++++++++++++++++++++++++ garlic/fig/saiph/scalingnblyz.R | 162 ++++++++++++++++++++++++ 8 files changed, 684 insertions(+), 36 deletions(-) create mode 100644 garlic/exp/saiph/debug.nix create mode 100644 garlic/exp/saiph/scaling2.nix create mode 100644 garlic/fig/saiph/scaling2.R create mode 100644 garlic/fig/saiph/scalingnblyz.R diff --git a/garlic/exp/index.nix b/garlic/exp/index.nix index c8335fb..6a2f6bd 100644 --- a/garlic/exp/index.nix +++ b/garlic/exp/index.nix @@ -35,6 +35,8 @@ numcomm = callPackage ./saiph/numcomm.nix { }; granularity = callPackage ./saiph/granularity.nix { }; scaling = callPackage ./saiph/scaling.nix { }; + scaling2 = callPackage ./saiph/scaling2.nix { }; + debug = callPackage ./saiph/debug.nix { }; blockingY = callPackage ./saiph/blocking_Y.nix { }; blockingZ = callPackage ./saiph/blocking_Z.nix { }; blockingYZ = callPackage ./saiph/blocking_YZ.nix { }; diff --git a/garlic/exp/saiph/debug.nix b/garlic/exp/saiph/debug.nix new file mode 100644 index 0000000..1866801 --- /dev/null +++ b/garlic/exp/saiph/debug.nix @@ -0,0 +1,89 @@ +{ + stdenv +, stdexp +, bsc +, targetMachine +, stages +}: + +with stdenv.lib; + +let + # Initial variable configuration + varConf = with bsc; { + }; + + # Generate the complete configuration for each unit + genConf = with bsc; c: targetMachine.config // rec { + expName = "saiph"; + unitName = "${expName}-debug"; + +# unitName = if (gitCommit == "3b52a616d44f4b86880663e2d951ad89c1dcab4f") +# then "${expName}-N${toString nodes}" + "-nblx${toString nblx}-nbly${toString nbly}" + "-par-init" +# else "${expName}-N${toString nodes}" + "-nblx${toString nblx}-nbly${toString nbly}" + "-seq-init"; + + inherit (targetMachine.config) hw; + + # saiph options + manualDist = 1; + nbgx = 1; + nbgy = 1; + nbgz = 8; + nblx = 1; + nbly = 4; + nblz = 96; + nbltotal = 384; + mpi = impi; + gitBranch = "garlic/tampi+isend+oss+task+simd"; + gitCommit = "3fa116620f1c7fbd1127d785c8bdc5d2372837b3"; + #gitCommit = c.gitCommit; # if exp involves more than 1 commit + #inherit (c) gitCommit; # if exp fixes the commit + + # Repeat the execution of each unit 50 times + loops = 1; + + # Resources + qos = "debug"; + ntasksPerNode = hw.socketsPerNode; + nodes = 4; + cpusPerTask = hw.cpusPerSocket; + jobName = "${unitName}"; + + # Compile flags + debugFlags = 1; + asanFlags = 0; + }; + + # Compute the array of configurations + configs = stdexp.buildConfigs { + inherit varConf genConf; + }; + + exec = {nextStage, conf, ...}: with conf; stages.exec { + inherit nextStage; + env = '' + export OMP_NUM_THREADS=${toString hw.cpusPerSocket} + export ASAN_SYMBOLIZER_PATH=${bsc.clangOmpss2Unwrapped}/bin/llvm-symbolizer + ''; + pre = '' + ulimit -c unlimited + ''; + }; + + valgrind = {nextStage, ...}: stages.valgrind { + inherit nextStage; + }; + + program = {nextStage, conf, ...}: + let + customPkgs = stdexp.replaceMpi conf.mpi; + in + customPkgs.apps.saiph.override { + inherit (conf) manualDist nbgx nbgy nbgz nblx nbly nblz nbltotal mpi gitBranch gitCommit debugFlags asanFlags; + }; + + pipeline = stdexp.stdPipeline ++ [ exec valgrind program ]; + +in + + stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/saiph/scaling.nix b/garlic/exp/saiph/scaling.nix index 64ee9a6..3f062ed 100644 --- a/garlic/exp/saiph/scaling.nix +++ b/garlic/exp/saiph/scaling.nix @@ -11,9 +11,29 @@ with stdenv.lib; let # Initial variable configuration varConf = with bsc; { - nbl = [ 1 2 4 8 16 32 64 ]; + #nbl = [ 1 2 4 8 16 32 64 ]; nodes = [ 1 2 4 8 ]; - #gitCommit = [ "3ecae7c209ec3e33d1108ae4783d7e733d54f2ca" "3b52a616d44f4b86880663e2d951ad89c1dcab4f" ]; + + input = [ + { nbly=12 ; nblz=1; nbltotal=12 ; } + { nbly=24 ; nblz=1; nbltotal=24 ; } + { nbly=48 ; nblz=1; nbltotal=48 ; } + { nbly=96 ; nblz=1; nbltotal=96 ; } + + { nbly=6 ; nblz=2; nbltotal=12 ; } + { nbly=12 ; nblz=2; nbltotal=24 ; } + { nbly=24 ; nblz=2; nbltotal=48 ; } + { nbly=48 ; nblz=2; nbltotal=96 ; } + { nbly=96 ; nblz=2; nbltotal=192 ; } + + { nbly=3 ; nblz=4; nbltotal=12 ; } + { nbly=6 ; nblz=4; nbltotal=24 ; } + { nbly=12 ; nblz=4; nbltotal=48 ; } + { nbly=24 ; nblz=4; nbltotal=96 ; } + { nbly=48 ; nblz=4; nbltotal=192 ; } + { nbly=96 ; nblz=4; nbltotal=384 ; } + ]; + }; # Generate the complete configuration for each unit @@ -30,31 +50,33 @@ let manualDist = 1; nbgx = 1; nbgy = 1; - nbgz = nodes; + nbgz = nodes*2; nblx = 1; - nbly = c.nbl; - nblz = c.nbl; + #nbly = c.nbl; + #nblz = c.nbl; mpi = impi; gitBranch = "garlic/tampi+isend+oss+task+simd"; #gitCommit = c.gitCommit; # if exp involves more than 1 commit + gitCommit = "3fa116620f1c7fbd1127d785c8bdc5d2372837b3"; #inherit (c) gitCommit; # if exp fixes the commit + inherit (c.input) nbly nblz nbltotal ; # Repeat the execution of each unit 50 times loops = 10; # Resources qos = "bsc_cs"; - ntasksPerNode = 1; + ntasksPerNode = hw.socketsPerNode; nodes = c.nodes; cpusPerTask = hw.cpusPerSocket; jobName = "${unitName}"; }; # Compute the array of configurations - configs = stdexp.buildConfigs { + configsAll = stdexp.buildConfigs { inherit varConf genConf; }; - #configs = filter (el: if el.nbly == 1 && el.nblz == 1 && el.nodes == 1 && el.gitCommit == "3b52a616d44f4b86880663e2d951ad89c1dcab4f" then false else true) configsAll; + configs = filter (el: if (el.nbly == 24 && el.nblz == 4) && el.nodes == 4 then false else true) configsAll; exec = {nextStage, conf, ...}: with conf; stages.exec { inherit nextStage; @@ -69,11 +91,14 @@ let customPkgs = stdexp.replaceMpi conf.mpi; in customPkgs.apps.saiph.override { - inherit (conf) manualDist nbgx nbgy nbgz nblx nbly nblz mpi gitBranch; + inherit (conf) manualDist nbgx nbgy nbgz nblx nbly nblz nbltotal mpi gitBranch gitCommit; }; pipeline = stdexp.stdPipeline ++ [ exec program ]; in - stdexp.genExperiment { inherit configs pipeline; } + stdexp.genExperiment { inherit configs pipeline; } + + +# last plot hash: f5xb7jv1c4mbrcy6d9s9j10msfz3kkj0-plot diff --git a/garlic/exp/saiph/scaling2.nix b/garlic/exp/saiph/scaling2.nix new file mode 100644 index 0000000..4109664 --- /dev/null +++ b/garlic/exp/saiph/scaling2.nix @@ -0,0 +1,104 @@ +{ + stdenv +, stdexp +, bsc +, targetMachine +, stages +}: + +with stdenv.lib; + +let + # Initial variable configuration + varConf = with bsc; { + #nbl = [ 1 2 4 8 16 32 64 ]; + nodes = [ 1 2 4 8 ]; + + input = [ + { nblz=12 ; nbly=1; nbltotal=12 ; } + { nblz=24 ; nbly=1; nbltotal=24 ; } + { nblz=48 ; nbly=1; nbltotal=48 ; } + { nblz=96 ; nbly=1; nbltotal=96 ; } + + { nblz=6 ; nbly=2; nbltotal=12 ; } + { nblz=12 ; nbly=2; nbltotal=24 ; } + { nblz=24 ; nbly=2; nbltotal=48 ; } + { nblz=48 ; nbly=2; nbltotal=96 ; } + { nblz=96 ; nbly=2; nbltotal=192 ; } + + { nblz=3 ; nbly=4; nbltotal=12 ; } + { nblz=6 ; nbly=4; nbltotal=24 ; } + { nblz=12 ; nbly=4; nbltotal=48 ; } + { nblz=24 ; nbly=4; nbltotal=96 ; } + { nblz=48 ; nbly=4; nbltotal=192 ; } + { nblz=96 ; nbly=4; nbltotal=384 ; } + ]; + + }; + + # Generate the complete configuration for each unit + genConf = with bsc; c: targetMachine.config // rec { + expName = "saiph"; + unitName = "${expName}-N${toString nodes}" + "-nblx${toString nblx}-nbly${toString nbly}" + "-par-init-One-dimensionalDistribution"; +# unitName = if (gitCommit == "3b52a616d44f4b86880663e2d951ad89c1dcab4f") +# then "${expName}-N${toString nodes}" + "-nblx${toString nblx}-nbly${toString nbly}" + "-par-init" +# else "${expName}-N${toString nodes}" + "-nblx${toString nblx}-nbly${toString nbly}" + "-seq-init"; + + inherit (targetMachine.config) hw; + + # saiph options + manualDist = 1; + nbgx = 1; + nbgy = 1; + nbgz = nodes*2; + nblx = 1; + #nbly = c.nbl; + #nblz = c.nbl; + mpi = impi; + gitBranch = "garlic/tampi+isend+oss+task+simd"; + #gitCommit = c.gitCommit; # if exp involves more than 1 commit + gitCommit = "3fa116620f1c7fbd1127d785c8bdc5d2372837b3"; + #inherit (c) gitCommit; # if exp fixes the commit + inherit (c.input) nbly nblz nbltotal ; + + # Repeat the execution of each unit 50 times + loops = 10; + + # Resources + qos = "bsc_cs"; + ntasksPerNode = hw.socketsPerNode; + nodes = c.nodes; + cpusPerTask = hw.cpusPerSocket; + jobName = "${unitName}"; + }; + + # Compute the array of configurations + configs = stdexp.buildConfigs { + inherit varConf genConf; + }; + #configs = filter (el: if (el.nbly == 24 && el.nblz == 4) && el.nodes == 4 then false else true) configsAll; + + exec = {nextStage, conf, ...}: with conf; stages.exec { + inherit nextStage; + env = '' + export OMP_NUM_THREADS=${toString hw.cpusPerSocket} + export ASAN_SYMBOLIZER_PATH=${bsc.clangOmpss2Unwrapped}/bin/llvm-symbolizer + ''; + }; + + program = {nextStage, conf, ...}: + let + customPkgs = stdexp.replaceMpi conf.mpi; + in + customPkgs.apps.saiph.override { + inherit (conf) manualDist nbgx nbgy nbgz nblx nbly nblz nbltotal mpi gitBranch gitCommit; + }; + + pipeline = stdexp.stdPipeline ++ [ exec program ]; + +in + + stdexp.genExperiment { inherit configs pipeline; } + + +# last plot hash: f5xb7jv1c4mbrcy6d9s9j10msfz3kkj0-plot diff --git a/garlic/fig/index.nix b/garlic/fig/index.nix index 3ef184d..5f73a33 100644 --- a/garlic/fig/index.nix +++ b/garlic/fig/index.nix @@ -42,12 +42,14 @@ in }; saiph = with exp.saiph; { - granularity = rPlotExp ./saiph/granularity.R [ granularity ]; - scaling = rPlotExp ./saiph/scaling.R [ scaling ]; - blockingY = rPlotExp ./saiph/granularityY.R [ blockingY ]; - blockingZ = rPlotExp ./saiph/granularityZ.R [ blockingZ ]; - blockingYZ = rPlotExp ./saiph/granularityYZ.R [ blockingYZ ]; - blockingZY = rPlotExp ./saiph/granularityZY.R [ blockingZY ]; + granularity = stdPlot ./saiph/granularity.R [ granularity ]; + scaling = stdPlot ./saiph/scaling.R [ scaling ]; + scaling2 = stdPlot ./saiph/scaling2.R [ scaling2 ]; + scalingnblyz = stdPlot ./saiph/scalingnblyz.R [ scaling scaling2 ]; + blockingY = stdPlot ./saiph/granularityY.R [ blockingY ]; + blockingZ = stdPlot ./saiph/granularityZ.R [ blockingZ ]; + blockingYZ = stdPlot ./saiph/granularityYZ.R [ blockingYZ ]; + blockingZY = stdPlot ./saiph/granularityZY.R [ blockingZY ]; }; heat = with exp.heat; { diff --git a/garlic/fig/saiph/scaling.R b/garlic/fig/saiph/scaling.R index f9e1b03..216d036 100644 --- a/garlic/fig/saiph/scaling.R +++ b/garlic/fig/saiph/scaling.R @@ -15,15 +15,22 @@ dataset = jsonlite::stream_in(file(input_file)) %>% # We only need the nblocks and time -df = select(dataset, config.nby, config.nodes, time, total_time, config.gitCommit) %>% - rename(nby=config.nby, nnodes=config.nodes, gitCommit=config.gitCommit) +#df = select(dataset, config.nbly, config.nodes, time, total_time, config.gitCommit) %>% +# rename(nbly=config.nbly, nnodes=config.nodes, gitCommit=config.gitCommit) -df$nby = as.factor(df$nby) +df = select(dataset, config.nbly, config.nblz, config.nbltotal, config.nodes, time, total_time) %>% + rename(nbly=config.nbly, nblz=config.nblz, nbltotal=config.nbltotal, nnodes=config.nodes) + +df$nbly = as.factor(df$nbly) +df$nblz = as.factor(df$nblz) +df$nblPerProc = as.factor(df$nbltotal / 24) +df$nbltotal = as.factor(df$nbltotal) df$nodes = as.factor(df$nnodes) -df$gitCommit = as.factor(df$gitCommit) +#df$gitCommit = as.factor(df$gitCommit) # Normalize the time by the median -D=group_by(df, nby, nodes, gitCommit) %>% +#D=group_by(df, nbly, nodes, gitCommit) %>% +D=group_by(df, nbly, nblz, nbltotal, nodes) %>% mutate(tmedian = median(time)) %>% mutate(ttmedian = median(total_time)) %>% mutate(tnorm = time / tmedian - 1) %>% @@ -33,7 +40,6 @@ D=group_by(df, nby, nodes, gitCommit) %>% D$bad = as.factor(D$bad) - print(D) ppi=300 @@ -45,10 +51,10 @@ png("box.png", width=w*ppi, height=h*ppi, res=ppi) # # # Create the plot with the normalized time vs nblocks -p = ggplot(data=D, aes(x=nby, y=tnorm, color=bad)) + +p = ggplot(data=D, aes(x=nbly, y=tnorm, color=bad)) + # Labels - labs(x="nby", y="Normalized time", + labs(x="nbly", y="Normalized time", title=sprintf("Saiph-Heat3D normalized time"), subtitle=input_file) + @@ -86,9 +92,9 @@ dev.off() png("scatter.png", width=w*ppi, height=h*ppi, res=ppi) # ## Create the plot with the normalized time vs nblocks -p = ggplot(D, aes(x=nby, y=time)) + +p = ggplot(D, aes(x=nbltotal, y=time)) + - labs(x="nby", y="Time (s)", + labs(x="nbltotal", y="Time (s)", title=sprintf("Saiph-Heat3D granularity"), subtitle=input_file) + theme_bw() + @@ -97,8 +103,8 @@ p = ggplot(D, aes(x=nby, y=time)) + geom_point(aes(color=nodes), shape=21, size=3) + #scale_x_continuous(trans=log2_trans()) + - scale_y_continuous(trans=log2_trans()) + - facet_wrap( ~ gitCommit) + scale_y_continuous(trans=log2_trans()) +# facet_wrap( ~ gitCommit) # Render the plot @@ -107,12 +113,37 @@ print(p) # Save the png image dev.off() +png("scatter1.png", width=w*ppi, height=h*ppi, res=ppi) +# +## Create the plot with the normalized time vs nblocks +p = ggplot(D, aes(x=nblPerProc, y=time)) + + + labs(x="nblPerProc", y="Time (s)", + title=sprintf("Saiph-Heat3D granularity per nodes"), + subtitle=input_file) + + theme_bw() + + theme(plot.subtitle=element_text(size=8)) + + theme(legend.position = c(0.5, 0.5)) + + + geom_point(aes(color=nblz), shape=21, size=3) + + #scale_x_continuous(trans=log2_trans()) + + scale_y_continuous(trans=log2_trans()) + + facet_wrap( ~ nodes) + + +# Render the plot +print(p) + +# Save the png image +dev.off() + + png("wasted.png", width=w*ppi, height=h*ppi, res=ppi) # ## Create the plot with the normalized time vs nblocks -p = ggplot(D, aes(x=nby, y=time)) + +p = ggplot(D, aes(x=nbly, y=time)) + - labs(x="nby", y="Time (s)", + labs(x="nbly", y="Time (s)", title=sprintf("Saiph-Heat3D granularity"), subtitle=input_file) + theme_bw() + @@ -123,8 +154,8 @@ p = ggplot(D, aes(x=nby, y=time)) + geom_line(aes(y=tmedian, color=nodes, group=nodes)) + geom_line(aes(y=ttmedian, color=nodes, group=nodes)) + #scale_x_continuous(trans=log2_trans()) + - scale_y_continuous(trans=log2_trans()) + - facet_wrap( ~ gitCommit) + scale_y_continuous(trans=log2_trans()) +# facet_wrap( ~ gitCommit) # Render the plot print(p) @@ -135,9 +166,9 @@ dev.off() png("test.png", width=w*ppi, height=h*ppi, res=ppi) # ## Create the plot with the normalized time vs nblocks -p = ggplot(D, aes(x=nby, y=tn)) + +p = ggplot(D, aes(x=nbltotal, y=tn)) + - labs(x="nby", y="Time (s) * nodes", + labs(x="nbltotal", y="Time (s) * nodes", title=sprintf("Saiph-Heat3D granularity"), subtitle=input_file) + theme_bw() + @@ -146,8 +177,31 @@ p = ggplot(D, aes(x=nby, y=tn)) + geom_point(shape=21, size=3) + geom_line(aes(color=nodes, group=nodes)) + #scale_x_continuous(trans=log2_trans()) + - scale_y_continuous(trans=log2_trans()) + - facet_wrap( ~ gitCommit) + scale_y_continuous(trans=log2_trans()) +# facet_wrap( ~ gitCommit) + +# Render the plot +print(p) + +# Save the png image +dev.off() + +png("test1.png", width=w*ppi, height=h*ppi, res=ppi) +# +## Create the plot with the normalized time vs nblocks +p = ggplot(D, aes(x=nblPerProc, y=tn)) + + + labs(x="nblPerProc", y="Time (s) * nodes", + title=sprintf("Saiph-Heat3D granularity per nblz blocks"), + subtitle=input_file) + + theme_bw() + + theme(plot.subtitle=element_text(size=8)) + + + geom_point(shape=21, size=3) + + geom_line(aes(color=nodes, group=nodes)) + + #scale_x_continuous(trans=log2_trans()) + + scale_y_continuous(trans=log2_trans()) + + facet_wrap( ~ nblz) # Render the plot print(p) diff --git a/garlic/fig/saiph/scaling2.R b/garlic/fig/saiph/scaling2.R new file mode 100644 index 0000000..e391759 --- /dev/null +++ b/garlic/fig/saiph/scaling2.R @@ -0,0 +1,210 @@ +library(ggplot2) +library(dplyr) +library(scales) +library(jsonlite) + +args=commandArgs(trailingOnly=TRUE) + +# Read the timetable from args[1] +input_file = "input.json" +if (length(args)>0) { input_file = args[1] } + +# Load the dataset in NDJSON format +dataset = jsonlite::stream_in(file(input_file)) %>% + jsonlite::flatten() + + +# We only need the nblocks and time +#df = select(dataset, config.nbly, config.nodes, time, total_time, config.gitCommit) %>% +# rename(nbly=config.nbly, nnodes=config.nodes, gitCommit=config.gitCommit) + +df = select(dataset, config.nbly, config.nblz, config.nbltotal, config.nodes, time, total_time) %>% + rename(nbly=config.nbly, nblz=config.nblz, nbltotal=config.nbltotal, nnodes=config.nodes) + +df$nbly = as.factor(df$nbly) +df$nblz = as.factor(df$nblz) +df$nblPerProc = as.factor(df$nbltotal / 24) +df$nbltotal = as.factor(df$nbltotal) +df$nodes = as.factor(df$nnodes) +#df$gitCommit = as.factor(df$gitCommit) + +# Normalize the time by the median +#D=group_by(df, nbly, nodes, gitCommit) %>% +D=group_by(df, nbly, nblz, nbltotal, nodes) %>% + mutate(tmedian = median(time)) %>% + mutate(ttmedian = median(total_time)) %>% + mutate(tnorm = time / tmedian - 1) %>% + mutate(bad = max(ifelse(abs(tnorm) >= 0.01, 1, 0))) %>% + mutate(tn = tmedian * nnodes) %>% + ungroup() + +D$bad = as.factor(D$bad) + +print(D) + +ppi=300 +h=5 +w=8 + +png("box.png", width=w*ppi, height=h*ppi, res=ppi) +# +# +# +# Create the plot with the normalized time vs nblocks +p = ggplot(data=D, aes(x=nbly, y=tnorm, color=bad)) + + + # Labels + labs(x="nbly", y="Normalized time", + title=sprintf("Saiph-Heat3D normalized time"), + subtitle=input_file) + + + # Center the title + #theme(plot.title = element_text(hjust = 0.5)) + + + # Black and white mode (useful for printing) + #theme_bw() + + + # Add the maximum allowed error lines + geom_hline(yintercept=c(-0.01, 0.01), + linetype="dashed", color="gray") + + + # Draw boxplots + geom_boxplot() + + scale_color_manual(values=c("black", "brown")) + + + #scale_y_continuous(breaks = scales::pretty_breaks(n = 10)) + + + theme_bw() + + + theme(plot.subtitle=element_text(size=8)) + + theme(legend.position = "none") + #theme(legend.position = c(0.85, 0.85)) + + + + +# Render the plot +print(p) + +## Save the png image +dev.off() +# +png("scatter.png", width=w*ppi, height=h*ppi, res=ppi) +# +## Create the plot with the normalized time vs nblocks +p = ggplot(D, aes(x=nbltotal, y=time)) + + + labs(x="nbltotal", y="Time (s)", + title=sprintf("Saiph-Heat3D granularity"), + subtitle=input_file) + + theme_bw() + + theme(plot.subtitle=element_text(size=8)) + + theme(legend.position = c(0.5, 0.88)) + + + geom_point(aes(color=nodes), shape=21, size=3) + + #scale_x_continuous(trans=log2_trans()) + + scale_y_continuous(trans=log2_trans()) +# facet_wrap( ~ gitCommit) + + +# Render the plot +print(p) + +# Save the png image +dev.off() + +png("scatter1.png", width=w*ppi, height=h*ppi, res=ppi) +# +## Create the plot with the normalized time vs nblocks +p = ggplot(D, aes(x=nblPerProc, y=time)) + + + labs(x="nblPerProc", y="Time (s)", + title=sprintf("Saiph-Heat3D granularity per nodes"), + subtitle=input_file) + + theme_bw() + + theme(plot.subtitle=element_text(size=8)) + + theme(legend.position = c(0.5, 0.5)) + + + geom_point(aes(color=nbly), shape=21, size=3) + + #scale_x_continuous(trans=log2_trans()) + + scale_y_continuous(trans=log2_trans()) + + facet_wrap( ~ nodes) + + +# Render the plot +print(p) + +# Save the png image +dev.off() + + +png("wasted.png", width=w*ppi, height=h*ppi, res=ppi) +# +## Create the plot with the normalized time vs nblocks +p = ggplot(D, aes(x=nbly, y=time)) + + + labs(x="nbly", y="Time (s)", + title=sprintf("Saiph-Heat3D granularity"), + subtitle=input_file) + + theme_bw() + + theme(plot.subtitle=element_text(size=8)) + + + geom_point(shape=21, size=3) + + geom_point(aes(y=total_time), shape=1, size=3, color="red") + + geom_line(aes(y=tmedian, color=nodes, group=nodes)) + + geom_line(aes(y=ttmedian, color=nodes, group=nodes)) + + #scale_x_continuous(trans=log2_trans()) + + scale_y_continuous(trans=log2_trans()) +# facet_wrap( ~ gitCommit) + +# Render the plot +print(p) + +# Save the png image +dev.off() + +png("test.png", width=w*ppi, height=h*ppi, res=ppi) +# +## Create the plot with the normalized time vs nblocks +p = ggplot(D, aes(x=nbltotal, y=tn)) + + + labs(x="nbltotal", y="Time (s) * nodes", + title=sprintf("Saiph-Heat3D granularity"), + subtitle=input_file) + + theme_bw() + + theme(plot.subtitle=element_text(size=8)) + + + geom_point(shape=21, size=3) + + geom_line(aes(color=nodes, group=nodes)) + + #scale_x_continuous(trans=log2_trans()) + + scale_y_continuous(trans=log2_trans()) +# facet_wrap( ~ gitCommit) + +# Render the plot +print(p) + +# Save the png image +dev.off() + +png("test1.png", width=w*ppi, height=h*ppi, res=ppi) +# +## Create the plot with the normalized time vs nblocks +p = ggplot(D, aes(x=nblPerProc, y=tn)) + + + labs(x="nblPerProc", y="Time (s) * nodes", + title=sprintf("Saiph-Heat3D granularity per nbly blocks"), + subtitle=input_file) + + theme_bw() + + theme(plot.subtitle=element_text(size=8)) + + + geom_point(shape=21, size=3) + + geom_line(aes(color=nodes, group=nodes)) + + #scale_x_continuous(trans=log2_trans()) + + scale_y_continuous(trans=log2_trans()) + + facet_wrap( ~ nbly) + +# Render the plot +print(p) + +# Save the png image +dev.off() diff --git a/garlic/fig/saiph/scalingnblyz.R b/garlic/fig/saiph/scalingnblyz.R new file mode 100644 index 0000000..b28c7a0 --- /dev/null +++ b/garlic/fig/saiph/scalingnblyz.R @@ -0,0 +1,162 @@ +library(ggplot2) +library(dplyr) +library(scales) +library(jsonlite) +library(viridis) + +args=commandArgs(trailingOnly=TRUE) + +# Read the timetable from args[1] +input_file = "input.json" +if (length(args)>0) { input_file = args[1] } + +# Load the dataset in NDJSON format +dataset = jsonlite::stream_in(file(input_file)) %>% + jsonlite::flatten() + + +# We only need the nblocks and time +#df = select(dataset, config.nbly, config.nodes, time, total_time, config.gitCommit) %>% +# rename(nbly=config.nbly, nnodes=config.nodes, gitCommit=config.gitCommit) + +df = select(dataset, config.nbly, config.nblz, config.nbltotal, config.nodes, time, total_time) %>% + rename(nbly=config.nbly, nblz=config.nblz, nbltotal=config.nbltotal, nnodes=config.nodes) + +df2 = df[df$nblz == 1 | df$nblz == 2 | df$nblz == 4, ] +df3 = df[df$nbly == 1 | df$nbly == 2 | df$nbly == 4, ] + +# df2 data frame +df2$nblsetZ = as.factor(df2$nblz) +df2$nblPerProcZ = as.factor(df2$nbltotal / 24) +df2$nbltotal = as.factor(df2$nbltotal) +df2$nodes = as.factor(df2$nnodes) + +# df3 data frame +df3$nblsetY = as.factor(df3$nbly) +df3$nblPerProcY = as.factor(df3$nbltotal / 24) +df3$nbltotalY = as.factor(df3$nbltotal) +df3$nodes = as.factor(df3$nnodes) + +df$nbly = as.factor(df$nbly) +df$nblz = as.factor(df$nblz) +df$nblPerProc = as.factor(df$nbltotal / 24) +df$nbltotal = as.factor(df$nbltotal) +df$nodes = as.factor(df$nnodes) +#df$gitCommit = as.factor(df$gitCommit) + +# Normalize the time by the median +#D=group_by(df, nbly, nodes, gitCommit) %>% +D=group_by(df, nbly, nblz, nbltotal, nodes) %>% + mutate(tmedian = median(time)) %>% + mutate(ttmedian = median(total_time)) %>% + mutate(tnorm = time / tmedian - 1) %>% + mutate(bad = max(ifelse(abs(tnorm) >= 0.01, 1, 0))) %>% + mutate(tn = tmedian * nnodes) %>% + ungroup() + +D$bad = as.factor(D$bad) + +print(D) + +ppi=300 +h=5 +w=8 + + +png("scatter_nbly.png", width=w*ppi, height=h*ppi, res=ppi) +# +## Create the plot with the normalized time vs nblocks +p = ggplot() + + geom_point(data=df2, aes(x=nblPerProcZ, y=time, color=nblsetZ), shape=21, size=3, show.legend=TRUE) + + geom_point(data=df3, aes(x=nblPerProcY, y=time, color=nblsetY), shape=4, size=2, show.legend=TRUE) + + labs(x="nblPerProc", y="Time (s)", + title=sprintf("Saiph-Heat3D granularity per nodes"), + subtitle=input_file) + + theme_bw() + + theme(plot.subtitle=element_text(size=8)) + + theme(legend.position = c(0.5, 0.5)) + + scale_y_continuous(trans=log2_trans()) + + facet_wrap( ~ nodes) + + +# Render the plot +print(p) + +# Save the png image +dev.off() + + + + + + + +png("scatter_nbly.png", width=w*ppi, height=h*ppi, res=ppi) +# +## Create the plot with the normalized time vs nblocks +p = ggplot() + + geom_point(data=df2, aes(x=nblPerProcZ, y=time, color=nblsetZ), shape=21, size=3, show.legend=TRUE) + + geom_point(data=df3, aes(x=nblPerProcY, y=time, color=nblsetY), shape=4, size=2, show.legend=TRUE) + + labs(x="nblPerProc", y="Time (s)", + title=sprintf("Saiph-Heat3D granularity per nodes"), + subtitle=input_file) + + theme_bw() + + theme(plot.subtitle=element_text(size=8)) + + theme(legend.position = c(0.5, 0.5)) + + scale_y_continuous(trans=log2_trans()) + + facet_wrap( ~ nodes) + + +# Render the plot +print(p) + +# Save the png image +dev.off() + +png("test1.png", width=w*ppi, height=h*ppi, res=ppi) +# +## Create the plot with the normalized time vs nblocks +p = ggplot(D, aes(x=nblPerProc, y=tn)) + + + labs(x="nblPerProc", y="Time (s) * nodes", + title=sprintf("Saiph-Heat3D granularity per nbly blocks"), + subtitle=input_file) + + theme_bw() + + theme(plot.subtitle=element_text(size=8)) + + + geom_point(shape=21, size=3) + + geom_line(aes(color=nodes, group=nodes)) + + #scale_x_continuous(trans=log2_trans()) + + scale_y_continuous(trans=log2_trans()) + + facet_wrap( ~ nbly) + +# Render the plot +print(p) + +# Save the png image +dev.off() + + +heatmap_plot = function(df, colname, title) { + p = ggplot(df, aes(x=nbly, y=nblz, fill=!!ensym(colname))) + + geom_raster() + + #scale_fill_gradient(high="black", low="white") + + scale_fill_viridis(option="plasma") + + coord_fixed() + + theme_bw() + + theme(axis.text.x=element_text(angle = -45, hjust = 0)) + + theme(plot.subtitle=element_text(size=8)) + + #guides(fill = guide_colorbar(barwidth=15, title.position="top")) + + guides(fill = guide_colorbar(barwidth=12, title.vjust=0.8)) + + labs(x="nbly", y="nblz", + title=sprintf("Heat granularity: %s", title), + subtitle=input_file) + + theme(legend.position="bottom")+ + facet_wrap( ~ nodes) + + k=1 + ggsave(sprintf("%s.png", colname), plot=p, width=4.8*k, height=5*k, dpi=300) + ggsave(sprintf("%s.pdf", colname), plot=p, width=4.8*k, height=5*k, dpi=300) +} + +heatmap_plot(D, "tmedian", "time") From 72e7a8dab759b825845773998de7701d711f5bcb Mon Sep 17 00:00:00 2001 From: Sandra Date: Wed, 24 Mar 2021 09:07:54 +0100 Subject: [PATCH 599/987] shell: add clangOmpss2 and gdb --- garlic/shell.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/garlic/shell.nix b/garlic/shell.nix index 145a20a..9a38076 100644 --- a/garlic/shell.nix +++ b/garlic/shell.nix @@ -10,7 +10,7 @@ mkShell { # Packages from garlic (with garlic; [ tool garlicd ]) ++ # Packages from bsc - [ groff paraver icc nix openssh git cn6 nix-diff ]; + [ groff paraver icc nix openssh git cn6 nix-diff clangOmpss2 gdb ]; # inputsFrom to get build dependencies From b64b864194799f79a40992a69f22d069ccf346bb Mon Sep 17 00:00:00 2001 From: Sandra Date: Wed, 24 Mar 2021 09:08:34 +0100 Subject: [PATCH 600/987] saiph: clean exps and figs --- garlic/exp/index.nix | 11 +- garlic/exp/saiph/blocking.nix | 67 ------- garlic/exp/saiph/blocking_Y.nix | 68 ------- garlic/exp/saiph/blocking_YZ.nix | 68 ------- garlic/exp/saiph/blocking_Z.nix | 68 ------- garlic/exp/saiph/blocking_ZY.nix | 68 ------- garlic/exp/saiph/debug.nix | 89 --------- garlic/exp/saiph/granularity-saiph.nix | 109 +++++++++++ garlic/exp/saiph/granularity.nix | 70 ------- garlic/exp/saiph/numcomm.nix | 65 ------- garlic/exp/saiph/scalability-saiph.nix | 113 +++++++++++ garlic/exp/saiph/scaling.nix | 104 ---------- garlic/exp/saiph/scaling2.nix | 104 ---------- garlic/exp/saiph/strongScaling.nix | 70 ------- garlic/fig/index.nix | 10 +- garlic/fig/saiph/blocking.R | 100 ---------- garlic/fig/saiph/blockingY_blocking_Z.R | 77 -------- garlic/fig/saiph/blocking_Y.R | 100 ---------- garlic/fig/saiph/blocking_YZ.R | 100 ---------- garlic/fig/saiph/blocking_Z.R | 100 ---------- garlic/fig/saiph/blocking_ZY.R | 100 ---------- garlic/fig/saiph/granBlock.R | 67 ------- garlic/fig/saiph/granularity-saiph.R | 155 +++++++++++++++ garlic/fig/saiph/granularity.R | 100 ---------- garlic/fig/saiph/granularityPerNumBlocks.R | 100 ---------- garlic/fig/saiph/scalability-saiph.R | 156 +++++++++++++++ garlic/fig/saiph/scaling.R | 210 --------------------- garlic/fig/saiph/scaling2.R | 210 --------------------- garlic/fig/saiph/scalingnblyz.R | 162 ---------------- garlic/fig/saiph/strongScaling.R | 100 ---------- 30 files changed, 537 insertions(+), 2384 deletions(-) delete mode 100644 garlic/exp/saiph/blocking.nix delete mode 100644 garlic/exp/saiph/blocking_Y.nix delete mode 100644 garlic/exp/saiph/blocking_YZ.nix delete mode 100644 garlic/exp/saiph/blocking_Z.nix delete mode 100644 garlic/exp/saiph/blocking_ZY.nix delete mode 100644 garlic/exp/saiph/debug.nix create mode 100644 garlic/exp/saiph/granularity-saiph.nix delete mode 100644 garlic/exp/saiph/granularity.nix delete mode 100644 garlic/exp/saiph/numcomm.nix create mode 100644 garlic/exp/saiph/scalability-saiph.nix delete mode 100644 garlic/exp/saiph/scaling.nix delete mode 100644 garlic/exp/saiph/scaling2.nix delete mode 100644 garlic/exp/saiph/strongScaling.nix delete mode 100644 garlic/fig/saiph/blocking.R delete mode 100644 garlic/fig/saiph/blockingY_blocking_Z.R delete mode 100644 garlic/fig/saiph/blocking_Y.R delete mode 100644 garlic/fig/saiph/blocking_YZ.R delete mode 100644 garlic/fig/saiph/blocking_Z.R delete mode 100644 garlic/fig/saiph/blocking_ZY.R delete mode 100644 garlic/fig/saiph/granBlock.R create mode 100644 garlic/fig/saiph/granularity-saiph.R delete mode 100644 garlic/fig/saiph/granularity.R delete mode 100644 garlic/fig/saiph/granularityPerNumBlocks.R create mode 100644 garlic/fig/saiph/scalability-saiph.R delete mode 100644 garlic/fig/saiph/scaling.R delete mode 100644 garlic/fig/saiph/scaling2.R delete mode 100644 garlic/fig/saiph/scalingnblyz.R delete mode 100644 garlic/fig/saiph/strongScaling.R diff --git a/garlic/exp/index.nix b/garlic/exp/index.nix index 6a2f6bd..a70556b 100644 --- a/garlic/exp/index.nix +++ b/garlic/exp/index.nix @@ -32,15 +32,8 @@ }; saiph = { - numcomm = callPackage ./saiph/numcomm.nix { }; - granularity = callPackage ./saiph/granularity.nix { }; - scaling = callPackage ./saiph/scaling.nix { }; - scaling2 = callPackage ./saiph/scaling2.nix { }; - debug = callPackage ./saiph/debug.nix { }; - blockingY = callPackage ./saiph/blocking_Y.nix { }; - blockingZ = callPackage ./saiph/blocking_Z.nix { }; - blockingYZ = callPackage ./saiph/blocking_YZ.nix { }; - blockingZY = callPackage ./saiph/blocking_ZY.nix { }; + granularity-saiph = callPackage ./saiph/granularity-saiph.nix { }; + scalability-saiph = callPackage ./saiph/scalability-saiph.nix { }; }; creams = rec { diff --git a/garlic/exp/saiph/blocking.nix b/garlic/exp/saiph/blocking.nix deleted file mode 100644 index 05b2287..0000000 --- a/garlic/exp/saiph/blocking.nix +++ /dev/null @@ -1,67 +0,0 @@ -{ - stdenv -, stdexp -, bsc -, targetMachine -, stages -}: - -with stdenv.lib; - -let - # Initial variable configuration - varConf = with bsc; { - nb = [ 2 4 8 16 32 ]; - }; - - # Generate the complete configuration for each unit - genConf = with bsc; c: targetMachine.config // rec { - expName = "saiph.blocking"; - unitName = "${expName}.1-nby-nbz-${toString nby}-${toString nbz}.nsteps-${toString nsteps}"; - inherit (targetMachine.config) hw; - - # saiph options - nby = c.nb; - nbz = c.nb; - nsteps = 500; - mpi = impi; - gitBranch = "garlic/tampi+isend+oss+task+simd"; - - # Repeat the execution of each unit 50 times - loops = 30; - - # Resources - cachelineBytes = hw.cachelineBytes; - qos = "debug"; - time = "00:50:00"; - nodes = 1; - ntasksPerNode = hw.socketsPerNode; - cpusPerTask = hw.cpusPerSocket; - jobName = "${unitName}-${gitBranch}"; - }; - - # Compute the array of configurations - configs = stdexp.buildConfigs { - inherit varConf genConf; - }; - - exec = {nextStage, conf, ...}: with conf; stages.exec { - inherit nextStage; - env = '' - export ASAN_SYMBOLIZER_PATH=${bsc.clangOmpss2Unwrapped}/bin/llvm-symbolizer - ''; - }; - - program = {nextStage, conf, ...}: with conf; - let - customPkgs = stdexp.replaceMpi conf.mpi; - in - customPkgs.apps.saiph.override { - inherit nby nbz nsteps mpi gitBranch cachelineBytes; - }; - - pipeline = stdexp.stdPipeline ++ [ exec program ]; - -in - - stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/saiph/blocking_Y.nix b/garlic/exp/saiph/blocking_Y.nix deleted file mode 100644 index e5c7a9d..0000000 --- a/garlic/exp/saiph/blocking_Y.nix +++ /dev/null @@ -1,68 +0,0 @@ -{ - stdenv -, stdexp -, bsc -, targetMachine -, stages -}: - -with stdenv.lib; - -let - # Initial variable configuration - varConf = with bsc; { - nb = [ 1 2 4 8 16 32 64 128 ]; - }; - - # Generate the complete configuration for each unit - genConf = with bsc; c: targetMachine.config // rec { - expName = "saiph.blockingY"; - unitName = "${expName}.nbx-nby-nbz-${toString nbx}-${toString nby}-${toString nbz}.nsteps-${toString nsteps}"; - inherit (targetMachine.config) hw; - - # saiph options - nbx = 1; - nby = c.nb; - nbz = 1; - nsteps = 500; - mpi = impi; - gitBranch = "garlic/tampi+isend+oss+task+simd"; - - # Repeat the execution of each unit 50 times - loops = 30; - - # Resources - cachelineBytes = hw.cachelineBytes; - qos = "debug"; - time = "01:00:00"; - nodes = 1; - ntasksPerNode = hw.socketsPerNode; - cpusPerTask = hw.cpusPerSocket; - jobName = "${unitName}-${gitBranch}"; - }; - - # Compute the array of configurations - configs = stdexp.buildConfigs { - inherit varConf genConf; - }; - - exec = {nextStage, conf, ...}: with conf; stages.exec { - inherit nextStage; - env = '' - export ASAN_SYMBOLIZER_PATH=${bsc.clangOmpss2Unwrapped}/bin/llvm-symbolizer - ''; - }; - - program = {nextStage, conf, ...}: with conf; - let - customPkgs = stdexp.replaceMpi conf.mpi; - in - customPkgs.apps.saiph.override { - inherit nbx nby nbz nsteps mpi gitBranch cachelineBytes; - }; - - pipeline = stdexp.stdPipeline ++ [ exec program ]; - -in - - stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/saiph/blocking_YZ.nix b/garlic/exp/saiph/blocking_YZ.nix deleted file mode 100644 index 70041e1..0000000 --- a/garlic/exp/saiph/blocking_YZ.nix +++ /dev/null @@ -1,68 +0,0 @@ -{ - stdenv -, stdexp -, bsc -, targetMachine -, stages -}: - -with stdenv.lib; - -let - # Initial variable configuration - varConf = with bsc; { - nb = [ 4 8 16 32 64 128 ]; - }; - - # Generate the complete configuration for each unit - genConf = with bsc; c: targetMachine.config // rec { - expName = "saiph.blockingY"; - unitName = "${expName}.nbx-nby-nbz-${toString nbx}-${toString nby}-${toString nbz}.nsteps-${toString nsteps}"; - inherit (targetMachine.config) hw; - - # saiph options - nbx = 1; - nby = 8; - nbz = c.nb; - nsteps = 500; - mpi = impi; - gitBranch = "garlic/tampi+isend+oss+task+simd"; - - # Repeat the execution of each unit 50 times - loops = 30; - - # Resources - cachelineBytes = hw.cachelineBytes; - qos = "debug"; - time = "01:00:00"; - nodes = 1; - ntasksPerNode = hw.socketsPerNode; - cpusPerTask = hw.cpusPerSocket; - jobName = "${unitName}-${gitBranch}"; - }; - - # Compute the array of configurations - configs = stdexp.buildConfigs { - inherit varConf genConf; - }; - - exec = {nextStage, conf, ...}: with conf; stages.exec { - inherit nextStage; - env = '' - export ASAN_SYMBOLIZER_PATH=${bsc.clangOmpss2Unwrapped}/bin/llvm-symbolizer - ''; - }; - - program = {nextStage, conf, ...}: with conf; - let - customPkgs = stdexp.replaceMpi conf.mpi; - in - customPkgs.apps.saiph.override { - inherit nbx nby nbz nsteps mpi gitBranch cachelineBytes; - }; - - pipeline = stdexp.stdPipeline ++ [ exec program ]; - -in - - stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/saiph/blocking_Z.nix b/garlic/exp/saiph/blocking_Z.nix deleted file mode 100644 index 52b282f..0000000 --- a/garlic/exp/saiph/blocking_Z.nix +++ /dev/null @@ -1,68 +0,0 @@ -{ - stdenv -, stdexp -, bsc -, targetMachine -, stages -}: - -with stdenv.lib; - -let - # Initial variable configuration - varConf = with bsc; { - nb = [ 1 2 4 8 16 32 64 128 ]; - }; - - # Generate the complete configuration for each unit - genConf = with bsc; c: targetMachine.config // rec { - expName = "saiph.blockingZ"; - unitName = "${expName}.nbx-nby-nbz-${toString nbx}-${toString nby}-${toString nbz}.nsteps-${toString nsteps}"; - inherit (targetMachine.config) hw; - - # saiph options - nbx = 1; - nby = 1; - nbz = c.nb; - nsteps = 500; - mpi = impi; - gitBranch = "garlic/tampi+isend+oss+task+simd"; - - # Repeat the execution of each unit 50 times - loops = 30; - - # Resources - cachelineBytes = hw.cachelineBytes; - qos = "debug"; - time = "01:00:00"; - nodes = 1; - ntasksPerNode = hw.socketsPerNode; - cpusPerTask = hw.cpusPerSocket; - jobName = "${unitName}-${gitBranch}"; - }; - - # Compute the array of configurations - configs = stdexp.buildConfigs { - inherit varConf genConf; - }; - - exec = {nextStage, conf, ...}: with conf; stages.exec { - inherit nextStage; - env = '' - export ASAN_SYMBOLIZER_PATH=${bsc.clangOmpss2Unwrapped}/bin/llvm-symbolizer - ''; - }; - - program = {nextStage, conf, ...}: with conf; - let - customPkgs = stdexp.replaceMpi conf.mpi; - in - customPkgs.apps.saiph.override { - inherit nbx nby nbz nsteps mpi gitBranch cachelineBytes; - }; - - pipeline = stdexp.stdPipeline ++ [ exec program ]; - -in - - stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/saiph/blocking_ZY.nix b/garlic/exp/saiph/blocking_ZY.nix deleted file mode 100644 index 7ea45c5..0000000 --- a/garlic/exp/saiph/blocking_ZY.nix +++ /dev/null @@ -1,68 +0,0 @@ -{ - stdenv -, stdexp -, bsc -, targetMachine -, stages -}: - -with stdenv.lib; - -let - # Initial variable configuration - varConf = with bsc; { - nb = [ 4 8 16 32 64 128 ]; - }; - - # Generate the complete configuration for each unit - genConf = with bsc; c: targetMachine.config // rec { - expName = "saiph.blockingZY"; - unitName = "${expName}.nbx-nby-nbz-${toString nbx}-${toString nby}-${toString nbz}.nsteps-${toString nsteps}"; - inherit (targetMachine.config) hw; - - # saiph options - nbx = 1; - nby = c.nb; - nbz = 8; - nsteps = 500; - mpi = impi; - gitBranch = "garlic/tampi+isend+oss+task+simd"; - - # Repeat the execution of each unit 50 times - loops = 30; - - # Resources - cachelineBytes = hw.cachelineBytes; - qos = "debug"; - time = "01:00:00"; - nodes = 1; - ntasksPerNode = hw.socketsPerNode; - cpusPerTask = hw.cpusPerSocket; - jobName = "${unitName}-${gitBranch}"; - }; - - # Compute the array of configurations - configs = stdexp.buildConfigs { - inherit varConf genConf; - }; - - exec = {nextStage, conf, ...}: with conf; stages.exec { - inherit nextStage; - env = '' - export ASAN_SYMBOLIZER_PATH=${bsc.clangOmpss2Unwrapped}/bin/llvm-symbolizer - ''; - }; - - program = {nextStage, conf, ...}: with conf; - let - customPkgs = stdexp.replaceMpi conf.mpi; - in - customPkgs.apps.saiph.override { - inherit nbx nby nbz nsteps mpi gitBranch cachelineBytes; - }; - - pipeline = stdexp.stdPipeline ++ [ exec program ]; - -in - - stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/saiph/debug.nix b/garlic/exp/saiph/debug.nix deleted file mode 100644 index 1866801..0000000 --- a/garlic/exp/saiph/debug.nix +++ /dev/null @@ -1,89 +0,0 @@ -{ - stdenv -, stdexp -, bsc -, targetMachine -, stages -}: - -with stdenv.lib; - -let - # Initial variable configuration - varConf = with bsc; { - }; - - # Generate the complete configuration for each unit - genConf = with bsc; c: targetMachine.config // rec { - expName = "saiph"; - unitName = "${expName}-debug"; - -# unitName = if (gitCommit == "3b52a616d44f4b86880663e2d951ad89c1dcab4f") -# then "${expName}-N${toString nodes}" + "-nblx${toString nblx}-nbly${toString nbly}" + "-par-init" -# else "${expName}-N${toString nodes}" + "-nblx${toString nblx}-nbly${toString nbly}" + "-seq-init"; - - inherit (targetMachine.config) hw; - - # saiph options - manualDist = 1; - nbgx = 1; - nbgy = 1; - nbgz = 8; - nblx = 1; - nbly = 4; - nblz = 96; - nbltotal = 384; - mpi = impi; - gitBranch = "garlic/tampi+isend+oss+task+simd"; - gitCommit = "3fa116620f1c7fbd1127d785c8bdc5d2372837b3"; - #gitCommit = c.gitCommit; # if exp involves more than 1 commit - #inherit (c) gitCommit; # if exp fixes the commit - - # Repeat the execution of each unit 50 times - loops = 1; - - # Resources - qos = "debug"; - ntasksPerNode = hw.socketsPerNode; - nodes = 4; - cpusPerTask = hw.cpusPerSocket; - jobName = "${unitName}"; - - # Compile flags - debugFlags = 1; - asanFlags = 0; - }; - - # Compute the array of configurations - configs = stdexp.buildConfigs { - inherit varConf genConf; - }; - - exec = {nextStage, conf, ...}: with conf; stages.exec { - inherit nextStage; - env = '' - export OMP_NUM_THREADS=${toString hw.cpusPerSocket} - export ASAN_SYMBOLIZER_PATH=${bsc.clangOmpss2Unwrapped}/bin/llvm-symbolizer - ''; - pre = '' - ulimit -c unlimited - ''; - }; - - valgrind = {nextStage, ...}: stages.valgrind { - inherit nextStage; - }; - - program = {nextStage, conf, ...}: - let - customPkgs = stdexp.replaceMpi conf.mpi; - in - customPkgs.apps.saiph.override { - inherit (conf) manualDist nbgx nbgy nbgz nblx nbly nblz nbltotal mpi gitBranch gitCommit debugFlags asanFlags; - }; - - pipeline = stdexp.stdPipeline ++ [ exec valgrind program ]; - -in - - stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/saiph/granularity-saiph.nix b/garlic/exp/saiph/granularity-saiph.nix new file mode 100644 index 0000000..0c794a2 --- /dev/null +++ b/garlic/exp/saiph/granularity-saiph.nix @@ -0,0 +1,109 @@ +###################################################################################### +# Saiph, granularity experiment: +# +# App:Heat 3D - garlic/tampi+isend+oss+task+simd branch +# App details: +# 3D mesh of ~400*400*400 points +# nbgx = global blocks in the X dimension +# nbgy = global blocks in the Y dimension +# nbgz = global blocks in the Z dimension +# --> nbgx*nbgy*nbgz = global distributed blocks +# nbly = local blocks in the Y dimension +# nblz = local blocks in the Z dimension +# --> nbly*nblz = local blocks (#tasks) +# +# Granularity experiment configuration: +# Single-core run +# MPI binded to sockets: MPI procs = 2 +# Mesh distributed across third dimension to ensure contiguous communications +# --> nbgx = 1, nbgy = 1 +# First dimension cannot be locally blocked (simd reasons) +# Second and third dimension local blocking limited by local mesh size +# +###################################################################################### + +# Common packages, tools and options +{ + stdenv +, stdexp +, bsc +, targetMachine +, stages +}: + +with stdenv.lib; + +let + + #*** Variable configurations *** + varConf = with bsc; { + # Local blocks per dimension + nbl1 = [ 1 2 3 4 6 12 24 48 96 ]; + nbl2 = [ 1 2 3 4 6 12 24 48 96 ]; + }; + + #*** Generate the complete configuration for each unit *** + genConf = with bsc; c: targetMachine.config // rec { + + # Experiment, units and job names + expName = "saiph-granularity"; + unitName = "${expName}-N${toString nodes}" + "nbg_${toString nbgx}-${toString nbgy}-${toString nbgz}" + "nbl_1-${toString nbly}-${toString nblz}"; + jobName = "${unitName}"; + + # saiph options + nodes = 1; + enableManualDist = true; # allows to manually set nbg{x-y-z} + nbgx = 1; + nbgy = 1; + nbgz = nodes*2; # forcing distribution by last dim + nblx = 1; # simd reasons + nbly = c.nbl1; # takes values from varConf + nblz = c.nbl2; # takes values from varConf + mpi = impi; + gitBranch = "garlic/tampi+isend+oss+task+simd"; + gitCommit = "8052494d7dc62bef95ebaca9938e82fb029686f6"; # fix a specific commit + rev = "0"; + + # Repeat the execution of each unit 30 times + loops = 30; + + # Resources + inherit (targetMachine.config) hw; + qos = "debug"; + ntasksPerNode = hw.socketsPerNode; # MPI binded to sockets + cpusPerTask = hw.cpusPerSocket; # Using the 24 CPUs of each socket + }; + + #*** Compute the final set of configurations *** + # Compute the array of configurations: cartesian product of all factors + allConfigs = stdexp.buildConfigs { + inherit varConf genConf; + }; + # Filter to remove non-desired configurations: + # --> tasks/proc < 0.5 + # --> nblz > 50 + configs = filter (el: if ((builtins.mul el.nbly el.nblz) < (builtins.mul 0.5 el.cpusPerTask) || el.nblz > 50) then false else true) allConfigs; + + #*** Sets the env/argv of the program *** + exec = {nextStage, conf, ...}: with conf; stages.exec { + inherit nextStage; + env = '' + export OMP_NUM_THREADS=${toString hw.cpusPerSocket} + ''; + }; + + #*** Configure the program according to the app *** + program = {nextStage, conf, ...}: + let + customPkgs = stdexp.replaceMpi conf.mpi; + in + customPkgs.apps.saiph.override { + inherit (conf) enableManualDist nbgx nbgy nbgz nblx nbly nblz mpi gitBranch gitCommit; + }; + + #*** Add stages to the pipeline *** + pipeline = stdexp.stdPipeline ++ [ exec program ]; + +in + stdexp.genExperiment { inherit configs pipeline; } + diff --git a/garlic/exp/saiph/granularity.nix b/garlic/exp/saiph/granularity.nix deleted file mode 100644 index f19934b..0000000 --- a/garlic/exp/saiph/granularity.nix +++ /dev/null @@ -1,70 +0,0 @@ -{ - stdenv -, stdexp -, bsc -, targetMachine -, stages -}: - -with stdenv.lib; - -let - # Initial variable configuration - varConf = with bsc; { - nb = [ 1 2 4 8 16 32 64 ]; - }; - - # Generate the complete configuration for each unit - genConf = with bsc; c: targetMachine.config // rec { - expName = "saiph.granularity"; - unitName = "${expName}.nbx-nby-nbz-${toString nbx}-${toString nby}-${toString nbz}.nsteps-${nsteps}"; - inherit (targetMachine.config) hw; - - # saiph options - nbx = 1; - nby = c.nb; - nbz = c.nb; - nsteps = 500; - mpi = impi; - gitBranch = "garlic/tampi+isend+omp+task+simd"; - - # Repeat the execution of each unit 30 times - loops = 30; - - # Resources - cachelineBytes = hw.cachelineBytes; - qos = "debug"; - time = "02:00:00"; - ntasksPerNode = 1; - nodes = 1; - ntasksPerNode = hw.socketsPerNode; - cpusPerTask = hw.cpusPerSocket; - jobName = "${unitName}-${gitBranch}"; - }; - - # Compute the array of configurations - configs = stdexp.buildConfigs { - inherit varConf genConf; - }; - - exec = {nextStage, conf, ...}: with conf; stages.exec { - inherit nextStage; - env = '' - export OMP_NUM_THREADS=${toString hw.cpusPerSocket} - export ASAN_SYMBOLIZER_PATH=${bsc.clangOmpss2Unwrapped}/bin/llvm-symbolizer - ''; - }; - - program = {nextStage, conf, ...}: with conf; - let - customPkgs = stdexp.replaceMpi conf.mpi; - in - customPkgs.apps.saiph.override { - inherit nbx nby nbz nsteps mpi gitBranch cachelineBytes; - }; - - pipeline = stdexp.stdPipeline ++ [ exec program ]; - -in - - stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/saiph/numcomm.nix b/garlic/exp/saiph/numcomm.nix deleted file mode 100644 index 9c88c7a..0000000 --- a/garlic/exp/saiph/numcomm.nix +++ /dev/null @@ -1,65 +0,0 @@ -{ - stdenv -, stdexp -, bsc -, targetMachine -, stages -}: - -with stdenv.lib; - -let - # Initial variable configuration - varConf = with bsc; { - numComm = [ 1 2 ]; - }; - - # Generate the complete configuration for each unit - genConf = with bsc; c: targetMachine.config // rec { - expName = "saiph.numcomm"; - unitName = "${expName}.nc-${toString numComm}"; - inherit (targetMachine.config) hw; - - # saiph options - inherit (c) numComm; - mpi = impi; - gitBranch = "garlic/tampi+isend+oss+task+simd"; - - # Repeat the execution of each unit 100 times - loops = 100; - - # Resources - qos = "debug"; - time = "02:00:00"; - ntasksPerNode = 2; - nodes = 1; - cpusPerTask = hw.cpusPerSocket; - jobName = "saiph-${toString numComm}-${gitBranch}"; - }; - - # Compute the array of configurations - configs = stdexp.buildConfigs { - inherit varConf genConf; - }; - - exec = {nextStage, conf, ...}: with conf; stages.exec { - inherit nextStage; - env = '' - export OMP_NUM_THREADS=24 - export ASAN_SYMBOLIZER_PATH=${bsc.clangOmpss2Unwrapped}/bin/llvm-symbolizer - ''; - }; - - program = {nextStage, conf, ...}: with conf; - let - customPkgs = stdexp.replaceMpi conf.mpi; - in - customPkgs.apps.saiph.override { - inherit numComm mpi gitBranch; - }; - - pipeline = stdexp.stdPipeline ++ [ exec program ]; - -in - - stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/saiph/scalability-saiph.nix b/garlic/exp/saiph/scalability-saiph.nix new file mode 100644 index 0000000..5ec5d1a --- /dev/null +++ b/garlic/exp/saiph/scalability-saiph.nix @@ -0,0 +1,113 @@ +###################################################################################### +# Saiph, scalability experiment: +# +# App:Heat 3D - garlic/tampi+isend+oss+task+simd branch +# App details: +# 3D mesh of ~400*400*400 points +# nbgx = global blocks in the X dimension +# nbgy = global blocks in the Y dimension +# nbgz = global blocks in the Z dimension +# --> nbgx*nbgy*nbgz = global distributed blocks +# nbly = local blocks in the Y dimension +# nblz = local blocks in the Z dimension +# --> nbly*nblz = local blocks (#tasks) +# +# Scalability experiment configuration: +# From a single-core granularity experiment, use a suited local blocking set: +# --> nbly*nblz >= 48 (at least 3tasks/proc) +# MPI binded to sockets: MPI procs = 2*nodes +# Mesh distributed across third dimension to ensure contiguous communications +# --> nbgx = 1, nbgy = 1 +# Global distribution limited by global mesh size +# First dimension cannot be locally blocked (simd reasons) +# Second and third dimension local blocking limited by local mesh size +# +###################################################################################### + +# Common packages, tools and options +{ + stdenv +, stdexp +, bsc +, targetMachine +, stages +}: + +with stdenv.lib; + +let + + #*** Variable configurations *** + varConf = with bsc; { + # Local blocks per dimension + nbl1 = [ 1 2 3 4 6 12 24 48 96 ]; + nbl2 = [ 1 2 3 4 6 12 24 48 96 ]; + # Number of nodes + nodes = [ 1 2 4 8 ]; + }; + + #*** Generate the complete configuration for each unit *** + genConf = with bsc; c: targetMachine.config // rec { + + # Experiment, units and job names + expName = "saiph-scalability"; + unitName = "${expName}-N${toString nodes}" + "nbg_${toString nbgx}-${toString nbgy}-${toString nbgz}" + "nbl_1-${toString nbly}-${toString nblz}"; + jobName = "${unitName}"; + + # saiph options + nodes = c.nodes; # takes values from varConf + enableManualDist = true; # allows to manually set nbg{x-y-z} + nbgx = 1; + nbgy = 1; + nbgz = nodes*2; # forcing distribution by last dim + nblx = 1; # simd reasons + nbly = c.nbl1; # takes values from varConf + nblz = c.nbl2; # takes values from varConf + mpi = impi; + gitBranch = "garlic/tampi+isend+oss+task+simd"; + gitCommit = "8052494d7dc62bef95ebaca9938e82fb029686f6"; # fix a specific commit + rev = "0"; + # Repeat the execution of each unit 30 times + loops = 30; + + # Resources + inherit (targetMachine.config) hw; + qos = "bsc_cs"; + ntasksPerNode = hw.socketsPerNode; # MPI binded to sockets + cpusPerTask = hw.cpusPerSocket; # Using the 24 CPUs of each socket + }; + + #*** Compute the final set of configurations *** + # Compute the array of configurations: cartesian product of all factors + allConfigs = stdexp.buildConfigs { + inherit varConf genConf; + }; + # Filter to remove non-desired configurations: + # --> tasks/proc < 3 + # --> nblz > 25 + configs = filter (el: if ((builtins.mul el.nbly el.nblz) < (builtins.mul 3 el.cpusPerTask) || el.nblz > 25) then false else true) allConfigs; + + + #*** Sets the env/argv of the program *** + exec = {nextStage, conf, ...}: with conf; stages.exec { + inherit nextStage; + env = '' + export OMP_NUM_THREADS=${toString hw.cpusPerSocket} + ''; + }; + + #*** Configure the program according to the app *** + program = {nextStage, conf, ...}: + let + customPkgs = stdexp.replaceMpi conf.mpi; + in + customPkgs.apps.saiph.override { + inherit (conf) enableManualDist nbgx nbgy nbgz nblx nbly nblz mpi gitBranch gitCommit; + }; + + #*** Add stages to the pipeline *** + pipeline = stdexp.stdPipeline ++ [ exec program ]; + +in + stdexp.genExperiment { inherit configs pipeline; } + diff --git a/garlic/exp/saiph/scaling.nix b/garlic/exp/saiph/scaling.nix deleted file mode 100644 index 3f062ed..0000000 --- a/garlic/exp/saiph/scaling.nix +++ /dev/null @@ -1,104 +0,0 @@ -{ - stdenv -, stdexp -, bsc -, targetMachine -, stages -}: - -with stdenv.lib; - -let - # Initial variable configuration - varConf = with bsc; { - #nbl = [ 1 2 4 8 16 32 64 ]; - nodes = [ 1 2 4 8 ]; - - input = [ - { nbly=12 ; nblz=1; nbltotal=12 ; } - { nbly=24 ; nblz=1; nbltotal=24 ; } - { nbly=48 ; nblz=1; nbltotal=48 ; } - { nbly=96 ; nblz=1; nbltotal=96 ; } - - { nbly=6 ; nblz=2; nbltotal=12 ; } - { nbly=12 ; nblz=2; nbltotal=24 ; } - { nbly=24 ; nblz=2; nbltotal=48 ; } - { nbly=48 ; nblz=2; nbltotal=96 ; } - { nbly=96 ; nblz=2; nbltotal=192 ; } - - { nbly=3 ; nblz=4; nbltotal=12 ; } - { nbly=6 ; nblz=4; nbltotal=24 ; } - { nbly=12 ; nblz=4; nbltotal=48 ; } - { nbly=24 ; nblz=4; nbltotal=96 ; } - { nbly=48 ; nblz=4; nbltotal=192 ; } - { nbly=96 ; nblz=4; nbltotal=384 ; } - ]; - - }; - - # Generate the complete configuration for each unit - genConf = with bsc; c: targetMachine.config // rec { - expName = "saiph"; - unitName = "${expName}-N${toString nodes}" + "-nblx${toString nblx}-nbly${toString nbly}" + "-par-init-One-dimensionalDistribution"; -# unitName = if (gitCommit == "3b52a616d44f4b86880663e2d951ad89c1dcab4f") -# then "${expName}-N${toString nodes}" + "-nblx${toString nblx}-nbly${toString nbly}" + "-par-init" -# else "${expName}-N${toString nodes}" + "-nblx${toString nblx}-nbly${toString nbly}" + "-seq-init"; - - inherit (targetMachine.config) hw; - - # saiph options - manualDist = 1; - nbgx = 1; - nbgy = 1; - nbgz = nodes*2; - nblx = 1; - #nbly = c.nbl; - #nblz = c.nbl; - mpi = impi; - gitBranch = "garlic/tampi+isend+oss+task+simd"; - #gitCommit = c.gitCommit; # if exp involves more than 1 commit - gitCommit = "3fa116620f1c7fbd1127d785c8bdc5d2372837b3"; - #inherit (c) gitCommit; # if exp fixes the commit - inherit (c.input) nbly nblz nbltotal ; - - # Repeat the execution of each unit 50 times - loops = 10; - - # Resources - qos = "bsc_cs"; - ntasksPerNode = hw.socketsPerNode; - nodes = c.nodes; - cpusPerTask = hw.cpusPerSocket; - jobName = "${unitName}"; - }; - - # Compute the array of configurations - configsAll = stdexp.buildConfigs { - inherit varConf genConf; - }; - configs = filter (el: if (el.nbly == 24 && el.nblz == 4) && el.nodes == 4 then false else true) configsAll; - - exec = {nextStage, conf, ...}: with conf; stages.exec { - inherit nextStage; - env = '' - export OMP_NUM_THREADS=${toString hw.cpusPerSocket} - export ASAN_SYMBOLIZER_PATH=${bsc.clangOmpss2Unwrapped}/bin/llvm-symbolizer - ''; - }; - - program = {nextStage, conf, ...}: - let - customPkgs = stdexp.replaceMpi conf.mpi; - in - customPkgs.apps.saiph.override { - inherit (conf) manualDist nbgx nbgy nbgz nblx nbly nblz nbltotal mpi gitBranch gitCommit; - }; - - pipeline = stdexp.stdPipeline ++ [ exec program ]; - -in - - stdexp.genExperiment { inherit configs pipeline; } - - -# last plot hash: f5xb7jv1c4mbrcy6d9s9j10msfz3kkj0-plot diff --git a/garlic/exp/saiph/scaling2.nix b/garlic/exp/saiph/scaling2.nix deleted file mode 100644 index 4109664..0000000 --- a/garlic/exp/saiph/scaling2.nix +++ /dev/null @@ -1,104 +0,0 @@ -{ - stdenv -, stdexp -, bsc -, targetMachine -, stages -}: - -with stdenv.lib; - -let - # Initial variable configuration - varConf = with bsc; { - #nbl = [ 1 2 4 8 16 32 64 ]; - nodes = [ 1 2 4 8 ]; - - input = [ - { nblz=12 ; nbly=1; nbltotal=12 ; } - { nblz=24 ; nbly=1; nbltotal=24 ; } - { nblz=48 ; nbly=1; nbltotal=48 ; } - { nblz=96 ; nbly=1; nbltotal=96 ; } - - { nblz=6 ; nbly=2; nbltotal=12 ; } - { nblz=12 ; nbly=2; nbltotal=24 ; } - { nblz=24 ; nbly=2; nbltotal=48 ; } - { nblz=48 ; nbly=2; nbltotal=96 ; } - { nblz=96 ; nbly=2; nbltotal=192 ; } - - { nblz=3 ; nbly=4; nbltotal=12 ; } - { nblz=6 ; nbly=4; nbltotal=24 ; } - { nblz=12 ; nbly=4; nbltotal=48 ; } - { nblz=24 ; nbly=4; nbltotal=96 ; } - { nblz=48 ; nbly=4; nbltotal=192 ; } - { nblz=96 ; nbly=4; nbltotal=384 ; } - ]; - - }; - - # Generate the complete configuration for each unit - genConf = with bsc; c: targetMachine.config // rec { - expName = "saiph"; - unitName = "${expName}-N${toString nodes}" + "-nblx${toString nblx}-nbly${toString nbly}" + "-par-init-One-dimensionalDistribution"; -# unitName = if (gitCommit == "3b52a616d44f4b86880663e2d951ad89c1dcab4f") -# then "${expName}-N${toString nodes}" + "-nblx${toString nblx}-nbly${toString nbly}" + "-par-init" -# else "${expName}-N${toString nodes}" + "-nblx${toString nblx}-nbly${toString nbly}" + "-seq-init"; - - inherit (targetMachine.config) hw; - - # saiph options - manualDist = 1; - nbgx = 1; - nbgy = 1; - nbgz = nodes*2; - nblx = 1; - #nbly = c.nbl; - #nblz = c.nbl; - mpi = impi; - gitBranch = "garlic/tampi+isend+oss+task+simd"; - #gitCommit = c.gitCommit; # if exp involves more than 1 commit - gitCommit = "3fa116620f1c7fbd1127d785c8bdc5d2372837b3"; - #inherit (c) gitCommit; # if exp fixes the commit - inherit (c.input) nbly nblz nbltotal ; - - # Repeat the execution of each unit 50 times - loops = 10; - - # Resources - qos = "bsc_cs"; - ntasksPerNode = hw.socketsPerNode; - nodes = c.nodes; - cpusPerTask = hw.cpusPerSocket; - jobName = "${unitName}"; - }; - - # Compute the array of configurations - configs = stdexp.buildConfigs { - inherit varConf genConf; - }; - #configs = filter (el: if (el.nbly == 24 && el.nblz == 4) && el.nodes == 4 then false else true) configsAll; - - exec = {nextStage, conf, ...}: with conf; stages.exec { - inherit nextStage; - env = '' - export OMP_NUM_THREADS=${toString hw.cpusPerSocket} - export ASAN_SYMBOLIZER_PATH=${bsc.clangOmpss2Unwrapped}/bin/llvm-symbolizer - ''; - }; - - program = {nextStage, conf, ...}: - let - customPkgs = stdexp.replaceMpi conf.mpi; - in - customPkgs.apps.saiph.override { - inherit (conf) manualDist nbgx nbgy nbgz nblx nbly nblz nbltotal mpi gitBranch gitCommit; - }; - - pipeline = stdexp.stdPipeline ++ [ exec program ]; - -in - - stdexp.genExperiment { inherit configs pipeline; } - - -# last plot hash: f5xb7jv1c4mbrcy6d9s9j10msfz3kkj0-plot diff --git a/garlic/exp/saiph/strongScaling.nix b/garlic/exp/saiph/strongScaling.nix deleted file mode 100644 index ec201e2..0000000 --- a/garlic/exp/saiph/strongScaling.nix +++ /dev/null @@ -1,70 +0,0 @@ -{ - stdenv -, stdexp -, bsc -, targetMachine -, stages -}: - -with stdenv.lib; - -let - # Initial variable configuration - varConf = with bsc; { - nodes = [ 1 2 4 8 16 32 ]; - }; - - # Generate the complete configuration for each unit - genConf = with bsc; c: targetMachine.config // rec { - expName = "saiph.strongScaling"; - unitName = "${expName}.nodes-${toString nodes}-nb{y, z}=4.nsteps-${toString nsteps}"; - inherit (targetMachine.config) hw; - - # saiph options - nbx = 1; - nby = 4; - nbz = 4; - nsteps = 500; - mpi = impi; - gitBranch = "garlic/tampi+isend+oss+task+simd"; - - # Repeat the execution of each unit 50 times - loops = 30; - - # Resources - cachelineBytes = hw.cachelineBytes; - time = "02:00:00"; - nodes = c.nodes; - qos = if (nodes>16) - then "bsc_cs" - else "debug"; - ntasksPerNode = hw.socketsPerNode; - cpusPerTask = hw.cpusPerSocket; - jobName = "${unitName}-${gitBranch}"; - }; - - # Compute the array of configurations - configs = stdexp.buildConfigs { - inherit varConf genConf; - }; - - exec = {nextStage, conf, ...}: with conf; stages.exec { - inherit nextStage; - env = '' - export ASAN_SYMBOLIZER_PATH=${bsc.clangOmpss2Unwrapped}/bin/llvm-symbolizer - ''; - }; - - program = {nextStage, conf, ...}: with conf; - let - customPkgs = stdexp.replaceMpi conf.mpi; - in - customPkgs.apps.saiph.override { - inherit nbx nby nbz nsteps mpi gitBranch cachelineBytes; - }; - - pipeline = stdexp.stdPipeline ++ [ exec program ]; - -in - - stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/fig/index.nix b/garlic/fig/index.nix index 5f73a33..63135f7 100644 --- a/garlic/fig/index.nix +++ b/garlic/fig/index.nix @@ -42,14 +42,8 @@ in }; saiph = with exp.saiph; { - granularity = stdPlot ./saiph/granularity.R [ granularity ]; - scaling = stdPlot ./saiph/scaling.R [ scaling ]; - scaling2 = stdPlot ./saiph/scaling2.R [ scaling2 ]; - scalingnblyz = stdPlot ./saiph/scalingnblyz.R [ scaling scaling2 ]; - blockingY = stdPlot ./saiph/granularityY.R [ blockingY ]; - blockingZ = stdPlot ./saiph/granularityZ.R [ blockingZ ]; - blockingYZ = stdPlot ./saiph/granularityYZ.R [ blockingYZ ]; - blockingZY = stdPlot ./saiph/granularityZY.R [ blockingZY ]; + granularity-saiph = stdPlot ./saiph/granularity-saiph.R [ granularity-saiph ]; + scalability-saiph = stdPlot ./saiph/scalability-saiph.R [ scalability-saiph ]; }; heat = with exp.heat; { diff --git a/garlic/fig/saiph/blocking.R b/garlic/fig/saiph/blocking.R deleted file mode 100644 index 9eda0cc..0000000 --- a/garlic/fig/saiph/blocking.R +++ /dev/null @@ -1,100 +0,0 @@ -library(ggplot2) -library(dplyr) -library(scales) -library(jsonlite) - -args=commandArgs(trailingOnly=TRUE) - -# Read the timetable from args[1] -input_file = "input.json" -if (length(args)>0) { input_file = args[1] } - -# Load the dataset in NDJSON format -dataset = jsonlite::stream_in(file(input_file)) %>% - jsonlite::flatten() - - -# We only need the nblocks and time -df = select(dataset, config.nby, time) %>% - rename(nby=config.nby) - -df$nby = as.factor(df$nby) - -# Normalize the time by the median -D=group_by(df, nby) %>% - mutate(tnorm = time / median(time) - 1) %>% - mutate(bad = max(ifelse(abs(tnorm) >= 0.01, 1, 0))) - -D$bad = as.factor(D$bad) - - -print(D) - -ppi=300 -h=5 -w=5 - -png("box.png", width=w*ppi, height=h*ppi, res=ppi) -# -# -# -# Create the plot with the normalized time vs nblocks -p = ggplot(data=D, aes(x=nby, y=tnorm, color=bad)) + - - # Labels - labs(x="nb{y-z}", y="Normalized time", - title=sprintf("Saiph-Heat3D normalized time"), - subtitle=input_file) + - - # Center the title - #theme(plot.title = element_text(hjust = 0.5)) + - - # Black and white mode (useful for printing) - #theme_bw() + - - # Add the maximum allowed error lines - geom_hline(yintercept=c(-0.01, 0.01), - linetype="dashed", color="gray") + - - # Draw boxplots - geom_boxplot() + - scale_color_manual(values=c("black", "brown")) + - - #scale_y_continuous(breaks = scales::pretty_breaks(n = 10)) + - - theme_bw() + - - theme(plot.subtitle=element_text(size=8)) + - theme(legend.position = "none") - #theme(legend.position = c(0.85, 0.85)) - - - - -# Render the plot -print(p) - -## Save the png image -dev.off() -# -png("scatter.png", width=w*ppi, height=h*ppi, res=ppi) -# -## Create the plot with the normalized time vs nblocks -p = ggplot(D, aes(x=nby, y=time)) + - - labs(x="nb{y-z}", y="Time (s)", - title=sprintf("Saiph-Heat3D blocking-granularity"), - subtitle=input_file) + - theme_bw() + - theme(plot.subtitle=element_text(size=8)) + - theme(legend.position = c(0.5, 0.88)) + - - geom_point(shape=21, size=3) + - #scale_x_continuous(trans=log2_trans()) + - scale_y_continuous(trans=log2_trans()) - -# Render the plot -print(p) - -# Save the png image -dev.off() diff --git a/garlic/fig/saiph/blockingY_blocking_Z.R b/garlic/fig/saiph/blockingY_blocking_Z.R deleted file mode 100644 index d4201d3..0000000 --- a/garlic/fig/saiph/blockingY_blocking_Z.R +++ /dev/null @@ -1,77 +0,0 @@ -library(ggplot2) -library(dplyr) -library(scales) -library(jsonlite) - -args=commandArgs(trailingOnly=TRUE) - -# Read the timetable from args[1] -input_file = "input1.json" -if (length(args)>0) { input_file = args[1] } - -input_file2 = "input2.json" -if (length(args)>0) { input_file2 = args[1] } - -# Load the dataset in NDJSON format -dataset = jsonlite::stream_in(file(input_file)) %>% - jsonlite::flatten() - -dataset2 = jsonlite::stream_in(file(input_file2)) %>% - jsonlite::flatten() - - -# We only need the nblocks and time -df = select(dataset, config.nby, time) %>% - rename(nby=config.nby) - -df$nby = as.factor(df$nby) - -df2 = select(dataset2, config.nbz, time) %>% - rename(nbz=config.nbz) - -df2$nbz = as.factor(df2$nbz) - - -# Normalize the time by the median -D=group_by(df, nby) %>% - mutate(tnorm = time / median(time) - 1) %>% - mutate(bad = max(ifelse(abs(tnorm) >= 0.01, 1, 0))) - -D$bad = as.factor(D$bad) - - -print(D) - -D2=group_by(df2, nbz) %>% - mutate(tnorm = time / median(time) - 1) %>% - mutate(bad = max(ifelse(abs(tnorm) >= 0.01, 1, 0))) - -D2$bad = as.factor(D2$bad) - -print(D) -print(D2) - -png("scatter-blockY8Z_yZ8.png", width=w*ppi, height=h*ppi, res=ppi) -# -## Create the plot with the normalized time vs nblocks -p = ggplot() + - geom_point(data=D, aes(x=nby, y=time, colour="nby blocks - nbz = 8"), shape=1, size=3) + - geom_point(data=D2, aes(x=nbz, y=time, colour="nby = 8 - nbz blocks"), shape=1, size=3) + - - labs(x="nb", y="Time (s)", - title=sprintf("Saiph-Heat3D blockingY/Z"), - subtitle=input_file) + - theme_bw() + - theme(plot.subtitle=element_text(size=8)) + - theme(legend.position = "right") + - - geom_point(shape=21, size=3) + - scale_colour_discrete("Blocked directions") - #+ scale_x_continuous(trans=log2_trans()) - #+ scale_y_continuous(trans=log2_trans()) - -# Render the plot -print(p) - -# Save the png image -dev.off() diff --git a/garlic/fig/saiph/blocking_Y.R b/garlic/fig/saiph/blocking_Y.R deleted file mode 100644 index 36c4ed5..0000000 --- a/garlic/fig/saiph/blocking_Y.R +++ /dev/null @@ -1,100 +0,0 @@ -library(ggplot2) -library(dplyr) -library(scales) -library(jsonlite) - -args=commandArgs(trailingOnly=TRUE) - -# Read the timetable from args[1] -input_file = "input.json" -if (length(args)>0) { input_file = args[1] } - -# Load the dataset in NDJSON format -dataset = jsonlite::stream_in(file(input_file)) %>% - jsonlite::flatten() - - -# We only need the nblocks and time -df = select(dataset, config.nby, time) %>% - rename(nby=config.nby) - -df$nby = as.factor(df$nby) - -# Normalize the time by the median -D=group_by(df, nby) %>% - mutate(tnorm = time / median(time) - 1) %>% - mutate(bad = max(ifelse(abs(tnorm) >= 0.01, 1, 0))) - -D$bad = as.factor(D$bad) - - -print(D) - -ppi=300 -h=5 -w=5 - -png("box.png", width=w*ppi, height=h*ppi, res=ppi) -# -# -# -# Create the plot with the normalized time vs nblocks -p = ggplot(data=D, aes(x=nby, y=tnorm, color=bad)) + - - # Labels - labs(x="nby", y="Normalized time", - title=sprintf("Saiph-Heat3D normalized time"), - subtitle=input_file) + - - # Center the title - #theme(plot.title = element_text(hjust = 0.5)) + - - # Black and white mode (useful for printing) - #theme_bw() + - - # Add the maximum allowed error lines - geom_hline(yintercept=c(-0.01, 0.01), - linetype="dashed", color="gray") + - - # Draw boxplots - geom_boxplot() + - scale_color_manual(values=c("black", "brown")) + - - #scale_y_continuous(breaks = scales::pretty_breaks(n = 10)) + - - theme_bw() + - - theme(plot.subtitle=element_text(size=8)) + - theme(legend.position = "none") - #theme(legend.position = c(0.85, 0.85)) - - - - -# Render the plot -print(p) - -## Save the png image -dev.off() -# -png("scatter.png", width=w*ppi, height=h*ppi, res=ppi) -# -## Create the plot with the normalized time vs nblocks -p = ggplot(D, aes(x=nby, y=time)) + - - labs(x="nby", y="Time (s)", - title=sprintf("Saiph-Heat3D blockingY"), - subtitle=input_file) + - theme_bw() + - theme(plot.subtitle=element_text(size=8)) + - theme(legend.position = c(0.5, 0.88)) + - - geom_point(shape=21, size=3) - #+ scale_x_continuous(trans=log2_trans()) - #+ scale_y_continuous(trans=log2_trans()) - -# Render the plot -print(p) - -# Save the png image -dev.off() diff --git a/garlic/fig/saiph/blocking_YZ.R b/garlic/fig/saiph/blocking_YZ.R deleted file mode 100644 index 79cd497..0000000 --- a/garlic/fig/saiph/blocking_YZ.R +++ /dev/null @@ -1,100 +0,0 @@ -library(ggplot2) -library(dplyr) -library(scales) -library(jsonlite) - -args=commandArgs(trailingOnly=TRUE) - -# Read the timetable from args[1] -input_file = "input.json" -if (length(args)>0) { input_file = args[1] } - -# Load the dataset in NDJSON format -dataset = jsonlite::stream_in(file(input_file)) %>% - jsonlite::flatten() - - -# We only need the nblocks and time -df = select(dataset, config.nbz, time) %>% - rename(nbz=config.nbz) - -df$nbz = as.factor(df$nbz) - -# Normalize the time by the median -D=group_by(df, nbz) %>% - mutate(tnorm = time / median(time) - 1) %>% - mutate(bad = max(ifelse(abs(tnorm) >= 0.01, 1, 0))) - -D$bad = as.factor(D$bad) - - -print(D) - -ppi=300 -h=5 -w=5 - -png("box.png", width=w*ppi, height=h*ppi, res=ppi) -# -# -# -# Create the plot with the normalized time vs nblocks -p = ggplot(data=D, aes(x=nbz, y=tnorm, color=bad)) + - - # Labels - labs(x="nbz", y="Normalized time", - title=sprintf("Saiph-Heat3D normalized time - nby = 8"), - subtitle=input_file) + - - # Center the title - #theme(plot.title = element_text(hjust = 0.5)) + - - # Black and white mode (useful for printing) - #theme_bw() + - - # Add the maximum allowed error lines - geom_hline(yintercept=c(-0.01, 0.01), - linetype="dashed", color="gray") + - - # Draw boxplots - geom_boxplot() + - scale_color_manual(values=c("black", "brown")) + - - #scale_y_continuous(breaks = scales::pretty_breaks(n = 10)) + - - theme_bw() + - - theme(plot.subtitle=element_text(size=8)) + - theme(legend.position = "none") - #theme(legend.position = c(0.85, 0.85)) - - - - -# Render the plot -print(p) - -## Save the png image -dev.off() -# -png("scatter.png", width=w*ppi, height=h*ppi, res=ppi) -# -## Create the plot with the normalized time vs nblocks -p = ggplot(D, aes(x=nbz, y=time)) + - - labs(x="nbz", y="Time (s)", - title=sprintf("Saiph-Heat3D blockingZ - nby = 8"), - subtitle=input_file) + - theme_bw() + - theme(plot.subtitle=element_text(size=8)) + - theme(legend.position = c(0.5, 0.88)) + - - geom_point(shape=21, size=3) - #+ scale_x_continuous(trans=log2_trans()) - #+ scale_y_continuous(trans=log2_trans()) - -# Render the plot -print(p) - -# Save the png image -dev.off() diff --git a/garlic/fig/saiph/blocking_Z.R b/garlic/fig/saiph/blocking_Z.R deleted file mode 100644 index 13b2b85..0000000 --- a/garlic/fig/saiph/blocking_Z.R +++ /dev/null @@ -1,100 +0,0 @@ -library(ggplot2) -library(dplyr) -library(scales) -library(jsonlite) - -args=commandArgs(trailingOnly=TRUE) - -# Read the timetable from args[1] -input_file = "input.json" -if (length(args)>0) { input_file = args[1] } - -# Load the dataset in NDJSON format -dataset = jsonlite::stream_in(file(input_file)) %>% - jsonlite::flatten() - - -# We only need the nblocks and time -df = select(dataset, config.nbz, time) %>% - rename(nbz=config.nbz) - -df$nbz = as.factor(df$nbz) - -# Normalize the time by the median -D=group_by(df, nbz) %>% - mutate(tnorm = time / median(time) - 1) %>% - mutate(bad = max(ifelse(abs(tnorm) >= 0.01, 1, 0))) - -D$bad = as.factor(D$bad) - - -print(D) - -ppi=300 -h=5 -w=5 - -png("box.png", width=w*ppi, height=h*ppi, res=ppi) -# -# -# -# Create the plot with the normalized time vs nblocks -p = ggplot(data=D, aes(x=nbz, y=tnorm, color=bad)) + - - # Labels - labs(x="nbz", y="Normalized time", - title=sprintf("Saiph-Heat3D normalized time"), - subtitle=input_file) + - - # Center the title - #theme(plot.title = element_text(hjust = 0.5)) + - - # Black and white mode (useful for printing) - #theme_bw() + - - # Add the maximum allowed error lines - geom_hline(yintercept=c(-0.01, 0.01), - linetype="dashed", color="gray") + - - # Draw boxplots - geom_boxplot() + - scale_color_manual(values=c("black", "brown")) + - - #scale_y_continuous(breaks = scales::pretty_breaks(n = 10)) + - - theme_bw() + - - theme(plot.subtitle=element_text(size=8)) + - theme(legend.position = "none") - #theme(legend.position = c(0.85, 0.85)) - - - - -# Render the plot -print(p) - -## Save the png image -dev.off() -# -png("scatter.png", width=w*ppi, height=h*ppi, res=ppi) -# -## Create the plot with the normalized time vs nblocks -p = ggplot(D, aes(x=nbz, y=time)) + - - labs(x="nbz", y="Time (s)", - title=sprintf("Saiph-Heat3D blockingZ"), - subtitle=input_file) + - theme_bw() + - theme(plot.subtitle=element_text(size=8)) + - theme(legend.position = c(0.5, 0.88)) + - - geom_point(shape=21, size=3) - #+ scale_x_continuous(trans=log2_trans()) - #+ scale_y_continuous(trans=log2_trans()) - -# Render the plot -print(p) - -# Save the png image -dev.off() diff --git a/garlic/fig/saiph/blocking_ZY.R b/garlic/fig/saiph/blocking_ZY.R deleted file mode 100644 index ef40d9c..0000000 --- a/garlic/fig/saiph/blocking_ZY.R +++ /dev/null @@ -1,100 +0,0 @@ -library(ggplot2) -library(dplyr) -library(scales) -library(jsonlite) - -args=commandArgs(trailingOnly=TRUE) - -# Read the timetable from args[1] -input_file = "input.json" -if (length(args)>0) { input_file = args[1] } - -# Load the dataset in NDJSON format -dataset = jsonlite::stream_in(file(input_file)) %>% - jsonlite::flatten() - - -# We only need the nblocks and time -df = select(dataset, config.nby, time) %>% - rename(nby=config.nby) - -df$nby = as.factor(df$nby) - -# Normalize the time by the median -D=group_by(df, nby) %>% - mutate(tnorm = time / median(time) - 1) %>% - mutate(bad = max(ifelse(abs(tnorm) >= 0.01, 1, 0))) - -D$bad = as.factor(D$bad) - - -print(D) - -ppi=300 -h=5 -w=5 - -png("box.png", width=w*ppi, height=h*ppi, res=ppi) -# -# -# -# Create the plot with the normalized time vs nblocks -p = ggplot(data=D, aes(x=nby, y=tnorm, color=bad)) + - - # Labels - labs(x="nby", y="Normalized time", - title=sprintf("Saiph-Heat3D normalized time - nbz = 8"), - subtitle=input_file) + - - # Center the title - #theme(plot.title = element_text(hjust = 0.5)) + - - # Black and white mode (useful for printing) - #theme_bw() + - - # Add the maximum allowed error lines - geom_hline(yintercept=c(-0.01, 0.01), - linetype="dashed", color="gray") + - - # Draw boxplots - geom_boxplot() + - scale_color_manual(values=c("black", "brown")) + - - #scale_y_continuous(breaks = scales::pretty_breaks(n = 10)) + - - theme_bw() + - - theme(plot.subtitle=element_text(size=8)) + - theme(legend.position = "none") - #theme(legend.position = c(0.85, 0.85)) - - - - -# Render the plot -print(p) - -## Save the png image -dev.off() -# -png("scatter.png", width=w*ppi, height=h*ppi, res=ppi) -# -## Create the plot with the normalized time vs nblocks -p = ggplot(D, aes(x=nby, y=time)) + - - labs(x="nby", y="Time (s)", - title=sprintf("Saiph-Heat3D blockingY - nbz = 8"), - subtitle=input_file) + - theme_bw() + - theme(plot.subtitle=element_text(size=8)) + - theme(legend.position = c(0.5, 0.88)) + - - geom_point(shape=21, size=3) - #+ scale_x_continuous(trans=log2_trans()) - #+ scale_y_continuous(trans=log2_trans()) - -# Render the plot -print(p) - -# Save the png image -dev.off() diff --git a/garlic/fig/saiph/granBlock.R b/garlic/fig/saiph/granBlock.R deleted file mode 100644 index 059d9a9..0000000 --- a/garlic/fig/saiph/granBlock.R +++ /dev/null @@ -1,67 +0,0 @@ -library(ggplot2) -library(dplyr) -library(scales) -library(jsonlite) - -args=commandArgs(trailingOnly=TRUE) - -# Read the timetable from args[1] -input_file1 = "input1.json" -if (length(args)>0) { input_file1 = args[1] } - -input_file2 = "input2.json" -if (length(args)>1) { input_file2 = args[2] } - -# Load the dataset in NDJSON format -dataset1 = jsonlite::stream_in(file(input_file1)) %>% - jsonlite::flatten() -dataset2 = jsonlite::stream_in(file(input_file2)) %>% - jsonlite::flatten() - -# We only need the nblocks and time -df1 = select(dataset1, config.nbx, time) %>% - rename(nb1=config.nbx) - -df2 = select(dataset2, config.nby, time) %>% - rename(nb2=config.nby) - -df1$nb1 = as.factor(df1$nb1) -df2$nb2 = as.factor(df2$nb2) - -# Normalize the time by the median -D1=group_by(df1, nb1) -D2=group_by(df2, nb2) - -print(D1) -print(D2) - -ppi=300 -h=5 -w=7 - -png("scatter_granularity_and_blocking.png", width=w*ppi, height=h*ppi, res=ppi) -# -## Create the plot with the normalized time vs nblocks -p = ggplot() + - geom_point(data=D1, aes(x=nb1, y=time, colour = 'nbx-nby-nbz'), shape=1, size=4) + - geom_point(data=D2, aes(x=nb2, y=time, colour = 'nby-nbz'), shape=1, size=4) + - - labs(x="nb", y="Time (s)", - title=sprintf("Saiph-Heat3D granularity & blocking"), - subtitle=input_file1) + - theme_bw() + - theme(plot.subtitle=element_text(size=8)) + - #theme(legend.position = c(0.5, 0.88)) + - theme(legend.position = "right") + - - geom_point(shape=21, size=3) + - #scale_x_continuous(trans=log2_trans()) + - scale_y_continuous(trans=log2_trans()) + - scale_colour_discrete("Blocked directions") - - -# Render the plot -print(p) - -# Save the png image -dev.off() diff --git a/garlic/fig/saiph/granularity-saiph.R b/garlic/fig/saiph/granularity-saiph.R new file mode 100644 index 0000000..4bdab6f --- /dev/null +++ b/garlic/fig/saiph/granularity-saiph.R @@ -0,0 +1,155 @@ +library(ggplot2) +library(dplyr) +library(scales) +library(jsonlite) +library(viridis) + +args=commandArgs(trailingOnly=TRUE) + +# Read the timetable from args[1] +input_file = "input.json" +if (length(args)>0) { input_file = args[1] } + +# Load the dataset in NDJSON format +dataset = jsonlite::stream_in(file(input_file)) %>% + jsonlite::flatten() + + +# Create a data frame selecting the desired variables from the data set +df = select(dataset, config.nbly, config.nblz, config.nodes, time, total_time) %>% + rename(nbly=config.nbly, nblz=config.nblz, nnodes=config.nodes) + +# Declare variables as factors +# --> R does not allow to operate with factors: operate before casting to factors +df$nblPerProc = as.factor(round((df$nbly * df$nblz) / 24, digits = 2)) +df$biggernbly = as.factor(df$nbly > df$nblz) +df$nbly = as.factor(df$nbly) +df$nblz = as.factor(df$nblz) +df$nodes = as.factor(df$nnodes) + +# Create a new data frame including statistics +D=group_by(df, nbly, nblz, nblPerProc, nodes) %>% + mutate(tmedian = median(time)) %>% + mutate(ttmedian = median(total_time)) %>% + mutate(tnorm = time / tmedian - 1) %>% + mutate(bad = max(ifelse(abs(tnorm) >= 0.01, 1, 0))) %>% + mutate(tn = tmedian * nnodes) %>% + ungroup() + +D$bad = as.factor(D$bad) + +### Std output data frame D +print(D) + +### Output figure size +ppi=300 +h=5 +w=8 + +#################################################################### +### Boxplot +#################################################################### +png("box.png", width=w*ppi, height=h*ppi, res=ppi) +# +# +# Create the plot with the normalized time vs nblocks +p = ggplot(data=D, aes(x=nblPerProc, y=tnorm, color=bad)) + + + # Labels + labs(x="nblPerProc", y="Normalized time", + title=sprintf("Saiph-Heat3D normalized time"), + subtitle=input_file) + + # Add the maximum allowed error lines + geom_hline(yintercept=c(-0.01, 0.01), + linetype="dashed", color="gray") + + + # Draw boxplots + geom_boxplot() + + scale_color_manual(values=c("black", "brown")) + + theme_bw() + + theme(plot.subtitle=element_text(size=8)) + + theme(legend.position = "none") + + +# Render the plot +print(p) + +## Save the png image +dev.off() + +#################################################################### +### XY Scatter plot - measured_time & total_time vs tasks per cpu +#################################################################### + + +#################################################################### +### XY Scatter plot - time vs tasks per cpu +#################################################################### +png("scatter.png", width=w*ppi, height=h*ppi, res=ppi) +## Create the plot with the normalized time vs nblocks per proc +p = ggplot(D, aes(x=nblPerProc, y=time)) + + labs(x="nblPerProc", y="Time (s)", + title=sprintf("Saiph-Heat3D granularity"), + subtitle=input_file) + + theme_bw() + + theme(plot.subtitle=element_text(size=8)) + + theme(legend.position = c(0.5, 0.88)) + + geom_point(shape=21, size=3) + + scale_y_continuous(trans=log2_trans()) + + +# Render the plot +print(p) + +## Save the png image +dev.off() + +#################################################################### +### XY Scatter plot - median time vs tasks per cpu +#################################################################### +png("scatter2.png", width=w*ppi, height=h*ppi, res=ppi) +## Create the plot with the normalized time vs nblocks per proc +p = ggplot(D, aes(x=nblPerProc, y=tmedian)) + + labs(x="nblPerProc", y="Median Time (s)", + title=sprintf("Saiph-Heat3D granularity"), + subtitle=input_file) + + theme_bw() + + theme(plot.subtitle=element_text(size=8)) + + theme(legend.position = c(0.5, 0.88)) + + geom_point(aes(color=biggernbly), shape=21, size=3) + + labs(color = "nbly > nblz") + scale_y_continuous(trans=log2_trans()) + +# Render the plot +print(p) + +# Save the png image +dev.off() + +#################################################################### +### Heatmap plot - median time vs tasks per cpu per dimension +#################################################################### +heatmap_plot = function(df, colname, title) { + p = ggplot(df, aes(x=nbly, y=nblz, fill=!!ensym(colname))) + + geom_raster() + + #scale_fill_gradient(high="black", low="white") + + scale_fill_viridis(option="plasma") + + coord_fixed() + + theme_bw() + + theme(axis.text.x=element_text(angle = -45, hjust = 0)) + + theme(plot.subtitle=element_text(size=8)) + + guides(fill = guide_colorbar(barwidth=12, title.vjust=0.8)) + + labs(x="nbly", y="nblz", + title=sprintf("Heat granularity: %s", title), + subtitle=input_file) + + theme(legend.position="bottom")+ + facet_wrap( ~ nodes) + + k=1 + ggsave(sprintf("%s.png", colname), plot=p, width=4.8*k, height=5*k, dpi=300) + ggsave(sprintf("%s.pdf", colname), plot=p, width=4.8*k, height=5*k, dpi=300) +} + +# call heatmap function with colname and legend title +heatmap_plot(D, "tmedian", "time") + diff --git a/garlic/fig/saiph/granularity.R b/garlic/fig/saiph/granularity.R deleted file mode 100644 index d3ed00d..0000000 --- a/garlic/fig/saiph/granularity.R +++ /dev/null @@ -1,100 +0,0 @@ -library(ggplot2) -library(dplyr) -library(scales) -library(jsonlite) - -args=commandArgs(trailingOnly=TRUE) - -# Read the timetable from args[1] -input_file = "input.json" -if (length(args)>0) { input_file = args[1] } - -# Load the dataset in NDJSON format -dataset = jsonlite::stream_in(file(input_file)) %>% - jsonlite::flatten() - - -# We only need the nblocks and time -df = select(dataset, config.nby, time) %>% - rename(nby=config.nby) - -df$nby = as.factor(df$nby) - -# Normalize the time by the median -D=group_by(df, nby) %>% - mutate(tnorm = time / median(time) - 1) %>% - mutate(bad = max(ifelse(abs(tnorm) >= 0.01, 1, 0))) - -D$bad = as.factor(D$bad) - - -print(D) - -ppi=300 -h=5 -w=5 - -png("box.png", width=w*ppi, height=h*ppi, res=ppi) -# -# -# -# Create the plot with the normalized time vs nblocks -p = ggplot(data=D, aes(x=nby, y=tnorm, color=bad)) + - - # Labels - labs(x="nb{y-z}", y="Normalized time", - title=sprintf("Saiph-Heat3D normalized time"), - subtitle=input_file) + - - # Center the title - #theme(plot.title = element_text(hjust = 0.5)) + - - # Black and white mode (useful for printing) - #theme_bw() + - - # Add the maximum allowed error lines - geom_hline(yintercept=c(-0.01, 0.01), - linetype="dashed", color="gray") + - - # Draw boxplots - geom_boxplot() + - scale_color_manual(values=c("black", "brown")) + - - #scale_y_continuous(breaks = scales::pretty_breaks(n = 10)) + - - theme_bw() + - - theme(plot.subtitle=element_text(size=8)) + - theme(legend.position = "none") - #theme(legend.position = c(0.85, 0.85)) - - - - -# Render the plot -print(p) - -## Save the png image -dev.off() -# -png("scatter.png", width=w*ppi, height=h*ppi, res=ppi) -# -## Create the plot with the normalized time vs nblocks -p = ggplot(D, aes(x=nby, y=time)) + - - labs(x="nb{y-z}", y="Time (s)", - title=sprintf("Saiph-Heat3D granularity"), - subtitle=input_file) + - theme_bw() + - theme(plot.subtitle=element_text(size=8)) + - theme(legend.position = c(0.5, 0.88)) + - - geom_point(shape=21, size=3) - #+ scale_x_continuous(trans=log2_trans()) - #+ scale_y_continuous(trans=log2_trans()) - -# Render the plot -print(p) - -# Save the png image -dev.off() diff --git a/garlic/fig/saiph/granularityPerNumBlocks.R b/garlic/fig/saiph/granularityPerNumBlocks.R deleted file mode 100644 index 4e28f1d..0000000 --- a/garlic/fig/saiph/granularityPerNumBlocks.R +++ /dev/null @@ -1,100 +0,0 @@ -library(ggplot2) -library(dplyr) -library(scales) -library(jsonlite) - -args=commandArgs(trailingOnly=TRUE) - -# Read the timetable from args[1] -input_file = "nov24Gran.json" -if (length(args)>0) { input_file = args[1] } - -# Load the dataset in NDJSON format -dataset = jsonlite::stream_in(file(input_file)) %>% - jsonlite::flatten() - - -# We only need the nblocks and time -df = select(dataset, config.nby, time) %>% - rename(nby=config.nby) - -df$nby = as.factor(df$nby) - -# Normalize the time by the median -D=group_by(df, nby) %>% - mutate(tnorm = time / median(time) - 1) %>% - mutate(bad = max(ifelse(abs(tnorm) >= 0.01, 1, 0))) - -D$bad = as.factor(D$bad) - - -print(D) - -ppi=300 -h=5 -w=5 - -png("box.png", width=w*ppi, height=h*ppi, res=ppi) -# -# -# -# Create the plot with the normalized time vs nblocks -p = ggplot(data=D, aes(x=nby, y=tnorm, color=bad)) + - - # Labels - labs(x="nb{y-z}", y="Normalized time", - title=sprintf("Saiph-Heat3D normalized time"), - subtitle=input_file) + - - # Center the title - #theme(plot.title = element_text(hjust = 0.5)) + - - # Black and white mode (useful for printing) - #theme_bw() + - - # Add the maximum allowed error lines - geom_hline(yintercept=c(-0.01, 0.01), - linetype="dashed", color="gray") + - - # Draw boxplots - geom_boxplot() + - scale_color_manual(values=c("black", "brown")) + - - #scale_y_continuous(breaks = scales::pretty_breaks(n = 10)) + - - theme_bw() + - - theme(plot.subtitle=element_text(size=8)) + - theme(legend.position = "none") - #theme(legend.position = c(0.85, 0.85)) - - - - -# Render the plot -print(p) - -## Save the png image -dev.off() -# -png("scatter.png", width=w*ppi, height=h*ppi, res=ppi) -# -## Create the plot with the normalized time vs nblocks -p = ggplot(D, aes(x=nby, y=time)) + - - labs(x="nb{y-z}", y="Time (s)", - title=sprintf("Saiph-Heat3D granularity"), - subtitle=input_file) + - theme_bw() + - theme(plot.subtitle=element_text(size=8)) + - theme(legend.position = c(0.5, 0.88)) + - - geom_point(shape=21, size=3) + - #scale_x_continuous(trans=log2_trans()) + - scale_y_continuous(trans=log2_trans()) - -# Render the plot -print(p) - -# Save the png image -dev.off() diff --git a/garlic/fig/saiph/scalability-saiph.R b/garlic/fig/saiph/scalability-saiph.R new file mode 100644 index 0000000..e29e720 --- /dev/null +++ b/garlic/fig/saiph/scalability-saiph.R @@ -0,0 +1,156 @@ +library(ggplot2) +library(dplyr) +library(scales) +library(jsonlite) +library(viridis) + +args=commandArgs(trailingOnly=TRUE) + +# Read the timetable from args[1] +input_file = "input.json" +if (length(args)>0) { input_file = args[1] } + +# Load the dataset in NDJSON format +dataset = jsonlite::stream_in(file(input_file)) %>% + jsonlite::flatten() + + +# Create a data frame selecting the desired variables from the data set +df = select(dataset, config.nbly, config.nblz, config.nodes, time, total_time) %>% + rename(nbly=config.nbly, nblz=config.nblz, nnodes=config.nodes) + +# Declare variables as factors +# --> R does not allow to operate with factors: operate before casting to factors +df$nblPerProc = as.factor(round((df$nbly * df$nblz) / 24, digits = 2)) +df$biggernbly = as.factor(df$nbly > df$nblz) +df$nbly = as.factor(df$nbly) +df$nblz = as.factor(df$nblz) +df$nodes = as.factor(df$nnodes) + +# Create a new data frame including statistics +D=group_by(df, nbly, nblz, nblPerProc, nodes) %>% + mutate(tmedian = median(time)) %>% + mutate(ttmedian = median(total_time)) %>% + mutate(tnorm = time / tmedian - 1) %>% + mutate(bad = max(ifelse(abs(tnorm) >= 0.01, 1, 0))) %>% + mutate(tn = tmedian * nnodes) %>% + ungroup() + +D$bad = as.factor(D$bad) + +### Std output data frame D +print(D) + +### Output figure size +ppi=300 +h=5 +w=8 + +#################################################################### +### Boxplot +#################################################################### +png("box.png", width=w*ppi, height=h*ppi, res=ppi) +# +# +# Create the plot with the normalized time vs nblocks +p = ggplot(data=D, aes(x=nblPerProc, y=tnorm, color=bad)) + + + # Labels + labs(x="nblPerProc", y="Normalized time", + title=sprintf("Saiph-Heat3D normalized time"), + subtitle=input_file) + + # Add the maximum allowed error lines + geom_hline(yintercept=c(-0.01, 0.01), + linetype="dashed", color="gray") + + + # Draw boxplots + geom_boxplot() + + scale_color_manual(values=c("black", "brown")) + + theme_bw() + + theme(plot.subtitle=element_text(size=8)) + + theme(legend.position = "none") + + +# Render the plot +print(p) + +## Save the png image +dev.off() + +#################################################################### +### XY Scatter plot - measured_time & total_time vs tasks per cpu +#################################################################### + + +#################################################################### +### XY Scatter plot - time vs tasks per cpu +#################################################################### +png("scatter.png", width=w*ppi, height=h*ppi, res=ppi) +## Create the plot with the normalized time vs nblocks per proc +p = ggplot(D, aes(x=nblPerProc, y=time)) + + labs(x="nblPerProc", y="Time (s)", + title=sprintf("Saiph-Heat3D granularity"), + subtitle=input_file) + + theme_bw() + + theme(plot.subtitle=element_text(size=8)) + + theme(legend.position = c(0.5, 0.88)) + + geom_point(aes(color=nodes), shape=21, size=3) + + scale_y_continuous(trans=log2_trans()) + + +# Render the plot +print(p) + +## Save the png image +dev.off() + + +#################################################################### +### XY Scatter plot - median time vs tasks per cpu +#################################################################### +png("scatter2.png", width=w*ppi, height=h*ppi, res=ppi) +## Create the plot with the normalized time vs nblocks per proc +p = ggplot(D, aes(x=nblPerProc, y=tn)) + + labs(x="nblPerProc", y="Median Time (s) * nodes", + title=sprintf("Saiph-Heat3D granularity"), + subtitle=input_file) + + theme_bw() + + theme(plot.subtitle=element_text(size=8)) + + theme(legend.position = c(0.5, 0.88)) + + geom_point(aes(color=nodes), shape=21, size=3) + + labs(color = "nbly > nblz") + scale_y_continuous(trans=log2_trans()) + +# Render the plot +print(p) + +# Save the png image +dev.off() + +#################################################################### +### Heatmap plot - median time vs tasks per cpu per dimension +#################################################################### +heatmap_plot = function(df, colname, title) { + p = ggplot(df, aes(x=nbly, y=nblz, fill=!!ensym(colname))) + + geom_raster() + + #scale_fill_gradient(high="black", low="white") + + scale_fill_viridis(option="plasma") + + coord_fixed() + + theme_bw() + + theme(axis.text.x=element_text(angle = -45, hjust = 0)) + + theme(plot.subtitle=element_text(size=8)) + + guides(fill = guide_colorbar(barwidth=12, title.vjust=0.8)) + + labs(x="nbly", y="nblz", + title=sprintf("Heat granularity: %s", title), + subtitle=input_file) + + theme(legend.position="bottom")+ + facet_wrap( ~ nodes) + + k=1 + ggsave(sprintf("%s.png", colname), plot=p, width=4.8*k, height=5*k, dpi=300) + ggsave(sprintf("%s.pdf", colname), plot=p, width=4.8*k, height=5*k, dpi=300) +} + +# call heatmap function with colname and legend title +heatmap_plot(D, "tmedian", "time") + diff --git a/garlic/fig/saiph/scaling.R b/garlic/fig/saiph/scaling.R deleted file mode 100644 index 216d036..0000000 --- a/garlic/fig/saiph/scaling.R +++ /dev/null @@ -1,210 +0,0 @@ -library(ggplot2) -library(dplyr) -library(scales) -library(jsonlite) - -args=commandArgs(trailingOnly=TRUE) - -# Read the timetable from args[1] -input_file = "input.json" -if (length(args)>0) { input_file = args[1] } - -# Load the dataset in NDJSON format -dataset = jsonlite::stream_in(file(input_file)) %>% - jsonlite::flatten() - - -# We only need the nblocks and time -#df = select(dataset, config.nbly, config.nodes, time, total_time, config.gitCommit) %>% -# rename(nbly=config.nbly, nnodes=config.nodes, gitCommit=config.gitCommit) - -df = select(dataset, config.nbly, config.nblz, config.nbltotal, config.nodes, time, total_time) %>% - rename(nbly=config.nbly, nblz=config.nblz, nbltotal=config.nbltotal, nnodes=config.nodes) - -df$nbly = as.factor(df$nbly) -df$nblz = as.factor(df$nblz) -df$nblPerProc = as.factor(df$nbltotal / 24) -df$nbltotal = as.factor(df$nbltotal) -df$nodes = as.factor(df$nnodes) -#df$gitCommit = as.factor(df$gitCommit) - -# Normalize the time by the median -#D=group_by(df, nbly, nodes, gitCommit) %>% -D=group_by(df, nbly, nblz, nbltotal, nodes) %>% - mutate(tmedian = median(time)) %>% - mutate(ttmedian = median(total_time)) %>% - mutate(tnorm = time / tmedian - 1) %>% - mutate(bad = max(ifelse(abs(tnorm) >= 0.01, 1, 0))) %>% - mutate(tn = tmedian * nnodes) %>% - ungroup() - -D$bad = as.factor(D$bad) - -print(D) - -ppi=300 -h=5 -w=8 - -png("box.png", width=w*ppi, height=h*ppi, res=ppi) -# -# -# -# Create the plot with the normalized time vs nblocks -p = ggplot(data=D, aes(x=nbly, y=tnorm, color=bad)) + - - # Labels - labs(x="nbly", y="Normalized time", - title=sprintf("Saiph-Heat3D normalized time"), - subtitle=input_file) + - - # Center the title - #theme(plot.title = element_text(hjust = 0.5)) + - - # Black and white mode (useful for printing) - #theme_bw() + - - # Add the maximum allowed error lines - geom_hline(yintercept=c(-0.01, 0.01), - linetype="dashed", color="gray") + - - # Draw boxplots - geom_boxplot() + - scale_color_manual(values=c("black", "brown")) + - - #scale_y_continuous(breaks = scales::pretty_breaks(n = 10)) + - - theme_bw() + - - theme(plot.subtitle=element_text(size=8)) + - theme(legend.position = "none") - #theme(legend.position = c(0.85, 0.85)) - - - - -# Render the plot -print(p) - -## Save the png image -dev.off() -# -png("scatter.png", width=w*ppi, height=h*ppi, res=ppi) -# -## Create the plot with the normalized time vs nblocks -p = ggplot(D, aes(x=nbltotal, y=time)) + - - labs(x="nbltotal", y="Time (s)", - title=sprintf("Saiph-Heat3D granularity"), - subtitle=input_file) + - theme_bw() + - theme(plot.subtitle=element_text(size=8)) + - theme(legend.position = c(0.5, 0.88)) + - - geom_point(aes(color=nodes), shape=21, size=3) + - #scale_x_continuous(trans=log2_trans()) + - scale_y_continuous(trans=log2_trans()) -# facet_wrap( ~ gitCommit) - - -# Render the plot -print(p) - -# Save the png image -dev.off() - -png("scatter1.png", width=w*ppi, height=h*ppi, res=ppi) -# -## Create the plot with the normalized time vs nblocks -p = ggplot(D, aes(x=nblPerProc, y=time)) + - - labs(x="nblPerProc", y="Time (s)", - title=sprintf("Saiph-Heat3D granularity per nodes"), - subtitle=input_file) + - theme_bw() + - theme(plot.subtitle=element_text(size=8)) + - theme(legend.position = c(0.5, 0.5)) + - - geom_point(aes(color=nblz), shape=21, size=3) + - #scale_x_continuous(trans=log2_trans()) + - scale_y_continuous(trans=log2_trans()) + - facet_wrap( ~ nodes) - - -# Render the plot -print(p) - -# Save the png image -dev.off() - - -png("wasted.png", width=w*ppi, height=h*ppi, res=ppi) -# -## Create the plot with the normalized time vs nblocks -p = ggplot(D, aes(x=nbly, y=time)) + - - labs(x="nbly", y="Time (s)", - title=sprintf("Saiph-Heat3D granularity"), - subtitle=input_file) + - theme_bw() + - theme(plot.subtitle=element_text(size=8)) + - - geom_point(shape=21, size=3) + - geom_point(aes(y=total_time), shape=1, size=3, color="red") + - geom_line(aes(y=tmedian, color=nodes, group=nodes)) + - geom_line(aes(y=ttmedian, color=nodes, group=nodes)) + - #scale_x_continuous(trans=log2_trans()) + - scale_y_continuous(trans=log2_trans()) -# facet_wrap( ~ gitCommit) - -# Render the plot -print(p) - -# Save the png image -dev.off() - -png("test.png", width=w*ppi, height=h*ppi, res=ppi) -# -## Create the plot with the normalized time vs nblocks -p = ggplot(D, aes(x=nbltotal, y=tn)) + - - labs(x="nbltotal", y="Time (s) * nodes", - title=sprintf("Saiph-Heat3D granularity"), - subtitle=input_file) + - theme_bw() + - theme(plot.subtitle=element_text(size=8)) + - - geom_point(shape=21, size=3) + - geom_line(aes(color=nodes, group=nodes)) + - #scale_x_continuous(trans=log2_trans()) + - scale_y_continuous(trans=log2_trans()) -# facet_wrap( ~ gitCommit) - -# Render the plot -print(p) - -# Save the png image -dev.off() - -png("test1.png", width=w*ppi, height=h*ppi, res=ppi) -# -## Create the plot with the normalized time vs nblocks -p = ggplot(D, aes(x=nblPerProc, y=tn)) + - - labs(x="nblPerProc", y="Time (s) * nodes", - title=sprintf("Saiph-Heat3D granularity per nblz blocks"), - subtitle=input_file) + - theme_bw() + - theme(plot.subtitle=element_text(size=8)) + - - geom_point(shape=21, size=3) + - geom_line(aes(color=nodes, group=nodes)) + - #scale_x_continuous(trans=log2_trans()) + - scale_y_continuous(trans=log2_trans()) + - facet_wrap( ~ nblz) - -# Render the plot -print(p) - -# Save the png image -dev.off() diff --git a/garlic/fig/saiph/scaling2.R b/garlic/fig/saiph/scaling2.R deleted file mode 100644 index e391759..0000000 --- a/garlic/fig/saiph/scaling2.R +++ /dev/null @@ -1,210 +0,0 @@ -library(ggplot2) -library(dplyr) -library(scales) -library(jsonlite) - -args=commandArgs(trailingOnly=TRUE) - -# Read the timetable from args[1] -input_file = "input.json" -if (length(args)>0) { input_file = args[1] } - -# Load the dataset in NDJSON format -dataset = jsonlite::stream_in(file(input_file)) %>% - jsonlite::flatten() - - -# We only need the nblocks and time -#df = select(dataset, config.nbly, config.nodes, time, total_time, config.gitCommit) %>% -# rename(nbly=config.nbly, nnodes=config.nodes, gitCommit=config.gitCommit) - -df = select(dataset, config.nbly, config.nblz, config.nbltotal, config.nodes, time, total_time) %>% - rename(nbly=config.nbly, nblz=config.nblz, nbltotal=config.nbltotal, nnodes=config.nodes) - -df$nbly = as.factor(df$nbly) -df$nblz = as.factor(df$nblz) -df$nblPerProc = as.factor(df$nbltotal / 24) -df$nbltotal = as.factor(df$nbltotal) -df$nodes = as.factor(df$nnodes) -#df$gitCommit = as.factor(df$gitCommit) - -# Normalize the time by the median -#D=group_by(df, nbly, nodes, gitCommit) %>% -D=group_by(df, nbly, nblz, nbltotal, nodes) %>% - mutate(tmedian = median(time)) %>% - mutate(ttmedian = median(total_time)) %>% - mutate(tnorm = time / tmedian - 1) %>% - mutate(bad = max(ifelse(abs(tnorm) >= 0.01, 1, 0))) %>% - mutate(tn = tmedian * nnodes) %>% - ungroup() - -D$bad = as.factor(D$bad) - -print(D) - -ppi=300 -h=5 -w=8 - -png("box.png", width=w*ppi, height=h*ppi, res=ppi) -# -# -# -# Create the plot with the normalized time vs nblocks -p = ggplot(data=D, aes(x=nbly, y=tnorm, color=bad)) + - - # Labels - labs(x="nbly", y="Normalized time", - title=sprintf("Saiph-Heat3D normalized time"), - subtitle=input_file) + - - # Center the title - #theme(plot.title = element_text(hjust = 0.5)) + - - # Black and white mode (useful for printing) - #theme_bw() + - - # Add the maximum allowed error lines - geom_hline(yintercept=c(-0.01, 0.01), - linetype="dashed", color="gray") + - - # Draw boxplots - geom_boxplot() + - scale_color_manual(values=c("black", "brown")) + - - #scale_y_continuous(breaks = scales::pretty_breaks(n = 10)) + - - theme_bw() + - - theme(plot.subtitle=element_text(size=8)) + - theme(legend.position = "none") - #theme(legend.position = c(0.85, 0.85)) - - - - -# Render the plot -print(p) - -## Save the png image -dev.off() -# -png("scatter.png", width=w*ppi, height=h*ppi, res=ppi) -# -## Create the plot with the normalized time vs nblocks -p = ggplot(D, aes(x=nbltotal, y=time)) + - - labs(x="nbltotal", y="Time (s)", - title=sprintf("Saiph-Heat3D granularity"), - subtitle=input_file) + - theme_bw() + - theme(plot.subtitle=element_text(size=8)) + - theme(legend.position = c(0.5, 0.88)) + - - geom_point(aes(color=nodes), shape=21, size=3) + - #scale_x_continuous(trans=log2_trans()) + - scale_y_continuous(trans=log2_trans()) -# facet_wrap( ~ gitCommit) - - -# Render the plot -print(p) - -# Save the png image -dev.off() - -png("scatter1.png", width=w*ppi, height=h*ppi, res=ppi) -# -## Create the plot with the normalized time vs nblocks -p = ggplot(D, aes(x=nblPerProc, y=time)) + - - labs(x="nblPerProc", y="Time (s)", - title=sprintf("Saiph-Heat3D granularity per nodes"), - subtitle=input_file) + - theme_bw() + - theme(plot.subtitle=element_text(size=8)) + - theme(legend.position = c(0.5, 0.5)) + - - geom_point(aes(color=nbly), shape=21, size=3) + - #scale_x_continuous(trans=log2_trans()) + - scale_y_continuous(trans=log2_trans()) + - facet_wrap( ~ nodes) - - -# Render the plot -print(p) - -# Save the png image -dev.off() - - -png("wasted.png", width=w*ppi, height=h*ppi, res=ppi) -# -## Create the plot with the normalized time vs nblocks -p = ggplot(D, aes(x=nbly, y=time)) + - - labs(x="nbly", y="Time (s)", - title=sprintf("Saiph-Heat3D granularity"), - subtitle=input_file) + - theme_bw() + - theme(plot.subtitle=element_text(size=8)) + - - geom_point(shape=21, size=3) + - geom_point(aes(y=total_time), shape=1, size=3, color="red") + - geom_line(aes(y=tmedian, color=nodes, group=nodes)) + - geom_line(aes(y=ttmedian, color=nodes, group=nodes)) + - #scale_x_continuous(trans=log2_trans()) + - scale_y_continuous(trans=log2_trans()) -# facet_wrap( ~ gitCommit) - -# Render the plot -print(p) - -# Save the png image -dev.off() - -png("test.png", width=w*ppi, height=h*ppi, res=ppi) -# -## Create the plot with the normalized time vs nblocks -p = ggplot(D, aes(x=nbltotal, y=tn)) + - - labs(x="nbltotal", y="Time (s) * nodes", - title=sprintf("Saiph-Heat3D granularity"), - subtitle=input_file) + - theme_bw() + - theme(plot.subtitle=element_text(size=8)) + - - geom_point(shape=21, size=3) + - geom_line(aes(color=nodes, group=nodes)) + - #scale_x_continuous(trans=log2_trans()) + - scale_y_continuous(trans=log2_trans()) -# facet_wrap( ~ gitCommit) - -# Render the plot -print(p) - -# Save the png image -dev.off() - -png("test1.png", width=w*ppi, height=h*ppi, res=ppi) -# -## Create the plot with the normalized time vs nblocks -p = ggplot(D, aes(x=nblPerProc, y=tn)) + - - labs(x="nblPerProc", y="Time (s) * nodes", - title=sprintf("Saiph-Heat3D granularity per nbly blocks"), - subtitle=input_file) + - theme_bw() + - theme(plot.subtitle=element_text(size=8)) + - - geom_point(shape=21, size=3) + - geom_line(aes(color=nodes, group=nodes)) + - #scale_x_continuous(trans=log2_trans()) + - scale_y_continuous(trans=log2_trans()) + - facet_wrap( ~ nbly) - -# Render the plot -print(p) - -# Save the png image -dev.off() diff --git a/garlic/fig/saiph/scalingnblyz.R b/garlic/fig/saiph/scalingnblyz.R deleted file mode 100644 index b28c7a0..0000000 --- a/garlic/fig/saiph/scalingnblyz.R +++ /dev/null @@ -1,162 +0,0 @@ -library(ggplot2) -library(dplyr) -library(scales) -library(jsonlite) -library(viridis) - -args=commandArgs(trailingOnly=TRUE) - -# Read the timetable from args[1] -input_file = "input.json" -if (length(args)>0) { input_file = args[1] } - -# Load the dataset in NDJSON format -dataset = jsonlite::stream_in(file(input_file)) %>% - jsonlite::flatten() - - -# We only need the nblocks and time -#df = select(dataset, config.nbly, config.nodes, time, total_time, config.gitCommit) %>% -# rename(nbly=config.nbly, nnodes=config.nodes, gitCommit=config.gitCommit) - -df = select(dataset, config.nbly, config.nblz, config.nbltotal, config.nodes, time, total_time) %>% - rename(nbly=config.nbly, nblz=config.nblz, nbltotal=config.nbltotal, nnodes=config.nodes) - -df2 = df[df$nblz == 1 | df$nblz == 2 | df$nblz == 4, ] -df3 = df[df$nbly == 1 | df$nbly == 2 | df$nbly == 4, ] - -# df2 data frame -df2$nblsetZ = as.factor(df2$nblz) -df2$nblPerProcZ = as.factor(df2$nbltotal / 24) -df2$nbltotal = as.factor(df2$nbltotal) -df2$nodes = as.factor(df2$nnodes) - -# df3 data frame -df3$nblsetY = as.factor(df3$nbly) -df3$nblPerProcY = as.factor(df3$nbltotal / 24) -df3$nbltotalY = as.factor(df3$nbltotal) -df3$nodes = as.factor(df3$nnodes) - -df$nbly = as.factor(df$nbly) -df$nblz = as.factor(df$nblz) -df$nblPerProc = as.factor(df$nbltotal / 24) -df$nbltotal = as.factor(df$nbltotal) -df$nodes = as.factor(df$nnodes) -#df$gitCommit = as.factor(df$gitCommit) - -# Normalize the time by the median -#D=group_by(df, nbly, nodes, gitCommit) %>% -D=group_by(df, nbly, nblz, nbltotal, nodes) %>% - mutate(tmedian = median(time)) %>% - mutate(ttmedian = median(total_time)) %>% - mutate(tnorm = time / tmedian - 1) %>% - mutate(bad = max(ifelse(abs(tnorm) >= 0.01, 1, 0))) %>% - mutate(tn = tmedian * nnodes) %>% - ungroup() - -D$bad = as.factor(D$bad) - -print(D) - -ppi=300 -h=5 -w=8 - - -png("scatter_nbly.png", width=w*ppi, height=h*ppi, res=ppi) -# -## Create the plot with the normalized time vs nblocks -p = ggplot() + - geom_point(data=df2, aes(x=nblPerProcZ, y=time, color=nblsetZ), shape=21, size=3, show.legend=TRUE) + - geom_point(data=df3, aes(x=nblPerProcY, y=time, color=nblsetY), shape=4, size=2, show.legend=TRUE) + - labs(x="nblPerProc", y="Time (s)", - title=sprintf("Saiph-Heat3D granularity per nodes"), - subtitle=input_file) + - theme_bw() + - theme(plot.subtitle=element_text(size=8)) + - theme(legend.position = c(0.5, 0.5)) + - scale_y_continuous(trans=log2_trans()) + - facet_wrap( ~ nodes) - - -# Render the plot -print(p) - -# Save the png image -dev.off() - - - - - - - -png("scatter_nbly.png", width=w*ppi, height=h*ppi, res=ppi) -# -## Create the plot with the normalized time vs nblocks -p = ggplot() + - geom_point(data=df2, aes(x=nblPerProcZ, y=time, color=nblsetZ), shape=21, size=3, show.legend=TRUE) + - geom_point(data=df3, aes(x=nblPerProcY, y=time, color=nblsetY), shape=4, size=2, show.legend=TRUE) + - labs(x="nblPerProc", y="Time (s)", - title=sprintf("Saiph-Heat3D granularity per nodes"), - subtitle=input_file) + - theme_bw() + - theme(plot.subtitle=element_text(size=8)) + - theme(legend.position = c(0.5, 0.5)) + - scale_y_continuous(trans=log2_trans()) + - facet_wrap( ~ nodes) - - -# Render the plot -print(p) - -# Save the png image -dev.off() - -png("test1.png", width=w*ppi, height=h*ppi, res=ppi) -# -## Create the plot with the normalized time vs nblocks -p = ggplot(D, aes(x=nblPerProc, y=tn)) + - - labs(x="nblPerProc", y="Time (s) * nodes", - title=sprintf("Saiph-Heat3D granularity per nbly blocks"), - subtitle=input_file) + - theme_bw() + - theme(plot.subtitle=element_text(size=8)) + - - geom_point(shape=21, size=3) + - geom_line(aes(color=nodes, group=nodes)) + - #scale_x_continuous(trans=log2_trans()) + - scale_y_continuous(trans=log2_trans()) + - facet_wrap( ~ nbly) - -# Render the plot -print(p) - -# Save the png image -dev.off() - - -heatmap_plot = function(df, colname, title) { - p = ggplot(df, aes(x=nbly, y=nblz, fill=!!ensym(colname))) + - geom_raster() + - #scale_fill_gradient(high="black", low="white") + - scale_fill_viridis(option="plasma") + - coord_fixed() + - theme_bw() + - theme(axis.text.x=element_text(angle = -45, hjust = 0)) + - theme(plot.subtitle=element_text(size=8)) + - #guides(fill = guide_colorbar(barwidth=15, title.position="top")) + - guides(fill = guide_colorbar(barwidth=12, title.vjust=0.8)) + - labs(x="nbly", y="nblz", - title=sprintf("Heat granularity: %s", title), - subtitle=input_file) + - theme(legend.position="bottom")+ - facet_wrap( ~ nodes) - - k=1 - ggsave(sprintf("%s.png", colname), plot=p, width=4.8*k, height=5*k, dpi=300) - ggsave(sprintf("%s.pdf", colname), plot=p, width=4.8*k, height=5*k, dpi=300) -} - -heatmap_plot(D, "tmedian", "time") diff --git a/garlic/fig/saiph/strongScaling.R b/garlic/fig/saiph/strongScaling.R deleted file mode 100644 index 97224a0..0000000 --- a/garlic/fig/saiph/strongScaling.R +++ /dev/null @@ -1,100 +0,0 @@ -library(ggplot2) -library(dplyr) -library(scales) -library(jsonlite) - -args=commandArgs(trailingOnly=TRUE) - -# Read the timetable from args[1] -input_file = "input.json" -if (length(args)>0) { input_file = args[1] } - -# Load the dataset in NDJSON format -dataset = jsonlite::stream_in(file(input_file)) %>% - jsonlite::flatten() - - -# We only need the nblocks and time -df = select(dataset, config.nodes, time) %>% - rename(nodes=config.nodes) - -df$nodes = as.factor(df$nodes) - -# Normalize the time by the median -D=group_by(df, nodes) %>% - mutate(tnorm = time / median(time) - 1) %>% - mutate(bad = max(ifelse(abs(tnorm) >= 0.01, 1, 0))) - -D$bad = as.factor(D$bad) - - -print(D) - -ppi=300 -h=5 -w=5 - -png("box.png", width=w*ppi, height=h*ppi, res=ppi) -# -# -# -# Create the plot with the normalized time vs nblocks -p = ggplot(data=D, aes(x=nodes, y=tnorm, color=bad)) + - - # Labels - labs(x="#nodes", y="Normalized time", - title=sprintf("Saiph-Heat3D Strong-Scaling\nLocal blocking nb{y-z} = 4"), - subtitle=input_file) + - - # Center the title - #theme(plot.title = element_text(hjust = 0.5)) + - - # Black and white mode (useful for printing) - #theme_bw() + - - # Add the maximum allowed error lines - geom_hline(yintercept=c(-0.01, 0.01), - linetype="dashed", color="gray") + - - # Draw boxplots - geom_boxplot() + - scale_color_manual(values=c("black", "brown")) + - - #scale_y_continuous(breaks = scales::pretty_breaks(n = 10)) + - - theme_bw() + - - theme(plot.subtitle=element_text(size=8)) + - theme(legend.position = "none") - #theme(legend.position = c(0.85, 0.85)) - - - - -# Render the plot -print(p) - -## Save the png image -dev.off() -# -png("scatter.png", width=w*ppi, height=h*ppi, res=ppi) -# -## Create the plot with the normalized time vs nblocks -p = ggplot(D, aes(x=nodes, y=time)) + - - labs(x="#nodes", y="Time (s)", - title=sprintf("Saiph-Heat3D Strong-Scaling\nLocal blocking nb{y-z} = 4"), - subtitle=input_file) + - theme_bw() + - theme(plot.subtitle=element_text(size=8)) + - theme(legend.position = c(0.5, 0.88)) + - - geom_point(shape=21, size=3) + - #scale_x_continuous(trans=log2_trans()) + - scale_y_continuous(trans=log2_trans()) - -# Render the plot -print(p) - -# Save the png image -dev.off() From 2b36e33b7e32b03c78ae791eaa3e8b23d80b4f28 Mon Sep 17 00:00:00 2001 From: Sandra Date: Wed, 24 Mar 2021 09:08:55 +0100 Subject: [PATCH 601/987] saiph: modify apps parameters --- garlic/apps/saiph/default.nix | 31 +++++++++++++++++-------------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/garlic/apps/saiph/default.nix b/garlic/apps/saiph/default.nix index 7b2e25b..b298e70 100644 --- a/garlic/apps/saiph/default.nix +++ b/garlic/apps/saiph/default.nix @@ -8,20 +8,20 @@ , boost , gitBranch ? "master" , gitCommit ? null -, numComm ? null -, manualDist ? 0 +, enableManualDist ? false , nbgx ? null , nbgy ? null , nbgz ? null , nblx ? null , nbly ? null , nblz ? null -, nbltotal ? null , nsteps ? null -, vectFlags ? null -, debugFlags ? null -, asanFlags ? null +, numComm ? null +, enableVectFlags ? false +, enableDebugFlags ? false +, enableAsanFlags ? false , cachelineBytes ? 64 +, l3sizeKBytes ? 33792 }: with stdenv.lib; @@ -50,7 +50,6 @@ stdenv.mkDerivation rec { cc vtk boost -# breakpointHook ]; # Required for nanos6 @@ -63,23 +62,27 @@ stdenv.mkDerivation rec { make clean ''; + #NIX_CFLAGS_COMPILE = "-O1 -g"; + #NIX_DEBUG = 5; + makeFlags = [ "-f" "Makefile.${cc.CC}" "apps" "APP=Heat3D_vect" "ROW_ALIGNMENT=${toString cachelineBytes}" - ] ++ optional (manualDist != 0) "DIST_SET=${toString manualDist}" - ++ optional (manualDist != 0) "NBG_X=${toString nbgx}" - ++ optional (manualDist != 0) "NBG_Y=${toString nbgy}" - ++ optional (manualDist != 0) "NBG_Z=${toString nbgz}" + "L3_SIZE_K=${toString l3sizeKBytes}" + ] ++ optional (enableManualDist) "DIST_SET=1" + ++ optional (enableManualDist) "NBG_X=${toString nbgx}" + ++ optional (enableManualDist) "NBG_Y=${toString nbgy}" + ++ optional (enableManualDist) "NBG_Z=${toString nbgz}" ++ optional (nblx != null) "NBL_X=${toString nblx}" ++ optional (nbly != null) "NBL_Y=${toString nbly}" ++ optional (nblz != null) "NBL_Z=${toString nblz}" ++ optional (nsteps != null) "NSTEPS=${toString nsteps}" ++ optional (numComm != null) "NUM_COMM=${toString numComm}" - ++ optional (vectFlags != null) "VECT_CHECKS=${toString vectFlags}" - ++ optional (debugFlags != null) "DEBUG_CHECKS=${toString debugFlags}" - ++ optional (asanFlags != null) "SANITIZE_CHECKS=${toString asanFlags}" + ++ optional (enableVectFlags) "VECT_CHECKS=1" + ++ optional (enableDebugFlags) "DEBUG_CHECKS=1" + ++ optional (enableAsanFlags) "SANITIZE_CHECKS=1" ; installPhase = '' From 5ea9ff5ad8dac288b906a2177d52b3b871fb8627 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 1 Apr 2021 19:00:46 +0200 Subject: [PATCH 602/987] machines: add cache sizes --- garlic/machines.nix | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/garlic/machines.nix b/garlic/machines.nix index 4015112..7b0167a 100644 --- a/garlic/machines.nix +++ b/garlic/machines.nix @@ -12,10 +12,10 @@ march = "skylake-avx512"; mtune = "skylake-avx512"; hw = { - # The rev attribute attemps to capture the hardware configuration of the - # machine, and will rebuild all experiments if it changed. It only holds - # the timestamp at the current time, representing the HW configuration at - # that moment. + # The rev attribute attemps to capture the hardware + # configuration of the machine, and will rebuild all experiments + # if it changed. It only holds the timestamp at the current + # time, representing the HW configuration at that moment. rev = 1614253003; # Node and socket details @@ -23,6 +23,14 @@ cpusPerSocket = 24; socketsPerNode = 2; cachelineBytes = 64; + + # Cache sizes + cacheSizeKB = { + L1d = 32; + L1i = 32; + L2 = 1024; + L3 = 33792; + }; }; }; From 0e0f1b265fa9976d5b9cbcc91f694d26a7f5c403 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 1 Apr 2021 19:02:35 +0200 Subject: [PATCH 603/987] saiph: add extra parameters for the app --- garlic/apps/index.nix | 2 ++ garlic/apps/saiph/default.nix | 58 ++++++++++++++++++++--------------- 2 files changed, 36 insertions(+), 24 deletions(-) diff --git a/garlic/apps/index.nix b/garlic/apps/index.nix index ce2fefe..ac2ccfd 100644 --- a/garlic/apps/index.nix +++ b/garlic/apps/index.nix @@ -13,6 +13,8 @@ saiph = callPackage ./saiph/default.nix { cc = bsc.clangOmpss2; + L3SizeKB = garlic.targetMachine.config.hw.cacheSizeKB.L3; + cachelineBytes = garlic.targetMachine.config.hw.cachelineBytes; }; creams = callPackage ./creams/default.nix { diff --git a/garlic/apps/saiph/default.nix b/garlic/apps/saiph/default.nix index b298e70..1e3d867 100644 --- a/garlic/apps/saiph/default.nix +++ b/garlic/apps/saiph/default.nix @@ -20,11 +20,20 @@ , enableVectFlags ? false , enableDebugFlags ? false , enableAsanFlags ? false -, cachelineBytes ? 64 -, l3sizeKBytes ? 33792 +, cachelineBytes ? null +, L3SizeKB ? null +# Problem size: +, sizex ? 3 +, sizey ? 4 +, sizez ? 4 }: +assert enableManualDist -> (nbgx != null); +assert enableManualDist -> (nbgy != null); +assert enableManualDist -> (nbgz != null); + with stdenv.lib; +with stdenv.lib.versions; stdenv.mkDerivation rec { name = "saiph"; @@ -33,9 +42,9 @@ stdenv.mkDerivation rec { src = builtins.fetchGit ({ url = "ssh://git@bscpm03.bsc.es/DSLs/saiph.git"; ref = "${gitBranch}"; - } // (if (gitCommit != null) then { - rev = gitCommit; - } else {})); + } // (optionalAttrs (gitCommit != null) { + rev = "${gitCommit}"; + })); programPath = "/bin/Heat3D_vect"; @@ -53,36 +62,37 @@ stdenv.mkDerivation rec { ]; # Required for nanos6 - hardeningDisable = [ "bindnow" ]; + hardeningDisable = [ "all" ]; preBuild = '' cd saiphv2/cpp/src - export VTK_VERSION=8.2 + export VTK_VERSION=${majorMinor (getVersion vtk.name)} export VTK_HOME=${vtk} make clean - ''; - #NIX_CFLAGS_COMPILE = "-O1 -g"; - #NIX_DEBUG = 5; + sed -i '/SIZEX =/s/3/${toString sizex}/g' testApp/Heat3D_vect.cpp + sed -i '/SIZEY =/s/4/${toString sizey}/g' testApp/Heat3D_vect.cpp + sed -i '/SIZEZ =/s/4/${toString sizez}/g' testApp/Heat3D_vect.cpp + ''; makeFlags = [ "-f" "Makefile.${cc.CC}" "apps" "APP=Heat3D_vect" - "ROW_ALIGNMENT=${toString cachelineBytes}" - "L3_SIZE_K=${toString l3sizeKBytes}" - ] ++ optional (enableManualDist) "DIST_SET=1" - ++ optional (enableManualDist) "NBG_X=${toString nbgx}" - ++ optional (enableManualDist) "NBG_Y=${toString nbgy}" - ++ optional (enableManualDist) "NBG_Z=${toString nbgz}" - ++ optional (nblx != null) "NBL_X=${toString nblx}" - ++ optional (nbly != null) "NBL_Y=${toString nbly}" - ++ optional (nblz != null) "NBL_Z=${toString nblz}" - ++ optional (nsteps != null) "NSTEPS=${toString nsteps}" - ++ optional (numComm != null) "NUM_COMM=${toString numComm}" - ++ optional (enableVectFlags) "VECT_CHECKS=1" - ++ optional (enableDebugFlags) "DEBUG_CHECKS=1" - ++ optional (enableAsanFlags) "SANITIZE_CHECKS=1" + ] ++ optional (cachelineBytes != null) "ROW_ALIGNMENT=${toString cachelineBytes}" + ++ optional (L3SizeKB != null) "L3_SIZE_K=${toString L3SizeKB}" + ++ optional (enableManualDist) "DIST_SET=1" + ++ optional (enableManualDist) "NBG_X=${toString nbgx}" + ++ optional (enableManualDist) "NBG_Y=${toString nbgy}" + ++ optional (enableManualDist) "NBG_Z=${toString nbgz}" + ++ optional (nblx != null) "NBL_X=${toString nblx}" + ++ optional (nbly != null) "NBL_Y=${toString nbly}" + ++ optional (nblz != null) "NBL_Z=${toString nblz}" + ++ optional (nsteps != null) "NSTEPS=${toString nsteps}" + ++ optional (numComm != null) "NUM_COMM=${toString numComm}" + ++ optional (enableVectFlags) "VECT_CHECKS=1" + ++ optional (enableDebugFlags) "DEBUG_CHECKS=1" + ++ optional (enableAsanFlags) "SANITIZE_CHECKS=1" ; installPhase = '' From 10b1ff8f7af515c8acfa1ca8885005d02b87cb4f Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 1 Apr 2021 19:01:24 +0200 Subject: [PATCH 604/987] saiph: simplify granularity and ss experiments --- garlic/exp/index.nix | 4 +- ...{granularity-saiph.nix => granularity.nix} | 92 ++++++++++++------- .../saiph/{scalability-saiph.nix => ss.nix} | 74 ++++++++------- 3 files changed, 100 insertions(+), 70 deletions(-) rename garlic/exp/saiph/{granularity-saiph.nix => granularity.nix} (52%) rename garlic/exp/saiph/{scalability-saiph.nix => ss.nix} (64%) diff --git a/garlic/exp/index.nix b/garlic/exp/index.nix index a70556b..5645c62 100644 --- a/garlic/exp/index.nix +++ b/garlic/exp/index.nix @@ -32,8 +32,8 @@ }; saiph = { - granularity-saiph = callPackage ./saiph/granularity-saiph.nix { }; - scalability-saiph = callPackage ./saiph/scalability-saiph.nix { }; + granularity = callPackage ./saiph/granularity.nix { }; + ss = callPackage ./saiph/ss.nix { }; }; creams = rec { diff --git a/garlic/exp/saiph/granularity-saiph.nix b/garlic/exp/saiph/granularity.nix similarity index 52% rename from garlic/exp/saiph/granularity-saiph.nix rename to garlic/exp/saiph/granularity.nix index 0c794a2..6387bf6 100644 --- a/garlic/exp/saiph/granularity-saiph.nix +++ b/garlic/exp/saiph/granularity.nix @@ -1,4 +1,4 @@ -###################################################################################### +####################################################################### # Saiph, granularity experiment: # # App:Heat 3D - garlic/tampi+isend+oss+task+simd branch @@ -15,12 +15,13 @@ # Granularity experiment configuration: # Single-core run # MPI binded to sockets: MPI procs = 2 -# Mesh distributed across third dimension to ensure contiguous communications +# Mesh distributed across third dimension to ensure contiguous +# communications # --> nbgx = 1, nbgy = 1 # First dimension cannot be locally blocked (simd reasons) # Second and third dimension local blocking limited by local mesh size # -###################################################################################### +####################################################################### # Common packages, tools and options { @@ -29,81 +30,102 @@ , bsc , targetMachine , stages +, garlicTools }: with stdenv.lib; +with garlicTools; let - #*** Variable configurations *** - varConf = with bsc; { + # Variable configurations + varConf = with targetMachine.config; { # Local blocks per dimension - nbl1 = [ 1 2 3 4 6 12 24 48 96 ]; - nbl2 = [ 1 2 3 4 6 12 24 48 96 ]; + nblx = [ 1 ]; # SIMD + nbly = range2 1 (hw.cpusPerNode * 8); + nblz = [ 8 ]; + sizex = [ 3 ]; + gitBranch = [ "garlic/tampi+isend+oss+task+simd" ]; }; - #*** Generate the complete configuration for each unit *** - genConf = with bsc; c: targetMachine.config // rec { + # Generate the complete configuration for each unit + genConf = c: targetMachine.config // rec { # Experiment, units and job names expName = "saiph-granularity"; - unitName = "${expName}-N${toString nodes}" + "nbg_${toString nbgx}-${toString nbgy}-${toString nbgz}" + "nbl_1-${toString nbly}-${toString nblz}"; - jobName = "${unitName}"; + unitName = "${expName}" + + "-N${toString nodes}" + + "-nbg.x${toString nbgx}.y${toString nbgy}.z${toString nbgz}" + + "-nbl.x${toString nblx}.y${toString nbly}.z${toString nblz}"; + + jobName = unitName; # saiph options + totalTasks = ntasksPerNode * nodes; nodes = 1; enableManualDist = true; # allows to manually set nbg{x-y-z} nbgx = 1; nbgy = 1; - nbgz = nodes*2; # forcing distribution by last dim - nblx = 1; # simd reasons - nbly = c.nbl1; # takes values from varConf - nblz = c.nbl2; # takes values from varConf - mpi = impi; - gitBranch = "garlic/tampi+isend+oss+task+simd"; - gitCommit = "8052494d7dc62bef95ebaca9938e82fb029686f6"; # fix a specific commit - rev = "0"; + nbgz = totalTasks; # forcing distribution by last dim - # Repeat the execution of each unit 30 times - loops = 30; + inherit (c) nblx nbly nblz gitBranch sizex; + + blocksPerTask = nblx * nbly * nblz * 1.0; + blocksPerCpu = blocksPerTask / cpusPerTask; + + # fix a specific commit + gitCommit = "8052494d7dc62bef95ebaca9938e82fb029686f6"; + + # Repeat the execution of each unit 10 times + loops = 10; # Resources inherit (targetMachine.config) hw; qos = "debug"; - ntasksPerNode = hw.socketsPerNode; # MPI binded to sockets - cpusPerTask = hw.cpusPerSocket; # Using the 24 CPUs of each socket + ntasksPerNode = hw.socketsPerNode; # MPI binded to sockets + cpusPerTask = hw.cpusPerSocket; # Using the 24 CPUs of each socket }; #*** Compute the final set of configurations *** - # Compute the array of configurations: cartesian product of all factors + # Compute the array of configurations: cartesian product of all + # factors allConfigs = stdexp.buildConfigs { inherit varConf genConf; }; + # Filter to remove non-desired configurations: # --> tasks/proc < 0.5 # --> nblz > 50 - configs = filter (el: if ((builtins.mul el.nbly el.nblz) < (builtins.mul 0.5 el.cpusPerTask) || el.nblz > 50) then false else true) allConfigs; + isGoodConfig = c: + let + maxNblz = c.cpusPerTask * 2; + in + ! (c.blocksPerCpu < 0.5 || c.nblz > maxNblz); + + configs = filter (isGoodConfig) allConfigs; #*** Sets the env/argv of the program *** - exec = {nextStage, conf, ...}: with conf; stages.exec { + exec = {nextStage, conf, ...}: stages.exec { inherit nextStage; env = '' - export OMP_NUM_THREADS=${toString hw.cpusPerSocket} + export OMP_NUM_THREADS=${toString conf.cpusPerTask} ''; }; #*** Configure the program according to the app *** - program = {nextStage, conf, ...}: - let - customPkgs = stdexp.replaceMpi conf.mpi; - in - customPkgs.apps.saiph.override { - inherit (conf) enableManualDist nbgx nbgy nbgz nblx nbly nblz mpi gitBranch gitCommit; - }; + program = {nextStage, conf, ...}: bsc.apps.saiph.override { + inherit (conf) enableManualDist + nbgx nbgy nbgz nblx nbly nblz + sizex + gitBranch gitCommit; + + L3SizeKB = conf.hw.cacheSizeKB.L3; + cachelineBytes = conf.hw.cachelineBytes; + }; #*** Add stages to the pipeline *** pipeline = stdexp.stdPipeline ++ [ exec program ]; in - stdexp.genExperiment { inherit configs pipeline; } + stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/saiph/scalability-saiph.nix b/garlic/exp/saiph/ss.nix similarity index 64% rename from garlic/exp/saiph/scalability-saiph.nix rename to garlic/exp/saiph/ss.nix index 5ec5d1a..4fbb24e 100644 --- a/garlic/exp/saiph/scalability-saiph.nix +++ b/garlic/exp/saiph/ss.nix @@ -31,62 +31,68 @@ , bsc , targetMachine , stages +, garlicTools }: with stdenv.lib; +with garlicTools; let #*** Variable configurations *** - varConf = with bsc; { + varConf = with targetMachine.config; { + # FIXME: None of those selected nbl* and problem size is able to give good + # efficiency when testing strong scaling. We should find better values. # Local blocks per dimension - nbl1 = [ 1 2 3 4 6 12 24 48 96 ]; - nbl2 = [ 1 2 3 4 6 12 24 48 96 ]; - # Number of nodes - nodes = [ 1 2 4 8 ]; + nblx = [ 1 ]; # SIMD + nbly = [ 32 ]; + nblz = [ 8 ]; + sizex = [ 3 6 ]; + gitBranch = [ "garlic/tampi+isend+oss+task+simd" ]; + nodes = range2 1 8; }; #*** Generate the complete configuration for each unit *** - genConf = with bsc; c: targetMachine.config // rec { + genConf = c: targetMachine.config // rec { # Experiment, units and job names - expName = "saiph-scalability"; - unitName = "${expName}-N${toString nodes}" + "nbg_${toString nbgx}-${toString nbgy}-${toString nbgz}" + "nbl_1-${toString nbly}-${toString nblz}"; - jobName = "${unitName}"; + expName = "saiph-ss"; + unitName = "${expName}" + + "-N${toString nodes}" + + "-nbg.x${toString nbgx}.y${toString nbgy}.z${toString nbgz}" + + "-nbl.x${toString nblx}.y${toString nbly}.z${toString nblz}"; + jobName = unitName; # saiph options - nodes = c.nodes; # takes values from varConf enableManualDist = true; # allows to manually set nbg{x-y-z} nbgx = 1; nbgy = 1; - nbgz = nodes*2; # forcing distribution by last dim - nblx = 1; # simd reasons - nbly = c.nbl1; # takes values from varConf - nblz = c.nbl2; # takes values from varConf - mpi = impi; + nbgz = nodes * ntasksPerNode; # forcing distribution by last dim + + inherit (c) nblx nbly nblz nodes sizex; + gitBranch = "garlic/tampi+isend+oss+task+simd"; gitCommit = "8052494d7dc62bef95ebaca9938e82fb029686f6"; # fix a specific commit - rev = "0"; - # Repeat the execution of each unit 30 times - loops = 30; + + blocksPerTask = nblx * nbly * nblz * 1.0; + blocksPerCpu = blocksPerTask / cpusPerTask; + + # Repeat the execution of each unit 10 times + loops = 10; # Resources inherit (targetMachine.config) hw; - qos = "bsc_cs"; + + qos = "debug"; ntasksPerNode = hw.socketsPerNode; # MPI binded to sockets cpusPerTask = hw.cpusPerSocket; # Using the 24 CPUs of each socket }; #*** Compute the final set of configurations *** # Compute the array of configurations: cartesian product of all factors - allConfigs = stdexp.buildConfigs { + configs = stdexp.buildConfigs { inherit varConf genConf; }; - # Filter to remove non-desired configurations: - # --> tasks/proc < 3 - # --> nblz > 25 - configs = filter (el: if ((builtins.mul el.nbly el.nblz) < (builtins.mul 3 el.cpusPerTask) || el.nblz > 25) then false else true) allConfigs; - #*** Sets the env/argv of the program *** exec = {nextStage, conf, ...}: with conf; stages.exec { @@ -97,17 +103,19 @@ let }; #*** Configure the program according to the app *** - program = {nextStage, conf, ...}: - let - customPkgs = stdexp.replaceMpi conf.mpi; - in - customPkgs.apps.saiph.override { - inherit (conf) enableManualDist nbgx nbgy nbgz nblx nbly nblz mpi gitBranch gitCommit; - }; + program = {nextStage, conf, ...}: bsc.apps.saiph.override { + inherit (conf) enableManualDist + nbgx nbgy nbgz nblx nbly nblz + sizex + gitBranch gitCommit; + + L3SizeKB = conf.hw.cacheSizeKB.L3; + cachelineBytes = conf.hw.cachelineBytes; + }; #*** Add stages to the pipeline *** pipeline = stdexp.stdPipeline ++ [ exec program ]; in - stdexp.genExperiment { inherit configs pipeline; } + stdexp.genExperiment { inherit configs pipeline; } From 8a97fefafab57a776b9890d97293700b58a55794 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 1 Apr 2021 19:20:06 +0200 Subject: [PATCH 605/987] saiph: simplify and update figure scripts --- garlic/fig/index.nix | 4 +- garlic/fig/saiph/granularity-saiph.R | 155 -------------------------- garlic/fig/saiph/granularity.R | 94 ++++++++++++++++ garlic/fig/saiph/scalability-saiph.R | 156 --------------------------- garlic/fig/saiph/ss.R | 109 +++++++++++++++++++ 5 files changed, 205 insertions(+), 313 deletions(-) delete mode 100644 garlic/fig/saiph/granularity-saiph.R create mode 100644 garlic/fig/saiph/granularity.R delete mode 100644 garlic/fig/saiph/scalability-saiph.R create mode 100644 garlic/fig/saiph/ss.R diff --git a/garlic/fig/index.nix b/garlic/fig/index.nix index 63135f7..81244d0 100644 --- a/garlic/fig/index.nix +++ b/garlic/fig/index.nix @@ -42,8 +42,8 @@ in }; saiph = with exp.saiph; { - granularity-saiph = stdPlot ./saiph/granularity-saiph.R [ granularity-saiph ]; - scalability-saiph = stdPlot ./saiph/scalability-saiph.R [ scalability-saiph ]; + granularity = stdPlot ./saiph/granularity.R [ granularity ]; + ss = stdPlot ./saiph/ss.R [ ss ]; }; heat = with exp.heat; { diff --git a/garlic/fig/saiph/granularity-saiph.R b/garlic/fig/saiph/granularity-saiph.R deleted file mode 100644 index 4bdab6f..0000000 --- a/garlic/fig/saiph/granularity-saiph.R +++ /dev/null @@ -1,155 +0,0 @@ -library(ggplot2) -library(dplyr) -library(scales) -library(jsonlite) -library(viridis) - -args=commandArgs(trailingOnly=TRUE) - -# Read the timetable from args[1] -input_file = "input.json" -if (length(args)>0) { input_file = args[1] } - -# Load the dataset in NDJSON format -dataset = jsonlite::stream_in(file(input_file)) %>% - jsonlite::flatten() - - -# Create a data frame selecting the desired variables from the data set -df = select(dataset, config.nbly, config.nblz, config.nodes, time, total_time) %>% - rename(nbly=config.nbly, nblz=config.nblz, nnodes=config.nodes) - -# Declare variables as factors -# --> R does not allow to operate with factors: operate before casting to factors -df$nblPerProc = as.factor(round((df$nbly * df$nblz) / 24, digits = 2)) -df$biggernbly = as.factor(df$nbly > df$nblz) -df$nbly = as.factor(df$nbly) -df$nblz = as.factor(df$nblz) -df$nodes = as.factor(df$nnodes) - -# Create a new data frame including statistics -D=group_by(df, nbly, nblz, nblPerProc, nodes) %>% - mutate(tmedian = median(time)) %>% - mutate(ttmedian = median(total_time)) %>% - mutate(tnorm = time / tmedian - 1) %>% - mutate(bad = max(ifelse(abs(tnorm) >= 0.01, 1, 0))) %>% - mutate(tn = tmedian * nnodes) %>% - ungroup() - -D$bad = as.factor(D$bad) - -### Std output data frame D -print(D) - -### Output figure size -ppi=300 -h=5 -w=8 - -#################################################################### -### Boxplot -#################################################################### -png("box.png", width=w*ppi, height=h*ppi, res=ppi) -# -# -# Create the plot with the normalized time vs nblocks -p = ggplot(data=D, aes(x=nblPerProc, y=tnorm, color=bad)) + - - # Labels - labs(x="nblPerProc", y="Normalized time", - title=sprintf("Saiph-Heat3D normalized time"), - subtitle=input_file) + - # Add the maximum allowed error lines - geom_hline(yintercept=c(-0.01, 0.01), - linetype="dashed", color="gray") + - - # Draw boxplots - geom_boxplot() + - scale_color_manual(values=c("black", "brown")) + - theme_bw() + - theme(plot.subtitle=element_text(size=8)) + - theme(legend.position = "none") - - -# Render the plot -print(p) - -## Save the png image -dev.off() - -#################################################################### -### XY Scatter plot - measured_time & total_time vs tasks per cpu -#################################################################### - - -#################################################################### -### XY Scatter plot - time vs tasks per cpu -#################################################################### -png("scatter.png", width=w*ppi, height=h*ppi, res=ppi) -## Create the plot with the normalized time vs nblocks per proc -p = ggplot(D, aes(x=nblPerProc, y=time)) + - labs(x="nblPerProc", y="Time (s)", - title=sprintf("Saiph-Heat3D granularity"), - subtitle=input_file) + - theme_bw() + - theme(plot.subtitle=element_text(size=8)) + - theme(legend.position = c(0.5, 0.88)) + - geom_point(shape=21, size=3) + - scale_y_continuous(trans=log2_trans()) - - -# Render the plot -print(p) - -## Save the png image -dev.off() - -#################################################################### -### XY Scatter plot - median time vs tasks per cpu -#################################################################### -png("scatter2.png", width=w*ppi, height=h*ppi, res=ppi) -## Create the plot with the normalized time vs nblocks per proc -p = ggplot(D, aes(x=nblPerProc, y=tmedian)) + - labs(x="nblPerProc", y="Median Time (s)", - title=sprintf("Saiph-Heat3D granularity"), - subtitle=input_file) + - theme_bw() + - theme(plot.subtitle=element_text(size=8)) + - theme(legend.position = c(0.5, 0.88)) + - geom_point(aes(color=biggernbly), shape=21, size=3) + - labs(color = "nbly > nblz") - scale_y_continuous(trans=log2_trans()) - -# Render the plot -print(p) - -# Save the png image -dev.off() - -#################################################################### -### Heatmap plot - median time vs tasks per cpu per dimension -#################################################################### -heatmap_plot = function(df, colname, title) { - p = ggplot(df, aes(x=nbly, y=nblz, fill=!!ensym(colname))) + - geom_raster() + - #scale_fill_gradient(high="black", low="white") + - scale_fill_viridis(option="plasma") + - coord_fixed() + - theme_bw() + - theme(axis.text.x=element_text(angle = -45, hjust = 0)) + - theme(plot.subtitle=element_text(size=8)) + - guides(fill = guide_colorbar(barwidth=12, title.vjust=0.8)) + - labs(x="nbly", y="nblz", - title=sprintf("Heat granularity: %s", title), - subtitle=input_file) + - theme(legend.position="bottom")+ - facet_wrap( ~ nodes) - - k=1 - ggsave(sprintf("%s.png", colname), plot=p, width=4.8*k, height=5*k, dpi=300) - ggsave(sprintf("%s.pdf", colname), plot=p, width=4.8*k, height=5*k, dpi=300) -} - -# call heatmap function with colname and legend title -heatmap_plot(D, "tmedian", "time") - diff --git a/garlic/fig/saiph/granularity.R b/garlic/fig/saiph/granularity.R new file mode 100644 index 0000000..b4ba304 --- /dev/null +++ b/garlic/fig/saiph/granularity.R @@ -0,0 +1,94 @@ +library(ggplot2) +library(dplyr, warn.conflicts = FALSE) +library(scales) +library(jsonlite) +library(viridis, warn.conflicts = FALSE) +library(stringr) + +args = commandArgs(trailingOnly=TRUE) + +# Set the input dataset if given in argv[1], or use "input" as default +if (length(args)>0) { input_file = args[1] } else { input_file = "input" } + +df = jsonlite::stream_in(file(input_file), verbose=FALSE) %>% + + jsonlite::flatten() %>% + + select(unit, + config.nodes, + config.nblx, + config.nbly, + config.nblz, + config.gitBranch, + config.blocksPerCpu, + config.sizex, + time, + total_time) %>% + + rename(nodes=config.nodes, + nblx=config.nblx, + nbly=config.nbly, + nblz=config.nblz, + gitBranch=config.gitBranch, + blocksPerCpu=config.blocksPerCpu, + sizex=config.sizex) %>% + + # Remove the "garlic/" prefix from the gitBranch + mutate(branch = str_replace(gitBranch, "garlic/", "")) %>% + + # Computations before converting to factor + mutate(time.nodes = time * nodes) %>% + + # Convert to factors + mutate(unit = as.factor(unit)) %>% + mutate(nodes = as.factor(nodes)) %>% + mutate(gitBranch = as.factor(gitBranch)) %>% + mutate(nblx = as.factor(nblx)) %>% + mutate(nbly = as.factor(nbly)) %>% + mutate(nblz = as.factor(nblz)) %>% + mutate(sizex = as.factor(sizex)) %>% + mutate(unit = as.factor(unit)) %>% + + # Compute median times + group_by(unit) %>% + mutate(median.time = median(time)) %>% + mutate(median.time.nodes = median(time.nodes)) %>% + mutate(normalized.time = time / median.time - 1) %>% + mutate(log.median.time = log(median.time)) %>% + ungroup() + +dpi = 300 +h = 5 +w = 8 + +maintitle = "Saiph-Heat3D granularity" + +# --------------------------------------------------------------------- + +p = ggplot(df, aes(x=nbly, y=normalized.time, fill=sizex)) + + geom_boxplot() + + geom_hline(yintercept=c(-0.01, 0.01), linetype="dashed", color="red") + + theme_bw() + + facet_wrap(branch ~ .) + + labs(y="Normalized time", + title=sprintf("%s: normalized time", maintitle), + subtitle=input_file) + + theme(plot.subtitle=element_text(size=8)) + +ggsave("normalized.time.png", plot=p, width=w, height=h, dpi=dpi) +ggsave("normalized.time.pdf", plot=p, width=w, height=h, dpi=dpi) + +# --------------------------------------------------------------------- + +p = ggplot(df, aes(x=blocksPerCpu, y=time, color=sizex)) + + geom_point(shape=21, size=3) + + geom_line(aes(y=median.time, group=sizex)) + + theme_bw() + + scale_x_continuous(trans=log2_trans()) + + labs(y="Time (s)", + title=sprintf("%s: time", maintitle), + subtitle=input_file) + + theme(plot.subtitle=element_text(size=8)) + +ggsave("time.png", plot=p, width=w, height=h, dpi=dpi) +ggsave("time.pdf", plot=p, width=w, height=h, dpi=dpi) diff --git a/garlic/fig/saiph/scalability-saiph.R b/garlic/fig/saiph/scalability-saiph.R deleted file mode 100644 index e29e720..0000000 --- a/garlic/fig/saiph/scalability-saiph.R +++ /dev/null @@ -1,156 +0,0 @@ -library(ggplot2) -library(dplyr) -library(scales) -library(jsonlite) -library(viridis) - -args=commandArgs(trailingOnly=TRUE) - -# Read the timetable from args[1] -input_file = "input.json" -if (length(args)>0) { input_file = args[1] } - -# Load the dataset in NDJSON format -dataset = jsonlite::stream_in(file(input_file)) %>% - jsonlite::flatten() - - -# Create a data frame selecting the desired variables from the data set -df = select(dataset, config.nbly, config.nblz, config.nodes, time, total_time) %>% - rename(nbly=config.nbly, nblz=config.nblz, nnodes=config.nodes) - -# Declare variables as factors -# --> R does not allow to operate with factors: operate before casting to factors -df$nblPerProc = as.factor(round((df$nbly * df$nblz) / 24, digits = 2)) -df$biggernbly = as.factor(df$nbly > df$nblz) -df$nbly = as.factor(df$nbly) -df$nblz = as.factor(df$nblz) -df$nodes = as.factor(df$nnodes) - -# Create a new data frame including statistics -D=group_by(df, nbly, nblz, nblPerProc, nodes) %>% - mutate(tmedian = median(time)) %>% - mutate(ttmedian = median(total_time)) %>% - mutate(tnorm = time / tmedian - 1) %>% - mutate(bad = max(ifelse(abs(tnorm) >= 0.01, 1, 0))) %>% - mutate(tn = tmedian * nnodes) %>% - ungroup() - -D$bad = as.factor(D$bad) - -### Std output data frame D -print(D) - -### Output figure size -ppi=300 -h=5 -w=8 - -#################################################################### -### Boxplot -#################################################################### -png("box.png", width=w*ppi, height=h*ppi, res=ppi) -# -# -# Create the plot with the normalized time vs nblocks -p = ggplot(data=D, aes(x=nblPerProc, y=tnorm, color=bad)) + - - # Labels - labs(x="nblPerProc", y="Normalized time", - title=sprintf("Saiph-Heat3D normalized time"), - subtitle=input_file) + - # Add the maximum allowed error lines - geom_hline(yintercept=c(-0.01, 0.01), - linetype="dashed", color="gray") + - - # Draw boxplots - geom_boxplot() + - scale_color_manual(values=c("black", "brown")) + - theme_bw() + - theme(plot.subtitle=element_text(size=8)) + - theme(legend.position = "none") - - -# Render the plot -print(p) - -## Save the png image -dev.off() - -#################################################################### -### XY Scatter plot - measured_time & total_time vs tasks per cpu -#################################################################### - - -#################################################################### -### XY Scatter plot - time vs tasks per cpu -#################################################################### -png("scatter.png", width=w*ppi, height=h*ppi, res=ppi) -## Create the plot with the normalized time vs nblocks per proc -p = ggplot(D, aes(x=nblPerProc, y=time)) + - labs(x="nblPerProc", y="Time (s)", - title=sprintf("Saiph-Heat3D granularity"), - subtitle=input_file) + - theme_bw() + - theme(plot.subtitle=element_text(size=8)) + - theme(legend.position = c(0.5, 0.88)) + - geom_point(aes(color=nodes), shape=21, size=3) + - scale_y_continuous(trans=log2_trans()) - - -# Render the plot -print(p) - -## Save the png image -dev.off() - - -#################################################################### -### XY Scatter plot - median time vs tasks per cpu -#################################################################### -png("scatter2.png", width=w*ppi, height=h*ppi, res=ppi) -## Create the plot with the normalized time vs nblocks per proc -p = ggplot(D, aes(x=nblPerProc, y=tn)) + - labs(x="nblPerProc", y="Median Time (s) * nodes", - title=sprintf("Saiph-Heat3D granularity"), - subtitle=input_file) + - theme_bw() + - theme(plot.subtitle=element_text(size=8)) + - theme(legend.position = c(0.5, 0.88)) + - geom_point(aes(color=nodes), shape=21, size=3) + - labs(color = "nbly > nblz") - scale_y_continuous(trans=log2_trans()) - -# Render the plot -print(p) - -# Save the png image -dev.off() - -#################################################################### -### Heatmap plot - median time vs tasks per cpu per dimension -#################################################################### -heatmap_plot = function(df, colname, title) { - p = ggplot(df, aes(x=nbly, y=nblz, fill=!!ensym(colname))) + - geom_raster() + - #scale_fill_gradient(high="black", low="white") + - scale_fill_viridis(option="plasma") + - coord_fixed() + - theme_bw() + - theme(axis.text.x=element_text(angle = -45, hjust = 0)) + - theme(plot.subtitle=element_text(size=8)) + - guides(fill = guide_colorbar(barwidth=12, title.vjust=0.8)) + - labs(x="nbly", y="nblz", - title=sprintf("Heat granularity: %s", title), - subtitle=input_file) + - theme(legend.position="bottom")+ - facet_wrap( ~ nodes) - - k=1 - ggsave(sprintf("%s.png", colname), plot=p, width=4.8*k, height=5*k, dpi=300) - ggsave(sprintf("%s.pdf", colname), plot=p, width=4.8*k, height=5*k, dpi=300) -} - -# call heatmap function with colname and legend title -heatmap_plot(D, "tmedian", "time") - diff --git a/garlic/fig/saiph/ss.R b/garlic/fig/saiph/ss.R new file mode 100644 index 0000000..2be666e --- /dev/null +++ b/garlic/fig/saiph/ss.R @@ -0,0 +1,109 @@ +library(ggplot2) +library(dplyr, warn.conflicts = FALSE) +library(scales) +library(jsonlite) +library(viridis, warn.conflicts = FALSE) +library(stringr) + +args = commandArgs(trailingOnly=TRUE) + +# Set the input dataset if given in argv[1], or use "input" as default +if (length(args)>0) { input_file = args[1] } else { input_file = "input" } + +df = jsonlite::stream_in(file(input_file), verbose=FALSE) %>% + + jsonlite::flatten() %>% + + select(unit, + config.nodes, + config.nblx, + config.nbly, + config.nblz, + config.gitBranch, + config.blocksPerCpu, + config.sizex, + time, + total_time) %>% + + rename(nodes=config.nodes, + nblx=config.nblx, + nbly=config.nbly, + nblz=config.nblz, + gitBranch=config.gitBranch, + blocksPerCpu=config.blocksPerCpu, + sizex=config.sizex) %>% + + # Remove the "garlic/" prefix from the gitBranch + mutate(branch = str_replace(gitBranch, "garlic/", "")) %>% + + # Computations before converting to factor + mutate(time.nodes = time * nodes) %>% + + # Convert to factors + mutate(unit = as.factor(unit)) %>% + mutate(nodes = as.factor(nodes)) %>% + mutate(gitBranch = as.factor(gitBranch)) %>% + mutate(nblx = as.factor(nblx)) %>% + mutate(nbly = as.factor(nbly)) %>% + mutate(nblz = as.factor(nblz)) %>% + mutate(sizex = as.factor(sizex)) %>% + mutate(unit = as.factor(unit)) %>% + + # Compute median times + group_by(unit) %>% + mutate(median.time = median(time)) %>% + mutate(median.time.nodes = median(time.nodes)) %>% + mutate(normalized.time = time / median.time - 1) %>% + mutate(log.median.time = log(median.time)) %>% + ungroup() + +dpi = 300 +h = 5 +w = 8 + +maintitle = "Saiph-Heat3D strong scaling" + +# --------------------------------------------------------------------- + +p = ggplot(df, aes(x=nodes, y=normalized.time, fill=sizex)) + + geom_boxplot() + + geom_hline(yintercept=c(-0.01, 0.01), linetype="dashed", color="red") + + theme_bw() + + facet_wrap(branch ~ .) + + labs(x="nodes", y="Normalized time", + title=sprintf("%s: normalized time", maintitle), + subtitle=input_file) + + theme(plot.subtitle=element_text(size=8)) + +ggsave("normalized.time.png", plot=p, width=w, height=h, dpi=dpi) +ggsave("normalized.time.pdf", plot=p, width=w, height=h, dpi=dpi) + +# --------------------------------------------------------------------- + +p = ggplot(df, aes(x=nodes, y=time, color=sizex)) + + geom_point(shape=21, size=3) + + geom_line(aes(y=median.time, group=sizex)) + + theme_bw() + +# facet_wrap(branch ~ .) + + labs(x="nodes", y="Time (s)", + title=sprintf("%s: time", maintitle), + subtitle=input_file) + + theme(plot.subtitle=element_text(size=8)) + +ggsave("time.png", plot=p, width=w, height=h, dpi=dpi) +ggsave("time.pdf", plot=p, width=w, height=h, dpi=dpi) + +# --------------------------------------------------------------------- + +p = ggplot(df, aes(x=nodes, y=time.nodes, color=sizex)) + + geom_point(shape=21, size=3) + + geom_line(aes(y=median.time.nodes, group=sizex)) + + theme_bw() + + #facet_wrap(branch ~ .) + + labs(x="nodes", y="Time * nodes (s)", + title=sprintf("%s: time * nodes", maintitle), + subtitle=input_file) + + theme(plot.subtitle=element_text(size=8)) + +ggsave("time.nodes.png", plot=p, width=w, height=h, dpi=dpi) +ggsave("time.nodes.pdf", plot=p, width=w, height=h, dpi=dpi) From 3c150d39103eb1d62df3f53e81d948dc9a7c1aa2 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 6 Apr 2021 10:50:39 +0200 Subject: [PATCH 606/987] doc: add contributing file --- CONTRIBUTING | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 CONTRIBUTING diff --git a/CONTRIBUTING b/CONTRIBUTING new file mode 100644 index 0000000..2db2a0c --- /dev/null +++ b/CONTRIBUTING @@ -0,0 +1,26 @@ +Git message guidelines +---------------------- + + 1. Don't use uppercase in the beggining of your subject line (the + first line of the commit message) + + 2. Prepend the subsystem, package or the app to your subject in + lowercase separated by a colon (example "nbody: simplify the + granularity experiment") + + 3. Use the imperative mood in the subject line (use "add X", not + "added X" nor "adding X"). A properly formed Git commit subject + line (without the prefix) should always be able to complete the + following sentence: + + "If applied, this commit will " + + 4. Limit the subject line to 50 characters and keep it simple + + 5. Separate subject from body with a blank line + + 6. Do not end the subject line with a period + + 7. Wrap the body at 72 characters + + 8. Use the body to explain the details From cb482fa3eacaebe68eff11112ac235a764d898a8 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 17 Mar 2021 20:12:27 +0100 Subject: [PATCH 607/987] heat: remove perf from the ctf experiment As we would be extracting perf stats from the trace processing steps. --- garlic/exp/index.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/garlic/exp/index.nix b/garlic/exp/index.nix index 5645c62..c930385 100644 --- a/garlic/exp/index.nix +++ b/garlic/exp/index.nix @@ -66,7 +66,7 @@ heat = rec { granul = callPackage ./heat/granul.nix { }; cache = granul.override { enablePerf = true; }; - ctf = cache.override { enableCTF = true; }; + ctf = granul.override { enableCTF = true; }; }; bigsort = rec { From d68ce914babdf0a00b24f3e1a0b23f90defb4523 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 17 Mar 2021 20:13:49 +0100 Subject: [PATCH 608/987] heat: use cut to partition the trace The awk script doesn't take in consideration the events close to the cut points, which are significative with low parallelism. --- garlic/exp/heat/granul.nix | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/garlic/exp/heat/granul.nix b/garlic/exp/heat/granul.nix index 6fab7b6..70bcd31 100644 --- a/garlic/exp/heat/granul.nix +++ b/garlic/exp/heat/granul.nix @@ -15,12 +15,12 @@ with garlicTools; let # Initial variable configuration varConf = with bsc; { - #cbs = range2 32 4096; - #rbs = range2 32 4096; - cbs = [ 64 256 1024 4096 ]; - rbs = [ 32 128 512 1024 ]; + cbs = range2 32 4096; + rbs = range2 32 4096; + #cbs = [ 64 256 1024 4096 ]; + #rbs = [ 32 128 512 1024 ]; #cbs = [ 4096 ]; - #rbs = [ 32 ]; + #rbs = [ 512 ]; }; machineConfig = targetMachine.config; @@ -94,23 +94,23 @@ let ${bsc.cn6}/bin/cn6 -s $tracedir - awk -F: "NR==1 {print} \$6 >= $begin && \$6 <= $end" $tracedir/prv/trace.prv |\ - ${bsc.cn6}/bin/dur 6400025 0 |\ + ${bsc.cn6}/bin/cut $begin $end \ + < $tracedir/prv/trace.prv \ + > $tracedir/prv/trace-cut.prv + + ${bsc.cn6}/bin/dur 6400025 0 < $tracedir/prv/trace-cut.prv |\ awk '{s+=$1} END {print s}' >> .garlic/time_mode_dead.csv & - awk -F: "NR==1 {print} \$6 >= $begin && \$6 <= $end" $tracedir/prv/trace.prv |\ - ${bsc.cn6}/bin/dur 6400025 1 |\ + ${bsc.cn6}/bin/dur 6400025 1 < $tracedir/prv/trace-cut.prv |\ awk '{s+=$1} END {print s}' >> .garlic/time_mode_runtime.csv & - awk -F: "NR==1 {print} \$6 >= $begin && \$6 <= $end" $tracedir/prv/trace.prv |\ - ${bsc.cn6}/bin/dur 6400025 3 |\ + ${bsc.cn6}/bin/dur 6400025 3 < $tracedir/prv/trace-cut.prv |\ awk '{s+=$1} END {print s}' >> .garlic/time_mode_task.csv & wait # Remove the traces at the end, as they are huge rm -rf $tracedir - #cp -a $tracedir .garlic/ done fi ''; From 699404bafe26902aa4115225d42c47902e5e2da9 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 18 Mar 2021 20:03:44 +0100 Subject: [PATCH 609/987] bsc: add cpuid program --- bsc/cpuid/default.nix | 21 +++++++++++++++++++++ overlay.nix | 1 + 2 files changed, 22 insertions(+) create mode 100644 bsc/cpuid/default.nix diff --git a/bsc/cpuid/default.nix b/bsc/cpuid/default.nix new file mode 100644 index 0000000..30b9edc --- /dev/null +++ b/bsc/cpuid/default.nix @@ -0,0 +1,21 @@ +{ + stdenv +, perl # For the pod2man command +}: + +stdenv.mkDerivation rec { + version = "20201006"; + pname = "cpuid"; + + buildInputs = [ perl ]; + + # Replace /usr install directory for $out + postPatch = '' + sed -i "s@/usr@$out@g" Makefile + ''; + + src = builtins.fetchTarball { + url = "http://www.etallen.com/cpuid/${pname}-${version}.src.tar.gz"; + sha256 = "04qhs938gs1kjxpsrnfy6lbsircsprfyh4db62s5cf83a1nrwn9w"; + }; +} diff --git a/overlay.nix b/overlay.nix index 8e4b01a..75c1881 100644 --- a/overlay.nix +++ b/overlay.nix @@ -197,6 +197,7 @@ let dummy = callPackage ./bsc/dummy/default.nix { }; mpptest = callPackage ./bsc/mpptest/default.nix { }; + cpuid = callPackage ./bsc/cpuid/default.nix { }; # ================================================================= # Garlic benchmark From f8122f3c8b1c8ca86b446ee9a721e7c5a56251f7 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 18 Mar 2021 20:06:53 +0100 Subject: [PATCH 610/987] heat: use the hcut tool to limit the cpus --- garlic/exp/heat/granul.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/garlic/exp/heat/granul.nix b/garlic/exp/heat/granul.nix index 70bcd31..dbf3147 100644 --- a/garlic/exp/heat/granul.nix +++ b/garlic/exp/heat/granul.nix @@ -94,8 +94,8 @@ let ${bsc.cn6}/bin/cn6 -s $tracedir - ${bsc.cn6}/bin/cut $begin $end \ - < $tracedir/prv/trace.prv \ + ${bsc.cn6}/bin/cut $begin $end < $tracedir/prv/trace.prv |\ + ${bsc.cn6}/bin/hcut 1 ${toString conf.cpusPerTask} \ > $tracedir/prv/trace-cut.prv ${bsc.cn6}/bin/dur 6400025 0 < $tracedir/prv/trace-cut.prv |\ From 0b7e92b6f99271a44b6b39876815db1f4558579e Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 18 Mar 2021 20:08:24 +0100 Subject: [PATCH 611/987] heat: add bar plot with time distribution --- garlic/fig/heat/mode.R | 48 ++++++++++++++++++++++++++++++++++++++---- 1 file changed, 44 insertions(+), 4 deletions(-) diff --git a/garlic/fig/heat/mode.R b/garlic/fig/heat/mode.R index 66bde82..8e7e3ac 100644 --- a/garlic/fig/heat/mode.R +++ b/garlic/fig/heat/mode.R @@ -3,6 +3,7 @@ library(dplyr) library(scales) library(jsonlite) library(viridis) +library(tidyr) args=commandArgs(trailingOnly=TRUE) @@ -19,6 +20,7 @@ df = select(dataset, config.cbs, config.rbs, ctf_mode.runtime, ctf_mode.task, ctf_mode.dead, + config.cpusPerTask, time) %>% rename( cbs=config.cbs, @@ -26,6 +28,7 @@ df = select(dataset, config.cbs, config.rbs, runtime=ctf_mode.runtime, task=ctf_mode.task, dead=ctf_mode.dead, + cpusPerTask=config.cpusPerTask, ) df$cbs = as.factor(df$cbs) @@ -33,16 +36,16 @@ df$rbs = as.factor(df$rbs) # Normalize the time by the median df = df %>% - mutate(runtime = runtime * 1e-9) %>% - mutate(dead = dead * 1e-9) %>% - mutate(task = task * 1e-9) %>% + mutate(runtime = runtime * 1e-9 / cpusPerTask) %>% + mutate(dead = dead * 1e-9 / cpusPerTask) %>% + mutate(task = task * 1e-9 / cpusPerTask) %>% group_by(cbs, rbs) %>% mutate(median.time = median(time)) %>% mutate(log.median.time = log(median.time)) %>% mutate(median.dead = median(dead)) %>% mutate(median.runtime = median(runtime)) %>% mutate(median.task = median(task)) %>% - ungroup()# %>% + ungroup() #%>% print(df) @@ -79,3 +82,40 @@ df_filtered = filter(df, between(median.time, heatmap_plot(df, "median.time", "execution time (seconds)") heatmap_plot(df, "log.median.time", "execution time") + +df_square = filter(df, cbs == rbs) %>% + gather(key = time.from, value = acc.time, + c("median.dead", "median.runtime", "median.task")) + +# Colors similar to Paraver +colors <- c("median.dead" = "gray", + "median.runtime" = "blue", + "median.task" = "red") + +p = ggplot(df_square, aes(x=cbs, y=acc.time)) + + geom_area(aes(fill=time.from, group=time.from)) + + scale_fill_manual(values = colors) + + geom_point(aes(y=median.time, color="black")) + + geom_line(aes(y=median.time, group=0, color="black")) + + theme_bw() + + theme(legend.position=c(0.5, 0.7)) + + scale_color_identity(breaks = c("black"), + labels = c("Total time"), guide = "legend") + + labs(x="Blocksize (side)", y="Time (s)", + fill="Estimated", color="Direct measurement", + title="Heat granularity: time distribution", subtitle=input_file) + +ggsave("area.time.png", plot=p, width=6, height=6, dpi=300) +ggsave("area.time.pdf", plot=p, width=6, height=6, dpi=300) + +p = ggplot(df_square, aes(x=cbs, y=acc.time)) + + geom_col(aes(fill=time.from, group=time.from)) + + scale_fill_manual(values = colors) + + theme_bw() + + theme(legend.position=c(0.5, 0.7)) + + labs(x="Blocksize (side)", y="Time (s)", + fill="Estimated", color="Direct measurement", + title="Heat granularity: time distribution", subtitle=input_file) + +ggsave("col.time.png", plot=p, width=6, height=6, dpi=300) +ggsave("col.time.pdf", plot=p, width=6, height=6, dpi=300) From 3566cf0152c256a8a2152cc531691c5de9ff1246 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 6 Apr 2021 11:14:30 +0200 Subject: [PATCH 612/987] develop: add paraver package --- garlic/index.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/garlic/index.nix b/garlic/index.nix index e55fb38..b73c86d 100644 --- a/garlic/index.nix +++ b/garlic/index.nix @@ -14,7 +14,7 @@ # Add more nixpkgs packages here... ]; bscPackages = with bsc; [ - slurm clangOmpss2 icc mcxx perf tampi impi vtk + slurm clangOmpss2 icc mcxx perf tampi impi vtk paraver # Add more bsc packages here... ]; packages = commonPackages ++ bscPackages; From d1c32869c155f388dff844ed5ef4a96e7f2bc1bc Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 6 Apr 2021 18:38:15 +0200 Subject: [PATCH 613/987] heat: split granularity with extended mode The HWC version is not yet complete. --- garlic/exp/heat/granul.nix | 116 +++++++++++++++++++++++-------------- 1 file changed, 72 insertions(+), 44 deletions(-) diff --git a/garlic/exp/heat/granul.nix b/garlic/exp/heat/granul.nix index dbf3147..5d4d01e 100644 --- a/garlic/exp/heat/granul.nix +++ b/garlic/exp/heat/granul.nix @@ -5,10 +5,16 @@ , targetMachine , stages , garlicTools +, writeText , enablePerf ? false , enableCTF ? false +, enableHWC ? false +, enableExtended ? false }: +# TODO: Finish HWC first +assert (enableHWC == false); + with stdenv.lib; with garlicTools; @@ -17,10 +23,6 @@ let varConf = with bsc; { cbs = range2 32 4096; rbs = range2 32 4096; - #cbs = [ 64 256 1024 4096 ]; - #rbs = [ 32 128 512 1024 ]; - #cbs = [ 4096 ]; - #rbs = [ 512 ]; }; machineConfig = targetMachine.config; @@ -38,12 +40,11 @@ let timesteps = 10; cols = 1024 * 16; # Columns rows = 1024 * 16; # Rows - cbs = c.cbs; - rbs = c.rbs; + inherit (c) cbs rbs; gitBranch = "garlic/tampi+isend+oss+task"; # Repeat the execution of each unit 30 times - loops = 1; + loops = 10; # Resources qos = "debug"; @@ -55,10 +56,20 @@ let jobName = unitName; }; + filterConfigs = c: let + # Too small sizes lead to huge overheads + goodSize = (c.cbs * c.rbs >= 1024); + # When the extended units are not enabled, we only select those in + # the diagonal. + extended = if (enableExtended) then true + else c.cbs == c.rbs; + in + goodSize && extended; + # Compute the array of configurations - configs = stdexp.buildConfigs { + configs = filter (filterConfigs) (stdexp.buildConfigs { inherit varConf genConf; - }; + }); perf = {nextStage, conf, ...}: stages.perf { inherit nextStage; @@ -66,54 +77,71 @@ let "-e cycles,instructions,cache-references,cache-misses"; }; - ctf = {nextStage, conf, ...}: with conf; stages.exec { + ctf = {nextStage, conf, ...}: let + # Create the nanos6 configuration file + nanos6ConfigFile = writeText "nanos6.toml" '' + version.instrument = "ctf" + turbo.enabled = false + instrument.ctf.converter.enabled = false + '' + optionalString (enableHWC) '' + hardware_counters.papi.enabled = true + hardware_counters.papi.counters = [ + "PAPI_TOT_INS", "PAPI_TOT_CYC", + "PAPI_L1_TCM", "PAPI_L2_TCM", "PAPI_L3_TCM" + ] + ''; + + in stages.exec { inherit nextStage; + + # And use it env = '' - export NANOS6_CONFIG_OVERRIDE="version.instrument=ctf,\ - instrument.ctf.converter.enabled=false" + export NANOS6_CONFIG=${nanos6ConfigFile} ''; - # Only one process converts the trace, otherwise use: - # if [ $SLURM_PROCID == 0 ]; then - # ... - # fi - post = '' - if [ $SLURM_PROCID == 0 ]; then - sleep 2 - for tracedir in trace_*; do - offset=$(grep 'offset =' $tracedir/ctf/ust/uid/1000/64-bit/metadata | \ - grep -o '[0-9]*') - echo "offset = $offset" - start_time=$(awk '/^start_time / {print $2}' stdout.log) - end_time=$(awk '/^end_time / {print $2}' stdout.log) + # FIXME: We should run a hook *after* srun has ended, so we can + # execute it in one process only (not in N ranks). This hack works + # with one process only. Or be able to compute the name of the trace + # directory so we can begin the conversion in parallel + post = assert (conf.nodes * conf.ntasksPerNode == 1); '' + tracedir=$(ls -d trace_* | head -1) + echo "using tracedir=$tracedir" - begin=$(awk "BEGIN{print $start_time*1e9 - $offset}") - end=$(awk "BEGIN{print $end_time*1e9 - $offset}") + offset=$(grep 'offset =' $tracedir/ctf/ust/uid/1000/64-bit/metadata | \ + grep -o '[0-9]*') + echo "offset = $offset" - echo "only events between $begin and $end" + start_time=$(awk '/^start_time / {print $2}' stdout.log) + end_time=$(awk '/^end_time / {print $2}' stdout.log) - ${bsc.cn6}/bin/cn6 -s $tracedir + begin=$(awk "BEGIN{print $start_time*1e9 - $offset}") + end=$(awk "BEGIN{print $end_time*1e9 - $offset}") - ${bsc.cn6}/bin/cut $begin $end < $tracedir/prv/trace.prv |\ - ${bsc.cn6}/bin/hcut 1 ${toString conf.cpusPerTask} \ - > $tracedir/prv/trace-cut.prv + echo "only events between $begin and $end" - ${bsc.cn6}/bin/dur 6400025 0 < $tracedir/prv/trace-cut.prv |\ - awk '{s+=$1} END {print s}' >> .garlic/time_mode_dead.csv & + ${bsc.cn6}/bin/cn6 -s $tracedir - ${bsc.cn6}/bin/dur 6400025 1 < $tracedir/prv/trace-cut.prv |\ - awk '{s+=$1} END {print s}' >> .garlic/time_mode_runtime.csv & + ${bsc.cn6}/bin/cut $begin $end < $tracedir/prv/trace.prv |\ + ${bsc.cn6}/bin/hcut 1 ${toString conf.cpusPerTask} \ + > $tracedir/prv/trace-cut.prv - ${bsc.cn6}/bin/dur 6400025 3 < $tracedir/prv/trace-cut.prv |\ - awk '{s+=$1} END {print s}' >> .garlic/time_mode_task.csv & + ${bsc.cn6}/bin/dur 6400025 0 < $tracedir/prv/trace-cut.prv |\ + awk '{s+=$1} END {print s}' >> .garlic/time_mode_dead.csv & - wait + ${bsc.cn6}/bin/dur 6400025 1 < $tracedir/prv/trace-cut.prv |\ + awk '{s+=$1} END {print s}' >> .garlic/time_mode_runtime.csv & - # Remove the traces at the end, as they are huge - rm -rf $tracedir - done - fi - ''; + ${bsc.cn6}/bin/dur 6400025 3 < $tracedir/prv/trace-cut.prv |\ + awk '{s+=$1} END {print s}' >> .garlic/time_mode_task.csv & + + wait + + # Remove the traces at the end, as they are huge + rm -rf $tracedir + ''; + # TODO: To enable HWC we need to first add a taskwait before the + # first get_time() measurement, otherwise we get the HWC of the + # main task, which will be huge. }; exec = {nextStage, conf, ...}: stages.exec { From 63aa07dad518235894014367e4fdd6115550d749 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 6 Apr 2021 18:40:19 +0200 Subject: [PATCH 614/987] heat: update granularity plot with modern ggplot --- garlic/fig/heat/granul.R | 151 +++++++++++++-------------------------- 1 file changed, 49 insertions(+), 102 deletions(-) diff --git a/garlic/fig/heat/granul.R b/garlic/fig/heat/granul.R index d3dc5d7..fb72e00 100644 --- a/garlic/fig/heat/granul.R +++ b/garlic/fig/heat/granul.R @@ -1,120 +1,67 @@ library(ggplot2) -library(dplyr) +library(dplyr, warn.conflicts = FALSE) library(scales) library(jsonlite) +library(viridis, warn.conflicts = FALSE) +library(stringr) -args=commandArgs(trailingOnly=TRUE) +args = commandArgs(trailingOnly=TRUE) -# Read the timetable from args[1] -input_file = "input.json" -if (length(args)>0) { input_file = args[1] } +# Set the input dataset if given in argv[1], or use "input" as default +if (length(args)>0) { input_file = args[1] } else { input_file = "input" } -# Load the dataset in NDJSON format -dataset = jsonlite::stream_in(file(input_file)) %>% - jsonlite::flatten() +df = jsonlite::stream_in(file(input_file), verbose=FALSE) %>% + jsonlite::flatten() %>% -# We only need the nblocks and time -df = select(dataset, config.cbs, config.rbs, time) %>% - rename(cbs=config.cbs, rbs=config.rbs) + select(unit, + config.cbs, + config.rbs, + time, + total_time) %>% -df$cbs = as.factor(df$cbs) -df$rbs = as.factor(df$rbs) + rename(cbs=config.cbs, + rbs=config.rbs) %>% -# Normalize the time by the median -df=group_by(df, cbs, rbs) %>% - mutate(mtime = median(time)) %>% - mutate(tnorm = time / mtime - 1) %>% - mutate(logmtime = log(mtime)) %>% - ungroup() %>% - filter(between(mtime, mean(time) - (1 * sd(time)), - mean(time) + (1 * sd(time)))) + # Convert to factors + mutate(cbs = as.factor(cbs)) %>% + mutate(rbs = as.factor(rbs)) %>% + mutate(unit = as.factor(unit)) %>% -ppi=300 -h=5 -w=5 + # Compute median times + group_by(unit) %>% + mutate(median.time = median(time)) %>% + mutate(normalized.time = time / median.time - 1) %>% + mutate(log.median.time = log(median.time)) %>% + ungroup() -png("box.png", width=w*ppi, height=h*ppi, res=ppi) -# -# -# -# Create the plot with the normalized time vs nblocks -p = ggplot(data=df, aes(x=cbs, y=tnorm)) + +dpi = 300 +h = 6 +w = 6 - # Labels - labs(x="cbs", y="Normalized time", - title=sprintf("Heat normalized time"), - subtitle=input_file) + +# --------------------------------------------------------------------- - # Center the title - #theme(plot.title = element_text(hjust = 0.5)) + +p = ggplot(df, aes(x=cbs, y=normalized.time)) + + geom_boxplot() + + geom_hline(yintercept=c(-0.01, 0.01), linetype="dashed", color="red") + + theme_bw() + + labs(y="Normalized time", + title="Heat granularity: normalized time", + subtitle=input_file) + + theme(plot.subtitle=element_text(size=8)) - # Black and white mode (useful for printing) - #theme_bw() + +ggsave("normalized.time.png", plot=p, width=w, height=h, dpi=dpi) +ggsave("normalized.time.pdf", plot=p, width=w, height=h, dpi=dpi) - # Add the maximum allowed error lines - geom_hline(yintercept=c(-0.01, 0.01), - linetype="dashed", color="red") + +# --------------------------------------------------------------------- - # Draw boxplots - geom_boxplot() + +p = ggplot(df, aes(x=cbs, y=time)) + + geom_point(shape=21, size=3) + + geom_line(aes(y=median.time, group=0)) + + theme_bw() + + labs(y="Time (s)", title="Heat granularity: time", + subtitle=input_file) + + theme(plot.subtitle=element_text(size=8)) - #scale_y_continuous(breaks = scales::pretty_breaks(n = 10)) + - - theme_bw() + - - theme(plot.subtitle=element_text(size=8)) + - - theme(legend.position = c(0.85, 0.85)) #+ - - - - -# Render the plot -print(p) - -## Save the png image -dev.off() -# -png("scatter.png", width=w*ppi, height=h*ppi, res=ppi) -# -## Create the plot with the normalized time vs nblocks -p = ggplot(df, aes(x=cbs, y=time, linetype=rbs, group=rbs)) + - - labs(x="cbs", y="Time (s)", - title=sprintf("Heat granularity"), - subtitle=input_file) + - theme_bw() + - theme(plot.subtitle=element_text(size=8)) + - theme(legend.position = c(0.5, 0.88)) + - - geom_point(shape=21, size=3) + - geom_line(aes(y=mtime)) + - #scale_x_continuous(trans=log2_trans()) + - scale_y_continuous(trans=log2_trans()) - -# Render the plot -print(p) - -# Save the png image -dev.off() - - -png("heatmap.png", width=w*ppi, height=h*ppi, res=ppi) -# -## Create the plot with the normalized time vs nblocks -p = ggplot(df, aes(x=cbs, y=rbs, fill=logmtime)) + - geom_raster() + - scale_fill_gradient(high="black", low="white") + - coord_fixed() + - theme_bw() + - theme(plot.subtitle=element_text(size=8)) + - labs(x="cbs", y="rbs", - title=sprintf("Heat granularity"), - subtitle=input_file) - -# Render the plot -print(p) - -# Save the png image -dev.off() +ggsave("time.png", plot=p, width=w, height=h, dpi=dpi) +ggsave("time.pdf", plot=p, width=w, height=h, dpi=dpi) From 312656ce5460b7ddc087f5c135879b21e80849a0 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 6 Apr 2021 18:42:49 +0200 Subject: [PATCH 615/987] heat: rename granul -> granularity experiment --- garlic/exp/heat/{granul.nix => granularity.nix} | 0 garlic/exp/index.nix | 6 +++--- garlic/fig/heat/{granul.R => granularity.R} | 0 garlic/fig/index.nix | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) rename garlic/exp/heat/{granul.nix => granularity.nix} (100%) rename garlic/fig/heat/{granul.R => granularity.R} (100%) diff --git a/garlic/exp/heat/granul.nix b/garlic/exp/heat/granularity.nix similarity index 100% rename from garlic/exp/heat/granul.nix rename to garlic/exp/heat/granularity.nix diff --git a/garlic/exp/index.nix b/garlic/exp/index.nix index c930385..3a007fa 100644 --- a/garlic/exp/index.nix +++ b/garlic/exp/index.nix @@ -64,9 +64,9 @@ }; heat = rec { - granul = callPackage ./heat/granul.nix { }; - cache = granul.override { enablePerf = true; }; - ctf = granul.override { enableCTF = true; }; + granularity = callPackage ./heat/granularity.nix { }; + cache = granularity.override { enablePerf = true; }; + ctf = granularity.override { enableCTF = true; }; }; bigsort = rec { diff --git a/garlic/fig/heat/granul.R b/garlic/fig/heat/granularity.R similarity index 100% rename from garlic/fig/heat/granul.R rename to garlic/fig/heat/granularity.R diff --git a/garlic/fig/index.nix b/garlic/fig/index.nix index 81244d0..c36f0b4 100644 --- a/garlic/fig/index.nix +++ b/garlic/fig/index.nix @@ -47,7 +47,7 @@ in }; heat = with exp.heat; { - granul = stdPlot ./heat/granul.R [ granul ]; + granularity = stdPlot ./heat/granularity.R [ granularity ]; cache = customPlot ./heat/cache.R (ds.perf.stat cache.result); ctf = customPlot ./heat/mode.R (ds.ctf.mode ctf.result); }; From 26ad3e49f7f1dd2e57af94e2fd3242882130b8dd Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 30 Oct 2020 15:21:23 +0100 Subject: [PATCH 616/987] fwi: add gitBranch and copy params --- garlic/apps/fwi/default.nix | 43 ++++++++++++++++++++++--------------- 1 file changed, 26 insertions(+), 17 deletions(-) diff --git a/garlic/apps/fwi/default.nix b/garlic/apps/fwi/default.nix index 594e73e..96c2691 100644 --- a/garlic/apps/fwi/default.nix +++ b/garlic/apps/fwi/default.nix @@ -1,30 +1,32 @@ { stdenv -, nanos6 -, mpi -, tampi -, mcxx -, icc +, mpi ? null +, tampi ? null +, mcxx ? null +, cc +, gitBranch }: +with stdenv.lib; + +assert !(tampi != null && mcxx == null); + stdenv.mkDerivation rec { name = "fwi"; - variant = "oss+task"; src = builtins.fetchGit { url = "https://gitlab.com/srodrb/BSC-FWI.git"; - ref = "${variant}"; + ref = "${gitBranch}"; }; enableParallelBuilding = true; buildInputs = [ - nanos6 - mpi - icc - tampi - mcxx - ]; + cc + ] + ++ optional (mpi != null) mpi + ++ optional (tampi != null) tampi + ++ optional (mcxx != null) mcxx; # FIXME: This is an ugly hack. # When using _GNU_SOURCE or any other definition used in features.h, we need @@ -45,15 +47,22 @@ stdenv.mkDerivation rec { ''; makeFlags = [ - "NZF=108" - "NXF=108" - "NYF=208" - "PRECISION=float" + "CC=${cc.cc.CC}" ]; + postBuild = '' + make input + ''; + + #FIXME split the input in another derivation installPhase = '' mkdir -p $out/bin cp fwi $out/bin cp ModelGenerator $out/bin + mv InputModels $out/bin + mkdir -p $out/etc/fwi + cp SetupParams/{fwi_frequencies.txt,fwi_params.txt} $out/etc/fwi ''; + + programPath = "/bin/fwi"; } From f10f8472acf888d506b009490f479bfae7ca325f Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 30 Oct 2020 15:58:03 +0100 Subject: [PATCH 617/987] fwi: add seq test experiment --- garlic/exp/fwi/test.nix | 66 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 garlic/exp/fwi/test.nix diff --git a/garlic/exp/fwi/test.nix b/garlic/exp/fwi/test.nix new file mode 100644 index 0000000..8fe6cb8 --- /dev/null +++ b/garlic/exp/fwi/test.nix @@ -0,0 +1,66 @@ +{ + stdenv +, stdexp +, bsc +, targetMachine +, stages +}: + +with stdenv.lib; + +let + # Initial variable configuration + varConf = { + }; + + # Generate the complete configuration for each unit + genConf = with bsc; c: targetMachine.config // rec { + # Options for creams + cc = icc; + gitBranch = "seq"; + + # Repeat the execution of each unit 30 times + loops = 1; + + # Resources + qos = "debug"; + nodes = 1; + time = "02:00:00"; + ntasksPerNode = 1; + cpuBind = "rank,verbose"; + jobName = "fwi-${gitBranch}"; + }; + + # Compute the array of configurations + configs = stdexp.buildConfigs { + inherit varConf genConf; + }; + + # Custom stage to copy the FWI input + copyInput = {nextStage, conf, ...}: + let + input = bsc.garlic.apps.fwi; + in + stages.exec { + inherit nextStage; + env = '' + cp -r ${input}/bin/InputModels . + chmod +w -R . + ''; + argv = [ + "${input}/etc/fwi/fwi_params.txt" + "${input}/etc/fwi/fwi_frequencies.txt" + ]; + }; + + # FWI program + program = {nextStage, conf, ...}: with conf; + bsc.garlic.apps.fwi.override { + inherit cc gitBranch; + }; + + pipeline = stdexp.stdPipeline ++ [ copyInput program ]; + +in + + stdexp.genExperiment { inherit configs pipeline; } From 9bea3cc26402ef4377c792a5033223837b98e449 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 30 Oct 2020 16:12:30 +0100 Subject: [PATCH 618/987] fwi: add oss experiment --- garlic/exp/fwi/oss.nix | 69 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 garlic/exp/fwi/oss.nix diff --git a/garlic/exp/fwi/oss.nix b/garlic/exp/fwi/oss.nix new file mode 100644 index 0000000..63a4752 --- /dev/null +++ b/garlic/exp/fwi/oss.nix @@ -0,0 +1,69 @@ +{ + stdenv +, stdexp +, bsc +, targetMachine +, stages +}: + +with stdenv.lib; + +let + # Initial variable configuration + varConf = { + blocksize = [ 1 2 4 8 16 ]; + }; + + # Generate the complete configuration for each unit + genConf = with bsc; c: targetMachine.config // rec { + # Options for creams + cc = icc; + gitBranch = "oss"; + inherit (c) blocksize; + + # Repeat the execution of each unit 30 times + loops = 30; + + # Resources + qos = "debug"; + nodes = 1; + time = "02:00:00"; + ntasksPerNode = 1; + cpuBind = "sockets,verbose"; + jobName = "fwi-${gitBranch}"; + }; + + # Compute the array of configurations + configs = stdexp.buildConfigs { + inherit varConf genConf; + }; + + # Custom stage to copy the FWI input + copyInput = {nextStage, conf, ...}: + let + input = bsc.garlic.apps.fwi; + in + stages.exec { + inherit nextStage; + env = '' + cp -r ${input}/bin/InputModels . + chmod +w -R . + ''; + argv = [ + "${input}/etc/fwi/fwi_params.txt" + "${input}/etc/fwi/fwi_frequencies.txt" + "${toString conf.blocksize}" + ]; + }; + + # FWI program + program = {nextStage, conf, ...}: with conf; + bsc.garlic.apps.fwi.override { + inherit cc gitBranch; + }; + + pipeline = stdexp.stdPipeline ++ [ copyInput program ]; + +in + + stdexp.genExperiment { inherit configs pipeline; } From bfbbc294ae6c476b73b347105483bae4b921f9db Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 29 Jan 2021 15:33:12 +0100 Subject: [PATCH 619/987] fwi: split into input and solver All branches compile with several hacks. --- garlic/apps/fwi/default.nix | 38 +++++++++---------- garlic/apps/fwi/input.nix | 40 ++++++++++++++++++++ garlic/apps/index.nix | 7 +++- garlic/exp/fwi/test.nix | 75 ++++++++++++++++++++++--------------- garlic/exp/index.nix | 4 ++ 5 files changed, 114 insertions(+), 50 deletions(-) create mode 100644 garlic/apps/fwi/input.nix diff --git a/garlic/apps/fwi/default.nix b/garlic/apps/fwi/default.nix index 96c2691..94d1bdc 100644 --- a/garlic/apps/fwi/default.nix +++ b/garlic/apps/fwi/default.nix @@ -4,7 +4,8 @@ , tampi ? null , mcxx ? null , cc -, gitBranch +, gitBranch ? "garlic/tampi+send+oss+task" +, fwiInput }: with stdenv.lib; @@ -12,6 +13,7 @@ with stdenv.lib; assert !(tampi != null && mcxx == null); stdenv.mkDerivation rec { + inherit gitBranch; name = "fwi"; src = builtins.fetchGit { @@ -19,14 +21,20 @@ stdenv.mkDerivation rec { ref = "${gitBranch}"; }; - enableParallelBuilding = true; + enableParallelBuilding = false; buildInputs = [ cc ] - ++ optional (mpi != null) mpi + ++ optional (mpi != null) mpi ++ optional (tampi != null) tampi - ++ optional (mcxx != null) mcxx; + ++ optional (mcxx != null) mcxx; + + # FIXME: Correct this on the Makefile so we can just type "make fwi" + # FIXME: Allow multiple MPI implementations + postPatch = '' + sed -i 's/= OPENMPI$/= INTEL/g' Makefile + ''; # FIXME: This is an ugly hack. # When using _GNU_SOURCE or any other definition used in features.h, we need @@ -35,33 +43,25 @@ stdenv.mkDerivation rec { # below, reaches the command line of the preprocessing stage with gcc. preConfigure = '' export DEFINES=-D_GNU_SOURCE - export NANOS6_CONFIG_OVERRIDE=version.debug=true + + make depend + + cp ${fwiInput}/generated_model_params.h src/ ''; # We compile the ModelGenerator using gcc *only*, as otherwise it will # be compiled with nanos6, which requires access to /sys to determine # hardware capabilities. So it will fail in the nix-build environment, # as there is no /sys mounted. - preBuild = '' - make COMPILER=GNU ModelGenerator - ''; - makeFlags = [ - "CC=${cc.cc.CC}" + #"COMPILER=GNU" + #"CC=${cc.cc.CC}" + "fwi" ]; - postBuild = '' - make input - ''; - - #FIXME split the input in another derivation installPhase = '' mkdir -p $out/bin cp fwi $out/bin - cp ModelGenerator $out/bin - mv InputModels $out/bin - mkdir -p $out/etc/fwi - cp SetupParams/{fwi_frequencies.txt,fwi_params.txt} $out/etc/fwi ''; programPath = "/bin/fwi"; diff --git a/garlic/apps/fwi/input.nix b/garlic/apps/fwi/input.nix new file mode 100644 index 0000000..a71014f --- /dev/null +++ b/garlic/apps/fwi/input.nix @@ -0,0 +1,40 @@ +{ + stdenv +}: + +with stdenv.lib; + +stdenv.mkDerivation rec { + name = "fwi-header"; + + src = builtins.fetchGit { + url = "https://gitlab.com/srodrb/BSC-FWI.git"; + ref = "garlic/seq"; + }; + + enableParallelBuilding = false; + + # FIXME: This is an ugly hack. + # When using _GNU_SOURCE or any other definition used in features.h, we need + # to define them before mcc includes nanos6.h from the command line. So the + # only chance is by setting it at the command line with -D. Using the DEFINES + # below, reaches the command line of the preprocessing stage with gcc. + preConfigure = '' + export DEFINES=-D_GNU_SOURCE + ''; + + # We compile the ModelGenerator using gcc *only*, as otherwise it will + # be compiled with nanos6, which requires access to /sys to determine + # hardware capabilities. So it will fail in the nix-build environment, + # as there is no /sys mounted. + # Also, we need to compile it with the builder platform as target, as is going + # to be executed during the build to generate the src/generated_model_params.h + # header. + makeFlags = [ "COMPILER=GNU" "params" "input" ]; + + installPhase = '' + mkdir -p $out/ + cp src/generated_model_params.h $out/ + cp -r InputModels $out/ + ''; +} diff --git a/garlic/apps/index.nix b/garlic/apps/index.nix index ac2ccfd..41da295 100644 --- a/garlic/apps/index.nix +++ b/garlic/apps/index.nix @@ -53,5 +53,10 @@ hpccg = callPackage ./hpccg/default.nix { }; - fwi = callPackage ./fwi/default.nix { }; + fwi = rec { + input = callPackage ./fwi/input.nix { }; + solver = callPackage ./fwi/default.nix { + fwiInput = input; + }; + }; } diff --git a/garlic/exp/fwi/test.nix b/garlic/exp/fwi/test.nix index 8fe6cb8..26de7f4 100644 --- a/garlic/exp/fwi/test.nix +++ b/garlic/exp/fwi/test.nix @@ -11,24 +11,38 @@ with stdenv.lib; let # Initial variable configuration varConf = { + gitBranch = [ + "garlic/tampi+send+oss+task" + "garlic/mpi+send+omp+task" + "garlic/mpi+send+oss+task" + "garlic/mpi+send+seq" + "garlic/oss+task" + "garlic/omp+task" + "garlic/seq" + ]; }; + machineConfig = targetMachine.config; + # Generate the complete configuration for each unit genConf = with bsc; c: targetMachine.config // rec { - # Options for creams - cc = icc; - gitBranch = "seq"; + expName = "fwi"; + unitName = "${expName}-test"; + inherit (machineConfig) hw; - # Repeat the execution of each unit 30 times - loops = 1; + cc = icc; + gitBranch = c.gitBranch; + + # Repeat the execution of each unit several times + loops = 10; # Resources - qos = "debug"; - nodes = 1; - time = "02:00:00"; + cpusPerTask = hw.cpusPerSocket; ntasksPerNode = 1; - cpuBind = "rank,verbose"; - jobName = "fwi-${gitBranch}"; + nodes = 1; + qos = "debug"; + time = "02:00:00"; + jobName = unitName; }; # Compute the array of configurations @@ -37,29 +51,30 @@ let }; # Custom stage to copy the FWI input - copyInput = {nextStage, conf, ...}: - let - input = bsc.garlic.apps.fwi; - in - stages.exec { - inherit nextStage; - env = '' - cp -r ${input}/bin/InputModels . - chmod +w -R . - ''; - argv = [ - "${input}/etc/fwi/fwi_params.txt" - "${input}/etc/fwi/fwi_frequencies.txt" - ]; - }; + #copyInput = {nextStage, conf, ...}: + # let + # input = bsc.garlic.apps.fwi; + # in + # stages.exec { + # inherit nextStage; + # env = '' + # cp -r ${input}/bin/InputModels . + # chmod +w -R . + # ''; + # argv = [ + # "${input}/etc/fwi/fwi_params.txt" + # "${input}/etc/fwi/fwi_frequencies.txt" + # ]; + # }; + + apps = bsc.garlic.apps; # FWI program - program = {nextStage, conf, ...}: with conf; - bsc.garlic.apps.fwi.override { - inherit cc gitBranch; - }; + program = {nextStage, conf, ...}: apps.fwi.solver.override { + inherit (conf) cc gitBranch; + }; - pipeline = stdexp.stdPipeline ++ [ copyInput program ]; + pipeline = stdexp.stdPipeline ++ [ program ]; in diff --git a/garlic/exp/index.nix b/garlic/exp/index.nix index 3a007fa..2b34e4a 100644 --- a/garlic/exp/index.nix +++ b/garlic/exp/index.nix @@ -97,6 +97,10 @@ test = callPackage ./lulesh/test.nix { }; }; + fwi = { + test = callPackage ./fwi/test.nix { }; + }; + osu = rec { latency = callPackage ./osu/latency.nix { }; latencyShm = latency.override { interNode = false; }; From de175b2380a2ccaa6deed490788785e350d46172 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 4 Mar 2021 17:50:51 +0100 Subject: [PATCH 620/987] fwi: fix input name --- garlic/apps/fwi/input.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/garlic/apps/fwi/input.nix b/garlic/apps/fwi/input.nix index a71014f..a8ba92f 100644 --- a/garlic/apps/fwi/input.nix +++ b/garlic/apps/fwi/input.nix @@ -5,7 +5,7 @@ with stdenv.lib; stdenv.mkDerivation rec { - name = "fwi-header"; + name = "fwi-input"; src = builtins.fetchGit { url = "https://gitlab.com/srodrb/BSC-FWI.git"; From fa0e9f591f754aca31f140bdb05dd063555cc1d4 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 4 Mar 2021 17:51:47 +0100 Subject: [PATCH 621/987] fwi: update repo url to PM server --- garlic/apps/fwi/default.nix | 2 +- garlic/apps/fwi/input.nix | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/garlic/apps/fwi/default.nix b/garlic/apps/fwi/default.nix index 94d1bdc..013fcef 100644 --- a/garlic/apps/fwi/default.nix +++ b/garlic/apps/fwi/default.nix @@ -17,7 +17,7 @@ stdenv.mkDerivation rec { name = "fwi"; src = builtins.fetchGit { - url = "https://gitlab.com/srodrb/BSC-FWI.git"; + url = "ssh://git@bscpm03.bsc.es/garlic/apps/fwi.git"; ref = "${gitBranch}"; }; diff --git a/garlic/apps/fwi/input.nix b/garlic/apps/fwi/input.nix index a8ba92f..63073da 100644 --- a/garlic/apps/fwi/input.nix +++ b/garlic/apps/fwi/input.nix @@ -8,7 +8,7 @@ stdenv.mkDerivation rec { name = "fwi-input"; src = builtins.fetchGit { - url = "https://gitlab.com/srodrb/BSC-FWI.git"; + url = "ssh://git@bscpm03.bsc.es/garlic/apps/fwi.git"; ref = "garlic/seq"; }; From 485b9150e57a3bd43beed7f8c55017f48439140e Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 4 Mar 2021 17:53:07 +0100 Subject: [PATCH 622/987] fwi: add problem size parameters --- garlic/apps/fwi/input.nix | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/garlic/apps/fwi/input.nix b/garlic/apps/fwi/input.nix index 63073da..f591731 100644 --- a/garlic/apps/fwi/input.nix +++ b/garlic/apps/fwi/input.nix @@ -1,8 +1,12 @@ { stdenv +, nz ? 200 +, nx ? 200 +, ny ? 500 }: with stdenv.lib; +with builtins; stdenv.mkDerivation rec { name = "fwi-input"; @@ -14,6 +18,13 @@ stdenv.mkDerivation rec { enableParallelBuilding = false; + # Set the input size with the weird order (nz,nx,ny). + postPatch = '' + sed -i 1c${toString nz} SetupParams/fwi_params.txt + sed -i 2c${toString nx} SetupParams/fwi_params.txt + sed -i 3c${toString ny} SetupParams/fwi_params.txt + ''; + # FIXME: This is an ugly hack. # When using _GNU_SOURCE or any other definition used in features.h, we need # to define them before mcc includes nanos6.h from the command line. So the From 3de7b5a0b6d93f64c1dfe26da38b96275144df90 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 4 Mar 2021 18:40:27 +0100 Subject: [PATCH 623/987] fwi: save the params and frequencies files --- garlic/apps/fwi/input.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/garlic/apps/fwi/input.nix b/garlic/apps/fwi/input.nix index f591731..848759f 100644 --- a/garlic/apps/fwi/input.nix +++ b/garlic/apps/fwi/input.nix @@ -46,6 +46,8 @@ stdenv.mkDerivation rec { installPhase = '' mkdir -p $out/ cp src/generated_model_params.h $out/ + cp SetupParams/fwi_params.txt $out/ + cp SetupParams/fwi_frequencies.txt $out/ cp -r InputModels $out/ ''; } From 7a6cbd3a9e32fe88c93e514a85377c4c1e551e40 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 4 Mar 2021 18:41:24 +0100 Subject: [PATCH 624/987] fwi: update test experiment --- garlic/exp/fwi/test.nix | 57 ++++++++++++++++++++++++----------------- 1 file changed, 33 insertions(+), 24 deletions(-) diff --git a/garlic/exp/fwi/test.nix b/garlic/exp/fwi/test.nix index 26de7f4..9c42fea 100644 --- a/garlic/exp/fwi/test.nix +++ b/garlic/exp/fwi/test.nix @@ -13,13 +13,15 @@ let varConf = { gitBranch = [ "garlic/tampi+send+oss+task" - "garlic/mpi+send+omp+task" - "garlic/mpi+send+oss+task" - "garlic/mpi+send+seq" - "garlic/oss+task" - "garlic/omp+task" - "garlic/seq" +# "garlic/mpi+send+omp+task" +# "garlic/mpi+send+oss+task" +# "garlic/mpi+send+seq" +# "garlic/oss+task" +# "garlic/omp+task" +# "garlic/seq" ]; + + blocksize = [ 1 2 4 ]; }; machineConfig = targetMachine.config; @@ -31,7 +33,11 @@ let inherit (machineConfig) hw; cc = icc; - gitBranch = c.gitBranch; + inherit (c) gitBranch blocksize; + n = 500; + nx = n; + ny = n; + nz = n; # Repeat the execution of each unit several times loops = 10; @@ -50,22 +56,25 @@ let inherit varConf genConf; }; - # Custom stage to copy the FWI input - #copyInput = {nextStage, conf, ...}: - # let - # input = bsc.garlic.apps.fwi; - # in - # stages.exec { - # inherit nextStage; - # env = '' - # cp -r ${input}/bin/InputModels . - # chmod +w -R . - # ''; - # argv = [ - # "${input}/etc/fwi/fwi_params.txt" - # "${input}/etc/fwi/fwi_frequencies.txt" - # ]; - # }; + exec = {nextStage, conf, ...}: + let + input = bsc.apps.fwi.input.override { + inherit (conf) nx ny nz; + }; + in stages.exec { + inherit nextStage; + pre = '' + ln -fs ${input}/InputModels InputModels || true + ''; + argv = [ + "${input}/fwi_params.txt" + "${input}/fwi_frequencies.txt" + conf.blocksize + "-1" # Fordward steps + "-1" # Backward steps + "-1" # Write/read frequency + ]; + }; apps = bsc.garlic.apps; @@ -74,7 +83,7 @@ let inherit (conf) cc gitBranch; }; - pipeline = stdexp.stdPipeline ++ [ program ]; + pipeline = stdexp.stdPipeline ++ [ exec program ]; in From a8477b1b05b95990f04b9ec23d1fd0487a8f5f6c Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 4 Mar 2021 18:41:45 +0100 Subject: [PATCH 625/987] fwi: add test figure with the time --- garlic/fig/fwi/test.R | 46 +++++++++++++++++++++++++++++++++++++++++++ garlic/fig/index.nix | 4 ++++ 2 files changed, 50 insertions(+) create mode 100644 garlic/fig/fwi/test.R diff --git a/garlic/fig/fwi/test.R b/garlic/fig/fwi/test.R new file mode 100644 index 0000000..ca79f0d --- /dev/null +++ b/garlic/fig/fwi/test.R @@ -0,0 +1,46 @@ +library(ggplot2) +library(dplyr) +library(scales) +library(jsonlite) + +args=commandArgs(trailingOnly=TRUE) + +# Read the timetable from args[1] +input_file = "input.json" +if (length(args)>0) { input_file = args[1] } + +# Load the dataset in NDJSON format +dataset = jsonlite::stream_in(file(input_file)) %>% + jsonlite::flatten() + +# We only need the nblocks and time +df = select(dataset, config.blocksize, config.gitBranch, time) %>% + rename(blocksize=config.blocksize, gitBranch=config.gitBranch) %>% + group_by(blocksize, gitBranch) %>% + mutate(mtime = median(time)) %>% + ungroup() + +df$gitBranch = as.factor(df$gitBranch) +df$blocksize = as.factor(df$blocksize) + +ppi=300 +h=5 +w=5 + +png("time.png", width=w*ppi, height=h*ppi, res=ppi) +# +## Create the plot with the normalized time vs nblocks +p = ggplot(df, aes(x=blocksize, y=time)) + + geom_point() + + geom_line(aes(y=mtime, group=gitBranch, color=gitBranch)) + + theme_bw() + + labs(x="Blocksize", y="Time (s)", title="FWI granularity", + subtitle=input_file) + + theme(plot.subtitle=element_text(size=8)) + + theme(legend.position = c(0.5, 0.88)) + +# Render the plot +print(p) + +# Save the png image +dev.off() diff --git a/garlic/fig/index.nix b/garlic/fig/index.nix index c36f0b4..dbe73e3 100644 --- a/garlic/fig/index.nix +++ b/garlic/fig/index.nix @@ -61,6 +61,10 @@ in big.granularity = stdPlot ./creams/granularity.R [ big.granularity ]; }; + fwi = with exp.fwi; { + test = stdPlot ./fwi/test.R [ test ]; + }; + osu = with exp.osu; { latency = customPlot ./osu/latency.R (ds.osu.latency latency.result); latencyShm = customPlot ./osu/latency.R (ds.osu.latency latencyShm.result); From 11e400abb5973d203615458a692d63b6e545007a Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 4 Mar 2021 18:43:18 +0100 Subject: [PATCH 626/987] fwi: remove old experiment --- garlic/exp/fwi/oss.nix | 69 ------------------------------------------ 1 file changed, 69 deletions(-) delete mode 100644 garlic/exp/fwi/oss.nix diff --git a/garlic/exp/fwi/oss.nix b/garlic/exp/fwi/oss.nix deleted file mode 100644 index 63a4752..0000000 --- a/garlic/exp/fwi/oss.nix +++ /dev/null @@ -1,69 +0,0 @@ -{ - stdenv -, stdexp -, bsc -, targetMachine -, stages -}: - -with stdenv.lib; - -let - # Initial variable configuration - varConf = { - blocksize = [ 1 2 4 8 16 ]; - }; - - # Generate the complete configuration for each unit - genConf = with bsc; c: targetMachine.config // rec { - # Options for creams - cc = icc; - gitBranch = "oss"; - inherit (c) blocksize; - - # Repeat the execution of each unit 30 times - loops = 30; - - # Resources - qos = "debug"; - nodes = 1; - time = "02:00:00"; - ntasksPerNode = 1; - cpuBind = "sockets,verbose"; - jobName = "fwi-${gitBranch}"; - }; - - # Compute the array of configurations - configs = stdexp.buildConfigs { - inherit varConf genConf; - }; - - # Custom stage to copy the FWI input - copyInput = {nextStage, conf, ...}: - let - input = bsc.garlic.apps.fwi; - in - stages.exec { - inherit nextStage; - env = '' - cp -r ${input}/bin/InputModels . - chmod +w -R . - ''; - argv = [ - "${input}/etc/fwi/fwi_params.txt" - "${input}/etc/fwi/fwi_frequencies.txt" - "${toString conf.blocksize}" - ]; - }; - - # FWI program - program = {nextStage, conf, ...}: with conf; - bsc.garlic.apps.fwi.override { - inherit cc gitBranch; - }; - - pipeline = stdexp.stdPipeline ++ [ copyInput program ]; - -in - - stdexp.genExperiment { inherit configs pipeline; } From 1d9a5c4721458e0414587dc5f01fb6a8831add26 Mon Sep 17 00:00:00 2001 From: Aleix Roca Nonell Date: Mon, 8 Mar 2021 19:16:24 +0100 Subject: [PATCH 627/987] fwi: fix input derivation The fwiInput derivation must be the same used when compiled the fwi app as the fwi-input used in the experiment. --- garlic/exp/fwi/test.nix | 42 +++++++++++++++++++++++++++-------------- 1 file changed, 28 insertions(+), 14 deletions(-) diff --git a/garlic/exp/fwi/test.nix b/garlic/exp/fwi/test.nix index 9c42fea..371f19d 100644 --- a/garlic/exp/fwi/test.nix +++ b/garlic/exp/fwi/test.nix @@ -21,9 +21,20 @@ let # "garlic/seq" ]; - blocksize = [ 1 2 4 ]; + blocksize = [ 1 2 ]; + + n = [ + {nx=500; ny=500; nz=500;} + ]; }; +# The c value contains something like: +# { +# n = { nx=500; ny=500; nz=500; } +# blocksize = 1; +# gitBranch = "garlic/tampi+send+oss+task"; +# } + machineConfig = targetMachine.config; # Generate the complete configuration for each unit @@ -34,10 +45,18 @@ let cc = icc; inherit (c) gitBranch blocksize; + n = 500; - nx = n; - ny = n; - nz = n; + #nx = c.n.nx; + #ny = c.n.ny; + #nz = c.n.nz; + + # Same but shorter: + inherit (c.n) nx ny nz; + + fwiInput = bsc.apps.fwi.input.override { + inherit (c.n) nx ny nz; + }; # Repeat the execution of each unit several times loops = 10; @@ -56,19 +75,14 @@ let inherit varConf genConf; }; - exec = {nextStage, conf, ...}: - let - input = bsc.apps.fwi.input.override { - inherit (conf) nx ny nz; - }; - in stages.exec { + exec = {nextStage, conf, ...}: stages.exec { inherit nextStage; pre = '' - ln -fs ${input}/InputModels InputModels || true + ln -fs ${conf.fwiInput}/InputModels InputModels || true ''; argv = [ - "${input}/fwi_params.txt" - "${input}/fwi_frequencies.txt" + "${conf.fwiInput}/fwi_params.txt" + "${conf.fwiInput}/fwi_frequencies.txt" conf.blocksize "-1" # Fordward steps "-1" # Backward steps @@ -80,7 +94,7 @@ let # FWI program program = {nextStage, conf, ...}: apps.fwi.solver.override { - inherit (conf) cc gitBranch; + inherit (conf) cc gitBranch fwiInput; }; pipeline = stdexp.stdPipeline ++ [ exec program ]; From aadce016e14bbb861a21b9399a49c169d89e30e1 Mon Sep 17 00:00:00 2001 From: Aleix Roca Nonell Date: Wed, 24 Mar 2021 10:24:29 +0100 Subject: [PATCH 628/987] fwi: add granularity and data reuse experiments The data reuse experiment shows the effect of poor data locality versus task granularity. --- garlic/exp/fwi/data_reuse.nix | 135 +++++++++++++++++++++++++++++++++ garlic/exp/fwi/granularity.nix | 132 ++++++++++++++++++++++++++++++++ garlic/exp/fwi/test.nix | 46 ++++++++--- 3 files changed, 304 insertions(+), 9 deletions(-) create mode 100644 garlic/exp/fwi/data_reuse.nix create mode 100644 garlic/exp/fwi/granularity.nix diff --git a/garlic/exp/fwi/data_reuse.nix b/garlic/exp/fwi/data_reuse.nix new file mode 100644 index 0000000..623492a --- /dev/null +++ b/garlic/exp/fwi/data_reuse.nix @@ -0,0 +1,135 @@ +{ + stdenv +, stdexp +, bsc +, targetMachine +, stages +}: + +with stdenv.lib; + +let + + inherit (targetMachine) fs; + + # Initial variable configuration + varConf = { + gitBranch = [ +# "garlic/tampi+send+oss+task" +# "garlic/mpi+send+omp+task" + "garlic/mpi+send+oss+task" + "garlic/mpi+send+oss+task+noreuse" +# "garlic/mpi+send+seq" +# "garlic/oss+task" +# "garlic/omp+task" +# "garlic/seq" + ]; + + blocksize = [ 1 2 4 8 ]; + #blocksize = [ 1 2 ]; + + n = [ +# {nx=50; ny=4000; nz=50;} +# {nx=20; ny=4000; nz=20;} +# {nx=300; ny=8000; nz=300;} # half node, / +# {nx=300; ny=1000; nz=300;} # half node, / +# {nx=200; ny=1000; nz=200;} # half node, not enough tasks +# {nx=200; ny=4000; nz=200;} # --/ half node +# {nx=250; ny=2000; nz=250;} # / half node + {nx=300; ny=2000; nz=300;} # / half node +# {nx=100; ny=2000; nz=100;} # \-// half node +# {nx=150; ny=2000; nz=150;} # \-/ half node +# {nx=200; ny=64000; nz=200;} # --/ 16 nodes +# {nx=200; ny=4000; nz=200;} # --/ half node +# {nx=200; ny=8000; nz=200;} # --/ 1 node +# {nx=100; ny=8000; nz=100;} # --/ half node + ]; + }; + +# The c value contains something like: +# { +# n = { nx=500; ny=500; nz=500; } +# blocksize = 1; +# gitBranch = "garlic/tampi+send+oss+task"; +# } + + machineConfig = targetMachine.config; + + # Generate the complete configuration for each unit + genConf = with bsc; c: targetMachine.config // rec { + expName = "fwi"; + unitName = "${expName}-test"; + inherit (machineConfig) hw; + + cc = icc; + inherit (c) gitBranch blocksize; + + #nx = c.n.nx; + #ny = c.n.ny; + #nz = c.n.nz; + + # Same but shorter: + inherit (c.n) nx ny nz; + + fwiInput = bsc.apps.fwi.input.override { + inherit (c.n) nx ny nz; + }; + + # Repeat the execution of each unit several times + loops = 10; + #loops = 1; + + # Resources + cpusPerTask = hw.cpusPerSocket; + ntasksPerNode = 1; + nodes = 1; + qos = "debug"; + time = "02:00:00"; + jobName = unitName; + + # Enable permissions to write in the local storage + extraMounts = [ fs.local.temp ]; + + }; + + # Compute the array of configurations + configs = stdexp.buildConfigs { + inherit varConf genConf; + }; + + exec = {nextStage, conf, ...}: stages.exec { + inherit nextStage; + pre = '' + #CDIR=$PWD + #export NANOS6_CONFIG_OVERRIDE="version.instrument=ctf" + EXECDIR="${fs.local.temp}/out/$GARLIC_USER/$GARLIC_UNIT/$GARLIC_RUN" + mkdir -p $EXECDIR + cd $EXECDIR + ln -fs ${conf.fwiInput}/InputModels InputModels || true + ''; + argv = [ + "${conf.fwiInput}/fwi_params.txt" + "${conf.fwiInput}/fwi_frequencies.txt" + conf.blocksize + "-1" # Fordward steps + "-1" # Backward steps + "-1" # Write/read frequency + ]; + post = '' + rm -rf Results || true + #mv trace_* $CDIR + ''; + }; + + apps = bsc.garlic.apps; + + # FWI program + program = {nextStage, conf, ...}: apps.fwi.solver.override { + inherit (conf) cc gitBranch fwiInput; + }; + + pipeline = stdexp.stdPipeline ++ [ exec program ]; + +in + + stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/fwi/granularity.nix b/garlic/exp/fwi/granularity.nix new file mode 100644 index 0000000..6aa48c2 --- /dev/null +++ b/garlic/exp/fwi/granularity.nix @@ -0,0 +1,132 @@ +{ + stdenv +, stdexp +, bsc +, targetMachine +, stages +}: + +with stdenv.lib; + +let + + inherit (targetMachine) fs; + + # Initial variable configuration + varConf = { + gitBranch = [ +# "garlic/tampi+send+oss+task" +# "garlic/mpi+send+omp+task" + "garlic/mpi+send+oss+task" +# "garlic/mpi+send+seq" +# "garlic/oss+task" +# "garlic/omp+task" +# "garlic/seq" + ]; + + blocksize = [ 1 2 4 8 16 32 ]; + #blocksize = [ 1 2 4 8 ]; + + n = [ + #{nx=500; nz=500; ny=1000; ntpn=1; nn=1;} + {nx=500; nz=500; ny=2000; ntpn=2; nn=1;} + ]; + + }; + +# The c value contains something like: +# { +# n = { nx=500; ny=500; nz=500; } +# blocksize = 1; +# gitBranch = "garlic/tampi+send+oss+task"; +# } + + machineConfig = targetMachine.config; + + # Generate the complete configuration for each unit + genConf = with bsc; c: targetMachine.config // rec { + expName = "fwi"; + unitName = "${expName}-test"; + inherit (machineConfig) hw; + + cc = icc; + inherit (c) gitBranch blocksize; + + #nx = c.n.nx; + #ny = c.n.ny; + #nz = c.n.nz; + + # Same but shorter: + inherit (c.n) nx ny nz ntpn nn; + + fwiInput = bsc.apps.fwi.input.override { + inherit (c.n) nx ny nz; + }; + + # Other FWI parameters + ioFreq = -1; + + # Repeat the execution of each unit several times + loops = 10; + #loops = 1; + + # Resources + cpusPerTask = hw.cpusPerSocket; + ntasksPerNode = ntpn; + nodes = nn; + qos = "debug"; + time = "02:00:00"; + jobName = unitName; + + tracing = "no"; + + # Enable permissions to write in the local storage + extraMounts = [ fs.local.temp ]; + + }; + + # Compute the array of configurations + configs = stdexp.buildConfigs { + inherit varConf genConf; + }; + + exec = {nextStage, conf, ...}: stages.exec { + inherit nextStage; + pre = '' + CDIR=$PWD + if [[ "${conf.tracing}" == "yes" ]]; then + export NANOS6_CONFIG_OVERRIDE="version.instrument=ctf" + fi + EXECDIR="${fs.local.temp}/out/$GARLIC_USER/$GARLIC_UNIT/$GARLIC_RUN" + mkdir -p $EXECDIR + cd $EXECDIR + ln -fs ${conf.fwiInput}/InputModels InputModels || true + ''; + argv = [ + "${conf.fwiInput}/fwi_params.txt" + "${conf.fwiInput}/fwi_frequencies.txt" + conf.blocksize + "-1" # Fordward steps + "-1" # Backward steps + conf.ioFreq # Write/read frequency + ]; + post = '' + rm -rf Results || true + if [[ "${conf.tracing}" == "yes" ]]; then + mv trace_* $CDIR + fi + ''; + }; + + apps = bsc.garlic.apps; + + # FWI program + program = {nextStage, conf, ...}: apps.fwi.solver.override { + inherit (conf) cc gitBranch fwiInput; + }; + + pipeline = stdexp.stdPipeline ++ [ exec program ]; + +in + + stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/fwi/test.nix b/garlic/exp/fwi/test.nix index 371f19d..49afa8b 100644 --- a/garlic/exp/fwi/test.nix +++ b/garlic/exp/fwi/test.nix @@ -9,23 +9,29 @@ with stdenv.lib; let + + inherit (targetMachine) fs; + # Initial variable configuration varConf = { gitBranch = [ - "garlic/tampi+send+oss+task" +# "garlic/tampi+send+oss+task" # "garlic/mpi+send+omp+task" -# "garlic/mpi+send+oss+task" + "garlic/mpi+send+oss+task" # "garlic/mpi+send+seq" # "garlic/oss+task" # "garlic/omp+task" # "garlic/seq" ]; - blocksize = [ 1 2 ]; + #blocksize = [ 1 2 4 8 16 32 ]; + blocksize = [ 1 2 4 8 ]; n = [ - {nx=500; ny=500; nz=500;} + #{nx=500; nz=500; ny=1000; ntpn=1; nn=1;} + {nx=500; nz=500; ny=2000; ntpn=2; nn=1;} ]; + }; # The c value contains something like: @@ -46,28 +52,37 @@ let cc = icc; inherit (c) gitBranch blocksize; - n = 500; #nx = c.n.nx; #ny = c.n.ny; #nz = c.n.nz; # Same but shorter: - inherit (c.n) nx ny nz; + inherit (c.n) nx ny nz ntpn nn; fwiInput = bsc.apps.fwi.input.override { inherit (c.n) nx ny nz; }; + # Other FWI parameters + ioFreq = -1; + # Repeat the execution of each unit several times loops = 10; + #loops = 1; # Resources cpusPerTask = hw.cpusPerSocket; - ntasksPerNode = 1; - nodes = 1; + ntasksPerNode = ntpn; + nodes = nn; qos = "debug"; time = "02:00:00"; jobName = unitName; + + tracing = "no"; + + # Enable permissions to write in the local storage + extraMounts = [ fs.local.temp ]; + }; # Compute the array of configurations @@ -78,6 +93,13 @@ let exec = {nextStage, conf, ...}: stages.exec { inherit nextStage; pre = '' + CDIR=$PWD + if [[ "${conf.tracing}" == "yes" ]]; then + export NANOS6_CONFIG_OVERRIDE="version.instrument=ctf" + fi + EXECDIR="${fs.local.temp}/out/$GARLIC_USER/$GARLIC_UNIT/$GARLIC_RUN" + mkdir -p $EXECDIR + cd $EXECDIR ln -fs ${conf.fwiInput}/InputModels InputModels || true ''; argv = [ @@ -86,8 +108,14 @@ let conf.blocksize "-1" # Fordward steps "-1" # Backward steps - "-1" # Write/read frequency + conf.ioFreq # Write/read frequency ]; + post = '' + rm -rf Results || true + if [[ "${conf.tracing}" == "yes" ]]; then + mv trace_* $CDIR + fi + ''; }; apps = bsc.garlic.apps; From 3ef4a505d39387768d2f4c00bbab7822bc93008f Mon Sep 17 00:00:00 2001 From: Aleix Roca Nonell Date: Fri, 26 Mar 2021 17:34:34 +0100 Subject: [PATCH 629/987] fwi: add strong scalability tests --- garlic/exp/fwi/granularity.nix | 6 +- garlic/exp/fwi/memory_affinity.nix | 138 +++++++++++++++++++++ garlic/exp/fwi/strong_scaling_forkjoin.nix | 132 ++++++++++++++++++++ garlic/exp/fwi/strong_scaling_io.nix | 134 ++++++++++++++++++++ garlic/exp/fwi/strong_scaling_mpionly.nix | 133 ++++++++++++++++++++ garlic/exp/fwi/strong_scaling_task.nix | 132 ++++++++++++++++++++ garlic/exp/fwi/test.nix | 8 +- garlic/exp/index.nix | 7 +- garlic/fig/fwi/granularity.R | 70 +++++++++++ garlic/fig/fwi/strong_scaling.R | 120 ++++++++++++++++++ garlic/fig/fwi/strong_scaling_io.R | 122 ++++++++++++++++++ garlic/fig/index.nix | 5 +- 12 files changed, 997 insertions(+), 10 deletions(-) create mode 100644 garlic/exp/fwi/memory_affinity.nix create mode 100644 garlic/exp/fwi/strong_scaling_forkjoin.nix create mode 100644 garlic/exp/fwi/strong_scaling_io.nix create mode 100644 garlic/exp/fwi/strong_scaling_mpionly.nix create mode 100644 garlic/exp/fwi/strong_scaling_task.nix create mode 100644 garlic/fig/fwi/granularity.R create mode 100644 garlic/fig/fwi/strong_scaling.R create mode 100644 garlic/fig/fwi/strong_scaling_io.R diff --git a/garlic/exp/fwi/granularity.nix b/garlic/exp/fwi/granularity.nix index 6aa48c2..25f4fa5 100644 --- a/garlic/exp/fwi/granularity.nix +++ b/garlic/exp/fwi/granularity.nix @@ -15,8 +15,8 @@ let # Initial variable configuration varConf = { gitBranch = [ -# "garlic/tampi+send+oss+task" -# "garlic/mpi+send+omp+task" + "garlic/tampi+send+oss+task" + "garlic/mpi+send+omp+task" "garlic/mpi+send+oss+task" # "garlic/mpi+send+seq" # "garlic/oss+task" @@ -25,10 +25,8 @@ let ]; blocksize = [ 1 2 4 8 16 32 ]; - #blocksize = [ 1 2 4 8 ]; n = [ - #{nx=500; nz=500; ny=1000; ntpn=1; nn=1;} {nx=500; nz=500; ny=2000; ntpn=2; nn=1;} ]; diff --git a/garlic/exp/fwi/memory_affinity.nix b/garlic/exp/fwi/memory_affinity.nix new file mode 100644 index 0000000..3df7226 --- /dev/null +++ b/garlic/exp/fwi/memory_affinity.nix @@ -0,0 +1,138 @@ +{ + stdenv +, stdexp +, bsc +, targetMachine +, stages +}: + +with stdenv.lib; + +let + + inherit (targetMachine) fs; + + # Initial variable configuration + varConf = { + gitBranch = [ +# "garlic/tampi+send+oss+task" +# "garlic/mpi+send+omp+task" + "garlic/mpi+send+oss+task" +# "garlic/mpi+send+seq" +# "garlic/oss+task" +# "garlic/omp+task" +# "garlic/seq" + ]; + + blocksize = [ 1 ]; + + n = [ +# {nx=500; nz=500; ny=8000;} + {nx=500; nz=500; ny=2000;} + ]; + + nodes = [ 1 ] + + numactl = [ true false ] + + }; + +# The c value contains something like: +# { +# n = { nx=500; ny=500; nz=500; } +# blocksize = 1; +# gitBranch = "garlic/tampi+send+oss+task"; +# } + + machineConfig = targetMachine.config; + + # Generate the complete configuration for each unit + genConf = with bsc; c: targetMachine.config // rec { + expName = "fwi"; + unitName = "${expName}-test"; + inherit (machineConfig) hw; + + cc = icc; + inherit (c) gitBranch blocksize; + useNumactl = c.numactl + + #nx = c.n.nx; + #ny = c.n.ny; + #nz = c.n.nz; + + # Same but shorter: + inherit (c.n) nx ny nz; + + fwiInput = bsc.apps.fwi.input.override { + inherit (c.n) nx ny nz; + }; + + # Other FWI parameters + ioFreq = -1; + + # Repeat the execution of each unit several times + loops = 10; + #loops = 1; + + # Resources + cpusPerTask = if (useNumactl) then hw.cpusPerNode else hw.cpusPerSocket; + ntasksPerNode = hw.cpusPerNode / cpusPerTask; + nodes = c.nodes; + qos = "debug"; + time = "02:00:00"; + jobName = unitName; + + tracing = "no"; + + # Enable permissions to write in the local storage + extraMounts = [ fs.local.temp ]; + + }; + + # Compute the array of configurations + configs = stdexp.buildConfigs { + inherit varConf genConf; + }; + + exec = {nextStage, conf, ...}: stages.exec ({ + inherit nextStage; + pre = '' + CDIR=$PWD + if [[ "${conf.tracing}" == "yes" ]]; then + export NANOS6_CONFIG_OVERRIDE="version.instrument=ctf" + fi + EXECDIR="${fs.local.temp}/out/$GARLIC_USER/$GARLIC_UNIT/$GARLIC_RUN" + mkdir -p $EXECDIR + cd $EXECDIR + ln -fs ${conf.fwiInput}/InputModels InputModels || true + ''; + argv = [ + "${conf.fwiInput}/fwi_params.txt" + "${conf.fwiInput}/fwi_frequencies.txt" + conf.blocksize + "-1" # Fordward steps + "-1" # Backward steps + conf.ioFreq # Write/read frequency + ]; + post = '' + rm -rf Results || true + if [[ "${conf.tracing}" == "yes" ]]; then + mv trace_* $CDIR + fi + ''; + } // optionalAttrs (conf.useNumact) { + program = "${numactl}/bin/numactl --interleave=all ${stageProgram nextStage}"; + }); + + apps = bsc.garlic.apps; + + # FWI program + program = {nextStage, conf, ...}: apps.fwi.solver.override { + inherit (conf) cc gitBranch fwiInput; + }; + + pipeline = stdexp.stdPipeline ++ [ exec program ]; + +in + + stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/fwi/strong_scaling_forkjoin.nix b/garlic/exp/fwi/strong_scaling_forkjoin.nix new file mode 100644 index 0000000..8ff84c2 --- /dev/null +++ b/garlic/exp/fwi/strong_scaling_forkjoin.nix @@ -0,0 +1,132 @@ +{ + stdenv +, stdexp +, bsc +, targetMachine +, stages +}: + +with stdenv.lib; + +let + + inherit (targetMachine) fs; + + # Initial variable configuration + varConf = { + gitBranch = [ +# "garlic/tampi+send+oss+task" +# "garlic/mpi+send+omp+task" +# "garlic/mpi+send+oss+task" + "garlic/mpi+send+omp+fork" +# "garlic/mpi+send+seq" +# "garlic/oss+task" +# "garlic/omp+task" +# "garlic/seq" + ]; + + blocksize = [ 0 ]; + + n = [ + {nx=500; nz=500; ny=16000;} + ]; + + nodes = [ 1 2 4 8 16 ]; + + }; + +# The c value contains something like: +# { +# n = { nx=500; ny=500; nz=500; } +# blocksize = 1; +# gitBranch = "garlic/tampi+send+oss+task"; +# } + + machineConfig = targetMachine.config; + + # Generate the complete configuration for each unit + genConf = with bsc; c: targetMachine.config // rec { + expName = "fwi"; + unitName = "${expName}-test"; + inherit (machineConfig) hw; + + cc = icc; + inherit (c) gitBranch blocksize; + + #nx = c.n.nx; + #ny = c.n.ny; + #nz = c.n.nz; + + # Same but shorter: + inherit (c.n) nx ny nz; + + fwiInput = bsc.apps.fwi.input.override { + inherit (c.n) nx ny nz; + }; + + # Other FWI parameters + ioFreq = -1; + + # Repeat the execution of each unit several times + loops = 10; + #loops = 1; + + # Resources + cpusPerTask = hw.cpusPerSocket; + ntasksPerNode = 2; + nodes = c.nodes; + qos = "debug"; + time = "02:00:00"; + jobName = unitName; + + tracing = "no"; + + # Enable permissions to write in the local storage + extraMounts = [ fs.local.temp ]; + + }; + + # Compute the array of configurations + configs = stdexp.buildConfigs { + inherit varConf genConf; + }; + + exec = {nextStage, conf, ...}: stages.exec { + inherit nextStage; + pre = '' + CDIR=$PWD + if [[ "${conf.tracing}" == "yes" ]]; then + export NANOS6_CONFIG_OVERRIDE="version.instrument=ctf" + fi + EXECDIR="${fs.local.temp}/out/$GARLIC_USER/$GARLIC_UNIT/$GARLIC_RUN" + mkdir -p $EXECDIR + cd $EXECDIR + ln -fs ${conf.fwiInput}/InputModels InputModels || true + ''; + argv = [ + "${conf.fwiInput}/fwi_params.txt" + "${conf.fwiInput}/fwi_frequencies.txt" + "-1" # Fordward steps + "-1" # Backward steps + conf.ioFreq # Write/read frequency + ]; + post = '' + rm -rf Results || true + if [[ "${conf.tracing}" == "yes" ]]; then + mv trace_* $CDIR + fi + ''; + }; + + apps = bsc.garlic.apps; + + # FWI program + program = {nextStage, conf, ...}: apps.fwi.solver.override { + inherit (conf) cc gitBranch fwiInput; + }; + + pipeline = stdexp.stdPipeline ++ [ exec program ]; + +in + + stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/fwi/strong_scaling_io.nix b/garlic/exp/fwi/strong_scaling_io.nix new file mode 100644 index 0000000..30f0e75 --- /dev/null +++ b/garlic/exp/fwi/strong_scaling_io.nix @@ -0,0 +1,134 @@ +{ + stdenv +, stdexp +, bsc +, targetMachine +, stages +}: + +with stdenv.lib; + +let + + inherit (targetMachine) fs; + + # Initial variable configuration + varConf = { + gitBranch = [ + "garlic/tampi+send+oss+task" +# "garlic/mpi+send+omp+task" +# "garlic/mpi+send+oss+task" +# "garlic/mpi+send+seq" +# "garlic/oss+task" +# "garlic/omp+task" +# "garlic/seq" + ]; + + blocksize = [ 1 2 4 8 ]; + + n = [ + {nx=500; nz=500; ny=16000;} + ]; + + nodes = [ 1 2 4 8 16 ]; + + ioFreq = [ 9999 (-1) ]; + + }; + +# The c value contains something like: +# { +# n = { nx=500; ny=500; nz=500; } +# blocksize = 1; +# gitBranch = "garlic/tampi+send+oss+task"; +# } + + machineConfig = targetMachine.config; + + # Generate the complete configuration for each unit + genConf = with bsc; c: targetMachine.config // rec { + expName = "fwi"; + unitName = "${expName}-test"; + inherit (machineConfig) hw; + + cc = icc; + inherit (c) gitBranch blocksize; + + #nx = c.n.nx; + #ny = c.n.ny; + #nz = c.n.nz; + + # Same but shorter: + inherit (c.n) nx ny nz; + + fwiInput = bsc.apps.fwi.input.override { + inherit (c.n) nx ny nz; + }; + + # Other FWI parameters + ioFreq = c.ioFreq; + + # Repeat the execution of each unit several times + loops = 10; + #loops = 1; + + # Resources + cpusPerTask = hw.cpusPerSocket; + ntasksPerNode = 2; + nodes = c.nodes; + qos = "debug"; + time = "02:00:00"; + jobName = unitName; + + tracing = "no"; + + # Enable permissions to write in the local storage + extraMounts = [ fs.local.temp ]; + + }; + + # Compute the array of configurations + configs = stdexp.buildConfigs { + inherit varConf genConf; + }; + + exec = {nextStage, conf, ...}: stages.exec { + inherit nextStage; + pre = '' + CDIR=$PWD + if [[ "${conf.tracing}" == "yes" ]]; then + export NANOS6_CONFIG_OVERRIDE="version.instrument=ctf" + fi + EXECDIR="${fs.local.temp}/out/$GARLIC_USER/$GARLIC_UNIT/$GARLIC_RUN" + mkdir -p $EXECDIR + cd $EXECDIR + ln -fs ${conf.fwiInput}/InputModels InputModels || true + ''; + argv = [ + "${conf.fwiInput}/fwi_params.txt" + "${conf.fwiInput}/fwi_frequencies.txt" + conf.blocksize + "-1" # Fordward steps + "-1" # Backward steps + conf.ioFreq # Write/read frequency + ]; + post = '' + rm -rf Results || true + if [[ "${conf.tracing}" == "yes" ]]; then + mv trace_* $CDIR + fi + ''; + }; + + apps = bsc.garlic.apps; + + # FWI program + program = {nextStage, conf, ...}: apps.fwi.solver.override { + inherit (conf) cc gitBranch fwiInput; + }; + + pipeline = stdexp.stdPipeline ++ [ exec program ]; + +in + + stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/fwi/strong_scaling_mpionly.nix b/garlic/exp/fwi/strong_scaling_mpionly.nix new file mode 100644 index 0000000..48283cb --- /dev/null +++ b/garlic/exp/fwi/strong_scaling_mpionly.nix @@ -0,0 +1,133 @@ +{ + stdenv +, stdexp +, bsc +, targetMachine +, stages +}: + +with stdenv.lib; + +let + + inherit (targetMachine) fs; + + # Initial variable configuration + varConf = { + gitBranch = [ +# "garlic/tampi+send+oss+task" +# "garlic/mpi+send+omp+task" +# "garlic/mpi+send+oss+task" +# "garlic/mpi+send+omp+fork" + "garlic/mpi+send+seq" +# "garlic/oss+task" +# "garlic/omp+task" +# "garlic/seq" + ]; + + blocksize = [ 0 ]; + + n = [ + {nx=500; nz=500; ny=16000;} + ]; + + # Not enough planes for 8 and 16 nodes + nodes = [ 1 2 4 ]; + + }; + +# The c value contains something like: +# { +# n = { nx=500; ny=500; nz=500; } +# blocksize = 1; +# gitBranch = "garlic/tampi+send+oss+task"; +# } + + machineConfig = targetMachine.config; + + # Generate the complete configuration for each unit + genConf = with bsc; c: targetMachine.config // rec { + expName = "fwi"; + unitName = "${expName}-test"; + inherit (machineConfig) hw; + + cc = icc; + inherit (c) gitBranch blocksize; + + #nx = c.n.nx; + #ny = c.n.ny; + #nz = c.n.nz; + + # Same but shorter: + inherit (c.n) nx ny nz; + + fwiInput = bsc.apps.fwi.input.override { + inherit (c.n) nx ny nz; + }; + + # Other FWI parameters + ioFreq = -1; + + # Repeat the execution of each unit several times + loops = 10; + #loops = 1; + + # Resources + cpusPerTask = 1; + ntasksPerNode = hw.cpusPerNode; + nodes = c.nodes; + qos = "debug"; + time = "02:00:00"; + jobName = unitName; + + tracing = "no"; + + # Enable permissions to write in the local storage + extraMounts = [ fs.local.temp ]; + + }; + + # Compute the array of configurations + configs = stdexp.buildConfigs { + inherit varConf genConf; + }; + + exec = {nextStage, conf, ...}: stages.exec { + inherit nextStage; + pre = '' + CDIR=$PWD + if [[ "${conf.tracing}" == "yes" ]]; then + export NANOS6_CONFIG_OVERRIDE="version.instrument=ctf" + fi + EXECDIR="${fs.local.temp}/out/$GARLIC_USER/$GARLIC_UNIT/$GARLIC_RUN" + mkdir -p $EXECDIR + cd $EXECDIR + ln -fs ${conf.fwiInput}/InputModels InputModels || true + ''; + argv = [ + "${conf.fwiInput}/fwi_params.txt" + "${conf.fwiInput}/fwi_frequencies.txt" + "-1" # Fordward steps + "-1" # Backward steps + conf.ioFreq # Write/read frequency + ]; + post = '' + rm -rf Results || true + if [[ "${conf.tracing}" == "yes" ]]; then + mv trace_* $CDIR + fi + ''; + }; + + apps = bsc.garlic.apps; + + # FWI program + program = {nextStage, conf, ...}: apps.fwi.solver.override { + inherit (conf) cc gitBranch fwiInput; + }; + + pipeline = stdexp.stdPipeline ++ [ exec program ]; + +in + + stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/fwi/strong_scaling_task.nix b/garlic/exp/fwi/strong_scaling_task.nix new file mode 100644 index 0000000..487506a --- /dev/null +++ b/garlic/exp/fwi/strong_scaling_task.nix @@ -0,0 +1,132 @@ +{ + stdenv +, stdexp +, bsc +, targetMachine +, stages +}: + +with stdenv.lib; + +let + + inherit (targetMachine) fs; + + # Initial variable configuration + varConf = { + gitBranch = [ + "garlic/tampi+send+oss+task" + "garlic/mpi+send+omp+task" + "garlic/mpi+send+oss+task" +# "garlic/mpi+send+seq" +# "garlic/oss+task" +# "garlic/omp+task" +# "garlic/seq" + ]; + + blocksize = [ 1 2 4 8 ]; + + n = [ + {nx=500; nz=500; ny=16000;} + ]; + + nodes = [ 1 2 4 8 16 ]; + + }; + +# The c value contains something like: +# { +# n = { nx=500; ny=500; nz=500; } +# blocksize = 1; +# gitBranch = "garlic/tampi+send+oss+task"; +# } + + machineConfig = targetMachine.config; + + # Generate the complete configuration for each unit + genConf = with bsc; c: targetMachine.config // rec { + expName = "fwi"; + unitName = "${expName}-test"; + inherit (machineConfig) hw; + + cc = icc; + inherit (c) gitBranch blocksize; + + #nx = c.n.nx; + #ny = c.n.ny; + #nz = c.n.nz; + + # Same but shorter: + inherit (c.n) nx ny nz; + + fwiInput = bsc.apps.fwi.input.override { + inherit (c.n) nx ny nz; + }; + + # Other FWI parameters + ioFreq = -1; + + # Repeat the execution of each unit several times + loops = 10; + #loops = 1; + + # Resources + cpusPerTask = hw.cpusPerSocket; + ntasksPerNode = 2; + nodes = c.nodes; + qos = "debug"; + time = "02:00:00"; + jobName = unitName; + + tracing = "no"; + + # Enable permissions to write in the local storage + extraMounts = [ fs.local.temp ]; + + }; + + # Compute the array of configurations + configs = stdexp.buildConfigs { + inherit varConf genConf; + }; + + exec = {nextStage, conf, ...}: stages.exec { + inherit nextStage; + pre = '' + CDIR=$PWD + if [[ "${conf.tracing}" == "yes" ]]; then + export NANOS6_CONFIG_OVERRIDE="version.instrument=ctf" + fi + EXECDIR="${fs.local.temp}/out/$GARLIC_USER/$GARLIC_UNIT/$GARLIC_RUN" + mkdir -p $EXECDIR + cd $EXECDIR + ln -fs ${conf.fwiInput}/InputModels InputModels || true + ''; + argv = [ + "${conf.fwiInput}/fwi_params.txt" + "${conf.fwiInput}/fwi_frequencies.txt" + conf.blocksize + "-1" # Fordward steps + "-1" # Backward steps + conf.ioFreq # Write/read frequency + ]; + post = '' + rm -rf Results || true + if [[ "${conf.tracing}" == "yes" ]]; then + mv trace_* $CDIR + fi + ''; + }; + + apps = bsc.garlic.apps; + + # FWI program + program = {nextStage, conf, ...}: apps.fwi.solver.override { + inherit (conf) cc gitBranch fwiInput; + }; + + pipeline = stdexp.stdPipeline ++ [ exec program ]; + +in + + stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/fwi/test.nix b/garlic/exp/fwi/test.nix index 49afa8b..a9ea312 100644 --- a/garlic/exp/fwi/test.nix +++ b/garlic/exp/fwi/test.nix @@ -16,16 +16,16 @@ let varConf = { gitBranch = [ # "garlic/tampi+send+oss+task" -# "garlic/mpi+send+omp+task" - "garlic/mpi+send+oss+task" + "garlic/mpi+send+omp+task" +# "garlic/mpi+send+oss+task" # "garlic/mpi+send+seq" # "garlic/oss+task" # "garlic/omp+task" # "garlic/seq" ]; - #blocksize = [ 1 2 4 8 16 32 ]; - blocksize = [ 1 2 4 8 ]; + blocksize = [ 1 2 4 8 16 32 ]; + #blocksize = [ 1 2 4 8 ]; n = [ #{nx=500; nz=500; ny=1000; ntpn=1; nn=1;} diff --git a/garlic/exp/index.nix b/garlic/exp/index.nix index 2b34e4a..c50cdea 100644 --- a/garlic/exp/index.nix +++ b/garlic/exp/index.nix @@ -98,7 +98,12 @@ }; fwi = { - test = callPackage ./fwi/test.nix { }; + test = callPackage ./fwi/test.nix { }; + strong_scaling_task = callPackage ./fwi/strong_scaling_task.nix { }; + strong_scaling_forkjoin = callPackage ./fwi/strong_scaling_forkjoin.nix { }; + strong_scaling_mpionly = callPackage ./fwi/strong_scaling_mpionly.nix { }; + strong_scaling_io = callPackage ./fwi/strong_scaling_io.nix { }; + granularity = callPackage ./fwi/granularity.nix { }; }; osu = rec { diff --git a/garlic/fig/fwi/granularity.R b/garlic/fig/fwi/granularity.R new file mode 100644 index 0000000..a1fc99d --- /dev/null +++ b/garlic/fig/fwi/granularity.R @@ -0,0 +1,70 @@ +library(ggplot2) +library(dplyr) +library(scales) +library(jsonlite) + +args=commandArgs(trailingOnly=TRUE) + +# Read the timetable from args[1] +input_file = "input.json" +if (length(args)>0) { input_file = args[1] } + +# Load the dataset in NDJSON format +dataset = jsonlite::stream_in(file(input_file)) %>% + jsonlite::flatten() + +# We only need the nblocks and time +df = select(dataset, config.blocksize, config.gitBranch, time) %>% + rename(blocksize=config.blocksize, gitBranch=config.gitBranch) %>% + group_by(blocksize, gitBranch) %>% + mutate(mtime = median(time)) %>% + ungroup() + +df$gitBranch = as.factor(df$gitBranch) +df$blocksize = as.factor(df$blocksize) + +ppi=300 +h=5 +w=5 + +#################################################################### +### Line Graph +#################################################################### +png("time.png", width=w*ppi, height=h*ppi, res=ppi) + +## Create the plot with the normalized time vs nblocks +p = ggplot(df, aes(x = blocksize, y=mtime, group=gitBranch, color=gitBranch)) + + geom_point() + + geom_line() + + theme_bw() + + labs(x="Blocksize", y="Median Time (s)", title="FWI granularity", + subtitle=input_file) + + theme(plot.subtitle=element_text(size=8)) + + theme(legend.position = c(0.5, 0.88)) + +# Render the plot +print(p) + +# Save the png image +dev.off() + +#################################################################### +### Boxplot +#################################################################### +png("box.png", width=w*ppi, height=h*ppi, res=ppi) +# Create the plot with the normalized time vs nblocks +p = ggplot(df, aes(x=blocksize, y=time, group=gitBranch, colour=gitBranch)) + + # Labels + labs(x="Blocksize", y="Normalized time", + title=sprintf("FWI Time"), + subtitle=input_file) + + # Draw boxplots + geom_boxplot() + + theme_bw() + + theme(plot.subtitle=element_text(size=8)) + + theme(legend.position = c(0.5, 0.88)) +# Render the plot +print(p) +## Save the png image +dev.off() + diff --git a/garlic/fig/fwi/strong_scaling.R b/garlic/fig/fwi/strong_scaling.R new file mode 100644 index 0000000..5dd4bb5 --- /dev/null +++ b/garlic/fig/fwi/strong_scaling.R @@ -0,0 +1,120 @@ +library(ggplot2) +library(dplyr) +library(scales) +library(jsonlite) + +args=commandArgs(trailingOnly=TRUE) + +# Read the timetable from args[1] +input_file = "input.json" +if (length(args)>0) { input_file = args[1] } + +# Load the dataset in NDJSON format +dataset = jsonlite::stream_in(file(input_file)) %>% + jsonlite::flatten() + +# Select block size to display +useBlocksize = 1 + +# We only need the nblocks and time +df = select(dataset, config.blocksize, config.gitBranch, config.nodes, time) %>% + rename( + blocksize=config.blocksize, + gitBranch=config.gitBranch, + nodes=config.nodes + ) %>% + filter(blocksize == useBlocksize | blocksize == 0) %>% + group_by(nodes, gitBranch) %>% + mutate(mtime = median(time)) %>% + mutate(nxmtime = mtime * nodes) %>% + mutate(nxtime = time * nodes) %>% + ungroup() + +df$gitBranch = as.factor(df$gitBranch) +df$blocksize = as.factor(df$blocksize) +df$nodes = as.factor(df$nodes) + +ppi=300 +h=5 +w=5 + +#################################################################### +### Line plot (time) +#################################################################### +png("time.png", width=w*ppi, height=h*ppi, res=ppi) + +p = ggplot(df, aes(x=nodes, y=time, group=gitBranch, color=gitBranch)) + + geom_point() + + geom_line() + + theme_bw() + + labs(x="Nodes", y="Time (s)", title="FWI strong scaling", + subtitle=input_file) + + theme(plot.subtitle=element_text(size=8)) + + theme(legend.position = c(0.6, 0.75)) + +# Render the plot +print(p) + +# Save the png image +dev.off() + +#################################################################### +### Line plot (timei x nodes) +#################################################################### +png("nxtime.png", width=w*ppi, height=h*ppi, res=ppi) + +p = ggplot(df, aes(x=nodes, y=nxtime, group=gitBranch, color=gitBranch)) + + geom_point() + + geom_line() + + theme_bw() + + labs(x="Nodes", y="Time * Nodes (s)", title="FWI strong scaling", + subtitle=input_file) + + theme(plot.subtitle=element_text(size=8)) + + theme(legend.position = c(0.15, 0.80)) + + theme(legend.text = element_text(size = 7)) + +# Render the plot +print(p) + +# Save the png image +dev.off() + +#################################################################### +### Line plot (median time) +#################################################################### +png("mediantime.png", width=w*ppi, height=h*ppi, res=ppi) + +p = ggplot(df, aes(x=nodes, y=mtime, group=gitBranch, color=gitBranch)) + + geom_point() + + geom_line() + + theme_bw() + + labs(x="Nodes", y="Median Time (s)", title="FWI strong scaling", + subtitle=input_file) + + theme(plot.subtitle=element_text(size=8)) + + theme(legend.position = c(0.5, 0.88)) + +# Render the plot +print(p) + +# Save the png image +dev.off() + +#################################################################### +### Line plot (nodes x median time) +#################################################################### +png("nxmtime.png", width=w*ppi, height=h*ppi, res=ppi) + +p = ggplot(df, aes(x=nodes, y=nxmtime, group=gitBranch, color=gitBranch)) + + geom_point() + + geom_line() + + theme_bw() + + labs(x="Nodes", y="Median Time * Nodes (s)", title="FWI strong scaling", + subtitle=input_file) + + theme(plot.subtitle=element_text(size=8)) + + theme(legend.position = c(0.5, 0.88)) + +# Render the plot +print(p) + +# Save the png image +dev.off() diff --git a/garlic/fig/fwi/strong_scaling_io.R b/garlic/fig/fwi/strong_scaling_io.R new file mode 100644 index 0000000..415bafd --- /dev/null +++ b/garlic/fig/fwi/strong_scaling_io.R @@ -0,0 +1,122 @@ +library(ggplot2) +library(dplyr) +library(scales) +library(jsonlite) +library(forcats) + +args=commandArgs(trailingOnly=TRUE) + +# Read the timetable from args[1] +input_file = "input.json" +if (length(args)>0) { input_file = args[1] } + +# Load the dataset in NDJSON format +dataset = jsonlite::stream_in(file(input_file)) %>% + jsonlite::flatten() + +# We only need the nblocks and time +df = select(dataset, config.blocksize, config.ioFreq, config.gitBranch, config.nodes, time) %>% + rename( + blocksize=config.blocksize, + io=config.ioFreq, + gitBranch=config.gitBranch, + nodes=config.nodes + ) %>% + filter(blocksize == 1) %>% + group_by(nodes, gitBranch, io) %>% + mutate(mtime = median(time)) %>% + mutate(nxmtime = mtime * nodes) %>% + mutate(nxtime = time * nodes) %>% + ungroup() + +df$gitBranch = as.factor(df$gitBranch) +df$io = as.factor(df$io) +df$blocksize = as.factor(df$blocksize) +df$nodes = as.factor(df$nodes) + +df$io = fct_recode(df$io, enabled = "-1", disabled = "9999") + + +ppi=300 +h=5 +w=5 + +#################################################################### +### Line plot (time) +#################################################################### +png("time.png", width=w*ppi, height=h*ppi, res=ppi) + +p = ggplot(df, aes(x=nodes, y=time, group=io, color=io)) + + geom_point() + + geom_line() + + theme_bw() + + labs(x="Nodes", y="Time (s)", title="FWI strong scaling for mpi+send+oss+task", + subtitle=input_file) + + theme(plot.subtitle=element_text(size=8)) + + theme(legend.position = c(0.5, 0.88)) + +# Render the plot +print(p) + +# Save the png image +dev.off() + +#################################################################### +### Line plot (time x nodes) +#################################################################### +png("nxtime.png", width=w*ppi, height=h*ppi, res=ppi) + +p = ggplot(df, aes(x=nodes, y=nxtime, group=io, color=io)) + + geom_point() + + geom_line() + + theme_bw() + + labs(x="Nodes", y="Time * Nodes (s)", title="FWI strong scaling for mpi+send+oss+task", + subtitle=input_file) + + theme(plot.subtitle=element_text(size=8)) + + theme(legend.position = c(0.5, 0.88)) + +# Render the plot +print(p) + +# Save the png image +dev.off() + +##################################################################### +#### Line plot (median time) +##################################################################### +#png("mediantime.png", width=w*ppi, height=h*ppi, res=ppi) +# +#p = ggplot(df, aes(x=nodes, y=mtime, group=gitBranch, color=gitBranch)) + +# geom_point() + +# geom_line() + +# theme_bw() + +# labs(x="Nodes", y="Median Time (s)", title="FWI strong scaling", +# subtitle=input_file) + +# theme(plot.subtitle=element_text(size=8)) + +# theme(legend.position = c(0.5, 0.88)) +# +## Render the plot +#print(p) +# +## Save the png image +#dev.off() +# +##################################################################### +#### Line plot (nodes x median time) +##################################################################### +#png("nxmtime.png", width=w*ppi, height=h*ppi, res=ppi) +# +#p = ggplot(df, aes(x=nodes, y=nxmtime, group=gitBranch, color=gitBranch)) + +# geom_point() + +# geom_line() + +# theme_bw() + +# labs(x="Nodes", y="Median Time * Nodes (s)", title="FWI strong scaling", +# subtitle=input_file) + +# theme(plot.subtitle=element_text(size=8)) + +# theme(legend.position = c(0.5, 0.88)) +# +## Render the plot +#print(p) +# +## Save the png image +#dev.off() diff --git a/garlic/fig/index.nix b/garlic/fig/index.nix index dbe73e3..5ca637f 100644 --- a/garlic/fig/index.nix +++ b/garlic/fig/index.nix @@ -62,7 +62,10 @@ in }; fwi = with exp.fwi; { - test = stdPlot ./fwi/test.R [ test ]; + test = stdPlot ./fwi/test.R [ test ]; + strong_scaling = stdPlot ./fwi/strong_scaling.R [ strong_scaling_task strong_scaling_forkjoin strong_scaling_mpionly ]; + strong_scaling_io = stdPlot ./fwi/strong_scaling_io.R [ strong_scaling_io ]; + granularity = stdPlot ./fwi/granularity.R [ granularity ]; }; osu = with exp.osu; { From 3e5a56ebdb1e5e4f72433b86a5abb3bda4be870c Mon Sep 17 00:00:00 2001 From: Aleix Roca Nonell Date: Mon, 29 Mar 2021 18:17:47 +0200 Subject: [PATCH 630/987] fwi: add tampi non-blocking variant --- garlic/exp/fwi/granularity.nix | 1 + garlic/exp/fwi/strong_scaling_task.nix | 1 + 2 files changed, 2 insertions(+) diff --git a/garlic/exp/fwi/granularity.nix b/garlic/exp/fwi/granularity.nix index 25f4fa5..1c8cac4 100644 --- a/garlic/exp/fwi/granularity.nix +++ b/garlic/exp/fwi/granularity.nix @@ -16,6 +16,7 @@ let varConf = { gitBranch = [ "garlic/tampi+send+oss+task" + "garlic/tampi+isend+oss+task" "garlic/mpi+send+omp+task" "garlic/mpi+send+oss+task" # "garlic/mpi+send+seq" diff --git a/garlic/exp/fwi/strong_scaling_task.nix b/garlic/exp/fwi/strong_scaling_task.nix index 487506a..048fe7e 100644 --- a/garlic/exp/fwi/strong_scaling_task.nix +++ b/garlic/exp/fwi/strong_scaling_task.nix @@ -16,6 +16,7 @@ let varConf = { gitBranch = [ "garlic/tampi+send+oss+task" + "garlic/tampi+isend+oss+task" "garlic/mpi+send+omp+task" "garlic/mpi+send+oss+task" # "garlic/mpi+send+seq" From 989f6ee018a9aee8928fc270e10094ae6f99b3ce Mon Sep 17 00:00:00 2001 From: Aleix Roca Nonell Date: Wed, 7 Apr 2021 12:35:44 +0200 Subject: [PATCH 631/987] fwi: adjust input size to meet timing constraints The previous iniput size for both granularity and strong scaling tests where too big to meet the timing constrains needed for garlic. This patch sets a new, smaller, input size. Also, a minor cleanup is applied to the rest of the fwi experiments and figures. --- garlic/apps/fwi/default.nix | 1 + garlic/exp/fwi/data_reuse.nix | 42 +++---- garlic/exp/fwi/granularity.nix | 14 ++- garlic/exp/fwi/memory_affinity.nix | 138 --------------------- garlic/exp/fwi/strong_scaling_forkjoin.nix | 12 +- garlic/exp/fwi/strong_scaling_io.nix | 7 ++ garlic/exp/fwi/strong_scaling_mpionly.nix | 17 ++- garlic/exp/fwi/strong_scaling_task.nix | 12 +- garlic/exp/fwi/{test.nix => sync_io.nix} | 26 ++-- garlic/exp/index.nix | 5 +- garlic/fig/fwi/granularity.R | 31 ++--- garlic/fig/fwi/strong_scaling.R | 4 +- garlic/fig/fwi/test.R | 46 ------- garlic/fig/index.nix | 8 +- 14 files changed, 96 insertions(+), 267 deletions(-) delete mode 100644 garlic/exp/fwi/memory_affinity.nix rename garlic/exp/fwi/{test.nix => sync_io.nix} (84%) delete mode 100644 garlic/fig/fwi/test.R diff --git a/garlic/apps/fwi/default.nix b/garlic/apps/fwi/default.nix index 013fcef..5b1a9d6 100644 --- a/garlic/apps/fwi/default.nix +++ b/garlic/apps/fwi/default.nix @@ -34,6 +34,7 @@ stdenv.mkDerivation rec { # FIXME: Allow multiple MPI implementations postPatch = '' sed -i 's/= OPENMPI$/= INTEL/g' Makefile + sed -i 's/USE_O_DIRECT ?= NO/USE_O_DIRECT ?= YES/g' Makefile || true ''; # FIXME: This is an ugly hack. diff --git a/garlic/exp/fwi/data_reuse.nix b/garlic/exp/fwi/data_reuse.nix index 623492a..84f0c4b 100644 --- a/garlic/exp/fwi/data_reuse.nix +++ b/garlic/exp/fwi/data_reuse.nix @@ -1,3 +1,23 @@ +# This test compares a FWI version using poor data locality (+NOREUSE) versus +# the optimized version (used for all other experiments). Follows a pseudocode +# snippet illustrating the fundamental difference between version. +# +# NOREUSE +# ---------------------- +# for (y) for (x) for (z) +# computA(v[y][x][z]); +# for (y) for (x) for (z) +# computB(v[y][x][z]); +# for (y) for (x) for (z) +# computC(v[y][x][z]); +# +# Optimized version +# ---------------------- +# for (y) for (x) for (z) +# computA(v[y][x][z]); +# computB(v[y][x][z]); +# computC(v[y][x][z]); + { stdenv , stdexp @@ -15,34 +35,14 @@ let # Initial variable configuration varConf = { gitBranch = [ -# "garlic/tampi+send+oss+task" -# "garlic/mpi+send+omp+task" "garlic/mpi+send+oss+task" - "garlic/mpi+send+oss+task+noreuse" -# "garlic/mpi+send+seq" -# "garlic/oss+task" -# "garlic/omp+task" -# "garlic/seq" + "garlic/mpi+send+oss+task+NOREUSE" ]; blocksize = [ 1 2 4 8 ]; - #blocksize = [ 1 2 ]; n = [ -# {nx=50; ny=4000; nz=50;} -# {nx=20; ny=4000; nz=20;} -# {nx=300; ny=8000; nz=300;} # half node, / -# {nx=300; ny=1000; nz=300;} # half node, / -# {nx=200; ny=1000; nz=200;} # half node, not enough tasks -# {nx=200; ny=4000; nz=200;} # --/ half node -# {nx=250; ny=2000; nz=250;} # / half node {nx=300; ny=2000; nz=300;} # / half node -# {nx=100; ny=2000; nz=100;} # \-// half node -# {nx=150; ny=2000; nz=150;} # \-/ half node -# {nx=200; ny=64000; nz=200;} # --/ 16 nodes -# {nx=200; ny=4000; nz=200;} # --/ half node -# {nx=200; ny=8000; nz=200;} # --/ 1 node -# {nx=100; ny=8000; nz=100;} # --/ half node ]; }; diff --git a/garlic/exp/fwi/granularity.nix b/garlic/exp/fwi/granularity.nix index 1c8cac4..7773b3b 100644 --- a/garlic/exp/fwi/granularity.nix +++ b/garlic/exp/fwi/granularity.nix @@ -1,3 +1,5 @@ +# Regular granularity test for FWI + { stdenv , stdexp @@ -15,20 +17,20 @@ let # Initial variable configuration varConf = { gitBranch = [ - "garlic/tampi+send+oss+task" - "garlic/tampi+isend+oss+task" - "garlic/mpi+send+omp+task" - "garlic/mpi+send+oss+task" +# "garlic/tampi+send+oss+task" + "garlic/tampi+isend+oss+task" +# "garlic/mpi+send+omp+task" +# "garlic/mpi+send+oss+task" # "garlic/mpi+send+seq" # "garlic/oss+task" # "garlic/omp+task" # "garlic/seq" ]; - blocksize = [ 1 2 4 8 16 32 ]; + blocksize = [ 1 2 4 8 16 32 64 128 256 ]; n = [ - {nx=500; nz=500; ny=2000; ntpn=2; nn=1;} + {nx=100; nz=100; ny=8000; ntpn=2; nn=1;} ]; }; diff --git a/garlic/exp/fwi/memory_affinity.nix b/garlic/exp/fwi/memory_affinity.nix deleted file mode 100644 index 3df7226..0000000 --- a/garlic/exp/fwi/memory_affinity.nix +++ /dev/null @@ -1,138 +0,0 @@ -{ - stdenv -, stdexp -, bsc -, targetMachine -, stages -}: - -with stdenv.lib; - -let - - inherit (targetMachine) fs; - - # Initial variable configuration - varConf = { - gitBranch = [ -# "garlic/tampi+send+oss+task" -# "garlic/mpi+send+omp+task" - "garlic/mpi+send+oss+task" -# "garlic/mpi+send+seq" -# "garlic/oss+task" -# "garlic/omp+task" -# "garlic/seq" - ]; - - blocksize = [ 1 ]; - - n = [ -# {nx=500; nz=500; ny=8000;} - {nx=500; nz=500; ny=2000;} - ]; - - nodes = [ 1 ] - - numactl = [ true false ] - - }; - -# The c value contains something like: -# { -# n = { nx=500; ny=500; nz=500; } -# blocksize = 1; -# gitBranch = "garlic/tampi+send+oss+task"; -# } - - machineConfig = targetMachine.config; - - # Generate the complete configuration for each unit - genConf = with bsc; c: targetMachine.config // rec { - expName = "fwi"; - unitName = "${expName}-test"; - inherit (machineConfig) hw; - - cc = icc; - inherit (c) gitBranch blocksize; - useNumactl = c.numactl - - #nx = c.n.nx; - #ny = c.n.ny; - #nz = c.n.nz; - - # Same but shorter: - inherit (c.n) nx ny nz; - - fwiInput = bsc.apps.fwi.input.override { - inherit (c.n) nx ny nz; - }; - - # Other FWI parameters - ioFreq = -1; - - # Repeat the execution of each unit several times - loops = 10; - #loops = 1; - - # Resources - cpusPerTask = if (useNumactl) then hw.cpusPerNode else hw.cpusPerSocket; - ntasksPerNode = hw.cpusPerNode / cpusPerTask; - nodes = c.nodes; - qos = "debug"; - time = "02:00:00"; - jobName = unitName; - - tracing = "no"; - - # Enable permissions to write in the local storage - extraMounts = [ fs.local.temp ]; - - }; - - # Compute the array of configurations - configs = stdexp.buildConfigs { - inherit varConf genConf; - }; - - exec = {nextStage, conf, ...}: stages.exec ({ - inherit nextStage; - pre = '' - CDIR=$PWD - if [[ "${conf.tracing}" == "yes" ]]; then - export NANOS6_CONFIG_OVERRIDE="version.instrument=ctf" - fi - EXECDIR="${fs.local.temp}/out/$GARLIC_USER/$GARLIC_UNIT/$GARLIC_RUN" - mkdir -p $EXECDIR - cd $EXECDIR - ln -fs ${conf.fwiInput}/InputModels InputModels || true - ''; - argv = [ - "${conf.fwiInput}/fwi_params.txt" - "${conf.fwiInput}/fwi_frequencies.txt" - conf.blocksize - "-1" # Fordward steps - "-1" # Backward steps - conf.ioFreq # Write/read frequency - ]; - post = '' - rm -rf Results || true - if [[ "${conf.tracing}" == "yes" ]]; then - mv trace_* $CDIR - fi - ''; - } // optionalAttrs (conf.useNumact) { - program = "${numactl}/bin/numactl --interleave=all ${stageProgram nextStage}"; - }); - - apps = bsc.garlic.apps; - - # FWI program - program = {nextStage, conf, ...}: apps.fwi.solver.override { - inherit (conf) cc gitBranch fwiInput; - }; - - pipeline = stdexp.stdPipeline ++ [ exec program ]; - -in - - stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/fwi/strong_scaling_forkjoin.nix b/garlic/exp/fwi/strong_scaling_forkjoin.nix index 8ff84c2..902eaf6 100644 --- a/garlic/exp/fwi/strong_scaling_forkjoin.nix +++ b/garlic/exp/fwi/strong_scaling_forkjoin.nix @@ -1,3 +1,6 @@ +# Strong scaling test for FWI variants based on forkjoint. This +# experiment does not rely on block sizes. + { stdenv , stdexp @@ -15,20 +18,13 @@ let # Initial variable configuration varConf = { gitBranch = [ -# "garlic/tampi+send+oss+task" -# "garlic/mpi+send+omp+task" -# "garlic/mpi+send+oss+task" "garlic/mpi+send+omp+fork" -# "garlic/mpi+send+seq" -# "garlic/oss+task" -# "garlic/omp+task" -# "garlic/seq" ]; blocksize = [ 0 ]; n = [ - {nx=500; nz=500; ny=16000;} + {nx=100; nz=100; ny=8000;} ]; nodes = [ 1 2 4 8 16 ]; diff --git a/garlic/exp/fwi/strong_scaling_io.nix b/garlic/exp/fwi/strong_scaling_io.nix index 30f0e75..c063659 100644 --- a/garlic/exp/fwi/strong_scaling_io.nix +++ b/garlic/exp/fwi/strong_scaling_io.nix @@ -1,3 +1,10 @@ +# Strong scaling test for FWI variants based on tasks with and without I/O. +# This experiment solves a computationally expensive input which brings the +# storage devices to saturation when I/O is enabled. the same input us run +# without I/O for comparison purposes.. Also, the experiments are runt for a +# range of block sizes deemed as efficient according to the granularity +# experiment. + { stdenv , stdexp diff --git a/garlic/exp/fwi/strong_scaling_mpionly.nix b/garlic/exp/fwi/strong_scaling_mpionly.nix index 48283cb..94ffd8d 100644 --- a/garlic/exp/fwi/strong_scaling_mpionly.nix +++ b/garlic/exp/fwi/strong_scaling_mpionly.nix @@ -1,3 +1,7 @@ +# Strong scaling test for FWI variants based exclusively on MPI. This +# experiment does not rely on block sizes. An MPI process is instantiated per +# core. + { stdenv , stdexp @@ -15,24 +19,17 @@ let # Initial variable configuration varConf = { gitBranch = [ -# "garlic/tampi+send+oss+task" -# "garlic/mpi+send+omp+task" -# "garlic/mpi+send+oss+task" -# "garlic/mpi+send+omp+fork" "garlic/mpi+send+seq" -# "garlic/oss+task" -# "garlic/omp+task" -# "garlic/seq" ]; blocksize = [ 0 ]; n = [ - {nx=500; nz=500; ny=16000;} + {nx=100; nz=100; ny=8000;} ]; - # Not enough planes for 8 and 16 nodes - nodes = [ 1 2 4 ]; + # Not enough planes for 4, 8 and 16 nodes + nodes = [ 1 2 ]; }; diff --git a/garlic/exp/fwi/strong_scaling_task.nix b/garlic/exp/fwi/strong_scaling_task.nix index 048fe7e..4ad7833 100644 --- a/garlic/exp/fwi/strong_scaling_task.nix +++ b/garlic/exp/fwi/strong_scaling_task.nix @@ -1,3 +1,7 @@ +# Strong scaling test for FWI variants based on tasks. This +# experiment explores a range of block sizes deemed as efficient +# according to the granularity experiment. + { stdenv , stdexp @@ -19,16 +23,12 @@ let "garlic/tampi+isend+oss+task" "garlic/mpi+send+omp+task" "garlic/mpi+send+oss+task" -# "garlic/mpi+send+seq" -# "garlic/oss+task" -# "garlic/omp+task" -# "garlic/seq" ]; - blocksize = [ 1 2 4 8 ]; + blocksize = [ 1 2 4 8 16 ]; n = [ - {nx=500; nz=500; ny=16000;} + {nx=100; nz=100; ny=8000;} ]; nodes = [ 1 2 4 8 16 ]; diff --git a/garlic/exp/fwi/test.nix b/garlic/exp/fwi/sync_io.nix similarity index 84% rename from garlic/exp/fwi/test.nix rename to garlic/exp/fwi/sync_io.nix index a9ea312..59e791d 100644 --- a/garlic/exp/fwi/test.nix +++ b/garlic/exp/fwi/sync_io.nix @@ -1,3 +1,7 @@ +# This experiment compares the effect of not using I/O versus using O_DIRECT | +# O_DSYNC enabled I/O. This is a reduced version of the strong_scaling_io +# experiment. + { stdenv , stdexp @@ -15,8 +19,8 @@ let # Initial variable configuration varConf = { gitBranch = [ -# "garlic/tampi+send+oss+task" - "garlic/mpi+send+omp+task" + "garlic/tampi+send+oss+task" +# "garlic/mpi+send+omp+task" # "garlic/mpi+send+oss+task" # "garlic/mpi+send+seq" # "garlic/oss+task" @@ -24,14 +28,16 @@ let # "garlic/seq" ]; - blocksize = [ 1 2 4 8 16 32 ]; - #blocksize = [ 1 2 4 8 ]; + blocksize = [ 1 ]; n = [ - #{nx=500; nz=500; ny=1000; ntpn=1; nn=1;} - {nx=500; nz=500; ny=2000; ntpn=2; nn=1;} + {nx=500; nz=500; ny=16000;} ]; + nodes = [ 4 ]; + + ioFreq = [ 9999 (-1) ]; + }; # The c value contains something like: @@ -57,14 +63,14 @@ let #nz = c.n.nz; # Same but shorter: - inherit (c.n) nx ny nz ntpn nn; + inherit (c.n) nx ny nz; fwiInput = bsc.apps.fwi.input.override { inherit (c.n) nx ny nz; }; # Other FWI parameters - ioFreq = -1; + ioFreq = c.ioFreq; # Repeat the execution of each unit several times loops = 10; @@ -72,8 +78,8 @@ let # Resources cpusPerTask = hw.cpusPerSocket; - ntasksPerNode = ntpn; - nodes = nn; + ntasksPerNode = 2; + nodes = c.nodes; qos = "debug"; time = "02:00:00"; jobName = unitName; diff --git a/garlic/exp/index.nix b/garlic/exp/index.nix index c50cdea..f6a518d 100644 --- a/garlic/exp/index.nix +++ b/garlic/exp/index.nix @@ -98,12 +98,13 @@ }; fwi = { - test = callPackage ./fwi/test.nix { }; + granularity = callPackage ./fwi/granularity.nix { }; strong_scaling_task = callPackage ./fwi/strong_scaling_task.nix { }; strong_scaling_forkjoin = callPackage ./fwi/strong_scaling_forkjoin.nix { }; strong_scaling_mpionly = callPackage ./fwi/strong_scaling_mpionly.nix { }; + data_reuse = callPackage ./fwi/data_reuse.nix { }; strong_scaling_io = callPackage ./fwi/strong_scaling_io.nix { }; - granularity = callPackage ./fwi/granularity.nix { }; + sync_io = callPackage ./fwi/sync_io.nix { }; }; osu = rec { diff --git a/garlic/fig/fwi/granularity.R b/garlic/fig/fwi/granularity.R index a1fc99d..40d6f75 100644 --- a/garlic/fig/fwi/granularity.R +++ b/garlic/fig/fwi/granularity.R @@ -30,7 +30,7 @@ w=5 #################################################################### ### Line Graph #################################################################### -png("time.png", width=w*ppi, height=h*ppi, res=ppi) +png("mtime.png", width=w*ppi, height=h*ppi, res=ppi) ## Create the plot with the normalized time vs nblocks p = ggplot(df, aes(x = blocksize, y=mtime, group=gitBranch, color=gitBranch)) + @@ -49,22 +49,23 @@ print(p) dev.off() #################################################################### -### Boxplot +### Line Graph #################################################################### -png("box.png", width=w*ppi, height=h*ppi, res=ppi) -# Create the plot with the normalized time vs nblocks -p = ggplot(df, aes(x=blocksize, y=time, group=gitBranch, colour=gitBranch)) + - # Labels - labs(x="Blocksize", y="Normalized time", - title=sprintf("FWI Time"), - subtitle=input_file) + - # Draw boxplots - geom_boxplot() + - theme_bw() + - theme(plot.subtitle=element_text(size=8)) + - theme(legend.position = c(0.5, 0.88)) +png("time.png", width=w*ppi, height=h*ppi, res=ppi) + +## Create the plot with the normalized time vs nblocks +p = ggplot(df, aes(x = blocksize, y=time, group=gitBranch, color=gitBranch)) + + geom_point() + + geom_line() + + theme_bw() + + labs(x="Blocksize", y="Time (s)", title="FWI granularity", + subtitle=input_file) + + theme(plot.subtitle=element_text(size=8)) + + theme(legend.position = c(0.5, 0.88)) + # Render the plot print(p) -## Save the png image + +# Save the png image dev.off() diff --git a/garlic/fig/fwi/strong_scaling.R b/garlic/fig/fwi/strong_scaling.R index 5dd4bb5..89d79f1 100644 --- a/garlic/fig/fwi/strong_scaling.R +++ b/garlic/fig/fwi/strong_scaling.R @@ -14,7 +14,7 @@ dataset = jsonlite::stream_in(file(input_file)) %>% jsonlite::flatten() # Select block size to display -useBlocksize = 1 +useBlocksize = 2 # We only need the nblocks and time df = select(dataset, config.blocksize, config.gitBranch, config.nodes, time) %>% @@ -59,7 +59,7 @@ print(p) dev.off() #################################################################### -### Line plot (timei x nodes) +### Line plot (time x nodes) #################################################################### png("nxtime.png", width=w*ppi, height=h*ppi, res=ppi) diff --git a/garlic/fig/fwi/test.R b/garlic/fig/fwi/test.R deleted file mode 100644 index ca79f0d..0000000 --- a/garlic/fig/fwi/test.R +++ /dev/null @@ -1,46 +0,0 @@ -library(ggplot2) -library(dplyr) -library(scales) -library(jsonlite) - -args=commandArgs(trailingOnly=TRUE) - -# Read the timetable from args[1] -input_file = "input.json" -if (length(args)>0) { input_file = args[1] } - -# Load the dataset in NDJSON format -dataset = jsonlite::stream_in(file(input_file)) %>% - jsonlite::flatten() - -# We only need the nblocks and time -df = select(dataset, config.blocksize, config.gitBranch, time) %>% - rename(blocksize=config.blocksize, gitBranch=config.gitBranch) %>% - group_by(blocksize, gitBranch) %>% - mutate(mtime = median(time)) %>% - ungroup() - -df$gitBranch = as.factor(df$gitBranch) -df$blocksize = as.factor(df$blocksize) - -ppi=300 -h=5 -w=5 - -png("time.png", width=w*ppi, height=h*ppi, res=ppi) -# -## Create the plot with the normalized time vs nblocks -p = ggplot(df, aes(x=blocksize, y=time)) + - geom_point() + - geom_line(aes(y=mtime, group=gitBranch, color=gitBranch)) + - theme_bw() + - labs(x="Blocksize", y="Time (s)", title="FWI granularity", - subtitle=input_file) + - theme(plot.subtitle=element_text(size=8)) + - theme(legend.position = c(0.5, 0.88)) - -# Render the plot -print(p) - -# Save the png image -dev.off() diff --git a/garlic/fig/index.nix b/garlic/fig/index.nix index 5ca637f..b3f77ea 100644 --- a/garlic/fig/index.nix +++ b/garlic/fig/index.nix @@ -62,10 +62,12 @@ in }; fwi = with exp.fwi; { - test = stdPlot ./fwi/test.R [ test ]; - strong_scaling = stdPlot ./fwi/strong_scaling.R [ strong_scaling_task strong_scaling_forkjoin strong_scaling_mpionly ]; - strong_scaling_io = stdPlot ./fwi/strong_scaling_io.R [ strong_scaling_io ]; granularity = stdPlot ./fwi/granularity.R [ granularity ]; + strong_scaling = stdPlot ./fwi/strong_scaling.R [ strong_scaling_task strong_scaling_forkjoin ]; + #strong_scaling = stdPlot ./fwi/strong_scaling.R [ strong_scaling_task strong_scaling_forkjoin strong_scaling_mpionly ]; + data_reuse = stdPlot ./fwi/granularity.R [ data_reuse ]; + strong_scaling_io = stdPlot ./fwi/strong_scaling_io.R [ strong_scaling_io ]; + sync_io = stdPlot ./fwi/strong_scaling_io.R [ sync_io ]; }; osu = with exp.osu; { From e0a68c077c0a39b07b69fb116202634b30ba4dbe Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 12 Apr 2021 12:51:10 +0200 Subject: [PATCH 632/987] fwi: merge forkjoin ss experiment into one file Additional options are only active with enableExtended = true --- .../fwi/{strong_scaling_task.nix => ss.nix} | 95 +++++++------ garlic/exp/fwi/strong_scaling_forkjoin.nix | 128 ------------------ garlic/exp/index.nix | 6 +- 3 files changed, 54 insertions(+), 175 deletions(-) rename garlic/exp/fwi/{strong_scaling_task.nix => ss.nix} (52%) delete mode 100644 garlic/exp/fwi/strong_scaling_forkjoin.nix diff --git a/garlic/exp/fwi/strong_scaling_task.nix b/garlic/exp/fwi/ss.nix similarity index 52% rename from garlic/exp/fwi/strong_scaling_task.nix rename to garlic/exp/fwi/ss.nix index 4ad7833..7329d1d 100644 --- a/garlic/exp/fwi/strong_scaling_task.nix +++ b/garlic/exp/fwi/ss.nix @@ -8,56 +8,54 @@ , bsc , targetMachine , stages +, garlicTools +, enableExtended ? false }: with stdenv.lib; +with garlicTools; let inherit (targetMachine) fs; + # We split these into a separate group so we can remove the blocksize + # later. + forkJoinBranches = [ + "garlic/mpi+send+omp+fork" + ]; + # Initial variable configuration varConf = { gitBranch = [ - "garlic/tampi+send+oss+task" - "garlic/tampi+isend+oss+task" - "garlic/mpi+send+omp+task" - "garlic/mpi+send+oss+task" - ]; + "garlic/tampi+isend+oss+task" + ] ++ optionals (enableExtended) ([ + "garlic/tampi+send+oss+task" + "garlic/mpi+send+omp+task" + "garlic/mpi+send+oss+task" + ] ++ forkJoinBranches); - blocksize = [ 1 2 4 8 16 ]; + blocksize = if (enableExtended) + then range2 1 16 + else [ 2 ]; - n = [ - {nx=100; nz=100; ny=8000;} - ]; - - nodes = [ 1 2 4 8 16 ]; + n = [ {nx=100; nz=100; ny=8000;} ]; + nodes = range2 1 16; }; -# The c value contains something like: -# { -# n = { nx=500; ny=500; nz=500; } -# blocksize = 1; -# gitBranch = "garlic/tampi+send+oss+task"; -# } - machineConfig = targetMachine.config; # Generate the complete configuration for each unit - genConf = with bsc; c: targetMachine.config // rec { - expName = "fwi"; - unitName = "${expName}-test"; + genConf = c: targetMachine.config // rec { + expName = "fwi-ss"; + unitName = "${expName}" + + "-nodes${toString nodes}" + + "-bs${toString blocksize}" + + "-${toString gitBranch}"; + inherit (machineConfig) hw; - - cc = icc; inherit (c) gitBranch blocksize; - - #nx = c.n.nx; - #ny = c.n.ny; - #nz = c.n.nz; - - # Same but shorter: inherit (c.n) nx ny nz; fwiInput = bsc.apps.fwi.input.override { @@ -69,53 +67,62 @@ let # Repeat the execution of each unit several times loops = 10; - #loops = 1; # Resources cpusPerTask = hw.cpusPerSocket; - ntasksPerNode = 2; + ntasksPerNode = hw.socketsPerNode; nodes = c.nodes; qos = "debug"; time = "02:00:00"; jobName = unitName; - tracing = "no"; + enableCTF = false; # Enable permissions to write in the local storage extraMounts = [ fs.local.temp ]; }; + # Returns true if the given config is in the forkJoinBranches list + isForkJoin = c: any (e: c.gitBranch == e) forkJoinBranches; + + # Set the blocksize to null for the fork join branch + fixBlocksize = c: if (isForkJoin c) then (c // { blocksize = null; }) else c; + # Compute the array of configurations - configs = stdexp.buildConfigs { + allConfigs = stdexp.buildConfigs { inherit varConf genConf; }; + # The unique function ensures that we only run one config for the fork + # join branch, even if we have multiple blocksizes. + configs = unique (map fixBlocksize allConfigs); + exec = {nextStage, conf, ...}: stages.exec { inherit nextStage; pre = '' - CDIR=$PWD - if [[ "${conf.tracing}" == "yes" ]]; then - export NANOS6_CONFIG_OVERRIDE="version.instrument=ctf" - fi + CDIR=$(pwd) EXECDIR="${fs.local.temp}/out/$GARLIC_USER/$GARLIC_UNIT/$GARLIC_RUN" - mkdir -p $EXECDIR - cd $EXECDIR + mkdir -p "$EXECDIR" + cd "$EXECDIR" ln -fs ${conf.fwiInput}/InputModels InputModels || true + '' + optionalString (conf.enableCTF) '' + export NANOS6_CONFIG_OVERRIDE="version.instrument=ctf" ''; argv = [ "${conf.fwiInput}/fwi_params.txt" "${conf.fwiInput}/fwi_frequencies.txt" - conf.blocksize + ] + ++ optional (isForkJoin conf) conf.blocksize + ++ [ "-1" # Fordward steps "-1" # Backward steps conf.ioFreq # Write/read frequency ]; post = '' rm -rf Results || true - if [[ "${conf.tracing}" == "yes" ]]; then - mv trace_* $CDIR - fi + '' + optionalString (conf.enableCTF) '' + mv trace_* "$CDIR" ''; }; @@ -123,7 +130,7 @@ let # FWI program program = {nextStage, conf, ...}: apps.fwi.solver.override { - inherit (conf) cc gitBranch fwiInput; + inherit (conf) gitBranch fwiInput; }; pipeline = stdexp.stdPipeline ++ [ exec program ]; diff --git a/garlic/exp/fwi/strong_scaling_forkjoin.nix b/garlic/exp/fwi/strong_scaling_forkjoin.nix deleted file mode 100644 index 902eaf6..0000000 --- a/garlic/exp/fwi/strong_scaling_forkjoin.nix +++ /dev/null @@ -1,128 +0,0 @@ -# Strong scaling test for FWI variants based on forkjoint. This -# experiment does not rely on block sizes. - -{ - stdenv -, stdexp -, bsc -, targetMachine -, stages -}: - -with stdenv.lib; - -let - - inherit (targetMachine) fs; - - # Initial variable configuration - varConf = { - gitBranch = [ - "garlic/mpi+send+omp+fork" - ]; - - blocksize = [ 0 ]; - - n = [ - {nx=100; nz=100; ny=8000;} - ]; - - nodes = [ 1 2 4 8 16 ]; - - }; - -# The c value contains something like: -# { -# n = { nx=500; ny=500; nz=500; } -# blocksize = 1; -# gitBranch = "garlic/tampi+send+oss+task"; -# } - - machineConfig = targetMachine.config; - - # Generate the complete configuration for each unit - genConf = with bsc; c: targetMachine.config // rec { - expName = "fwi"; - unitName = "${expName}-test"; - inherit (machineConfig) hw; - - cc = icc; - inherit (c) gitBranch blocksize; - - #nx = c.n.nx; - #ny = c.n.ny; - #nz = c.n.nz; - - # Same but shorter: - inherit (c.n) nx ny nz; - - fwiInput = bsc.apps.fwi.input.override { - inherit (c.n) nx ny nz; - }; - - # Other FWI parameters - ioFreq = -1; - - # Repeat the execution of each unit several times - loops = 10; - #loops = 1; - - # Resources - cpusPerTask = hw.cpusPerSocket; - ntasksPerNode = 2; - nodes = c.nodes; - qos = "debug"; - time = "02:00:00"; - jobName = unitName; - - tracing = "no"; - - # Enable permissions to write in the local storage - extraMounts = [ fs.local.temp ]; - - }; - - # Compute the array of configurations - configs = stdexp.buildConfigs { - inherit varConf genConf; - }; - - exec = {nextStage, conf, ...}: stages.exec { - inherit nextStage; - pre = '' - CDIR=$PWD - if [[ "${conf.tracing}" == "yes" ]]; then - export NANOS6_CONFIG_OVERRIDE="version.instrument=ctf" - fi - EXECDIR="${fs.local.temp}/out/$GARLIC_USER/$GARLIC_UNIT/$GARLIC_RUN" - mkdir -p $EXECDIR - cd $EXECDIR - ln -fs ${conf.fwiInput}/InputModels InputModels || true - ''; - argv = [ - "${conf.fwiInput}/fwi_params.txt" - "${conf.fwiInput}/fwi_frequencies.txt" - "-1" # Fordward steps - "-1" # Backward steps - conf.ioFreq # Write/read frequency - ]; - post = '' - rm -rf Results || true - if [[ "${conf.tracing}" == "yes" ]]; then - mv trace_* $CDIR - fi - ''; - }; - - apps = bsc.garlic.apps; - - # FWI program - program = {nextStage, conf, ...}: apps.fwi.solver.override { - inherit (conf) cc gitBranch fwiInput; - }; - - pipeline = stdexp.stdPipeline ++ [ exec program ]; - -in - - stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/index.nix b/garlic/exp/index.nix index f6a518d..01275fb 100644 --- a/garlic/exp/index.nix +++ b/garlic/exp/index.nix @@ -98,9 +98,9 @@ }; fwi = { - granularity = callPackage ./fwi/granularity.nix { }; - strong_scaling_task = callPackage ./fwi/strong_scaling_task.nix { }; - strong_scaling_forkjoin = callPackage ./fwi/strong_scaling_forkjoin.nix { }; + granularity = callPackage ./fwi/granularity.nix { }; + ss = callPackage ./fwi/ss.nix { }; + strong_scaling_mpionly = callPackage ./fwi/strong_scaling_mpionly.nix { }; data_reuse = callPackage ./fwi/data_reuse.nix { }; strong_scaling_io = callPackage ./fwi/strong_scaling_io.nix { }; From 9aa07993b2088db832a0c414760cc385e8b628eb Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 12 Apr 2021 14:41:26 +0200 Subject: [PATCH 633/987] fwi: refactor ss and granularity experiments A common.nix file contains the shared stages --- garlic/exp/fwi/common.nix | 59 ++++++++++++++++++++++++++ garlic/exp/fwi/granularity.nix | 77 +++++++--------------------------- garlic/exp/fwi/ss.nix | 61 ++++----------------------- 3 files changed, 84 insertions(+), 113 deletions(-) create mode 100644 garlic/exp/fwi/common.nix diff --git a/garlic/exp/fwi/common.nix b/garlic/exp/fwi/common.nix new file mode 100644 index 0000000..5ac38ea --- /dev/null +++ b/garlic/exp/fwi/common.nix @@ -0,0 +1,59 @@ +{ + stdenv +, stdexp +, bsc +, stages +}: + +with stdenv.lib; + +rec { + + # We split these into a separate group so we can remove the blocksize + # later. + forkJoinBranches = [ "garlic/mpi+send+omp+fork" ]; + + # Returns true if the given config is in the forkJoinBranches list + isForkJoin = c: any (e: c.gitBranch == e) forkJoinBranches; + + # Set the blocksize to null for the fork join branch + fixBlocksize = c: if (isForkJoin c) then (c // { blocksize = null; }) else c; + + exec = {nextStage, conf, ...}: stages.exec { + inherit nextStage; + + pre = '' + CDIR=$(pwd) + EXECDIR="${conf.tempDir}/out/$GARLIC_USER/$GARLIC_UNIT/$GARLIC_RUN" + mkdir -p "$EXECDIR" + cd "$EXECDIR" + ln -fs ${conf.fwiInput}/InputModels InputModels || true + '' + optionalString (conf.enableCTF) '' + export NANOS6_CONFIG_OVERRIDE="version.instrument=ctf" + ''; + + argv = [ + "${conf.fwiInput}/fwi_params.txt" + "${conf.fwiInput}/fwi_frequencies.txt" + ] ++ optional (! isForkJoin conf) conf.blocksize ++ [ + "-1" # Fordward steps + "-1" # Backward steps + conf.ioFreq # Write/read frequency + ]; + + post = '' + rm -rf Results || true + '' + optionalString (conf.enableCTF) '' + mv trace_* "$CDIR" + ''; + }; + + apps = bsc.garlic.apps; + + # FWI program + program = {nextStage, conf, ...}: apps.fwi.solver.override { + inherit (conf) gitBranch fwiInput; + }; + + pipeline = stdexp.stdPipeline ++ [ exec program ]; +} diff --git a/garlic/exp/fwi/granularity.nix b/garlic/exp/fwi/granularity.nix index 7773b3b..df3ceb2 100644 --- a/garlic/exp/fwi/granularity.nix +++ b/garlic/exp/fwi/granularity.nix @@ -6,9 +6,12 @@ , bsc , targetMachine , stages +, garlicTools +, callPackage }: with stdenv.lib; +with garlicTools; let @@ -27,38 +30,24 @@ let # "garlic/seq" ]; - blocksize = [ 1 2 4 8 16 32 64 128 256 ]; + blocksize = range2 1 256; - n = [ - {nx=100; nz=100; ny=8000; ntpn=2; nn=1;} - ]; + n = [ {nx=100; nz=100; ny=8000; ntpn=2; nodes=1;} ]; }; -# The c value contains something like: -# { -# n = { nx=500; ny=500; nz=500; } -# blocksize = 1; -# gitBranch = "garlic/tampi+send+oss+task"; -# } - machineConfig = targetMachine.config; # Generate the complete configuration for each unit - genConf = with bsc; c: targetMachine.config // rec { - expName = "fwi"; - unitName = "${expName}-test"; + genConf = c: targetMachine.config // rec { + expName = "fwi-granularity"; + unitName = "${expName}" + + "-bs${toString blocksize}" + + "-${toString gitBranch}"; + inherit (machineConfig) hw; - - cc = icc; inherit (c) gitBranch blocksize; - - #nx = c.n.nx; - #ny = c.n.ny; - #nz = c.n.nz; - - # Same but shorter: - inherit (c.n) nx ny nz ntpn nn; + inherit (c.n) nx ny nz ntpn nodes; fwiInput = bsc.apps.fwi.input.override { inherit (c.n) nx ny nz; @@ -69,20 +58,19 @@ let # Repeat the execution of each unit several times loops = 10; - #loops = 1; # Resources cpusPerTask = hw.cpusPerSocket; ntasksPerNode = ntpn; - nodes = nn; qos = "debug"; time = "02:00:00"; jobName = unitName; - tracing = "no"; + enableCTF = false; # Enable permissions to write in the local storage extraMounts = [ fs.local.temp ]; + tempDir = fs.local.temp; }; @@ -91,42 +79,9 @@ let inherit varConf genConf; }; - exec = {nextStage, conf, ...}: stages.exec { - inherit nextStage; - pre = '' - CDIR=$PWD - if [[ "${conf.tracing}" == "yes" ]]; then - export NANOS6_CONFIG_OVERRIDE="version.instrument=ctf" - fi - EXECDIR="${fs.local.temp}/out/$GARLIC_USER/$GARLIC_UNIT/$GARLIC_RUN" - mkdir -p $EXECDIR - cd $EXECDIR - ln -fs ${conf.fwiInput}/InputModels InputModels || true - ''; - argv = [ - "${conf.fwiInput}/fwi_params.txt" - "${conf.fwiInput}/fwi_frequencies.txt" - conf.blocksize - "-1" # Fordward steps - "-1" # Backward steps - conf.ioFreq # Write/read frequency - ]; - post = '' - rm -rf Results || true - if [[ "${conf.tracing}" == "yes" ]]; then - mv trace_* $CDIR - fi - ''; - }; + common = callPackage ./common.nix {}; - apps = bsc.garlic.apps; - - # FWI program - program = {nextStage, conf, ...}: apps.fwi.solver.override { - inherit (conf) cc gitBranch fwiInput; - }; - - pipeline = stdexp.stdPipeline ++ [ exec program ]; + inherit (common) fixBlocksize pipeline; in diff --git a/garlic/exp/fwi/ss.nix b/garlic/exp/fwi/ss.nix index 7329d1d..ff8c4ec 100644 --- a/garlic/exp/fwi/ss.nix +++ b/garlic/exp/fwi/ss.nix @@ -9,6 +9,7 @@ , targetMachine , stages , garlicTools +, callPackage , enableExtended ? false }: @@ -17,23 +18,20 @@ with garlicTools; let - inherit (targetMachine) fs; + common = callPackage ./common.nix {}; - # We split these into a separate group so we can remove the blocksize - # later. - forkJoinBranches = [ - "garlic/mpi+send+omp+fork" - ]; + inherit (targetMachine) fs; # Initial variable configuration varConf = { gitBranch = [ "garlic/tampi+isend+oss+task" - ] ++ optionals (enableExtended) ([ + ] ++ optionals (enableExtended) [ "garlic/tampi+send+oss+task" "garlic/mpi+send+omp+task" "garlic/mpi+send+oss+task" - ] ++ forkJoinBranches); + "garlic/mpi+send+omp+fork" + ]; blocksize = if (enableExtended) then range2 1 16 @@ -47,7 +45,7 @@ let machineConfig = targetMachine.config; # Generate the complete configuration for each unit - genConf = c: targetMachine.config // rec { + genConf = c: machineConfig // rec { expName = "fwi-ss"; unitName = "${expName}" + "-nodes${toString nodes}" @@ -80,15 +78,9 @@ let # Enable permissions to write in the local storage extraMounts = [ fs.local.temp ]; - + tempDir = fs.local.temp; }; - # Returns true if the given config is in the forkJoinBranches list - isForkJoin = c: any (e: c.gitBranch == e) forkJoinBranches; - - # Set the blocksize to null for the fork join branch - fixBlocksize = c: if (isForkJoin c) then (c // { blocksize = null; }) else c; - # Compute the array of configurations allConfigs = stdexp.buildConfigs { inherit varConf genConf; @@ -98,42 +90,7 @@ let # join branch, even if we have multiple blocksizes. configs = unique (map fixBlocksize allConfigs); - exec = {nextStage, conf, ...}: stages.exec { - inherit nextStage; - pre = '' - CDIR=$(pwd) - EXECDIR="${fs.local.temp}/out/$GARLIC_USER/$GARLIC_UNIT/$GARLIC_RUN" - mkdir -p "$EXECDIR" - cd "$EXECDIR" - ln -fs ${conf.fwiInput}/InputModels InputModels || true - '' + optionalString (conf.enableCTF) '' - export NANOS6_CONFIG_OVERRIDE="version.instrument=ctf" - ''; - argv = [ - "${conf.fwiInput}/fwi_params.txt" - "${conf.fwiInput}/fwi_frequencies.txt" - ] - ++ optional (isForkJoin conf) conf.blocksize - ++ [ - "-1" # Fordward steps - "-1" # Backward steps - conf.ioFreq # Write/read frequency - ]; - post = '' - rm -rf Results || true - '' + optionalString (conf.enableCTF) '' - mv trace_* "$CDIR" - ''; - }; - - apps = bsc.garlic.apps; - - # FWI program - program = {nextStage, conf, ...}: apps.fwi.solver.override { - inherit (conf) gitBranch fwiInput; - }; - - pipeline = stdexp.stdPipeline ++ [ exec program ]; + inherit (common) fixBlocksize pipeline; in From 41665bc6fc64d8145b1fd8ce21dd984f7c4744ce Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 12 Apr 2021 15:01:25 +0200 Subject: [PATCH 634/987] fwi: refactor config generation into common.nix --- garlic/exp/fwi/common.nix | 24 ++++++++++++++++++------ garlic/exp/fwi/granularity.nix | 25 ++++++------------------- garlic/exp/fwi/ss.nix | 15 +++++---------- 3 files changed, 29 insertions(+), 35 deletions(-) diff --git a/garlic/exp/fwi/common.nix b/garlic/exp/fwi/common.nix index 5ac38ea..ebaf371 100644 --- a/garlic/exp/fwi/common.nix +++ b/garlic/exp/fwi/common.nix @@ -7,17 +7,29 @@ with stdenv.lib; +# Common definitions used by fwi experiments rec { - # We split these into a separate group so we can remove the blocksize - # later. - forkJoinBranches = [ "garlic/mpi+send+omp+fork" ]; + branchesWithoutBlocksize = [ + "garlic/mpi+send+omp+fork" + "garlic/mpi+send+seq" + ]; # Returns true if the given config is in the forkJoinBranches list - isForkJoin = c: any (e: c.gitBranch == e) forkJoinBranches; + needsBlocksize = c: ! any (e: c.gitBranch == e) branchesWithoutBlocksize; # Set the blocksize to null for the fork join branch - fixBlocksize = c: if (isForkJoin c) then (c // { blocksize = null; }) else c; + fixBlocksize = c: if (needsBlocksize c) then c + else (c // { blocksize = null; }); + + # Generate the configs by filtering the unneded blocksizes + getConfigs = {varConf, genConf}: + let + allConfigs = stdexp.buildConfigs { inherit varConf genConf; }; + in + # The unique function ensures that we only run one config for the fork + # join branch, even if we have multiple blocksizes. + unique (map fixBlocksize allConfigs); exec = {nextStage, conf, ...}: stages.exec { inherit nextStage; @@ -35,7 +47,7 @@ rec { argv = [ "${conf.fwiInput}/fwi_params.txt" "${conf.fwiInput}/fwi_frequencies.txt" - ] ++ optional (! isForkJoin conf) conf.blocksize ++ [ + ] ++ optional (needsBlocksize conf) conf.blocksize ++ [ "-1" # Fordward steps "-1" # Backward steps conf.ioFreq # Write/read frequency diff --git a/garlic/exp/fwi/granularity.nix b/garlic/exp/fwi/granularity.nix index df3ceb2..5b09e5a 100644 --- a/garlic/exp/fwi/granularity.nix +++ b/garlic/exp/fwi/granularity.nix @@ -19,21 +19,9 @@ let # Initial variable configuration varConf = { - gitBranch = [ -# "garlic/tampi+send+oss+task" - "garlic/tampi+isend+oss+task" -# "garlic/mpi+send+omp+task" -# "garlic/mpi+send+oss+task" -# "garlic/mpi+send+seq" -# "garlic/oss+task" -# "garlic/omp+task" -# "garlic/seq" - ]; - + gitBranch = [ "garlic/tampi+isend+oss+task" ]; blocksize = range2 1 256; - n = [ {nx=100; nz=100; ny=8000; ntpn=2; nodes=1;} ]; - }; machineConfig = targetMachine.config; @@ -74,14 +62,13 @@ let }; - # Compute the array of configurations - configs = stdexp.buildConfigs { - inherit varConf genConf; - }; - common = callPackage ./common.nix {}; - inherit (common) fixBlocksize pipeline; + inherit (common) getConfigs pipeline; + + configs = getConfigs { + inherit varConf genConf; + }; in diff --git a/garlic/exp/fwi/ss.nix b/garlic/exp/fwi/ss.nix index ff8c4ec..25ff81d 100644 --- a/garlic/exp/fwi/ss.nix +++ b/garlic/exp/fwi/ss.nix @@ -18,8 +18,6 @@ with garlicTools; let - common = callPackage ./common.nix {}; - inherit (targetMachine) fs; # Initial variable configuration @@ -81,17 +79,14 @@ let tempDir = fs.local.temp; }; - # Compute the array of configurations - allConfigs = stdexp.buildConfigs { + common = callPackage ./common.nix {}; + + inherit (common) getConfigs pipeline; + + configs = getConfigs { inherit varConf genConf; }; - # The unique function ensures that we only run one config for the fork - # join branch, even if we have multiple blocksizes. - configs = unique (map fixBlocksize allConfigs); - - inherit (common) fixBlocksize pipeline; - in stdexp.genExperiment { inherit configs pipeline; } From 788dd13ebd1f8f6757177436c818fbe5796f95dd Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 12 Apr 2021 15:37:39 +0200 Subject: [PATCH 635/987] fwi: merge mpi pure experiment The getResources function is used to assign the proper cpu binding depending on the version. However, additional contraints are required to ensure that we have enough points in Y. By default the mpi+send+seq branch is disabled. --- garlic/exp/fwi/common.nix | 9 ++ garlic/exp/fwi/ss.nix | 16 +-- garlic/exp/fwi/strong_scaling_mpionly.nix | 130 ---------------------- 3 files changed, 18 insertions(+), 137 deletions(-) delete mode 100644 garlic/exp/fwi/strong_scaling_mpionly.nix diff --git a/garlic/exp/fwi/common.nix b/garlic/exp/fwi/common.nix index ebaf371..b220df2 100644 --- a/garlic/exp/fwi/common.nix +++ b/garlic/exp/fwi/common.nix @@ -31,6 +31,15 @@ rec { # join branch, even if we have multiple blocksizes. unique (map fixBlocksize allConfigs); + getResources = {gitBranch, hw}: + if (gitBranch == "garlic/mpi+send+seq") then { + cpusPerTask = hw.cpusPerSocket; + ntasksPerNode = hw.socketsPerNode; + } else { + cpusPerTask = 1; + ntasksPerNode = hw.cpusPerNode; + }; + exec = {nextStage, conf, ...}: stages.exec { inherit nextStage; diff --git a/garlic/exp/fwi/ss.nix b/garlic/exp/fwi/ss.nix index 25ff81d..2302d43 100644 --- a/garlic/exp/fwi/ss.nix +++ b/garlic/exp/fwi/ss.nix @@ -17,6 +17,8 @@ with stdenv.lib; with garlicTools; let + common = callPackage ./common.nix {}; + inherit (common) getConfigs getResources pipeline; inherit (targetMachine) fs; @@ -29,13 +31,16 @@ let "garlic/mpi+send+omp+task" "garlic/mpi+send+oss+task" "garlic/mpi+send+omp+fork" + # FIXME: the mpi pure version has additional constraints with the + # number of planes in Y. By now is disabled. + #"garlic/mpi+send+seq" ]; blocksize = if (enableExtended) then range2 1 16 else [ 2 ]; - n = [ {nx=100; nz=100; ny=8000;} ]; + n = [ { nx=100; ny=8000; nz=100; } ]; nodes = range2 1 16; }; @@ -65,8 +70,9 @@ let loops = 10; # Resources - cpusPerTask = hw.cpusPerSocket; - ntasksPerNode = hw.socketsPerNode; + inherit (getResources { inherit gitBranch hw; }) + cpusPerTask ntasksPerNode; + nodes = c.nodes; qos = "debug"; time = "02:00:00"; @@ -79,10 +85,6 @@ let tempDir = fs.local.temp; }; - common = callPackage ./common.nix {}; - - inherit (common) getConfigs pipeline; - configs = getConfigs { inherit varConf genConf; }; diff --git a/garlic/exp/fwi/strong_scaling_mpionly.nix b/garlic/exp/fwi/strong_scaling_mpionly.nix deleted file mode 100644 index 94ffd8d..0000000 --- a/garlic/exp/fwi/strong_scaling_mpionly.nix +++ /dev/null @@ -1,130 +0,0 @@ -# Strong scaling test for FWI variants based exclusively on MPI. This -# experiment does not rely on block sizes. An MPI process is instantiated per -# core. - -{ - stdenv -, stdexp -, bsc -, targetMachine -, stages -}: - -with stdenv.lib; - -let - - inherit (targetMachine) fs; - - # Initial variable configuration - varConf = { - gitBranch = [ - "garlic/mpi+send+seq" - ]; - - blocksize = [ 0 ]; - - n = [ - {nx=100; nz=100; ny=8000;} - ]; - - # Not enough planes for 4, 8 and 16 nodes - nodes = [ 1 2 ]; - - }; - -# The c value contains something like: -# { -# n = { nx=500; ny=500; nz=500; } -# blocksize = 1; -# gitBranch = "garlic/tampi+send+oss+task"; -# } - - machineConfig = targetMachine.config; - - # Generate the complete configuration for each unit - genConf = with bsc; c: targetMachine.config // rec { - expName = "fwi"; - unitName = "${expName}-test"; - inherit (machineConfig) hw; - - cc = icc; - inherit (c) gitBranch blocksize; - - #nx = c.n.nx; - #ny = c.n.ny; - #nz = c.n.nz; - - # Same but shorter: - inherit (c.n) nx ny nz; - - fwiInput = bsc.apps.fwi.input.override { - inherit (c.n) nx ny nz; - }; - - # Other FWI parameters - ioFreq = -1; - - # Repeat the execution of each unit several times - loops = 10; - #loops = 1; - - # Resources - cpusPerTask = 1; - ntasksPerNode = hw.cpusPerNode; - nodes = c.nodes; - qos = "debug"; - time = "02:00:00"; - jobName = unitName; - - tracing = "no"; - - # Enable permissions to write in the local storage - extraMounts = [ fs.local.temp ]; - - }; - - # Compute the array of configurations - configs = stdexp.buildConfigs { - inherit varConf genConf; - }; - - exec = {nextStage, conf, ...}: stages.exec { - inherit nextStage; - pre = '' - CDIR=$PWD - if [[ "${conf.tracing}" == "yes" ]]; then - export NANOS6_CONFIG_OVERRIDE="version.instrument=ctf" - fi - EXECDIR="${fs.local.temp}/out/$GARLIC_USER/$GARLIC_UNIT/$GARLIC_RUN" - mkdir -p $EXECDIR - cd $EXECDIR - ln -fs ${conf.fwiInput}/InputModels InputModels || true - ''; - argv = [ - "${conf.fwiInput}/fwi_params.txt" - "${conf.fwiInput}/fwi_frequencies.txt" - "-1" # Fordward steps - "-1" # Backward steps - conf.ioFreq # Write/read frequency - ]; - post = '' - rm -rf Results || true - if [[ "${conf.tracing}" == "yes" ]]; then - mv trace_* $CDIR - fi - ''; - }; - - apps = bsc.garlic.apps; - - # FWI program - program = {nextStage, conf, ...}: apps.fwi.solver.override { - inherit (conf) cc gitBranch fwiInput; - }; - - pipeline = stdexp.stdPipeline ++ [ exec program ]; - -in - - stdexp.genExperiment { inherit configs pipeline; } From 02a103565cb1d6752a61fd33ef1de4eac50a84a5 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 12 Apr 2021 15:48:59 +0200 Subject: [PATCH 636/987] fwi: use common.nix in reuse experiment --- garlic/exp/fwi/{data_reuse.nix => reuse.nix} | 71 +++++--------------- garlic/exp/index.nix | 3 +- 2 files changed, 17 insertions(+), 57 deletions(-) rename garlic/exp/fwi/{data_reuse.nix => reuse.nix} (55%) diff --git a/garlic/exp/fwi/data_reuse.nix b/garlic/exp/fwi/reuse.nix similarity index 55% rename from garlic/exp/fwi/data_reuse.nix rename to garlic/exp/fwi/reuse.nix index 84f0c4b..e767281 100644 --- a/garlic/exp/fwi/data_reuse.nix +++ b/garlic/exp/fwi/reuse.nix @@ -24,6 +24,7 @@ , bsc , targetMachine , stages +, callPackage }: with stdenv.lib; @@ -46,29 +47,17 @@ let ]; }; -# The c value contains something like: -# { -# n = { nx=500; ny=500; nz=500; } -# blocksize = 1; -# gitBranch = "garlic/tampi+send+oss+task"; -# } - machineConfig = targetMachine.config; # Generate the complete configuration for each unit - genConf = with bsc; c: targetMachine.config // rec { - expName = "fwi"; - unitName = "${expName}-test"; + genConf = c: targetMachine.config // rec { + expName = "fwi-reuse"; + unitName = "${expName}" + + "-bs${toString blocksize}" + + "-${toString gitBranch}"; + inherit (machineConfig) hw; - - cc = icc; inherit (c) gitBranch blocksize; - - #nx = c.n.nx; - #ny = c.n.ny; - #nz = c.n.nz; - - # Same but shorter: inherit (c.n) nx ny nz; fwiInput = bsc.apps.fwi.input.override { @@ -77,7 +66,6 @@ let # Repeat the execution of each unit several times loops = 10; - #loops = 1; # Resources cpusPerTask = hw.cpusPerSocket; @@ -87,49 +75,22 @@ let time = "02:00:00"; jobName = unitName; + enableCTF = false; + ioFreq = -1; + # Enable permissions to write in the local storage extraMounts = [ fs.local.temp ]; - + tempDir = fs.local.temp; }; - # Compute the array of configurations - configs = stdexp.buildConfigs { + common = callPackage ./common.nix {}; + + inherit (common) getConfigs pipeline; + + configs = getConfigs { inherit varConf genConf; }; - exec = {nextStage, conf, ...}: stages.exec { - inherit nextStage; - pre = '' - #CDIR=$PWD - #export NANOS6_CONFIG_OVERRIDE="version.instrument=ctf" - EXECDIR="${fs.local.temp}/out/$GARLIC_USER/$GARLIC_UNIT/$GARLIC_RUN" - mkdir -p $EXECDIR - cd $EXECDIR - ln -fs ${conf.fwiInput}/InputModels InputModels || true - ''; - argv = [ - "${conf.fwiInput}/fwi_params.txt" - "${conf.fwiInput}/fwi_frequencies.txt" - conf.blocksize - "-1" # Fordward steps - "-1" # Backward steps - "-1" # Write/read frequency - ]; - post = '' - rm -rf Results || true - #mv trace_* $CDIR - ''; - }; - - apps = bsc.garlic.apps; - - # FWI program - program = {nextStage, conf, ...}: apps.fwi.solver.override { - inherit (conf) cc gitBranch fwiInput; - }; - - pipeline = stdexp.stdPipeline ++ [ exec program ]; - in stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/index.nix b/garlic/exp/index.nix index 01275fb..6b8a638 100644 --- a/garlic/exp/index.nix +++ b/garlic/exp/index.nix @@ -100,9 +100,8 @@ fwi = { granularity = callPackage ./fwi/granularity.nix { }; ss = callPackage ./fwi/ss.nix { }; + reuse = callPackage ./fwi/reuse.nix { }; - strong_scaling_mpionly = callPackage ./fwi/strong_scaling_mpionly.nix { }; - data_reuse = callPackage ./fwi/data_reuse.nix { }; strong_scaling_io = callPackage ./fwi/strong_scaling_io.nix { }; sync_io = callPackage ./fwi/sync_io.nix { }; }; From 4afda7dbfb0513df9ec3b461d5cb5e2004361c44 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 12 Apr 2021 16:27:18 +0200 Subject: [PATCH 637/987] fwi: use common.nix in sync_io experiment --- garlic/exp/fwi/sync_io.nix | 76 +++++++------------------------------- 1 file changed, 14 insertions(+), 62 deletions(-) diff --git a/garlic/exp/fwi/sync_io.nix b/garlic/exp/fwi/sync_io.nix index 59e791d..3498b0e 100644 --- a/garlic/exp/fwi/sync_io.nix +++ b/garlic/exp/fwi/sync_io.nix @@ -8,11 +8,14 @@ , bsc , targetMachine , stages +, callPackage }: with stdenv.lib; let + common = callPackage ./common.nix {}; + inherit (common) getConfigs getResources pipeline; inherit (targetMachine) fs; @@ -35,34 +38,20 @@ let ]; nodes = [ 4 ]; - ioFreq = [ 9999 (-1) ]; - }; -# The c value contains something like: -# { -# n = { nx=500; ny=500; nz=500; } -# blocksize = 1; -# gitBranch = "garlic/tampi+send+oss+task"; -# } - machineConfig = targetMachine.config; # Generate the complete configuration for each unit genConf = with bsc; c: targetMachine.config // rec { - expName = "fwi"; - unitName = "${expName}-test"; + expName = "fwi-sync-io"; + unitName = "${expName}" + + "-ioFreq${toString ioFreq}" + + "-${toString gitBranch}"; + inherit (machineConfig) hw; - - cc = icc; inherit (c) gitBranch blocksize; - - #nx = c.n.nx; - #ny = c.n.ny; - #nz = c.n.nz; - - # Same but shorter: inherit (c.n) nx ny nz; fwiInput = bsc.apps.fwi.input.override { @@ -74,65 +63,28 @@ let # Repeat the execution of each unit several times loops = 10; - #loops = 1; # Resources - cpusPerTask = hw.cpusPerSocket; - ntasksPerNode = 2; + inherit (getResources { inherit gitBranch hw; }) + cpusPerTask ntasksPerNode; + nodes = c.nodes; qos = "debug"; time = "02:00:00"; jobName = unitName; - tracing = "no"; + enableCTF = false; # Enable permissions to write in the local storage extraMounts = [ fs.local.temp ]; + tempDir = fs.local.temp; }; - # Compute the array of configurations - configs = stdexp.buildConfigs { + configs = getConfigs { inherit varConf genConf; }; - exec = {nextStage, conf, ...}: stages.exec { - inherit nextStage; - pre = '' - CDIR=$PWD - if [[ "${conf.tracing}" == "yes" ]]; then - export NANOS6_CONFIG_OVERRIDE="version.instrument=ctf" - fi - EXECDIR="${fs.local.temp}/out/$GARLIC_USER/$GARLIC_UNIT/$GARLIC_RUN" - mkdir -p $EXECDIR - cd $EXECDIR - ln -fs ${conf.fwiInput}/InputModels InputModels || true - ''; - argv = [ - "${conf.fwiInput}/fwi_params.txt" - "${conf.fwiInput}/fwi_frequencies.txt" - conf.blocksize - "-1" # Fordward steps - "-1" # Backward steps - conf.ioFreq # Write/read frequency - ]; - post = '' - rm -rf Results || true - if [[ "${conf.tracing}" == "yes" ]]; then - mv trace_* $CDIR - fi - ''; - }; - - apps = bsc.garlic.apps; - - # FWI program - program = {nextStage, conf, ...}: apps.fwi.solver.override { - inherit (conf) cc gitBranch fwiInput; - }; - - pipeline = stdexp.stdPipeline ++ [ exec program ]; - in stdexp.genExperiment { inherit configs pipeline; } From b0af9b86080d3e6d62647c2ad4f267bad92a89e9 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 12 Apr 2021 17:41:59 +0200 Subject: [PATCH 638/987] srun: add postSrun hook --- garlic/stages/srun.nix | 6 +++++- garlic/stdexp.nix | 4 ++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/garlic/stages/srun.nix b/garlic/stages/srun.nix index d7e8539..57fc667 100644 --- a/garlic/stages/srun.nix +++ b/garlic/stages/srun.nix @@ -8,6 +8,7 @@ , cpuBind , nixPrefix , preSrun ? "" +, postSrun ? "" , srunOptions ? "" , output ? "stdout.log" , error ? "stderr.log" @@ -26,14 +27,17 @@ stdenv.mkDerivation rec { ${preSrun} - exec ${slurm}/bin/srun \ + ${slurm}/bin/srun \ --mpi=pmi2 \ --cpu-bind=${cpuBind} \ --output=${output} \ --error=${error} \ ${srunOptions} \ ${nixPrefix}${stageProgram nextStage} + + ${postSrun} EOF + chmod +x $out ''; } diff --git a/garlic/stdexp.nix b/garlic/stdexp.nix index 52e8ab9..33a18b1 100644 --- a/garlic/stdexp.nix +++ b/garlic/stdexp.nix @@ -76,12 +76,12 @@ rec { inherit nextStage; }; - srun = {nextStage, conf, preSrun ? "", ...}: ( + srun = {nextStage, conf, preSrun ? "", postSrun ? "", ...}: ( assert (assertMsg (!(conf ? cpuBind)) "cpuBind is no longer available in the standard srun stage"); stages.srun { inherit (conf) nixPrefix; - inherit nextStage preSrun; + inherit nextStage preSrun postSrun; # Binding is set to cores always cpuBind = "cores,verbose"; From 419e7f95ccf0f41c97ed7414ecd2a7b0bb756297 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 12 Apr 2021 17:43:30 +0200 Subject: [PATCH 639/987] fwi: avoid input generation The ModelGenerator is now included in the fwi-params, so that the input can be generated at runtime. --- garlic/apps/fwi/default.nix | 4 ++-- garlic/apps/fwi/{input.nix => params.nix} | 8 +++++--- garlic/apps/index.nix | 4 ++-- 3 files changed, 9 insertions(+), 7 deletions(-) rename garlic/apps/fwi/{input.nix => params.nix} (92%) diff --git a/garlic/apps/fwi/default.nix b/garlic/apps/fwi/default.nix index 5b1a9d6..ef31127 100644 --- a/garlic/apps/fwi/default.nix +++ b/garlic/apps/fwi/default.nix @@ -5,7 +5,7 @@ , mcxx ? null , cc , gitBranch ? "garlic/tampi+send+oss+task" -, fwiInput +, fwiParams }: with stdenv.lib; @@ -47,7 +47,7 @@ stdenv.mkDerivation rec { make depend - cp ${fwiInput}/generated_model_params.h src/ + cp ${fwiParams}/generated_model_params.h src/ ''; # We compile the ModelGenerator using gcc *only*, as otherwise it will diff --git a/garlic/apps/fwi/input.nix b/garlic/apps/fwi/params.nix similarity index 92% rename from garlic/apps/fwi/input.nix rename to garlic/apps/fwi/params.nix index 848759f..78efc33 100644 --- a/garlic/apps/fwi/input.nix +++ b/garlic/apps/fwi/params.nix @@ -9,7 +9,7 @@ with stdenv.lib; with builtins; stdenv.mkDerivation rec { - name = "fwi-input"; + name = "fwi-params"; src = builtins.fetchGit { url = "ssh://git@bscpm03.bsc.es/garlic/apps/fwi.git"; @@ -41,13 +41,15 @@ stdenv.mkDerivation rec { # Also, we need to compile it with the builder platform as target, as is going # to be executed during the build to generate the src/generated_model_params.h # header. - makeFlags = [ "COMPILER=GNU" "params" "input" ]; + makeFlags = [ "COMPILER=GNU" "params" ]; installPhase = '' mkdir -p $out/ cp src/generated_model_params.h $out/ cp SetupParams/fwi_params.txt $out/ cp SetupParams/fwi_frequencies.txt $out/ - cp -r InputModels $out/ + + mkdir -p $out/bin + cp ModelGenerator $out/bin/ ''; } diff --git a/garlic/apps/index.nix b/garlic/apps/index.nix index 41da295..c6ef494 100644 --- a/garlic/apps/index.nix +++ b/garlic/apps/index.nix @@ -54,9 +54,9 @@ hpccg = callPackage ./hpccg/default.nix { }; fwi = rec { - input = callPackage ./fwi/input.nix { }; + params = callPackage ./fwi/params.nix { }; solver = callPackage ./fwi/default.nix { - fwiInput = input; + fwiParams = params; }; }; } From 47b326c6466427225341e2f16644dee25054e5a1 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 12 Apr 2021 17:46:07 +0200 Subject: [PATCH 640/987] fwi: generate the input at runtime --- garlic/exp/fwi/common.nix | 78 ++++++++++++++++++++++++++-------- garlic/exp/fwi/granularity.nix | 4 -- garlic/exp/fwi/reuse.nix | 4 -- garlic/exp/fwi/ss.nix | 4 -- garlic/exp/fwi/sync_io.nix | 4 -- 5 files changed, 61 insertions(+), 33 deletions(-) diff --git a/garlic/exp/fwi/common.nix b/garlic/exp/fwi/common.nix index b220df2..cbc49a4 100644 --- a/garlic/exp/fwi/common.nix +++ b/garlic/exp/fwi/common.nix @@ -40,41 +40,85 @@ rec { ntasksPerNode = hw.cpusPerNode; }; + srun = {nextStage, conf, ...}: + let + fwiParams = bsc.apps.fwi.params.override { + inherit (conf) nx ny nz; + }; + in + stdexp.stdStages.srun { + inherit nextStage conf; + # Now we add some commands to execute before calling srun. These will + # only run in one rank (the first in the list of allocated nodes) + preSrun = '' + export GARLIC_FWI_SRUNDIR=$(pwd) + export GARLIC_FWI_EXECDIR="${conf.tempDir}/out/$GARLIC_USER/$GARLIC_UNIT/$GARLIC_RUN" + mkdir -p "$GARLIC_FWI_EXECDIR" + + export GARLIC_FWI_PARAMS="${fwiParams}/fwi_params.txt" + export GARLIC_FWI_FREQ="${fwiParams}/fwi_frequencies.txt" + + # We cannot change the working directory of srun, so we use a + # subshell to ignore the cd + ( + # Generate the input dataset + >&2 echo "generating the input dataset" + cd "$GARLIC_FWI_EXECDIR" + ${fwiParams}/bin/ModelGenerator \ + -m "$GARLIC_FWI_PARAMS" "$GARLIC_FWI_FREQ" + ) + ''; + + postSrun = optionalString (conf.enableCTF) '' + # Save the traces + mv "$GARLIC_FWI_EXECDIR"/trace_* . + '' + '' + # Remove everything else + rm -rf "$GARLIC_FWI_EXECDIR" + ''; + }; + exec = {nextStage, conf, ...}: stages.exec { inherit nextStage; + # FIXME: FWI should allow the I/O directory to be specified as a + # parameter pre = '' - CDIR=$(pwd) - EXECDIR="${conf.tempDir}/out/$GARLIC_USER/$GARLIC_UNIT/$GARLIC_RUN" - mkdir -p "$EXECDIR" - cd "$EXECDIR" - ln -fs ${conf.fwiInput}/InputModels InputModels || true + # Run fwi at the in a directory with fast local storage + cd "$GARLIC_FWI_EXECDIR" + + echo >&2 "Current dir: $(pwd)" + echo >&2 "Using PARAMS=$GARLIC_FWI_PARAMS and FREQ=$GARLIC_FWI_FREQ" '' + optionalString (conf.enableCTF) '' export NANOS6_CONFIG_OVERRIDE="version.instrument=ctf" ''; argv = [ - "${conf.fwiInput}/fwi_params.txt" - "${conf.fwiInput}/fwi_frequencies.txt" + ''"$GARLIC_FWI_PARAMS"'' + ''"$GARLIC_FWI_FREQ"'' ] ++ optional (needsBlocksize conf) conf.blocksize ++ [ "-1" # Fordward steps "-1" # Backward steps conf.ioFreq # Write/read frequency ]; - - post = '' - rm -rf Results || true - '' + optionalString (conf.enableCTF) '' - mv trace_* "$CDIR" - ''; }; apps = bsc.garlic.apps; # FWI program - program = {nextStage, conf, ...}: apps.fwi.solver.override { - inherit (conf) gitBranch fwiInput; - }; + program = {nextStage, conf, ...}: + let + fwiParams = bsc.apps.fwi.params.override { + inherit (conf) nx ny nz; + }; + in + apps.fwi.solver.override { + inherit (conf) gitBranch; + inherit fwiParams; + }; - pipeline = stdexp.stdPipeline ++ [ exec program ]; + pipeline = stdexp.stdPipelineOverride { + # Replace the stdandard srun stage with our own + overrides = { inherit srun; }; + } ++ [ exec program ]; } diff --git a/garlic/exp/fwi/granularity.nix b/garlic/exp/fwi/granularity.nix index 5b09e5a..47a95ab 100644 --- a/garlic/exp/fwi/granularity.nix +++ b/garlic/exp/fwi/granularity.nix @@ -37,10 +37,6 @@ let inherit (c) gitBranch blocksize; inherit (c.n) nx ny nz ntpn nodes; - fwiInput = bsc.apps.fwi.input.override { - inherit (c.n) nx ny nz; - }; - # Other FWI parameters ioFreq = -1; diff --git a/garlic/exp/fwi/reuse.nix b/garlic/exp/fwi/reuse.nix index e767281..aac1b10 100644 --- a/garlic/exp/fwi/reuse.nix +++ b/garlic/exp/fwi/reuse.nix @@ -60,10 +60,6 @@ let inherit (c) gitBranch blocksize; inherit (c.n) nx ny nz; - fwiInput = bsc.apps.fwi.input.override { - inherit (c.n) nx ny nz; - }; - # Repeat the execution of each unit several times loops = 10; diff --git a/garlic/exp/fwi/ss.nix b/garlic/exp/fwi/ss.nix index 2302d43..b3d5980 100644 --- a/garlic/exp/fwi/ss.nix +++ b/garlic/exp/fwi/ss.nix @@ -59,10 +59,6 @@ let inherit (c) gitBranch blocksize; inherit (c.n) nx ny nz; - fwiInput = bsc.apps.fwi.input.override { - inherit (c.n) nx ny nz; - }; - # Other FWI parameters ioFreq = -1; diff --git a/garlic/exp/fwi/sync_io.nix b/garlic/exp/fwi/sync_io.nix index 3498b0e..65bc0bf 100644 --- a/garlic/exp/fwi/sync_io.nix +++ b/garlic/exp/fwi/sync_io.nix @@ -54,10 +54,6 @@ let inherit (c) gitBranch blocksize; inherit (c.n) nx ny nz; - fwiInput = bsc.apps.fwi.input.override { - inherit (c.n) nx ny nz; - }; - # Other FWI parameters ioFreq = c.ioFreq; From 58dc277d3d719b0ad52b77582d4b77ba7fd60961 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 12 Apr 2021 17:57:46 +0200 Subject: [PATCH 641/987] fwi: refactor ss-io with common.nix Also, keep the names short and consistent. --- garlic/exp/fwi/ss-io.nix | 76 +++++++++++ garlic/exp/fwi/strong_scaling_io.nix | 141 -------------------- garlic/exp/fwi/{sync_io.nix => sync-io.nix} | 0 garlic/exp/index.nix | 5 +- 4 files changed, 78 insertions(+), 144 deletions(-) create mode 100644 garlic/exp/fwi/ss-io.nix delete mode 100644 garlic/exp/fwi/strong_scaling_io.nix rename garlic/exp/fwi/{sync_io.nix => sync-io.nix} (100%) diff --git a/garlic/exp/fwi/ss-io.nix b/garlic/exp/fwi/ss-io.nix new file mode 100644 index 0000000..a561fc9 --- /dev/null +++ b/garlic/exp/fwi/ss-io.nix @@ -0,0 +1,76 @@ +# Strong scaling test for FWI variants based on tasks with and without I/O. +# This experiment solves a computationally expensive input which brings the +# storage devices to saturation when I/O is enabled. the same input us run +# without I/O for comparison purposes.. Also, the experiments are runt for a +# range of block sizes deemed as efficient according to the granularity +# experiment. + +{ + stdenv +, stdexp +, bsc +, targetMachine +, stages +, callPackage +}: + +with stdenv.lib; + +let + common = callPackage ./common.nix {}; + inherit (common) getConfigs getResources pipeline; + + inherit (targetMachine) fs; + + # Initial variable configuration + varConf = { + gitBranch = [ + "garlic/tampi+send+oss+task" + ]; + + blocksize = [ 1 2 4 8 ]; + n = [ {nx=500; nz=500; ny=16000;} ]; + nodes = [ 1 2 4 8 16 ]; + ioFreq = [ 9999 (-1) ]; + }; + + machineConfig = targetMachine.config; + + # Generate the complete configuration for each unit + genConf = c: targetMachine.config // rec { + expName = "fwi-ss-io"; + unitName = "${expName}" + + "-nodes${toString nodes}" + + "-bs${toString blocksize}" + + "-ioFreq${toString ioFreq}" + + "-${toString gitBranch}"; + + inherit (machineConfig) hw; + inherit (c) gitBranch blocksize ioFreq nodes; + inherit (c.n) nx ny nz; + + # Repeat the execution of each unit several times + loops = 10; + + # Resources + inherit (getResources { inherit gitBranch hw; }) + cpusPerTask ntasksPerNode; + + qos = "debug"; + time = "02:00:00"; + jobName = unitName; + + enableCTF = false; + + # Enable permissions to write in the local storage + extraMounts = [ fs.local.temp ]; + tempDir = fs.local.temp; + }; + + configs = getConfigs { + inherit varConf genConf; + }; + +in + + stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/fwi/strong_scaling_io.nix b/garlic/exp/fwi/strong_scaling_io.nix deleted file mode 100644 index c063659..0000000 --- a/garlic/exp/fwi/strong_scaling_io.nix +++ /dev/null @@ -1,141 +0,0 @@ -# Strong scaling test for FWI variants based on tasks with and without I/O. -# This experiment solves a computationally expensive input which brings the -# storage devices to saturation when I/O is enabled. the same input us run -# without I/O for comparison purposes.. Also, the experiments are runt for a -# range of block sizes deemed as efficient according to the granularity -# experiment. - -{ - stdenv -, stdexp -, bsc -, targetMachine -, stages -}: - -with stdenv.lib; - -let - - inherit (targetMachine) fs; - - # Initial variable configuration - varConf = { - gitBranch = [ - "garlic/tampi+send+oss+task" -# "garlic/mpi+send+omp+task" -# "garlic/mpi+send+oss+task" -# "garlic/mpi+send+seq" -# "garlic/oss+task" -# "garlic/omp+task" -# "garlic/seq" - ]; - - blocksize = [ 1 2 4 8 ]; - - n = [ - {nx=500; nz=500; ny=16000;} - ]; - - nodes = [ 1 2 4 8 16 ]; - - ioFreq = [ 9999 (-1) ]; - - }; - -# The c value contains something like: -# { -# n = { nx=500; ny=500; nz=500; } -# blocksize = 1; -# gitBranch = "garlic/tampi+send+oss+task"; -# } - - machineConfig = targetMachine.config; - - # Generate the complete configuration for each unit - genConf = with bsc; c: targetMachine.config // rec { - expName = "fwi"; - unitName = "${expName}-test"; - inherit (machineConfig) hw; - - cc = icc; - inherit (c) gitBranch blocksize; - - #nx = c.n.nx; - #ny = c.n.ny; - #nz = c.n.nz; - - # Same but shorter: - inherit (c.n) nx ny nz; - - fwiInput = bsc.apps.fwi.input.override { - inherit (c.n) nx ny nz; - }; - - # Other FWI parameters - ioFreq = c.ioFreq; - - # Repeat the execution of each unit several times - loops = 10; - #loops = 1; - - # Resources - cpusPerTask = hw.cpusPerSocket; - ntasksPerNode = 2; - nodes = c.nodes; - qos = "debug"; - time = "02:00:00"; - jobName = unitName; - - tracing = "no"; - - # Enable permissions to write in the local storage - extraMounts = [ fs.local.temp ]; - - }; - - # Compute the array of configurations - configs = stdexp.buildConfigs { - inherit varConf genConf; - }; - - exec = {nextStage, conf, ...}: stages.exec { - inherit nextStage; - pre = '' - CDIR=$PWD - if [[ "${conf.tracing}" == "yes" ]]; then - export NANOS6_CONFIG_OVERRIDE="version.instrument=ctf" - fi - EXECDIR="${fs.local.temp}/out/$GARLIC_USER/$GARLIC_UNIT/$GARLIC_RUN" - mkdir -p $EXECDIR - cd $EXECDIR - ln -fs ${conf.fwiInput}/InputModels InputModels || true - ''; - argv = [ - "${conf.fwiInput}/fwi_params.txt" - "${conf.fwiInput}/fwi_frequencies.txt" - conf.blocksize - "-1" # Fordward steps - "-1" # Backward steps - conf.ioFreq # Write/read frequency - ]; - post = '' - rm -rf Results || true - if [[ "${conf.tracing}" == "yes" ]]; then - mv trace_* $CDIR - fi - ''; - }; - - apps = bsc.garlic.apps; - - # FWI program - program = {nextStage, conf, ...}: apps.fwi.solver.override { - inherit (conf) cc gitBranch fwiInput; - }; - - pipeline = stdexp.stdPipeline ++ [ exec program ]; - -in - - stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/fwi/sync_io.nix b/garlic/exp/fwi/sync-io.nix similarity index 100% rename from garlic/exp/fwi/sync_io.nix rename to garlic/exp/fwi/sync-io.nix diff --git a/garlic/exp/index.nix b/garlic/exp/index.nix index 6b8a638..9776f3c 100644 --- a/garlic/exp/index.nix +++ b/garlic/exp/index.nix @@ -100,10 +100,9 @@ fwi = { granularity = callPackage ./fwi/granularity.nix { }; ss = callPackage ./fwi/ss.nix { }; + ss-io = callPackage ./fwi/ss-io.nix { }; reuse = callPackage ./fwi/reuse.nix { }; - - strong_scaling_io = callPackage ./fwi/strong_scaling_io.nix { }; - sync_io = callPackage ./fwi/sync_io.nix { }; + sync-io = callPackage ./fwi/sync-io.nix { }; }; osu = rec { From 99beac9b2397a567ad7875e49dfa9bd90d9b8f24 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 12 Apr 2021 19:01:10 +0200 Subject: [PATCH 642/987] fwi: generate the model in every node As we are using local storage, we need a copy of the input in every node. The current method is to run the generator only in the rank which has assigned the cpu 0 in the mask. --- garlic/exp/fwi/common.nix | 88 +++++++++++++++++++-------------------- 1 file changed, 44 insertions(+), 44 deletions(-) diff --git a/garlic/exp/fwi/common.nix b/garlic/exp/fwi/common.nix index cbc49a4..e9a6d41 100644 --- a/garlic/exp/fwi/common.nix +++ b/garlic/exp/fwi/common.nix @@ -40,67 +40,70 @@ rec { ntasksPerNode = hw.cpusPerNode; }; - srun = {nextStage, conf, ...}: + exec = {nextStage, conf, ...}: let fwiParams = bsc.apps.fwi.params.override { inherit (conf) nx ny nz; }; - in - stdexp.stdStages.srun { - inherit nextStage conf; - # Now we add some commands to execute before calling srun. These will - # only run in one rank (the first in the list of allocated nodes) - preSrun = '' - export GARLIC_FWI_SRUNDIR=$(pwd) - export GARLIC_FWI_EXECDIR="${conf.tempDir}/out/$GARLIC_USER/$GARLIC_UNIT/$GARLIC_RUN" - mkdir -p "$GARLIC_FWI_EXECDIR" - - export GARLIC_FWI_PARAMS="${fwiParams}/fwi_params.txt" - export GARLIC_FWI_FREQ="${fwiParams}/fwi_frequencies.txt" - - # We cannot change the working directory of srun, so we use a - # subshell to ignore the cd - ( - # Generate the input dataset - >&2 echo "generating the input dataset" - cd "$GARLIC_FWI_EXECDIR" - ${fwiParams}/bin/ModelGenerator \ - -m "$GARLIC_FWI_PARAMS" "$GARLIC_FWI_FREQ" - ) - ''; - - postSrun = optionalString (conf.enableCTF) '' - # Save the traces - mv "$GARLIC_FWI_EXECDIR"/trace_* . - '' + '' - # Remove everything else - rm -rf "$GARLIC_FWI_EXECDIR" - ''; - }; - - exec = {nextStage, conf, ...}: stages.exec { + in stages.exec { inherit nextStage; # FIXME: FWI should allow the I/O directory to be specified as a # parameter pre = '' - # Run fwi at the in a directory with fast local storage - cd "$GARLIC_FWI_EXECDIR" + FWI_SRUNDIR=$(pwd) + FWI_EXECDIR="${conf.tempDir}/out/$GARLIC_USER/$GARLIC_UNIT/$GARLIC_RUN" + FWI_PARAMS="${fwiParams}/fwi_params.txt" + FWI_FREQ="${fwiParams}/fwi_frequencies.txt" + + # Run fwi in a directory with fast local storage + mkdir -p "$FWI_EXECDIR" + cd "$FWI_EXECDIR" + + # Only generate the input if we have the CPU 0 (once per node) + if grep -o 'Cpus_allowed_list:[[:space:]]0' \ + /proc/self/status > /dev/null; + then + FWI_CAPTAIN=1 + fi + + if [ $FWI_CAPTAIN ]; then + >&2 echo "generating the input dataset" + ${fwiParams}/bin/ModelGenerator -m "$FWI_PARAMS" "$FWI_FREQ" + fi echo >&2 "Current dir: $(pwd)" - echo >&2 "Using PARAMS=$GARLIC_FWI_PARAMS and FREQ=$GARLIC_FWI_FREQ" + echo >&2 "Using PARAMS=$FWI_PARAMS and FREQ=$FWI_FREQ" '' + optionalString (conf.enableCTF) '' export NANOS6_CONFIG_OVERRIDE="version.instrument=ctf" ''; argv = [ - ''"$GARLIC_FWI_PARAMS"'' - ''"$GARLIC_FWI_FREQ"'' + ''"$FWI_PARAMS"'' + ''"$FWI_FREQ"'' ] ++ optional (needsBlocksize conf) conf.blocksize ++ [ "-1" # Fordward steps "-1" # Backward steps conf.ioFreq # Write/read frequency ]; + + post = '' + # Go back to the garlic out directory + cd "$FWI_SRUNDIR" + + if [ $FWI_CAPTAIN ]; then + '' + optionalString (conf.enableCTF) '' + # FIXME: We should specify the path in the nanos6 config, so we + # can avoid the race condition while they are generating the + # traces + sleep 3 + + # Save the traces + mv "$FWI_EXECDIR"/trace_* . + '' + '' + rm -rf "$FWI_EXECDIR" + fi + ''; }; apps = bsc.garlic.apps; @@ -117,8 +120,5 @@ rec { inherit fwiParams; }; - pipeline = stdexp.stdPipelineOverride { - # Replace the stdandard srun stage with our own - overrides = { inherit srun; }; - } ++ [ exec program ]; + pipeline = stdexp.stdPipeline ++ [ exec program ]; } From 6422741cb7c5c9d30915668c6fbb36adff7ce3bd Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 12 Apr 2021 19:27:45 +0200 Subject: [PATCH 643/987] fwi: merge io experiments into one file The enableExtended parameter control if the experiment runs with multiple nodes or only one. --- garlic/exp/fwi/{ss-io.nix => io.nix} | 20 +++---- garlic/exp/fwi/sync-io.nix | 86 ---------------------------- garlic/exp/index.nix | 6 +- 3 files changed, 12 insertions(+), 100 deletions(-) rename garlic/exp/fwi/{ss-io.nix => io.nix} (75%) delete mode 100644 garlic/exp/fwi/sync-io.nix diff --git a/garlic/exp/fwi/ss-io.nix b/garlic/exp/fwi/io.nix similarity index 75% rename from garlic/exp/fwi/ss-io.nix rename to garlic/exp/fwi/io.nix index a561fc9..d0e8317 100644 --- a/garlic/exp/fwi/ss-io.nix +++ b/garlic/exp/fwi/io.nix @@ -1,9 +1,9 @@ -# Strong scaling test for FWI variants based on tasks with and without I/O. +# Test FWI variants based on tasks with and without I/O. # This experiment solves a computationally expensive input which brings the -# storage devices to saturation when I/O is enabled. the same input us run -# without I/O for comparison purposes.. Also, the experiments are runt for a -# range of block sizes deemed as efficient according to the granularity -# experiment. +# storage devices to saturation when I/O is enabled. The same input runs +# without I/O for comparison purposes. Also, a range of block sizes +# deemed as efficient according to the granularity experiment are +# explored. { stdenv @@ -12,6 +12,7 @@ , targetMachine , stages , callPackage +, enableExtended ? false }: with stdenv.lib; @@ -24,13 +25,10 @@ let # Initial variable configuration varConf = { - gitBranch = [ - "garlic/tampi+send+oss+task" - ]; - + gitBranch = [ "garlic/tampi+send+oss+task" ]; blocksize = [ 1 2 4 8 ]; n = [ {nx=500; nz=500; ny=16000;} ]; - nodes = [ 1 2 4 8 16 ]; + nodes = if (enableExtended) then range2 1 16 else [ 4 ]; ioFreq = [ 9999 (-1) ]; }; @@ -38,7 +36,7 @@ let # Generate the complete configuration for each unit genConf = c: targetMachine.config // rec { - expName = "fwi-ss-io"; + expName = "fwi-io"; unitName = "${expName}" + "-nodes${toString nodes}" + "-bs${toString blocksize}" diff --git a/garlic/exp/fwi/sync-io.nix b/garlic/exp/fwi/sync-io.nix deleted file mode 100644 index 65bc0bf..0000000 --- a/garlic/exp/fwi/sync-io.nix +++ /dev/null @@ -1,86 +0,0 @@ -# This experiment compares the effect of not using I/O versus using O_DIRECT | -# O_DSYNC enabled I/O. This is a reduced version of the strong_scaling_io -# experiment. - -{ - stdenv -, stdexp -, bsc -, targetMachine -, stages -, callPackage -}: - -with stdenv.lib; - -let - common = callPackage ./common.nix {}; - inherit (common) getConfigs getResources pipeline; - - inherit (targetMachine) fs; - - # Initial variable configuration - varConf = { - gitBranch = [ - "garlic/tampi+send+oss+task" -# "garlic/mpi+send+omp+task" -# "garlic/mpi+send+oss+task" -# "garlic/mpi+send+seq" -# "garlic/oss+task" -# "garlic/omp+task" -# "garlic/seq" - ]; - - blocksize = [ 1 ]; - - n = [ - {nx=500; nz=500; ny=16000;} - ]; - - nodes = [ 4 ]; - ioFreq = [ 9999 (-1) ]; - }; - - machineConfig = targetMachine.config; - - # Generate the complete configuration for each unit - genConf = with bsc; c: targetMachine.config // rec { - expName = "fwi-sync-io"; - unitName = "${expName}" - + "-ioFreq${toString ioFreq}" - + "-${toString gitBranch}"; - - inherit (machineConfig) hw; - inherit (c) gitBranch blocksize; - inherit (c.n) nx ny nz; - - # Other FWI parameters - ioFreq = c.ioFreq; - - # Repeat the execution of each unit several times - loops = 10; - - # Resources - inherit (getResources { inherit gitBranch hw; }) - cpusPerTask ntasksPerNode; - - nodes = c.nodes; - qos = "debug"; - time = "02:00:00"; - jobName = unitName; - - enableCTF = false; - - # Enable permissions to write in the local storage - extraMounts = [ fs.local.temp ]; - tempDir = fs.local.temp; - - }; - - configs = getConfigs { - inherit varConf genConf; - }; - -in - - stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/index.nix b/garlic/exp/index.nix index 9776f3c..0a5d497 100644 --- a/garlic/exp/index.nix +++ b/garlic/exp/index.nix @@ -97,12 +97,12 @@ test = callPackage ./lulesh/test.nix { }; }; - fwi = { + fwi = rec { granularity = callPackage ./fwi/granularity.nix { }; ss = callPackage ./fwi/ss.nix { }; - ss-io = callPackage ./fwi/ss-io.nix { }; reuse = callPackage ./fwi/reuse.nix { }; - sync-io = callPackage ./fwi/sync-io.nix { }; + io = callPackage ./fwi/io.nix { }; + ioBig = io.override { enableExtended = true; }; }; osu = rec { From 59040d93552c43e5b34355d1abd542f6f1f19a05 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 12 Apr 2021 19:31:35 +0200 Subject: [PATCH 644/987] fwi: fix inverted resources --- garlic/exp/fwi/common.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/garlic/exp/fwi/common.nix b/garlic/exp/fwi/common.nix index e9a6d41..0aea88c 100644 --- a/garlic/exp/fwi/common.nix +++ b/garlic/exp/fwi/common.nix @@ -33,11 +33,11 @@ rec { getResources = {gitBranch, hw}: if (gitBranch == "garlic/mpi+send+seq") then { - cpusPerTask = hw.cpusPerSocket; - ntasksPerNode = hw.socketsPerNode; - } else { cpusPerTask = 1; ntasksPerNode = hw.cpusPerNode; + } else { + cpusPerTask = hw.cpusPerSocket; + ntasksPerNode = hw.socketsPerNode; }; exec = {nextStage, conf, ...}: From e49e3b087ff2917a5d9ccd49cf0479a09108bc94 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 12 Apr 2021 19:49:31 +0200 Subject: [PATCH 645/987] fwi: rename big io experiment --- garlic/exp/index.nix | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/garlic/exp/index.nix b/garlic/exp/index.nix index 0a5d497..8c02c8e 100644 --- a/garlic/exp/index.nix +++ b/garlic/exp/index.nix @@ -102,7 +102,9 @@ ss = callPackage ./fwi/ss.nix { }; reuse = callPackage ./fwi/reuse.nix { }; io = callPackage ./fwi/io.nix { }; - ioBig = io.override { enableExtended = true; }; + + # Extended experiments + big.io = io.override { enableExtended = true; }; }; osu = rec { From dd75a840ce84e862929b36e7875ddbc3a1f8fad1 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 12 Apr 2021 20:09:17 +0200 Subject: [PATCH 646/987] fwi: use enableIO instead of ioFreq --- garlic/exp/fwi/common.nix | 5 ++++- garlic/exp/fwi/granularity.nix | 5 ++--- garlic/exp/fwi/io.nix | 6 +++--- garlic/exp/fwi/reuse.nix | 10 ++++------ garlic/exp/fwi/ss.nix | 5 ++--- 5 files changed, 15 insertions(+), 16 deletions(-) diff --git a/garlic/exp/fwi/common.nix b/garlic/exp/fwi/common.nix index 0aea88c..dbd8442 100644 --- a/garlic/exp/fwi/common.nix +++ b/garlic/exp/fwi/common.nix @@ -45,6 +45,9 @@ rec { fwiParams = bsc.apps.fwi.params.override { inherit (conf) nx ny nz; }; + + ioFreq = if (conf.enableIO) then (conf.ioFreq or "-1") else "9999"; + in stages.exec { inherit nextStage; @@ -84,7 +87,7 @@ rec { ] ++ optional (needsBlocksize conf) conf.blocksize ++ [ "-1" # Fordward steps "-1" # Backward steps - conf.ioFreq # Write/read frequency + ioFreq # Write/read frequency ]; post = '' diff --git a/garlic/exp/fwi/granularity.nix b/garlic/exp/fwi/granularity.nix index 47a95ab..cb9e6ce 100644 --- a/garlic/exp/fwi/granularity.nix +++ b/garlic/exp/fwi/granularity.nix @@ -38,7 +38,8 @@ let inherit (c.n) nx ny nz ntpn nodes; # Other FWI parameters - ioFreq = -1; + enableIO = true; + enableCTF = false; # Repeat the execution of each unit several times loops = 10; @@ -50,8 +51,6 @@ let time = "02:00:00"; jobName = unitName; - enableCTF = false; - # Enable permissions to write in the local storage extraMounts = [ fs.local.temp ]; tempDir = fs.local.temp; diff --git a/garlic/exp/fwi/io.nix b/garlic/exp/fwi/io.nix index d0e8317..88bc97f 100644 --- a/garlic/exp/fwi/io.nix +++ b/garlic/exp/fwi/io.nix @@ -29,7 +29,7 @@ let blocksize = [ 1 2 4 8 ]; n = [ {nx=500; nz=500; ny=16000;} ]; nodes = if (enableExtended) then range2 1 16 else [ 4 ]; - ioFreq = [ 9999 (-1) ]; + enableIO = [ false true ]; }; machineConfig = targetMachine.config; @@ -40,11 +40,11 @@ let unitName = "${expName}" + "-nodes${toString nodes}" + "-bs${toString blocksize}" - + "-ioFreq${toString ioFreq}" + + (if (enableIO) then "-io1" else "-io0") + "-${toString gitBranch}"; inherit (machineConfig) hw; - inherit (c) gitBranch blocksize ioFreq nodes; + inherit (c) gitBranch blocksize enableIO nodes; inherit (c.n) nx ny nz; # Repeat the execution of each unit several times diff --git a/garlic/exp/fwi/reuse.nix b/garlic/exp/fwi/reuse.nix index aac1b10..d907e0c 100644 --- a/garlic/exp/fwi/reuse.nix +++ b/garlic/exp/fwi/reuse.nix @@ -42,9 +42,7 @@ let blocksize = [ 1 2 4 8 ]; - n = [ - {nx=300; ny=2000; nz=300;} # / half node - ]; + n = [ {nx=300; ny=2000; nz=300;} ]; # / half node }; machineConfig = targetMachine.config; @@ -60,6 +58,9 @@ let inherit (c) gitBranch blocksize; inherit (c.n) nx ny nz; + enableCTF = false; + enableIO = true; + # Repeat the execution of each unit several times loops = 10; @@ -71,9 +72,6 @@ let time = "02:00:00"; jobName = unitName; - enableCTF = false; - ioFreq = -1; - # Enable permissions to write in the local storage extraMounts = [ fs.local.temp ]; tempDir = fs.local.temp; diff --git a/garlic/exp/fwi/ss.nix b/garlic/exp/fwi/ss.nix index b3d5980..743ea48 100644 --- a/garlic/exp/fwi/ss.nix +++ b/garlic/exp/fwi/ss.nix @@ -60,7 +60,8 @@ let inherit (c.n) nx ny nz; # Other FWI parameters - ioFreq = -1; + enableIO = true; + enableCTF = false; # Repeat the execution of each unit several times loops = 10; @@ -74,8 +75,6 @@ let time = "02:00:00"; jobName = unitName; - enableCTF = false; - # Enable permissions to write in the local storage extraMounts = [ fs.local.temp ]; tempDir = fs.local.temp; From 99c6196734ce412a35bea02644f106ed3838ef37 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 14 Apr 2021 17:05:09 +0200 Subject: [PATCH 647/987] fwi: update granularity figure --- garlic/fig/fwi/granularity.R | 108 ++++++++++++++++++----------------- 1 file changed, 55 insertions(+), 53 deletions(-) diff --git a/garlic/fig/fwi/granularity.R b/garlic/fig/fwi/granularity.R index 40d6f75..ba4224b 100644 --- a/garlic/fig/fwi/granularity.R +++ b/garlic/fig/fwi/granularity.R @@ -1,71 +1,73 @@ library(ggplot2) -library(dplyr) +library(dplyr, warn.conflicts = FALSE) library(scales) library(jsonlite) +library(viridis, warn.conflicts = FALSE) +library(stringr) -args=commandArgs(trailingOnly=TRUE) +args = commandArgs(trailingOnly=TRUE) -# Read the timetable from args[1] -input_file = "input.json" -if (length(args)>0) { input_file = args[1] } +# Set the input dataset if given in argv[1], or use "input" as default +if (length(args)>0) { input_file = args[1] } else { input_file = "input" } -# Load the dataset in NDJSON format -dataset = jsonlite::stream_in(file(input_file)) %>% - jsonlite::flatten() +df = jsonlite::stream_in(file(input_file), verbose=FALSE) %>% -# We only need the nblocks and time -df = select(dataset, config.blocksize, config.gitBranch, time) %>% - rename(blocksize=config.blocksize, gitBranch=config.gitBranch) %>% - group_by(blocksize, gitBranch) %>% - mutate(mtime = median(time)) %>% + jsonlite::flatten() %>% + + select(unit, + config.blocksize, + config.gitBranch, + time) %>% + + rename(blocksize=config.blocksize, + gitBranch=config.gitBranch) %>% + + # Remove the "garlic/" prefix from the gitBranch + mutate(branch = str_replace(gitBranch, "garlic/", "")) %>% + + mutate(unit = as.factor(unit)) %>% + mutate(gitBranch = as.factor(gitBranch)) %>% + mutate(branch = as.factor(branch)) %>% + mutate(blocksize = as.factor(blocksize)) %>% + + group_by(unit) %>% + mutate(median.time = median(time)) %>% + mutate(normalized.time = time / median.time - 1) %>% ungroup() -df$gitBranch = as.factor(df$gitBranch) -df$blocksize = as.factor(df$blocksize) -ppi=300 -h=5 -w=5 +dpi = 300 +h = 6 +w = 6 -#################################################################### -### Line Graph -#################################################################### -png("mtime.png", width=w*ppi, height=h*ppi, res=ppi) +main_title = "FWI granularity" -## Create the plot with the normalized time vs nblocks -p = ggplot(df, aes(x = blocksize, y=mtime, group=gitBranch, color=gitBranch)) + - geom_point() + - geom_line() + +# --------------------------------------------------------------------- + +p = ggplot(df, aes(x=blocksize, y=normalized.time)) + + geom_boxplot() + + geom_hline(yintercept=c(-0.01, 0.01), linetype="dashed", color="red") + theme_bw() + - labs(x="Blocksize", y="Median Time (s)", title="FWI granularity", - subtitle=input_file) + - theme(plot.subtitle=element_text(size=8)) + - theme(legend.position = c(0.5, 0.88)) + facet_wrap(branch ~ .) + + labs(y="Normalized time", + title=sprintf("%s: normalized time", main_title), + subtitle=input_file) + + theme(plot.subtitle=element_text(size=8)) -# Render the plot -print(p) +ggsave("normalized.time.png", plot=p, width=w, height=h, dpi=dpi) +ggsave("normalized.time.pdf", plot=p, width=w, height=h, dpi=dpi) -# Save the png image -dev.off() +# --------------------------------------------------------------------- -#################################################################### -### Line Graph -#################################################################### -png("time.png", width=w*ppi, height=h*ppi, res=ppi) - -## Create the plot with the normalized time vs nblocks -p = ggplot(df, aes(x = blocksize, y=time, group=gitBranch, color=gitBranch)) + - geom_point() + - geom_line() + +p = ggplot(df, aes(x=blocksize, y=time, color=branch)) + + geom_point(shape=21, size=3) + + geom_line(aes(y=median.time, group=branch)) + theme_bw() + - labs(x="Blocksize", y="Time (s)", title="FWI granularity", - subtitle=input_file) + - theme(plot.subtitle=element_text(size=8)) + - theme(legend.position = c(0.5, 0.88)) - -# Render the plot -print(p) - -# Save the png image -dev.off() + labs(y="Time (s)", + title=sprintf("%s: time", main_title), + subtitle=input_file) + + theme(legend.position="bottom") + + theme(plot.subtitle=element_text(size=8)) +ggsave("time.png", plot=p, width=w, height=h, dpi=dpi) +ggsave("time.pdf", plot=p, width=w, height=h, dpi=dpi) From 8ce2a68cd75c03d4be4cb92f168354c3797277b1 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 14 Apr 2021 17:16:12 +0200 Subject: [PATCH 648/987] fwi: update strong scaling figure script --- garlic/fig/fwi/ss.R | 94 +++++++++++++++++++++++++ garlic/fig/fwi/strong_scaling.R | 120 -------------------------------- 2 files changed, 94 insertions(+), 120 deletions(-) create mode 100644 garlic/fig/fwi/ss.R delete mode 100644 garlic/fig/fwi/strong_scaling.R diff --git a/garlic/fig/fwi/ss.R b/garlic/fig/fwi/ss.R new file mode 100644 index 0000000..4044d15 --- /dev/null +++ b/garlic/fig/fwi/ss.R @@ -0,0 +1,94 @@ +library(ggplot2) +library(dplyr, warn.conflicts = FALSE) +library(scales) +library(jsonlite) +library(viridis, warn.conflicts = FALSE) +library(stringr) + +args = commandArgs(trailingOnly=TRUE) + +# Set the input dataset if given in argv[1], or use "input" as default +if (length(args)>0) { input_file = args[1] } else { input_file = "input" } + +df = jsonlite::stream_in(file(input_file), verbose=FALSE) %>% + + jsonlite::flatten() %>% + + select(unit, + config.blocksize, + config.gitBranch, + config.nodes, + time) %>% + + rename(blocksize=config.blocksize, + nodes=config.nodes, + gitBranch=config.gitBranch) %>% + + # Remove the "garlic/" prefix from the gitBranch + mutate(branch = str_replace(gitBranch, "garlic/", "")) %>% + + mutate(time.nodes = time * nodes) %>% + + mutate(unit = as.factor(unit)) %>% + mutate(gitBranch = as.factor(gitBranch)) %>% + mutate(branch = as.factor(branch)) %>% + mutate(blocksize = as.factor(blocksize)) %>% + mutate(nodes = as.factor(nodes)) %>% + + group_by(unit) %>% + mutate(median.time = median(time)) %>% + mutate(median.time.nodes = median(time.nodes)) %>% + mutate(normalized.time = time / median.time - 1) %>% + ungroup() + + +dpi = 300 +h = 6 +w = 6 + +main_title = "FWI strong scaling" + +# --------------------------------------------------------------------- + +p = ggplot(df, aes(x=nodes, y=normalized.time)) + + geom_boxplot() + + geom_hline(yintercept=c(-0.01, 0.01), linetype="dashed", color="red") + + theme_bw() + + facet_wrap(branch ~ .) + + labs(x="nodes", y="Normalized time", + title=sprintf("%s: normalized time", main_title), + subtitle=input_file) + + theme(plot.subtitle=element_text(size=8)) + +ggsave("normalized.time.png", plot=p, width=w, height=h, dpi=dpi) +ggsave("normalized.time.pdf", plot=p, width=w, height=h, dpi=dpi) + +# --------------------------------------------------------------------- + +p = ggplot(df, aes(x=nodes, y=time, color=gitBranch)) + + geom_point(shape=21, size=3) + + geom_line(aes(y=median.time, group=gitBranch)) + + theme_bw() + +# facet_wrap(branch ~ .) + + labs(y="Time (s)", + title=sprintf("%s: time", main_title), + subtitle=input_file) + + theme(plot.subtitle=element_text(size=8)) + +ggsave("time.png", plot=p, width=w, height=h, dpi=dpi) +ggsave("time.pdf", plot=p, width=w, height=h, dpi=dpi) + +# --------------------------------------------------------------------- + +p = ggplot(df, aes(x=nodes, y=time.nodes, color=branch)) + + geom_point(shape=21, size=3) + + geom_line(aes(y=median.time.nodes, group=branch)) + + theme_bw() + + #facet_wrap(branch ~ .) + + labs(x="nodes", y="Time * nodes (s)", + title=sprintf("%s: time * nodes", main_title), + subtitle=input_file) + + theme(plot.subtitle=element_text(size=8)) + +ggsave("time.nodes.png", plot=p, width=w, height=h, dpi=dpi) +ggsave("time.nodes.pdf", plot=p, width=w, height=h, dpi=dpi) diff --git a/garlic/fig/fwi/strong_scaling.R b/garlic/fig/fwi/strong_scaling.R deleted file mode 100644 index 89d79f1..0000000 --- a/garlic/fig/fwi/strong_scaling.R +++ /dev/null @@ -1,120 +0,0 @@ -library(ggplot2) -library(dplyr) -library(scales) -library(jsonlite) - -args=commandArgs(trailingOnly=TRUE) - -# Read the timetable from args[1] -input_file = "input.json" -if (length(args)>0) { input_file = args[1] } - -# Load the dataset in NDJSON format -dataset = jsonlite::stream_in(file(input_file)) %>% - jsonlite::flatten() - -# Select block size to display -useBlocksize = 2 - -# We only need the nblocks and time -df = select(dataset, config.blocksize, config.gitBranch, config.nodes, time) %>% - rename( - blocksize=config.blocksize, - gitBranch=config.gitBranch, - nodes=config.nodes - ) %>% - filter(blocksize == useBlocksize | blocksize == 0) %>% - group_by(nodes, gitBranch) %>% - mutate(mtime = median(time)) %>% - mutate(nxmtime = mtime * nodes) %>% - mutate(nxtime = time * nodes) %>% - ungroup() - -df$gitBranch = as.factor(df$gitBranch) -df$blocksize = as.factor(df$blocksize) -df$nodes = as.factor(df$nodes) - -ppi=300 -h=5 -w=5 - -#################################################################### -### Line plot (time) -#################################################################### -png("time.png", width=w*ppi, height=h*ppi, res=ppi) - -p = ggplot(df, aes(x=nodes, y=time, group=gitBranch, color=gitBranch)) + - geom_point() + - geom_line() + - theme_bw() + - labs(x="Nodes", y="Time (s)", title="FWI strong scaling", - subtitle=input_file) + - theme(plot.subtitle=element_text(size=8)) + - theme(legend.position = c(0.6, 0.75)) - -# Render the plot -print(p) - -# Save the png image -dev.off() - -#################################################################### -### Line plot (time x nodes) -#################################################################### -png("nxtime.png", width=w*ppi, height=h*ppi, res=ppi) - -p = ggplot(df, aes(x=nodes, y=nxtime, group=gitBranch, color=gitBranch)) + - geom_point() + - geom_line() + - theme_bw() + - labs(x="Nodes", y="Time * Nodes (s)", title="FWI strong scaling", - subtitle=input_file) + - theme(plot.subtitle=element_text(size=8)) + - theme(legend.position = c(0.15, 0.80)) + - theme(legend.text = element_text(size = 7)) - -# Render the plot -print(p) - -# Save the png image -dev.off() - -#################################################################### -### Line plot (median time) -#################################################################### -png("mediantime.png", width=w*ppi, height=h*ppi, res=ppi) - -p = ggplot(df, aes(x=nodes, y=mtime, group=gitBranch, color=gitBranch)) + - geom_point() + - geom_line() + - theme_bw() + - labs(x="Nodes", y="Median Time (s)", title="FWI strong scaling", - subtitle=input_file) + - theme(plot.subtitle=element_text(size=8)) + - theme(legend.position = c(0.5, 0.88)) - -# Render the plot -print(p) - -# Save the png image -dev.off() - -#################################################################### -### Line plot (nodes x median time) -#################################################################### -png("nxmtime.png", width=w*ppi, height=h*ppi, res=ppi) - -p = ggplot(df, aes(x=nodes, y=nxmtime, group=gitBranch, color=gitBranch)) + - geom_point() + - geom_line() + - theme_bw() + - labs(x="Nodes", y="Median Time * Nodes (s)", title="FWI strong scaling", - subtitle=input_file) + - theme(plot.subtitle=element_text(size=8)) + - theme(legend.position = c(0.5, 0.88)) - -# Render the plot -print(p) - -# Save the png image -dev.off() From eab323a13a3dece1162616be4e41f9b3b014c78e Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 14 Apr 2021 17:18:24 +0200 Subject: [PATCH 649/987] fwi: update io figure --- garlic/fig/fwi/{strong_scaling_io.R => io.R} | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) rename garlic/fig/fwi/{strong_scaling_io.R => io.R} (91%) diff --git a/garlic/fig/fwi/strong_scaling_io.R b/garlic/fig/fwi/io.R similarity index 91% rename from garlic/fig/fwi/strong_scaling_io.R rename to garlic/fig/fwi/io.R index 415bafd..61c71a4 100644 --- a/garlic/fig/fwi/strong_scaling_io.R +++ b/garlic/fig/fwi/io.R @@ -15,28 +15,25 @@ dataset = jsonlite::stream_in(file(input_file)) %>% jsonlite::flatten() # We only need the nblocks and time -df = select(dataset, config.blocksize, config.ioFreq, config.gitBranch, config.nodes, time) %>% +df = select(dataset, config.blocksize, config.ioFreq, config.gitBranch, config.nodes, time, unit) %>% rename( blocksize=config.blocksize, - io=config.ioFreq, + enableIO=config.enableIO, gitBranch=config.gitBranch, nodes=config.nodes ) %>% filter(blocksize == 1) %>% - group_by(nodes, gitBranch, io) %>% + group_by(unit) %>% mutate(mtime = median(time)) %>% mutate(nxmtime = mtime * nodes) %>% mutate(nxtime = time * nodes) %>% ungroup() df$gitBranch = as.factor(df$gitBranch) -df$io = as.factor(df$io) +df$enableIO = as.factor(df$enableIO) df$blocksize = as.factor(df$blocksize) df$nodes = as.factor(df$nodes) -df$io = fct_recode(df$io, enabled = "-1", disabled = "9999") - - ppi=300 h=5 w=5 @@ -46,7 +43,7 @@ w=5 #################################################################### png("time.png", width=w*ppi, height=h*ppi, res=ppi) -p = ggplot(df, aes(x=nodes, y=time, group=io, color=io)) + +p = ggplot(df, aes(x=nodes, y=time, group=enableIO, color=enableIO)) + geom_point() + geom_line() + theme_bw() + @@ -66,7 +63,7 @@ dev.off() #################################################################### png("nxtime.png", width=w*ppi, height=h*ppi, res=ppi) -p = ggplot(df, aes(x=nodes, y=nxtime, group=io, color=io)) + +p = ggplot(df, aes(x=nodes, y=nxtime, group=enableIO, color=enableIO)) + geom_point() + geom_line() + theme_bw() + From 07253c3fa02480d34bcc0877d7ea8f4239c60c8d Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 14 Apr 2021 17:18:46 +0200 Subject: [PATCH 650/987] fwi: update figure index --- garlic/fig/index.nix | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/garlic/fig/index.nix b/garlic/fig/index.nix index b3f77ea..7aef5eb 100644 --- a/garlic/fig/index.nix +++ b/garlic/fig/index.nix @@ -62,12 +62,10 @@ in }; fwi = with exp.fwi; { - granularity = stdPlot ./fwi/granularity.R [ granularity ]; - strong_scaling = stdPlot ./fwi/strong_scaling.R [ strong_scaling_task strong_scaling_forkjoin ]; - #strong_scaling = stdPlot ./fwi/strong_scaling.R [ strong_scaling_task strong_scaling_forkjoin strong_scaling_mpionly ]; - data_reuse = stdPlot ./fwi/granularity.R [ data_reuse ]; - strong_scaling_io = stdPlot ./fwi/strong_scaling_io.R [ strong_scaling_io ]; - sync_io = stdPlot ./fwi/strong_scaling_io.R [ sync_io ]; + granularity = stdPlot ./fwi/granularity.R [ granularity ]; + reuse = stdPlot ./fwi/granularity.R [ reuse ]; + ss = stdPlot ./fwi/ss.R [ ss ]; + io = stdPlot ./fwi/io.R [ io ]; }; osu = with exp.osu; { From 604cfd90a3d187d7248445215cee0794eb02069f Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 6 Apr 2021 13:02:45 +0200 Subject: [PATCH 651/987] test: add sigsegv after MPI_Finalize test The current srun version used in MN4 returns 0 if the program crashes after MPI_Finalize, as shown by this test. --- overlay.nix | 5 +++-- test/reproducers/sigsegv.c | 35 +++++++++++++++++++++++++++++++++++ test/reproducers/sigsegv.nix | 20 ++++++++++++++++++++ 3 files changed, 58 insertions(+), 2 deletions(-) create mode 100644 test/reproducers/sigsegv.c create mode 100644 test/reproducers/sigsegv.nix diff --git a/overlay.nix b/overlay.nix index 75c1881..083b47a 100644 --- a/overlay.nix +++ b/overlay.nix @@ -214,9 +214,10 @@ let inherit self super bsc callPackage; }; -# test = { + test = { # hwloc = callPackage ./test/bugs/hwloc.nix { }; -# }; + sigsegv = callPackage ./test/reproducers/sigsegv.nix { }; + }; }); in diff --git a/test/reproducers/sigsegv.c b/test/reproducers/sigsegv.c new file mode 100644 index 0000000..6283a24 --- /dev/null +++ b/test/reproducers/sigsegv.c @@ -0,0 +1,35 @@ +#include +#include +#include +#include + +void sigsegv(int rank) +{ + if (rank == 2) raise(SIGSEGV); +} + +int main(int argc, char *argv[]) +{ + int rank; + char where; + + MPI_Init(&argc, &argv); + + if(!argv[1]) + { + fprintf(stderr, "missing \"before\" or \"after\" argument\n"); + exit(1); + } + + MPI_Comm_rank(MPI_COMM_WORLD, &rank); + + where = argv[1][0]; + + if(where == 'b') sigsegv(rank); + + MPI_Finalize(); + + if(where == 'a') sigsegv(rank); + + return 0; +} diff --git a/test/reproducers/sigsegv.nix b/test/reproducers/sigsegv.nix new file mode 100644 index 0000000..783049c --- /dev/null +++ b/test/reproducers/sigsegv.nix @@ -0,0 +1,20 @@ +{ + stdenv +, mpi +}: + +stdenv.mkDerivation { + name = "sigsegv"; + + src = ./.; + + buildInputs = [ mpi ]; + + buildPhase = '' + mpicc sigsegv.c -o sigsegv + ''; + + installPhase = '' + cp sigsegv $out + ''; +} From 71c06d02dae502f15f0bca63627770030ae5edb2 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 6 Apr 2021 15:23:26 +0200 Subject: [PATCH 652/987] stages: add baywatch stage to check the exit code This workaround stage prevents srun from returning 0 to the upper stages when a signal happens after MPI_Finalize. It writes the return code to a file named .srun.rc.$rank and later checks that exists and contains a 0. When the program is killed, exits with non-zero and the error is propagated to the baywatch stage, which aborts immediately without creating the rc file. --- garlic/index.nix | 1 + garlic/stages/baywatch.nix | 26 ++++++++++++++++++++++++++ garlic/stages/srun.nix | 15 +++++++++++++++ garlic/stdexp.nix | 6 +++++- 4 files changed, 47 insertions(+), 1 deletion(-) create mode 100644 garlic/stages/baywatch.nix diff --git a/garlic/index.nix b/garlic/index.nix index b73c86d..ed8e2d8 100644 --- a/garlic/index.nix +++ b/garlic/index.nix @@ -76,6 +76,7 @@ stages = { sbatch = callPackage ./stages/sbatch.nix { }; srun = callPackage ./stages/srun.nix { }; + baywatch = callPackage ./stages/baywatch.nix { }; control = callPackage ./stages/control.nix { }; exec = callPackage ./stages/exec.nix { }; script = callPackage ./stages/script.nix { }; diff --git a/garlic/stages/baywatch.nix b/garlic/stages/baywatch.nix new file mode 100644 index 0000000..2b72f4d --- /dev/null +++ b/garlic/stages/baywatch.nix @@ -0,0 +1,26 @@ +{ + stdenv +, garlicTools +}: +{ + nextStage +}: + +with garlicTools; + +stdenv.mkDerivation rec { + name = "baywatch"; + phases = [ "installPhase" ]; + preferLocalBuild = true; + dontPatchShebangs = true; + installPhase = '' + cat > $out <<'EOF' + #!/bin/sh -e + + ${stageProgram nextStage} + echo $? >> .srun.rc.$SLURM_PROCID + + EOF + chmod +x $out + ''; +} diff --git a/garlic/stages/srun.nix b/garlic/stages/srun.nix index 57fc667..a2481a5 100644 --- a/garlic/stages/srun.nix +++ b/garlic/stages/srun.nix @@ -35,6 +35,21 @@ stdenv.mkDerivation rec { ${srunOptions} \ ${nixPrefix}${stageProgram nextStage} + >&2 echo srun exit code: $? + + # Ensure that none failed, as srun fails to capture errors + # after MPI_Finalize + for i in $(seq 0 $(($SLURM_NTASKS - 1))); do + if [ ! -e .srun.rc.$i ]; then + >&2 echo "missing exit code for rank $i, aborting" + exit 1 + fi + if ! grep -q '^0$' .srun.rc.$i; then + >&2 echo "non-zero exit for rank $i, aborting" + exit 1 + fi + done + ${postSrun} EOF diff --git a/garlic/stdexp.nix b/garlic/stdexp.nix index 33a18b1..4fa4278 100644 --- a/garlic/stdexp.nix +++ b/garlic/stdexp.nix @@ -99,13 +99,17 @@ rec { inherit nextStage; } ); + + baywatch = {nextStage, ...}: stages.baywatch { + inherit nextStage; + }; }; stdPipelineOverride = {overrides ? {}}: let stages = stdStages // overrides; in - with stages; [ sbatch isolate control srun isolate ]; + with stages; [ sbatch isolate control srun isolate baywatch ]; stdPipeline = stdPipelineOverride {}; From f842f1e01dfa0a4b4da9ad5324524bd882de9b5d Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 6 Apr 2021 15:28:27 +0200 Subject: [PATCH 653/987] slurm: add sigsegv experiment Ensure that we can catch a sigsegv signal before and after the MPI_Finalize call. --- garlic/exp/index.nix | 1 + garlic/exp/slurm/sigsegv.nix | 59 ++++++++++++++++++++++++++++++++++++ 2 files changed, 60 insertions(+) create mode 100644 garlic/exp/slurm/sigsegv.nix diff --git a/garlic/exp/index.nix b/garlic/exp/index.nix index 8c02c8e..4183763 100644 --- a/garlic/exp/index.nix +++ b/garlic/exp/index.nix @@ -91,6 +91,7 @@ slurm = { cpu = callPackage ./slurm/cpu.nix { }; + sigsegv = callPackage ./slurm/sigsegv.nix { }; }; lulesh = { diff --git a/garlic/exp/slurm/sigsegv.nix b/garlic/exp/slurm/sigsegv.nix new file mode 100644 index 0000000..db1830a --- /dev/null +++ b/garlic/exp/slurm/sigsegv.nix @@ -0,0 +1,59 @@ +{ + stdenv +, stdexp +, bsc +, targetMachine +, stages +, garlicTools +}: + +with stdenv.lib; +with garlicTools; + +let + + machineConfig = targetMachine.config; + + inherit (machineConfig) hw; + + # Initial variable configuration + varConf = { + when = [ "before" "after" "never" ]; + }; + + # Generate the complete configuration for each unit + genConf = c: targetMachine.config // rec { + expName = "sigsegv"; + unitName = expName + "-" + when; + + inherit (machineConfig) hw; + inherit (c) when; + + loops = 3; + + # Resources + qos = "debug"; + cpusPerTask = 1; + ntasksPerNode = hw.cpusPerNode; + nodes = 1; + jobName = unitName; + }; + + # Compute the array of configurations + configs = stdexp.buildConfigs { + inherit varConf genConf; + }; + + exec = {nextStage, conf, ...}: with conf; stages.exec { + inherit nextStage; + env = "date"; + argv = [ conf.when ]; + }; + + program = {nextStage, conf, ...}: bsc.test.sigsegv; + + pipeline = stdexp.stdPipeline ++ [ exec program ]; + +in + + stdexp.genExperiment { inherit configs pipeline; } From b96c39e0ba5f429b071d12a0a6807588ea8aecc0 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 6 Apr 2021 15:34:35 +0200 Subject: [PATCH 654/987] noise: add srun signal bug to the list --- NOISE | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/NOISE b/NOISE index 32cda73..7278a08 100644 --- a/NOISE +++ b/NOISE @@ -133,5 +133,15 @@ ABSTRACT We have improved our checking to detect bogus options passed to SLURM, so we prevent this problem from happening. +1.10 The srun program misses signals after MPI_Finalize + + When a program receives a signal such as SIGSEGV after calling + MPI_Finalize, srun at version 17.11.7 doesn't return a error code but + exits with 0. + + This can cause bogus programs to go undetected when only checking the + return code of srun. A better approach is to check the exit code with + sacct(1) or write the exit code to a file and check it later. + /* vim: set ts=2 sw=2 tw=72 fo=watqc expandtab spell autoindent: */ From 26e3a86c787a4320d92a9be96e8b12b96a46e480 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 7 Apr 2021 11:49:35 +0200 Subject: [PATCH 655/987] garlic tool: check the presence of all the units This check prevents a user from removing units between the execution of the experiment and the fetch. --- garlic/sh/garlic | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/garlic/sh/garlic b/garlic/sh/garlic index e123d3a..49fe608 100755 --- a/garlic/sh/garlic +++ b/garlic/sh/garlic @@ -105,6 +105,10 @@ do_fetch() { exit 1 fi + unitNameList=$(grep '^/nix/store/.*-unit$' $experiment |\ + sort -u |\ + sed 's@^/nix/store/@@') + cwd=$(pwd) repeat=1 @@ -113,17 +117,21 @@ do_fetch() { cd $exp test $verbose && >&2 echo "$exp: checking units" - for unit in *-unit; do - cd $exp/$unit - if [ ! -e status ]; then - - test $verbose && >&2 echo "$unit: no status" + for unit in $unitNameList; do + if [ ! -e $exp/$unit ]; then + test $verbose && >&2 echo "$unit: missing unit" repeat=1 else - st=$(cat status) - test $verbose && >&2 echo "$unit: $st" - if [ "$st" != "completed" ]; then + cd $exp/$unit + if [ ! -e status ]; then + test $verbose && >&2 echo "$unit: no status" repeat=1 + else + st=$(cat status) + test $verbose && >&2 echo "$unit: $st" + if [ "$st" != "completed" ]; then + repeat=1 + fi fi fi done From 0cf35decc53f411bbc3224829d22de928c84cdb3 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 7 Apr 2021 12:59:05 +0200 Subject: [PATCH 656/987] osu: add mtu and eager experiments --- garlic/exp/index.nix | 2 + garlic/exp/osu/eager.nix | 83 ++++++++++++++++++++++++++++++++++++++++ garlic/exp/osu/mtu.nix | 83 ++++++++++++++++++++++++++++++++++++++++ garlic/fig/index.nix | 2 + garlic/fig/osu/eager.R | 62 ++++++++++++++++++++++++++++++ garlic/fig/osu/mtu.R | 65 +++++++++++++++++++++++++++++++ 6 files changed, 297 insertions(+) create mode 100644 garlic/exp/osu/eager.nix create mode 100644 garlic/exp/osu/mtu.nix create mode 100644 garlic/fig/osu/eager.R create mode 100644 garlic/fig/osu/mtu.R diff --git a/garlic/exp/index.nix b/garlic/exp/index.nix index 4183763..8af4d98 100644 --- a/garlic/exp/index.nix +++ b/garlic/exp/index.nix @@ -116,6 +116,8 @@ bw = callPackage ./osu/bw.nix { }; impi = callPackage ./osu/impi.nix { }; bwShm = bw.override { interNode = false; }; + mtu = callPackage ./osu/mtu.nix { }; + eager = callPackage ./osu/eager.nix { }; }; examples = { diff --git a/garlic/exp/osu/eager.nix b/garlic/exp/osu/eager.nix new file mode 100644 index 0000000..d1d89fe --- /dev/null +++ b/garlic/exp/osu/eager.nix @@ -0,0 +1,83 @@ +{ + stdenv +, stdexp +, bsc +, targetMachine +, stages +}: + +with builtins; +with stdenv.lib; + +let + + machineConfig = targetMachine.config; + + # Initial variable configuration + varConf = with bsc; { + sizeKB = range 5 25; + mpi = [ impi ]; + #mpi = [ impi bsc.openmpi mpich ]; #psmpi ]; + PSM2_MQ_EAGER_SDMA_SZ_KB = [ 16 20 24 ]; + PSM2_MTU_KB = [ 10 ]; + }; + + # Generate the complete configuration for each unit + genConf = with bsc; c: targetMachine.config // rec { + inherit (machineConfig) hw; + nodes = 2; + ntasksPerNode = 1; + cpusPerTask = 1; + time = "00:30:00"; + qos = "debug"; + loops = 10; + iterations = 50000; + #FIXME: Notice the switchover is 16000 and MTU is 10240 + PSM2_MQ_EAGER_SDMA_SZ = PSM2_MQ_EAGER_SDMA_SZ_KB * 1000; + PSM2_MTU = PSM2_MTU_KB * 1024; + expName = "osu-bw"; + unitName = expName + + "-size.${toString sizeKB}K" + + "-mtu.${toString PSM2_MTU_KB}K" + + "-sdma.${toString PSM2_MQ_EAGER_SDMA_SZ_KB}K"; + jobName = expName; + inherit (c) mpi sizeKB + PSM2_MQ_EAGER_SDMA_SZ_KB + PSM2_MTU_KB; + + size = sizeKB * 1024; + }; + + # Compute the array of configurations + configs = stdexp.buildConfigs { + inherit varConf genConf; + }; + + exec = {nextStage, conf, ...}: with conf; stages.exec { + inherit nextStage; + + program = "${nextStage}/bin/osu_bw"; + + env = '' + export PSM2_MQ_EAGER_SDMA_SZ=${toString PSM2_MQ_EAGER_SDMA_SZ} + export PSM2_MTU=${toString PSM2_MTU} + export PSM2_TRACEMASK=0x101 + export PSM2_MQ_PRINT_STATS=-1 + ''; + + argv = [ + "-m" "${toString size}:${toString size}" + "-i" iterations + ]; + }; + + program = {nextStage, conf, ...}: bsc.osumb.override { + # Use the specified MPI implementation + inherit (conf) mpi; + }; + + pipeline = stdexp.stdPipeline ++ [ exec program ]; + +in + + stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/osu/mtu.nix b/garlic/exp/osu/mtu.nix new file mode 100644 index 0000000..ac58711 --- /dev/null +++ b/garlic/exp/osu/mtu.nix @@ -0,0 +1,83 @@ +{ + stdenv +, stdexp +, bsc +, targetMachine +, stages +}: + +with builtins; +with stdenv.lib; + +let + + machineConfig = targetMachine.config; + + # Initial variable configuration + varConf = with bsc; { + sizeKB = range 5 25; + mpi = [ impi ]; + #mpi = [ impi bsc.openmpi mpich ]; #psmpi ]; + PSM2_MQ_EAGER_SDMA_SZ_KB = [ 16 ]; + PSM2_MTU_KB = [ 8 10 ]; + }; + + # Generate the complete configuration for each unit + genConf = with bsc; c: targetMachine.config // rec { + inherit (machineConfig) hw; + nodes = 2; + ntasksPerNode = 1; + cpusPerTask = 1; + time = "00:30:00"; + qos = "debug"; + loops = 10; + iterations = 50000; + #FIXME: Notice the switchover is 16000 and MTU is 10240 + PSM2_MQ_EAGER_SDMA_SZ = PSM2_MQ_EAGER_SDMA_SZ_KB * 1000; + PSM2_MTU = PSM2_MTU_KB * 1024; + expName = "osu-bw"; + unitName = expName + + "-size.${toString sizeKB}K" + + "-mtu.${toString PSM2_MTU_KB}K" + + "-sdma.${toString PSM2_MQ_EAGER_SDMA_SZ_KB}K"; + jobName = expName; + inherit (c) mpi sizeKB + PSM2_MQ_EAGER_SDMA_SZ_KB + PSM2_MTU_KB; + + size = sizeKB * 1024; + }; + + # Compute the array of configurations + configs = stdexp.buildConfigs { + inherit varConf genConf; + }; + + exec = {nextStage, conf, ...}: with conf; stages.exec { + inherit nextStage; + + program = "${nextStage}/bin/osu_bw"; + + env = '' + export PSM2_MQ_EAGER_SDMA_SZ=${toString PSM2_MQ_EAGER_SDMA_SZ} + export PSM2_MTU=${toString PSM2_MTU} + export PSM2_TRACEMASK=0x101 + export PSM2_MQ_PRINT_STATS=-1 + ''; + + argv = [ + "-m" "${toString size}:${toString size}" + "-i" iterations + ]; + }; + + program = {nextStage, conf, ...}: bsc.osumb.override { + # Use the specified MPI implementation + inherit (conf) mpi; + }; + + pipeline = stdexp.stdPipeline ++ [ exec program ]; + +in + + stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/fig/index.nix b/garlic/fig/index.nix index 7aef5eb..4810dcb 100644 --- a/garlic/fig/index.nix +++ b/garlic/fig/index.nix @@ -77,6 +77,8 @@ in bw = customPlot ./osu/bw.R (ds.osu.bw bw.result); bwShm = customPlot ./osu/bw.R (ds.osu.bw bwShm.result); impi = customPlot ./osu/impi.R (ds.osu.bw impi.result); + mtu = customPlot ./osu/mtu.R (ds.osu.bw mtu.result); + eager = customPlot ./osu/eager.R (ds.osu.bw eager.result); }; # The figures used in the article contained in a directory per figure diff --git a/garlic/fig/osu/eager.R b/garlic/fig/osu/eager.R new file mode 100644 index 0000000..2ec73bc --- /dev/null +++ b/garlic/fig/osu/eager.R @@ -0,0 +1,62 @@ +library(ggplot2) +library(dplyr, warn.conflicts = FALSE) +library(scales) +library(jsonlite) + +args=commandArgs(trailingOnly=TRUE) + +# Read the timetable from args[1] +input_file = "input.json" +if (length(args)>0) { input_file = args[1] } + +# Load the dataset in NDJSON format +dataset = jsonlite::stream_in(file(input_file), verbose=FALSE) %>% + jsonlite::flatten() + +# We only need the nblocks and time +df = select(dataset, + config.unitName, + config.nodes, + config.ntasksPerNode, + config.cpusPerTask, + config.PSM2_MQ_EAGER_SDMA_SZ, + size, bw, config.iterations) %>% + rename(unitName=config.unitName, + iterations=config.iterations, + PSM2_MQ_EAGER_SDMA_SZ=config.PSM2_MQ_EAGER_SDMA_SZ) + +nodes = unique(df$config.nodes) +tasksPerNode = unique(df$config.ntasksPerNode) +cpusPerTask = unique(df$config.cpusPerTask) +df$unitName = as.factor(df$unitName) +df$sizeFactor = as.factor(df$size) +df$sizeKB = df$size / 1024 +df$PSM2_MQ_EAGER_SDMA_SZ.f = as.factor(df$PSM2_MQ_EAGER_SDMA_SZ) + +iterations = unique(df$iterations) + +df = group_by(df, unitName, sizeFactor) %>% + mutate(medianBw = median(bw)) %>% + ungroup() + +breaks = 10^(-10:10) +minor_breaks <- rep(1:9, 21)*(10^rep(-10:10, each=9)) + +ppi=150 +h=6 +w=8 + +p = ggplot(data=df, aes(x=sizeKB, y=bw)) + + labs(x="Message size (KB)", y="Bandwidth (MB/s)", + title=sprintf("OSU benchmark: osu_bw --iterations %d", iterations), + subtitle=input_file) + + geom_point(shape=21, size=3) + + geom_vline(aes(xintercept = PSM2_MQ_EAGER_SDMA_SZ/1024), color="blue") + + geom_vline(xintercept = 10, color="red") + + annotate("text", x = 10.2, y = 8.5e3, label = "MTU = 10KB", color="red", hjust=0) + + facet_wrap(vars(PSM2_MQ_EAGER_SDMA_SZ.f), nrow=3, labeller = "label_both") + + scale_x_continuous(breaks = unique(df$sizeKB), minor_breaks=NULL) + + theme_bw() + +ggsave("bw.png", plot=p, width=w, height=h, dpi=ppi) +ggsave("bw.pdf", plot=p, width=w, height=h, dpi=ppi) diff --git a/garlic/fig/osu/mtu.R b/garlic/fig/osu/mtu.R new file mode 100644 index 0000000..1344126 --- /dev/null +++ b/garlic/fig/osu/mtu.R @@ -0,0 +1,65 @@ +library(ggplot2) +library(dplyr, warn.conflicts = FALSE) +library(scales) +library(jsonlite) + +args=commandArgs(trailingOnly=TRUE) + +# Read the timetable from args[1] +input_file = "input.json" +if (length(args)>0) { input_file = args[1] } + +# Load the dataset in NDJSON format +dataset = jsonlite::stream_in(file(input_file), verbose=FALSE) %>% + jsonlite::flatten() + +# We only need the nblocks and time +df = select(dataset, + config.unitName, + config.nodes, + config.ntasksPerNode, + config.cpusPerTask, + config.PSM2_MQ_EAGER_SDMA_SZ, + config.PSM2_MTU, + size, bw, config.iterations) %>% + rename(unitName=config.unitName, + iterations=config.iterations, + PSM2_MQ_EAGER_SDMA_SZ=config.PSM2_MQ_EAGER_SDMA_SZ, + PSM2_MTU=config.PSM2_MTU) + +nodes = unique(df$config.nodes) +tasksPerNode = unique(df$config.ntasksPerNode) +cpusPerTask = unique(df$config.cpusPerTask) +df$unitName = as.factor(df$unitName) +df$sizeFactor = as.factor(df$size) +df$sizeKB = df$size / 1024 +df$PSM2_MQ_EAGER_SDMA_SZ.f = as.factor(df$PSM2_MQ_EAGER_SDMA_SZ) +df$PSM2_MTU.f = as.factor(df$PSM2_MTU) + +iterations = unique(df$iterations) + +df = group_by(df, unitName, sizeFactor) %>% + mutate(medianBw = median(bw)) %>% + ungroup() + +breaks = 10^(-10:10) +minor_breaks <- rep(1:9, 21)*(10^rep(-10:10, each=9)) + +ppi=150 +h=6 +w=8 + +p = ggplot(data=df, aes(x=sizeKB, y=bw)) + + labs(x="Message size (KB)", y="Bandwidth (MB/s)", + title=sprintf("OSU benchmark: osu_bw --iterations %d", iterations), + subtitle=input_file) + + geom_point(shape=21, size=3) + + geom_vline(aes(xintercept = PSM2_MQ_EAGER_SDMA_SZ/1024), color="blue") + + geom_vline(aes(xintercept = PSM2_MTU / 1024), color="red") + + #annotate("text", x = 10.2, y = 8.5e3, label = "MTU = 10KB", color="red", hjust=0) + + facet_wrap(vars(PSM2_MTU.f), nrow=3, labeller = "label_both") + + scale_x_continuous(breaks = unique(df$sizeKB), minor_breaks=NULL) + + theme_bw() + +ggsave("bw.png", plot=p, width=w, height=h, dpi=ppi) +ggsave("bw.pdf", plot=p, width=w, height=h, dpi=ppi) From 821b4f0d152855850705881ffd0def4c49bbcbe9 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 9 Apr 2021 16:01:42 +0200 Subject: [PATCH 657/987] rplot: patch scales and fontconfig --- garlic/pp/rplot.nix | 121 ++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 117 insertions(+), 4 deletions(-) diff --git a/garlic/pp/rplot.nix b/garlic/pp/rplot.nix index 12b3b47..35609a2 100644 --- a/garlic/pp/rplot.nix +++ b/garlic/pp/rplot.nix @@ -3,7 +3,16 @@ , rWrapper , rPackages , fontconfig +, dejavu_fonts +, liberation_ttf +, noto-fonts +, makeFontsConf +, makeFontsCache , jq +, fetchFromGitHub +, writeText +, runCommand +, glibcLocales }: { @@ -16,19 +25,123 @@ with stdenv.lib; let - customR = rWrapper.override { - packages = with rPackages; [ tidyverse viridis egg ] ++ extraRPackages; + scalesPatched = with rPackages; buildRPackage { + name = "scales"; + src = fetchFromGitHub { + owner = "mikmart"; + repo = "scales"; + #ref = "label-bytes"; + rev = "fa7d91c765b6b5d2f682c7c22e0478d96c2ea76c"; + sha256 = "10dsyxp9pxzdmg04xpnrxqhc4qfhbkr3jhx8whfr7z27wgfrr1n3"; + }; + propagatedBuildInputs = [ farver labeling lifecycle munsell R6 RColorBrewer viridisLite ]; + nativeBuildInputs = [ farver labeling lifecycle munsell R6 RColorBrewer viridisLite ]; }; + customR = rWrapper.override { + packages = with rPackages; [ scalesPatched tidyverse viridis egg + Cairo extrafont ] ++ extraRPackages; + }; + + myFonts = [ + dejavu_fonts + #noto-fonts + #liberation_ttf + ]; + + cacheConf = + let + cache = makeFontsCache { fontDirectories = myFonts; }; + in + writeText "fc-00-nixos-cache.conf" '' + + + + + ${concatStringsSep "\n" (map (font: "${font}") myFonts)} + ${optionalString (stdenv.hostPlatform == stdenv.buildPlatform) '' + + ${cache} + ''} + + ''; + + # default fonts configuration file + # priority 52 + defaultFontsConf = + let genDefault = fonts: name: + optionalString (fonts != []) '' + + ${name} + + ${concatStringsSep "" + (map (font: '' + ${font} + '') fonts)} + + + ''; + in + writeText "fc-52-nixos-default-fonts.conf" '' + + + + + ${genDefault [ "DejaVu Sans" ] "sans-serif"} + ${genDefault [ "DejaVu Serif" ] "serif"} + ${genDefault [ "DejaVu Sans Mono" ] "monospace"} + ${genDefault [ "Noto Color Emoji"] "emoji"} + + ''; + + fontConfPath = + let + fixedConf = runCommand "fonts-fixed.conf" { + preferLocalBuild = true; + } '' + head --lines=-2 ${fontconfig.out}/etc/fonts/fonts.conf >> $out + + cat >> $out << 'EOF' + + conf.d + EOF + + tail -2 ${fontconfig.out}/etc/fonts/fonts.conf >> $out + ''; + in + runCommand "fontconfig-conf" { + preferLocalBuild = true; + } '' + dst=$out/etc/fonts/conf.d + mkdir -p $dst + # fonts.conf + ln -s ${fixedConf} $dst/../fonts.conf + + # fontconfig default config files + ln -s ${fontconfig.out}/etc/fonts/conf.d/*.conf \ + $dst/ + + # 00-nixos-cache.conf + ln -s ${cacheConf} $dst/00-nixos-cache.conf + + # 52-nixos-default-fonts.conf + ln -s ${defaultFontsConf} $dst/52-nixos-default-fonts.conf + ''; + in stdenv.mkDerivation { name = "plot"; - buildInputs = [ customR jq ]; + buildInputs = [ customR jq fontconfig glibcLocales ]; preferLocalBuild = true; dontPatchShebangs = true; phases = [ "installPhase" ]; installPhase = '' - export FONTCONFIG_PATH=${fontconfig.out}/etc/fonts + export FONTCONFIG_PATH=${fontConfPath}/etc/fonts/ + export LANG=en_US.UTF-8 + mkdir -p $out cd $out dataset="${dataset}" From 1cb63b464d2ea874ece05aad47a8ef62e9aedb62 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 9 Apr 2021 16:02:28 +0200 Subject: [PATCH 658/987] osu: adjust figures for publication --- garlic/fig/osu/bw.R | 94 +++++++++++++++++++++++++++------------- garlic/fig/osu/latency.R | 61 ++++++++++++++++---------- garlic/fig/osu/mtu.R | 37 ++++++++-------- 3 files changed, 120 insertions(+), 72 deletions(-) diff --git a/garlic/fig/osu/bw.R b/garlic/fig/osu/bw.R index d81a894..df11240 100644 --- a/garlic/fig/osu/bw.R +++ b/garlic/fig/osu/bw.R @@ -2,6 +2,9 @@ library(ggplot2) library(dplyr, warn.conflicts = FALSE) library(scales) library(jsonlite) +library(stringr) +#library(extrafont) +#library(Cairo) args=commandArgs(trailingOnly=TRUE) @@ -15,7 +18,9 @@ dataset = jsonlite::stream_in(file(input_file), verbose=FALSE) %>% # We only need the nblocks and time df = select(dataset, config.unitName, config.nodes, config.ntasksPerNode, config.cpusPerTask, size, bw) %>% - rename(unitName=config.unitName) + rename(unitName=config.unitName) %>% + mutate(bw=bw / 1024.0) %>% + mutate(unitName=str_replace(unitName, "osu-bw-", "")) nodes = unique(df$config.nodes) tasksPerNode = unique(df$config.ntasksPerNode) @@ -24,42 +29,69 @@ df$unitName = as.factor(df$unitName) df$sizeFactor = as.factor(df$size) df = group_by(df, unitName, sizeFactor) %>% - mutate(medianBw = median(bw)) %>% + mutate(median.bw = median(bw)) %>% ungroup() -breaks = 10^(-10:10) -minor_breaks <- rep(1:9, 21)*(10^rep(-10:10, each=9)) - -p = ggplot(data=df, aes(x=size, y=bw)) + - labs(x="Size (bytes)", y="Bandwidth (MB/s)", - title=sprintf("OSU bandwidth benchmark: nodes=%d tasksPerNode=%d cpusPerTask=%d", - nodes, tasksPerNode, cpusPerTask), - subtitle=input_file) + - geom_boxplot(aes(color=unitName, group=interaction(unitName, sizeFactor))) + - scale_x_continuous(trans=log2_trans()) + - #scale_y_log10(breaks = breaks, minor_breaks = minor_breaks) + - theme_bw() + - theme(legend.position = c(0.8, 0.2)) - ppi=300 -h=4 -w=8 -ggsave("boxplot.pdf", plot=p, width=w, height=h, dpi=ppi) -ggsave("boxplot.png", plot=p, width=w, height=h, dpi=ppi) +h=3 +w=6 -p = ggplot(data=df, aes(x=size, y=medianBw)) + - labs(x="Size (bytes)", y="Bandwidth (MB/s)", - title=sprintf("OSU benchmark: osu_bw", - nodes, tasksPerNode, cpusPerTask), - subtitle=input_file) + - geom_line(aes(color=unitName, linetype=unitName)) + - geom_point(aes(color=unitName, shape=unitName)) + - geom_hline(yintercept = 100e3 / 8, color="red") + - annotate("text", x = 8, y = (100e3 / 8) * 0.95, label = "12.5GB/s (100Gb/s)") + - scale_x_continuous(trans=log2_trans()) + +p = ggplot(data=df, aes(x=size, y=median.bw)) + + labs(x="Message size", y="Bandwidth (GB/s)", + #title=sprintf("OSU benchmark: osu_bw", nodes, tasksPerNode, cpusPerTask), + subtitle=gsub("-", "\uad", input_file)) + + geom_line(aes(linetype=unitName)) + + geom_point(aes(shape=unitName), size=1.5) + + scale_shape_discrete(name = "MPI version") + + scale_linetype_discrete(name = "MPI version") + + #scale_color_discrete(name = "MPI version") + + geom_hline(yintercept=12.5, color="red") + + annotate("text", x=1, y=12.5 * .95, + label="Max: 12.5GB/s (100Gbps)", + hjust=0, vjust=1, size=3) + + #scale_x_continuous(trans=log2_trans()) + + scale_x_continuous(trans=log2_trans(), + labels=label_bytes("auto_binary"), + n.breaks = 12, + #breaks=unique(df$size), + #minor_breaks=NULL + ) + #scale_y_log10(breaks = breaks, minor_breaks = minor_breaks) + theme_bw() + - theme(legend.position = c(0.8, 0.2)) + theme(plot.subtitle = element_text(size=8, family="mono")) + + theme(legend.justification = c(1,0), legend.position = c(0.99, 0.01)) + + theme(axis.text.x = element_text(angle=-45, hjust=0)) ggsave("median-lines.png", plot=p, width=w, height=h, dpi=ppi) ggsave("median-lines.pdf", plot=p, width=w, height=h, dpi=ppi) +#ggsave("median-lines-cairo.pdf", plot=p, width=w, height=h, dpi=ppi, device=cairo_pdf) +#CairoPDF(file="median-lines-Cairo.pdf", width=w, height=h) +#print(p) +#dev.off() + + +p = ggplot(data=df, aes(x=size, y=bw)) + + labs(x="Message size", y="Bandwidth (MB/s)", + #title=sprintf("OSU benchmark: osu_bw", nodes, tasksPerNode, cpusPerTask), + subtitle=input_file) + + geom_line(aes(y=median.bw, linetype=unitName, group=unitName)) + + geom_point(aes(shape=unitName), size=2) + + scale_shape(solid = FALSE) + + geom_hline(yintercept = 100e3 / 8, color="red") + + annotate("text", x = 8, y = (100e3 / 8) * 0.95, + label = "Max: 12.5GB/s (100Gbps)") + + #scale_x_continuous(trans=log2_trans()) + + scale_x_continuous(trans=log2_trans(), + labels=label_bytes("auto_binary"), + breaks=unique(df$size), + minor_breaks=NULL) + + #scale_y_log10(breaks = breaks, minor_breaks = minor_breaks) + + theme_bw() + + theme(plot.subtitle = element_text(size=4)) + + theme(legend.position = c(0.2, 0.6)) + + theme(axis.text.x = element_text(angle=-45, hjust=0)) + +ggsave("bw.png", plot=p, width=w, height=h, dpi=ppi) +ggsave("bw.pdf", plot=p, width=w, height=h, dpi=ppi) + +warnings() diff --git a/garlic/fig/osu/latency.R b/garlic/fig/osu/latency.R index a91fc05..a316a0d 100644 --- a/garlic/fig/osu/latency.R +++ b/garlic/fig/osu/latency.R @@ -2,6 +2,7 @@ library(ggplot2) library(dplyr, warn.conflicts = FALSE) library(scales) library(jsonlite) +library(stringr) args=commandArgs(trailingOnly=TRUE) @@ -15,7 +16,8 @@ dataset = jsonlite::stream_in(file(input_file), verbose=FALSE) %>% # We only need the nblocks and time df = select(dataset, config.unitName, config.nodes, config.ntasksPerNode, config.cpusPerTask, size, latency) %>% - rename(unitName=config.unitName) + rename(unitName=config.unitName) %>% + mutate(unitName=str_replace(unitName, "osu-latency-", "")) nodes = unique(df$config.nodes) tasksPerNode = unique(df$config.ntasksPerNode) @@ -30,34 +32,45 @@ df = group_by(df, unitName, sizeFactor) %>% breaks = 10^(-10:10) minor_breaks <- rep(1:9, 21)*(10^rep(-10:10, each=9)) -p = ggplot(data=df, aes(x=size, y=latency)) + - labs(x="Size (bytes)", y="Latency (us)", - title=sprintf("OSU latency benchmark nodes=%d tasksPerNode=%d cpusPerTask=%d", - nodes, tasksPerNode, cpusPerTask), - subtitle=input_file) + - geom_boxplot(aes(color=unitName, group=interaction(unitName, sizeFactor))) + - scale_x_continuous(trans=log2_trans()) + - scale_y_log10(breaks = breaks, minor_breaks = minor_breaks) + - theme_bw() + - theme(legend.position = c(0.8, 0.2)) - ppi=300 -h=4 -w=8 -ggsave("boxplot.png", plot=p, width=w, height=h, dpi=ppi) -ggsave("boxplot.pdf", plot=p, width=w, height=h, dpi=ppi) +h=3 +w=6 p = ggplot(data=df, aes(x=size, y=medianLatency)) + - labs(x="Size (bytes)", y="Latency (us)", - title=sprintf("OSU benchmark: osu_latency", - nodes, tasksPerNode, cpusPerTask), - subtitle=input_file) + - geom_line(aes(color=unitName, linetype=unitName)) + - geom_point(aes(color=unitName, shape=unitName)) + - scale_x_continuous(trans=log2_trans()) + + labs(x="Message size", y="Median latency (µs)", + #title=sprintf("OSU benchmark: osu_latency", nodes, tasksPerNode, cpusPerTask), + subtitle=gsub("-", "\uad", input_file)) + + geom_line(aes(linetype=unitName)) + + geom_point(aes(shape=unitName), size=2) + scale_y_log10(breaks = breaks, minor_breaks = minor_breaks) + + scale_x_continuous(trans=log2_trans(), + labels=label_bytes("auto_binary"), + n.breaks = 12)+ + scale_shape_discrete(name = "MPI version") + + scale_linetype_discrete(name = "MPI version") + theme_bw() + - theme(legend.position = c(0.2, 0.8)) + theme(plot.subtitle = element_text(size=8, family="mono")) + + theme(legend.justification = c(0,1), legend.position = c(0.01, 0.99)) + + theme(axis.text.x = element_text(angle=-45, hjust=0)) ggsave("median-lines.png", plot=p, width=w, height=h, dpi=ppi) ggsave("median-lines.pdf", plot=p, width=w, height=h, dpi=ppi) + +p = ggplot(data=df, aes(x=size, y=latency)) + + labs(x="Size (bytes)", y="Latency (us)", + #title=sprintf("OSU benchmark: osu_latency", nodes, tasksPerNode, cpusPerTask), + subtitle=input_file) + + geom_line(aes(y=medianLatency, linetype=unitName, group=unitName)) + + geom_point(aes(shape=unitName), size=2) + + scale_y_log10(breaks = breaks, minor_breaks = minor_breaks) + + scale_x_continuous(trans=log2_trans(), + labels=label_bytes("auto_binary"), + breaks=unique(df$size), + minor_breaks=NULL) + + theme_bw() + + theme(plot.subtitle = element_text(color="gray50")) + + theme(axis.text.x = element_text(angle=-45, hjust=0)) + + theme(legend.position = c(0.2, 0.8)) + +ggsave("latency.png", plot=p, width=w, height=h, dpi=ppi) +ggsave("latency.pdf", plot=p, width=w, height=h, dpi=ppi) diff --git a/garlic/fig/osu/mtu.R b/garlic/fig/osu/mtu.R index 1344126..f4ea23c 100644 --- a/garlic/fig/osu/mtu.R +++ b/garlic/fig/osu/mtu.R @@ -24,8 +24,9 @@ df = select(dataset, size, bw, config.iterations) %>% rename(unitName=config.unitName, iterations=config.iterations, - PSM2_MQ_EAGER_SDMA_SZ=config.PSM2_MQ_EAGER_SDMA_SZ, - PSM2_MTU=config.PSM2_MTU) + PSM2_MQ_EAGER_SDMA_SZ.val=config.PSM2_MQ_EAGER_SDMA_SZ, + PSM2_MTU.val=config.PSM2_MTU) %>% + mutate(bw = bw / 1000.0) nodes = unique(df$config.nodes) tasksPerNode = unique(df$config.ntasksPerNode) @@ -33,33 +34,35 @@ cpusPerTask = unique(df$config.cpusPerTask) df$unitName = as.factor(df$unitName) df$sizeFactor = as.factor(df$size) df$sizeKB = df$size / 1024 -df$PSM2_MQ_EAGER_SDMA_SZ.f = as.factor(df$PSM2_MQ_EAGER_SDMA_SZ) -df$PSM2_MTU.f = as.factor(df$PSM2_MTU) +df$PSM2_MQ_EAGER_SDMA_SZ = as.factor(df$PSM2_MQ_EAGER_SDMA_SZ.val) +df$PSM2_MTU = as.factor(df$PSM2_MTU.val) iterations = unique(df$iterations) df = group_by(df, unitName, sizeFactor) %>% - mutate(medianBw = median(bw)) %>% + mutate(median.bw = median(bw)) %>% ungroup() breaks = 10^(-10:10) minor_breaks <- rep(1:9, 21)*(10^rep(-10:10, each=9)) -ppi=150 -h=6 -w=8 +ppi=300 +h=3 +w=6 p = ggplot(data=df, aes(x=sizeKB, y=bw)) + - labs(x="Message size (KB)", y="Bandwidth (MB/s)", - title=sprintf("OSU benchmark: osu_bw --iterations %d", iterations), - subtitle=input_file) + - geom_point(shape=21, size=3) + - geom_vline(aes(xintercept = PSM2_MQ_EAGER_SDMA_SZ/1024), color="blue") + - geom_vline(aes(xintercept = PSM2_MTU / 1024), color="red") + + geom_vline(aes(xintercept = PSM2_MQ_EAGER_SDMA_SZ.val/1024), color="blue") + + geom_vline(aes(xintercept = PSM2_MTU.val/1024), color="red") + + labs(x="Message size (KiB)", y="Bandwidth (GB/s)", + #title=sprintf("OSU benchmark: osu_bw --iterations %d", iterations), + subtitle=gsub("-", "\uad", input_file)) + + geom_point(shape=21, size=2) + #annotate("text", x = 10.2, y = 8.5e3, label = "MTU = 10KB", color="red", hjust=0) + - facet_wrap(vars(PSM2_MTU.f), nrow=3, labeller = "label_both") + - scale_x_continuous(breaks = unique(df$sizeKB), minor_breaks=NULL) + - theme_bw() + facet_wrap(vars(PSM2_MTU), nrow=3, labeller = "label_both") + + #scale_x_continuous(breaks = unique(df$sizeKB), minor_breaks=NULL) + + scale_x_continuous(n.breaks = 12) + + theme_bw() + + theme(plot.subtitle = element_text(size=8, family="mono")) ggsave("bw.png", plot=p, width=w, height=h, dpi=ppi) ggsave("bw.pdf", plot=p, width=w, height=h, dpi=ppi) From 60248ab06b09d3181f9a6fe57a4a9cc6aaac3f7b Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 9 Apr 2021 16:03:01 +0200 Subject: [PATCH 659/987] article: remove not used figures --- garlic/fig/index.nix | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/garlic/fig/index.nix b/garlic/fig/index.nix index 4810dcb..b268498 100644 --- a/garlic/fig/index.nix +++ b/garlic/fig/index.nix @@ -84,10 +84,8 @@ in # The figures used in the article contained in a directory per figure article = with fig; linkTree "article-fig" { "osu/latency" = osu.latency; - "osu/latencyMt" = osu.latencyMt; "osu/bw" = osu.bw; - "osu/bwShm" = osu.bwShm; - "heat/cache" = heat.cache; + "osu/mtu" = osu.mtu; }; examples = with exp.examples; { From 422d359b48814d667a96d041e8e33e3d8f3fe5dc Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 14 Jan 2021 12:23:37 +0100 Subject: [PATCH 660/987] script: stop on error by default --- garlic/stages/script.nix | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/garlic/stages/script.nix b/garlic/stages/script.nix index 4be3cec..292a209 100644 --- a/garlic/stages/script.nix +++ b/garlic/stages/script.nix @@ -5,8 +5,12 @@ { script , shell ? "/bin/sh" +, exitOnError ? true }: +let + setcmd = if exitOnError then "set -e" else ""; +in stdenv.mkDerivation { name = "script"; preferLocalBuild = true; @@ -14,6 +18,7 @@ stdenv.mkDerivation { installPhase = '' cat > $out <<'EOF' #!${shell} + ${setcmd} ${script} From 5c0f179830ed921c1d416b032563325de108ecc9 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 14 Jan 2021 12:25:32 +0100 Subject: [PATCH 661/987] stdexp: rename "name" to "clusterName" --- garlic/machines.nix | 2 +- garlic/stdexp.nix | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/garlic/machines.nix b/garlic/machines.nix index 7b0167a..e2bdc54 100644 --- a/garlic/machines.nix +++ b/garlic/machines.nix @@ -6,7 +6,7 @@ # MareNostrum 4 configuration mn4 = { config = { - name = "mn4"; + clusterName = "mn4"; sshHost = "mn1"; nixPrefix = "/gpfs/projects/bsc15/nix"; march = "skylake-avx512"; diff --git a/garlic/stdexp.nix b/garlic/stdexp.nix index 4fa4278..3213980 100644 --- a/garlic/stdexp.nix +++ b/garlic/stdexp.nix @@ -94,8 +94,7 @@ rec { else {} ) // { - clusterName = machineConf.name; - inherit (conf) nixPrefix; + inherit (conf) nixPrefix clusterName; inherit nextStage; } ); From 886d16bcc627a7d45aa21dc41d987885f65b743b Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 14 Jan 2021 12:30:56 +0100 Subject: [PATCH 662/987] garlic tool: add jq as dependency So we can parse the experiment configuration in JSON --- garlic/sh/default.nix | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/garlic/sh/default.nix b/garlic/sh/default.nix index 63d252a..324297b 100644 --- a/garlic/sh/default.nix +++ b/garlic/sh/default.nix @@ -5,6 +5,7 @@ , rsync , openssh , nix +, jq }: with garlicTools; @@ -16,7 +17,7 @@ in name = "garlic-tool"; preferLocalBuild = true; - buildInputs = [ rsync openssh nix ]; + buildInputs = [ rsync openssh nix jq ]; phases = [ "unpackPhase" "installPhase" ]; src = ./.; From 2151e20bd6f0cedadfbc8913f1d987282866dde0 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 15 Apr 2021 18:56:42 +0200 Subject: [PATCH 663/987] exp: add exit1 experiment Tests unit bad exits --- garlic/exp/index.nix | 4 +++ garlic/exp/test/exit1.nix | 68 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 72 insertions(+) create mode 100644 garlic/exp/test/exit1.nix diff --git a/garlic/exp/index.nix b/garlic/exp/index.nix index 8af4d98..f7bed5e 100644 --- a/garlic/exp/index.nix +++ b/garlic/exp/index.nix @@ -123,4 +123,8 @@ examples = { granularity = callPackage ./examples/granularity.nix { }; }; + + test = { + exit1 = callPackage ./test/exit1.nix { }; + }; } diff --git a/garlic/exp/test/exit1.nix b/garlic/exp/test/exit1.nix new file mode 100644 index 0000000..2feb393 --- /dev/null +++ b/garlic/exp/test/exit1.nix @@ -0,0 +1,68 @@ +{ + stdenv +, stdexp +, bsc +, targetMachine +, stages +, garlicTools +}: + +with stdenv.lib; +with garlicTools; + +let + + machineConfig = targetMachine.config; + + inherit (machineConfig) hw; + + # Initial variable configuration + varConf = { + script = [ + "exit 1" + "exit 0" + "kill -SEGV $$" + "kill -TERM $$" + ]; + }; + + # Generate the complete configuration for each unit + genConf = with bsc; c: targetMachine.config // rec { + expName = "exit1"; + unitName = expName + "-" + + builtins.replaceStrings [" " "$"] ["-" "-"] script; + + inherit (machineConfig) hw; + + # Repeat the execution of each unit 30 times + loops = 1; + inherit (c) script; + + # Resources + qos = "debug"; + cpusPerTask = 1; + ntasksPerNode = 2; + nodes = 1; + jobName = unitName; + }; + + # Compute the array of configurations + configs = stdexp.buildConfigs { + inherit varConf genConf; + }; + + exec = {nextStage, conf, ...}: with conf; stages.exec { + inherit nextStage; + pre = "sleep 5"; + post = "echo dummy"; + }; + + prog = {conf,...}: stages.script { + inherit (conf) script; + }; + + pipeline = stdexp.stdPipeline ++ [ exec prog ]; + +in + + stdexp.genExperiment { inherit configs pipeline; } From bde54c69c53eeb20b7c6cfc76c0a914bbef1a800 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 15 Apr 2021 18:59:03 +0200 Subject: [PATCH 664/987] sbatch: store queued status --- garlic/stages/sbatch.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/garlic/stages/sbatch.nix b/garlic/stages/sbatch.nix index b32334b..40c2d68 100644 --- a/garlic/stages/sbatch.nix +++ b/garlic/stages/sbatch.nix @@ -97,6 +97,7 @@ stdenv.mkDerivation rec { cat > $out/run < status EOF chmod +x $out/run ''; From fb0dee4b61c03799c36af8dd76760408f3f86773 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 16 Apr 2021 09:15:08 +0200 Subject: [PATCH 665/987] exp: move exit1 experiment to slurm --- garlic/exp/index.nix | 5 +---- garlic/exp/{test => slurm}/exit1.nix | 0 2 files changed, 1 insertion(+), 4 deletions(-) rename garlic/exp/{test => slurm}/exit1.nix (100%) diff --git a/garlic/exp/index.nix b/garlic/exp/index.nix index f7bed5e..6a80b40 100644 --- a/garlic/exp/index.nix +++ b/garlic/exp/index.nix @@ -92,6 +92,7 @@ slurm = { cpu = callPackage ./slurm/cpu.nix { }; sigsegv = callPackage ./slurm/sigsegv.nix { }; + exit1 = callPackage ./slurm/exit1.nix { }; }; lulesh = { @@ -123,8 +124,4 @@ examples = { granularity = callPackage ./examples/granularity.nix { }; }; - - test = { - exit1 = callPackage ./test/exit1.nix { }; - }; } diff --git a/garlic/exp/test/exit1.nix b/garlic/exp/slurm/exit1.nix similarity index 100% rename from garlic/exp/test/exit1.nix rename to garlic/exp/slurm/exit1.nix From 7c949970235c6b84c9ec397ca8f33c7db306acc8 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 16 Apr 2021 09:16:03 +0200 Subject: [PATCH 666/987] control: add trap for bad exit --- garlic/stages/control.nix | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/garlic/stages/control.nix b/garlic/stages/control.nix index 123c560..3e04485 100644 --- a/garlic/stages/control.nix +++ b/garlic/stages/control.nix @@ -18,9 +18,25 @@ stdenv.mkDerivation { installPhase = '' cat > $out <<"EOF" #!/bin/sh -e - for n in $(seq 1 ${toString loops}); do + + function badexit() { + errcode=$? + if [ $errcode != 0 ]; then + printf "exit %d\n" $errcode > "$basedir/status" + echo "exiting with $errcode" + fi + + echo 1 > "$basedir/done" + exit $errcode + } + + trap badexit EXIT + + basedir=$(pwd) + loops=${toString loops} + for n in $(seq 1 $loops); do export GARLIC_RUN="$n" - echo "running $n of ${toString loops}" > status + echo "run $n/$loops" > status mkdir "$n" cd "$n" mkdir .garlic @@ -29,7 +45,7 @@ stdenv.mkDerivation { date +%s > .garlic/total_time_end cd .. done - echo "completed" > status + echo "ok" > status EOF chmod +x $out ''; From 64f077c4f6280acb2bff4297d1688ea0b6cfd20d Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 16 Apr 2021 09:17:49 +0200 Subject: [PATCH 667/987] stages: prepend the stage name to messages --- garlic/stages/experiment.nix | 6 +++--- garlic/stages/unit.nix | 8 ++++---- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/garlic/stages/experiment.nix b/garlic/stages/experiment.nix index ec5f752..b50fdec 100644 --- a/garlic/stages/experiment.nix +++ b/garlic/stages/experiment.nix @@ -31,7 +31,7 @@ stdenv.mkDerivation { #!/bin/sh if [ -z "\$GARLIC_OUT" ]; then - >&2 echo "GARLIC_OUT not defined, aborting" + >&2 echo "experiment: GARLIC_OUT not defined, aborting" exit 1 fi @@ -40,7 +40,7 @@ stdenv.mkDerivation { export GARLIC_EXPERIMENT=$(basename $out) if [ -e "\$GARLIC_EXPERIMENT" ]; then - >&2 echo "skipping, experiment exists: \$(pwd)/\$GARLIC_EXPERIMENT" + >&2 echo "experiment: skipping, directory exists: \$GARLIC_EXPERIMENT" exit 0 fi @@ -49,7 +49,7 @@ stdenv.mkDerivation { cd "\$GARLIC_EXPERIMENT" ${unitsLinks} - echo "Running experiment \$GARLIC_EXPERIMENT" + >&2 echo "experiment: running \$GARLIC_EXPERIMENT" # This is an experiment formed by the following units: ${unitsString} diff --git a/garlic/stages/unit.nix b/garlic/stages/unit.nix index 72ee52e..babf39a 100644 --- a/garlic/stages/unit.nix +++ b/garlic/stages/unit.nix @@ -56,17 +56,17 @@ stdenv.mkDerivation { ${desc} if [ -z "\$GARLIC_OUT" ]; then - >&2 echo "GARLIC_OUT not defined, aborting" + >&2 echo "unit: GARLIC_OUT not defined, aborting" exit 1 fi if [ -z "\$GARLIC_EXPERIMENT" ]; then - >&2 echo "GARLIC_EXPERIMENT not defined, aborting" + >&2 echo "unit: GARLIC_EXPERIMENT not defined, aborting" exit 1 fi if [ -z "\$GARLIC_INDEX" ]; then - >&2 echo "GARLIC_INDEX not defined, aborting" + >&2 echo "unit: GARLIC_INDEX not defined, aborting" exit 1 fi @@ -86,7 +86,7 @@ stdenv.mkDerivation { "\$GARLIC_INDEX/${safeExpName}" if [ -e "\$GARLIC_UNIT" ]; then - >&2 echo "skipping, unit path already exists: \$GARLIC_UNIT" + >&2 echo "unit: skipping, already exists: \$GARLIC_UNIT" exit 0 fi From 732b0c0e9c88d6a70a940696e4ad0263dca068f3 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 16 Apr 2021 09:20:10 +0200 Subject: [PATCH 668/987] garlic tool: improve unit status information --- garlic/sh/default.nix | 3 +- garlic/sh/garlic | 93 +++++++++++++++++++++++++++++++++++-------- 2 files changed, 78 insertions(+), 18 deletions(-) diff --git a/garlic/sh/default.nix b/garlic/sh/default.nix index 324297b..0a5189d 100644 --- a/garlic/sh/default.nix +++ b/garlic/sh/default.nix @@ -6,6 +6,7 @@ , openssh , nix , jq +, ncurses }: with garlicTools; @@ -17,7 +18,7 @@ in name = "garlic-tool"; preferLocalBuild = true; - buildInputs = [ rsync openssh nix jq ]; + buildInputs = [ rsync openssh nix jq ncurses ]; phases = [ "unpackPhase" "installPhase" ]; src = ./.; diff --git a/garlic/sh/garlic b/garlic/sh/garlic index 49fe608..df3e33f 100755 --- a/garlic/sh/garlic +++ b/garlic/sh/garlic @@ -6,6 +6,10 @@ PATH=@PATH@ usage() { echo "Usage: garlic [-RFwv] trebuchet" 1>&2; exit 1; } +msg() { + >&2 echo "garlic: $@" +} + findClosure() { what=$1 from=$2 @@ -95,6 +99,37 @@ checkMountpoint() { fi } +status_line() { + unithash="$1" + name="$2" + status="$3" + + red=$(tput -T ansi setaf 1) + green=$(tput -T ansi setaf 2) + yellow=$(tput -T ansi setaf 3) + color_reset=$(tput -T ansi sgr0) + + case $status in + ok) + color_st="$green" + ;; + run*) + color_st="$yellow" + ;; + exit*) + color_st="$red" + ;; + *) + color_st="" + ;; + esac + + if [ $verbose ]; then + >&2 printf "garlic: %s %s%-9s%s %s\n" \ + "$unithash" "$color_st" "$status" "$color_reset" "$name" + fi +} + do_fetch() { expName=$(basename $experiment) user=$(ssh -G "$sshHost" | awk '/^user /{print $2}') @@ -112,32 +147,51 @@ do_fetch() { cwd=$(pwd) repeat=1 + bad=0 while [ 1 ]; do repeat=0 - cd $exp - test $verbose && >&2 echo "$exp: checking units" + test $verbose && msg "Checking units $(date --rfc-3339=seconds)..." + + declare -A unit_names for unit in $unitNameList; do - if [ ! -e $exp/$unit ]; then - test $verbose && >&2 echo "$unit: missing unit" - repeat=1 - else - cd $exp/$unit - if [ ! -e status ]; then - test $verbose && >&2 echo "$unit: no status" - repeat=1 - else - st=$(cat status) - test $verbose && >&2 echo "$unit: $st" - if [ "$st" != "completed" ]; then - repeat=1 + + unit_hash="${unit%-unit}" + unit_status="?" + unit_name="?" + + if [ -e "$exp/$unit" ]; then + st_file="$exp/$unit/status" + conf_json="$exp/$unit/garlic_config.json" + done_file="$exp/$unit/done" + + if [ -z "${unit_names[$unit_hash]}" ]; then + if [ -e "$conf_json" ]; then + unit_names+=([$unit_hash]=$(jq -r .unitName "$conf_json")) + unit_name="${unit_names[$unit_hash]}" fi + else + unit_name="${unit_names[$unit_hash]}" fi + + if [ -e "$st_file" ]; then + unit_status=$(cat "$st_file") + fi + fi + + status_line "$unit_hash" "$unit_name" "$unit_status" + + if [ ! -e "$done_file" ]; then + repeat=1 + elif [ "$unit_status" != "ok" ]; then + bad=1 fi done if [ $repeat -eq 0 ]; then break + else + test $verbose && msg "" fi if [ $waitResults -eq 1 ]; then @@ -149,13 +203,18 @@ do_fetch() { done if [ $repeat -eq 1 ]; then - >&2 echo "$exp: execution incomplete" + #>&2 echo "$exp: execution incomplete" + exit 1 + fi + + if [ $bad -eq 1 ]; then + msg "Some units failed, aborting" exit 1 fi cd "$cwd" - test $verbose && >&2 echo "$exp: execution complete, fetching results" + test $verbose && msg "execution complete, fetching results" mkdir -p "$outputDir" From 12ff1fd506b1267b21d9924b98868fb96ec40cea Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 16 Apr 2021 09:22:19 +0200 Subject: [PATCH 669/987] garlicd: send logs to the builder --- garlic/garlicd/garlicd | 41 +++++++++++++++++++++++++++++++++-------- garlic/pp/store.nix | 9 +++++++++ 2 files changed, 42 insertions(+), 8 deletions(-) diff --git a/garlic/garlicd/garlicd b/garlic/garlicd/garlicd index cc67089..17e3f9d 100755 --- a/garlic/garlicd/garlicd +++ b/garlic/garlicd/garlicd @@ -2,9 +2,14 @@ set -e -msg() { +emsg() { >&2 echo "garlicd: $@" -} +} + +msg() { + emsg "$@" + if [ ! -z "$st" ]; then echo "garlicd: $@" >>"$st"; fi +} if [ ! -z "$1" ]; then >&2 echo "usage: garlicd" @@ -18,8 +23,8 @@ garlic_sandbox=$(nix show-config |\ grep -o '/garlic=[^ ]*' || true) if [ -z "$garlic_sandbox" ]; then - msg "Missing extra-sandbox-paths /garlic mountpoint" - msg "Check the ~/.config/nix/nix.conf file" + emsg "Missing extra-sandbox-paths /garlic mountpoint" + emsg "Check the ~/.config/nix/nix.conf file" exit 1 fi @@ -28,6 +33,7 @@ mountdir=$(readlink -f "$mountdir_rel") run="$mountdir/run" completed="$mountdir/completed" wipe="$mountdir/wipe" +st="$mountdir/st" handle_bad_signal() { msg "cleaning FIFO pipes" @@ -46,21 +52,40 @@ for fifo in "$run" "$completed" "$wipe"; do done while true; do - msg "Waiting for experiments ..." + emsg "--- Waiting for experiments ---" tre=$(head -1 "$run") + # Truncate state file + printf "" > "$st" + msg "Attempting to run: $tre" msg "Copying files to MN4..." # It fails if the user doesn't have nix-store, but is already copied # with the post build hook nix copy --to ssh://mn1 $tre || true + set +e + msg "Launching the experiment..." - garlic -R "$tre" + garlic -R "$tre" 2>>"$st" + if [ "$?" != 0 ]; then + echo ERROR > "$completed" + msg "Failed to run the experiment :-(" + continue + fi msg "Fetching results..." - garlic -FKv "$tre" + garlic -FKv "$tre" 2>>"$st" + if [ "$?" != 0 ]; then + echo ERROR > "$completed" + msg "The experiment failed :-(" + continue + fi + + set -e + + msg "Signalling nix build..." echo -n "$tre" >> "$completed" msg "Waiting for nix to finish the build..." @@ -72,7 +97,7 @@ while true; do fi msg "Removing temporal files..." - garlic -D "$tre" + garlic -D "$tre" 2>>"$st" echo -n "$tre" >> "$completed" diff --git a/garlic/pp/store.nix b/garlic/pp/store.nix index 40d5591..6005efb 100644 --- a/garlic/pp/store.nix +++ b/garlic/pp/store.nix @@ -26,8 +26,17 @@ in echo ${trebuchet} >> /garlic/run echo "resultTree: waiting for experiment results..." + stdbuf -o 0 tail -f /garlic/st & + stpid=$! res=$(cat /garlic/completed) + kill -TERM $stpid + + if [ "$res" == "ERROR" ]; then + echo "resultTree: the experiment failed" + exit 1 + fi + if [ "$res" != "${trebuchet}" ]; then echo "resultTree: unknown trebuchet received" exit 1 From 1a6075a2b180b5b1d9fe1c21dde3dc9c5ed781f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ra=C3=BAl=20Pe=C3=B1acoba?= Date: Tue, 23 Feb 2021 18:24:21 +0100 Subject: [PATCH 670/987] hpcg: add first granularity/scalability exps for tampi+isend+oss+task - oss.nix runs valid hpcg layouts whereas slices.nix does not --- garlic/apps/hpcg/default.nix | 21 ++-- garlic/apps/index.nix | 2 +- garlic/exp/hpcg/gen.nix | 49 ++++---- garlic/exp/hpcg/mpi+omp.nix | 2 +- garlic/exp/hpcg/omp.nix | 2 +- garlic/exp/hpcg/oss.granularity.192.nix | 89 ++++++++++++++ garlic/exp/hpcg/oss.nix | 67 +++++----- garlic/exp/hpcg/oss.scalability.192.nix | 89 ++++++++++++++ garlic/exp/hpcg/slices.nix | 91 ++++++++++++++ garlic/exp/index.nix | 13 +- garlic/fig/hpcg/oss.R | 156 +++++++++++++----------- garlic/fig/hpcg/oss.granularity.R | 112 +++++++++++++++++ garlic/fig/hpcg/oss.scalability.R | 116 ++++++++++++++++++ garlic/fig/index.nix | 4 +- 14 files changed, 665 insertions(+), 148 deletions(-) create mode 100644 garlic/exp/hpcg/oss.granularity.192.nix create mode 100644 garlic/exp/hpcg/oss.scalability.192.nix create mode 100644 garlic/exp/hpcg/slices.nix create mode 100644 garlic/fig/hpcg/oss.granularity.R create mode 100644 garlic/fig/hpcg/oss.scalability.R diff --git a/garlic/apps/hpcg/default.nix b/garlic/apps/hpcg/default.nix index c864bb2..7a69a72 100644 --- a/garlic/apps/hpcg/default.nix +++ b/garlic/apps/hpcg/default.nix @@ -1,13 +1,13 @@ { stdenv , cc -, nanos6 ? null -, mcxx ? null -, mpi ? null +, nanos6 +, mcxx +, mpi +, tampi , gitBranch }: -with stdenv.lib; stdenv.mkDerivation rec { name = "hpcg"; @@ -16,16 +16,13 @@ stdenv.mkDerivation rec { ref = "${gitBranch}"; }; - prePatch = '' - #export NIX_DEBUG=6 - ''; + # prePatch = '' + # #export NIX_DEBUG=6 + # ''; buildInputs = [ - cc - ] - ++ optional (mcxx != null) mcxx - ++ optional (nanos6 != null) nanos6 - ++ optional (mpi != null) mpi; + cc nanos6 mcxx mpi tampi + ]; makeFlags = [ "CC=${cc.CC}" diff --git a/garlic/apps/index.nix b/garlic/apps/index.nix index c6ef494..c9e32b8 100644 --- a/garlic/apps/index.nix +++ b/garlic/apps/index.nix @@ -28,7 +28,7 @@ }; hpcg = callPackage ./hpcg/default.nix { - gitBranch = "garlic/oss"; + gitBranch = "garlic/tampi+isend+oss+task"; }; bigsort = { diff --git a/garlic/exp/hpcg/gen.nix b/garlic/exp/hpcg/gen.nix index cb16cf6..a9e7316 100644 --- a/garlic/exp/hpcg/gen.nix +++ b/garlic/exp/hpcg/gen.nix @@ -5,7 +5,6 @@ , targetMachine , stages , garlicTools -, resultFromTrebuchet }: with stdenv.lib; @@ -14,28 +13,23 @@ with garlicTools; let # Generate the complete configuration for each unit - genConf = with bsc; c: targetMachine.config // rec { + genConf = c: targetMachine.config // rec { expName = "${c.expName}.gen"; unitName = "${expName}.n${toString n.x}"; inherit (targetMachine.config) hw; - # hpcg options - cc = bsc.icc; - mcxx = bsc.mcxx; - nanos6 = bsc.nanos6; - mpi = null; # TODO: Remove this for oss # Only the n and gitBranch options are inherited - inherit (c) n gitBranch; + inherit (c) n nprocs disableAspectRatio nodes ntasksPerNode gitBranch; # Repeat the execution of each unit 30 times loops = 1; # Resources qos = "debug"; - ntasksPerNode = 1; - nodes = 1; - time = "02:00:00"; + # ntasksPerNode = hw.socketsPerNode; + # nodes = 2; + time = "00:30:00"; # task in one socket cpusPerTask = hw.cpusPerSocket; jobName = unitName; @@ -43,25 +37,24 @@ let exec = {nextStage, conf, ...}: with conf; stages.exec { inherit nextStage; - env = "NANOS6_DEPENDENCIES=discrete"; argv = [ - "--nx=${toString n.x}" - "--ny=${toString n.y}" - "--nz=${toString n.z}" - # The nblocks is ignored - #"--nblocks=${toString nblocks}" + "--nx=${toString conf.n.x}" + "--ny=${toString conf.n.y}" + "--nz=${toString conf.n.z}" + "--npx=${toString conf.nprocs.x}" + "--npy=${toString conf.nprocs.y}" + "--npz=${toString conf.nprocs.z}" + # nblocks and ncomms are ignored + "--nblocks=1" + "--ncomms=1" # Store the results in the same directory "--store=." - ]; + ] ++ optional (conf.disableAspectRatio) "--no-ar=1"; }; - program = {nextStage, conf, ...}: with conf; - let - customPkgs = stdexp.replaceMpi conf.mpi; - in - customPkgs.apps.hpcg.override { - inherit cc nanos6 mcxx gitBranch; - }; + program = {nextStage, conf, ...}: bsc.apps.hpcg.override { + inherit (conf) gitBranch; + }; pipeline = stdexp.stdPipeline ++ [ exec program ]; @@ -78,7 +71,7 @@ let inputExp = getExperimentStage inputTre; # Then load the result. This is only used to ensure that we have the # results, so it has been executed. - inputRes = resultFromTrebuchet inputTre; + inputRes = inputTre.result; # We also need the unit, to compute the path. inputUnit = stages.unit { conf = genConf conf; @@ -95,7 +88,9 @@ let # ${inputRes} # Then we simply link the input result directory in "input" - ln -s ${relPath} input + # We use || true because all ranks will execute this and + # the execution will fail + ln -sf ${relPath} input || true ''; }; diff --git a/garlic/exp/hpcg/mpi+omp.nix b/garlic/exp/hpcg/mpi+omp.nix index dfe4696..6ea245c 100644 --- a/garlic/exp/hpcg/mpi+omp.nix +++ b/garlic/exp/hpcg/mpi+omp.nix @@ -21,7 +21,7 @@ let n = c.n; cc = bsc.icc; mpi = bsc.impi; - gitBranch = "garlic/mpi+omp"; + gitBranch = "garlic/mpi+send+omp+fork"; # Repeat the execution of each unit 30 times loops = 30; diff --git a/garlic/exp/hpcg/omp.nix b/garlic/exp/hpcg/omp.nix index 9960302..c4dcc8c 100644 --- a/garlic/exp/hpcg/omp.nix +++ b/garlic/exp/hpcg/omp.nix @@ -22,7 +22,7 @@ let nblocks = c.nblocks; cc = bsc.icc; mpi = null; # TODO: Remove this for omp - gitBranch = "garlic/omp"; + gitBranch = "garlic/omp+fork"; # Repeat the execution of each unit 30 times loops = 30; diff --git a/garlic/exp/hpcg/oss.granularity.192.nix b/garlic/exp/hpcg/oss.granularity.192.nix new file mode 100644 index 0000000..04a484a --- /dev/null +++ b/garlic/exp/hpcg/oss.granularity.192.nix @@ -0,0 +1,89 @@ +{ + stdenv +, stdexp +, bsc +, targetMachine +, stages +, genInput +}: + +with stdenv.lib; + +let + # Initial variable configuration + varConf = { + n = [ { x = 192; y = 192; z = 192; } ]; + nprocs = [ + { x = 2; y = 1; z = 1; } + # { x = 2; y = 2; z = 1; } + # { x = 2; y = 2; z = 2; } + # { x = 4; y = 2; z = 2; } + # { x = 4; y = 4; z = 2; } + ]; + nblocks = [ 12 24 48 96 192 384 768 1536 ]; + # nblocks = [ 384 ]; + ncommblocks = [ 1 ]; + # nodes = [ 1 ]; + # nodes = [ 1 2 4 8 16 ]; + }; + + # Generate the complete configuration for each unit + genConf = c: targetMachine.config // rec { + expName = "hpcg.oss"; + unitName = "${expName}.nb${toString nblocks}"; + + inherit (targetMachine.config) hw; + + # hpcg options + inherit (c) n nprocs nblocks ncommblocks; + + gitBranch = "garlic/tampi+isend+oss+task"; + + # Repeat the execution of each unit 30 times + loops = 3; + + disableAspectRatio = false; + + # Resources + qos = "debug"; + ntasksPerNode = hw.socketsPerNode; + time = "02:00:00"; + # task in one socket + cpusPerTask = hw.cpusPerSocket; + nodes = (nprocs.x * nprocs.y * nprocs.z) / ntasksPerNode; + jobName = "hpcg-${toString n.x}-${toString n.y}-${toString n.z}-${gitBranch}"; + }; + + # Compute the array of configurations + configs = stdexp.buildConfigs { + inherit varConf genConf; + }; + + input = genInput configs; + + exec = {nextStage, conf, ...}: stages.exec { + inherit nextStage; + argv = [ + "--nx=${toString conf.n.x}" + "--ny=${toString conf.n.y}" + "--nz=${toString conf.n.z}" + "--npx=${toString conf.nprocs.x}" + "--npy=${toString conf.nprocs.y}" + "--npz=${toString conf.nprocs.z}" + "--nblocks=${toString conf.nblocks}" + "--ncomms=${toString conf.ncommblocks}" + # The input symlink is generated by the input stage, which is generated by + # the genInput function. + "--load=input" + ]; + }; + + program = {nextStage, conf, ...}: bsc.apps.hpcg.override { + inherit (conf) gitBranch; + }; + + pipeline = stdexp.stdPipeline ++ [ input exec program ]; + +in + + stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/hpcg/oss.nix b/garlic/exp/hpcg/oss.nix index 48b4ef2..b04215b 100644 --- a/garlic/exp/hpcg/oss.nix +++ b/garlic/exp/hpcg/oss.nix @@ -11,39 +11,46 @@ with stdenv.lib; let # Initial variable configuration - varConf = with bsc; { - # FIXME: Temporally reduce the input size until we can load a precomputed - # input in each run, otherwise the execution time is very large. - #n = [ { x = 104; y = 104; z = 104; } ]; - n = [ { x = 256; y = 288; z = 288; } ]; - nblocks = [ 12 24 48 96 192 384 ]; + varConf = { + n = [ { x = 192; y = 192; z = 192; } ]; + nprocs = [ + { x = 2; y = 1; z = 1; } + { x = 2; y = 2; z = 1; } + { x = 2; y = 2; z = 2; } + { x = 4; y = 2; z = 2; } + { x = 4; y = 4; z = 2; } + ]; + # nblocks = [ 12 24 48 96 192 384 768 1536 ]; + nblocks = [ 384 768 1536 ]; + ncommblocks = [ 1 ]; + # nodes = [ 1 ]; + # nodes = [ 1 2 4 8 16 ]; }; # Generate the complete configuration for each unit - genConf = with bsc; c: targetMachine.config // rec { + genConf = c: targetMachine.config // rec { expName = "hpcg.oss"; unitName = "${expName}.nb${toString nblocks}"; inherit (targetMachine.config) hw; + # hpcg options - n = c.n; - nblocks = c.nblocks; - cc = bsc.icc; - mcxx = bsc.mcxx; - nanos6 = bsc.nanos6; - mpi = null; # TODO: Remove this for oss - gitBranch = "garlic/oss"; + inherit (c) n nprocs nblocks ncommblocks; + + gitBranch = "garlic/tampi+isend+oss+task"; # Repeat the execution of each unit 30 times - loops = 30; + loops = 3; + + disableAspectRatio = false; # Resources qos = "debug"; - ntasksPerNode = 1; - nodes = 1; + ntasksPerNode = hw.socketsPerNode; time = "02:00:00"; # task in one socket cpusPerTask = hw.cpusPerSocket; + nodes = (nprocs.x * nprocs.y * nprocs.z) / ntasksPerNode; jobName = "hpcg-${toString n.x}-${toString n.y}-${toString n.z}-${gitBranch}"; }; @@ -54,31 +61,29 @@ let input = genInput configs; - exec = {nextStage, conf, ...}: with conf; stages.exec { + exec = {nextStage, conf, ...}: stages.exec { inherit nextStage; - env = "NANOS6_DEPENDENCIES=discrete"; argv = [ - "--nx=${toString n.x}" - "--ny=${toString n.y}" - "--nz=${toString n.z}" - "--nblocks=${toString nblocks}" + "--nx=${toString conf.n.x}" + "--ny=${toString conf.n.y}" + "--nz=${toString conf.n.z}" + "--npx=${toString conf.nprocs.x}" + "--npy=${toString conf.nprocs.y}" + "--npz=${toString conf.nprocs.z}" + "--nblocks=${toString conf.nblocks}" + "--ncomms=${toString conf.ncommblocks}" # The input symlink is generated by the input stage, which is generated by # the genInput function. "--load=input" ]; }; - program = {nextStage, conf, ...}: with conf; - let - customPkgs = stdexp.replaceMpi conf.mpi; - in - customPkgs.apps.hpcg.override { - inherit cc nanos6 mcxx gitBranch; - }; + program = {nextStage, conf, ...}: bsc.apps.hpcg.override { + inherit (conf) gitBranch; + }; pipeline = stdexp.stdPipeline ++ [ input exec program ]; in - #{ inherit configs pipeline; } stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/hpcg/oss.scalability.192.nix b/garlic/exp/hpcg/oss.scalability.192.nix new file mode 100644 index 0000000..534e3cd --- /dev/null +++ b/garlic/exp/hpcg/oss.scalability.192.nix @@ -0,0 +1,89 @@ +{ + stdenv +, stdexp +, bsc +, targetMachine +, stages +, genInput +}: + +with stdenv.lib; + +let + # Initial variable configuration + varConf = { + n = [ { x = 192; y = 192; z = 192; } ]; + nprocs = [ + { x = 2; y = 1; z = 1; } + { x = 2; y = 2; z = 1; } + { x = 2; y = 2; z = 2; } + { x = 4; y = 2; z = 2; } + { x = 4; y = 4; z = 2; } + ]; + # nblocks = [ 12 24 48 96 192 384 768 1536 ]; + nblocks = [ 384 768 1536 ]; + ncommblocks = [ 1 ]; + # nodes = [ 1 ]; + # nodes = [ 1 2 4 8 16 ]; + }; + + # Generate the complete configuration for each unit + genConf = c: targetMachine.config // rec { + expName = "hpcg.oss"; + unitName = "${expName}.nb${toString nblocks}"; + + inherit (targetMachine.config) hw; + + # hpcg options + inherit (c) n nprocs nblocks ncommblocks; + + gitBranch = "garlic/tampi+isend+oss+task"; + + # Repeat the execution of each unit 30 times + loops = 10; + + disableAspectRatio = false; + + # Resources + qos = "debug"; + ntasksPerNode = hw.socketsPerNode; + time = "02:00:00"; + # task in one socket + cpusPerTask = hw.cpusPerSocket; + nodes = (nprocs.x * nprocs.y * nprocs.z) / ntasksPerNode; + jobName = "hpcg-${toString n.x}-${toString n.y}-${toString n.z}-${gitBranch}"; + }; + + # Compute the array of configurations + configs = stdexp.buildConfigs { + inherit varConf genConf; + }; + + input = genInput configs; + + exec = {nextStage, conf, ...}: stages.exec { + inherit nextStage; + argv = [ + "--nx=${toString conf.n.x}" + "--ny=${toString conf.n.y}" + "--nz=${toString conf.n.z}" + "--npx=${toString conf.nprocs.x}" + "--npy=${toString conf.nprocs.y}" + "--npz=${toString conf.nprocs.z}" + "--nblocks=${toString conf.nblocks}" + "--ncomms=${toString conf.ncommblocks}" + # The input symlink is generated by the input stage, which is generated by + # the genInput function. + "--load=input" + ]; + }; + + program = {nextStage, conf, ...}: bsc.apps.hpcg.override { + inherit (conf) gitBranch; + }; + + pipeline = stdexp.stdPipeline ++ [ input exec program ]; + +in + + stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/hpcg/slices.nix b/garlic/exp/hpcg/slices.nix new file mode 100644 index 0000000..cff1f75 --- /dev/null +++ b/garlic/exp/hpcg/slices.nix @@ -0,0 +1,91 @@ +{ + stdenv +, stdexp +, bsc +, targetMachine +, stages +, genInput +}: + +with stdenv.lib; + +let + # Initial variable configuration + varConf = { + n = [ { x = 192; y = 192; z = 192; } ]; + nprocs = [ + { x = 2; y = 1; z = 1; } + { x = 4; y = 1; z = 1; } + { x = 8; y = 1; z = 1; } + { x = 16; y = 1; z = 1; } + { x = 32; y = 1; z = 1; } + ]; + # nblocks = [ 12 24 48 96 192 384 768 1536 ]; + nblocks = [ 384 ]; + ncommblocks = [ 1 ]; + # nodes = [ 1 ]; + # nodes = [ 1 2 4 8 16 ]; + }; + + # Generate the complete configuration for each unit + genConf = c: targetMachine.config // rec { + expName = "hpcg.oss"; + unitName = "${expName}.nb${toString nblocks}"; + + inherit (targetMachine.config) hw; + + # hpcg options + inherit (c) n nprocs nblocks ncommblocks; + + gitBranch = "garlic/tampi+isend+oss+task"; + + # Repeat the execution of each unit 30 times + loops = 3; + + disableAspectRatio = true; + + # Resources + qos = "debug"; + ntasksPerNode = hw.socketsPerNode; + time = "02:00:00"; + # task in one socket + cpusPerTask = hw.cpusPerSocket; + nodes = (nprocs.x * nprocs.y * nprocs.z) / ntasksPerNode; + jobName = "hpcg-${toString n.x}-${toString n.y}-${toString n.z}-${gitBranch}"; + }; + + # Compute the array of configurations + configs = stdexp.buildConfigs { + inherit varConf genConf; + }; + + input = genInput configs; + + exec = {nextStage, conf, ...}: stages.exec { + inherit nextStage; + argv = [ + "--nx=${toString conf.n.x}" + "--ny=${toString conf.n.y}" + "--nz=${toString conf.n.z}" + # Distribute all processes in X axis + "--npx=${toString conf.nprocs.x}" + "--npy=${toString conf.nprocs.y}" + "--npz=${toString conf.nprocs.z}" + "--nblocks=${toString conf.nblocks}" + "--ncomms=${toString conf.ncommblocks}" + # The input symlink is generated by the input stage, which is generated by + # the genInput function. + "--load=input" + # Disable HPCG Aspect Ratio to run any mpi layout + ] ++ optional (conf.disableAspectRatio) "--no-ar=1"; + }; + + program = {nextStage, conf, ...}: bsc.apps.hpcg.override { + inherit (conf) gitBranch; + }; + + pipeline = stdexp.stdPipeline ++ [ input exec program ]; + +in + + stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/index.nix b/garlic/exp/index.nix index 6a80b40..910cffe 100644 --- a/garlic/exp/index.nix +++ b/garlic/exp/index.nix @@ -55,12 +55,23 @@ # inherit (bsc.garlic.pp) resultFromTrebuchet; #}; genInput = callPackage ./hpcg/gen.nix { - inherit (bsc.garlic.pp) resultFromTrebuchet; }; oss = callPackage ./hpcg/oss.nix { inherit genInput; }; + + ossGranularity = callPackage ./hpcg/oss.granularity.192.nix { + inherit genInput; + }; + + ossScalability = callPackage ./hpcg/oss.scalability.192.nix { + inherit genInput; + }; + + # slices = callPackage ./hpcg/slices.nix { + # inherit genInput; + # }; }; heat = rec { diff --git a/garlic/fig/hpcg/oss.R b/garlic/fig/hpcg/oss.R index 73d1659..3b68e1d 100644 --- a/garlic/fig/hpcg/oss.R +++ b/garlic/fig/hpcg/oss.R @@ -1,102 +1,112 @@ +# This R program takes as argument the dataset that contains the results of the +# execution of the heat example experiment and produces some plots. All the +# knowledge to understand how this script works is covered by this nice R book: +# +# Winston Chang, R Graphics Cookbook: Practical Recipes for Visualizing Data, +# O’Reilly Media (2020). 2nd edition +# +# Which can be freely read it online here: https://r-graphics.org/ +# +# Please, search in this book before copying some random (and probably oudated) +# reply on stack overflow. + +# We load some R packages to import the required functions. We mainly use the +# tidyverse packages, which are very good for ploting data, library(ggplot2) -library(dplyr) +library(dplyr, warn.conflicts = FALSE) library(scales) library(jsonlite) +library(viridis, warn.conflicts = FALSE) -args=commandArgs(trailingOnly=TRUE) +# Here we simply load the arguments to find the input dataset. If nothing is +# specified we use the file named `input` in the current directory. +# We can run this script directly using: +# Rscript -# Read the timetable from args[1] -input_file = "input.json" -if (length(args)>0) { input_file = args[1] } +# Load the arguments (argv) +args = commandArgs(trailingOnly=TRUE) -# Load the dataset in NDJSON format -dataset = jsonlite::stream_in(file(input_file)) %>% - jsonlite::flatten() +# Set the input dataset if given in argv[1], or use "input" as default +if (length(args)>0) { input_file = args[1] } else { input_file = "input" } -particles = unique(dataset$config.particles) +df = jsonlite::stream_in(file(input_file), verbose=FALSE) %>% -# We only need the nblocks and time -df = select(dataset, config.nblocks, config.hw.cpusPerSocket, time) %>% - rename(nblocks=config.nblocks, - cpusPerSocket=config.hw.cpusPerSocket) + # Then we flatten it, as it may contain dictionaries inside the columns + jsonlite::flatten() %>% -df = df %>% mutate(blocksPerCpu = nblocks / cpusPerSocket) -df$nblocks = as.factor(df$nblocks) -df$blocksPerCpuFactor = as.factor(df$blocksPerCpu) + # Now the dataframe contains all the configuration of the units inside the + # columns named `config.*`, for example `config.cbs`. We first select only + # the columns that we need: + select(config.nblocks, config.ncommblocks, config.hw.cpusPerSocket, unit, time) %>% -# Normalize the time by the median -D=group_by(df, nblocks) %>% - mutate(tnorm = time / median(time) - 1) + # And then we rename those columns to something shorter: + rename(nblocks=config.nblocks, + ncommblocks=config.ncommblocks, + cpusPerSocket=config.hw.cpusPerSocket) %>% -bs_unique = unique(df$nblocks) -nbs=length(bs_unique) + mutate(blocksPerCpu = nblocks / cpusPerSocket) %>% -print(D) + mutate(nblocks = as.factor(nblocks)) %>% + mutate(blocksPerCpu = as.factor(blocksPerCpu)) %>% + mutate(unit = as.factor(unit)) %>% -ppi=300 + group_by(unit) %>% + + # And compute some metrics which are applied to each group. For example we + # compute the median time within the runs of a unit: + mutate(median.time = median(time)) %>% + mutate(normalized.time = time / median.time - 1) %>% + mutate(log.median.time = log(median.time)) %>% + + # Then, we remove the grouping. This step is very important, otherwise the + # plotting functions get confused: + ungroup() + +dpi=300 h=5 w=5 -png("box.png", width=w*ppi, height=h*ppi, res=ppi) -# -# -# -# Create the plot with the normalized time vs nblocks -p = ggplot(data=D, aes(x=blocksPerCpuFactor, y=tnorm)) + +p = ggplot(df, aes(x=blocksPerCpu, y=normalized.time)) + - # Labels - labs(x="Num blocks", y="Normalized time", - title="HPCG normalized time", - subtitle=input_file) + + # The boxplots are useful to identify outliers and problems with the + # distribution of time + geom_boxplot() + - # Center the title - #theme(plot.title = element_text(hjust = 0.5)) + + # We add a line to mark the 1% limit above and below the median + geom_hline(yintercept=c(-0.01, 0.01), linetype="dashed", color="red") + - # Black and white mode (useful for printing) - #theme_bw() + + # The bw theme is recommended for publications + theme_bw() + - # Add the maximum allowed error lines - geom_hline(yintercept=c(-0.01, 0.01), - linetype="dashed", color="red") + + # Here we add the title and the labels of the axes + labs(x="Blocks per CPU", y="Normalized time", title="HPCG granularity: normalized time", + subtitle=input_file) + - # Draw boxplots - geom_boxplot() + + # And set the subtitle font size a bit smaller, so it fits nicely + theme(plot.subtitle=element_text(size=8)) - #scale_y_continuous(breaks = scales::pretty_breaks(n = 10)) + +# Then, we save the plot both in png and pdf +ggsave("normalized.time.png", plot=p, width=w, height=h, dpi=dpi) +ggsave("normalized.time.pdf", plot=p, width=w, height=h, dpi=dpi) - theme_bw() + +# We plot the time of each run as we vary the block size +p = ggplot(df, aes(x=blocksPerCpu, y=time)) + - theme(plot.subtitle=element_text(size=8)) + + # We add a points (scatter plot) using circles (shape=21) a bit larger + # than the default (size=3) + geom_point(shape=21, size=3) + - theme(legend.position = c(0.85, 0.85)) #+ + # The bw theme is recommended for publications + theme_bw() + + # Here we add the title and the labels of the axes + labs(x="Blocks Per CPU", y="Time (s)", title="HPCG granularity: time", + subtitle=input_file) + + # And set the subtitle font size a bit smaller, so it fits nicely + theme(plot.subtitle=element_text(size=8)) +# Then, we save the plot both in png and pdf +ggsave("time.png", plot=p, width=w, height=h, dpi=dpi) +ggsave("time.pdf", plot=p, width=w, height=h, dpi=dpi) -# Render the plot -print(p) - -## Save the png image -dev.off() -# -png("scatter.png", width=w*ppi, height=h*ppi, res=ppi) -# -## Create the plot with the normalized time vs nblocks -p = ggplot(D, aes(x=blocksPerCpuFactor, y=time)) + - - labs(x="Blocks/CPU", y="Time (s)", - title="HPCG granularity", - subtitle=input_file) + - theme_bw() + - theme(plot.subtitle=element_text(size=8)) + - theme(legend.position = c(0.5, 0.88)) + - - geom_point(shape=21, size=3) + - #scale_x_continuous(trans=log2_trans()) + - scale_y_continuous(trans=log2_trans()) - -# Render the plot -print(p) - -# Save the png image -dev.off() diff --git a/garlic/fig/hpcg/oss.granularity.R b/garlic/fig/hpcg/oss.granularity.R new file mode 100644 index 0000000..3b68e1d --- /dev/null +++ b/garlic/fig/hpcg/oss.granularity.R @@ -0,0 +1,112 @@ +# This R program takes as argument the dataset that contains the results of the +# execution of the heat example experiment and produces some plots. All the +# knowledge to understand how this script works is covered by this nice R book: +# +# Winston Chang, R Graphics Cookbook: Practical Recipes for Visualizing Data, +# O’Reilly Media (2020). 2nd edition +# +# Which can be freely read it online here: https://r-graphics.org/ +# +# Please, search in this book before copying some random (and probably oudated) +# reply on stack overflow. + +# We load some R packages to import the required functions. We mainly use the +# tidyverse packages, which are very good for ploting data, +library(ggplot2) +library(dplyr, warn.conflicts = FALSE) +library(scales) +library(jsonlite) +library(viridis, warn.conflicts = FALSE) + +# Here we simply load the arguments to find the input dataset. If nothing is +# specified we use the file named `input` in the current directory. +# We can run this script directly using: +# Rscript + +# Load the arguments (argv) +args = commandArgs(trailingOnly=TRUE) + +# Set the input dataset if given in argv[1], or use "input" as default +if (length(args)>0) { input_file = args[1] } else { input_file = "input" } + +df = jsonlite::stream_in(file(input_file), verbose=FALSE) %>% + + # Then we flatten it, as it may contain dictionaries inside the columns + jsonlite::flatten() %>% + + # Now the dataframe contains all the configuration of the units inside the + # columns named `config.*`, for example `config.cbs`. We first select only + # the columns that we need: + select(config.nblocks, config.ncommblocks, config.hw.cpusPerSocket, unit, time) %>% + + # And then we rename those columns to something shorter: + rename(nblocks=config.nblocks, + ncommblocks=config.ncommblocks, + cpusPerSocket=config.hw.cpusPerSocket) %>% + + mutate(blocksPerCpu = nblocks / cpusPerSocket) %>% + + mutate(nblocks = as.factor(nblocks)) %>% + mutate(blocksPerCpu = as.factor(blocksPerCpu)) %>% + mutate(unit = as.factor(unit)) %>% + + group_by(unit) %>% + + # And compute some metrics which are applied to each group. For example we + # compute the median time within the runs of a unit: + mutate(median.time = median(time)) %>% + mutate(normalized.time = time / median.time - 1) %>% + mutate(log.median.time = log(median.time)) %>% + + # Then, we remove the grouping. This step is very important, otherwise the + # plotting functions get confused: + ungroup() + +dpi=300 +h=5 +w=5 + +p = ggplot(df, aes(x=blocksPerCpu, y=normalized.time)) + + + # The boxplots are useful to identify outliers and problems with the + # distribution of time + geom_boxplot() + + + # We add a line to mark the 1% limit above and below the median + geom_hline(yintercept=c(-0.01, 0.01), linetype="dashed", color="red") + + + # The bw theme is recommended for publications + theme_bw() + + + # Here we add the title and the labels of the axes + labs(x="Blocks per CPU", y="Normalized time", title="HPCG granularity: normalized time", + subtitle=input_file) + + + # And set the subtitle font size a bit smaller, so it fits nicely + theme(plot.subtitle=element_text(size=8)) + +# Then, we save the plot both in png and pdf +ggsave("normalized.time.png", plot=p, width=w, height=h, dpi=dpi) +ggsave("normalized.time.pdf", plot=p, width=w, height=h, dpi=dpi) + +# We plot the time of each run as we vary the block size +p = ggplot(df, aes(x=blocksPerCpu, y=time)) + + + # We add a points (scatter plot) using circles (shape=21) a bit larger + # than the default (size=3) + geom_point(shape=21, size=3) + + + # The bw theme is recommended for publications + theme_bw() + + + # Here we add the title and the labels of the axes + labs(x="Blocks Per CPU", y="Time (s)", title="HPCG granularity: time", + subtitle=input_file) + + + # And set the subtitle font size a bit smaller, so it fits nicely + theme(plot.subtitle=element_text(size=8)) + +# Then, we save the plot both in png and pdf +ggsave("time.png", plot=p, width=w, height=h, dpi=dpi) +ggsave("time.pdf", plot=p, width=w, height=h, dpi=dpi) + diff --git a/garlic/fig/hpcg/oss.scalability.R b/garlic/fig/hpcg/oss.scalability.R new file mode 100644 index 0000000..3e2a20b --- /dev/null +++ b/garlic/fig/hpcg/oss.scalability.R @@ -0,0 +1,116 @@ +# This R program takes as argument the dataset that contains the results of the +# execution of the heat example experiment and produces some plots. All the +# knowledge to understand how this script works is covered by this nice R book: +# +# Winston Chang, R Graphics Cookbook: Practical Recipes for Visualizing Data, +# O’Reilly Media (2020). 2nd edition +# +# Which can be freely read it online here: https://r-graphics.org/ +# +# Please, search in this book before copying some random (and probably oudated) +# reply on stack overflow. + +# We load some R packages to import the required functions. We mainly use the +# tidyverse packages, which are very good for ploting data, +library(ggplot2) +library(dplyr, warn.conflicts = FALSE) +library(scales) +library(jsonlite) +library(viridis, warn.conflicts = FALSE) + +# Here we simply load the arguments to find the input dataset. If nothing is +# specified we use the file named `input` in the current directory. +# We can run this script directly using: +# Rscript + +# Load the arguments (argv) +args = commandArgs(trailingOnly=TRUE) + +# Set the input dataset if given in argv[1], or use "input" as default +if (length(args)>0) { input_file = args[1] } else { input_file = "input" } + +df = jsonlite::stream_in(file(input_file), verbose=FALSE) %>% + + # Then we flatten it, as it may contain dictionaries inside the columns + jsonlite::flatten() %>% + + # Now the dataframe contains all the configuration of the units inside the + # columns named `config.*`, for example `config.cbs`. We first select only + # the columns that we need: + select(config.nblocks, config.ncommblocks, config.hw.cpusPerSocket, config.nodes, unit, time) %>% + + # And then we rename those columns to something shorter: + rename(nblocks=config.nblocks, + ncommblocks=config.ncommblocks, + cpusPerSocket=config.hw.cpusPerSocket, + nodes=config.nodes) %>% + + mutate(blocksPerCpu = nblocks / cpusPerSocket) %>% + + mutate(nblocks = as.factor(nblocks)) %>% + mutate(blocksPerCpu = as.factor(blocksPerCpu)) %>% + mutate(nodes = as.factor(nodes)) %>% + mutate(unit = as.factor(unit)) %>% + + group_by(unit) %>% + + # And compute some metrics which are applied to each group. For example we + # compute the median time within the runs of a unit: + mutate(median.time = median(time)) %>% + mutate(normalized.time = time / median.time - 1) %>% + mutate(log.median.time = log(median.time)) %>% + + # Then, we remove the grouping. This step is very important, otherwise the + # plotting functions get confused: + ungroup() + +dpi=300 +h=5 +w=5 + +p = ggplot(df, aes(x=nodes, y=normalized.time, color=blocksPerCpu)) + + + # The boxplots are useful to identify outliers and problems with the + # distribution of time + geom_boxplot() + + + # We add a line to mark the 1% limit above and below the median + geom_hline(yintercept=c(-0.01, 0.01), linetype="dashed", color="red") + + + # The bw theme is recommended for publications + theme_bw() + + + # Here we add the title and the labels of the axes + labs(x="Nodes", y="Normalized time", title="HPCG weak scalability: normalized time", + color="Blocks per CPU", + subtitle=input_file) + + + # And set the subtitle font size a bit smaller, so it fits nicely + theme(plot.subtitle=element_text(size=8)) + +# Then, we save the plot both in png and pdf +ggsave("normalized.time.png", plot=p, width=w, height=h, dpi=dpi) +ggsave("normalized.time.pdf", plot=p, width=w, height=h, dpi=dpi) + +# We plot the time of each run as we vary the block size +p = ggplot(df, aes(x=nodes, y=time, color=blocksPerCpu)) + + + # We add a points (scatter plot) using circles (shape=21) a bit larger + # than the default (size=3) + geom_point(shape=21, size=3) + + + # The bw theme is recommended for publications + theme_bw() + + + # Here we add the title and the labels of the axes + labs(x="Nodes", y="Time (s)", title="HPCG weak scalability: time", + color="Blocks per CPU", + subtitle=input_file) + + + # And set the subtitle font size a bit smaller, so it fits nicely + theme(plot.subtitle=element_text(size=8)) + +# Then, we save the plot both in png and pdf +ggsave("time.png", plot=p, width=w, height=h, dpi=dpi) +ggsave("time.pdf", plot=p, width=w, height=h, dpi=dpi) + diff --git a/garlic/fig/index.nix b/garlic/fig/index.nix index b268498..b4ade9a 100644 --- a/garlic/fig/index.nix +++ b/garlic/fig/index.nix @@ -38,7 +38,9 @@ in }; hpcg = with exp.hpcg; { - oss = stdPlot ./hpcg/oss.R [ oss ]; + ossGranularity = stdPlot ./hpcg/oss.granularity.R [ ossGranularity ]; + ossScalability = stdPlot ./hpcg/oss.scalability.R [ ossScalability ]; + # slices = stdPlot ./hpcg/oss.R [ slices ]; }; saiph = with exp.saiph; { From b60a46b6836feb121d14a0d5f9d015c4e6cb1da1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ra=C3=BAl=20Pe=C3=B1acoba?= Date: Fri, 26 Mar 2021 16:20:04 +0100 Subject: [PATCH 671/987] hpcg: add weakscaling over some nblocks to check which axis is better --- garlic/exp/hpcg/oss.slices.weakscaling.nix | 104 +++++++++++++++++++ garlic/exp/hpcg/slices.nix | 17 +++- garlic/exp/index.nix | 10 +- garlic/fig/hpcg/oss.slices.weakscaling.R | 110 +++++++++++++++++++++ garlic/fig/index.nix | 8 +- 5 files changed, 240 insertions(+), 9 deletions(-) create mode 100644 garlic/exp/hpcg/oss.slices.weakscaling.nix create mode 100644 garlic/fig/hpcg/oss.slices.weakscaling.R diff --git a/garlic/exp/hpcg/oss.slices.weakscaling.nix b/garlic/exp/hpcg/oss.slices.weakscaling.nix new file mode 100644 index 0000000..4ff467d --- /dev/null +++ b/garlic/exp/hpcg/oss.slices.weakscaling.nix @@ -0,0 +1,104 @@ +{ + stdenv +, stdexp +, bsc +, targetMachine +, stages +, genInput +}: + +with stdenv.lib; + +let + # Initial variable configuration + varConf = { + n = [ { x = 192; y = 192; z = 192; } ]; + nprocs = [ + { x = 2; y = 1; z = 1; } + { x = 4; y = 1; z = 1; } + { x = 8; y = 1; z = 1; } + { x = 16; y = 1; z = 1; } + { x = 32; y = 1; z = 1; } + + { x = 1; y = 2; z = 1; } + { x = 1; y = 4; z = 1; } + { x = 1; y = 8; z = 1; } + { x = 1; y = 16; z = 1; } + { x = 1; y = 32; z = 1; } + + { x = 1; y = 1; z = 2; } + { x = 1; y = 1; z = 4; } + { x = 1; y = 1; z = 8; } + { x = 1; y = 1; z = 16; } + { x = 1; y = 1; z = 32; } + + ]; + # nblocks = [ 12 24 48 96 192 384 768 1536 ]; + nblocks = [ 384 768 1536 ]; + ncommblocks = [ 1 ]; + # nodes = [ 1 ]; + # nodes = [ 1 2 4 8 16 ]; + }; + + # Generate the complete configuration for each unit + genConf = c: targetMachine.config // rec { + expName = "hpcg.oss"; + unitName = "${expName}.nb${toString nblocks}"; + + inherit (targetMachine.config) hw; + + # hpcg options + inherit (c) n nprocs nblocks ncommblocks; + + gitBranch = "garlic/tampi+isend+oss+task"; + + # Repeat the execution of each unit 30 times + loops = 10; + + disableAspectRatio = true; + + # Resources + qos = "debug"; + ntasksPerNode = hw.socketsPerNode; + time = "02:00:00"; + # task in one socket + cpusPerTask = hw.cpusPerSocket; + nodes = (nprocs.x * nprocs.y * nprocs.z) / ntasksPerNode; + jobName = "hpcg-${toString n.x}-${toString n.y}-${toString n.z}-${gitBranch}"; + }; + + # Compute the array of configurations + configs = stdexp.buildConfigs { + inherit varConf genConf; + }; + + input = genInput configs; + + exec = {nextStage, conf, ...}: stages.exec { + inherit nextStage; + argv = [ + "--nx=${toString conf.n.x}" + "--ny=${toString conf.n.y}" + "--nz=${toString conf.n.z}" + # Distribute all processes in X axis + "--npx=${toString conf.nprocs.x}" + "--npy=${toString conf.nprocs.y}" + "--npz=${toString conf.nprocs.z}" + "--nblocks=${toString conf.nblocks}" + "--ncomms=${toString conf.ncommblocks}" + # The input symlink is generated by the input stage, which is generated by + # the genInput function. + "--load=input" + # Disable HPCG Aspect Ratio to run any mpi layout + ] ++ optional (conf.disableAspectRatio) "--no-ar=1"; + }; + + program = {nextStage, conf, ...}: bsc.apps.hpcg.override { + inherit (conf) gitBranch; + }; + + pipeline = stdexp.stdPipeline ++ [ input exec program ]; + +in + + stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/hpcg/slices.nix b/garlic/exp/hpcg/slices.nix index cff1f75..4ff467d 100644 --- a/garlic/exp/hpcg/slices.nix +++ b/garlic/exp/hpcg/slices.nix @@ -19,9 +19,22 @@ let { x = 8; y = 1; z = 1; } { x = 16; y = 1; z = 1; } { x = 32; y = 1; z = 1; } + + { x = 1; y = 2; z = 1; } + { x = 1; y = 4; z = 1; } + { x = 1; y = 8; z = 1; } + { x = 1; y = 16; z = 1; } + { x = 1; y = 32; z = 1; } + + { x = 1; y = 1; z = 2; } + { x = 1; y = 1; z = 4; } + { x = 1; y = 1; z = 8; } + { x = 1; y = 1; z = 16; } + { x = 1; y = 1; z = 32; } + ]; # nblocks = [ 12 24 48 96 192 384 768 1536 ]; - nblocks = [ 384 ]; + nblocks = [ 384 768 1536 ]; ncommblocks = [ 1 ]; # nodes = [ 1 ]; # nodes = [ 1 2 4 8 16 ]; @@ -40,7 +53,7 @@ let gitBranch = "garlic/tampi+isend+oss+task"; # Repeat the execution of each unit 30 times - loops = 3; + loops = 10; disableAspectRatio = true; diff --git a/garlic/exp/index.nix b/garlic/exp/index.nix index 910cffe..02ad682 100644 --- a/garlic/exp/index.nix +++ b/garlic/exp/index.nix @@ -65,13 +65,13 @@ inherit genInput; }; - ossScalability = callPackage ./hpcg/oss.scalability.192.nix { - inherit genInput; - }; - - # slices = callPackage ./hpcg/slices.nix { + # ossScalability = callPackage ./hpcg/oss.scalability.192.nix { # inherit genInput; # }; + + ossSlicesWeakscaling = callPackage ./hpcg/oss.slices.weakscaling.nix { + inherit genInput; + }; }; heat = rec { diff --git a/garlic/fig/hpcg/oss.slices.weakscaling.R b/garlic/fig/hpcg/oss.slices.weakscaling.R new file mode 100644 index 0000000..7109b0f --- /dev/null +++ b/garlic/fig/hpcg/oss.slices.weakscaling.R @@ -0,0 +1,110 @@ +# This R program takes as argument the dataset that contains the results of the +# execution of the heat example experiment and produces some plots. All the +# knowledge to understand how this script works is covered by this nice R book: +# +# Winston Chang, R Graphics Cookbook: Practical Recipes for Visualizing Data, +# O’Reilly Media (2020). 2nd edition +# +# Which can be freely read it online here: https://r-graphics.org/ +# +# Please, search in this book before copying some random (and probably oudated) +# reply on stack overflow. + +# We load some R packages to import the required functions. We mainly use the +# tidyverse packages, which are very good for ploting data, +library(ggplot2) +library(dplyr, warn.conflicts = FALSE) +library(scales) +library(jsonlite) +library(viridis, warn.conflicts = FALSE) + +# Here we simply load the arguments to find the input dataset. If nothing is +# specified we use the file named `input` in the current directory. +# We can run this script directly using: +# Rscript + +# Load the arguments (argv) +args = commandArgs(trailingOnly=TRUE) + +# Set the input dataset if given in argv[1], or use "input" as default +if (length(args)>0) { input_file = args[1] } else { input_file = "input" } + +df = jsonlite::stream_in(file(input_file), verbose=FALSE) %>% + + # Then we flatten it, as it may contain dictionaries inside the columns + jsonlite::flatten() %>% + + # Now the dataframe contains all the configuration of the units inside the + # columns named `config.*`, for example `config.cbs`. We first select only + # the columns that we need: + select(config.nblocks, + config.ncommblocks, + config.hw.cpusPerSocket, + config.nodes, + config.nprocs.x, + config.nprocs.y, + config.nprocs.z, + unit, + time + ) %>% + + # And then we rename those columns to something shorter: + rename(nblocks=config.nblocks, + ncommblocks=config.ncommblocks, + cpusPerSocket=config.hw.cpusPerSocket, + nodes=config.nodes, + npx=config.nprocs.x, + npy=config.nprocs.y, + npz=config.nprocs.z + ) %>% + + mutate(axisColor=as.factor(ifelse(npx != 1, "X", ifelse(npy != 1, "Y", "Z")))) %>% + + mutate(blocksPerCpu = nblocks / cpusPerSocket) %>% + + mutate(nblocks = as.factor(nblocks)) %>% + mutate(blocksPerCpu = as.factor(blocksPerCpu)) %>% + mutate(nodes = as.factor(nodes)) %>% + mutate(unit = as.factor(unit)) %>% + + group_by(unit) %>% + + # And compute some metrics which are applied to each group. For example we + # compute the median time within the runs of a unit: + mutate(median.time = median(time)) %>% + mutate(normalized.time = time / median.time - 1) %>% + mutate(log.median.time = log(median.time)) %>% + + # Then, we remove the grouping. This step is very important, otherwise the + # plotting functions get confused: + ungroup() + +dpi=300 +h=5 +w=5 +w=3*w + +# We plot the time of each run as we vary the block size +p = ggplot(df, aes(x=blocksPerCpu, y=time, color=axisColor)) + + + # We add a points (scatter plot) using circles (shape=21) a bit larger + # than the default (size=3) + geom_point(shape=21, size=3) + + + facet_wrap(~ nodes, labeller="label_both") + + + # The bw theme is recommended for publications + theme_bw() + + + # Here we add the title and the labels of the axes + labs(x="Blocks Per CPU", y="Time (s)", title="HPCG weak scalability: time", + color="Axis", + subtitle=input_file) + + + # And set the subtitle font size a bit smaller, so it fits nicely + theme(plot.subtitle=element_text(size=8)) + +# Then, we save the plot both in png and pdf +ggsave("time.png", plot=p, width=w, height=h, dpi=dpi) +ggsave("time.pdf", plot=p, width=w, height=h, dpi=dpi) + diff --git a/garlic/fig/index.nix b/garlic/fig/index.nix index b4ade9a..b87c9ce 100644 --- a/garlic/fig/index.nix +++ b/garlic/fig/index.nix @@ -38,9 +38,13 @@ in }; hpcg = with exp.hpcg; { + # /nix/store/8dr191vch1nw7vfz8nj36d5nhwnbdnf3-plot ossGranularity = stdPlot ./hpcg/oss.granularity.R [ ossGranularity ]; - ossScalability = stdPlot ./hpcg/oss.scalability.R [ ossScalability ]; - # slices = stdPlot ./hpcg/oss.R [ slices ]; + + # ossScalability = stdPlot ./hpcg/oss.scalability.R [ ossScalability ]; + + # /nix/store/a3x76fbnfbacn2xhz3q65fklfp0qbb6p-plot + ossWeakscalingPerAxisPerBlock = stdPlot ./hpcg/oss.slices.weakscaling.R [ ossSlicesWeakscaling ]; }; saiph = with exp.saiph; { From cb6577b439317af8f8e4f89d1aff5291bed30f71 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ra=C3=BAl=20Pe=C3=B1acoba?= Date: Fri, 26 Mar 2021 18:20:16 +0100 Subject: [PATCH 672/987] hpcg: add strongscaling HPCG rounds problem size axis when its value is < 16 --- garlic/exp/hpcg/oss.slices.strongscaling.nix | 112 +++++++++++++++++++ garlic/exp/index.nix | 3 + garlic/fig/hpcg/oss.slices.strongscaling.R | 109 ++++++++++++++++++ garlic/fig/index.nix | 3 + 4 files changed, 227 insertions(+) create mode 100644 garlic/exp/hpcg/oss.slices.strongscaling.nix create mode 100644 garlic/fig/hpcg/oss.slices.strongscaling.R diff --git a/garlic/exp/hpcg/oss.slices.strongscaling.nix b/garlic/exp/hpcg/oss.slices.strongscaling.nix new file mode 100644 index 0000000..361472c --- /dev/null +++ b/garlic/exp/hpcg/oss.slices.strongscaling.nix @@ -0,0 +1,112 @@ +{ + stdenv +, stdexp +, bsc +, targetMachine +, stages +, genInput +}: + +with stdenv.lib; + +let + # Initial variable configuration + varConf = { + n = [ + { x = 192; y = 192; z = 16 * 192; } + ]; + nprocs = [ + # { x = 2; y = 1; z = 1; } + # { x = 4; y = 1; z = 1; } + # { x = 8; y = 1; z = 1; } + # { x = 16; y = 1; z = 1; } + # { x = 32; y = 1; z = 1; } + + # { x = 1; y = 2; z = 1; } + # { x = 1; y = 4; z = 1; } + # { x = 1; y = 8; z = 1; } + # { x = 1; y = 16; z = 1; } + # { x = 1; y = 32; z = 1; } + + { x = 1; y = 1; z = 2; } + { x = 1; y = 1; z = 4; } + { x = 1; y = 1; z = 8; } + { x = 1; y = 1; z = 16; } + { x = 1; y = 1; z = 32; } + + ]; + # nblocks = [ 12 24 48 96 192 384 768 1536 ]; + nblocks = [ 24 48 96 192 ]; + ncommblocks = [ 1 ]; + # nodes = [ 1 ]; + # nodes = [ 1 2 4 8 16 ]; + }; + + # Generate the complete configuration for each unit + genConf = c: targetMachine.config // rec { + expName = "hpcg.oss"; + unitName = "${expName}.nb${toString nblocks}"; + + inherit (targetMachine.config) hw; + + # hpcg options + inherit (c) nprocs nblocks ncommblocks; + + n = { + x = c.n.x / nprocs.x; + y = c.n.y / nprocs.y; + z = c.n.z / nprocs.z; + }; + + gitBranch = "garlic/tampi+isend+oss+task"; + + # Repeat the execution of each unit 30 times + loops = 1; + + disableAspectRatio = true; + + # Resources + qos = "debug"; + ntasksPerNode = hw.socketsPerNode; + time = "02:00:00"; + # task in one socket + cpusPerTask = hw.cpusPerSocket; + nodes = (nprocs.x * nprocs.y * nprocs.z) / ntasksPerNode; + jobName = "hpcg-${toString n.x}-${toString n.y}-${toString n.z}-${gitBranch}"; + }; + + # Compute the array of configurations + configs = stdexp.buildConfigs { + inherit varConf genConf; + }; + + input = genInput configs; + + exec = {nextStage, conf, ...}: stages.exec { + inherit nextStage; + argv = [ + "--nx=${toString conf.n.x}" + "--ny=${toString conf.n.y}" + "--nz=${toString conf.n.z}" + # Distribute all processes in X axis + "--npx=${toString conf.nprocs.x}" + "--npy=${toString conf.nprocs.y}" + "--npz=${toString conf.nprocs.z}" + "--nblocks=${toString conf.nblocks}" + "--ncomms=${toString conf.ncommblocks}" + # The input symlink is generated by the input stage, which is generated by + # the genInput function. + "--load=input" + # Disable HPCG Aspect Ratio to run any mpi layout + ] ++ optional (conf.disableAspectRatio) "--no-ar=1"; + }; + + program = {nextStage, conf, ...}: bsc.apps.hpcg.override { + inherit (conf) gitBranch; + }; + + pipeline = stdexp.stdPipeline ++ [ input exec program ]; + +in + + stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/index.nix b/garlic/exp/index.nix index 02ad682..0524ee4 100644 --- a/garlic/exp/index.nix +++ b/garlic/exp/index.nix @@ -72,6 +72,9 @@ ossSlicesWeakscaling = callPackage ./hpcg/oss.slices.weakscaling.nix { inherit genInput; }; + ossSlicesStrongscaling = callPackage ./hpcg/oss.slices.strongscaling.nix { + inherit genInput; + }; }; heat = rec { diff --git a/garlic/fig/hpcg/oss.slices.strongscaling.R b/garlic/fig/hpcg/oss.slices.strongscaling.R new file mode 100644 index 0000000..084e877 --- /dev/null +++ b/garlic/fig/hpcg/oss.slices.strongscaling.R @@ -0,0 +1,109 @@ +# This R program takes as argument the dataset that contains the results of the +# execution of the heat example experiment and produces some plots. All the +# knowledge to understand how this script works is covered by this nice R book: +# +# Winston Chang, R Graphics Cookbook: Practical Recipes for Visualizing Data, +# O’Reilly Media (2020). 2nd edition +# +# Which can be freely read it online here: https://r-graphics.org/ +# +# Please, search in this book before copying some random (and probably oudated) +# reply on stack overflow. + +# We load some R packages to import the required functions. We mainly use the +# tidyverse packages, which are very good for ploting data, +library(ggplot2) +library(dplyr, warn.conflicts = FALSE) +library(scales) +library(jsonlite) +library(viridis, warn.conflicts = FALSE) + +# Here we simply load the arguments to find the input dataset. If nothing is +# specified we use the file named `input` in the current directory. +# We can run this script directly using: +# Rscript + +# Load the arguments (argv) +args = commandArgs(trailingOnly=TRUE) + +# Set the input dataset if given in argv[1], or use "input" as default +if (length(args)>0) { input_file = args[1] } else { input_file = "input" } + +df = jsonlite::stream_in(file(input_file), verbose=FALSE) %>% + + # Then we flatten it, as it may contain dictionaries inside the columns + jsonlite::flatten() %>% + + # Now the dataframe contains all the configuration of the units inside the + # columns named `config.*`, for example `config.cbs`. We first select only + # the columns that we need: + select(config.nblocks, + config.ncommblocks, + config.hw.cpusPerSocket, + config.nodes, + config.nprocs.x, + config.nprocs.y, + config.nprocs.z, + unit, + time + ) %>% + + # And then we rename those columns to something shorter: + rename(nblocks=config.nblocks, + ncommblocks=config.ncommblocks, + cpusPerSocket=config.hw.cpusPerSocket, + nodes=config.nodes, + npx=config.nprocs.x, + npy=config.nprocs.y, + npz=config.nprocs.z + ) %>% + + mutate(axisColor=as.factor(ifelse(npx != 1, "X", ifelse(npy != 1, "Y", "Z")))) %>% + + mutate(blocksPerCpu = nblocks / cpusPerSocket) %>% + + mutate(nblocks = as.factor(nblocks)) %>% + mutate(blocksPerCpu = as.factor(blocksPerCpu)) %>% + mutate(nodes = as.factor(nodes)) %>% + mutate(unit = as.factor(unit)) %>% + + mutate(timePerNprocs = time * npz) %>% + + group_by(unit) %>% + + # And compute some metrics which are applied to each group. For example we + # compute the median time within the runs of a unit: + mutate(median.time = median(time)) %>% + mutate(normalized.time = time / median.time - 1) %>% + mutate(log.median.time = log(median.time)) %>% + + # Then, we remove the grouping. This step is very important, otherwise the + # plotting functions get confused: + ungroup() + +dpi=300 +h=5 +w=5 + +# We plot the time of each run as we vary the block size +p = ggplot(df, aes(x=nodes, y=timePerNprocs, color=blocksPerCpu)) + + + # We add a points (scatter plot) using circles (shape=21) a bit larger + # than the default (size=3) + geom_point(shape=21, size=3) + + + # The bw theme is recommended for publications + theme_bw() + + + # Here we add the title and the labels of the axes + labs(x="Nodes", y="Time * Num Procs", title="HPCG strong scalability: Z axis", + color="Blocks Per CPU", + subtitle=input_file) + + + # And set the subtitle font size a bit smaller, so it fits nicely + theme(plot.subtitle=element_text(size=8)) + +# Then, we save the plot both in png and pdf +ggsave("time.png", plot=p, width=w, height=h, dpi=dpi) +ggsave("time.pdf", plot=p, width=w, height=h, dpi=dpi) + diff --git a/garlic/fig/index.nix b/garlic/fig/index.nix index b87c9ce..c70bc3a 100644 --- a/garlic/fig/index.nix +++ b/garlic/fig/index.nix @@ -45,6 +45,9 @@ in # /nix/store/a3x76fbnfbacn2xhz3q65fklfp0qbb6p-plot ossWeakscalingPerAxisPerBlock = stdPlot ./hpcg/oss.slices.weakscaling.R [ ossSlicesWeakscaling ]; + + # /nix/store/pxf41v2c37h5fh5x8hm6dv297hkdka04-plot + ossStrongscalingPerBlock = stdPlot ./hpcg/oss.slices.strongscaling.R [ ossSlicesStrongscaling ]; }; saiph = with exp.saiph; { From f5c8d0cb883384b31f6e1f1ef164329789405a94 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ra=C3=BAl=20Pe=C3=B1acoba?= Date: Fri, 9 Apr 2021 17:00:32 +0200 Subject: [PATCH 673/987] hpcg: choose a smaller strong scaling problem size --- garlic/exp/hpcg/oss.slices.strongscaling.nix | 6 +++--- garlic/fig/index.nix | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/garlic/exp/hpcg/oss.slices.strongscaling.nix b/garlic/exp/hpcg/oss.slices.strongscaling.nix index 361472c..c7cb46d 100644 --- a/garlic/exp/hpcg/oss.slices.strongscaling.nix +++ b/garlic/exp/hpcg/oss.slices.strongscaling.nix @@ -13,7 +13,7 @@ let # Initial variable configuration varConf = { n = [ - { x = 192; y = 192; z = 16 * 192; } + { x = 192 / 4; y = 192 / 4; z = 16 * 192; } ]; nprocs = [ # { x = 2; y = 1; z = 1; } @@ -36,7 +36,7 @@ let ]; # nblocks = [ 12 24 48 96 192 384 768 1536 ]; - nblocks = [ 24 48 96 192 ]; + nblocks = [ 24 48 96 192 384 ]; ncommblocks = [ 1 ]; # nodes = [ 1 ]; # nodes = [ 1 2 4 8 16 ]; @@ -61,7 +61,7 @@ let gitBranch = "garlic/tampi+isend+oss+task"; # Repeat the execution of each unit 30 times - loops = 1; + loops = 10; disableAspectRatio = true; diff --git a/garlic/fig/index.nix b/garlic/fig/index.nix index c70bc3a..2fed713 100644 --- a/garlic/fig/index.nix +++ b/garlic/fig/index.nix @@ -46,7 +46,7 @@ in # /nix/store/a3x76fbnfbacn2xhz3q65fklfp0qbb6p-plot ossWeakscalingPerAxisPerBlock = stdPlot ./hpcg/oss.slices.weakscaling.R [ ossSlicesWeakscaling ]; - # /nix/store/pxf41v2c37h5fh5x8hm6dv297hkdka04-plot + # /nix/store/096rl6344pbz5wrzgxgqn651pysfkkjc-plot ossStrongscalingPerBlock = stdPlot ./hpcg/oss.slices.strongscaling.R [ ossSlicesStrongscaling ]; }; From 4d629fe8f71b64269024fc7a4ce0b015ad5a8387 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ra=C3=BAl=20Pe=C3=B1acoba?= Date: Mon, 12 Apr 2021 08:50:41 +0200 Subject: [PATCH 674/987] hpcg: remove old comments --- garlic/exp/index.nix | 11 ++--------- garlic/fig/index.nix | 2 -- 2 files changed, 2 insertions(+), 11 deletions(-) diff --git a/garlic/exp/index.nix b/garlic/exp/index.nix index 0524ee4..a33ca36 100644 --- a/garlic/exp/index.nix +++ b/garlic/exp/index.nix @@ -51,11 +51,7 @@ #mpi = callPackage ./hpcg/mpi.nix { }; #omp = callPackage ./hpcg/omp.nix { }; #mpi_omp = callPackage ./hpcg/mpi+omp.nix { }; - #input = callPackage ./hpcg/gen.nix { - # inherit (bsc.garlic.pp) resultFromTrebuchet; - #}; - genInput = callPackage ./hpcg/gen.nix { - }; + genInput = callPackage ./hpcg/gen.nix { }; oss = callPackage ./hpcg/oss.nix { inherit genInput; @@ -65,13 +61,10 @@ inherit genInput; }; - # ossScalability = callPackage ./hpcg/oss.scalability.192.nix { - # inherit genInput; - # }; - ossSlicesWeakscaling = callPackage ./hpcg/oss.slices.weakscaling.nix { inherit genInput; }; + ossSlicesStrongscaling = callPackage ./hpcg/oss.slices.strongscaling.nix { inherit genInput; }; diff --git a/garlic/fig/index.nix b/garlic/fig/index.nix index 2fed713..072bd39 100644 --- a/garlic/fig/index.nix +++ b/garlic/fig/index.nix @@ -41,8 +41,6 @@ in # /nix/store/8dr191vch1nw7vfz8nj36d5nhwnbdnf3-plot ossGranularity = stdPlot ./hpcg/oss.granularity.R [ ossGranularity ]; - # ossScalability = stdPlot ./hpcg/oss.scalability.R [ ossScalability ]; - # /nix/store/a3x76fbnfbacn2xhz3q65fklfp0qbb6p-plot ossWeakscalingPerAxisPerBlock = stdPlot ./hpcg/oss.slices.weakscaling.R [ ossSlicesWeakscaling ]; From 9bb570af7f58b95e410ae2fe4f9c4121fd83fafb Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 16 Apr 2021 11:49:37 +0200 Subject: [PATCH 675/987] tools: add floatTruncate function --- garlic/tools.nix | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/garlic/tools.nix b/garlic/tools.nix index 836ee73..db9c2a7 100644 --- a/garlic/tools.nix +++ b/garlic/tools.nix @@ -77,6 +77,14 @@ let optionalInherit = l: a: filterAttrs (n: v: v!=null) (overrideExisting (genNullAttr l) a); + # Given a float f, truncates it and returns the resulting the integer + floatTruncate = f: let + strFloat = toString f; + slices = splitString "." strFloat; + front = elemAt slices 0; + in + toInt front; + }; in gen From b4e37a15a9ae8f60955313ffead981c3f3fcd812 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 16 Apr 2021 11:51:34 +0200 Subject: [PATCH 676/987] hpcg: refactor ss and gen using a common file - The file gen.nix now provides an experiment for each unit, to reduce the evaluation time. - The pipeline is specified in the common.nix file only. - The input dataset path is no longer symlinked, but is specified in the "--load" argument. - The size is renamed to "sizePerTask" instead of "n". --- garlic/exp/hpcg/common.nix | 72 ++++++++++++ garlic/exp/hpcg/gen.nix | 94 ++++------------ garlic/exp/hpcg/oss.slices.strongscaling.nix | 112 ------------------- garlic/exp/hpcg/ss.nix | 68 +++++++++++ garlic/exp/index.nix | 6 +- 5 files changed, 165 insertions(+), 187 deletions(-) create mode 100644 garlic/exp/hpcg/common.nix delete mode 100644 garlic/exp/hpcg/oss.slices.strongscaling.nix create mode 100644 garlic/exp/hpcg/ss.nix diff --git a/garlic/exp/hpcg/common.nix b/garlic/exp/hpcg/common.nix new file mode 100644 index 0000000..6bc5275 --- /dev/null +++ b/garlic/exp/hpcg/common.nix @@ -0,0 +1,72 @@ +{ + stdenv +, stdexp +, bsc +, stages +, callPackage +}: + +with stdenv.lib; + +rec { + + checkInput = {nextStage, conf, ...}: stages.exec { + inherit nextStage; + pre = optionalString (! (conf.enableGen or false)) ( + let + gen = callPackage ./gen.nix { }; + inputTre = gen.getInputTre conf; + exp = inputTre.experiment; + unit = elemAt exp.units 0; + expName = baseNameOf (toString exp); + unitName = baseNameOf (toString unit); + inputPath = "$GARLIC_OUT/${expName}/${unitName}/1"; + in + '' + # Force the generation of the input resultTree as a dependency: + # ${toString inputTre.result} + + # Ensure the input dataset is still available + export HPCG_INPUT_PATH="${toString inputPath}" + + if [ ! -e "$HPCG_INPUT_PATH" ]; then + >&2 echo "Missing input dataset: $HPCG_INPUT_PATH" + exit 1 + fi + '' + ); + }; + + getSizePerTask = cpusPerTask: sizePerCpu: + mapAttrs (name: val: val * cpusPerTask) sizePerCpu; + + exec = {nextStage, conf, ...}: let + actionArg = if (conf.enableGen or false) + then "--store=." + else "--load=\"$HPCG_INPUT_PATH\""; + + in stages.exec { + inherit nextStage; + argv = [ + "--nx=${toString conf.sizePerTask.x}" + "--ny=${toString conf.sizePerTask.y}" + "--nz=${toString conf.sizePerTask.z}" + "--npx=${toString conf.nprocs.x}" + "--npy=${toString conf.nprocs.y}" + "--npz=${toString conf.nprocs.z}" + "--nblocks=${toString conf.nblocks}" + "--ncomms=${toString conf.ncomms}" + # The input symlink is generated by the input stage, which is generated by + # the genInput function. + actionArg + ] ++ optional (conf.disableAspectRatio or false) "--no-ar=1"; + }; + + program = {nextStage, conf, ...}: bsc.apps.hpcg.override { + inherit (conf) gitBranch; + }; + + pipeline = stdexp.stdPipeline ++ [ + checkInput + exec program ]; +} diff --git a/garlic/exp/hpcg/gen.nix b/garlic/exp/hpcg/gen.nix index a9e7316..f91962f 100644 --- a/garlic/exp/hpcg/gen.nix +++ b/garlic/exp/hpcg/gen.nix @@ -5,95 +5,45 @@ , targetMachine , stages , garlicTools +, callPackage }: with stdenv.lib; -with builtins; with garlicTools; -let +rec { + # Generate the complete configuration for each unit genConf = c: targetMachine.config // rec { expName = "${c.expName}.gen"; - unitName = "${expName}.n${toString n.x}"; + unitName = "${c.unitName}.gen"; inherit (targetMachine.config) hw; - # Only the n and gitBranch options are inherited - inherit (c) n nprocs disableAspectRatio nodes ntasksPerNode gitBranch; + # Inherit options from the current conf + inherit (c) sizePerTask nprocs disableAspectRatio gitBranch + cpusPerTask ntasksPerNode nodes; - # Repeat the execution of each unit 30 times + # nblocks and ncomms are ignored from c + ncomms = 1; + nblocks = 1; + + # We only need one run loops = 1; + # Generate the input + enableGen = true; + # Resources qos = "debug"; - # ntasksPerNode = hw.socketsPerNode; - # nodes = 2; - time = "00:30:00"; - # task in one socket - cpusPerTask = hw.cpusPerSocket; + time = "02:00:00"; jobName = unitName; }; - exec = {nextStage, conf, ...}: with conf; stages.exec { - inherit nextStage; - argv = [ - "--nx=${toString conf.n.x}" - "--ny=${toString conf.n.y}" - "--nz=${toString conf.n.z}" - "--npx=${toString conf.nprocs.x}" - "--npy=${toString conf.nprocs.y}" - "--npz=${toString conf.nprocs.z}" - # nblocks and ncomms are ignored - "--nblocks=1" - "--ncomms=1" - # Store the results in the same directory - "--store=." - ] ++ optional (conf.disableAspectRatio) "--no-ar=1"; + common = callPackage ./common.nix {}; + + getInputTre = conf: stdexp.genExperiment { + configs = [ (genConf conf) ]; + pipeline = common.pipeline; }; - - program = {nextStage, conf, ...}: bsc.apps.hpcg.override { - inherit (conf) gitBranch; - }; - - pipeline = stdexp.stdPipeline ++ [ exec program ]; - - genExp = configs: stdexp.genExperiment { inherit configs pipeline; }; - - genInputLink = inputConfigs: {nextStage, conf, ...}: - let - # Compute the experiment that produces HPCG input matrix from the - # configuration of this unit: - configs = map genConf inputConfigs; - inputTre = genExp configs; - #inputExp = getExperimentStage inputTrebuchet; - #inputExp = trace inputTrebuchet inputTrebuchet.nextStage; - inputExp = getExperimentStage inputTre; - # Then load the result. This is only used to ensure that we have the - # results, so it has been executed. - inputRes = inputTre.result; - # We also need the unit, to compute the path. - inputUnit = stages.unit { - conf = genConf conf; - stages = pipeline; - }; - # Build the path: - expName = baseNameOf (toString inputExp); - unitName = baseNameOf (toString inputUnit); - relPath = "../../${expName}/${unitName}/1"; - in stages.exec { - inherit nextStage; - env = '' - # This line ensures that the results of the HPCG generation are complete: - # ${inputRes} - - # Then we simply link the input result directory in "input" - # We use || true because all ranks will execute this and - # the execution will fail - ln -sf ${relPath} input || true - ''; - }; - -in - #{ inherit genConf genExp genInputLink; } - genInputLink +} diff --git a/garlic/exp/hpcg/oss.slices.strongscaling.nix b/garlic/exp/hpcg/oss.slices.strongscaling.nix deleted file mode 100644 index c7cb46d..0000000 --- a/garlic/exp/hpcg/oss.slices.strongscaling.nix +++ /dev/null @@ -1,112 +0,0 @@ -{ - stdenv -, stdexp -, bsc -, targetMachine -, stages -, genInput -}: - -with stdenv.lib; - -let - # Initial variable configuration - varConf = { - n = [ - { x = 192 / 4; y = 192 / 4; z = 16 * 192; } - ]; - nprocs = [ - # { x = 2; y = 1; z = 1; } - # { x = 4; y = 1; z = 1; } - # { x = 8; y = 1; z = 1; } - # { x = 16; y = 1; z = 1; } - # { x = 32; y = 1; z = 1; } - - # { x = 1; y = 2; z = 1; } - # { x = 1; y = 4; z = 1; } - # { x = 1; y = 8; z = 1; } - # { x = 1; y = 16; z = 1; } - # { x = 1; y = 32; z = 1; } - - { x = 1; y = 1; z = 2; } - { x = 1; y = 1; z = 4; } - { x = 1; y = 1; z = 8; } - { x = 1; y = 1; z = 16; } - { x = 1; y = 1; z = 32; } - - ]; - # nblocks = [ 12 24 48 96 192 384 768 1536 ]; - nblocks = [ 24 48 96 192 384 ]; - ncommblocks = [ 1 ]; - # nodes = [ 1 ]; - # nodes = [ 1 2 4 8 16 ]; - }; - - # Generate the complete configuration for each unit - genConf = c: targetMachine.config // rec { - expName = "hpcg.oss"; - unitName = "${expName}.nb${toString nblocks}"; - - inherit (targetMachine.config) hw; - - # hpcg options - inherit (c) nprocs nblocks ncommblocks; - - n = { - x = c.n.x / nprocs.x; - y = c.n.y / nprocs.y; - z = c.n.z / nprocs.z; - }; - - gitBranch = "garlic/tampi+isend+oss+task"; - - # Repeat the execution of each unit 30 times - loops = 10; - - disableAspectRatio = true; - - # Resources - qos = "debug"; - ntasksPerNode = hw.socketsPerNode; - time = "02:00:00"; - # task in one socket - cpusPerTask = hw.cpusPerSocket; - nodes = (nprocs.x * nprocs.y * nprocs.z) / ntasksPerNode; - jobName = "hpcg-${toString n.x}-${toString n.y}-${toString n.z}-${gitBranch}"; - }; - - # Compute the array of configurations - configs = stdexp.buildConfigs { - inherit varConf genConf; - }; - - input = genInput configs; - - exec = {nextStage, conf, ...}: stages.exec { - inherit nextStage; - argv = [ - "--nx=${toString conf.n.x}" - "--ny=${toString conf.n.y}" - "--nz=${toString conf.n.z}" - # Distribute all processes in X axis - "--npx=${toString conf.nprocs.x}" - "--npy=${toString conf.nprocs.y}" - "--npz=${toString conf.nprocs.z}" - "--nblocks=${toString conf.nblocks}" - "--ncomms=${toString conf.ncommblocks}" - # The input symlink is generated by the input stage, which is generated by - # the genInput function. - "--load=input" - # Disable HPCG Aspect Ratio to run any mpi layout - ] ++ optional (conf.disableAspectRatio) "--no-ar=1"; - }; - - program = {nextStage, conf, ...}: bsc.apps.hpcg.override { - inherit (conf) gitBranch; - }; - - pipeline = stdexp.stdPipeline ++ [ input exec program ]; - -in - - stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/hpcg/ss.nix b/garlic/exp/hpcg/ss.nix new file mode 100644 index 0000000..164681f --- /dev/null +++ b/garlic/exp/hpcg/ss.nix @@ -0,0 +1,68 @@ +{ + stdenv +, stdexp +, bsc +, targetMachine +, stages +, garlicTools +, callPackage +, enableExtended ? false +}: + +with stdenv.lib; +with garlicTools; + +let + common = callPackage ./common.nix { }; + + inherit (common) pipeline getSizePerTask; + + # Initial variable configuration + varConf = { + nodes = range2 1 16; + blocksPerCpu = if (enableExtended) + then range2 1 8 + else [ 4 ]; + gitBranch = [ + "garlic/tampi+isend+oss+task" + ]; + }; + + # Generate the complete configuration for each unit + genConf = c: targetMachine.config // rec { + expName = "hpcg-ss"; + unitName = "${expName}" + + "-nodes${toString nodes}" + + "-bpc${toString blocksPerCpu}"; + + inherit (targetMachine.config) hw; + + # hpcg options + inherit (c) nodes blocksPerCpu gitBranch; + totalTasks = ntasksPerNode * nodes; + sizePerCpu = { x=2; y=2; z=128 / totalTasks; }; + sizePerTask = getSizePerTask cpusPerTask sizePerCpu; + nprocs = { x=1; y=1; z=totalTasks; }; + nblocks = blocksPerCpu * cpusPerTask; + ncomms = 1; + disableAspectRatio = true; + + # Repeat the execution of each unit several times + loops = 10; + + # Resources + qos = "debug"; + time = "02:00:00"; + cpusPerTask = hw.cpusPerSocket; + ntasksPerNode = hw.socketsPerNode; + jobName = unitName; + }; + + # Compute the array of configurations + configs = stdexp.buildConfigs { + inherit varConf genConf; + }; + +in + + stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/index.nix b/garlic/exp/index.nix index a33ca36..dc46b76 100644 --- a/garlic/exp/index.nix +++ b/garlic/exp/index.nix @@ -65,9 +65,9 @@ inherit genInput; }; - ossSlicesStrongscaling = callPackage ./hpcg/oss.slices.strongscaling.nix { - inherit genInput; - }; + ss = callPackage ./hpcg/ss.nix { }; + + big.ss = ss.override { enableExtended = true; }; }; heat = rec { From d490ef26949ddad4c70605629641bfa0a1540ed7 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 16 Apr 2021 16:14:48 +0200 Subject: [PATCH 677/987] hpcg: remove unused extrae.xml file --- garlic/exp/hpcg/extrae.xml | 210 ------------------------------------- 1 file changed, 210 deletions(-) delete mode 100644 garlic/exp/hpcg/extrae.xml diff --git a/garlic/exp/hpcg/extrae.xml b/garlic/exp/hpcg/extrae.xml deleted file mode 100644 index 45a7574..0000000 --- a/garlic/exp/hpcg/extrae.xml +++ /dev/null @@ -1,210 +0,0 @@ - - - - - - - - - - - - - - - - - 1-3 - - 1-5 - - 1-3 - - 1-3 - - 1-3 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - PAPI_TOT_INS,PAPI_TOT_CYC - - - - - - - - - - - - - - - - - TRACE - - 5 - - /scratch - - /gpfs/scratch/bsc41/bsc41273 - - - - - - 5000000 - - - - - - - - /gpfs/scratch/bsc41/bsc41273/control - - - - - - - 10M - - - - - - - - - - - 500u - - - - - - - - - - - - - - - - - - - - From a71ae9c2c6e960dbbfe27448ed9a7c68dd506d87 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 16 Apr 2021 16:15:16 +0200 Subject: [PATCH 678/987] hpcg: avoid mismatching names for gen units --- garlic/exp/hpcg/gen.nix | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/garlic/exp/hpcg/gen.nix b/garlic/exp/hpcg/gen.nix index f91962f..4f2b13b 100644 --- a/garlic/exp/hpcg/gen.nix +++ b/garlic/exp/hpcg/gen.nix @@ -15,8 +15,10 @@ rec { # Generate the complete configuration for each unit genConf = c: targetMachine.config // rec { - expName = "${c.expName}.gen"; - unitName = "${c.unitName}.gen"; + expName = "hpcg-gen"; + unitName = expName + + "-nodes${toString nodes}" + + "-spt.z${toString sizePerTask.z}"; inherit (targetMachine.config) hw; From a96839d11a4f6cd174319e5b07b6733f63e56cd6 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 19 Apr 2021 15:57:31 +0200 Subject: [PATCH 679/987] hpcg: merge weak scaling and add size experiment The scaling.nix file defines both the strong and weak experiments by using the parameter "enableStrong". --- garlic/exp/hpcg/oss.scalability.192.nix | 89 ------------------ garlic/exp/hpcg/oss.slices.weakscaling.nix | 104 --------------------- garlic/exp/hpcg/scaling.nix | 77 +++++++++++++++ garlic/exp/hpcg/{ss.nix => size.nix} | 22 ++--- garlic/exp/index.nix | 23 +---- 5 files changed, 90 insertions(+), 225 deletions(-) delete mode 100644 garlic/exp/hpcg/oss.scalability.192.nix delete mode 100644 garlic/exp/hpcg/oss.slices.weakscaling.nix create mode 100644 garlic/exp/hpcg/scaling.nix rename garlic/exp/hpcg/{ss.nix => size.nix} (74%) diff --git a/garlic/exp/hpcg/oss.scalability.192.nix b/garlic/exp/hpcg/oss.scalability.192.nix deleted file mode 100644 index 534e3cd..0000000 --- a/garlic/exp/hpcg/oss.scalability.192.nix +++ /dev/null @@ -1,89 +0,0 @@ -{ - stdenv -, stdexp -, bsc -, targetMachine -, stages -, genInput -}: - -with stdenv.lib; - -let - # Initial variable configuration - varConf = { - n = [ { x = 192; y = 192; z = 192; } ]; - nprocs = [ - { x = 2; y = 1; z = 1; } - { x = 2; y = 2; z = 1; } - { x = 2; y = 2; z = 2; } - { x = 4; y = 2; z = 2; } - { x = 4; y = 4; z = 2; } - ]; - # nblocks = [ 12 24 48 96 192 384 768 1536 ]; - nblocks = [ 384 768 1536 ]; - ncommblocks = [ 1 ]; - # nodes = [ 1 ]; - # nodes = [ 1 2 4 8 16 ]; - }; - - # Generate the complete configuration for each unit - genConf = c: targetMachine.config // rec { - expName = "hpcg.oss"; - unitName = "${expName}.nb${toString nblocks}"; - - inherit (targetMachine.config) hw; - - # hpcg options - inherit (c) n nprocs nblocks ncommblocks; - - gitBranch = "garlic/tampi+isend+oss+task"; - - # Repeat the execution of each unit 30 times - loops = 10; - - disableAspectRatio = false; - - # Resources - qos = "debug"; - ntasksPerNode = hw.socketsPerNode; - time = "02:00:00"; - # task in one socket - cpusPerTask = hw.cpusPerSocket; - nodes = (nprocs.x * nprocs.y * nprocs.z) / ntasksPerNode; - jobName = "hpcg-${toString n.x}-${toString n.y}-${toString n.z}-${gitBranch}"; - }; - - # Compute the array of configurations - configs = stdexp.buildConfigs { - inherit varConf genConf; - }; - - input = genInput configs; - - exec = {nextStage, conf, ...}: stages.exec { - inherit nextStage; - argv = [ - "--nx=${toString conf.n.x}" - "--ny=${toString conf.n.y}" - "--nz=${toString conf.n.z}" - "--npx=${toString conf.nprocs.x}" - "--npy=${toString conf.nprocs.y}" - "--npz=${toString conf.nprocs.z}" - "--nblocks=${toString conf.nblocks}" - "--ncomms=${toString conf.ncommblocks}" - # The input symlink is generated by the input stage, which is generated by - # the genInput function. - "--load=input" - ]; - }; - - program = {nextStage, conf, ...}: bsc.apps.hpcg.override { - inherit (conf) gitBranch; - }; - - pipeline = stdexp.stdPipeline ++ [ input exec program ]; - -in - - stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/hpcg/oss.slices.weakscaling.nix b/garlic/exp/hpcg/oss.slices.weakscaling.nix deleted file mode 100644 index 4ff467d..0000000 --- a/garlic/exp/hpcg/oss.slices.weakscaling.nix +++ /dev/null @@ -1,104 +0,0 @@ -{ - stdenv -, stdexp -, bsc -, targetMachine -, stages -, genInput -}: - -with stdenv.lib; - -let - # Initial variable configuration - varConf = { - n = [ { x = 192; y = 192; z = 192; } ]; - nprocs = [ - { x = 2; y = 1; z = 1; } - { x = 4; y = 1; z = 1; } - { x = 8; y = 1; z = 1; } - { x = 16; y = 1; z = 1; } - { x = 32; y = 1; z = 1; } - - { x = 1; y = 2; z = 1; } - { x = 1; y = 4; z = 1; } - { x = 1; y = 8; z = 1; } - { x = 1; y = 16; z = 1; } - { x = 1; y = 32; z = 1; } - - { x = 1; y = 1; z = 2; } - { x = 1; y = 1; z = 4; } - { x = 1; y = 1; z = 8; } - { x = 1; y = 1; z = 16; } - { x = 1; y = 1; z = 32; } - - ]; - # nblocks = [ 12 24 48 96 192 384 768 1536 ]; - nblocks = [ 384 768 1536 ]; - ncommblocks = [ 1 ]; - # nodes = [ 1 ]; - # nodes = [ 1 2 4 8 16 ]; - }; - - # Generate the complete configuration for each unit - genConf = c: targetMachine.config // rec { - expName = "hpcg.oss"; - unitName = "${expName}.nb${toString nblocks}"; - - inherit (targetMachine.config) hw; - - # hpcg options - inherit (c) n nprocs nblocks ncommblocks; - - gitBranch = "garlic/tampi+isend+oss+task"; - - # Repeat the execution of each unit 30 times - loops = 10; - - disableAspectRatio = true; - - # Resources - qos = "debug"; - ntasksPerNode = hw.socketsPerNode; - time = "02:00:00"; - # task in one socket - cpusPerTask = hw.cpusPerSocket; - nodes = (nprocs.x * nprocs.y * nprocs.z) / ntasksPerNode; - jobName = "hpcg-${toString n.x}-${toString n.y}-${toString n.z}-${gitBranch}"; - }; - - # Compute the array of configurations - configs = stdexp.buildConfigs { - inherit varConf genConf; - }; - - input = genInput configs; - - exec = {nextStage, conf, ...}: stages.exec { - inherit nextStage; - argv = [ - "--nx=${toString conf.n.x}" - "--ny=${toString conf.n.y}" - "--nz=${toString conf.n.z}" - # Distribute all processes in X axis - "--npx=${toString conf.nprocs.x}" - "--npy=${toString conf.nprocs.y}" - "--npz=${toString conf.nprocs.z}" - "--nblocks=${toString conf.nblocks}" - "--ncomms=${toString conf.ncommblocks}" - # The input symlink is generated by the input stage, which is generated by - # the genInput function. - "--load=input" - # Disable HPCG Aspect Ratio to run any mpi layout - ] ++ optional (conf.disableAspectRatio) "--no-ar=1"; - }; - - program = {nextStage, conf, ...}: bsc.apps.hpcg.override { - inherit (conf) gitBranch; - }; - - pipeline = stdexp.stdPipeline ++ [ input exec program ]; - -in - - stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/hpcg/scaling.nix b/garlic/exp/hpcg/scaling.nix new file mode 100644 index 0000000..ecd1b16 --- /dev/null +++ b/garlic/exp/hpcg/scaling.nix @@ -0,0 +1,77 @@ +{ + stdenv +, stdexp +, bsc +, targetMachine +, stages +, garlicTools +, callPackage +, enableExtended ? false +, enableStrong ? true +}: + +with stdenv.lib; +with garlicTools; + +let + common = callPackage ./common.nix { }; + + inherit (common) pipeline getSizePerTask; + + maxNodes = 16; + + # Initial variable configuration + varConf = { + nodes = range2 1 maxNodes; + baseSizeZ = if (enableExtended) then [ 8 16 ] else [ 16 ]; + blocksPerCpu = if (enableExtended) then range2 1 8 else [ 4 ]; + gitBranch = [ + "garlic/tampi+isend+oss+task" + ]; + }; + + # Generate the complete configuration for each unit + genConf = c: targetMachine.config // rec { + expName = if (enableStrong) then "hpcg-ss" else "hpcg-ws"; + unitName = "${expName}" + + "-nodes${toString nodes}" + + "-bpc${toString blocksPerCpu}"; + + inherit (targetMachine.config) hw; + + inherit maxNodes; + sizeFactor = if (enableStrong) then maxNodes / nodes else 1; + + # hpcg options + inherit (c) nodes blocksPerCpu gitBranch; + totalTasks = ntasksPerNode * nodes; + sizePerCpu = { + x = 2; + y = 2; + z = c.baseSizeZ * sizeFactor; + }; + sizePerTask = getSizePerTask cpusPerTask sizePerCpu; + nprocs = { x=1; y=1; z=totalTasks; }; + nblocks = blocksPerCpu * cpusPerTask; + ncomms = 1; + disableAspectRatio = true; + + # Repeat the execution of each unit several times + loops = 10; + + # Resources + qos = "debug"; + time = "02:00:00"; + cpusPerTask = hw.cpusPerSocket; + ntasksPerNode = hw.socketsPerNode; + jobName = unitName; + }; + + # Compute the array of configurations + configs = stdexp.buildConfigs { + inherit varConf genConf; + }; + +in + + stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/hpcg/ss.nix b/garlic/exp/hpcg/size.nix similarity index 74% rename from garlic/exp/hpcg/ss.nix rename to garlic/exp/hpcg/size.nix index 164681f..3d3b9a5 100644 --- a/garlic/exp/hpcg/ss.nix +++ b/garlic/exp/hpcg/size.nix @@ -6,7 +6,6 @@ , stages , garlicTools , callPackage -, enableExtended ? false }: with stdenv.lib; @@ -19,36 +18,33 @@ let # Initial variable configuration varConf = { - nodes = range2 1 16; - blocksPerCpu = if (enableExtended) - then range2 1 8 - else [ 4 ]; - gitBranch = [ - "garlic/tampi+isend+oss+task" - ]; + sizeFactor = [ 1 2 4 8 16 32 ]; }; # Generate the complete configuration for each unit genConf = c: targetMachine.config // rec { - expName = "hpcg-ss"; + expName = "hpcg-size"; unitName = "${expName}" + "-nodes${toString nodes}" - + "-bpc${toString blocksPerCpu}"; + + "-sf${toString sizeFactor}"; inherit (targetMachine.config) hw; # hpcg options - inherit (c) nodes blocksPerCpu gitBranch; + inherit (c) sizeFactor; + gitBranch = "garlic/tampi+isend+oss+task"; + nodes = 16; totalTasks = ntasksPerNode * nodes; - sizePerCpu = { x=2; y=2; z=128 / totalTasks; }; + sizePerCpu = { x = 2; y = 2; z = 4 * sizeFactor; }; sizePerTask = getSizePerTask cpusPerTask sizePerCpu; nprocs = { x=1; y=1; z=totalTasks; }; + blocksPerCpu = 4; nblocks = blocksPerCpu * cpusPerTask; ncomms = 1; disableAspectRatio = true; # Repeat the execution of each unit several times - loops = 10; + loops = 5; # Resources qos = "debug"; diff --git a/garlic/exp/index.nix b/garlic/exp/index.nix index dc46b76..3545337 100644 --- a/garlic/exp/index.nix +++ b/garlic/exp/index.nix @@ -47,25 +47,10 @@ }; hpcg = rec { - #serial = callPackage ./hpcg/serial.nix { }; - #mpi = callPackage ./hpcg/mpi.nix { }; - #omp = callPackage ./hpcg/omp.nix { }; - #mpi_omp = callPackage ./hpcg/mpi+omp.nix { }; - genInput = callPackage ./hpcg/gen.nix { }; - - oss = callPackage ./hpcg/oss.nix { - inherit genInput; - }; - - ossGranularity = callPackage ./hpcg/oss.granularity.192.nix { - inherit genInput; - }; - - ossSlicesWeakscaling = callPackage ./hpcg/oss.slices.weakscaling.nix { - inherit genInput; - }; - - ss = callPackage ./hpcg/ss.nix { }; + granularity = callPackage ./hpcg/granularity.nix { }; + ss = callPackage ./hpcg/scaling.nix { }; + ws = ss.override { enableStrong=false; }; + size = callPackage ./hpcg/size.nix { }; big.ss = ss.override { enableExtended = true; }; }; From 9a88319153b6752f01824b3a9bffcf28c9d9b426 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 19 Apr 2021 16:00:55 +0200 Subject: [PATCH 680/987] hpcg: add granularity experiment --- garlic/exp/hpcg/granularity.nix | 75 +++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 garlic/exp/hpcg/granularity.nix diff --git a/garlic/exp/hpcg/granularity.nix b/garlic/exp/hpcg/granularity.nix new file mode 100644 index 0000000..a061142 --- /dev/null +++ b/garlic/exp/hpcg/granularity.nix @@ -0,0 +1,75 @@ +{ + stdenv +, stdexp +, bsc +, targetMachine +, stages +, garlicTools +, callPackage +}: + +with stdenv.lib; +with garlicTools; + +let + common = callPackage ./common.nix { }; + + inherit (common) pipeline getSizePerTask; + + maxNodes = 16; + + # Initial variable configuration + varConf = { + blocksPerCpu = range2 0.5 256; + gitBranch = [ + "garlic/tampi+isend+oss+task" + ]; + }; + + # Generate the complete configuration for each unit + genConf = c: targetMachine.config // rec { + expName = "hpcg-granularity"; + unitName = "${expName}" + + "-nodes${toString nodes}" + + "-bpc${toString blocksPerCpu}"; + + inherit (targetMachine.config) hw; + + inherit maxNodes; + sizeFactor = maxNodes / nodes; + + # hpcg options + inherit (c) blocksPerCpu gitBranch; + baseSizeZ = 16; + nodes = 1; + totalTasks = ntasksPerNode * nodes; + sizePerCpu = { + x = 2; + y = 2; + z = baseSizeZ * sizeFactor; + }; + sizePerTask = getSizePerTask cpusPerTask sizePerCpu; + nprocs = { x=1; y=1; z=totalTasks; }; + nblocks = floatTruncate (blocksPerCpu * cpusPerTask); + ncomms = 1; + disableAspectRatio = true; + + # Repeat the execution of each unit several times + loops = 3; + + # Resources + qos = "debug"; + time = "02:00:00"; + cpusPerTask = hw.cpusPerSocket; + ntasksPerNode = hw.socketsPerNode; + jobName = unitName; + }; + + # Compute the array of configurations + configs = stdexp.buildConfigs { + inherit varConf genConf; + }; + +in + + stdexp.genExperiment { inherit configs pipeline; } From 866d4561d3f257ee55dfe9883b81deab69919657 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 19 Apr 2021 16:01:11 +0200 Subject: [PATCH 681/987] hpcg: remove old experiments --- garlic/exp/hpcg/mpi+omp.nix | 70 ---------------- garlic/exp/hpcg/mpi.nix | 64 --------------- garlic/exp/hpcg/omp.nix | 71 ---------------- garlic/exp/hpcg/oss.granularity.192.nix | 89 -------------------- garlic/exp/hpcg/oss.nix | 89 -------------------- garlic/exp/hpcg/serial.nix | 63 -------------- garlic/exp/hpcg/slices.nix | 104 ------------------------ 7 files changed, 550 deletions(-) delete mode 100644 garlic/exp/hpcg/mpi+omp.nix delete mode 100644 garlic/exp/hpcg/mpi.nix delete mode 100644 garlic/exp/hpcg/omp.nix delete mode 100644 garlic/exp/hpcg/oss.granularity.192.nix delete mode 100644 garlic/exp/hpcg/oss.nix delete mode 100644 garlic/exp/hpcg/serial.nix delete mode 100644 garlic/exp/hpcg/slices.nix diff --git a/garlic/exp/hpcg/mpi+omp.nix b/garlic/exp/hpcg/mpi+omp.nix deleted file mode 100644 index 6ea245c..0000000 --- a/garlic/exp/hpcg/mpi+omp.nix +++ /dev/null @@ -1,70 +0,0 @@ -{ - stdenv -, stdexp -, bsc -, targetMachine -, stages -}: - -with stdenv.lib; - -let - # Initial variable configuration - varConf = with bsc; { - n = [ { x = 128; y = 192; z = 192; } ]; - nblocks = [ 6 12 24 48 96 192 ]; - }; - - # Generate the complete configuration for each unit - genConf = with bsc; c: targetMachine.config // rec { - # hpcg options - n = c.n; - cc = bsc.icc; - mpi = bsc.impi; - gitBranch = "garlic/mpi+send+omp+fork"; - - # Repeat the execution of each unit 30 times - loops = 30; - - # Resources - qos = "debug"; - ntasksPerNode = 1; - nodes = 4; - time = "02:00:00"; - # Each task in different socket - cpuBind = "verbose,mask_cpu:0x3f"; - jobName = "hpcg-${toString n.x}-${toString n.y}-${toString n.z}-${gitBranch}"; - }; - - # Compute the array of configurations - configs = stdexp.buildConfigs { - inherit varConf genConf; - }; - - exec = {nextStage, conf, ...}: with conf; stages.exec { - inherit nextStage; - env = '' - OMP_PROC_BIND=true - OMP_NUM_THREADS=6 - ''; - argv = [ - "--nx=${toString n.x}" - "--ny=${toString n.y}" - "--nz=${toString n.z}" - "--nblocks=${toString nblocks}" - ]; - }; - - program = {nextStage, conf, ...}: with conf; - let - customPkgs = stdexp.replaceMpi conf.mpi; - in - customPkgs.apps.hpcg.override { - inherit cc mpi gitBranch; - }; - - pipeline = stdexp.stdPipeline ++ [ exec program ]; - -in - - stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/hpcg/mpi.nix b/garlic/exp/hpcg/mpi.nix deleted file mode 100644 index a2a2ec4..0000000 --- a/garlic/exp/hpcg/mpi.nix +++ /dev/null @@ -1,64 +0,0 @@ -{ - stdenv -, stdexp -, bsc -, targetMachine -, stages -}: - -with stdenv.lib; - -let - # Initial variable configuration - varConf = with bsc; { - n = [ { x = 96; y = 96; z = 96; } ]; - }; - - # Generate the complete configuration for each unit - genConf = with bsc; c: targetMachine.config // rec { - # hpcg options - n = c.n; - cc = bsc.icc; - mpi = bsc.impi; - gitBranch = "garlic/mpi"; - - # Repeat the execution of each unit 30 times - loops = 30; - - # Resources - qos = "debug"; - ntasksPerNode = 1; - nodes = 24; - time = "02:00:00"; - # Each task in different socket - cpuBind = "verbose,mask_cpu:0x1"; - jobName = "hpcg-${toString n.x}-${toString n.y}-${toString n.z}-${gitBranch}"; - }; - - # Compute the array of configurations - configs = stdexp.buildConfigs { - inherit varConf genConf; - }; - - exec = {nextStage, conf, ...}: with conf; stages.exec { - inherit nextStage; - argv = [ - "--nx=${toString n.x}" - "--ny=${toString n.y}" - "--nz=${toString n.z}" - ]; - }; - - program = {nextStage, conf, ...}: with conf; - let - customPkgs = stdexp.replaceMpi conf.mpi; - in - customPkgs.apps.hpcg.override { - inherit cc mpi gitBranch; - }; - - pipeline = stdexp.stdPipeline ++ [ exec program ]; - -in - - stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/hpcg/omp.nix b/garlic/exp/hpcg/omp.nix deleted file mode 100644 index c4dcc8c..0000000 --- a/garlic/exp/hpcg/omp.nix +++ /dev/null @@ -1,71 +0,0 @@ -{ - stdenv -, stdexp -, bsc -, targetMachine -, stages -}: - -with stdenv.lib; - -let - # Initial variable configuration - varConf = with bsc; { - n = [ { x = 256; y = 288; z = 288; } ]; - nblocks = [ 12 24 48 96 192 384 ]; - }; - - # Generate the complete configuration for each unit - genConf = with bsc; c: targetMachine.config // rec { - # hpcg options - n = c.n; - nblocks = c.nblocks; - cc = bsc.icc; - mpi = null; # TODO: Remove this for omp - gitBranch = "garlic/omp+fork"; - - # Repeat the execution of each unit 30 times - loops = 30; - - # Resources - qos = "debug"; - ntasksPerNode = 1; - nodes = 1; - time = "02:00:00"; - # task in one socket - cpuBind = "verbose,mask_cpu:0xffffff"; - jobName = "hpcg-${toString n.x}-${toString n.y}-${toString n.z}-${gitBranch}"; - }; - - # Compute the array of configurations - configs = stdexp.buildConfigs { - inherit varConf genConf; - }; - - exec = {nextStage, conf, ...}: with conf; stages.exec { - inherit nextStage; - env = '' - OMP_PROC_BIND=true - OMP_NUM_THREADS=24 - ''; - argv = [ - "--nx=${toString n.x}" - "--ny=${toString n.y}" - "--nz=${toString n.z}" - "--nblocks=${toString nblocks}" - ]; - }; - - program = {nextStage, conf, ...}: with conf; - let - customPkgs = stdexp.replaceMpi conf.mpi; - in - customPkgs.apps.hpcg.override { - inherit cc gitBranch; - }; - - pipeline = stdexp.stdPipeline ++ [ exec program ]; - -in - - stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/hpcg/oss.granularity.192.nix b/garlic/exp/hpcg/oss.granularity.192.nix deleted file mode 100644 index 04a484a..0000000 --- a/garlic/exp/hpcg/oss.granularity.192.nix +++ /dev/null @@ -1,89 +0,0 @@ -{ - stdenv -, stdexp -, bsc -, targetMachine -, stages -, genInput -}: - -with stdenv.lib; - -let - # Initial variable configuration - varConf = { - n = [ { x = 192; y = 192; z = 192; } ]; - nprocs = [ - { x = 2; y = 1; z = 1; } - # { x = 2; y = 2; z = 1; } - # { x = 2; y = 2; z = 2; } - # { x = 4; y = 2; z = 2; } - # { x = 4; y = 4; z = 2; } - ]; - nblocks = [ 12 24 48 96 192 384 768 1536 ]; - # nblocks = [ 384 ]; - ncommblocks = [ 1 ]; - # nodes = [ 1 ]; - # nodes = [ 1 2 4 8 16 ]; - }; - - # Generate the complete configuration for each unit - genConf = c: targetMachine.config // rec { - expName = "hpcg.oss"; - unitName = "${expName}.nb${toString nblocks}"; - - inherit (targetMachine.config) hw; - - # hpcg options - inherit (c) n nprocs nblocks ncommblocks; - - gitBranch = "garlic/tampi+isend+oss+task"; - - # Repeat the execution of each unit 30 times - loops = 3; - - disableAspectRatio = false; - - # Resources - qos = "debug"; - ntasksPerNode = hw.socketsPerNode; - time = "02:00:00"; - # task in one socket - cpusPerTask = hw.cpusPerSocket; - nodes = (nprocs.x * nprocs.y * nprocs.z) / ntasksPerNode; - jobName = "hpcg-${toString n.x}-${toString n.y}-${toString n.z}-${gitBranch}"; - }; - - # Compute the array of configurations - configs = stdexp.buildConfigs { - inherit varConf genConf; - }; - - input = genInput configs; - - exec = {nextStage, conf, ...}: stages.exec { - inherit nextStage; - argv = [ - "--nx=${toString conf.n.x}" - "--ny=${toString conf.n.y}" - "--nz=${toString conf.n.z}" - "--npx=${toString conf.nprocs.x}" - "--npy=${toString conf.nprocs.y}" - "--npz=${toString conf.nprocs.z}" - "--nblocks=${toString conf.nblocks}" - "--ncomms=${toString conf.ncommblocks}" - # The input symlink is generated by the input stage, which is generated by - # the genInput function. - "--load=input" - ]; - }; - - program = {nextStage, conf, ...}: bsc.apps.hpcg.override { - inherit (conf) gitBranch; - }; - - pipeline = stdexp.stdPipeline ++ [ input exec program ]; - -in - - stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/hpcg/oss.nix b/garlic/exp/hpcg/oss.nix deleted file mode 100644 index b04215b..0000000 --- a/garlic/exp/hpcg/oss.nix +++ /dev/null @@ -1,89 +0,0 @@ -{ - stdenv -, stdexp -, bsc -, targetMachine -, stages -, genInput -}: - -with stdenv.lib; - -let - # Initial variable configuration - varConf = { - n = [ { x = 192; y = 192; z = 192; } ]; - nprocs = [ - { x = 2; y = 1; z = 1; } - { x = 2; y = 2; z = 1; } - { x = 2; y = 2; z = 2; } - { x = 4; y = 2; z = 2; } - { x = 4; y = 4; z = 2; } - ]; - # nblocks = [ 12 24 48 96 192 384 768 1536 ]; - nblocks = [ 384 768 1536 ]; - ncommblocks = [ 1 ]; - # nodes = [ 1 ]; - # nodes = [ 1 2 4 8 16 ]; - }; - - # Generate the complete configuration for each unit - genConf = c: targetMachine.config // rec { - expName = "hpcg.oss"; - unitName = "${expName}.nb${toString nblocks}"; - - inherit (targetMachine.config) hw; - - # hpcg options - inherit (c) n nprocs nblocks ncommblocks; - - gitBranch = "garlic/tampi+isend+oss+task"; - - # Repeat the execution of each unit 30 times - loops = 3; - - disableAspectRatio = false; - - # Resources - qos = "debug"; - ntasksPerNode = hw.socketsPerNode; - time = "02:00:00"; - # task in one socket - cpusPerTask = hw.cpusPerSocket; - nodes = (nprocs.x * nprocs.y * nprocs.z) / ntasksPerNode; - jobName = "hpcg-${toString n.x}-${toString n.y}-${toString n.z}-${gitBranch}"; - }; - - # Compute the array of configurations - configs = stdexp.buildConfigs { - inherit varConf genConf; - }; - - input = genInput configs; - - exec = {nextStage, conf, ...}: stages.exec { - inherit nextStage; - argv = [ - "--nx=${toString conf.n.x}" - "--ny=${toString conf.n.y}" - "--nz=${toString conf.n.z}" - "--npx=${toString conf.nprocs.x}" - "--npy=${toString conf.nprocs.y}" - "--npz=${toString conf.nprocs.z}" - "--nblocks=${toString conf.nblocks}" - "--ncomms=${toString conf.ncommblocks}" - # The input symlink is generated by the input stage, which is generated by - # the genInput function. - "--load=input" - ]; - }; - - program = {nextStage, conf, ...}: bsc.apps.hpcg.override { - inherit (conf) gitBranch; - }; - - pipeline = stdexp.stdPipeline ++ [ input exec program ]; - -in - - stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/hpcg/serial.nix b/garlic/exp/hpcg/serial.nix deleted file mode 100644 index 3c58b42..0000000 --- a/garlic/exp/hpcg/serial.nix +++ /dev/null @@ -1,63 +0,0 @@ -{ - stdenv -, stdexp -, bsc -, targetMachine -, stages -}: - -with stdenv.lib; - -let - # Initial variable configuration - varConf = with bsc; { - n = [ { x = 256; y = 288; z = 288; } ]; - }; - - # Generate the complete configuration for each unit - genConf = with bsc; c: targetMachine.config // rec { - # hpcg options - n = c.n; - cc = icc; - mpi = null; # TODO: Remove this for serial - gitBranch = "garlic/seq"; - - # Repeat the execution of each unit 30 times - loops = 30; - - # Resources - qos = "debug"; - ntasksPerNode = 1; - nodes = 1; - time = "02:00:00"; - cpuBind = "verbose,mask_cpu:0x1"; - jobName = "hpcg-${toString n.x}-${toString n.y}-${toString n.z}-${gitBranch}"; - }; - - # Compute the array of configurations - configs = stdexp.buildConfigs { - inherit varConf genConf; - }; - - exec = {nextStage, conf, ...}: with conf; stages.exec { - inherit nextStage; - argv = [ - "--nx=${toString n.x}" - "--ny=${toString n.y}" - "--nz=${toString n.z}" - ]; - }; - - program = {nextStage, conf, ...}: with conf; - let - customPkgs = stdexp.replaceMpi conf.mpi; - in - customPkgs.apps.hpcg.override { - inherit cc gitBranch; - }; - - pipeline = stdexp.stdPipeline ++ [ exec program ]; - -in - - stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/hpcg/slices.nix b/garlic/exp/hpcg/slices.nix deleted file mode 100644 index 4ff467d..0000000 --- a/garlic/exp/hpcg/slices.nix +++ /dev/null @@ -1,104 +0,0 @@ -{ - stdenv -, stdexp -, bsc -, targetMachine -, stages -, genInput -}: - -with stdenv.lib; - -let - # Initial variable configuration - varConf = { - n = [ { x = 192; y = 192; z = 192; } ]; - nprocs = [ - { x = 2; y = 1; z = 1; } - { x = 4; y = 1; z = 1; } - { x = 8; y = 1; z = 1; } - { x = 16; y = 1; z = 1; } - { x = 32; y = 1; z = 1; } - - { x = 1; y = 2; z = 1; } - { x = 1; y = 4; z = 1; } - { x = 1; y = 8; z = 1; } - { x = 1; y = 16; z = 1; } - { x = 1; y = 32; z = 1; } - - { x = 1; y = 1; z = 2; } - { x = 1; y = 1; z = 4; } - { x = 1; y = 1; z = 8; } - { x = 1; y = 1; z = 16; } - { x = 1; y = 1; z = 32; } - - ]; - # nblocks = [ 12 24 48 96 192 384 768 1536 ]; - nblocks = [ 384 768 1536 ]; - ncommblocks = [ 1 ]; - # nodes = [ 1 ]; - # nodes = [ 1 2 4 8 16 ]; - }; - - # Generate the complete configuration for each unit - genConf = c: targetMachine.config // rec { - expName = "hpcg.oss"; - unitName = "${expName}.nb${toString nblocks}"; - - inherit (targetMachine.config) hw; - - # hpcg options - inherit (c) n nprocs nblocks ncommblocks; - - gitBranch = "garlic/tampi+isend+oss+task"; - - # Repeat the execution of each unit 30 times - loops = 10; - - disableAspectRatio = true; - - # Resources - qos = "debug"; - ntasksPerNode = hw.socketsPerNode; - time = "02:00:00"; - # task in one socket - cpusPerTask = hw.cpusPerSocket; - nodes = (nprocs.x * nprocs.y * nprocs.z) / ntasksPerNode; - jobName = "hpcg-${toString n.x}-${toString n.y}-${toString n.z}-${gitBranch}"; - }; - - # Compute the array of configurations - configs = stdexp.buildConfigs { - inherit varConf genConf; - }; - - input = genInput configs; - - exec = {nextStage, conf, ...}: stages.exec { - inherit nextStage; - argv = [ - "--nx=${toString conf.n.x}" - "--ny=${toString conf.n.y}" - "--nz=${toString conf.n.z}" - # Distribute all processes in X axis - "--npx=${toString conf.nprocs.x}" - "--npy=${toString conf.nprocs.y}" - "--npz=${toString conf.nprocs.z}" - "--nblocks=${toString conf.nblocks}" - "--ncomms=${toString conf.ncommblocks}" - # The input symlink is generated by the input stage, which is generated by - # the genInput function. - "--load=input" - # Disable HPCG Aspect Ratio to run any mpi layout - ] ++ optional (conf.disableAspectRatio) "--no-ar=1"; - }; - - program = {nextStage, conf, ...}: bsc.apps.hpcg.override { - inherit (conf) gitBranch; - }; - - pipeline = stdexp.stdPipeline ++ [ input exec program ]; - -in - - stdexp.genExperiment { inherit configs pipeline; } From 3e197da8a3e86af6cd37363bf24841afbf4403e5 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 19 Apr 2021 16:05:10 +0200 Subject: [PATCH 682/987] hpcg: update figures and remove old ones --- garlic/fig/hpcg/granularity.R | 62 +++++++++++ garlic/fig/hpcg/oss.R | 112 -------------------- garlic/fig/hpcg/oss.granularity.R | 112 -------------------- garlic/fig/hpcg/oss.scalability.R | 116 --------------------- garlic/fig/hpcg/oss.slices.strongscaling.R | 109 ------------------- garlic/fig/hpcg/oss.slices.weakscaling.R | 110 ------------------- garlic/fig/hpcg/size.R | 70 +++++++++++++ garlic/fig/hpcg/ss.R | 81 ++++++++++++++ garlic/fig/hpcg/ws.R | 70 +++++++++++++ garlic/fig/index.nix | 12 +-- 10 files changed, 287 insertions(+), 567 deletions(-) create mode 100644 garlic/fig/hpcg/granularity.R delete mode 100644 garlic/fig/hpcg/oss.R delete mode 100644 garlic/fig/hpcg/oss.granularity.R delete mode 100644 garlic/fig/hpcg/oss.scalability.R delete mode 100644 garlic/fig/hpcg/oss.slices.strongscaling.R delete mode 100644 garlic/fig/hpcg/oss.slices.weakscaling.R create mode 100644 garlic/fig/hpcg/size.R create mode 100644 garlic/fig/hpcg/ss.R create mode 100644 garlic/fig/hpcg/ws.R diff --git a/garlic/fig/hpcg/granularity.R b/garlic/fig/hpcg/granularity.R new file mode 100644 index 0000000..fbd18c6 --- /dev/null +++ b/garlic/fig/hpcg/granularity.R @@ -0,0 +1,62 @@ +library(ggplot2) +library(dplyr, warn.conflicts = FALSE) +library(scales) +library(jsonlite) +library(viridis, warn.conflicts = FALSE) + +args = commandArgs(trailingOnly=TRUE) + +if (length(args)>0) { input_file = args[1] } else { input_file = "input" } + +df = jsonlite::stream_in(file(input_file), verbose=FALSE) %>% + + jsonlite::flatten() %>% + + select(config.nblocks, + config.ncomms, + config.hw.cpusPerSocket, + config.blocksPerCpu, + unit, + time) %>% + + rename(nblocks=config.nblocks, + ncomms=config.ncomms, + blocksPerCpu=config.blocksPerCpu) %>% + + mutate(nblocks = as.factor(nblocks)) %>% + mutate(blocksPerCpu = as.factor(blocksPerCpu)) %>% + mutate(unit = as.factor(unit)) %>% + + group_by(unit) %>% + + mutate(median.time = median(time)) %>% + mutate(normalized.time = time / median.time - 1) %>% + mutate(log.median.time = log(median.time)) %>% + + ungroup() + +dpi=300 +h=5 +w=5 + +p = ggplot(df, aes(x=blocksPerCpu, y=normalized.time)) + + geom_boxplot() + + geom_hline(yintercept=c(-0.01, 0.01), linetype="dashed", color="red") + + theme_bw() + + labs(x="Blocks per CPU", y="Normalized time", title="HPCG granularity: normalized time", + subtitle=input_file) + + theme(plot.subtitle=element_text(size=8)) + +ggsave("normalized.time.png", plot=p, width=w, height=h, dpi=dpi) +ggsave("normalized.time.pdf", plot=p, width=w, height=h, dpi=dpi) + +p = ggplot(df, aes(x=blocksPerCpu, y=time)) + + geom_point(shape=21, size=3) + + theme_bw() + + labs(x="Blocks per CPU", y="Time (s)", title="HPCG granularity: time", + subtitle=input_file) + + theme(plot.subtitle=element_text(size=8)) + +ggsave("time.png", plot=p, width=w, height=h, dpi=dpi) +ggsave("time.pdf", plot=p, width=w, height=h, dpi=dpi) + diff --git a/garlic/fig/hpcg/oss.R b/garlic/fig/hpcg/oss.R deleted file mode 100644 index 3b68e1d..0000000 --- a/garlic/fig/hpcg/oss.R +++ /dev/null @@ -1,112 +0,0 @@ -# This R program takes as argument the dataset that contains the results of the -# execution of the heat example experiment and produces some plots. All the -# knowledge to understand how this script works is covered by this nice R book: -# -# Winston Chang, R Graphics Cookbook: Practical Recipes for Visualizing Data, -# O’Reilly Media (2020). 2nd edition -# -# Which can be freely read it online here: https://r-graphics.org/ -# -# Please, search in this book before copying some random (and probably oudated) -# reply on stack overflow. - -# We load some R packages to import the required functions. We mainly use the -# tidyverse packages, which are very good for ploting data, -library(ggplot2) -library(dplyr, warn.conflicts = FALSE) -library(scales) -library(jsonlite) -library(viridis, warn.conflicts = FALSE) - -# Here we simply load the arguments to find the input dataset. If nothing is -# specified we use the file named `input` in the current directory. -# We can run this script directly using: -# Rscript - -# Load the arguments (argv) -args = commandArgs(trailingOnly=TRUE) - -# Set the input dataset if given in argv[1], or use "input" as default -if (length(args)>0) { input_file = args[1] } else { input_file = "input" } - -df = jsonlite::stream_in(file(input_file), verbose=FALSE) %>% - - # Then we flatten it, as it may contain dictionaries inside the columns - jsonlite::flatten() %>% - - # Now the dataframe contains all the configuration of the units inside the - # columns named `config.*`, for example `config.cbs`. We first select only - # the columns that we need: - select(config.nblocks, config.ncommblocks, config.hw.cpusPerSocket, unit, time) %>% - - # And then we rename those columns to something shorter: - rename(nblocks=config.nblocks, - ncommblocks=config.ncommblocks, - cpusPerSocket=config.hw.cpusPerSocket) %>% - - mutate(blocksPerCpu = nblocks / cpusPerSocket) %>% - - mutate(nblocks = as.factor(nblocks)) %>% - mutate(blocksPerCpu = as.factor(blocksPerCpu)) %>% - mutate(unit = as.factor(unit)) %>% - - group_by(unit) %>% - - # And compute some metrics which are applied to each group. For example we - # compute the median time within the runs of a unit: - mutate(median.time = median(time)) %>% - mutate(normalized.time = time / median.time - 1) %>% - mutate(log.median.time = log(median.time)) %>% - - # Then, we remove the grouping. This step is very important, otherwise the - # plotting functions get confused: - ungroup() - -dpi=300 -h=5 -w=5 - -p = ggplot(df, aes(x=blocksPerCpu, y=normalized.time)) + - - # The boxplots are useful to identify outliers and problems with the - # distribution of time - geom_boxplot() + - - # We add a line to mark the 1% limit above and below the median - geom_hline(yintercept=c(-0.01, 0.01), linetype="dashed", color="red") + - - # The bw theme is recommended for publications - theme_bw() + - - # Here we add the title and the labels of the axes - labs(x="Blocks per CPU", y="Normalized time", title="HPCG granularity: normalized time", - subtitle=input_file) + - - # And set the subtitle font size a bit smaller, so it fits nicely - theme(plot.subtitle=element_text(size=8)) - -# Then, we save the plot both in png and pdf -ggsave("normalized.time.png", plot=p, width=w, height=h, dpi=dpi) -ggsave("normalized.time.pdf", plot=p, width=w, height=h, dpi=dpi) - -# We plot the time of each run as we vary the block size -p = ggplot(df, aes(x=blocksPerCpu, y=time)) + - - # We add a points (scatter plot) using circles (shape=21) a bit larger - # than the default (size=3) - geom_point(shape=21, size=3) + - - # The bw theme is recommended for publications - theme_bw() + - - # Here we add the title and the labels of the axes - labs(x="Blocks Per CPU", y="Time (s)", title="HPCG granularity: time", - subtitle=input_file) + - - # And set the subtitle font size a bit smaller, so it fits nicely - theme(plot.subtitle=element_text(size=8)) - -# Then, we save the plot both in png and pdf -ggsave("time.png", plot=p, width=w, height=h, dpi=dpi) -ggsave("time.pdf", plot=p, width=w, height=h, dpi=dpi) - diff --git a/garlic/fig/hpcg/oss.granularity.R b/garlic/fig/hpcg/oss.granularity.R deleted file mode 100644 index 3b68e1d..0000000 --- a/garlic/fig/hpcg/oss.granularity.R +++ /dev/null @@ -1,112 +0,0 @@ -# This R program takes as argument the dataset that contains the results of the -# execution of the heat example experiment and produces some plots. All the -# knowledge to understand how this script works is covered by this nice R book: -# -# Winston Chang, R Graphics Cookbook: Practical Recipes for Visualizing Data, -# O’Reilly Media (2020). 2nd edition -# -# Which can be freely read it online here: https://r-graphics.org/ -# -# Please, search in this book before copying some random (and probably oudated) -# reply on stack overflow. - -# We load some R packages to import the required functions. We mainly use the -# tidyverse packages, which are very good for ploting data, -library(ggplot2) -library(dplyr, warn.conflicts = FALSE) -library(scales) -library(jsonlite) -library(viridis, warn.conflicts = FALSE) - -# Here we simply load the arguments to find the input dataset. If nothing is -# specified we use the file named `input` in the current directory. -# We can run this script directly using: -# Rscript - -# Load the arguments (argv) -args = commandArgs(trailingOnly=TRUE) - -# Set the input dataset if given in argv[1], or use "input" as default -if (length(args)>0) { input_file = args[1] } else { input_file = "input" } - -df = jsonlite::stream_in(file(input_file), verbose=FALSE) %>% - - # Then we flatten it, as it may contain dictionaries inside the columns - jsonlite::flatten() %>% - - # Now the dataframe contains all the configuration of the units inside the - # columns named `config.*`, for example `config.cbs`. We first select only - # the columns that we need: - select(config.nblocks, config.ncommblocks, config.hw.cpusPerSocket, unit, time) %>% - - # And then we rename those columns to something shorter: - rename(nblocks=config.nblocks, - ncommblocks=config.ncommblocks, - cpusPerSocket=config.hw.cpusPerSocket) %>% - - mutate(blocksPerCpu = nblocks / cpusPerSocket) %>% - - mutate(nblocks = as.factor(nblocks)) %>% - mutate(blocksPerCpu = as.factor(blocksPerCpu)) %>% - mutate(unit = as.factor(unit)) %>% - - group_by(unit) %>% - - # And compute some metrics which are applied to each group. For example we - # compute the median time within the runs of a unit: - mutate(median.time = median(time)) %>% - mutate(normalized.time = time / median.time - 1) %>% - mutate(log.median.time = log(median.time)) %>% - - # Then, we remove the grouping. This step is very important, otherwise the - # plotting functions get confused: - ungroup() - -dpi=300 -h=5 -w=5 - -p = ggplot(df, aes(x=blocksPerCpu, y=normalized.time)) + - - # The boxplots are useful to identify outliers and problems with the - # distribution of time - geom_boxplot() + - - # We add a line to mark the 1% limit above and below the median - geom_hline(yintercept=c(-0.01, 0.01), linetype="dashed", color="red") + - - # The bw theme is recommended for publications - theme_bw() + - - # Here we add the title and the labels of the axes - labs(x="Blocks per CPU", y="Normalized time", title="HPCG granularity: normalized time", - subtitle=input_file) + - - # And set the subtitle font size a bit smaller, so it fits nicely - theme(plot.subtitle=element_text(size=8)) - -# Then, we save the plot both in png and pdf -ggsave("normalized.time.png", plot=p, width=w, height=h, dpi=dpi) -ggsave("normalized.time.pdf", plot=p, width=w, height=h, dpi=dpi) - -# We plot the time of each run as we vary the block size -p = ggplot(df, aes(x=blocksPerCpu, y=time)) + - - # We add a points (scatter plot) using circles (shape=21) a bit larger - # than the default (size=3) - geom_point(shape=21, size=3) + - - # The bw theme is recommended for publications - theme_bw() + - - # Here we add the title and the labels of the axes - labs(x="Blocks Per CPU", y="Time (s)", title="HPCG granularity: time", - subtitle=input_file) + - - # And set the subtitle font size a bit smaller, so it fits nicely - theme(plot.subtitle=element_text(size=8)) - -# Then, we save the plot both in png and pdf -ggsave("time.png", plot=p, width=w, height=h, dpi=dpi) -ggsave("time.pdf", plot=p, width=w, height=h, dpi=dpi) - diff --git a/garlic/fig/hpcg/oss.scalability.R b/garlic/fig/hpcg/oss.scalability.R deleted file mode 100644 index 3e2a20b..0000000 --- a/garlic/fig/hpcg/oss.scalability.R +++ /dev/null @@ -1,116 +0,0 @@ -# This R program takes as argument the dataset that contains the results of the -# execution of the heat example experiment and produces some plots. All the -# knowledge to understand how this script works is covered by this nice R book: -# -# Winston Chang, R Graphics Cookbook: Practical Recipes for Visualizing Data, -# O’Reilly Media (2020). 2nd edition -# -# Which can be freely read it online here: https://r-graphics.org/ -# -# Please, search in this book before copying some random (and probably oudated) -# reply on stack overflow. - -# We load some R packages to import the required functions. We mainly use the -# tidyverse packages, which are very good for ploting data, -library(ggplot2) -library(dplyr, warn.conflicts = FALSE) -library(scales) -library(jsonlite) -library(viridis, warn.conflicts = FALSE) - -# Here we simply load the arguments to find the input dataset. If nothing is -# specified we use the file named `input` in the current directory. -# We can run this script directly using: -# Rscript - -# Load the arguments (argv) -args = commandArgs(trailingOnly=TRUE) - -# Set the input dataset if given in argv[1], or use "input" as default -if (length(args)>0) { input_file = args[1] } else { input_file = "input" } - -df = jsonlite::stream_in(file(input_file), verbose=FALSE) %>% - - # Then we flatten it, as it may contain dictionaries inside the columns - jsonlite::flatten() %>% - - # Now the dataframe contains all the configuration of the units inside the - # columns named `config.*`, for example `config.cbs`. We first select only - # the columns that we need: - select(config.nblocks, config.ncommblocks, config.hw.cpusPerSocket, config.nodes, unit, time) %>% - - # And then we rename those columns to something shorter: - rename(nblocks=config.nblocks, - ncommblocks=config.ncommblocks, - cpusPerSocket=config.hw.cpusPerSocket, - nodes=config.nodes) %>% - - mutate(blocksPerCpu = nblocks / cpusPerSocket) %>% - - mutate(nblocks = as.factor(nblocks)) %>% - mutate(blocksPerCpu = as.factor(blocksPerCpu)) %>% - mutate(nodes = as.factor(nodes)) %>% - mutate(unit = as.factor(unit)) %>% - - group_by(unit) %>% - - # And compute some metrics which are applied to each group. For example we - # compute the median time within the runs of a unit: - mutate(median.time = median(time)) %>% - mutate(normalized.time = time / median.time - 1) %>% - mutate(log.median.time = log(median.time)) %>% - - # Then, we remove the grouping. This step is very important, otherwise the - # plotting functions get confused: - ungroup() - -dpi=300 -h=5 -w=5 - -p = ggplot(df, aes(x=nodes, y=normalized.time, color=blocksPerCpu)) + - - # The boxplots are useful to identify outliers and problems with the - # distribution of time - geom_boxplot() + - - # We add a line to mark the 1% limit above and below the median - geom_hline(yintercept=c(-0.01, 0.01), linetype="dashed", color="red") + - - # The bw theme is recommended for publications - theme_bw() + - - # Here we add the title and the labels of the axes - labs(x="Nodes", y="Normalized time", title="HPCG weak scalability: normalized time", - color="Blocks per CPU", - subtitle=input_file) + - - # And set the subtitle font size a bit smaller, so it fits nicely - theme(plot.subtitle=element_text(size=8)) - -# Then, we save the plot both in png and pdf -ggsave("normalized.time.png", plot=p, width=w, height=h, dpi=dpi) -ggsave("normalized.time.pdf", plot=p, width=w, height=h, dpi=dpi) - -# We plot the time of each run as we vary the block size -p = ggplot(df, aes(x=nodes, y=time, color=blocksPerCpu)) + - - # We add a points (scatter plot) using circles (shape=21) a bit larger - # than the default (size=3) - geom_point(shape=21, size=3) + - - # The bw theme is recommended for publications - theme_bw() + - - # Here we add the title and the labels of the axes - labs(x="Nodes", y="Time (s)", title="HPCG weak scalability: time", - color="Blocks per CPU", - subtitle=input_file) + - - # And set the subtitle font size a bit smaller, so it fits nicely - theme(plot.subtitle=element_text(size=8)) - -# Then, we save the plot both in png and pdf -ggsave("time.png", plot=p, width=w, height=h, dpi=dpi) -ggsave("time.pdf", plot=p, width=w, height=h, dpi=dpi) - diff --git a/garlic/fig/hpcg/oss.slices.strongscaling.R b/garlic/fig/hpcg/oss.slices.strongscaling.R deleted file mode 100644 index 084e877..0000000 --- a/garlic/fig/hpcg/oss.slices.strongscaling.R +++ /dev/null @@ -1,109 +0,0 @@ -# This R program takes as argument the dataset that contains the results of the -# execution of the heat example experiment and produces some plots. All the -# knowledge to understand how this script works is covered by this nice R book: -# -# Winston Chang, R Graphics Cookbook: Practical Recipes for Visualizing Data, -# O’Reilly Media (2020). 2nd edition -# -# Which can be freely read it online here: https://r-graphics.org/ -# -# Please, search in this book before copying some random (and probably oudated) -# reply on stack overflow. - -# We load some R packages to import the required functions. We mainly use the -# tidyverse packages, which are very good for ploting data, -library(ggplot2) -library(dplyr, warn.conflicts = FALSE) -library(scales) -library(jsonlite) -library(viridis, warn.conflicts = FALSE) - -# Here we simply load the arguments to find the input dataset. If nothing is -# specified we use the file named `input` in the current directory. -# We can run this script directly using: -# Rscript - -# Load the arguments (argv) -args = commandArgs(trailingOnly=TRUE) - -# Set the input dataset if given in argv[1], or use "input" as default -if (length(args)>0) { input_file = args[1] } else { input_file = "input" } - -df = jsonlite::stream_in(file(input_file), verbose=FALSE) %>% - - # Then we flatten it, as it may contain dictionaries inside the columns - jsonlite::flatten() %>% - - # Now the dataframe contains all the configuration of the units inside the - # columns named `config.*`, for example `config.cbs`. We first select only - # the columns that we need: - select(config.nblocks, - config.ncommblocks, - config.hw.cpusPerSocket, - config.nodes, - config.nprocs.x, - config.nprocs.y, - config.nprocs.z, - unit, - time - ) %>% - - # And then we rename those columns to something shorter: - rename(nblocks=config.nblocks, - ncommblocks=config.ncommblocks, - cpusPerSocket=config.hw.cpusPerSocket, - nodes=config.nodes, - npx=config.nprocs.x, - npy=config.nprocs.y, - npz=config.nprocs.z - ) %>% - - mutate(axisColor=as.factor(ifelse(npx != 1, "X", ifelse(npy != 1, "Y", "Z")))) %>% - - mutate(blocksPerCpu = nblocks / cpusPerSocket) %>% - - mutate(nblocks = as.factor(nblocks)) %>% - mutate(blocksPerCpu = as.factor(blocksPerCpu)) %>% - mutate(nodes = as.factor(nodes)) %>% - mutate(unit = as.factor(unit)) %>% - - mutate(timePerNprocs = time * npz) %>% - - group_by(unit) %>% - - # And compute some metrics which are applied to each group. For example we - # compute the median time within the runs of a unit: - mutate(median.time = median(time)) %>% - mutate(normalized.time = time / median.time - 1) %>% - mutate(log.median.time = log(median.time)) %>% - - # Then, we remove the grouping. This step is very important, otherwise the - # plotting functions get confused: - ungroup() - -dpi=300 -h=5 -w=5 - -# We plot the time of each run as we vary the block size -p = ggplot(df, aes(x=nodes, y=timePerNprocs, color=blocksPerCpu)) + - - # We add a points (scatter plot) using circles (shape=21) a bit larger - # than the default (size=3) - geom_point(shape=21, size=3) + - - # The bw theme is recommended for publications - theme_bw() + - - # Here we add the title and the labels of the axes - labs(x="Nodes", y="Time * Num Procs", title="HPCG strong scalability: Z axis", - color="Blocks Per CPU", - subtitle=input_file) + - - # And set the subtitle font size a bit smaller, so it fits nicely - theme(plot.subtitle=element_text(size=8)) - -# Then, we save the plot both in png and pdf -ggsave("time.png", plot=p, width=w, height=h, dpi=dpi) -ggsave("time.pdf", plot=p, width=w, height=h, dpi=dpi) - diff --git a/garlic/fig/hpcg/oss.slices.weakscaling.R b/garlic/fig/hpcg/oss.slices.weakscaling.R deleted file mode 100644 index 7109b0f..0000000 --- a/garlic/fig/hpcg/oss.slices.weakscaling.R +++ /dev/null @@ -1,110 +0,0 @@ -# This R program takes as argument the dataset that contains the results of the -# execution of the heat example experiment and produces some plots. All the -# knowledge to understand how this script works is covered by this nice R book: -# -# Winston Chang, R Graphics Cookbook: Practical Recipes for Visualizing Data, -# O’Reilly Media (2020). 2nd edition -# -# Which can be freely read it online here: https://r-graphics.org/ -# -# Please, search in this book before copying some random (and probably oudated) -# reply on stack overflow. - -# We load some R packages to import the required functions. We mainly use the -# tidyverse packages, which are very good for ploting data, -library(ggplot2) -library(dplyr, warn.conflicts = FALSE) -library(scales) -library(jsonlite) -library(viridis, warn.conflicts = FALSE) - -# Here we simply load the arguments to find the input dataset. If nothing is -# specified we use the file named `input` in the current directory. -# We can run this script directly using: -# Rscript - -# Load the arguments (argv) -args = commandArgs(trailingOnly=TRUE) - -# Set the input dataset if given in argv[1], or use "input" as default -if (length(args)>0) { input_file = args[1] } else { input_file = "input" } - -df = jsonlite::stream_in(file(input_file), verbose=FALSE) %>% - - # Then we flatten it, as it may contain dictionaries inside the columns - jsonlite::flatten() %>% - - # Now the dataframe contains all the configuration of the units inside the - # columns named `config.*`, for example `config.cbs`. We first select only - # the columns that we need: - select(config.nblocks, - config.ncommblocks, - config.hw.cpusPerSocket, - config.nodes, - config.nprocs.x, - config.nprocs.y, - config.nprocs.z, - unit, - time - ) %>% - - # And then we rename those columns to something shorter: - rename(nblocks=config.nblocks, - ncommblocks=config.ncommblocks, - cpusPerSocket=config.hw.cpusPerSocket, - nodes=config.nodes, - npx=config.nprocs.x, - npy=config.nprocs.y, - npz=config.nprocs.z - ) %>% - - mutate(axisColor=as.factor(ifelse(npx != 1, "X", ifelse(npy != 1, "Y", "Z")))) %>% - - mutate(blocksPerCpu = nblocks / cpusPerSocket) %>% - - mutate(nblocks = as.factor(nblocks)) %>% - mutate(blocksPerCpu = as.factor(blocksPerCpu)) %>% - mutate(nodes = as.factor(nodes)) %>% - mutate(unit = as.factor(unit)) %>% - - group_by(unit) %>% - - # And compute some metrics which are applied to each group. For example we - # compute the median time within the runs of a unit: - mutate(median.time = median(time)) %>% - mutate(normalized.time = time / median.time - 1) %>% - mutate(log.median.time = log(median.time)) %>% - - # Then, we remove the grouping. This step is very important, otherwise the - # plotting functions get confused: - ungroup() - -dpi=300 -h=5 -w=5 -w=3*w - -# We plot the time of each run as we vary the block size -p = ggplot(df, aes(x=blocksPerCpu, y=time, color=axisColor)) + - - # We add a points (scatter plot) using circles (shape=21) a bit larger - # than the default (size=3) - geom_point(shape=21, size=3) + - - facet_wrap(~ nodes, labeller="label_both") + - - # The bw theme is recommended for publications - theme_bw() + - - # Here we add the title and the labels of the axes - labs(x="Blocks Per CPU", y="Time (s)", title="HPCG weak scalability: time", - color="Axis", - subtitle=input_file) + - - # And set the subtitle font size a bit smaller, so it fits nicely - theme(plot.subtitle=element_text(size=8)) - -# Then, we save the plot both in png and pdf -ggsave("time.png", plot=p, width=w, height=h, dpi=dpi) -ggsave("time.pdf", plot=p, width=w, height=h, dpi=dpi) - diff --git a/garlic/fig/hpcg/size.R b/garlic/fig/hpcg/size.R new file mode 100644 index 0000000..c23be74 --- /dev/null +++ b/garlic/fig/hpcg/size.R @@ -0,0 +1,70 @@ +library(ggplot2) +library(dplyr, warn.conflicts = FALSE) +library(scales) +library(jsonlite) +library(viridis, warn.conflicts = FALSE) + +args = commandArgs(trailingOnly=TRUE) + +if (length(args)>0) { input_file = args[1] } else { input_file = "input" } + +df = jsonlite::stream_in(file(input_file), verbose=FALSE) %>% + + jsonlite::flatten() %>% + + select(config.nblocks, + config.hw.cpusPerSocket, + config.nodes, + config.nprocs.x, + config.nprocs.y, + config.nprocs.z, + config.blocksPerCpu, + config.sizePerCpu.z, + unit, + time + ) %>% + + rename(nblocks=config.nblocks, + cpusPerSocket=config.hw.cpusPerSocket, + nodes=config.nodes, + blocksPerCpu=config.blocksPerCpu, + sizePerCpu.z=config.sizePerCpu.z, + npx=config.nprocs.x, + npy=config.nprocs.y, + npz=config.nprocs.z + ) %>% + + mutate(time.nodes = time * nodes) %>% + mutate(time.nodes.elem = time.nodes / sizePerCpu.z) %>% + + mutate(axisColor=as.factor(ifelse(npx != 1, "X", ifelse(npy != 1, "Y", "Z")))) %>% + + mutate(nblocks = as.factor(nblocks)) %>% + mutate(blocksPerCpu = as.factor(blocksPerCpu)) %>% + mutate(sizePerCpu.z = as.factor(sizePerCpu.z)) %>% + mutate(nodes = as.factor(nodes)) %>% + mutate(unit = as.factor(unit)) %>% + + group_by(unit) %>% + + mutate(median.time = median(time)) %>% + mutate(normalized.time = time / median.time - 1) %>% + mutate(log.median.time = log(median.time)) %>% + + ungroup() + +dpi=300 +h=5 +w=5 + +p = ggplot(df, aes(x=sizePerCpu.z, y=time.nodes.elem)) + + geom_point(shape=21, size=3) + + theme_bw() + + labs(x="Size per CPU in Z", y="Time * nodes / spcz (s)", + title="HPCG size: time * nodes / spcz", + subtitle=input_file) + + theme(plot.subtitle=element_text(size=8), + legend.position="bottom") + +ggsave("time.nodes.png", plot=p, width=w, height=h, dpi=dpi) +ggsave("time.nodes.pdf", plot=p, width=w, height=h, dpi=dpi) diff --git a/garlic/fig/hpcg/ss.R b/garlic/fig/hpcg/ss.R new file mode 100644 index 0000000..a47ba12 --- /dev/null +++ b/garlic/fig/hpcg/ss.R @@ -0,0 +1,81 @@ +library(ggplot2) +library(dplyr, warn.conflicts = FALSE) +library(scales) +library(jsonlite) +library(viridis, warn.conflicts = FALSE) + +args = commandArgs(trailingOnly=TRUE) + +if (length(args)>0) { input_file = args[1] } else { input_file = "input" } + +df = jsonlite::stream_in(file(input_file), verbose=FALSE) %>% + + jsonlite::flatten() %>% + + select(config.nblocks, + config.hw.cpusPerSocket, + config.nodes, + config.nprocs.x, + config.nprocs.y, + config.nprocs.z, + config.blocksPerCpu, + config.sizePerCpu.z, + unit, + time + ) %>% + + rename(nblocks=config.nblocks, + cpusPerSocket=config.hw.cpusPerSocket, + nodes=config.nodes, + blocksPerCpu=config.blocksPerCpu, + sizePerCpu.z=config.sizePerCpu.z, + npx=config.nprocs.x, + npy=config.nprocs.y, + npz=config.nprocs.z + ) %>% + + mutate(time.sizeZ = time / sizePerCpu.z) %>% + mutate(time.nodes = time * nodes) %>% + mutate(axisColor=as.factor(ifelse(npx != 1, "X", ifelse(npy != 1, "Y", "Z")))) %>% + + mutate(nblocks = as.factor(nblocks)) %>% + mutate(blocksPerCpu = as.factor(blocksPerCpu)) %>% + mutate(nodes = as.factor(nodes)) %>% + mutate(unit = as.factor(unit)) %>% + mutate(sizePerCpu.z = as.factor(sizePerCpu.z)) %>% + + group_by(unit) %>% + + mutate(median.time = median(time)) %>% + mutate(normalized.time = time / median.time - 1) %>% + mutate(log.median.time = log(median.time)) %>% + + ungroup() + +dpi=300 +h=7 +w=7 + +p = ggplot(df, aes(x=nodes, y=time.nodes)) + + geom_boxplot() + + theme_bw() + + labs(x="Nodes", y="Time * nodes (s)", + title="HPCG strong scalability in Z", + subtitle=input_file) + + theme(plot.subtitle=element_text(size=8), + legend.position="bottom") + +ggsave("time.nodes.png", plot=p, width=w, height=h, dpi=dpi) +ggsave("time.nodes.pdf", plot=p, width=w, height=h, dpi=dpi) + +p = ggplot(df, aes(x=nodes, y=time.sizeZ, fill=sizePerCpu.z)) + + geom_boxplot() + + theme_bw() + + labs(x="Nodes", y="Time / npcz (s)", title="HPCG strong scalability in Z", + color="Size per CPU in Z", + subtitle=input_file) + + theme(plot.subtitle=element_text(size=8), + legend.position="bottom") + +ggsave("time.size.png", plot=p, width=w, height=h, dpi=dpi) +ggsave("time.size.pdf", plot=p, width=w, height=h, dpi=dpi) diff --git a/garlic/fig/hpcg/ws.R b/garlic/fig/hpcg/ws.R new file mode 100644 index 0000000..69dca29 --- /dev/null +++ b/garlic/fig/hpcg/ws.R @@ -0,0 +1,70 @@ +library(ggplot2) +library(dplyr, warn.conflicts = FALSE) +library(scales) +library(jsonlite) +library(viridis, warn.conflicts = FALSE) + +args = commandArgs(trailingOnly=TRUE) + +if (length(args)>0) { input_file = args[1] } else { input_file = "input" } + +df = jsonlite::stream_in(file(input_file), verbose=FALSE) %>% + + jsonlite::flatten() %>% + + select(config.nblocks, + config.hw.cpusPerSocket, + config.nodes, + config.nprocs.x, + config.nprocs.y, + config.nprocs.z, + config.blocksPerCpu, + config.sizePerCpu.z, + unit, + time + ) %>% + + rename(nblocks=config.nblocks, + cpusPerSocket=config.hw.cpusPerSocket, + nodes=config.nodes, + blocksPerCpu=config.blocksPerCpu, + sizePerCpu.z=config.sizePerCpu.z, + npx=config.nprocs.x, + npy=config.nprocs.y, + npz=config.nprocs.z + ) %>% + + mutate(axisColor=as.factor(ifelse(npx != 1, "X", ifelse(npy != 1, "Y", "Z")))) %>% + mutate(time.sizeZ = time / sizePerCpu.z) %>% + + mutate(nblocks = as.factor(nblocks)) %>% + mutate(blocksPerCpu = as.factor(blocksPerCpu)) %>% + mutate(nodes = as.factor(nodes)) %>% + mutate(unit = as.factor(unit)) %>% + mutate(sizePerCpu.z = as.factor(sizePerCpu.z)) %>% + + mutate(timePerNprocs = time * npz) %>% + + group_by(unit) %>% + + mutate(median.time = median(time)) %>% + mutate(normalized.time = time / median.time - 1) %>% + mutate(log.median.time = log(median.time)) %>% + + ungroup() + +dpi=300 +h=7 +w=7 + +p = ggplot(df, aes(x=nodes, y=time, fill=sizePerCpu.z)) + + geom_boxplot() + + theme_bw() + + labs(x="Nodes", y="Time (s)", title="HPCG weak scaling in Z", + color="Size per CPU in Z", + subtitle=input_file) + + theme(plot.subtitle=element_text(size=8), + legend.position="bottom") + +ggsave("time.nodes.png", plot=p, width=w, height=h, dpi=dpi) +ggsave("time.nodes.pdf", plot=p, width=w, height=h, dpi=dpi) diff --git a/garlic/fig/index.nix b/garlic/fig/index.nix index 072bd39..63da83e 100644 --- a/garlic/fig/index.nix +++ b/garlic/fig/index.nix @@ -38,14 +38,10 @@ in }; hpcg = with exp.hpcg; { - # /nix/store/8dr191vch1nw7vfz8nj36d5nhwnbdnf3-plot - ossGranularity = stdPlot ./hpcg/oss.granularity.R [ ossGranularity ]; - - # /nix/store/a3x76fbnfbacn2xhz3q65fklfp0qbb6p-plot - ossWeakscalingPerAxisPerBlock = stdPlot ./hpcg/oss.slices.weakscaling.R [ ossSlicesWeakscaling ]; - - # /nix/store/096rl6344pbz5wrzgxgqn651pysfkkjc-plot - ossStrongscalingPerBlock = stdPlot ./hpcg/oss.slices.strongscaling.R [ ossSlicesStrongscaling ]; + ss = stdPlot ./hpcg/ss.R [ ss ]; + ws = stdPlot ./hpcg/ws.R [ ws ]; + size = stdPlot ./hpcg/size.R [ size ]; + granularity = stdPlot ./hpcg/granularity.R [ granularity ]; }; saiph = with exp.saiph; { From ea66d7e4e0b5203831ab545f59e2f2919c094868 Mon Sep 17 00:00:00 2001 From: Antoni Navarro Date: Wed, 24 Mar 2021 10:12:05 +0100 Subject: [PATCH 683/987] nbody: update granularity tests --- garlic/exp/index.nix | 6 +- garlic/exp/nbody/granularity-mpi.nix | 61 ++++++++---------- garlic/exp/nbody/granularity-oss.nix | 38 ++++++------ garlic/fig/index.nix | 11 ++-- garlic/fig/nbody/granularity.R | 92 ++++++++++++++++++++++++++++ 5 files changed, 143 insertions(+), 65 deletions(-) create mode 100644 garlic/fig/nbody/granularity.R diff --git a/garlic/exp/index.nix b/garlic/exp/index.nix index 3545337..814fd4a 100644 --- a/garlic/exp/index.nix +++ b/garlic/exp/index.nix @@ -9,6 +9,8 @@ { nbody = rec { baseline = callPackage ./nbody/nblocks.nix { }; + granularity = callPackage ./nbody/granularity-mpi.nix { }; + scaling = callPackage ./nbody/scaling.nix { }; # Experiment variants small = baseline.override { @@ -25,10 +27,6 @@ }; }; - - scaling = callPackage ./nbody/scaling.nix { - particles = 12 * 4096; - }; }; saiph = { diff --git a/garlic/exp/nbody/granularity-mpi.nix b/garlic/exp/nbody/granularity-mpi.nix index 4c1d6a8..59eae23 100644 --- a/garlic/exp/nbody/granularity-mpi.nix +++ b/garlic/exp/nbody/granularity-mpi.nix @@ -4,48 +4,42 @@ , bsc , targetMachine , stages +, garlicTools }: with stdenv.lib; +with garlicTools; let # Initial variable configuration varConf = with bsc; { blocksize = [ 128 256 512 1024 2048 4096 ]; + gitBranch = [ + "garlic/mpi+send+oss+task" + "garlic/tampi+send+oss+task" + "garlic/tampi+isend+oss+task" + ]; }; - machineConfig = targetMachine.config; - # Generate the complete configuration for each unit - genConf = with bsc; c: targetMachine.config // rec { - expName = "nbody.test"; - unitName = "${expName}.nb-${toString nblocks}"; - - inherit (machineConfig) hw; - # nbody options - particles = 1024 * 64; + genConf = c: targetMachine.config // rec { + hw = targetMachine.config.hw; + particles = 4096 * hw.cpusPerSocket; timesteps = 10; - inherit (c) blocksize; - totalTasks = ntasksPerNode * nodes; - particlesPerTask = particles / totalTasks; - cc = icc; - mpi = impi; - gitBranch = "garlic/mpi+send"; + blocksize = c.blocksize; + gitBranch = c.gitBranch; - # Repeat the execution of each unit 30 times - loops = 10; + expName = "nbody-granularity"; + unitName = expName + "-${toString gitBranch}" + "-bs${toString blocksize}"; - # Resources - qos = "debug"; - ntasksPerNode = 48; + loops = 30; + + qos = "bsc_cs"; + ntasksPerNode = 1; nodes = 1; - time = "02:00:00"; - cpuBind = "sockets,verbose"; - jobName = "bs-${toString blocksize}-${gitBranch}-nbody"; - - # Experiment revision: this allows a user to run again a experiment already - # executed - rev = 0; + time = "04:00:00"; + cpusPerTask = hw.cpusPerSocket; + jobName = unitName; }; # Compute the array of configurations @@ -53,18 +47,13 @@ let inherit varConf genConf; }; - exec = {nextStage, conf, ...}: with conf; stages.exec { + exec = {nextStage, conf, ...}: stages.exec { inherit nextStage; - argv = [ "-t" timesteps "-p" particles ]; + argv = [ "-t" conf.timesteps "-p" conf.particles ]; }; - program = {nextStage, conf, ...}: with conf; - # FIXME: This is becoming very slow: - #let - # customPkgs = stdexp.replaceMpi conf.mpi; - #in - bsc.garlic.apps.nbody.override { - inherit cc blocksize mpi gitBranch; + program = {nextStage, conf, ...}: with conf; bsc.garlic.apps.nbody.override { + inherit (conf) blocksize gitBranch; }; pipeline = stdexp.stdPipeline ++ [ exec program ]; diff --git a/garlic/exp/nbody/granularity-oss.nix b/garlic/exp/nbody/granularity-oss.nix index 1becb3a..1b1dd36 100644 --- a/garlic/exp/nbody/granularity-oss.nix +++ b/garlic/exp/nbody/granularity-oss.nix @@ -4,36 +4,38 @@ , bsc , targetMachine , stages +, garlicTools }: with stdenv.lib; +with garlicTools; let + # Initial variable configuration - varConf = with bsc; { + varConf = { blocksize = [ 128 256 512 1024 2048 4096 ]; }; # Generate the complete configuration for each unit - genConf = with bsc; c: targetMachine.config // rec { - # nbody options - particles = 1024 * 64; + genConf = c: targetMachine.config // rec { + hw = targetMachine.config.hw; + particles = 4096 * hw.cpusPerSocket; timesteps = 10; - inherit (c) blocksize; - cc = icc; - mpi = impi; + blocksize = c.blocksize; + gitBranch = "garlic/oss+task"; + expName = "nbody-granularity"; + unitName = expName + "-bs${toString blocksize}"; - # Repeat the execution of each unit 30 times loops = 30; - # Resources qos = "debug"; ntasksPerNode = 1; nodes = 1; time = "02:00:00"; - cpuBind = "sockets,verbose"; - jobName = "nbody-bs-${toString blocksize}-${gitBranch}"; + cpusPerTask = hw.cpusPerSocket; + jobName = unitName; }; # Compute the array of configurations @@ -41,18 +43,14 @@ let inherit varConf genConf; }; - exec = {nextStage, conf, ...}: with conf; stages.exec { + exec = {nextStage, conf, ...}: stages.exec { inherit nextStage; - argv = [ "-t" timesteps "-p" particles ]; + argv = [ "-t" conf.timesteps "-p" conf.particles ]; }; - program = {nextStage, conf, ...}: with conf; - let - customPkgs = stdexp.replaceMpi conf.mpi; - in - customPkgs.apps.nbody.override { - inherit cc blocksize mpi gitBranch; - }; + program = {nextStage, conf, ...}: with conf; bsc.garlic.apps.nbody.override { + inherit (conf) blocksize gitBranch; + }; pipeline = stdexp.stdPipeline ++ [ exec program ]; diff --git a/garlic/fig/index.nix b/garlic/fig/index.nix index 63da83e..d9bb9bb 100644 --- a/garlic/fig/index.nix +++ b/garlic/fig/index.nix @@ -30,11 +30,12 @@ let in { nbody = with exp.nbody; { - baseline = stdPlot ./nbody/baseline.R [ baseline ]; - small = stdPlot ./nbody/baseline.R [ small ]; - jemalloc = stdPlot ./nbody/jemalloc.R [ baseline jemalloc ]; - ctf = stdPlot ./nbody/baseline.R [ ctf ]; - scaling = stdPlot ./nbody/baseline.R [ scaling ]; + baseline = stdPlot ./nbody/baseline.R [ baseline ]; + small = stdPlot ./nbody/baseline.R [ small ]; + jemalloc = stdPlot ./nbody/jemalloc.R [ baseline jemalloc ]; + ctf = stdPlot ./nbody/baseline.R [ ctf ]; + scaling = stdPlot ./nbody/baseline.R [ scaling ]; + granularity = stdPlot ./nbody/granularity.R [ granularity ]; }; hpcg = with exp.hpcg; { diff --git a/garlic/fig/nbody/granularity.R b/garlic/fig/nbody/granularity.R new file mode 100644 index 0000000..495f0e3 --- /dev/null +++ b/garlic/fig/nbody/granularity.R @@ -0,0 +1,92 @@ +library(ggplot2) +library(dplyr, warn.conflicts = FALSE) +library(scales) +library(jsonlite) +library(viridis, warn.conflicts = FALSE) + +# Load the arguments (argv) +args = commandArgs(trailingOnly=TRUE) +if (length(args)>0) { input_file = args[1] } else { input_file = "input" } + +df = jsonlite::stream_in(file(input_file), verbose=FALSE) %>% + jsonlite::flatten() %>% + select(config.blocksize, config.gitBranch, unit, time) %>% + rename(blocksize=config.blocksize, branch=config.gitBranch) %>% + + mutate(blocksize = as.factor(blocksize)) %>% + mutate(branch = as.factor(branch)) %>% + mutate(unit = as.factor(unit)) %>% + + group_by(unit) %>% + + mutate(median.time = median(time)) %>% + mutate(normalized.time = time / median.time - 1) %>% + mutate(log.median.time = log(median.time)) %>% + + ungroup() + +dpi = 300 +h = 5 +w = 8 + +# --------------------------------------------------------------------- + +p = ggplot(df, aes(x=blocksize, y=median.time, color=branch)) + + geom_point() + + geom_line(aes(group=branch)) + + theme_bw() + + labs(x="Blocksize", y="Median time (s)", title="NBody Granularity: Median Time", + subtitle=input_file) + + theme(plot.subtitle=element_text(size=5)) + + theme(legend.position="bottom") + + theme(legend.text = element_text(size=7)) + +ggsave("median.time.png", plot=p, width=w, height=h, dpi=dpi) +ggsave("median.time.pdf", plot=p, width=w, height=h, dpi=dpi) + +# --------------------------------------------------------------------- + +p = ggplot(df, aes(x=blocksize, y=normalized.time, color=branch)) + + geom_boxplot() + + geom_hline(yintercept=c(-0.01, 0.01), linetype="dashed", color="red") + + facet_wrap(~ branch) + + theme_bw() + + labs(x="Blocksize", y="Normalized Time", title="NBody Granularity: Normalized Time", + subtitle=input_file) + + theme(plot.subtitle=element_text(size=5)) + + theme(legend.position="bottom") + + theme(legend.text = element_text(size=7)) + +ggsave("normalized.time.png", plot=p, width=w, height=h, dpi=dpi) +ggsave("normalized.time.pdf", plot=p, width=w, height=h, dpi=dpi) + +# --------------------------------------------------------------------- + +p = ggplot(df, aes(x=blocksize, y=time, color=branch)) + + geom_point(shape=21, size=3) + + theme_bw() + + labs(x="Blocksize", y="Time (s)", title="NBody Granularity: Time", + subtitle=input_file) + + theme(plot.subtitle=element_text(size=5)) + + theme(legend.position="bottom") + + theme(legend.text = element_text(size=7)) + +ggsave("time.png", plot=p, width=w, height=h, dpi=dpi) +ggsave("time.pdf", plot=p, width=w, height=h, dpi=dpi) + + +# --------------------------------------------------------------------- + +p = ggplot(df, aes(x=blocksize, y=branch, fill=median.time)) + + geom_raster() + + scale_fill_viridis(option="plasma") + + coord_fixed() + + theme_bw() + + labs(x="Blocksize", y="Branch", title="NBody Granularity: Time", + subtitle=input_file) + + theme(plot.subtitle=element_text(size=5)) + + theme(legend.position="bottom") + + theme(legend.text = element_text(size=7)) + +ggsave("time.heatmap.png", plot=p, width=w, height=h, dpi=dpi) +ggsave("time.heatmap.pdf", plot=p, width=w, height=h, dpi=dpi) From 5815a9af093a8c96b0239ea213d5907dc43cd0f4 Mon Sep 17 00:00:00 2001 From: Antoni Navarro Date: Wed, 24 Mar 2021 10:15:58 +0100 Subject: [PATCH 684/987] nbody: move "old" experiments to another folder --- garlic/exp/nbody/{ => old}/granularity-oss.nix | 0 garlic/exp/nbody/{ => old}/nblocks.nix | 0 garlic/exp/nbody/{ => old}/scaling.nix | 0 garlic/exp/nbody/{ => old}/strong-scaling-oss.nix | 0 garlic/exp/nbody/{ => old}/weak-scaling-mpi.nix | 0 garlic/exp/nbody/{ => old}/weak-scaling-oss.nix | 0 garlic/fig/nbody/{ => old}/baseline.R | 0 garlic/fig/nbody/{ => old}/freeCpu.R | 0 garlic/fig/nbody/{ => old}/jemalloc.R | 0 garlic/fig/nbody/{ => old}/scaling.R | 0 10 files changed, 0 insertions(+), 0 deletions(-) rename garlic/exp/nbody/{ => old}/granularity-oss.nix (100%) rename garlic/exp/nbody/{ => old}/nblocks.nix (100%) rename garlic/exp/nbody/{ => old}/scaling.nix (100%) rename garlic/exp/nbody/{ => old}/strong-scaling-oss.nix (100%) rename garlic/exp/nbody/{ => old}/weak-scaling-mpi.nix (100%) rename garlic/exp/nbody/{ => old}/weak-scaling-oss.nix (100%) rename garlic/fig/nbody/{ => old}/baseline.R (100%) rename garlic/fig/nbody/{ => old}/freeCpu.R (100%) rename garlic/fig/nbody/{ => old}/jemalloc.R (100%) rename garlic/fig/nbody/{ => old}/scaling.R (100%) diff --git a/garlic/exp/nbody/granularity-oss.nix b/garlic/exp/nbody/old/granularity-oss.nix similarity index 100% rename from garlic/exp/nbody/granularity-oss.nix rename to garlic/exp/nbody/old/granularity-oss.nix diff --git a/garlic/exp/nbody/nblocks.nix b/garlic/exp/nbody/old/nblocks.nix similarity index 100% rename from garlic/exp/nbody/nblocks.nix rename to garlic/exp/nbody/old/nblocks.nix diff --git a/garlic/exp/nbody/scaling.nix b/garlic/exp/nbody/old/scaling.nix similarity index 100% rename from garlic/exp/nbody/scaling.nix rename to garlic/exp/nbody/old/scaling.nix diff --git a/garlic/exp/nbody/strong-scaling-oss.nix b/garlic/exp/nbody/old/strong-scaling-oss.nix similarity index 100% rename from garlic/exp/nbody/strong-scaling-oss.nix rename to garlic/exp/nbody/old/strong-scaling-oss.nix diff --git a/garlic/exp/nbody/weak-scaling-mpi.nix b/garlic/exp/nbody/old/weak-scaling-mpi.nix similarity index 100% rename from garlic/exp/nbody/weak-scaling-mpi.nix rename to garlic/exp/nbody/old/weak-scaling-mpi.nix diff --git a/garlic/exp/nbody/weak-scaling-oss.nix b/garlic/exp/nbody/old/weak-scaling-oss.nix similarity index 100% rename from garlic/exp/nbody/weak-scaling-oss.nix rename to garlic/exp/nbody/old/weak-scaling-oss.nix diff --git a/garlic/fig/nbody/baseline.R b/garlic/fig/nbody/old/baseline.R similarity index 100% rename from garlic/fig/nbody/baseline.R rename to garlic/fig/nbody/old/baseline.R diff --git a/garlic/fig/nbody/freeCpu.R b/garlic/fig/nbody/old/freeCpu.R similarity index 100% rename from garlic/fig/nbody/freeCpu.R rename to garlic/fig/nbody/old/freeCpu.R diff --git a/garlic/fig/nbody/jemalloc.R b/garlic/fig/nbody/old/jemalloc.R similarity index 100% rename from garlic/fig/nbody/jemalloc.R rename to garlic/fig/nbody/old/jemalloc.R diff --git a/garlic/fig/nbody/scaling.R b/garlic/fig/nbody/old/scaling.R similarity index 100% rename from garlic/fig/nbody/scaling.R rename to garlic/fig/nbody/old/scaling.R From 48a61dc2928e324f5f332b3818c4178dc408e193 Mon Sep 17 00:00:00 2001 From: Antoni Navarro Date: Wed, 24 Mar 2021 10:16:54 +0100 Subject: [PATCH 685/987] nbody: update indexes --- garlic/exp/index.nix | 18 ------------------ garlic/fig/index.nix | 5 ----- 2 files changed, 23 deletions(-) diff --git a/garlic/exp/index.nix b/garlic/exp/index.nix index 814fd4a..17ace05 100644 --- a/garlic/exp/index.nix +++ b/garlic/exp/index.nix @@ -8,25 +8,7 @@ { nbody = rec { - baseline = callPackage ./nbody/nblocks.nix { }; granularity = callPackage ./nbody/granularity-mpi.nix { }; - scaling = callPackage ./nbody/scaling.nix { }; - - # Experiment variants - small = baseline.override { - particles = 12 * 4096; - }; - - # Some experiments with traces - trace = { - # Only one unit repeated 30 times - baseline = small.override { - enableCTF = true; - loops = 30; - steps = 1; - }; - - }; }; saiph = { diff --git a/garlic/fig/index.nix b/garlic/fig/index.nix index d9bb9bb..5ba49e5 100644 --- a/garlic/fig/index.nix +++ b/garlic/fig/index.nix @@ -30,11 +30,6 @@ let in { nbody = with exp.nbody; { - baseline = stdPlot ./nbody/baseline.R [ baseline ]; - small = stdPlot ./nbody/baseline.R [ small ]; - jemalloc = stdPlot ./nbody/jemalloc.R [ baseline jemalloc ]; - ctf = stdPlot ./nbody/baseline.R [ ctf ]; - scaling = stdPlot ./nbody/baseline.R [ scaling ]; granularity = stdPlot ./nbody/granularity.R [ granularity ]; }; From 58294d4467d502adfe6aa02c3228095b82fc48bb Mon Sep 17 00:00:00 2001 From: Antoni Navarro Date: Thu, 25 Mar 2021 12:07:50 +0100 Subject: [PATCH 686/987] nbody: add "nodes or sockets" experiment --- garlic/exp/index.nix | 1 + garlic/exp/nbody/nodes-or-sockets-mpi.nix | 72 ++++++++++ garlic/fig/index.nix | 1 + garlic/fig/nbody/nodes-or-sockets.R | 168 ++++++++++++++++++++++ 4 files changed, 242 insertions(+) create mode 100644 garlic/exp/nbody/nodes-or-sockets-mpi.nix create mode 100644 garlic/fig/nbody/nodes-or-sockets.R diff --git a/garlic/exp/index.nix b/garlic/exp/index.nix index 17ace05..5be0f68 100644 --- a/garlic/exp/index.nix +++ b/garlic/exp/index.nix @@ -9,6 +9,7 @@ { nbody = rec { granularity = callPackage ./nbody/granularity-mpi.nix { }; + nodesorsockets = callPackage ./nbody/nodes-or-sockets-mpi.nix { }; }; saiph = { diff --git a/garlic/exp/nbody/nodes-or-sockets-mpi.nix b/garlic/exp/nbody/nodes-or-sockets-mpi.nix new file mode 100644 index 0000000..44c0c16 --- /dev/null +++ b/garlic/exp/nbody/nodes-or-sockets-mpi.nix @@ -0,0 +1,72 @@ +{ + stdenv +, stdexp +, bsc +, targetMachine +, stages +, garlicTools +, numactl +}: + +with stdenv.lib; +with garlicTools; + +let + # Initial variable configuration + varConf = with bsc; { + blocksize = [ 256 512 1024 ]; + gitBranch = [ "garlic/tampi+send+oss+task" ]; + attachToSocket = [ true false ]; + numactl = [ true false ]; + }; + + # Generate the complete configuration for each unit + genConf = c: targetMachine.config // rec { + hw = targetMachine.config.hw; + particles = 4 * 4096 * hw.cpusPerSocket; + timesteps = 10; + blocksize = c.blocksize; + gitBranch = c.gitBranch; + socketAtt = c.attachToSocket; + useNumact = c.numactl; + + expName = "nbody-granularity"; + attachName = if (socketAtt) then "PerSocket" else "PerNode"; + numaName = if (useNumact) then "True" else "False"; + unitName = expName + + "-${toString gitBranch}" + + "-bs${toString blocksize}" + + "-ranks${toString attachName}" + + "-useNuma${toString numaName}"; + + loops = 30; + + qos = "debug"; + ntasksPerNode = if (socketAtt) then 2 else 1; + nodes = 4; + time = "02:00:00"; + cpusPerTask = if (socketAtt) then hw.cpusPerSocket else 2*hw.cpusPerSocket; + jobName = unitName; + }; + + # Compute the array of configurations + configs = stdexp.buildConfigs { + inherit varConf genConf; + }; + + exec = {nextStage, conf, ...}: stages.exec ({ + inherit nextStage; + argv = [ "-t" conf.timesteps "-p" conf.particles ]; + } // optionalAttrs (conf.useNumact) { + program = "${numactl}/bin/numactl --interleave=all ${stageProgram nextStage}"; + }); + + program = {nextStage, conf, ...}: with conf; bsc.garlic.apps.nbody.override { + inherit (conf) blocksize gitBranch; + }; + + pipeline = stdexp.stdPipeline ++ [ exec program ]; + +in + + stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/fig/index.nix b/garlic/fig/index.nix index 5ba49e5..a488c60 100644 --- a/garlic/fig/index.nix +++ b/garlic/fig/index.nix @@ -31,6 +31,7 @@ in { nbody = with exp.nbody; { granularity = stdPlot ./nbody/granularity.R [ granularity ]; + nodesorsockets = stdPlot ./nbody/nodes-or-sockets.R [ nodesorsockets ]; }; hpcg = with exp.hpcg; { diff --git a/garlic/fig/nbody/nodes-or-sockets.R b/garlic/fig/nbody/nodes-or-sockets.R new file mode 100644 index 0000000..21b6b3f --- /dev/null +++ b/garlic/fig/nbody/nodes-or-sockets.R @@ -0,0 +1,168 @@ +library(ggplot2) +library(dplyr, warn.conflicts = FALSE) +library(scales) +library(jsonlite) +library(viridis, warn.conflicts = FALSE) + +# Load the arguments (argv) +args = commandArgs(trailingOnly=TRUE) +if (length(args)>0) { input_file = args[1] } else { input_file = "input" } + +dfNuma = jsonlite::stream_in(file(input_file), verbose=FALSE) %>% + jsonlite::flatten() %>% + select(config.blocksize, config.gitBranch, config.socketAtt, config.useNumact, unit, time) %>% + rename(blocksize=config.blocksize, branch=config.gitBranch, attachment=config.socketAtt, usenuma=config.useNumact) %>% + + mutate(blocksize = as.factor(blocksize)) %>% + mutate(branch = as.factor(branch)) %>% + mutate(attachment = as.factor(attachment)) %>% + mutate(usenuma = as.factor(usenuma)) %>% + mutate(unit = as.factor(unit)) %>% + + group_by(unit) %>% + + mutate(median.time = median(time)) %>% + mutate(normalized.time = time / median.time - 1) %>% + mutate(log.median.time = log(median.time)) %>% + + filter(usenuma == TRUE) %>% + + ungroup() + +dfNonuma = jsonlite::stream_in(file(input_file), verbose=FALSE) %>% + jsonlite::flatten() %>% + select(config.blocksize, config.gitBranch, config.socketAtt, config.useNumact, unit, time) %>% + rename(blocksize=config.blocksize, branch=config.gitBranch, attachment=config.socketAtt, usenuma=config.useNumact) %>% + + mutate(blocksize = as.factor(blocksize)) %>% + mutate(branch = as.factor(branch)) %>% + mutate(attachment = as.factor(attachment)) %>% + mutate(usenuma = as.factor(usenuma)) %>% + mutate(unit = as.factor(unit)) %>% + + group_by(unit) %>% + + mutate(median.time = median(time)) %>% + mutate(normalized.time = time / median.time - 1) %>% + mutate(log.median.time = log(median.time)) %>% + + filter(usenuma == FALSE) %>% + + ungroup() + +dpi = 300 +h = 5 +w = 8 + + +# --------------------------------------------------------------------- + +p = ggplot(dfNuma, aes(x=blocksize, y=median.time, color=attachment)) + + geom_point() + + geom_line(aes(group=attachment)) + + theme_bw() + + labs(x="Blocksize", y="Median time (s)", title="NBody Granularity (tampi+send+oss+task | numactl ON | 4 Nodes): Median Time", + subtitle=input_file, color="Rank Attachment") + + theme(plot.subtitle=element_text(size=5)) + + theme(legend.position="bottom") + + scale_color_manual(labels = c("RanksPerNode", "RanksPerSocket"), values=c("blue", "red")) + +ggsave("median-numactl.time.png", plot=p, width=w, height=h, dpi=dpi) +ggsave("median-numactl.time.pdf", plot=p, width=w, height=h, dpi=dpi) + +p = ggplot(dfNonuma, aes(x=blocksize, y=median.time, color=attachment)) + + geom_point() + + geom_line(aes(group=attachment)) + + theme_bw() + + labs(x="Blocksize", y="Median time (s)", title="NBody Granularity (tampi+send+oss+task | numactl OFF | 4 Nodes): Median Time", + subtitle=input_file, color="Rank Attachment") + + theme(plot.subtitle=element_text(size=5)) + + theme(legend.position="bottom") + + scale_color_manual(labels = c("RanksPerNode", "RanksPerSocket"), values=c("blue", "red")) + +ggsave("median.time.png", plot=p, width=w, height=h, dpi=dpi) +ggsave("median.time.pdf", plot=p, width=w, height=h, dpi=dpi) +# --------------------------------------------------------------------- + +p = ggplot(dfNuma, aes(x=blocksize, y=normalized.time, color=attachment)) + + geom_boxplot() + + geom_hline(yintercept=c(-0.01, 0.01), linetype="dashed", color="red") + + facet_wrap(~ attachment) + + theme_bw() + + labs(x="Blocksize", y="Normalized Time", title="NBody Granularity (tampi+send+oss+task | numactl ON | 4 Nodes): Normalized Time", + subtitle=input_file, color="Rank Attachment") + + theme(plot.subtitle=element_text(size=5)) + + theme(legend.position="bottom") + + scale_color_manual(labels = c("RanksPerNode", "RanksPerSocket"), values=c("blue", "red")) + +ggsave("normalized-numactl.time.png", plot=p, width=w, height=h, dpi=dpi) +ggsave("normalized-numactl.time.pdf", plot=p, width=w, height=h, dpi=dpi) + +p = ggplot(dfNonuma, aes(x=blocksize, y=normalized.time, color=attachment)) + + geom_boxplot() + + geom_hline(yintercept=c(-0.01, 0.01), linetype="dashed", color="red") + + facet_wrap(~ attachment) + + theme_bw() + + labs(x="Blocksize", y="Normalized Time", title="NBody Granularity (tampi+send+oss+task | 4 Nodes): Normalized Time", + subtitle=input_file, color="Rank Attachment") + + theme(plot.subtitle=element_text(size=5)) + + theme(legend.position="bottom") + + scale_color_manual(labels = c("RanksPerNode", "RanksPerSocket"), values=c("blue", "red")) + +ggsave("normalized.time.png", plot=p, width=w, height=h, dpi=dpi) +ggsave("normalized.time.pdf", plot=p, width=w, height=h, dpi=dpi) +# --------------------------------------------------------------------- + +p = ggplot(dfNuma, aes(x=blocksize, y=time, color=attachment)) + + geom_point(shape=21, size=3) + + theme_bw() + + labs(x="Blocksize", y="Time (s)", title="NBody Granularity (tampi+send+oss+task | numactl ON | 4 Nodes): Time", + subtitle=input_file, color="Rank Attachment") + + theme(plot.subtitle=element_text(size=5)) + + theme(legend.position="bottom") + + scale_color_manual(labels = c("RanksPerNode", "RanksPerSocket"), values=c("blue", "red")) + +ggsave("time-numactl.png", plot=p, width=w, height=h, dpi=dpi) +ggsave("time-numactl.pdf", plot=p, width=w, height=h, dpi=dpi) + +p = ggplot(dfNonuma, aes(x=blocksize, y=time, color=attachment)) + + geom_point(shape=21, size=3) + + theme_bw() + + labs(x="Blocksize", y="Time (s)", title="NBody Granularity (tampi+send+oss+task | 4 Nodes): Time", + subtitle=input_file, color="Rank Attachment") + + theme(plot.subtitle=element_text(size=5)) + + theme(legend.position="bottom") + + scale_color_manual(labels = c("RanksPerNode", "RanksPerSocket"), values=c("blue", "red")) + + +ggsave("time.png", plot=p, width=w, height=h, dpi=dpi) +ggsave("time.pdf", plot=p, width=w, height=h, dpi=dpi) +# --------------------------------------------------------------------- + +p = ggplot(dfNuma, aes(x=blocksize, y=attachment, fill=median.time)) + + geom_raster() + + scale_fill_viridis(option="plasma") + + coord_fixed() + + theme_bw() + + labs(x="Blocksize", y="Attachment", title="NBody Granularity (tampi+send+oss+task | numactl ON | 4 Nodes): Time", + subtitle=input_file, color = "Rank Attachment") + + theme(plot.subtitle=element_text(size=5)) + + theme(legend.position="bottom") + + scale_color_manual(labels = c("RanksPerNode", "RanksPerSocket"), values=c("blue", "red")) + +ggsave("time-numactl.heatmap.png", plot=p, width=w, height=h, dpi=dpi) +ggsave("time-numactl.heatmap.pdf", plot=p, width=w, height=h, dpi=dpi) + +p = ggplot(dfNonuma, aes(x=blocksize, y=attachment, fill=median.time)) + + geom_raster() + + scale_fill_viridis(option="plasma") + + coord_fixed() + + theme_bw() + + labs(x="Blocksize", y="Attachment", title="NBody Granularity (tampi+send+oss+task | 4 Nodes): Time", + subtitle=input_file, color = "Rank Attachment") + + theme(plot.subtitle=element_text(size=5)) + + theme(legend.position="bottom") + + scale_color_manual(labels = c("RanksPerNode", "RanksPerSocket"), values=c("blue", "red")) + +ggsave("time.heatmap.png", plot=p, width=w, height=h, dpi=dpi) +ggsave("time.heatmap.pdf", plot=p, width=w, height=h, dpi=dpi) From 03298228e49452e2ebda7bd434d434816dd452c1 Mon Sep 17 00:00:00 2001 From: Antoni Navarro Date: Fri, 26 Mar 2021 18:16:17 +0100 Subject: [PATCH 687/987] nbody: add strong scaling experiment --- garlic/exp/index.nix | 1 + garlic/exp/nbody/strong-scaling-mpi.nix | 51 +++++++------- garlic/fig/index.nix | 1 + garlic/fig/nbody/scaling.R | 93 +++++++++++++++++++++++++ 4 files changed, 122 insertions(+), 24 deletions(-) create mode 100644 garlic/fig/nbody/scaling.R diff --git a/garlic/exp/index.nix b/garlic/exp/index.nix index 5be0f68..5477fd5 100644 --- a/garlic/exp/index.nix +++ b/garlic/exp/index.nix @@ -10,6 +10,7 @@ nbody = rec { granularity = callPackage ./nbody/granularity-mpi.nix { }; nodesorsockets = callPackage ./nbody/nodes-or-sockets-mpi.nix { }; + scaling = callPackage ./nbody/strong-scaling-mpi.nix { }; }; saiph = { diff --git a/garlic/exp/nbody/strong-scaling-mpi.nix b/garlic/exp/nbody/strong-scaling-mpi.nix index b7e77c2..3ca7041 100644 --- a/garlic/exp/nbody/strong-scaling-mpi.nix +++ b/garlic/exp/nbody/strong-scaling-mpi.nix @@ -4,37 +4,44 @@ , bsc , targetMachine , stages +, garlicTools }: with stdenv.lib; +with garlicTools; let # Initial variable configuration varConf = with bsc; { - numProcsAndParticles = [ 1 2 4 8 16 32 48 ]; + blocksize = [ 512 ]; + nodes = [ 1 2 4 8 16 ]; + gitBranch = [ + "garlic/mpi+send+oss+task" + "garlic/tampi+send+oss+task" + "garlic/tampi+isend+oss+task" + ]; }; # Generate the complete configuration for each unit - genConf = with bsc; c: targetMachine.config // rec { - # nbody options - inherit (c) numProcsAndParticles; - particles = 1024 * numProcsAndParticles * 2; + genConf = c: targetMachine.config // rec { + hw = targetMachine.config.hw; + particles = 16 * 4096 * hw.cpusPerSocket; timesteps = 10; - blocksize = 1024; - cc = icc; - mpi = impi; - gitBranch = "garlic/mpi+send"; + blocksize = c.blocksize; + numNodes = c.nodes; + gitBranch = c.gitBranch; + + expName = "nbody-scaling"; + unitName = expName + "-${toString gitBranch}" + "-nodes${toString numNodes}"; - # Repeat the execution of each unit 30 times loops = 30; - # Resources + nodes = numNodes; qos = "debug"; - ntasksPerNode = numProcsAndParticles; - nodes = 1; + ntasksPerNode = 2; time = "02:00:00"; - cpuBind = "sockets,verbose"; - jobName = "nbody-bs-${toString numProcsAndParticles}-${gitBranch}"; + cpusPerTask = hw.cpusPerSocket; + jobName = unitName; }; # Compute the array of configurations @@ -42,18 +49,14 @@ let inherit varConf genConf; }; - exec = {nextStage, conf, ...}: with conf; stages.exec { + exec = {nextStage, conf, ...}: stages.exec { inherit nextStage; - argv = [ "-t" timesteps "-p" particles ]; + argv = [ "-t" conf.timesteps "-p" conf.particles ]; }; - program = {nextStage, conf, ...}: with conf; - let - customPkgs = stdexp.replaceMpi conf.mpi; - in - customPkgs.apps.nbody.override { - inherit cc blocksize mpi gitBranch; - }; + program = {nextStage, conf, ...}: with conf; bsc.garlic.apps.nbody.override { + inherit (conf) blocksize gitBranch; + }; pipeline = stdexp.stdPipeline ++ [ exec program ]; diff --git a/garlic/fig/index.nix b/garlic/fig/index.nix index a488c60..263a574 100644 --- a/garlic/fig/index.nix +++ b/garlic/fig/index.nix @@ -32,6 +32,7 @@ in nbody = with exp.nbody; { granularity = stdPlot ./nbody/granularity.R [ granularity ]; nodesorsockets = stdPlot ./nbody/nodes-or-sockets.R [ nodesorsockets ]; + scaling = stdPlot ./nbody/scaling.R [ scaling ]; }; hpcg = with exp.hpcg; { diff --git a/garlic/fig/nbody/scaling.R b/garlic/fig/nbody/scaling.R new file mode 100644 index 0000000..60a9e4a --- /dev/null +++ b/garlic/fig/nbody/scaling.R @@ -0,0 +1,93 @@ +library(ggplot2) +library(dplyr, warn.conflicts = FALSE) +library(scales) +library(jsonlite) +library(viridis, warn.conflicts = FALSE) + +# Load the arguments (argv) +args = commandArgs(trailingOnly=TRUE) +if (length(args)>0) { input_file = args[1] } else { input_file = "input" } + +df = jsonlite::stream_in(file(input_file), verbose=FALSE) %>% + jsonlite::flatten() %>% + select(config.blocksize, config.gitBranch, config.numNodes, unit, time) %>% + rename(nodes = config.numNodes, blocksize=config.blocksize, branch=config.gitBranch) %>% + + mutate(blocksize = as.factor(blocksize)) %>% + mutate(nodes = as.factor(nodes)) %>% + mutate(branch = as.factor(branch)) %>% + mutate(unit = as.factor(unit)) %>% + + group_by(unit) %>% + + mutate(median.time = median(time)) %>% + mutate(normalized.time = time / median.time - 1) %>% + mutate(log.median.time = log(median.time)) %>% + + ungroup() + +dpi = 300 +h = 5 +w = 8 + +# --------------------------------------------------------------------- + +p = ggplot(df, aes(x=nodes, y=median.time, color=branch)) + + geom_point() + + geom_line(aes(group=branch)) + + theme_bw() + + labs(x="Nodes", y="Median time (s)", title="NBody Scaling: Median Time", + subtitle=input_file) + + theme(plot.subtitle=element_text(size=5)) + + theme(legend.position="bottom") + + theme(legend.text = element_text(size=7)) + +ggsave("median.time.png", plot=p, width=w, height=h, dpi=dpi) +ggsave("median.time.pdf", plot=p, width=w, height=h, dpi=dpi) + +# --------------------------------------------------------------------- + +p = ggplot(df, aes(x=nodes, y=normalized.time, color=branch)) + + geom_boxplot() + + geom_hline(yintercept=c(-0.01, 0.01), linetype="dashed", color="red") + + facet_wrap(~ branch) + + theme_bw() + + labs(x="Nodes", y="Normalized time (s)", title="NBody Scaling: Normalized Time", + subtitle=input_file) + + theme(plot.subtitle=element_text(size=5)) + + theme(legend.position="bottom") + + theme(legend.text = element_text(size=7)) + +ggsave("normalized.time.png", plot=p, width=w, height=h, dpi=dpi) +ggsave("normalized.time.pdf", plot=p, width=w, height=h, dpi=dpi) + +# --------------------------------------------------------------------- + +p = ggplot(df, aes(x=nodes, y=time, color=branch)) + + geom_point(shape=21, size=3) + + theme_bw() + + labs(x="Nodes", y="Time (s)", title="NBody Scaling: Time", + subtitle=input_file) + + theme(plot.subtitle=element_text(size=5)) + + theme(legend.position="bottom") + + theme(legend.text = element_text(size=7)) + +ggsave("time.png", plot=p, width=w, height=h, dpi=dpi) +ggsave("time.pdf", plot=p, width=w, height=h, dpi=dpi) + + +# --------------------------------------------------------------------- + +p = ggplot(df, aes(x=nodes, y=branch, fill=median.time)) + + geom_raster() + + scale_fill_viridis(option="plasma") + + coord_fixed() + + theme_bw() + + labs(x="Nodes", y="Branch", title="NBody Scaling: Time", + subtitle=input_file) + + theme(plot.subtitle=element_text(size=5)) + + theme(legend.position="bottom") + + theme(legend.text = element_text(size=7)) + +ggsave("time.heatmap.png", plot=p, width=w, height=h, dpi=dpi) +ggsave("time.heatmap.pdf", plot=p, width=w, height=h, dpi=dpi) From f729fc400635d96834772c1ff33430e2990a4eab Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 6 Apr 2021 19:02:33 +0200 Subject: [PATCH 688/987] nbody: rename granularity experiment file --- garlic/exp/index.nix | 2 +- garlic/exp/nbody/{granularity-mpi.nix => granularity.nix} | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename garlic/exp/nbody/{granularity-mpi.nix => granularity.nix} (100%) diff --git a/garlic/exp/index.nix b/garlic/exp/index.nix index 5477fd5..7e40ba0 100644 --- a/garlic/exp/index.nix +++ b/garlic/exp/index.nix @@ -8,7 +8,7 @@ { nbody = rec { - granularity = callPackage ./nbody/granularity-mpi.nix { }; + granularity = callPackage ./nbody/granularity.nix { }; nodesorsockets = callPackage ./nbody/nodes-or-sockets-mpi.nix { }; scaling = callPackage ./nbody/strong-scaling-mpi.nix { }; }; diff --git a/garlic/exp/nbody/granularity-mpi.nix b/garlic/exp/nbody/granularity.nix similarity index 100% rename from garlic/exp/nbody/granularity-mpi.nix rename to garlic/exp/nbody/granularity.nix From e1433fedb8daa7671b1b3c39a0014e4065931637 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 20 Apr 2021 16:14:44 +0200 Subject: [PATCH 689/987] nbody: refactor experiments into common.nix --- garlic/exp/index.nix | 4 +- garlic/exp/nbody/common.nix | 36 ++++++++++++ garlic/exp/nbody/granularity.nix | 44 +++++++------- garlic/exp/nbody/nodes-or-sockets-mpi.nix | 72 ----------------------- garlic/exp/nbody/numa.nix | 63 ++++++++++++++++++++ garlic/exp/nbody/ss.nix | 58 ++++++++++++++++++ garlic/exp/nbody/strong-scaling-mpi.nix | 65 -------------------- 7 files changed, 179 insertions(+), 163 deletions(-) create mode 100644 garlic/exp/nbody/common.nix delete mode 100644 garlic/exp/nbody/nodes-or-sockets-mpi.nix create mode 100644 garlic/exp/nbody/numa.nix create mode 100644 garlic/exp/nbody/ss.nix delete mode 100644 garlic/exp/nbody/strong-scaling-mpi.nix diff --git a/garlic/exp/index.nix b/garlic/exp/index.nix index 7e40ba0..d467881 100644 --- a/garlic/exp/index.nix +++ b/garlic/exp/index.nix @@ -9,8 +9,8 @@ { nbody = rec { granularity = callPackage ./nbody/granularity.nix { }; - nodesorsockets = callPackage ./nbody/nodes-or-sockets-mpi.nix { }; - scaling = callPackage ./nbody/strong-scaling-mpi.nix { }; + ss = callPackage ./nbody/ss.nix { }; + numa = callPackage ./nbody/numa.nix { }; }; saiph = { diff --git a/garlic/exp/nbody/common.nix b/garlic/exp/nbody/common.nix new file mode 100644 index 0000000..434bc58 --- /dev/null +++ b/garlic/exp/nbody/common.nix @@ -0,0 +1,36 @@ +{ + stdenv +, stdexp +, bsc +, stages +, numactl +, garlicTools +}: + +with stdenv.lib; +with garlicTools; + +rec { + getConfigs = {varConf, genConf}: stdexp.buildConfigs { + inherit varConf genConf; + }; + + exec = {nextStage, conf, ...}: stages.exec + ( + { + inherit nextStage; + argv = with conf; [ "-t" timesteps "-p" particles ]; + } + # Use numactl to use the interleave policy if requested (default is + # false) + // optionalAttrs (conf.interleaveMem or false) { + program = "${numactl}/bin/numactl --interleave=all ${stageProgram nextStage}"; + } + ); + + program = {nextStage, conf, ...}: bsc.garlic.apps.nbody.override { + inherit (conf) blocksize gitBranch; + }; + + pipeline = stdexp.stdPipeline ++ [ exec program ]; +} diff --git a/garlic/exp/nbody/granularity.nix b/garlic/exp/nbody/granularity.nix index 59eae23..23baa26 100644 --- a/garlic/exp/nbody/granularity.nix +++ b/garlic/exp/nbody/granularity.nix @@ -5,6 +5,7 @@ , targetMachine , stages , garlicTools +, callPackage }: with stdenv.lib; @@ -12,11 +13,11 @@ with garlicTools; let # Initial variable configuration - varConf = with bsc; { - blocksize = [ 128 256 512 1024 2048 4096 ]; + varConf = { + blocksize = range2 64 2048; gitBranch = [ - "garlic/mpi+send+oss+task" - "garlic/tampi+send+oss+task" +# "garlic/mpi+send+oss+task" +# "garlic/tampi+send+oss+task" "garlic/tampi+isend+oss+task" ]; }; @@ -24,40 +25,35 @@ let # Generate the complete configuration for each unit genConf = c: targetMachine.config // rec { hw = targetMachine.config.hw; - particles = 4096 * hw.cpusPerSocket; + particles = 8 * 1024 * hw.cpusPerSocket; timesteps = 10; blocksize = c.blocksize; gitBranch = c.gitBranch; expName = "nbody-granularity"; - unitName = expName + "-${toString gitBranch}" + "-bs${toString blocksize}"; + unitName = expName + + "-${toString gitBranch}" + + "-bs${toString blocksize}"; - loops = 30; + loops = 10; - qos = "bsc_cs"; - ntasksPerNode = 1; - nodes = 1; - time = "04:00:00"; + qos = "debug"; cpusPerTask = hw.cpusPerSocket; + ntasksPerNode = hw.socketsPerNode; + nodes = 1; + time = "02:00:00"; jobName = unitName; }; - # Compute the array of configurations - configs = stdexp.buildConfigs { + + common = callPackage ./common.nix {}; + + inherit (common) getConfigs pipeline; + + configs = getConfigs { inherit varConf genConf; }; - exec = {nextStage, conf, ...}: stages.exec { - inherit nextStage; - argv = [ "-t" conf.timesteps "-p" conf.particles ]; - }; - - program = {nextStage, conf, ...}: with conf; bsc.garlic.apps.nbody.override { - inherit (conf) blocksize gitBranch; - }; - - pipeline = stdexp.stdPipeline ++ [ exec program ]; - in stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/nbody/nodes-or-sockets-mpi.nix b/garlic/exp/nbody/nodes-or-sockets-mpi.nix deleted file mode 100644 index 44c0c16..0000000 --- a/garlic/exp/nbody/nodes-or-sockets-mpi.nix +++ /dev/null @@ -1,72 +0,0 @@ -{ - stdenv -, stdexp -, bsc -, targetMachine -, stages -, garlicTools -, numactl -}: - -with stdenv.lib; -with garlicTools; - -let - # Initial variable configuration - varConf = with bsc; { - blocksize = [ 256 512 1024 ]; - gitBranch = [ "garlic/tampi+send+oss+task" ]; - attachToSocket = [ true false ]; - numactl = [ true false ]; - }; - - # Generate the complete configuration for each unit - genConf = c: targetMachine.config // rec { - hw = targetMachine.config.hw; - particles = 4 * 4096 * hw.cpusPerSocket; - timesteps = 10; - blocksize = c.blocksize; - gitBranch = c.gitBranch; - socketAtt = c.attachToSocket; - useNumact = c.numactl; - - expName = "nbody-granularity"; - attachName = if (socketAtt) then "PerSocket" else "PerNode"; - numaName = if (useNumact) then "True" else "False"; - unitName = expName + - "-${toString gitBranch}" + - "-bs${toString blocksize}" + - "-ranks${toString attachName}" + - "-useNuma${toString numaName}"; - - loops = 30; - - qos = "debug"; - ntasksPerNode = if (socketAtt) then 2 else 1; - nodes = 4; - time = "02:00:00"; - cpusPerTask = if (socketAtt) then hw.cpusPerSocket else 2*hw.cpusPerSocket; - jobName = unitName; - }; - - # Compute the array of configurations - configs = stdexp.buildConfigs { - inherit varConf genConf; - }; - - exec = {nextStage, conf, ...}: stages.exec ({ - inherit nextStage; - argv = [ "-t" conf.timesteps "-p" conf.particles ]; - } // optionalAttrs (conf.useNumact) { - program = "${numactl}/bin/numactl --interleave=all ${stageProgram nextStage}"; - }); - - program = {nextStage, conf, ...}: with conf; bsc.garlic.apps.nbody.override { - inherit (conf) blocksize gitBranch; - }; - - pipeline = stdexp.stdPipeline ++ [ exec program ]; - -in - - stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/nbody/numa.nix b/garlic/exp/nbody/numa.nix new file mode 100644 index 0000000..d4a3c28 --- /dev/null +++ b/garlic/exp/nbody/numa.nix @@ -0,0 +1,63 @@ +{ + stdenv +, stdexp +, bsc +, targetMachine +, stages +, garlicTools +, numactl +, callPackage +}: + +with stdenv.lib; +with garlicTools; + +let + # Initial variable configuration + varConf = { + blocksize = range2 256 1024; + gitBranch = [ "garlic/tampi+send+oss+task" ]; + attachToSocket = [ true false ]; + interleaveMem = [ true false ]; + }; + + # Generate the complete configuration for each unit + genConf = c: targetMachine.config // rec { + hw = targetMachine.config.hw; + particles = 4 * 1024 * hw.cpusPerSocket; + timesteps = 10; + + inherit (c) attachToSocket interleaveMem gitBranch blocksize; + + expName = "nbody-numa"; + unitName = expName + + "-${toString gitBranch}" + + "-bs.${toString blocksize}" + + "-tpn.${toString ntasksPerNode}" + + "-interleave.${if (interleaveMem) then "yes" else "no"}"; + + loops = 10; + + qos = "debug"; + cpusPerTask = if (attachToSocket) + then hw.cpusPerSocket + else hw.cpusPerNode; + ntasksPerNode = if (attachToSocket) + then hw.socketsPerNode + else 1; + nodes = 4; + time = "02:00:00"; + jobName = unitName; + }; + + common = callPackage ./common.nix {}; + + inherit (common) getConfigs pipeline; + + configs = getConfigs { + inherit varConf genConf; + }; + +in + + stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/nbody/ss.nix b/garlic/exp/nbody/ss.nix new file mode 100644 index 0000000..75ffa56 --- /dev/null +++ b/garlic/exp/nbody/ss.nix @@ -0,0 +1,58 @@ +{ + stdenv +, stdexp +, bsc +, targetMachine +, stages +, garlicTools +, callPackage +}: + +with stdenv.lib; +with garlicTools; + +let + # Initial variable configuration + varConf = { + blocksize = [ 128 ]; + nodes = range2 1 16; + gitBranch = [ +# "garlic/mpi+send+oss+task" +# "garlic/tampi+send+oss+task" + "garlic/tampi+isend+oss+task" + ]; + }; + + # Generate the complete configuration for each unit + genConf = c: targetMachine.config // rec { + hw = targetMachine.config.hw; + particles = 8 * 1024 * hw.cpusPerSocket; + timesteps = 10; + + inherit (c) blocksize nodes gitBranch; + + expName = "nbody-scaling"; + unitName = expName + + "-${toString gitBranch}" + + "-nodes${toString nodes}"; + + loops = 5; + + qos = "debug"; + ntasksPerNode = hw.socketsPerNode; + time = "02:00:00"; + cpusPerTask = hw.cpusPerSocket; + jobName = unitName; + }; + + common = callPackage ./common.nix {}; + + inherit (common) getConfigs pipeline; + + configs = getConfigs { + inherit varConf genConf; + }; + +in + + stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/nbody/strong-scaling-mpi.nix b/garlic/exp/nbody/strong-scaling-mpi.nix deleted file mode 100644 index 3ca7041..0000000 --- a/garlic/exp/nbody/strong-scaling-mpi.nix +++ /dev/null @@ -1,65 +0,0 @@ -{ - stdenv -, stdexp -, bsc -, targetMachine -, stages -, garlicTools -}: - -with stdenv.lib; -with garlicTools; - -let - # Initial variable configuration - varConf = with bsc; { - blocksize = [ 512 ]; - nodes = [ 1 2 4 8 16 ]; - gitBranch = [ - "garlic/mpi+send+oss+task" - "garlic/tampi+send+oss+task" - "garlic/tampi+isend+oss+task" - ]; - }; - - # Generate the complete configuration for each unit - genConf = c: targetMachine.config // rec { - hw = targetMachine.config.hw; - particles = 16 * 4096 * hw.cpusPerSocket; - timesteps = 10; - blocksize = c.blocksize; - numNodes = c.nodes; - gitBranch = c.gitBranch; - - expName = "nbody-scaling"; - unitName = expName + "-${toString gitBranch}" + "-nodes${toString numNodes}"; - - loops = 30; - - nodes = numNodes; - qos = "debug"; - ntasksPerNode = 2; - time = "02:00:00"; - cpusPerTask = hw.cpusPerSocket; - jobName = unitName; - }; - - # Compute the array of configurations - configs = stdexp.buildConfigs { - inherit varConf genConf; - }; - - exec = {nextStage, conf, ...}: stages.exec { - inherit nextStage; - argv = [ "-t" conf.timesteps "-p" conf.particles ]; - }; - - program = {nextStage, conf, ...}: with conf; bsc.garlic.apps.nbody.override { - inherit (conf) blocksize gitBranch; - }; - - pipeline = stdexp.stdPipeline ++ [ exec program ]; - -in - - stdexp.genExperiment { inherit configs pipeline; } From 5b4bb30e5541835de880f00a09beda5c162ee438 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 20 Apr 2021 17:16:17 +0200 Subject: [PATCH 690/987] nbody: update and simplify figures --- garlic/fig/index.nix | 4 +- garlic/fig/nbody/granularity.R | 47 ++------ garlic/fig/nbody/nodes-or-sockets.R | 168 --------------------------- garlic/fig/nbody/numa.R | 85 ++++++++++++++ garlic/fig/nbody/{scaling.R => ss.R} | 48 ++------ 5 files changed, 105 insertions(+), 247 deletions(-) delete mode 100644 garlic/fig/nbody/nodes-or-sockets.R create mode 100644 garlic/fig/nbody/numa.R rename garlic/fig/nbody/{scaling.R => ss.R} (52%) diff --git a/garlic/fig/index.nix b/garlic/fig/index.nix index 263a574..6f6ff4b 100644 --- a/garlic/fig/index.nix +++ b/garlic/fig/index.nix @@ -31,8 +31,8 @@ in { nbody = with exp.nbody; { granularity = stdPlot ./nbody/granularity.R [ granularity ]; - nodesorsockets = stdPlot ./nbody/nodes-or-sockets.R [ nodesorsockets ]; - scaling = stdPlot ./nbody/scaling.R [ scaling ]; + ss = stdPlot ./nbody/ss.R [ ss ]; + numa = stdPlot ./nbody/numa.R [ numa ]; }; hpcg = with exp.hpcg; { diff --git a/garlic/fig/nbody/granularity.R b/garlic/fig/nbody/granularity.R index 495f0e3..eb9c829 100644 --- a/garlic/fig/nbody/granularity.R +++ b/garlic/fig/nbody/granularity.R @@ -10,10 +10,11 @@ if (length(args)>0) { input_file = args[1] } else { input_file = "input" } df = jsonlite::stream_in(file(input_file), verbose=FALSE) %>% jsonlite::flatten() %>% - select(config.blocksize, config.gitBranch, unit, time) %>% - rename(blocksize=config.blocksize, branch=config.gitBranch) %>% + select(config.blocksize, config.gitBranch, config.particles, unit, time) %>% + rename(blocksize=config.blocksize, particles=config.particles, branch=config.gitBranch) %>% mutate(blocksize = as.factor(blocksize)) %>% + mutate(particles = as.factor(particles)) %>% mutate(branch = as.factor(branch)) %>% mutate(unit = as.factor(unit)) %>% @@ -27,22 +28,7 @@ df = jsonlite::stream_in(file(input_file), verbose=FALSE) %>% dpi = 300 h = 5 -w = 8 - -# --------------------------------------------------------------------- - -p = ggplot(df, aes(x=blocksize, y=median.time, color=branch)) + - geom_point() + - geom_line(aes(group=branch)) + - theme_bw() + - labs(x="Blocksize", y="Median time (s)", title="NBody Granularity: Median Time", - subtitle=input_file) + - theme(plot.subtitle=element_text(size=5)) + - theme(legend.position="bottom") + - theme(legend.text = element_text(size=7)) - -ggsave("median.time.png", plot=p, width=w, height=h, dpi=dpi) -ggsave("median.time.pdf", plot=p, width=w, height=h, dpi=dpi) +w = 5 # --------------------------------------------------------------------- @@ -53,7 +39,7 @@ p = ggplot(df, aes(x=blocksize, y=normalized.time, color=branch)) + theme_bw() + labs(x="Blocksize", y="Normalized Time", title="NBody Granularity: Normalized Time", subtitle=input_file) + - theme(plot.subtitle=element_text(size=5)) + + theme(plot.subtitle=element_text(size=8)) + theme(legend.position="bottom") + theme(legend.text = element_text(size=7)) @@ -62,31 +48,14 @@ ggsave("normalized.time.pdf", plot=p, width=w, height=h, dpi=dpi) # --------------------------------------------------------------------- -p = ggplot(df, aes(x=blocksize, y=time, color=branch)) + - geom_point(shape=21, size=3) + +p = ggplot(df, aes(x=blocksize, y=time)) + + geom_boxplot() + theme_bw() + labs(x="Blocksize", y="Time (s)", title="NBody Granularity: Time", subtitle=input_file) + - theme(plot.subtitle=element_text(size=5)) + + theme(plot.subtitle=element_text(size=8)) + theme(legend.position="bottom") + theme(legend.text = element_text(size=7)) ggsave("time.png", plot=p, width=w, height=h, dpi=dpi) ggsave("time.pdf", plot=p, width=w, height=h, dpi=dpi) - - -# --------------------------------------------------------------------- - -p = ggplot(df, aes(x=blocksize, y=branch, fill=median.time)) + - geom_raster() + - scale_fill_viridis(option="plasma") + - coord_fixed() + - theme_bw() + - labs(x="Blocksize", y="Branch", title="NBody Granularity: Time", - subtitle=input_file) + - theme(plot.subtitle=element_text(size=5)) + - theme(legend.position="bottom") + - theme(legend.text = element_text(size=7)) - -ggsave("time.heatmap.png", plot=p, width=w, height=h, dpi=dpi) -ggsave("time.heatmap.pdf", plot=p, width=w, height=h, dpi=dpi) diff --git a/garlic/fig/nbody/nodes-or-sockets.R b/garlic/fig/nbody/nodes-or-sockets.R deleted file mode 100644 index 21b6b3f..0000000 --- a/garlic/fig/nbody/nodes-or-sockets.R +++ /dev/null @@ -1,168 +0,0 @@ -library(ggplot2) -library(dplyr, warn.conflicts = FALSE) -library(scales) -library(jsonlite) -library(viridis, warn.conflicts = FALSE) - -# Load the arguments (argv) -args = commandArgs(trailingOnly=TRUE) -if (length(args)>0) { input_file = args[1] } else { input_file = "input" } - -dfNuma = jsonlite::stream_in(file(input_file), verbose=FALSE) %>% - jsonlite::flatten() %>% - select(config.blocksize, config.gitBranch, config.socketAtt, config.useNumact, unit, time) %>% - rename(blocksize=config.blocksize, branch=config.gitBranch, attachment=config.socketAtt, usenuma=config.useNumact) %>% - - mutate(blocksize = as.factor(blocksize)) %>% - mutate(branch = as.factor(branch)) %>% - mutate(attachment = as.factor(attachment)) %>% - mutate(usenuma = as.factor(usenuma)) %>% - mutate(unit = as.factor(unit)) %>% - - group_by(unit) %>% - - mutate(median.time = median(time)) %>% - mutate(normalized.time = time / median.time - 1) %>% - mutate(log.median.time = log(median.time)) %>% - - filter(usenuma == TRUE) %>% - - ungroup() - -dfNonuma = jsonlite::stream_in(file(input_file), verbose=FALSE) %>% - jsonlite::flatten() %>% - select(config.blocksize, config.gitBranch, config.socketAtt, config.useNumact, unit, time) %>% - rename(blocksize=config.blocksize, branch=config.gitBranch, attachment=config.socketAtt, usenuma=config.useNumact) %>% - - mutate(blocksize = as.factor(blocksize)) %>% - mutate(branch = as.factor(branch)) %>% - mutate(attachment = as.factor(attachment)) %>% - mutate(usenuma = as.factor(usenuma)) %>% - mutate(unit = as.factor(unit)) %>% - - group_by(unit) %>% - - mutate(median.time = median(time)) %>% - mutate(normalized.time = time / median.time - 1) %>% - mutate(log.median.time = log(median.time)) %>% - - filter(usenuma == FALSE) %>% - - ungroup() - -dpi = 300 -h = 5 -w = 8 - - -# --------------------------------------------------------------------- - -p = ggplot(dfNuma, aes(x=blocksize, y=median.time, color=attachment)) + - geom_point() + - geom_line(aes(group=attachment)) + - theme_bw() + - labs(x="Blocksize", y="Median time (s)", title="NBody Granularity (tampi+send+oss+task | numactl ON | 4 Nodes): Median Time", - subtitle=input_file, color="Rank Attachment") + - theme(plot.subtitle=element_text(size=5)) + - theme(legend.position="bottom") + - scale_color_manual(labels = c("RanksPerNode", "RanksPerSocket"), values=c("blue", "red")) - -ggsave("median-numactl.time.png", plot=p, width=w, height=h, dpi=dpi) -ggsave("median-numactl.time.pdf", plot=p, width=w, height=h, dpi=dpi) - -p = ggplot(dfNonuma, aes(x=blocksize, y=median.time, color=attachment)) + - geom_point() + - geom_line(aes(group=attachment)) + - theme_bw() + - labs(x="Blocksize", y="Median time (s)", title="NBody Granularity (tampi+send+oss+task | numactl OFF | 4 Nodes): Median Time", - subtitle=input_file, color="Rank Attachment") + - theme(plot.subtitle=element_text(size=5)) + - theme(legend.position="bottom") + - scale_color_manual(labels = c("RanksPerNode", "RanksPerSocket"), values=c("blue", "red")) - -ggsave("median.time.png", plot=p, width=w, height=h, dpi=dpi) -ggsave("median.time.pdf", plot=p, width=w, height=h, dpi=dpi) -# --------------------------------------------------------------------- - -p = ggplot(dfNuma, aes(x=blocksize, y=normalized.time, color=attachment)) + - geom_boxplot() + - geom_hline(yintercept=c(-0.01, 0.01), linetype="dashed", color="red") + - facet_wrap(~ attachment) + - theme_bw() + - labs(x="Blocksize", y="Normalized Time", title="NBody Granularity (tampi+send+oss+task | numactl ON | 4 Nodes): Normalized Time", - subtitle=input_file, color="Rank Attachment") + - theme(plot.subtitle=element_text(size=5)) + - theme(legend.position="bottom") + - scale_color_manual(labels = c("RanksPerNode", "RanksPerSocket"), values=c("blue", "red")) - -ggsave("normalized-numactl.time.png", plot=p, width=w, height=h, dpi=dpi) -ggsave("normalized-numactl.time.pdf", plot=p, width=w, height=h, dpi=dpi) - -p = ggplot(dfNonuma, aes(x=blocksize, y=normalized.time, color=attachment)) + - geom_boxplot() + - geom_hline(yintercept=c(-0.01, 0.01), linetype="dashed", color="red") + - facet_wrap(~ attachment) + - theme_bw() + - labs(x="Blocksize", y="Normalized Time", title="NBody Granularity (tampi+send+oss+task | 4 Nodes): Normalized Time", - subtitle=input_file, color="Rank Attachment") + - theme(plot.subtitle=element_text(size=5)) + - theme(legend.position="bottom") + - scale_color_manual(labels = c("RanksPerNode", "RanksPerSocket"), values=c("blue", "red")) - -ggsave("normalized.time.png", plot=p, width=w, height=h, dpi=dpi) -ggsave("normalized.time.pdf", plot=p, width=w, height=h, dpi=dpi) -# --------------------------------------------------------------------- - -p = ggplot(dfNuma, aes(x=blocksize, y=time, color=attachment)) + - geom_point(shape=21, size=3) + - theme_bw() + - labs(x="Blocksize", y="Time (s)", title="NBody Granularity (tampi+send+oss+task | numactl ON | 4 Nodes): Time", - subtitle=input_file, color="Rank Attachment") + - theme(plot.subtitle=element_text(size=5)) + - theme(legend.position="bottom") + - scale_color_manual(labels = c("RanksPerNode", "RanksPerSocket"), values=c("blue", "red")) - -ggsave("time-numactl.png", plot=p, width=w, height=h, dpi=dpi) -ggsave("time-numactl.pdf", plot=p, width=w, height=h, dpi=dpi) - -p = ggplot(dfNonuma, aes(x=blocksize, y=time, color=attachment)) + - geom_point(shape=21, size=3) + - theme_bw() + - labs(x="Blocksize", y="Time (s)", title="NBody Granularity (tampi+send+oss+task | 4 Nodes): Time", - subtitle=input_file, color="Rank Attachment") + - theme(plot.subtitle=element_text(size=5)) + - theme(legend.position="bottom") + - scale_color_manual(labels = c("RanksPerNode", "RanksPerSocket"), values=c("blue", "red")) - - -ggsave("time.png", plot=p, width=w, height=h, dpi=dpi) -ggsave("time.pdf", plot=p, width=w, height=h, dpi=dpi) -# --------------------------------------------------------------------- - -p = ggplot(dfNuma, aes(x=blocksize, y=attachment, fill=median.time)) + - geom_raster() + - scale_fill_viridis(option="plasma") + - coord_fixed() + - theme_bw() + - labs(x="Blocksize", y="Attachment", title="NBody Granularity (tampi+send+oss+task | numactl ON | 4 Nodes): Time", - subtitle=input_file, color = "Rank Attachment") + - theme(plot.subtitle=element_text(size=5)) + - theme(legend.position="bottom") + - scale_color_manual(labels = c("RanksPerNode", "RanksPerSocket"), values=c("blue", "red")) - -ggsave("time-numactl.heatmap.png", plot=p, width=w, height=h, dpi=dpi) -ggsave("time-numactl.heatmap.pdf", plot=p, width=w, height=h, dpi=dpi) - -p = ggplot(dfNonuma, aes(x=blocksize, y=attachment, fill=median.time)) + - geom_raster() + - scale_fill_viridis(option="plasma") + - coord_fixed() + - theme_bw() + - labs(x="Blocksize", y="Attachment", title="NBody Granularity (tampi+send+oss+task | 4 Nodes): Time", - subtitle=input_file, color = "Rank Attachment") + - theme(plot.subtitle=element_text(size=5)) + - theme(legend.position="bottom") + - scale_color_manual(labels = c("RanksPerNode", "RanksPerSocket"), values=c("blue", "red")) - -ggsave("time.heatmap.png", plot=p, width=w, height=h, dpi=dpi) -ggsave("time.heatmap.pdf", plot=p, width=w, height=h, dpi=dpi) diff --git a/garlic/fig/nbody/numa.R b/garlic/fig/nbody/numa.R new file mode 100644 index 0000000..a76eb12 --- /dev/null +++ b/garlic/fig/nbody/numa.R @@ -0,0 +1,85 @@ +library(ggplot2) +library(dplyr, warn.conflicts = FALSE) +library(scales) +library(jsonlite) +library(viridis, warn.conflicts = FALSE) +library(stringr) + +# Load the arguments (argv) +args = commandArgs(trailingOnly=TRUE) +if (length(args)>0) { input_file = args[1] } else { input_file = "input" } + +df = jsonlite::stream_in(file(input_file), verbose=FALSE) %>% + jsonlite::flatten() %>% + select(unit, + config.blocksize, + config.gitBranch, + config.attachToSocket, + config.interleaveMem, + config.nodes, + unit, + time) %>% + + rename(blocksize=config.blocksize, + gitBranch=config.gitBranch, + nodes=config.nodes, + attachToSocket=config.attachToSocket, + interleaveMem=config.interleaveMem) %>% + + # Remove the "garlic/" prefix from the gitBranch + mutate(branch = str_replace(gitBranch, "garlic/", "")) %>% + + mutate(blocksize = as.factor(blocksize)) %>% + mutate(branch = as.factor(branch)) %>% + mutate(attachToSocket = as.factor(attachToSocket)) %>% + mutate(interleaveMem = as.factor(interleaveMem)) %>% + mutate(unit = as.factor(unit)) %>% + + group_by(unit) %>% + + mutate(median.time = median(time)) %>% + mutate(normalized.time = time / median.time - 1) %>% + mutate(log.median.time = log(median.time)) %>% + + ungroup() + +branch = unique(df$branch) +nodes = unique(df$nodes) + +dpi = 300 +h = 5 +w = 8 + +# --------------------------------------------------------------------- + +p = ggplot(df, aes(x=blocksize, y=normalized.time, color=interleaveMem)) + + geom_boxplot() + + geom_hline(yintercept=c(-0.01, 0.01), linetype="dashed", color="red") + + theme_bw() + + facet_wrap(~ attachToSocket, labeller=label_both) + + labs(x="Blocksize", y="Normalized time", + title=sprintf("NBody NUMA (%s | %d Nodes): Normalized time", + branch, nodes), + subtitle=input_file) + + theme(plot.subtitle=element_text(size=8)) + + theme(legend.position="bottom") + +ggsave("normalized.time.png", plot=p, width=w, height=h, dpi=dpi) +ggsave("normalized.time.pdf", plot=p, width=w, height=h, dpi=dpi) + +# --------------------------------------------------------------------- + +p = ggplot(df, aes(x=blocksize, y=time, color=interleaveMem)) + + geom_boxplot() + + geom_line(aes(y=median.time)) + + theme_bw() + + facet_wrap(~ attachToSocket, labeller=label_both) + + labs(x="Blocksize", y="Time (s)", + title=sprintf("NBody NUMA (%s | %d Nodes): Time", + branch, nodes), + subtitle=input_file) + + theme(plot.subtitle=element_text(size=8)) + + theme(legend.position="bottom") + +ggsave("time.png", plot=p, width=w, height=h, dpi=dpi) +ggsave("time.pdf", plot=p, width=w, height=h, dpi=dpi) diff --git a/garlic/fig/nbody/scaling.R b/garlic/fig/nbody/ss.R similarity index 52% rename from garlic/fig/nbody/scaling.R rename to garlic/fig/nbody/ss.R index 60a9e4a..041cd82 100644 --- a/garlic/fig/nbody/scaling.R +++ b/garlic/fig/nbody/ss.R @@ -10,8 +10,10 @@ if (length(args)>0) { input_file = args[1] } else { input_file = "input" } df = jsonlite::stream_in(file(input_file), verbose=FALSE) %>% jsonlite::flatten() %>% - select(config.blocksize, config.gitBranch, config.numNodes, unit, time) %>% - rename(nodes = config.numNodes, blocksize=config.blocksize, branch=config.gitBranch) %>% + select(config.blocksize, config.gitBranch, config.nodes, unit, time) %>% + rename(nodes = config.nodes, blocksize=config.blocksize, branch=config.gitBranch) %>% + + mutate(time.nodes = time * nodes) %>% mutate(blocksize = as.factor(blocksize)) %>% mutate(nodes = as.factor(nodes)) %>% @@ -21,6 +23,7 @@ df = jsonlite::stream_in(file(input_file), verbose=FALSE) %>% group_by(unit) %>% mutate(median.time = median(time)) %>% + mutate(median.time.nodes = median(time.nodes)) %>% mutate(normalized.time = time / median.time - 1) %>% mutate(log.median.time = log(median.time)) %>% @@ -32,21 +35,6 @@ w = 8 # --------------------------------------------------------------------- -p = ggplot(df, aes(x=nodes, y=median.time, color=branch)) + - geom_point() + - geom_line(aes(group=branch)) + - theme_bw() + - labs(x="Nodes", y="Median time (s)", title="NBody Scaling: Median Time", - subtitle=input_file) + - theme(plot.subtitle=element_text(size=5)) + - theme(legend.position="bottom") + - theme(legend.text = element_text(size=7)) - -ggsave("median.time.png", plot=p, width=w, height=h, dpi=dpi) -ggsave("median.time.pdf", plot=p, width=w, height=h, dpi=dpi) - -# --------------------------------------------------------------------- - p = ggplot(df, aes(x=nodes, y=normalized.time, color=branch)) + geom_boxplot() + geom_hline(yintercept=c(-0.01, 0.01), linetype="dashed", color="red") + @@ -63,31 +51,15 @@ ggsave("normalized.time.pdf", plot=p, width=w, height=h, dpi=dpi) # --------------------------------------------------------------------- -p = ggplot(df, aes(x=nodes, y=time, color=branch)) + +p = ggplot(df, aes(x=nodes, y=time.nodes, color=branch)) + geom_point(shape=21, size=3) + + geom_line(aes(y=median.time.nodes, group=branch)) + theme_bw() + - labs(x="Nodes", y="Time (s)", title="NBody Scaling: Time", + labs(x="Nodes", y="Time * nodes (s)", title="NBody Scaling: Time * nodes", subtitle=input_file) + theme(plot.subtitle=element_text(size=5)) + theme(legend.position="bottom") + theme(legend.text = element_text(size=7)) -ggsave("time.png", plot=p, width=w, height=h, dpi=dpi) -ggsave("time.pdf", plot=p, width=w, height=h, dpi=dpi) - - -# --------------------------------------------------------------------- - -p = ggplot(df, aes(x=nodes, y=branch, fill=median.time)) + - geom_raster() + - scale_fill_viridis(option="plasma") + - coord_fixed() + - theme_bw() + - labs(x="Nodes", y="Branch", title="NBody Scaling: Time", - subtitle=input_file) + - theme(plot.subtitle=element_text(size=5)) + - theme(legend.position="bottom") + - theme(legend.text = element_text(size=7)) - -ggsave("time.heatmap.png", plot=p, width=w, height=h, dpi=dpi) -ggsave("time.heatmap.pdf", plot=p, width=w, height=h, dpi=dpi) +ggsave("time.nodes.png", plot=p, width=w, height=h, dpi=dpi) +ggsave("time.nodes.pdf", plot=p, width=w, height=h, dpi=dpi) From a4752603e999f0f692470fa81282433d68d36ad7 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 19 Apr 2021 17:44:08 +0200 Subject: [PATCH 691/987] cn6: pin commit --- bsc/cn6/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/bsc/cn6/default.nix b/bsc/cn6/default.nix index 941e4e1..7263c1a 100644 --- a/bsc/cn6/default.nix +++ b/bsc/cn6/default.nix @@ -18,6 +18,7 @@ stdenv.mkDerivation rec { src = builtins.fetchGit { url = "ssh://git@bscpm03.bsc.es/rarias/cn6.git"; ref = "master"; + rev = "c72c3b66b720c2a33950f536fc819051c8f20a69"; }; makeFlags = [ "PREFIX=$(out)" ]; From 600e1b99879d9eb266a639c9bafffa2aaeaf67ba Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 31 Mar 2021 16:38:09 +0200 Subject: [PATCH 692/987] tools: add helper function to find the git commit --- garlic/tools.nix | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/garlic/tools.nix b/garlic/tools.nix index db9c2a7..666f12e 100644 --- a/garlic/tools.nix +++ b/garlic/tools.nix @@ -85,6 +85,11 @@ let in toInt front; + # Returns the given gitCommit if not null, or the one stored in the + # gitTable for the branch gitBranch. + findCommit = {gitCommit ? null, gitTable, gitBranch}: + if (gitCommit != null) then gitCommit else gitTable."${gitBranch}"; + }; in gen From 2aa099f0e2c3f6932b69c492f8691e17eb552397 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 31 Mar 2021 16:38:58 +0200 Subject: [PATCH 693/987] sh: add script to build the gitTable --- garlic/sh/default.nix | 1 + garlic/sh/garlic-git-table | 25 +++++++++++++++++++++++++ 2 files changed, 26 insertions(+) create mode 100755 garlic/sh/garlic-git-table diff --git a/garlic/sh/default.nix b/garlic/sh/default.nix index 0a5189d..8d5c6f9 100644 --- a/garlic/sh/default.nix +++ b/garlic/sh/default.nix @@ -34,5 +34,6 @@ in chmod +x $out/bin/garlic mkdir -p $out/share/man/man1 cp garlic.1 $out/share/man/man1 + cp garlic-git-table $out/bin ''; } diff --git a/garlic/sh/garlic-git-table b/garlic/sh/garlic-git-table new file mode 100755 index 0000000..8d33e7b --- /dev/null +++ b/garlic/sh/garlic-git-table @@ -0,0 +1,25 @@ +#!/bin/sh + +progname="$(basename $0)" + +if [ -z "$1" ]; then + cat >&2 < + +Finds all garlic/* branches and their current commit of the given +repository and builds the gitTable to be used in nix derivations. + +Example: + garlic-git-table ssh://git@bscpm03.bsc.es/garlic/apps/heat.git +EOF + exit 1 +fi + +echo 'gitTable = {' +echo " # Auto-generated with $progname on $(date --rfc-3339=date)" +git ls-remote $1 'garlic/*' |\ + sed 's@refs/heads/@@' |\ + awk '{printf "\"%s\" = \"%s\";\n", $2, $1}' |\ + column -t -o ' ' |\ + sed 's/^/ /' +echo '};' From 375a79d27a5696b04655cc29db6e5ff61607ed9a Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 31 Mar 2021 16:41:32 +0200 Subject: [PATCH 694/987] heat: pin commits using gitTable --- garlic/apps/heat/default.nix | 62 ++++++++++++++++++++++++------------ 1 file changed, 41 insertions(+), 21 deletions(-) diff --git a/garlic/apps/heat/default.nix b/garlic/apps/heat/default.nix index 6e92218..fe5ea17 100644 --- a/garlic/apps/heat/default.nix +++ b/garlic/apps/heat/default.nix @@ -3,33 +3,53 @@ , mpi , tampi , mcxx -, gitBranch ? "master" +, gitBranch ? "garlic/mpi+send+seq" +, gitCommit ? null +, garlicTools }: -stdenv.mkDerivation rec { - name = "heat"; - - src = builtins.fetchGit { - url = "ssh://git@bscpm03.bsc.es/garlic/apps/heat.git"; - ref = gitBranch; +let + gitTable = { + # Auto-generated with garlic-git-table on 2021-03-31 + "garlic/mpi+send+oss+task" = "947c80070d4c53e441df54b8bfac8928b10c5fb2"; + "garlic/mpi+send+seq" = "f41e1433808d0cbecd88a869b451c927747e5d42"; + "garlic/tampi+isend+oss+task" = "b1273f9b4db32ba6e15e3d41343e67407ce2f54f"; + "garlic/tampi+send+oss+task" = "554bec249f9aa23dd92edcfa2ada1e03e05e121d"; }; - patches = [ ./print-times.patch ]; + # Find the actual commit + _gitCommit = garlicTools.findCommit { + inherit gitCommit gitTable gitBranch; + }; + _gitBranch = gitBranch; - buildInputs = [ - mpi - mcxx - tampi - ]; +in - programPath = "/bin/${name}"; + stdenv.mkDerivation rec { - installPhase = '' - mkdir -p $out/bin - cp ${name} $out/bin/ + name = "heat"; - mkdir -p $out/etc - cp heat.conf $out/etc/ - ''; + src = builtins.fetchGit { + url = "ssh://git@bscpm03.bsc.es/garlic/apps/heat.git"; + ref = _gitBranch; + rev = _gitCommit; + }; -} + gitBranch = _gitBranch; + gitCommit = _gitCommit; + + patches = [ ./print-times.patch ]; + + buildInputs = [ mpi mcxx tampi ]; + + programPath = "/bin/${name}"; + + installPhase = '' + mkdir -p $out/bin + cp ${name} $out/bin/ + + mkdir -p $out/etc + cp heat.conf $out/etc/ + ''; + + } From dbdcfea01904fed21381f4d8546caaa1cb688bfe Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 1 Apr 2021 17:45:37 +0200 Subject: [PATCH 695/987] tools: add fetchGarlicApp helper Allows easy migration of the git server for all the apps and reduces the boiler plate in the derivations. --- garlic/tools.nix | 48 ++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 46 insertions(+), 2 deletions(-) diff --git a/garlic/tools.nix b/garlic/tools.nix index 666f12e..8d81213 100644 --- a/garlic/tools.nix +++ b/garlic/tools.nix @@ -87,9 +87,53 @@ let # Returns the given gitCommit if not null, or the one stored in the # gitTable for the branch gitBranch. - findCommit = {gitCommit ? null, gitTable, gitBranch}: - if (gitCommit != null) then gitCommit else gitTable."${gitBranch}"; + findCommit = {gitCommit ? null, gitTable ? null, gitBranch}: + assert (gitCommit == null) -> (gitTable != null); + assert (gitTable == null) -> (gitCommit != null); + if (gitCommit != null) then gitCommit + else + assert (assertMsg (gitTable ? "${gitBranch}") + '' + The git branch "${gitBranch}" was not found in the gitTable. + Is the gitTable outdated? + ''); + gitTable."${gitBranch}"; + # Custom wrapper around fetchGit to be able to quickly specify apps + # and change the repository source for all at once. Returns an + # attributte set with the `src` as well as the selected gitCommit, + # gitBranch and gitURL. + fetchGarlicApp = { + gitBranch, + appName ? null, + gitURL ? null, + gitCommit ? null, + gitTable ? null + }: + assert (appName == null) -> (gitURL != null); + assert (gitURL == null) -> (appName != null); + let + _gitURL = if (gitURL != null) then gitURL + else "ssh://git@bscpm03.bsc.es/garlic/apps/${appName}.git"; + _gitCommit = findCommit { + inherit gitCommit gitTable gitBranch; + }; + _gitBranch = gitBranch; + in + { + src = builtins.fetchGit { + url = _gitURL; + ref = _gitBranch; + rev = _gitCommit; + }; + gitBranch = _gitBranch; + gitCommit = _gitCommit; + + # The gitURL is not stored in the derivation, as we dont really + # care of where the source comes from, as long as is the same + # commit. + gitURL = _gitURL; + }; }; in gen From d2222f686813b8990b34ff040efb99eb5eb2b78a Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 1 Apr 2021 17:48:10 +0200 Subject: [PATCH 696/987] sh: Format the git table in a single attribute set --- garlic/sh/garlic-git-table | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/garlic/sh/garlic-git-table b/garlic/sh/garlic-git-table index 8d33e7b..58f4049 100755 --- a/garlic/sh/garlic-git-table +++ b/garlic/sh/garlic-git-table @@ -15,11 +15,13 @@ EOF exit 1 fi -echo 'gitTable = {' -echo " # Auto-generated with $progname on $(date --rfc-3339=date)" +echo '{' +echo " # Auto-generated with $progname on $(date --rfc-3339=date) for repo:" +echo " # $1" +echo git ls-remote $1 'garlic/*' |\ sed 's@refs/heads/@@' |\ awk '{printf "\"%s\" = \"%s\";\n", $2, $1}' |\ column -t -o ' ' |\ sed 's/^/ /' -echo '};' +echo '}' From 53c098d9219a1845caf5c6d5d7d65053adb260fd Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 1 Apr 2021 18:07:13 +0200 Subject: [PATCH 697/987] heat: split the git table and use fetchGarlicApp --- garlic/apps/heat/default.nix | 28 +++++----------------------- garlic/apps/heat/git-table.nix | 9 +++++++++ 2 files changed, 14 insertions(+), 23 deletions(-) create mode 100644 garlic/apps/heat/git-table.nix diff --git a/garlic/apps/heat/default.nix b/garlic/apps/heat/default.nix index fe5ea17..e922322 100644 --- a/garlic/apps/heat/default.nix +++ b/garlic/apps/heat/default.nix @@ -9,34 +9,17 @@ }: let - gitTable = { - # Auto-generated with garlic-git-table on 2021-03-31 - "garlic/mpi+send+oss+task" = "947c80070d4c53e441df54b8bfac8928b10c5fb2"; - "garlic/mpi+send+seq" = "f41e1433808d0cbecd88a869b451c927747e5d42"; - "garlic/tampi+isend+oss+task" = "b1273f9b4db32ba6e15e3d41343e67407ce2f54f"; - "garlic/tampi+send+oss+task" = "554bec249f9aa23dd92edcfa2ada1e03e05e121d"; + gitSource = garlicTools.fetchGarlicApp { + appName = "heat"; + inherit gitCommit gitBranch; + gitTable = import ./git-table.nix; }; - - # Find the actual commit - _gitCommit = garlicTools.findCommit { - inherit gitCommit gitTable gitBranch; - }; - _gitBranch = gitBranch; - in - stdenv.mkDerivation rec { name = "heat"; - src = builtins.fetchGit { - url = "ssh://git@bscpm03.bsc.es/garlic/apps/heat.git"; - ref = _gitBranch; - rev = _gitCommit; - }; - - gitBranch = _gitBranch; - gitCommit = _gitCommit; + inherit (gitSource) src gitBranch gitCommit; patches = [ ./print-times.patch ]; @@ -51,5 +34,4 @@ in mkdir -p $out/etc cp heat.conf $out/etc/ ''; - } diff --git a/garlic/apps/heat/git-table.nix b/garlic/apps/heat/git-table.nix new file mode 100644 index 0000000..c7670ac --- /dev/null +++ b/garlic/apps/heat/git-table.nix @@ -0,0 +1,9 @@ +{ + # Auto-generated with garlic-git-table on 2021-04-01 for repo: + # ssh://git@bscpm03.bsc.es/garlic/apps/heat.git + + "garlic/mpi+send+oss+task" = "947c80070d4c53e441df54b8bfac8928b10c5fb2"; + "garlic/mpi+send+seq" = "f41e1433808d0cbecd88a869b451c927747e5d42"; + "garlic/tampi+isend+oss+task" = "b1273f9b4db32ba6e15e3d41343e67407ce2f54f"; + "garlic/tampi+send+oss+task" = "554bec249f9aa23dd92edcfa2ada1e03e05e121d"; +} From 20e99f122fca90344a29f2183932017854adbc45 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 19 Apr 2021 13:17:24 +0200 Subject: [PATCH 698/987] creams: use gitTable for all branches --- garlic/apps/creams/default.nix | 70 ++++++++++++++------------------ garlic/apps/creams/git-table.nix | 12 ++++++ garlic/apps/creams/input.nix | 47 +++++++++++---------- garlic/apps/index.nix | 5 +-- 4 files changed, 69 insertions(+), 65 deletions(-) create mode 100644 garlic/apps/creams/git-table.nix diff --git a/garlic/apps/creams/default.nix b/garlic/apps/creams/default.nix index a37bf02..cdcc14e 100644 --- a/garlic/apps/creams/default.nix +++ b/garlic/apps/creams/default.nix @@ -9,59 +9,49 @@ , gnuDef , intelDef , cc -, gitBranch +, gitBranch ? "garlic/mpi+send+seq" +, gitCommit ? null +, garlicTools }: assert (mpi == impi || mpi == openmpi); let - mpiName = (if mpi == openmpi then - "OpenMPI" - else - "IntelMPI"); + # FIXME: We should find a better way to specify the MPI implementation + # and the compiler. + mpiName = if mpi == openmpi then "OpenMPI" else "IntelMPI"; + compName = if cc == intelDef then "Intel" else "GNU"; - compName = (if cc == intelDef then - "Intel" - else - "GNU"); - -in -stdenv.mkDerivation rec { - name = "creams"; - - # src = /home/Computational/pmartin1/creams-simplified; - src = builtins.fetchGit { - url = "ssh://git@bscpm03.bsc.es/pmartin1/creams-simplified.git"; - ref = "${gitBranch}"; + gitSource = garlicTools.fetchGarlicApp { + appName = "creams"; + inherit gitCommit gitBranch; + gitTable = import ./git-table.nix; }; +in + stdenv.mkDerivation rec { + name = "creams"; - programPath = "/bin/creams.exe"; + inherit (gitSource) src gitBranch gitCommit; - buildInputs = [ - nanos6 - mpi - cc - tampi - mcxx - ]; + programPath = "/bin/creams.exe"; - hardeningDisable = [ "all" ]; + buildInputs = [ nanos6 mpi cc tampi mcxx ]; - configurePhase = '' - export TAMPI_HOME=${tampi} + hardeningDisable = [ "all" ]; - . etc/bashrc + configurePhase = '' + export TAMPI_HOME=${tampi} - export FORTRAN_COMPILER=${compName} - export MPI_LIB=${mpiName} + . etc/bashrc - echo + export FORTRAN_COMPILER=${compName} + export MPI_LIB=${mpiName} - CREAMS_UPDATE_ENVIRONMENT - ''; + CREAMS_UPDATE_ENVIRONMENT + ''; - installPhase = '' - mkdir -p $out/bin - cp -a build/* $out/bin - ''; -} + installPhase = '' + mkdir -p $out/bin + cp -a build/* $out/bin + ''; + } diff --git a/garlic/apps/creams/git-table.nix b/garlic/apps/creams/git-table.nix new file mode 100644 index 0000000..9600240 --- /dev/null +++ b/garlic/apps/creams/git-table.nix @@ -0,0 +1,12 @@ +{ + # Auto-generated with garlic-git-table on 2021-03-31 for repo: + # ssh://git@bscpm03.bsc.es/pmartin1/creams-simplified.git + + "garlic/mpi+isend+omp+task" = "e6aa540820ee12d3d45d0eef8e7eeb2f0f1daea2"; + "garlic/mpi+isend+oss+task" = "016f33b8bec996a4546e8f08b1b6b1709f00499b"; + "garlic/mpi+send+omp+fork" = "e56e059264ad1bfe5e0c96a8b9303d21dd7fa20a"; + "garlic/mpi+send+omp+task" = "919580213de34bc5b6ba60c768c5dde5e501a1f6"; + "garlic/mpi+send+oss+task" = "adab8b66f27317d51445648302e7b133edf4837d"; + "garlic/mpi+send+seq" = "956125f9334493d31ceee3fa7024efa65bee9ca5"; + "garlic/tampi+isend+oss+task" = "14a121627679a251909d4b8103d260e27eac1d29"; +} diff --git a/garlic/apps/creams/input.nix b/garlic/apps/creams/input.nix index 60d0801..8febb5b 100644 --- a/garlic/apps/creams/input.nix +++ b/garlic/apps/creams/input.nix @@ -2,30 +2,35 @@ stdenv , granul ? 0 , nprocz ? 0 -, gitBranch +, gitBranch ? "garlic/mpi+send+seq" +, gitCommit ? null +, garlicTools }: -stdenv.mkDerivation rec { - name = "creams-input"; - - # src = /home/Computational/pmartin1/creams-simplified; - src = builtins.fetchGit { - url = "ssh://git@bscpm03.bsc.es/pmartin1/creams-simplified.git"; - ref = "${gitBranch}"; +let + gitSource = garlicTools.fetchGarlicApp { + appName = "creams"; + inherit gitCommit gitBranch; + gitTable = import ./git-table.nix; }; +in + stdenv.mkDerivation rec { + name = "creams-input"; - phases = [ "unpackPhase" "patchPhase" "installPhase" ]; + inherit (gitSource) src gitBranch gitCommit; - patchPhase = '' - patchShebangs SodTubeBenchmark/gridScript.sh - ''; - - installPhase = '' - pushd SodTubeBenchmark - ./gridScript.sh 0 0 ${toString nprocz} ${toString granul} - popd + phases = [ "unpackPhase" "patchPhase" "installPhase" ]; - mkdir -p $out - cp -a SodTubeBenchmark $out/ - ''; -} + patchPhase = '' + patchShebangs SodTubeBenchmark/gridScript.sh + ''; + + installPhase = '' + pushd SodTubeBenchmark + ./gridScript.sh 0 0 ${toString nprocz} ${toString granul} + popd + + mkdir -p $out + cp -a SodTubeBenchmark $out/ + ''; + } diff --git a/garlic/apps/index.nix b/garlic/apps/index.nix index c9e32b8..ec54cd3 100644 --- a/garlic/apps/index.nix +++ b/garlic/apps/index.nix @@ -20,12 +20,9 @@ creams = callPackage ./creams/default.nix { gnuDef = self.gfortran10 ; # Default GNU compiler version intelDef = bsc.icc ; # Default Intel compiler version - gitBranch = "garlic/mpi+send+seq"; }; - creamsInput = callPackage ./creams/input.nix { - gitBranch = "garlic/mpi+send+seq"; - }; + creamsInput = callPackage ./creams/input.nix { }; hpcg = callPackage ./hpcg/default.nix { gitBranch = "garlic/tampi+isend+oss+task"; From 9377adf787bb4dda2fdff9fc4eba7ade07e17008 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 19 Apr 2021 13:32:43 +0200 Subject: [PATCH 699/987] fwi: add gitTable --- garlic/apps/fwi/default.nix | 97 ++++++++++++++++++----------------- garlic/apps/fwi/git-table.nix | 15 ++++++ 2 files changed, 66 insertions(+), 46 deletions(-) create mode 100644 garlic/apps/fwi/git-table.nix diff --git a/garlic/apps/fwi/default.nix b/garlic/apps/fwi/default.nix index ef31127..f58a2af 100644 --- a/garlic/apps/fwi/default.nix +++ b/garlic/apps/fwi/default.nix @@ -5,65 +5,70 @@ , mcxx ? null , cc , gitBranch ? "garlic/tampi+send+oss+task" +, gitCommit ? null , fwiParams +, garlicTools }: with stdenv.lib; assert !(tampi != null && mcxx == null); -stdenv.mkDerivation rec { - inherit gitBranch; - name = "fwi"; - - src = builtins.fetchGit { - url = "ssh://git@bscpm03.bsc.es/garlic/apps/fwi.git"; - ref = "${gitBranch}"; +let + gitSource = garlicTools.fetchGarlicApp { + appName = "fwi"; + inherit gitCommit gitBranch; + gitTable = import ./git-table.nix; }; +in + stdenv.mkDerivation rec { + name = "fwi"; - enableParallelBuilding = false; + inherit (gitSource) src gitBranch gitCommit; - buildInputs = [ - cc - ] - ++ optional (mpi != null) mpi - ++ optional (tampi != null) tampi - ++ optional (mcxx != null) mcxx; + enableParallelBuilding = false; - # FIXME: Correct this on the Makefile so we can just type "make fwi" - # FIXME: Allow multiple MPI implementations - postPatch = '' - sed -i 's/= OPENMPI$/= INTEL/g' Makefile - sed -i 's/USE_O_DIRECT ?= NO/USE_O_DIRECT ?= YES/g' Makefile || true - ''; + buildInputs = [ + cc + ] + ++ optional (mpi != null) mpi + ++ optional (tampi != null) tampi + ++ optional (mcxx != null) mcxx; - # FIXME: This is an ugly hack. - # When using _GNU_SOURCE or any other definition used in features.h, we need - # to define them before mcc includes nanos6.h from the command line. So the - # only chance is by setting it at the command line with -D. Using the DEFINES - # below, reaches the command line of the preprocessing stage with gcc. - preConfigure = '' - export DEFINES=-D_GNU_SOURCE + # FIXME: Correct this on the Makefile so we can just type "make fwi" + # FIXME: Allow multiple MPI implementations + postPatch = '' + sed -i 's/= OPENMPI$/= INTEL/g' Makefile + sed -i 's/USE_O_DIRECT ?= NO/USE_O_DIRECT ?= YES/g' Makefile || true + ''; - make depend + # FIXME: This is an ugly hack. + # When using _GNU_SOURCE or any other definition used in features.h, we need + # to define them before mcc includes nanos6.h from the command line. So the + # only chance is by setting it at the command line with -D. Using the DEFINES + # below, reaches the command line of the preprocessing stage with gcc. + preConfigure = '' + export DEFINES=-D_GNU_SOURCE - cp ${fwiParams}/generated_model_params.h src/ - ''; - - # We compile the ModelGenerator using gcc *only*, as otherwise it will - # be compiled with nanos6, which requires access to /sys to determine - # hardware capabilities. So it will fail in the nix-build environment, - # as there is no /sys mounted. - makeFlags = [ - #"COMPILER=GNU" - #"CC=${cc.cc.CC}" - "fwi" - ]; + make depend - installPhase = '' - mkdir -p $out/bin - cp fwi $out/bin - ''; + cp ${fwiParams}/generated_model_params.h src/ + ''; - programPath = "/bin/fwi"; -} + # We compile the ModelGenerator using gcc *only*, as otherwise it will + # be compiled with nanos6, which requires access to /sys to determine + # hardware capabilities. So it will fail in the nix-build environment, + # as there is no /sys mounted. + makeFlags = [ + #"COMPILER=GNU" + #"CC=${cc.cc.CC}" + "fwi" + ]; + + installPhase = '' + mkdir -p $out/bin + cp fwi $out/bin + ''; + + programPath = "/bin/fwi"; + } diff --git a/garlic/apps/fwi/git-table.nix b/garlic/apps/fwi/git-table.nix new file mode 100644 index 0000000..c20adff --- /dev/null +++ b/garlic/apps/fwi/git-table.nix @@ -0,0 +1,15 @@ +{ + # Auto-generated with garlic-git-table on 2021-04-19 for repo: + # ssh://git@bscpm03.bsc.es/garlic/apps/fwi.git + + "garlic/mpi+send+omp+fork" = "ea1ed53f20858dc082f9cbbe0e7e8fb28a6fe58a"; + "garlic/mpi+send+omp+task" = "aa8881056fb3fa98832d203899beacfb8fa702f6"; + "garlic/mpi+send+oss+task" = "c184484af8498fd939761575b34bb46ba3be0dde"; + "garlic/mpi+send+oss+task+NOREUSE" = "0062093ef744c694d69673d1881719958bbed353"; + "garlic/mpi+send+seq" = "cc184ad77f143481e2506933d0cdc038c349f071"; + "garlic/omp+task" = "1fe23690d74ae89ace5383ab165a6ce6346c2afd"; + "garlic/oss+task" = "68e6e8f17ee03addb460745acea2a38241ca89ee"; + "garlic/seq" = "aa6b6c5857125796c65fbf23018d557e4693f1ae"; + "garlic/tampi+isend+oss+task" = "7c98194e13786c4e8ecfa8a144587e5a95e09205"; + "garlic/tampi+send+oss+task" = "e08d66f7453c4034a363bb2d22c5248fe86ed740"; +} From 1402111e405e404ef8b2596fc90a21a422c531ce Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 19 Apr 2021 16:40:53 +0200 Subject: [PATCH 700/987] saiph: add gitTable --- garlic/apps/saiph/default.nix | 124 ++++++++++++++++---------------- garlic/apps/saiph/git-table.nix | 10 +++ 2 files changed, 73 insertions(+), 61 deletions(-) create mode 100644 garlic/apps/saiph/git-table.nix diff --git a/garlic/apps/saiph/default.nix b/garlic/apps/saiph/default.nix index 1e3d867..6118afd 100644 --- a/garlic/apps/saiph/default.nix +++ b/garlic/apps/saiph/default.nix @@ -26,6 +26,7 @@ , sizex ? 3 , sizey ? 4 , sizez ? 4 +, garlicTools }: assert enableManualDist -> (nbgx != null); @@ -35,70 +36,71 @@ assert enableManualDist -> (nbgz != null); with stdenv.lib; with stdenv.lib.versions; -stdenv.mkDerivation rec { - name = "saiph"; +let + gitSource = garlicTools.fetchGarlicApp { + appName = "saiph"; + inherit gitCommit gitBranch; + gitTable = import ./git-table.nix; + }; +in + stdenv.mkDerivation rec { + name = "saiph"; - inherit gitBranch gitCommit; - src = builtins.fetchGit ({ - url = "ssh://git@bscpm03.bsc.es/DSLs/saiph.git"; - ref = "${gitBranch}"; - } // (optionalAttrs (gitCommit != null) { - rev = "${gitCommit}"; - })); + inherit (gitSource) src gitBranch gitCommit; - programPath = "/bin/Heat3D_vect"; + programPath = "/bin/Heat3D_vect"; - enableParallelBuilding = true; - dontStrip = true; - enableDebugging = true; + enableParallelBuilding = true; + dontStrip = true; + enableDebugging = true; - buildInputs = [ - nanos6 - mpi - tampi - cc - vtk - boost - ]; + buildInputs = [ + nanos6 + mpi + tampi + cc + vtk + boost + ]; - # Required for nanos6 - hardeningDisable = [ "all" ]; - - preBuild = '' - cd saiphv2/cpp/src - export VTK_VERSION=${majorMinor (getVersion vtk.name)} - export VTK_HOME=${vtk} - make clean - - sed -i '/SIZEX =/s/3/${toString sizex}/g' testApp/Heat3D_vect.cpp - sed -i '/SIZEY =/s/4/${toString sizey}/g' testApp/Heat3D_vect.cpp - sed -i '/SIZEZ =/s/4/${toString sizez}/g' testApp/Heat3D_vect.cpp - ''; - - makeFlags = [ - "-f" "Makefile.${cc.CC}" - "apps" - "APP=Heat3D_vect" - ] ++ optional (cachelineBytes != null) "ROW_ALIGNMENT=${toString cachelineBytes}" - ++ optional (L3SizeKB != null) "L3_SIZE_K=${toString L3SizeKB}" - ++ optional (enableManualDist) "DIST_SET=1" - ++ optional (enableManualDist) "NBG_X=${toString nbgx}" - ++ optional (enableManualDist) "NBG_Y=${toString nbgy}" - ++ optional (enableManualDist) "NBG_Z=${toString nbgz}" - ++ optional (nblx != null) "NBL_X=${toString nblx}" - ++ optional (nbly != null) "NBL_Y=${toString nbly}" - ++ optional (nblz != null) "NBL_Z=${toString nblz}" - ++ optional (nsteps != null) "NSTEPS=${toString nsteps}" - ++ optional (numComm != null) "NUM_COMM=${toString numComm}" - ++ optional (enableVectFlags) "VECT_CHECKS=1" - ++ optional (enableDebugFlags) "DEBUG_CHECKS=1" - ++ optional (enableAsanFlags) "SANITIZE_CHECKS=1" - ; + # Required for nanos6 + hardeningDisable = [ "all" ]; - installPhase = '' - mkdir -p $out/lib - mkdir -p $out/bin - cp obj/libsaiphv2.so $out/lib/ - cp bin/Heat3D_vect $out/bin/ - ''; -} + preBuild = '' + cd saiphv2/cpp/src + export VTK_VERSION=${majorMinor (getVersion vtk.name)} + export VTK_HOME=${vtk} + make clean + + sed -i '/SIZEX =/s/3/${toString sizex}/g' testApp/Heat3D_vect.cpp + sed -i '/SIZEY =/s/4/${toString sizey}/g' testApp/Heat3D_vect.cpp + sed -i '/SIZEZ =/s/4/${toString sizez}/g' testApp/Heat3D_vect.cpp + ''; + + makeFlags = [ + "-f" "Makefile.${cc.CC}" + "apps" + "APP=Heat3D_vect" + ] ++ optional (cachelineBytes != null) "ROW_ALIGNMENT=${toString cachelineBytes}" + ++ optional (L3SizeKB != null) "L3_SIZE_K=${toString L3SizeKB}" + ++ optional (enableManualDist) "DIST_SET=1" + ++ optional (enableManualDist) "NBG_X=${toString nbgx}" + ++ optional (enableManualDist) "NBG_Y=${toString nbgy}" + ++ optional (enableManualDist) "NBG_Z=${toString nbgz}" + ++ optional (nblx != null) "NBL_X=${toString nblx}" + ++ optional (nbly != null) "NBL_Y=${toString nbly}" + ++ optional (nblz != null) "NBL_Z=${toString nblz}" + ++ optional (nsteps != null) "NSTEPS=${toString nsteps}" + ++ optional (numComm != null) "NUM_COMM=${toString numComm}" + ++ optional (enableVectFlags) "VECT_CHECKS=1" + ++ optional (enableDebugFlags) "DEBUG_CHECKS=1" + ++ optional (enableAsanFlags) "SANITIZE_CHECKS=1" + ; + + installPhase = '' + mkdir -p $out/lib + mkdir -p $out/bin + cp obj/libsaiphv2.so $out/lib/ + cp bin/Heat3D_vect $out/bin/ + ''; + } diff --git a/garlic/apps/saiph/git-table.nix b/garlic/apps/saiph/git-table.nix new file mode 100644 index 0000000..13cc477 --- /dev/null +++ b/garlic/apps/saiph/git-table.nix @@ -0,0 +1,10 @@ +{ + # Auto-generated with garlic-git-table on 2021-04-19 for repo: + # ssh://git@bscpm03.bsc.es/garlic/apps/saiph.git + + "garlic/mpi+isend+omp+fork+simd" = "96823846b327b6860f05d428f0cd5ed8ca537a0e"; + "garlic/mpi+isend+omp+task+simd" = "de0346a559120f561bff554aa86b34d01214b714"; + "garlic/mpi+isend+seq+simd" = "1411dad765231f5d3cec9f621526583974232d42"; + "garlic/tampi+isend+omp+task+simd" = "587a7651df8eb69cae4a79bdfc5cb7f50723f3ce"; + "garlic/tampi+isend+oss+task+simd" = "3731197d3e35df248fa6bdb7e4cb05c5dd4f2597"; +} From a359cc9d327a5f8aa536d6832196c8e77a6dce79 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 20 Apr 2021 17:47:22 +0200 Subject: [PATCH 701/987] nbody: add gitTable --- garlic/apps/index.nix | 4 +- garlic/apps/nbody/default.nix | 67 ++++++++++++++++++--------------- garlic/apps/nbody/git-table.nix | 13 +++++++ 3 files changed, 50 insertions(+), 34 deletions(-) create mode 100644 garlic/apps/nbody/git-table.nix diff --git a/garlic/apps/index.nix b/garlic/apps/index.nix index ec54cd3..f691c94 100644 --- a/garlic/apps/index.nix +++ b/garlic/apps/index.nix @@ -7,9 +7,7 @@ }: { - nbody = callPackage ./nbody/default.nix { - gitBranch = "garlic/seq"; - }; + nbody = callPackage ./nbody/default.nix { }; saiph = callPackage ./saiph/default.nix { cc = bsc.clangOmpss2; diff --git a/garlic/apps/nbody/default.nix b/garlic/apps/nbody/default.nix index 32bcdfa..525d52a 100644 --- a/garlic/apps/nbody/default.nix +++ b/garlic/apps/nbody/default.nix @@ -5,48 +5,53 @@ , tampi ? null , mcxx ? null , cflags ? null -, gitBranch -, gitURL ? "ssh://git@bscpm03.bsc.es/garlic/apps/nbody.git" +, gitBranch ? "garlic/seq" +, gitCommit ? null , blocksize ? 2048 +, garlicTools }: assert !(tampi != null && mcxx == null); with stdenv.lib; -stdenv.mkDerivation rec { - name = "nbody"; - #src = ~/nbody; - - src = builtins.fetchGit { - url = "${gitURL}"; - ref = "${gitBranch}"; +let + gitSource = garlicTools.fetchGarlicApp { + appName = "nbody"; + inherit gitCommit gitBranch; + gitTable = import ./git-table.nix; }; - programPath = "/bin/nbody"; +in + stdenv.mkDerivation rec { + name = "nbody"; - buildInputs = [ - cc - ] - ++ optional (mpi != null) mpi - ++ optional (tampi != null) tampi - ++ optional (mcxx != null) mcxx; + inherit (gitSource) src gitBranch gitCommit; - preBuild = (if cflags != null then '' - makeFlagsArray+=(CFLAGS="${cflags}") - '' else ""); + programPath = "/bin/nbody"; - makeFlags = [ - "CC=${cc.CC}" - "BS=${toString blocksize}" - ] - ++ optional (tampi != null) "TAMPI_HOME=${tampi}"; + buildInputs = [ + cc + ] + ++ optional (mpi != null) mpi + ++ optional (tampi != null) tampi + ++ optional (mcxx != null) mcxx; - dontPatchShebangs = true; + preBuild = (if cflags != null then '' + makeFlagsArray+=(CFLAGS="${cflags}") + '' else ""); - installPhase = '' - echo ${tampi} - mkdir -p $out/bin - cp nbody* $out/bin/${name} - ''; + makeFlags = [ + "CC=${cc.CC}" + "BS=${toString blocksize}" + ] + ++ optional (tampi != null) "TAMPI_HOME=${tampi}"; -} + dontPatchShebangs = true; + + installPhase = '' + echo ${tampi} + mkdir -p $out/bin + cp nbody* $out/bin/${name} + ''; + + } diff --git a/garlic/apps/nbody/git-table.nix b/garlic/apps/nbody/git-table.nix new file mode 100644 index 0000000..e824251 --- /dev/null +++ b/garlic/apps/nbody/git-table.nix @@ -0,0 +1,13 @@ +{ + # Auto-generated with garlic-git-table on 2021-04-20 for repo: + # ssh://git@bscpm03.bsc.es/garlic/apps/nbody.git + + "garlic/mpi+send+oss+task" = "20aa856baa3268d99262588807911ad0b3318d09"; + "garlic/mpi+send+seq" = "3be64af0f949db5fd60fcd0334cf2cd8c9fa25c3"; + "garlic/omp+fork" = "9c869272df7c775f467a2220211a414e33321c00"; + "garlic/oss+task" = "13ab26fbad8662a1052cc94410386080bbf6a2ba"; + "garlic/seq" = "9dfea29189d14477bd75e6f741f0518e7e4e5e72"; + "garlic/seq+BLOCK" = "99408705628b374df4308dcf1cdbe2d21d1451c2"; + "garlic/tampi+isend+oss+task" = "653d26e4a0913d36ea18d4e72e65a04838bb138a"; + "garlic/tampi+send+oss+task" = "b1440ebc5f79165e5dfaa6a4ce7916eda410ec9a"; +} From fb1d50e9dd60f05263e23fad7dce249200418c84 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 20 Apr 2021 18:02:53 +0200 Subject: [PATCH 702/987] hpccg: update app and add gitTable --- garlic/apps/hpccg/default.nix | 55 +++++++++++++++++++-------------- garlic/apps/hpccg/git-table.nix | 9 ++++++ 2 files changed, 41 insertions(+), 23 deletions(-) create mode 100644 garlic/apps/hpccg/git-table.nix diff --git a/garlic/apps/hpccg/default.nix b/garlic/apps/hpccg/default.nix index 0799aad..778dd2a 100644 --- a/garlic/apps/hpccg/default.nix +++ b/garlic/apps/hpccg/default.nix @@ -1,44 +1,53 @@ { stdenv -, nanos6 -, mpi -, mcxx -, tampi , icc +, mpi ? null +, tampi ? null +, mcxx ? null +, gitBranch ? "garlic/mpi+isend+seq" +, gitCommit ? null +, garlicTools }: +assert !(tampi != null && mcxx == null); + +with stdenv.lib; + +let + gitSource = garlicTools.fetchGarlicApp { + appName = "hpccg"; + inherit gitCommit gitBranch; + gitTable = import ./git-table.nix; + }; +in stdenv.mkDerivation rec { name = "hpccg"; - src = builtins.fetchGit { - url = "ssh://git@bscpm03.bsc.es/mmaronas/HPCCG.git"; - ref = "mmaronas-development"; - }; + inherit (gitSource) src gitBranch gitCommit; + + programPath = "/bin/test_HPCCG-mpi.exe"; buildInputs = [ - nanos6 - mpi icc - tampi - mcxx - ]; + ] + ++ optional (mpi != null) mpi + ++ optional (tampi != null) tampi + ++ optional (mcxx != null) mcxx; # The hpccg app fails to compile in parallel. Makefile must be fixed before. enableParallelBuilding = false; - postPatch = '' - sed -i 's/mpic++/mpiicpc/g' Makefile - sed -i 's/g++/icpc/g' Makefile - mkdir obj - ''; - - makeFlags = [ + makeFlags = [ "USE_MPI=-DUSING_MPI" - "TAMPI_HOME=${tampi}" - ]; + ] + ++ optional (tampi != null) "TAMPI_HOME=${tampi}"; + + dontPatchShebangs = true; installPhase = '' + echo ${tampi} mkdir -p $out/bin - cp test_HPCCG* $out/bin + cp test_HPCCG-mpi.exe $out/bin ''; + } diff --git a/garlic/apps/hpccg/git-table.nix b/garlic/apps/hpccg/git-table.nix new file mode 100644 index 0000000..507dab2 --- /dev/null +++ b/garlic/apps/hpccg/git-table.nix @@ -0,0 +1,9 @@ +{ + # Auto-generated with garlic-git-table on 2021-04-20 for repo: + # ssh://git@bscpm03.bsc.es/garlic/apps/hpccg.git + + "garlic/mpi+isend+omp+fork" = "c84af0480d231961201f2904ee4e3fced9d5f9be"; + "garlic/mpi+isend+seq" = "d1b47cd459440700de1b68233ec4fe794343dbd4"; + "garlic/tampi+isend+oss+task" = "7238e9be2e4a7b028abc05d40b476462eaa3de6a"; + "garlic/tampi+isend+oss+taskfor" = "02ec60f43b8d68d74575ea0563a9029fd441f1f1"; +} From c0a0eeec7ff38f636b6f0c94fd70fc9d390241a6 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 20 Apr 2021 18:09:24 +0200 Subject: [PATCH 703/987] hpccg: fix indentation --- garlic/apps/hpccg/default.nix | 46 +++++++++++++++++------------------ 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/garlic/apps/hpccg/default.nix b/garlic/apps/hpccg/default.nix index 778dd2a..5af59b3 100644 --- a/garlic/apps/hpccg/default.nix +++ b/garlic/apps/hpccg/default.nix @@ -20,34 +20,34 @@ let gitTable = import ./git-table.nix; }; in -stdenv.mkDerivation rec { - name = "hpccg"; + stdenv.mkDerivation rec { + name = "hpccg"; - inherit (gitSource) src gitBranch gitCommit; + inherit (gitSource) src gitBranch gitCommit; - programPath = "/bin/test_HPCCG-mpi.exe"; + programPath = "/bin/test_HPCCG-mpi.exe"; - buildInputs = [ - icc - ] - ++ optional (mpi != null) mpi - ++ optional (tampi != null) tampi - ++ optional (mcxx != null) mcxx; + buildInputs = [ + icc + ] + ++ optional (mpi != null) mpi + ++ optional (tampi != null) tampi + ++ optional (mcxx != null) mcxx; - # The hpccg app fails to compile in parallel. Makefile must be fixed before. - enableParallelBuilding = false; + # The hpccg app fails to compile in parallel. Makefile must be fixed before. + enableParallelBuilding = false; - makeFlags = [ - "USE_MPI=-DUSING_MPI" - ] - ++ optional (tampi != null) "TAMPI_HOME=${tampi}"; + makeFlags = [ + "USE_MPI=-DUSING_MPI" + ] + ++ optional (tampi != null) "TAMPI_HOME=${tampi}"; - dontPatchShebangs = true; + dontPatchShebangs = true; - installPhase = '' - echo ${tampi} - mkdir -p $out/bin - cp test_HPCCG-mpi.exe $out/bin - ''; + installPhase = '' + echo ${tampi} + mkdir -p $out/bin + cp test_HPCCG-mpi.exe $out/bin + ''; -} + } From cafc67d107459dd090fa4311e811ae70ad5ab301 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 20 Apr 2021 18:12:17 +0200 Subject: [PATCH 704/987] hpcg: add gitTable --- garlic/apps/hpcg/default.nix | 50 ++++++++++++++++++---------------- garlic/apps/hpcg/git-table.nix | 18 ++++++++++++ garlic/apps/index.nix | 4 +-- 3 files changed, 45 insertions(+), 27 deletions(-) create mode 100644 garlic/apps/hpcg/git-table.nix diff --git a/garlic/apps/hpcg/default.nix b/garlic/apps/hpcg/default.nix index 7a69a72..25faa87 100644 --- a/garlic/apps/hpcg/default.nix +++ b/garlic/apps/hpcg/default.nix @@ -5,37 +5,39 @@ , mcxx , mpi , tampi -, gitBranch +, gitBranch ? "garlic/seq" +, gitCommit ? null +, garlicTools }: -stdenv.mkDerivation rec { - name = "hpcg"; - - src = builtins.fetchGit { - url = "ssh://git@bscpm03.bsc.es/rpenacob/garlic-hpcg.git"; - ref = "${gitBranch}"; +let + gitSource = garlicTools.fetchGarlicApp { + appName = "hpcg"; + inherit gitCommit gitBranch; + gitTable = import ./git-table.nix; }; +in + stdenv.mkDerivation rec { + name = "hpcg"; - # prePatch = '' - # #export NIX_DEBUG=6 - # ''; + inherit (gitSource) src gitBranch gitCommit; - buildInputs = [ - cc nanos6 mcxx mpi tampi - ]; + buildInputs = [ + cc nanos6 mcxx mpi tampi + ]; - makeFlags = [ - "CC=${cc.CC}" - "CXX=${cc.CXX}" - ]; + makeFlags = [ + "CC=${cc.CC}" + "CXX=${cc.CXX}" + ]; - enableParallelBuilding = true; + enableParallelBuilding = true; - installPhase = '' - mkdir -p $out/bin - cp bin/* $out/bin/ - ''; + installPhase = '' + mkdir -p $out/bin + cp bin/* $out/bin/ + ''; - programPath = "/bin/xhpcg"; + programPath = "/bin/xhpcg"; -} + } diff --git a/garlic/apps/hpcg/git-table.nix b/garlic/apps/hpcg/git-table.nix new file mode 100644 index 0000000..0aa1fc8 --- /dev/null +++ b/garlic/apps/hpcg/git-table.nix @@ -0,0 +1,18 @@ +{ + # Auto-generated with garlic-git-table on 2021-04-20 for repo: + # ssh://git@bscpm03.bsc.es/garlic/apps/hpcg.git + + "garlic/mpi" = "8c94ccfd97518ed947bd6be3386260b72fdcdff2"; + "garlic/mpi+SAVEMAT" = "5dd2ad9eba13dba67086f46c6e8519804d837383"; + "garlic/mpi+omp" = "d24c372dd9fda584e711efb612f172e5c3602804"; + "garlic/mpi+oss" = "519a867bb3a3e07440df05e60a62abad764524e5"; + "garlic/mpi+send+omp+fork" = "a08d31aedbc108e1c0081cdc5021827ac9022688"; + "garlic/omp" = "dcc8a40831cda884b9240af47e883ac997150ed3"; + "garlic/omp+SAVEMAT" = "40dbac86c905e192ecc8146e0e65e4c3a3c6dbf8"; + "garlic/omp+fork" = "042752b3dbcd9b0f4db524b6cdc911278ee1a51b"; + "garlic/omp+initsplit" = "5370e7ee26fb72ef100a79624f73ed2baa6bcc79"; + "garlic/oss" = "7e6e2d969b7904572f2475bf471e637651337761"; + "garlic/oss+task" = "034940756ccab88876609c3cba4dea0a0f5c944b"; + "garlic/seq" = "dee225571ab2572d7aa51df9846b01237ee941a1"; + "garlic/tampi+isend+oss+task" = "449a3980a767f91ca65d429490080961dcfba498"; +} diff --git a/garlic/apps/index.nix b/garlic/apps/index.nix index f691c94..c0e2d4d 100644 --- a/garlic/apps/index.nix +++ b/garlic/apps/index.nix @@ -22,9 +22,7 @@ creamsInput = callPackage ./creams/input.nix { }; - hpcg = callPackage ./hpcg/default.nix { - gitBranch = "garlic/tampi+isend+oss+task"; - }; + hpcg = callPackage ./hpcg/default.nix { }; bigsort = { sort = callPackage ./bigsort/default.nix { From e0197950a6c041515c05f8299745bfe3c7a17297 Mon Sep 17 00:00:00 2001 From: Kevin Sala Date: Sun, 21 Mar 2021 17:54:37 +0100 Subject: [PATCH 705/987] ifsker: update app --- garlic/apps/ifsker/default.nix | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/garlic/apps/ifsker/default.nix b/garlic/apps/ifsker/default.nix index 812f630..a6290c6 100644 --- a/garlic/apps/ifsker/default.nix +++ b/garlic/apps/ifsker/default.nix @@ -5,6 +5,7 @@ , tampi , nanos6 , mcxx +, gitBranch ? "garlic/mpi+isend+seq" }: with stdenv.lib; @@ -13,8 +14,8 @@ stdenv.mkDerivation rec { name = "ifsker"; src = builtins.fetchGit { - url = "ssh://git@bscpm03.bsc.es/ksala/ifsker.git"; - ref = "master"; + url = "ssh://git@bscpm03.bsc.es/garlic/apps/ifsker.git"; + ref = gitBranch; }; buildInputs = [ tampi mpi nanos6 mcxx gfortran ]; @@ -41,10 +42,13 @@ stdenv.mkDerivation rec { installPhase = '' mkdir -p $out/bin - cp *.bin $out/bin/ + cp ${name} $out/bin/ + + mkdir -p $out/etc + cp -r data $out/etc/ + cp nanos6.toml $out/etc ''; - # TODO: Split the app into variants - programPath = "/bin/03.ifsker.mpi.ompss2.tasks.bin"; + programPath = "/bin/${name}"; } From c075498f715f77bc424ec2dca8ef5d75f8350389 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 20 Apr 2021 18:20:27 +0200 Subject: [PATCH 706/987] ifsker: add gitTable --- garlic/apps/ifsker/default.nix | 66 +++++++++++++++++--------------- garlic/apps/ifsker/git-table.nix | 10 +++++ 2 files changed, 46 insertions(+), 30 deletions(-) create mode 100644 garlic/apps/ifsker/git-table.nix diff --git a/garlic/apps/ifsker/default.nix b/garlic/apps/ifsker/default.nix index a6290c6..6f31330 100644 --- a/garlic/apps/ifsker/default.nix +++ b/garlic/apps/ifsker/default.nix @@ -6,49 +6,55 @@ , nanos6 , mcxx , gitBranch ? "garlic/mpi+isend+seq" +, gitCommit ? null +, garlicTools }: with stdenv.lib; -stdenv.mkDerivation rec { - name = "ifsker"; - - src = builtins.fetchGit { - url = "ssh://git@bscpm03.bsc.es/garlic/apps/ifsker.git"; - ref = gitBranch; +let + gitSource = garlicTools.fetchGarlicApp { + appName = "ifsker"; + inherit gitCommit gitBranch; + gitTable = import ./git-table.nix; }; +in + stdenv.mkDerivation rec { + name = "ifsker"; - buildInputs = [ tampi mpi nanos6 mcxx gfortran ]; + inherit (gitSource) src gitBranch gitCommit; - preferLocalBuild = true; + buildInputs = [ tampi mpi nanos6 mcxx gfortran ]; - # Mercurium seems to fail when building with fortran in parallel - enableParallelBuilding = false; + preferLocalBuild = true; - # FIXME: Patch mcxx to use other directory than $HOME for the lock - # files. - preConfigure = '' - export TAMPI_HOME=${tampi} + # Mercurium seems to fail when building with fortran in parallel + enableParallelBuilding = false; - # $HOME is required for the lock files by mcxx to compile fortran. - # So we use the $TMPDIR to store them. - export HOME=$TMPDIR - ''; + # FIXME: Patch mcxx to use other directory than $HOME for the lock + # files. + preConfigure = '' + export TAMPI_HOME=${tampi} - makeFlags = [ - "-f" "Makefile.gcc" - ]; + # $HOME is required for the lock files by mcxx to compile fortran. + # So we use the $TMPDIR to store them. + export HOME=$TMPDIR + ''; + + makeFlags = [ + "-f" "Makefile.gcc" + ]; - installPhase = '' - mkdir -p $out/bin - cp ${name} $out/bin/ + installPhase = '' + mkdir -p $out/bin + cp ${name} $out/bin/ - mkdir -p $out/etc - cp -r data $out/etc/ - cp nanos6.toml $out/etc - ''; + mkdir -p $out/etc + cp -r data $out/etc/ + cp nanos6.toml $out/etc + ''; - programPath = "/bin/${name}"; + programPath = "/bin/${name}"; -} + } diff --git a/garlic/apps/ifsker/git-table.nix b/garlic/apps/ifsker/git-table.nix new file mode 100644 index 0000000..0242708 --- /dev/null +++ b/garlic/apps/ifsker/git-table.nix @@ -0,0 +1,10 @@ +{ + # Auto-generated with garlic-git-table on 2021-04-20 for repo: + # ssh://git@bscpm03.bsc.es/garlic/apps/ifsker.git + + "garlic/mpi+isend+oss+fork" = "a6a20303101cb140571ddc1166e66843fbe83017"; + "garlic/mpi+isend+oss+task" = "a7bdb6c9b57aafbc50cdc790eb42e5bdd850f213"; + "garlic/mpi+isend+seq" = "bc97cf30835bbf6a825209485bb96fc8314e5bcb"; + "garlic/tampi+isend+oss+task" = "33408215bc231b70b60733fddea3d1b7431bb0d1"; + "garlic/tampi+send+oss+task" = "19dae956b4ef69916c0e8ad15bb6ced0085275cd"; +} From 2cc0c8563544aaaf48f6e43171add381f104365a Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 20 Apr 2021 18:20:59 +0200 Subject: [PATCH 707/987] ifsker: remove preferLocalBuild --- garlic/apps/ifsker/default.nix | 2 -- 1 file changed, 2 deletions(-) diff --git a/garlic/apps/ifsker/default.nix b/garlic/apps/ifsker/default.nix index 6f31330..2b3e001 100644 --- a/garlic/apps/ifsker/default.nix +++ b/garlic/apps/ifsker/default.nix @@ -26,8 +26,6 @@ in buildInputs = [ tampi mpi nanos6 mcxx gfortran ]; - preferLocalBuild = true; - # Mercurium seems to fail when building with fortran in parallel enableParallelBuilding = false; From 9fc2a2025cf0039cb324837d9c180766cc31e2ac Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 20 Apr 2021 18:42:19 +0200 Subject: [PATCH 708/987] lulesh: add gitTable --- garlic/apps/lulesh/default.nix | 52 ++++++++++++++++++-------------- garlic/apps/lulesh/git-table.nix | 12 ++++++++ 2 files changed, 41 insertions(+), 23 deletions(-) create mode 100644 garlic/apps/lulesh/git-table.nix diff --git a/garlic/apps/lulesh/default.nix b/garlic/apps/lulesh/default.nix index 3659caf..5a43ee5 100644 --- a/garlic/apps/lulesh/default.nix +++ b/garlic/apps/lulesh/default.nix @@ -3,38 +3,44 @@ , impi , mcxx , icc -, gitBranch ? "garlic/tampi+isend+oss+taskfor" , tampi ? null +, gitBranch ? "garlic/mpi+isend+seq" +, gitCommit ? null +, garlicTools }: with stdenv.lib; -stdenv.mkDerivation rec { - name = "lulesh"; - - src = builtins.fetchGit { - url = "ssh://git@bscpm03.bsc.es/garlic/apps/lulesh.git"; - ref = gitBranch; +let + gitSource = garlicTools.fetchGarlicApp { + appName = "lulesh"; + inherit gitCommit gitBranch; + gitTable = import ./git-table.nix; }; +in + stdenv.mkDerivation rec { + name = "lulesh"; - dontConfigure = true; + inherit (gitSource) src gitBranch gitCommit; - preBuild = optionalString (tampi != null) "export TAMPI_HOME=${tampi}"; + dontConfigure = true; - #TODO: Allow multiple MPI implementations and compilers - buildInputs = [ - impi - icc - mcxx - ]; + preBuild = optionalString (tampi != null) "export TAMPI_HOME=${tampi}"; - enableParallelBuilding = true; + #TODO: Allow multiple MPI implementations and compilers + buildInputs = [ + impi + icc + mcxx + ]; - #TODO: Can we build an executable named "lulesh" in all branches? - installPhase = '' - mkdir -p $out/bin - find . -name 'lulesh*' -type f -executable -exec cp \{\} $out/bin/${name} \; - ''; - programPath = "/bin/${name}"; + enableParallelBuilding = true; -} + #TODO: Can we build an executable named "lulesh" in all branches? + installPhase = '' + mkdir -p $out/bin + find . -name 'lulesh*' -type f -executable -exec cp \{\} $out/bin/${name} \; + ''; + programPath = "/bin/${name}"; + + } diff --git a/garlic/apps/lulesh/git-table.nix b/garlic/apps/lulesh/git-table.nix new file mode 100644 index 0000000..49c2bba --- /dev/null +++ b/garlic/apps/lulesh/git-table.nix @@ -0,0 +1,12 @@ +{ + # Auto-generated with garlic-git-table on 2021-04-20 for repo: + # ssh://git@bscpm03.bsc.es/garlic/apps/lulesh.git + + "garlic/mpi+isend+omp+fork" = "6cc85c55cb4840d6cde12bb285f5ab1ae7878618"; + "garlic/mpi+isend+oss+task" = "0a9e2cd1d64ab4fcf1860ace02866278ad289637"; + "garlic/mpi+isend+seq" = "9df5475c7dd2b345559fae5bd07ceea38f2e7b91"; + "garlic/tampi+isend+oss+task" = "28ce0cd69f9b4e65eff8141ec455d5f60e9b98b3"; + "garlic/tampi+isend+oss+taskfor" = "928f315ea426585a32231d950da651399e48d762"; + "garlic/tampi+isend+oss+taskloop" = "7957c1a2c84ae80edddcec9eafe7efdeefa68d58"; + "garlic/tampi+isend+oss+taskloopfor" = "7efa0535130a6726f5a46669cf171412d21adc9b"; +} From 5a49611bf698d4f29d766931d8bdc7b0e422a326 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 20 Apr 2021 18:51:36 +0200 Subject: [PATCH 709/987] fwi: add gitTable to params --- garlic/apps/fwi/params.nix | 85 +++++++++++++++++++++----------------- 1 file changed, 46 insertions(+), 39 deletions(-) diff --git a/garlic/apps/fwi/params.nix b/garlic/apps/fwi/params.nix index 78efc33..97e27ab 100644 --- a/garlic/apps/fwi/params.nix +++ b/garlic/apps/fwi/params.nix @@ -3,53 +3,60 @@ , nz ? 200 , nx ? 200 , ny ? 500 +, gitBranch ? "garlic/seq" +, gitCommit ? null +, garlicTools }: with stdenv.lib; with builtins; -stdenv.mkDerivation rec { - name = "fwi-params"; - - src = builtins.fetchGit { - url = "ssh://git@bscpm03.bsc.es/garlic/apps/fwi.git"; - ref = "garlic/seq"; +let + gitSource = garlicTools.fetchGarlicApp { + appName = "fwi"; + inherit gitCommit gitBranch; + gitTable = import ./git-table.nix; }; +in + stdenv.mkDerivation rec { + name = "fwi-params"; - enableParallelBuilding = false; + inherit (gitSource) src gitBranch gitCommit; - # Set the input size with the weird order (nz,nx,ny). - postPatch = '' - sed -i 1c${toString nz} SetupParams/fwi_params.txt - sed -i 2c${toString nx} SetupParams/fwi_params.txt - sed -i 3c${toString ny} SetupParams/fwi_params.txt - ''; + enableParallelBuilding = false; - # FIXME: This is an ugly hack. - # When using _GNU_SOURCE or any other definition used in features.h, we need - # to define them before mcc includes nanos6.h from the command line. So the - # only chance is by setting it at the command line with -D. Using the DEFINES - # below, reaches the command line of the preprocessing stage with gcc. - preConfigure = '' - export DEFINES=-D_GNU_SOURCE - ''; - - # We compile the ModelGenerator using gcc *only*, as otherwise it will - # be compiled with nanos6, which requires access to /sys to determine - # hardware capabilities. So it will fail in the nix-build environment, - # as there is no /sys mounted. - # Also, we need to compile it with the builder platform as target, as is going - # to be executed during the build to generate the src/generated_model_params.h - # header. - makeFlags = [ "COMPILER=GNU" "params" ]; + # Set the input size with the weird order (nz,nx,ny). + postPatch = '' + sed -i 1c${toString nz} SetupParams/fwi_params.txt + sed -i 2c${toString nx} SetupParams/fwi_params.txt + sed -i 3c${toString ny} SetupParams/fwi_params.txt + ''; - installPhase = '' - mkdir -p $out/ - cp src/generated_model_params.h $out/ - cp SetupParams/fwi_params.txt $out/ - cp SetupParams/fwi_frequencies.txt $out/ + # FIXME: This is an ugly hack. + # When using _GNU_SOURCE or any other definition used in features.h, we need + # to define them before mcc includes nanos6.h from the command line. So the + # only chance is by setting it at the command line with -D. Using the DEFINES + # below, reaches the command line of the preprocessing stage with gcc. + preConfigure = '' + export DEFINES=-D_GNU_SOURCE + ''; + + # We compile the ModelGenerator using gcc *only*, as otherwise it will + # be compiled with nanos6, which requires access to /sys to determine + # hardware capabilities. So it will fail in the nix-build environment, + # as there is no /sys mounted. + # Also, we need to compile it with the builder platform as target, as is going + # to be executed during the build to generate the src/generated_model_params.h + # header. + makeFlags = [ "COMPILER=GNU" "params" ]; - mkdir -p $out/bin - cp ModelGenerator $out/bin/ - ''; -} + installPhase = '' + mkdir -p $out/ + cp src/generated_model_params.h $out/ + cp SetupParams/fwi_params.txt $out/ + cp SetupParams/fwi_frequencies.txt $out/ + + mkdir -p $out/bin + cp ModelGenerator $out/bin/ + ''; + } From 92cd88e36549fca7719934db4d2a89d0cc37535f Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 21 Apr 2021 13:40:25 +0200 Subject: [PATCH 710/987] fig: use the $out path in the subtitle The input dataset is not enough to determine which script produced a given plot. --- garlic/fig/creams/granularity.R | 5 +++-- garlic/fig/creams/ss.R | 11 ++++++----- garlic/fig/examples/granularity.R | 9 +++++---- garlic/fig/fwi/granularity.R | 5 +++-- garlic/fig/fwi/io.R | 9 +++++---- garlic/fig/fwi/ss.R | 7 ++++--- garlic/fig/heat/cache.R | 3 ++- garlic/fig/heat/granularity.R | 5 +++-- garlic/fig/heat/mode.R | 7 ++++--- garlic/fig/hpcg/granularity.R | 5 +++-- garlic/fig/hpcg/size.R | 3 ++- garlic/fig/hpcg/ss.R | 5 +++-- garlic/fig/hpcg/ws.R | 3 ++- garlic/fig/nbody/granularity.R | 5 +++-- garlic/fig/nbody/numa.R | 5 +++-- garlic/fig/nbody/old/baseline.R | 7 ++++--- garlic/fig/nbody/old/freeCpu.R | 5 +++-- garlic/fig/nbody/old/jemalloc.R | 5 +++-- garlic/fig/nbody/old/scaling.R | 5 +++-- garlic/fig/nbody/ss.R | 5 +++-- garlic/fig/osu/bw.R | 5 +++-- garlic/fig/osu/eager.R | 3 ++- garlic/fig/osu/impi.R | 5 +++-- garlic/fig/osu/latency.R | 5 +++-- garlic/fig/osu/mtu.R | 3 ++- garlic/fig/saiph/granularity.R | 5 +++-- garlic/fig/saiph/ss.R | 7 ++++--- garlic/pp/rplot.nix | 2 +- 28 files changed, 88 insertions(+), 61 deletions(-) diff --git a/garlic/fig/creams/granularity.R b/garlic/fig/creams/granularity.R index 998329d..524c987 100644 --- a/garlic/fig/creams/granularity.R +++ b/garlic/fig/creams/granularity.R @@ -9,6 +9,7 @@ args = commandArgs(trailingOnly=TRUE) # Set the input dataset if given in argv[1], or use "input" as default if (length(args)>0) { input_file = args[1] } else { input_file = "input" } +if (length(args)>1) { output = args[2] } else { output = "?" } df = jsonlite::stream_in(file(input_file), verbose=FALSE) %>% @@ -62,7 +63,7 @@ p = ggplot(df, aes(x=granul, y=normalized.time)) + facet_wrap(branch ~ .) + labs(x="granul", y="Normalized time", title="Creams granularity: normalized time", - subtitle=input_file) + + subtitle=output) + theme(plot.subtitle=element_text(size=8)) ggsave("normalized.time.png", plot=p, width=w, height=h, dpi=dpi) @@ -75,7 +76,7 @@ p = ggplot(df, aes(x=granul, y=time, color=branch)) + geom_line(aes(y=median.time, group=branch)) + theme_bw() + labs(x="granul", y="Time (s)", title="Creams granularity: time", - subtitle=input_file) + + subtitle=output) + theme(plot.subtitle=element_text(size=8)) ggsave("time.png", plot=p, width=w, height=h, dpi=dpi) diff --git a/garlic/fig/creams/ss.R b/garlic/fig/creams/ss.R index 1f09842..b367781 100644 --- a/garlic/fig/creams/ss.R +++ b/garlic/fig/creams/ss.R @@ -9,6 +9,7 @@ args = commandArgs(trailingOnly=TRUE) # Set the input dataset if given in argv[1], or use "input" as default if (length(args)>0) { input_file = args[1] } else { input_file = "input" } +if (length(args)>1) { output = args[2] } else { output = "?" } df = jsonlite::stream_in(file(input_file), verbose=FALSE) %>% @@ -64,7 +65,7 @@ p = ggplot(df, aes(x=nodes, y=normalized.time, fill=granul, color=iterations)) + facet_wrap(branch ~ .) + labs(x="nodes", y="Normalized time", title="Creams strong scaling: normalized time", - subtitle=input_file) + + subtitle=output) + theme(plot.subtitle=element_text(size=8)) ggsave("normalized.time.png", plot=p, width=w, height=h, dpi=dpi) @@ -78,7 +79,7 @@ p = ggplot(df, aes(x=nodes, y=time, color=gitBranch)) + theme_bw() + # facet_wrap(branch ~ .) + labs(x="nodes", y="Time (s)", title="Creams strong scaling: time", - subtitle=input_file) + + subtitle=output) + theme(plot.subtitle=element_text(size=8)) ggsave("time.png", plot=p, width=w, height=h, dpi=dpi) @@ -92,7 +93,7 @@ p = ggplot(df, aes(x=nodes, y=median.time.nodes, color=branch)) + theme_bw() + #facet_wrap(branch ~ .) + labs(x="nodes", y="Median time * nodes (s)", title="Creams strong scaling: median time * nodes", - subtitle=input_file) + + subtitle=output) + theme(plot.subtitle=element_text(size=8)) ggsave("median.time.nodes.png", plot=p, width=w, height=h, dpi=dpi) @@ -105,7 +106,7 @@ p = ggplot(df, aes(x=nodes, y=time.nodes, color=branch)) + theme_bw() + facet_wrap(branch ~ .) + labs(x="nodes", y="Time * nodes (s)", title="Creams strong scaling: time * nodes", - subtitle=input_file) + + subtitle=output) + theme(plot.subtitle=element_text(size=8)) ggsave("time.nodes.boxplot.png", plot=p, width=w, height=h, dpi=dpi) @@ -120,7 +121,7 @@ ggsave("time.nodes.boxplot.pdf", plot=p, width=w, height=h, dpi=dpi) # #facet_wrap(branch ~ .) + # labs(x="nodes", y="Time * nodes / iterations (s)", # title="Creams strong scaling: time * nodes / iterations", -# subtitle=input_file) + +# subtitle=output) + # theme(plot.subtitle=element_text(size=8)) # #ggsave("time.nodes.iter.png", plot=p, width=w, height=h, dpi=dpi) diff --git a/garlic/fig/examples/granularity.R b/garlic/fig/examples/granularity.R index 2fddf5d..7577dca 100644 --- a/garlic/fig/examples/granularity.R +++ b/garlic/fig/examples/granularity.R @@ -28,6 +28,7 @@ args = commandArgs(trailingOnly=TRUE) # Set the input dataset if given in argv[1], or use "input" as default if (length(args)>0) { input_file = args[1] } else { input_file = "input" } +if (length(args)>1) { output = args[2] } else { output = "?" } # Here we build of dataframe from the input dataset by chaining operations using # the magritte operator `%>%`, which is similar to a UNIX pipe. @@ -94,7 +95,7 @@ p = ggplot(df, aes(x=cbs, y=median.time, color=rbs)) + # Here we add the title and the labels of the axes labs(x="cbs", y="Median time (s)", title="Heat granularity: median time", - subtitle=input_file) + + subtitle=output) + # And set the subtitle font size a bit smaller, so it fits nicely theme(plot.subtitle=element_text(size=8)) @@ -126,7 +127,7 @@ p = ggplot(df, aes(x=cbs, y=normalized.time)) + # Here we add the title and the labels of the axes labs(x="cbs", y="Normalized time", title="Heat granularity: normalized time", - subtitle=input_file) + + subtitle=output) + # And set the subtitle font size a bit smaller, so it fits nicely theme(plot.subtitle=element_text(size=8)) @@ -151,7 +152,7 @@ p = ggplot(df, aes(x=cbs, y=time, color=rbs)) + # Here we add the title and the labels of the axes labs(x="cbs", y="Time (s)", title="Heat granularity: time", - subtitle=input_file) + + subtitle=output) + # And set the subtitle font size a bit smaller, so it fits nicely theme(plot.subtitle=element_text(size=8)) @@ -184,7 +185,7 @@ p = ggplot(df, aes(x=cbs, y=rbs, fill=median.time)) + # Here we add the title and the labels of the axes labs(x="cbs", y="rbs", title="Heat granularity: time", - subtitle=input_file) + + subtitle=output) + # And set the subtitle font size a bit smaller, so it fits nicely theme(plot.subtitle=element_text(size=8)) diff --git a/garlic/fig/fwi/granularity.R b/garlic/fig/fwi/granularity.R index ba4224b..da9f1a4 100644 --- a/garlic/fig/fwi/granularity.R +++ b/garlic/fig/fwi/granularity.R @@ -9,6 +9,7 @@ args = commandArgs(trailingOnly=TRUE) # Set the input dataset if given in argv[1], or use "input" as default if (length(args)>0) { input_file = args[1] } else { input_file = "input" } +if (length(args)>1) { output = args[2] } else { output = "?" } df = jsonlite::stream_in(file(input_file), verbose=FALSE) %>% @@ -51,7 +52,7 @@ p = ggplot(df, aes(x=blocksize, y=normalized.time)) + facet_wrap(branch ~ .) + labs(y="Normalized time", title=sprintf("%s: normalized time", main_title), - subtitle=input_file) + + subtitle=output) + theme(plot.subtitle=element_text(size=8)) ggsave("normalized.time.png", plot=p, width=w, height=h, dpi=dpi) @@ -65,7 +66,7 @@ p = ggplot(df, aes(x=blocksize, y=time, color=branch)) + theme_bw() + labs(y="Time (s)", title=sprintf("%s: time", main_title), - subtitle=input_file) + + subtitle=output) + theme(legend.position="bottom") + theme(plot.subtitle=element_text(size=8)) diff --git a/garlic/fig/fwi/io.R b/garlic/fig/fwi/io.R index 61c71a4..e10e3dc 100644 --- a/garlic/fig/fwi/io.R +++ b/garlic/fig/fwi/io.R @@ -9,6 +9,7 @@ args=commandArgs(trailingOnly=TRUE) # Read the timetable from args[1] input_file = "input.json" if (length(args)>0) { input_file = args[1] } +if (length(args)>1) { output = args[2] } else { output = "?" } # Load the dataset in NDJSON format dataset = jsonlite::stream_in(file(input_file)) %>% @@ -48,7 +49,7 @@ p = ggplot(df, aes(x=nodes, y=time, group=enableIO, color=enableIO)) + geom_line() + theme_bw() + labs(x="Nodes", y="Time (s)", title="FWI strong scaling for mpi+send+oss+task", - subtitle=input_file) + + subtitle=output) + theme(plot.subtitle=element_text(size=8)) + theme(legend.position = c(0.5, 0.88)) @@ -68,7 +69,7 @@ p = ggplot(df, aes(x=nodes, y=nxtime, group=enableIO, color=enableIO)) + geom_line() + theme_bw() + labs(x="Nodes", y="Time * Nodes (s)", title="FWI strong scaling for mpi+send+oss+task", - subtitle=input_file) + + subtitle=output) + theme(plot.subtitle=element_text(size=8)) + theme(legend.position = c(0.5, 0.88)) @@ -88,7 +89,7 @@ dev.off() # geom_line() + # theme_bw() + # labs(x="Nodes", y="Median Time (s)", title="FWI strong scaling", -# subtitle=input_file) + +# subtitle=output) + # theme(plot.subtitle=element_text(size=8)) + # theme(legend.position = c(0.5, 0.88)) # @@ -108,7 +109,7 @@ dev.off() # geom_line() + # theme_bw() + # labs(x="Nodes", y="Median Time * Nodes (s)", title="FWI strong scaling", -# subtitle=input_file) + +# subtitle=output) + # theme(plot.subtitle=element_text(size=8)) + # theme(legend.position = c(0.5, 0.88)) # diff --git a/garlic/fig/fwi/ss.R b/garlic/fig/fwi/ss.R index 4044d15..428d5c1 100644 --- a/garlic/fig/fwi/ss.R +++ b/garlic/fig/fwi/ss.R @@ -9,6 +9,7 @@ args = commandArgs(trailingOnly=TRUE) # Set the input dataset if given in argv[1], or use "input" as default if (length(args)>0) { input_file = args[1] } else { input_file = "input" } +if (length(args)>1) { output = args[2] } else { output = "?" } df = jsonlite::stream_in(file(input_file), verbose=FALSE) %>% @@ -57,7 +58,7 @@ p = ggplot(df, aes(x=nodes, y=normalized.time)) + facet_wrap(branch ~ .) + labs(x="nodes", y="Normalized time", title=sprintf("%s: normalized time", main_title), - subtitle=input_file) + + subtitle=output) + theme(plot.subtitle=element_text(size=8)) ggsave("normalized.time.png", plot=p, width=w, height=h, dpi=dpi) @@ -72,7 +73,7 @@ p = ggplot(df, aes(x=nodes, y=time, color=gitBranch)) + # facet_wrap(branch ~ .) + labs(y="Time (s)", title=sprintf("%s: time", main_title), - subtitle=input_file) + + subtitle=output) + theme(plot.subtitle=element_text(size=8)) ggsave("time.png", plot=p, width=w, height=h, dpi=dpi) @@ -87,7 +88,7 @@ p = ggplot(df, aes(x=nodes, y=time.nodes, color=branch)) + #facet_wrap(branch ~ .) + labs(x="nodes", y="Time * nodes (s)", title=sprintf("%s: time * nodes", main_title), - subtitle=input_file) + + subtitle=output) + theme(plot.subtitle=element_text(size=8)) ggsave("time.nodes.png", plot=p, width=w, height=h, dpi=dpi) diff --git a/garlic/fig/heat/cache.R b/garlic/fig/heat/cache.R index a9fa5eb..dca6baf 100644 --- a/garlic/fig/heat/cache.R +++ b/garlic/fig/heat/cache.R @@ -9,6 +9,7 @@ args=commandArgs(trailingOnly=TRUE) # Read the timetable from args[1] input_file = "input.json" if (length(args)>0) { input_file = args[1] } +if (length(args)>1) { output = args[2] } else { output = "?" } # Load the dataset in NDJSON format dataset = jsonlite::stream_in(file(input_file)) %>% @@ -49,7 +50,7 @@ heatmap_plot = function(df, colname, title) { guides(fill = guide_colorbar(barwidth=12, title.vjust=0.8)) + labs(x="cbs", y="rbs", title=sprintf("Heat granularity: %s", title), - subtitle=input_file) + + subtitle=output) + theme(legend.position="bottom") k=1 diff --git a/garlic/fig/heat/granularity.R b/garlic/fig/heat/granularity.R index fb72e00..19c3f37 100644 --- a/garlic/fig/heat/granularity.R +++ b/garlic/fig/heat/granularity.R @@ -9,6 +9,7 @@ args = commandArgs(trailingOnly=TRUE) # Set the input dataset if given in argv[1], or use "input" as default if (length(args)>0) { input_file = args[1] } else { input_file = "input" } +if (length(args)>1) { output = args[2] } else { output = "?" } df = jsonlite::stream_in(file(input_file), verbose=FALSE) %>% @@ -47,7 +48,7 @@ p = ggplot(df, aes(x=cbs, y=normalized.time)) + theme_bw() + labs(y="Normalized time", title="Heat granularity: normalized time", - subtitle=input_file) + + subtitle=output) + theme(plot.subtitle=element_text(size=8)) ggsave("normalized.time.png", plot=p, width=w, height=h, dpi=dpi) @@ -60,7 +61,7 @@ p = ggplot(df, aes(x=cbs, y=time)) + geom_line(aes(y=median.time, group=0)) + theme_bw() + labs(y="Time (s)", title="Heat granularity: time", - subtitle=input_file) + + subtitle=output) + theme(plot.subtitle=element_text(size=8)) ggsave("time.png", plot=p, width=w, height=h, dpi=dpi) diff --git a/garlic/fig/heat/mode.R b/garlic/fig/heat/mode.R index 8e7e3ac..5e409bc 100644 --- a/garlic/fig/heat/mode.R +++ b/garlic/fig/heat/mode.R @@ -10,6 +10,7 @@ args=commandArgs(trailingOnly=TRUE) # Read the timetable from args[1] input_file = "input.json" if (length(args)>0) { input_file = args[1] } +if (length(args)>1) { output = args[2] } else { output = "?" } # Load the dataset in NDJSON format dataset = jsonlite::stream_in(file(input_file)) %>% @@ -62,7 +63,7 @@ heatmap_plot = function(df, colname, title) { guides(fill = guide_colorbar(barwidth=12, title.vjust=0.8)) + labs(x="cbs", y="rbs", title=sprintf("Heat granularity: %s", title), - subtitle=input_file) + + subtitle=output) + theme(legend.position="bottom") k=1 @@ -103,7 +104,7 @@ p = ggplot(df_square, aes(x=cbs, y=acc.time)) + labels = c("Total time"), guide = "legend") + labs(x="Blocksize (side)", y="Time (s)", fill="Estimated", color="Direct measurement", - title="Heat granularity: time distribution", subtitle=input_file) + title="Heat granularity: time distribution", subtitle=output) ggsave("area.time.png", plot=p, width=6, height=6, dpi=300) ggsave("area.time.pdf", plot=p, width=6, height=6, dpi=300) @@ -115,7 +116,7 @@ p = ggplot(df_square, aes(x=cbs, y=acc.time)) + theme(legend.position=c(0.5, 0.7)) + labs(x="Blocksize (side)", y="Time (s)", fill="Estimated", color="Direct measurement", - title="Heat granularity: time distribution", subtitle=input_file) + title="Heat granularity: time distribution", subtitle=output) ggsave("col.time.png", plot=p, width=6, height=6, dpi=300) ggsave("col.time.pdf", plot=p, width=6, height=6, dpi=300) diff --git a/garlic/fig/hpcg/granularity.R b/garlic/fig/hpcg/granularity.R index fbd18c6..29126da 100644 --- a/garlic/fig/hpcg/granularity.R +++ b/garlic/fig/hpcg/granularity.R @@ -7,6 +7,7 @@ library(viridis, warn.conflicts = FALSE) args = commandArgs(trailingOnly=TRUE) if (length(args)>0) { input_file = args[1] } else { input_file = "input" } +if (length(args)>1) { output = args[2] } else { output = "?" } df = jsonlite::stream_in(file(input_file), verbose=FALSE) %>% @@ -44,7 +45,7 @@ p = ggplot(df, aes(x=blocksPerCpu, y=normalized.time)) + geom_hline(yintercept=c(-0.01, 0.01), linetype="dashed", color="red") + theme_bw() + labs(x="Blocks per CPU", y="Normalized time", title="HPCG granularity: normalized time", - subtitle=input_file) + + subtitle=output) + theme(plot.subtitle=element_text(size=8)) ggsave("normalized.time.png", plot=p, width=w, height=h, dpi=dpi) @@ -54,7 +55,7 @@ p = ggplot(df, aes(x=blocksPerCpu, y=time)) + geom_point(shape=21, size=3) + theme_bw() + labs(x="Blocks per CPU", y="Time (s)", title="HPCG granularity: time", - subtitle=input_file) + + subtitle=output) + theme(plot.subtitle=element_text(size=8)) ggsave("time.png", plot=p, width=w, height=h, dpi=dpi) diff --git a/garlic/fig/hpcg/size.R b/garlic/fig/hpcg/size.R index c23be74..a7cc5f1 100644 --- a/garlic/fig/hpcg/size.R +++ b/garlic/fig/hpcg/size.R @@ -7,6 +7,7 @@ library(viridis, warn.conflicts = FALSE) args = commandArgs(trailingOnly=TRUE) if (length(args)>0) { input_file = args[1] } else { input_file = "input" } +if (length(args)>1) { output = args[2] } else { output = "?" } df = jsonlite::stream_in(file(input_file), verbose=FALSE) %>% @@ -62,7 +63,7 @@ p = ggplot(df, aes(x=sizePerCpu.z, y=time.nodes.elem)) + theme_bw() + labs(x="Size per CPU in Z", y="Time * nodes / spcz (s)", title="HPCG size: time * nodes / spcz", - subtitle=input_file) + + subtitle=output) + theme(plot.subtitle=element_text(size=8), legend.position="bottom") diff --git a/garlic/fig/hpcg/ss.R b/garlic/fig/hpcg/ss.R index a47ba12..3978618 100644 --- a/garlic/fig/hpcg/ss.R +++ b/garlic/fig/hpcg/ss.R @@ -7,6 +7,7 @@ library(viridis, warn.conflicts = FALSE) args = commandArgs(trailingOnly=TRUE) if (length(args)>0) { input_file = args[1] } else { input_file = "input" } +if (length(args)>1) { output = args[2] } else { output = "?" } df = jsonlite::stream_in(file(input_file), verbose=FALSE) %>% @@ -61,7 +62,7 @@ p = ggplot(df, aes(x=nodes, y=time.nodes)) + theme_bw() + labs(x="Nodes", y="Time * nodes (s)", title="HPCG strong scalability in Z", - subtitle=input_file) + + subtitle=output) + theme(plot.subtitle=element_text(size=8), legend.position="bottom") @@ -73,7 +74,7 @@ p = ggplot(df, aes(x=nodes, y=time.sizeZ, fill=sizePerCpu.z)) + theme_bw() + labs(x="Nodes", y="Time / npcz (s)", title="HPCG strong scalability in Z", color="Size per CPU in Z", - subtitle=input_file) + + subtitle=output) + theme(plot.subtitle=element_text(size=8), legend.position="bottom") diff --git a/garlic/fig/hpcg/ws.R b/garlic/fig/hpcg/ws.R index 69dca29..d12f35b 100644 --- a/garlic/fig/hpcg/ws.R +++ b/garlic/fig/hpcg/ws.R @@ -7,6 +7,7 @@ library(viridis, warn.conflicts = FALSE) args = commandArgs(trailingOnly=TRUE) if (length(args)>0) { input_file = args[1] } else { input_file = "input" } +if (length(args)>1) { output = args[2] } else { output = "?" } df = jsonlite::stream_in(file(input_file), verbose=FALSE) %>% @@ -62,7 +63,7 @@ p = ggplot(df, aes(x=nodes, y=time, fill=sizePerCpu.z)) + theme_bw() + labs(x="Nodes", y="Time (s)", title="HPCG weak scaling in Z", color="Size per CPU in Z", - subtitle=input_file) + + subtitle=output) + theme(plot.subtitle=element_text(size=8), legend.position="bottom") diff --git a/garlic/fig/nbody/granularity.R b/garlic/fig/nbody/granularity.R index eb9c829..85ee0b4 100644 --- a/garlic/fig/nbody/granularity.R +++ b/garlic/fig/nbody/granularity.R @@ -7,6 +7,7 @@ library(viridis, warn.conflicts = FALSE) # Load the arguments (argv) args = commandArgs(trailingOnly=TRUE) if (length(args)>0) { input_file = args[1] } else { input_file = "input" } +if (length(args)>1) { output = args[2] } else { output = "?" } df = jsonlite::stream_in(file(input_file), verbose=FALSE) %>% jsonlite::flatten() %>% @@ -38,7 +39,7 @@ p = ggplot(df, aes(x=blocksize, y=normalized.time, color=branch)) + facet_wrap(~ branch) + theme_bw() + labs(x="Blocksize", y="Normalized Time", title="NBody Granularity: Normalized Time", - subtitle=input_file) + + subtitle=output) + theme(plot.subtitle=element_text(size=8)) + theme(legend.position="bottom") + theme(legend.text = element_text(size=7)) @@ -52,7 +53,7 @@ p = ggplot(df, aes(x=blocksize, y=time)) + geom_boxplot() + theme_bw() + labs(x="Blocksize", y="Time (s)", title="NBody Granularity: Time", - subtitle=input_file) + + subtitle=output) + theme(plot.subtitle=element_text(size=8)) + theme(legend.position="bottom") + theme(legend.text = element_text(size=7)) diff --git a/garlic/fig/nbody/numa.R b/garlic/fig/nbody/numa.R index a76eb12..b080648 100644 --- a/garlic/fig/nbody/numa.R +++ b/garlic/fig/nbody/numa.R @@ -8,6 +8,7 @@ library(stringr) # Load the arguments (argv) args = commandArgs(trailingOnly=TRUE) if (length(args)>0) { input_file = args[1] } else { input_file = "input" } +if (length(args)>1) { output = args[2] } else { output = "?" } df = jsonlite::stream_in(file(input_file), verbose=FALSE) %>% jsonlite::flatten() %>% @@ -60,7 +61,7 @@ p = ggplot(df, aes(x=blocksize, y=normalized.time, color=interleaveMem)) + labs(x="Blocksize", y="Normalized time", title=sprintf("NBody NUMA (%s | %d Nodes): Normalized time", branch, nodes), - subtitle=input_file) + + subtitle=output) + theme(plot.subtitle=element_text(size=8)) + theme(legend.position="bottom") @@ -77,7 +78,7 @@ p = ggplot(df, aes(x=blocksize, y=time, color=interleaveMem)) + labs(x="Blocksize", y="Time (s)", title=sprintf("NBody NUMA (%s | %d Nodes): Time", branch, nodes), - subtitle=input_file) + + subtitle=output) + theme(plot.subtitle=element_text(size=8)) + theme(legend.position="bottom") diff --git a/garlic/fig/nbody/old/baseline.R b/garlic/fig/nbody/old/baseline.R index 11584dd..5509d8e 100644 --- a/garlic/fig/nbody/old/baseline.R +++ b/garlic/fig/nbody/old/baseline.R @@ -9,6 +9,7 @@ args=commandArgs(trailingOnly=TRUE) # Read the timetable from args[1] input_file = "input.json" if (length(args)>0) { input_file = args[1] } +if (length(args)>1) { output = args[2] } else { output = "?" } # Load the dataset in NDJSON format dataset = jsonlite::stream_in(file(input_file)) %>% @@ -79,7 +80,7 @@ p = ggplot(data=D, aes(x=blocksPerCpuFactor, y=tnorm, color=bad)) + # Labels labs(x="Blocks/CPU", y="Normalized time", title=sprintf("Nbody normalized time. Particles=%d", particles), - subtitle=input_file) + + subtitle=output) + # Center the title @@ -117,7 +118,7 @@ p1 = ggplot(D, aes(x=blocksizeFactor, y=time)) + labs(x="Blocksize", y="Time (s)", title=sprintf("Nbody granularity. Particles=%d", particles), - subtitle=input_file) + + subtitle=output) + theme_bw() + theme(plot.subtitle=element_text(size=8)) + #theme(legend.position = c(0.5, 0.8)) + @@ -138,7 +139,7 @@ p2 = ggplot(D, aes(x=blocksPerCpuFactor, y=time)) + labs(x="Blocks/CPU", y="Time (s)", title=sprintf("Nbody granularity. Particles=%d", particles), - subtitle=input_file) + + subtitle=output) + theme_bw() + theme(plot.subtitle=element_text(size=8)) + diff --git a/garlic/fig/nbody/old/freeCpu.R b/garlic/fig/nbody/old/freeCpu.R index f178734..cf97106 100644 --- a/garlic/fig/nbody/old/freeCpu.R +++ b/garlic/fig/nbody/old/freeCpu.R @@ -8,6 +8,7 @@ args=commandArgs(trailingOnly=TRUE) # Read the timetable from args[1] input_file = "input.json" if (length(args)>0) { input_file = args[1] } +if (length(args)>1) { output = args[2] } else { output = "?" } # Load the dataset in NDJSON format dataset = jsonlite::stream_in(file(input_file)) %>% @@ -50,7 +51,7 @@ p = ggplot(data=D, aes(x=blocksPerCpuFactor, y=tnorm)) + # Labels labs(x="Blocks/CPU", y="Normalized time", title=sprintf("Nbody normalized time. Particles=%d", particles), - subtitle=input_file) + + subtitle=output) + # Center the title #theme(plot.title = element_text(hjust = 0.5)) + @@ -95,7 +96,7 @@ p = ggplot(D, aes(x=blocksPerCpuFactor, y=time, color=freeCpu)) + labs(x="Blocks/CPU", y="Time (s)", title=sprintf("Nbody granularity. Particles=%d", particles), - subtitle=input_file) + + subtitle=output) + theme_bw() + theme(plot.subtitle=element_text(size=8)) + theme(legend.position = c(0.5, 0.88)) + diff --git a/garlic/fig/nbody/old/jemalloc.R b/garlic/fig/nbody/old/jemalloc.R index 788149f..37fc991 100644 --- a/garlic/fig/nbody/old/jemalloc.R +++ b/garlic/fig/nbody/old/jemalloc.R @@ -8,6 +8,7 @@ args=commandArgs(trailingOnly=TRUE) # Read the timetable from args[1] input_file = "input.json" if (length(args)>0) { input_file = args[1] } +if (length(args)>1) { output = args[2] } else { output = "?" } # Load the dataset in NDJSON format dataset = jsonlite::stream_in(file(input_file)) %>% @@ -52,7 +53,7 @@ p = ggplot(data=D, aes(x=nblocks, y=tnorm)) + # Labels labs(x="Num blocks", y="Normalized time", title=sprintf("Nbody normalized time. Particles=%d", particles), - subtitle=input_file) + + subtitle=output) + # Center the title #theme(plot.title = element_text(hjust = 0.5)) + @@ -96,7 +97,7 @@ p = ggplot(D, aes(x=blocksPerCpu, y=time, color=jemalloc)) + labs(x="Blocks/CPU", y="Time (s)", title=sprintf("Nbody granularity. Particles=%d", particles), - subtitle=input_file) + + subtitle=output) + theme_bw() + theme(plot.subtitle=element_text(size=8)) + theme(legend.position = c(0.5, 0.88)) + diff --git a/garlic/fig/nbody/old/scaling.R b/garlic/fig/nbody/old/scaling.R index cf91a87..1d50a37 100644 --- a/garlic/fig/nbody/old/scaling.R +++ b/garlic/fig/nbody/old/scaling.R @@ -8,6 +8,7 @@ args=commandArgs(trailingOnly=TRUE) # Read the timetable from args[1] input_file = "input.json" if (length(args)>0) { input_file = args[1] } +if (length(args)>1) { output = args[2] } else { output = "?" } # Load the dataset in NDJSON format dataset = jsonlite::stream_in(file(input_file)) %>% @@ -53,7 +54,7 @@ p = ggplot(data=D, aes(x=blocksPerCpuFactor, y=tnorm, color=bad)) + # Labels labs(x="Blocks/CPU", y="Normalized time", title=sprintf("Nbody normalized time. Particles=%d", particles), - subtitle=input_file) + + subtitle=output) + # Center the title @@ -94,7 +95,7 @@ p = ggplot(D, aes(x=blocksPerCpuFactor, y=time)) + labs(x="Blocks/CPU", y="Time (s)", title=sprintf("Nbody granularity. Particles=%d", particles), - subtitle=input_file) + + subtitle=output) + theme_bw() + theme(plot.subtitle=element_text(size=8)) + theme(legend.position = c(0.5, 0.88)) + diff --git a/garlic/fig/nbody/ss.R b/garlic/fig/nbody/ss.R index 041cd82..2ce9b2c 100644 --- a/garlic/fig/nbody/ss.R +++ b/garlic/fig/nbody/ss.R @@ -7,6 +7,7 @@ library(viridis, warn.conflicts = FALSE) # Load the arguments (argv) args = commandArgs(trailingOnly=TRUE) if (length(args)>0) { input_file = args[1] } else { input_file = "input" } +if (length(args)>1) { output = args[2] } else { output = "?" } df = jsonlite::stream_in(file(input_file), verbose=FALSE) %>% jsonlite::flatten() %>% @@ -41,7 +42,7 @@ p = ggplot(df, aes(x=nodes, y=normalized.time, color=branch)) + facet_wrap(~ branch) + theme_bw() + labs(x="Nodes", y="Normalized time (s)", title="NBody Scaling: Normalized Time", - subtitle=input_file) + + subtitle=output) + theme(plot.subtitle=element_text(size=5)) + theme(legend.position="bottom") + theme(legend.text = element_text(size=7)) @@ -56,7 +57,7 @@ p = ggplot(df, aes(x=nodes, y=time.nodes, color=branch)) + geom_line(aes(y=median.time.nodes, group=branch)) + theme_bw() + labs(x="Nodes", y="Time * nodes (s)", title="NBody Scaling: Time * nodes", - subtitle=input_file) + + subtitle=output) + theme(plot.subtitle=element_text(size=5)) + theme(legend.position="bottom") + theme(legend.text = element_text(size=7)) diff --git a/garlic/fig/osu/bw.R b/garlic/fig/osu/bw.R index df11240..5307b87 100644 --- a/garlic/fig/osu/bw.R +++ b/garlic/fig/osu/bw.R @@ -11,6 +11,7 @@ args=commandArgs(trailingOnly=TRUE) # Read the timetable from args[1] input_file = "input.json" if (length(args)>0) { input_file = args[1] } +if (length(args)>1) { output = args[2] } else { output = "?" } # Load the dataset in NDJSON format dataset = jsonlite::stream_in(file(input_file), verbose=FALSE) %>% @@ -39,7 +40,7 @@ w=6 p = ggplot(data=df, aes(x=size, y=median.bw)) + labs(x="Message size", y="Bandwidth (GB/s)", #title=sprintf("OSU benchmark: osu_bw", nodes, tasksPerNode, cpusPerTask), - subtitle=gsub("-", "\uad", input_file)) + + subtitle=gsub("-", "\uad", output)) + geom_line(aes(linetype=unitName)) + geom_point(aes(shape=unitName), size=1.5) + scale_shape_discrete(name = "MPI version") + @@ -73,7 +74,7 @@ ggsave("median-lines.pdf", plot=p, width=w, height=h, dpi=ppi) p = ggplot(data=df, aes(x=size, y=bw)) + labs(x="Message size", y="Bandwidth (MB/s)", #title=sprintf("OSU benchmark: osu_bw", nodes, tasksPerNode, cpusPerTask), - subtitle=input_file) + + subtitle=output) + geom_line(aes(y=median.bw, linetype=unitName, group=unitName)) + geom_point(aes(shape=unitName), size=2) + scale_shape(solid = FALSE) + diff --git a/garlic/fig/osu/eager.R b/garlic/fig/osu/eager.R index 2ec73bc..aa9e573 100644 --- a/garlic/fig/osu/eager.R +++ b/garlic/fig/osu/eager.R @@ -8,6 +8,7 @@ args=commandArgs(trailingOnly=TRUE) # Read the timetable from args[1] input_file = "input.json" if (length(args)>0) { input_file = args[1] } +if (length(args)>1) { output = args[2] } else { output = "?" } # Load the dataset in NDJSON format dataset = jsonlite::stream_in(file(input_file), verbose=FALSE) %>% @@ -49,7 +50,7 @@ w=8 p = ggplot(data=df, aes(x=sizeKB, y=bw)) + labs(x="Message size (KB)", y="Bandwidth (MB/s)", title=sprintf("OSU benchmark: osu_bw --iterations %d", iterations), - subtitle=input_file) + + subtitle=output) + geom_point(shape=21, size=3) + geom_vline(aes(xintercept = PSM2_MQ_EAGER_SDMA_SZ/1024), color="blue") + geom_vline(xintercept = 10, color="red") + diff --git a/garlic/fig/osu/impi.R b/garlic/fig/osu/impi.R index e2b7418..c62a334 100644 --- a/garlic/fig/osu/impi.R +++ b/garlic/fig/osu/impi.R @@ -8,6 +8,7 @@ args=commandArgs(trailingOnly=TRUE) # Read the timetable from args[1] input_file = "input.json" if (length(args)>0) { input_file = args[1] } +if (length(args)>1) { output = args[2] } else { output = "?" } # Load the dataset in NDJSON format dataset = jsonlite::stream_in(file(input_file), verbose=FALSE) %>% @@ -36,7 +37,7 @@ p = ggplot(data=df, aes(x=size, y=bw)) + labs(x="Size (bytes)", y="Bandwidth (MB/s)", title=sprintf("OSU bandwidth benchmark: nodes=%d tasksPerNode=%d cpusPerTask=%d", nodes, tasksPerNode, cpusPerTask), - subtitle=input_file) + + subtitle=output) + geom_boxplot(aes(color=threshold, group=interaction(threshold, sizeFactor))) + scale_x_continuous(trans=log2_trans()) + #scale_y_log10(breaks = breaks, minor_breaks = minor_breaks) + @@ -53,7 +54,7 @@ p = ggplot(data=df, aes(x=size, y=medianBw)) + labs(x="Size (bytes)", y="Bandwidth (MB/s)", title=sprintf("OSU benchmark: osu_bw", nodes, tasksPerNode, cpusPerTask), - subtitle=input_file) + + subtitle=output) + geom_line(aes(color=threshold, linetype=threshold)) + geom_point(aes(color=threshold, shape=threshold)) + geom_hline(yintercept = 100e3 / 8, color="red") + diff --git a/garlic/fig/osu/latency.R b/garlic/fig/osu/latency.R index a316a0d..bb018e6 100644 --- a/garlic/fig/osu/latency.R +++ b/garlic/fig/osu/latency.R @@ -9,6 +9,7 @@ args=commandArgs(trailingOnly=TRUE) # Read the timetable from args[1] input_file = "input.json" if (length(args)>0) { input_file = args[1] } +if (length(args)>1) { output = args[2] } else { output = "?" } # Load the dataset in NDJSON format dataset = jsonlite::stream_in(file(input_file), verbose=FALSE) %>% @@ -39,7 +40,7 @@ w=6 p = ggplot(data=df, aes(x=size, y=medianLatency)) + labs(x="Message size", y="Median latency (µs)", #title=sprintf("OSU benchmark: osu_latency", nodes, tasksPerNode, cpusPerTask), - subtitle=gsub("-", "\uad", input_file)) + + subtitle=gsub("-", "\uad", output)) + geom_line(aes(linetype=unitName)) + geom_point(aes(shape=unitName), size=2) + scale_y_log10(breaks = breaks, minor_breaks = minor_breaks) + @@ -59,7 +60,7 @@ ggsave("median-lines.pdf", plot=p, width=w, height=h, dpi=ppi) p = ggplot(data=df, aes(x=size, y=latency)) + labs(x="Size (bytes)", y="Latency (us)", #title=sprintf("OSU benchmark: osu_latency", nodes, tasksPerNode, cpusPerTask), - subtitle=input_file) + + subtitle=output) + geom_line(aes(y=medianLatency, linetype=unitName, group=unitName)) + geom_point(aes(shape=unitName), size=2) + scale_y_log10(breaks = breaks, minor_breaks = minor_breaks) + diff --git a/garlic/fig/osu/mtu.R b/garlic/fig/osu/mtu.R index f4ea23c..c009a71 100644 --- a/garlic/fig/osu/mtu.R +++ b/garlic/fig/osu/mtu.R @@ -8,6 +8,7 @@ args=commandArgs(trailingOnly=TRUE) # Read the timetable from args[1] input_file = "input.json" if (length(args)>0) { input_file = args[1] } +if (length(args)>1) { output = args[2] } else { output = "?" } # Load the dataset in NDJSON format dataset = jsonlite::stream_in(file(input_file), verbose=FALSE) %>% @@ -55,7 +56,7 @@ p = ggplot(data=df, aes(x=sizeKB, y=bw)) + geom_vline(aes(xintercept = PSM2_MTU.val/1024), color="red") + labs(x="Message size (KiB)", y="Bandwidth (GB/s)", #title=sprintf("OSU benchmark: osu_bw --iterations %d", iterations), - subtitle=gsub("-", "\uad", input_file)) + + subtitle=gsub("-", "\uad", output)) + geom_point(shape=21, size=2) + #annotate("text", x = 10.2, y = 8.5e3, label = "MTU = 10KB", color="red", hjust=0) + facet_wrap(vars(PSM2_MTU), nrow=3, labeller = "label_both") + diff --git a/garlic/fig/saiph/granularity.R b/garlic/fig/saiph/granularity.R index b4ba304..66bd7c6 100644 --- a/garlic/fig/saiph/granularity.R +++ b/garlic/fig/saiph/granularity.R @@ -9,6 +9,7 @@ args = commandArgs(trailingOnly=TRUE) # Set the input dataset if given in argv[1], or use "input" as default if (length(args)>0) { input_file = args[1] } else { input_file = "input" } +if (length(args)>1) { output = args[2] } else { output = "?" } df = jsonlite::stream_in(file(input_file), verbose=FALSE) %>% @@ -72,7 +73,7 @@ p = ggplot(df, aes(x=nbly, y=normalized.time, fill=sizex)) + facet_wrap(branch ~ .) + labs(y="Normalized time", title=sprintf("%s: normalized time", maintitle), - subtitle=input_file) + + subtitle=output) + theme(plot.subtitle=element_text(size=8)) ggsave("normalized.time.png", plot=p, width=w, height=h, dpi=dpi) @@ -87,7 +88,7 @@ p = ggplot(df, aes(x=blocksPerCpu, y=time, color=sizex)) + scale_x_continuous(trans=log2_trans()) + labs(y="Time (s)", title=sprintf("%s: time", maintitle), - subtitle=input_file) + + subtitle=output) + theme(plot.subtitle=element_text(size=8)) ggsave("time.png", plot=p, width=w, height=h, dpi=dpi) diff --git a/garlic/fig/saiph/ss.R b/garlic/fig/saiph/ss.R index 2be666e..6498f30 100644 --- a/garlic/fig/saiph/ss.R +++ b/garlic/fig/saiph/ss.R @@ -9,6 +9,7 @@ args = commandArgs(trailingOnly=TRUE) # Set the input dataset if given in argv[1], or use "input" as default if (length(args)>0) { input_file = args[1] } else { input_file = "input" } +if (length(args)>1) { output = args[2] } else { output = "?" } df = jsonlite::stream_in(file(input_file), verbose=FALSE) %>% @@ -72,7 +73,7 @@ p = ggplot(df, aes(x=nodes, y=normalized.time, fill=sizex)) + facet_wrap(branch ~ .) + labs(x="nodes", y="Normalized time", title=sprintf("%s: normalized time", maintitle), - subtitle=input_file) + + subtitle=output) + theme(plot.subtitle=element_text(size=8)) ggsave("normalized.time.png", plot=p, width=w, height=h, dpi=dpi) @@ -87,7 +88,7 @@ p = ggplot(df, aes(x=nodes, y=time, color=sizex)) + # facet_wrap(branch ~ .) + labs(x="nodes", y="Time (s)", title=sprintf("%s: time", maintitle), - subtitle=input_file) + + subtitle=output) + theme(plot.subtitle=element_text(size=8)) ggsave("time.png", plot=p, width=w, height=h, dpi=dpi) @@ -102,7 +103,7 @@ p = ggplot(df, aes(x=nodes, y=time.nodes, color=sizex)) + #facet_wrap(branch ~ .) + labs(x="nodes", y="Time * nodes (s)", title=sprintf("%s: time * nodes", maintitle), - subtitle=input_file) + + subtitle=output) + theme(plot.subtitle=element_text(size=8)) ggsave("time.nodes.png", plot=p, width=w, height=h, dpi=dpi) diff --git a/garlic/pp/rplot.nix b/garlic/pp/rplot.nix index 35609a2..faaef53 100644 --- a/garlic/pp/rplot.nix +++ b/garlic/pp/rplot.nix @@ -147,7 +147,7 @@ in stdenv.mkDerivation { dataset="${dataset}" ln -s $dataset input - Rscript --vanilla ${script} ${dataset} + Rscript --vanilla ${script} ${dataset} "$out" if [ "''${dataset##*.}" == gz ]; then gunzip --stdout $dataset From 5de45cb2476e4942c986d9279b9adad60e8e7d75 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 21 Apr 2021 17:42:40 +0200 Subject: [PATCH 711/987] rplot: patch generated PDFs to use hyphen The ISOLatin1 encoding uses /minus as char 45, while the (-) symbol used in the paths is a /hyphen. This hack allows the paths in the generated PDFs to be copied directly into a terminal. --- garlic/pp/rplot.nix | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/garlic/pp/rplot.nix b/garlic/pp/rplot.nix index faaef53..cf194b6 100644 --- a/garlic/pp/rplot.nix +++ b/garlic/pp/rplot.nix @@ -149,6 +149,11 @@ in stdenv.mkDerivation { ln -s $dataset input Rscript --vanilla ${script} ${dataset} "$out" + # HACK: replace the \minus for a \hyphen to keep the file paths intact, so + # they can be copied to the terminal directly. The StandardEncoding is not + # working (AdobeStd.enc). + find "$out" -name '*.pdf' | xargs -l1 sed -i 's.45/minus.45/hyphen.g' + if [ "''${dataset##*.}" == gz ]; then gunzip --stdout $dataset else From d5626851deaa592646c0dad028d3cfdf82233381 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 21 Apr 2021 17:51:05 +0200 Subject: [PATCH 712/987] osu: remove gsub hack and clean bw figure --- garlic/fig/osu/bw.R | 41 +---------------------------------------- 1 file changed, 1 insertion(+), 40 deletions(-) diff --git a/garlic/fig/osu/bw.R b/garlic/fig/osu/bw.R index 5307b87..876519d 100644 --- a/garlic/fig/osu/bw.R +++ b/garlic/fig/osu/bw.R @@ -3,8 +3,6 @@ library(dplyr, warn.conflicts = FALSE) library(scales) library(jsonlite) library(stringr) -#library(extrafont) -#library(Cairo) args=commandArgs(trailingOnly=TRUE) @@ -39,25 +37,19 @@ w=6 p = ggplot(data=df, aes(x=size, y=median.bw)) + labs(x="Message size", y="Bandwidth (GB/s)", - #title=sprintf("OSU benchmark: osu_bw", nodes, tasksPerNode, cpusPerTask), - subtitle=gsub("-", "\uad", output)) + + subtitle=output) + geom_line(aes(linetype=unitName)) + geom_point(aes(shape=unitName), size=1.5) + scale_shape_discrete(name = "MPI version") + scale_linetype_discrete(name = "MPI version") + - #scale_color_discrete(name = "MPI version") + geom_hline(yintercept=12.5, color="red") + annotate("text", x=1, y=12.5 * .95, label="Max: 12.5GB/s (100Gbps)", hjust=0, vjust=1, size=3) + - #scale_x_continuous(trans=log2_trans()) + scale_x_continuous(trans=log2_trans(), labels=label_bytes("auto_binary"), n.breaks = 12, - #breaks=unique(df$size), - #minor_breaks=NULL ) + - #scale_y_log10(breaks = breaks, minor_breaks = minor_breaks) + theme_bw() + theme(plot.subtitle = element_text(size=8, family="mono")) + theme(legend.justification = c(1,0), legend.position = c(0.99, 0.01)) + @@ -65,34 +57,3 @@ p = ggplot(data=df, aes(x=size, y=median.bw)) + ggsave("median-lines.png", plot=p, width=w, height=h, dpi=ppi) ggsave("median-lines.pdf", plot=p, width=w, height=h, dpi=ppi) -#ggsave("median-lines-cairo.pdf", plot=p, width=w, height=h, dpi=ppi, device=cairo_pdf) -#CairoPDF(file="median-lines-Cairo.pdf", width=w, height=h) -#print(p) -#dev.off() - - -p = ggplot(data=df, aes(x=size, y=bw)) + - labs(x="Message size", y="Bandwidth (MB/s)", - #title=sprintf("OSU benchmark: osu_bw", nodes, tasksPerNode, cpusPerTask), - subtitle=output) + - geom_line(aes(y=median.bw, linetype=unitName, group=unitName)) + - geom_point(aes(shape=unitName), size=2) + - scale_shape(solid = FALSE) + - geom_hline(yintercept = 100e3 / 8, color="red") + - annotate("text", x = 8, y = (100e3 / 8) * 0.95, - label = "Max: 12.5GB/s (100Gbps)") + - #scale_x_continuous(trans=log2_trans()) + - scale_x_continuous(trans=log2_trans(), - labels=label_bytes("auto_binary"), - breaks=unique(df$size), - minor_breaks=NULL) + - #scale_y_log10(breaks = breaks, minor_breaks = minor_breaks) + - theme_bw() + - theme(plot.subtitle = element_text(size=4)) + - theme(legend.position = c(0.2, 0.6)) + - theme(axis.text.x = element_text(angle=-45, hjust=0)) - -ggsave("bw.png", plot=p, width=w, height=h, dpi=ppi) -ggsave("bw.pdf", plot=p, width=w, height=h, dpi=ppi) - -warnings() From a9e15792427de584c11f0b1e9b078d406e454bc8 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 21 Apr 2021 17:54:08 +0200 Subject: [PATCH 713/987] osu: remove gsub hack --- garlic/fig/osu/latency.R | 2 +- garlic/fig/osu/mtu.R | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/garlic/fig/osu/latency.R b/garlic/fig/osu/latency.R index bb018e6..e116a73 100644 --- a/garlic/fig/osu/latency.R +++ b/garlic/fig/osu/latency.R @@ -40,7 +40,7 @@ w=6 p = ggplot(data=df, aes(x=size, y=medianLatency)) + labs(x="Message size", y="Median latency (µs)", #title=sprintf("OSU benchmark: osu_latency", nodes, tasksPerNode, cpusPerTask), - subtitle=gsub("-", "\uad", output)) + + subtitle=output) + geom_line(aes(linetype=unitName)) + geom_point(aes(shape=unitName), size=2) + scale_y_log10(breaks = breaks, minor_breaks = minor_breaks) + diff --git a/garlic/fig/osu/mtu.R b/garlic/fig/osu/mtu.R index c009a71..09e2f63 100644 --- a/garlic/fig/osu/mtu.R +++ b/garlic/fig/osu/mtu.R @@ -56,7 +56,7 @@ p = ggplot(data=df, aes(x=sizeKB, y=bw)) + geom_vline(aes(xintercept = PSM2_MTU.val/1024), color="red") + labs(x="Message size (KiB)", y="Bandwidth (GB/s)", #title=sprintf("OSU benchmark: osu_bw --iterations %d", iterations), - subtitle=gsub("-", "\uad", output)) + + subtitle=output) + geom_point(shape=21, size=2) + #annotate("text", x = 10.2, y = 8.5e3, label = "MTU = 10KB", color="red", hjust=0) + facet_wrap(vars(PSM2_MTU), nrow=3, labeller = "label_both") + From df62451fcd917ab8ca132ce2c764ad312b6a85d9 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 21 Apr 2021 17:58:59 +0200 Subject: [PATCH 714/987] sh: add helper script to fix the figure subtitle --- garlic/sh/fix-figure-subtitle.sh | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100755 garlic/sh/fix-figure-subtitle.sh diff --git a/garlic/sh/fix-figure-subtitle.sh b/garlic/sh/fix-figure-subtitle.sh new file mode 100755 index 0000000..a98614b --- /dev/null +++ b/garlic/sh/fix-figure-subtitle.sh @@ -0,0 +1,6 @@ +#!/bin/sh + +if grep -q 'output = args[2]' "$1"; then exit 0; fi + +sed '/length(args)>0/aif (length(args)>1) { output = args[2] } else { output = "?" }' -i "$1" +sed '/jsonlite::flatten/,$s/input_file/output/g' -i "$1" From a4b8f8e94be7413816fef8ff01437162ec595614 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 6 Apr 2021 19:19:24 +0200 Subject: [PATCH 715/987] apps: disable hardening in all garlic apps --- garlic/apps/bigsort/default.nix | 2 ++ garlic/apps/bigsort/genseq.nix | 2 ++ garlic/apps/bigsort/shuffle.nix | 2 ++ garlic/apps/cpic/default.nix | 2 ++ garlic/apps/creams/default.nix | 4 ++-- garlic/apps/creams/input.nix | 2 ++ garlic/apps/fwi/default.nix | 2 ++ garlic/apps/fwi/params.nix | 2 ++ garlic/apps/heat/default.nix | 2 ++ garlic/apps/hpccg/default.nix | 1 + garlic/apps/hpcg/default.nix | 1 + garlic/apps/ifsker/default.nix | 1 + garlic/apps/lulesh/default.nix | 1 + garlic/apps/miniamr/default.nix | 1 + garlic/apps/nbody/default.nix | 1 + garlic/apps/ppong/default.nix | 1 + garlic/apps/saiph/default.nix | 5 ++--- 17 files changed, 27 insertions(+), 5 deletions(-) diff --git a/garlic/apps/bigsort/default.nix b/garlic/apps/bigsort/default.nix index 21c5aa2..c3f7d1b 100644 --- a/garlic/apps/bigsort/default.nix +++ b/garlic/apps/bigsort/default.nix @@ -48,4 +48,6 @@ stdenv.mkDerivation rec { ''; programPath = "/bin/BigSort"; + + hardeningDisable = [ "all" ]; } diff --git a/garlic/apps/bigsort/genseq.nix b/garlic/apps/bigsort/genseq.nix index 2071d51..09adb25 100644 --- a/garlic/apps/bigsort/genseq.nix +++ b/garlic/apps/bigsort/genseq.nix @@ -40,4 +40,6 @@ stdenv.mkDerivation rec { ''; programPath = "/bin/genseq"; + + hardeningDisable = [ "all" ]; } diff --git a/garlic/apps/bigsort/shuffle.nix b/garlic/apps/bigsort/shuffle.nix index 6262377..c19366e 100644 --- a/garlic/apps/bigsort/shuffle.nix +++ b/garlic/apps/bigsort/shuffle.nix @@ -40,4 +40,6 @@ stdenv.mkDerivation rec { ''; programPath = "/bin/shuffle"; + + hardeningDisable = [ "all" ]; } diff --git a/garlic/apps/cpic/default.nix b/garlic/apps/cpic/default.nix index b6b1480..284c1e9 100644 --- a/garlic/apps/cpic/default.nix +++ b/garlic/apps/cpic/default.nix @@ -38,4 +38,6 @@ stdenv.mkDerivation rec { mkdir -p $out/bin cp cpic $out/bin/cpic ''; + + hardeningDisable = [ "all" ]; } diff --git a/garlic/apps/creams/default.nix b/garlic/apps/creams/default.nix index cdcc14e..c083886 100644 --- a/garlic/apps/creams/default.nix +++ b/garlic/apps/creams/default.nix @@ -37,8 +37,6 @@ in buildInputs = [ nanos6 mpi cc tampi mcxx ]; - hardeningDisable = [ "all" ]; - configurePhase = '' export TAMPI_HOME=${tampi} @@ -54,4 +52,6 @@ in mkdir -p $out/bin cp -a build/* $out/bin ''; + + hardeningDisable = [ "all" ]; } diff --git a/garlic/apps/creams/input.nix b/garlic/apps/creams/input.nix index 8febb5b..1749a72 100644 --- a/garlic/apps/creams/input.nix +++ b/garlic/apps/creams/input.nix @@ -33,4 +33,6 @@ in mkdir -p $out cp -a SodTubeBenchmark $out/ ''; + + hardeningDisable = [ "all" ]; } diff --git a/garlic/apps/fwi/default.nix b/garlic/apps/fwi/default.nix index f58a2af..d826e7f 100644 --- a/garlic/apps/fwi/default.nix +++ b/garlic/apps/fwi/default.nix @@ -71,4 +71,6 @@ in ''; programPath = "/bin/fwi"; + + hardeningDisable = [ "all" ]; } diff --git a/garlic/apps/fwi/params.nix b/garlic/apps/fwi/params.nix index 97e27ab..8dce26b 100644 --- a/garlic/apps/fwi/params.nix +++ b/garlic/apps/fwi/params.nix @@ -59,4 +59,6 @@ in mkdir -p $out/bin cp ModelGenerator $out/bin/ ''; + + hardeningDisable = [ "all" ]; } diff --git a/garlic/apps/heat/default.nix b/garlic/apps/heat/default.nix index e922322..02e8b76 100644 --- a/garlic/apps/heat/default.nix +++ b/garlic/apps/heat/default.nix @@ -34,4 +34,6 @@ in mkdir -p $out/etc cp heat.conf $out/etc/ ''; + + hardeningDisable = [ "all" ]; } diff --git a/garlic/apps/hpccg/default.nix b/garlic/apps/hpccg/default.nix index 5af59b3..9193736 100644 --- a/garlic/apps/hpccg/default.nix +++ b/garlic/apps/hpccg/default.nix @@ -50,4 +50,5 @@ in cp test_HPCCG-mpi.exe $out/bin ''; + hardeningDisable = [ "all" ]; } diff --git a/garlic/apps/hpcg/default.nix b/garlic/apps/hpcg/default.nix index 25faa87..245012e 100644 --- a/garlic/apps/hpcg/default.nix +++ b/garlic/apps/hpcg/default.nix @@ -40,4 +40,5 @@ in programPath = "/bin/xhpcg"; + hardeningDisable = [ "all" ]; } diff --git a/garlic/apps/ifsker/default.nix b/garlic/apps/ifsker/default.nix index 2b3e001..5ec28fa 100644 --- a/garlic/apps/ifsker/default.nix +++ b/garlic/apps/ifsker/default.nix @@ -55,4 +55,5 @@ in programPath = "/bin/${name}"; + hardeningDisable = [ "all" ]; } diff --git a/garlic/apps/lulesh/default.nix b/garlic/apps/lulesh/default.nix index 5a43ee5..d5202c5 100644 --- a/garlic/apps/lulesh/default.nix +++ b/garlic/apps/lulesh/default.nix @@ -43,4 +43,5 @@ in ''; programPath = "/bin/${name}"; + hardeningDisable = [ "all" ]; } diff --git a/garlic/apps/miniamr/default.nix b/garlic/apps/miniamr/default.nix index cc0450b..f005ead 100644 --- a/garlic/apps/miniamr/default.nix +++ b/garlic/apps/miniamr/default.nix @@ -43,4 +43,5 @@ stdenv.mkDerivation rec { programPath = "/bin/miniAMR.x"; + hardeningDisable = [ "all" ]; } diff --git a/garlic/apps/nbody/default.nix b/garlic/apps/nbody/default.nix index 525d52a..f003261 100644 --- a/garlic/apps/nbody/default.nix +++ b/garlic/apps/nbody/default.nix @@ -54,4 +54,5 @@ in cp nbody* $out/bin/${name} ''; + hardeningDisable = [ "all" ]; } diff --git a/garlic/apps/ppong/default.nix b/garlic/apps/ppong/default.nix index 2a4c399..09a72a4 100644 --- a/garlic/apps/ppong/default.nix +++ b/garlic/apps/ppong/default.nix @@ -31,4 +31,5 @@ stdenv.mkDerivation { ''; buildInputs = [ mpi ]; + hardeningDisable = [ "all" ]; } diff --git a/garlic/apps/saiph/default.nix b/garlic/apps/saiph/default.nix index 6118afd..c09c1f7 100644 --- a/garlic/apps/saiph/default.nix +++ b/garlic/apps/saiph/default.nix @@ -62,9 +62,6 @@ in vtk boost ]; - - # Required for nanos6 - hardeningDisable = [ "all" ]; preBuild = '' cd saiphv2/cpp/src @@ -103,4 +100,6 @@ in cp obj/libsaiphv2.so $out/lib/ cp bin/Heat3D_vect $out/bin/ ''; + + hardeningDisable = [ "all" ]; } From 760787858a991c8e8ccad6ae18fdd835c06e8436 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 21 Apr 2021 19:42:37 +0200 Subject: [PATCH 716/987] bsc: disable hardening in some packages --- bsc/babeltrace2/default.nix | 1 + bsc/extrae/default.nix | 1 + bsc/llvm-ompss2/clang.nix | 4 +++- bsc/lmbench/default.nix | 2 +- bsc/mpich/default.nix | 1 + bsc/openmpi/default.nix | 2 ++ bsc/osu/default.nix | 1 + bsc/tampi/default.nix | 2 ++ bsc/tampi/git.nix | 1 + overlay.nix | 2 ++ 10 files changed, 15 insertions(+), 2 deletions(-) diff --git a/bsc/babeltrace2/default.nix b/bsc/babeltrace2/default.nix index 344e580..43ae45c 100644 --- a/bsc/babeltrace2/default.nix +++ b/bsc/babeltrace2/default.nix @@ -24,6 +24,7 @@ stdenv.mkDerivation rec { enableParallelBuilding = true; nativeBuildInputs = [ pkgconfig ]; buildInputs = [ glib libuuid popt elfutils python3 swig4 ncurses breakpointHook ]; + hardeningDisable = [ "all" ]; configureFlags = [ "--enable-python-plugins" diff --git a/bsc/extrae/default.nix b/bsc/extrae/default.nix index 5e95544..1519a45 100644 --- a/bsc/extrae/default.nix +++ b/bsc/extrae/default.nix @@ -34,6 +34,7 @@ stdenv.mkDerivation rec { patches = [ ./use-command.patch ]; enableParallelBuilding = true; + hardeningDisable = [ "all" ]; nativeBuildInputs = [ installShellFiles ]; diff --git a/bsc/llvm-ompss2/clang.nix b/bsc/llvm-ompss2/clang.nix index 97ec345..9afb3d3 100644 --- a/bsc/llvm-ompss2/clang.nix +++ b/bsc/llvm-ompss2/clang.nix @@ -49,7 +49,9 @@ stdenv.mkDerivation rec { # Error with -D_FORTIFY_SOURCE=2, see https://bugs.gentoo.org/636604: # /build/source/compiler-rt/lib/tsan/dd/dd_interceptors.cpp:225:20: # error: redefinition of 'realpath' - hardeningDisable = [ "fortify" ]; + # Requires disabling the "fortify" set of flags, however, for performance we + # disable all: + hardeningDisable = [ "all" ]; cmakeBuildType = if enableDebug then "Debug" else "Release"; diff --git a/bsc/lmbench/default.nix b/bsc/lmbench/default.nix index 0c847c4..c86c222 100644 --- a/bsc/lmbench/default.nix +++ b/bsc/lmbench/default.nix @@ -23,7 +23,7 @@ stdenv.mkDerivation rec { sed -i "s@/bin/rm@rm@g" $(find . -name Makefile) ''; - hardeningDisable = [ "format" ]; + hardeningDisable = [ "all" ]; enableParallelBuilding = false; diff --git a/bsc/mpich/default.nix b/bsc/mpich/default.nix index 3f174c4..87abe12 100644 --- a/bsc/mpich/default.nix +++ b/bsc/mpich/default.nix @@ -31,6 +31,7 @@ stdenv.mkDerivation rec { enableParallelBuilding = true; buildInputs = [ perl gfortran openssh hwloc libfabric ]; + hardeningDisable = [ "all" ]; # doCheck = true; # Fails diff --git a/bsc/openmpi/default.nix b/bsc/openmpi/default.nix index 5787d8e..093eb9a 100644 --- a/bsc/openmpi/default.nix +++ b/bsc/openmpi/default.nix @@ -76,6 +76,8 @@ in stdenv.mkDerivation rec { enableParallelBuilding = true; + hardeningDisable = [ "all" ]; + postInstall = '' rm -f $out/lib/*.la ''; diff --git a/bsc/osu/default.nix b/bsc/osu/default.nix index af91d81..539a4c0 100644 --- a/bsc/osu/default.nix +++ b/bsc/osu/default.nix @@ -16,6 +16,7 @@ stdenv.mkDerivation rec { doCheck = true; enableParallelBuilding = true; buildInputs = [ mpi ]; + hardeningDisable = [ "all" ]; configureFlags = [ "CC=${mpi}/bin/mpicc" "CXX=${mpi}/bin/mpicxx" diff --git a/bsc/tampi/default.nix b/bsc/tampi/default.nix index e6160ca..f690874 100644 --- a/bsc/tampi/default.nix +++ b/bsc/tampi/default.nix @@ -24,4 +24,6 @@ stdenv.mkDerivation rec { rev = "6b11368ea522cd7095cfcf163831b8285faeee7e"; sha256 = "0519lb1rinhzkk0iy5cjjiqnk1bzhnnzhfigj9ac2c3wl0zcsrvy"; }; + + hardeningDisable = [ "all" ]; } diff --git a/bsc/tampi/git.nix b/bsc/tampi/git.nix index c94fcee..cb1378e 100644 --- a/bsc/tampi/git.nix +++ b/bsc/tampi/git.nix @@ -22,4 +22,5 @@ stdenv.mkDerivation rec { url = "ssh://git@bscpm03.bsc.es/interoperability/tampi"; ref = "master"; }; + hardeningDisable = [ "all" ]; } diff --git a/overlay.nix b/overlay.nix index 083b47a..fdf4849 100644 --- a/overlay.nix +++ b/overlay.nix @@ -93,6 +93,8 @@ let "--with-jemalloc-prefix=nanos6_je_" "--enable-stats" ]; + + hardeningDisable = [ "all" ]; }); # ================================================================= From 6937ffcfe9a63f11c44dec91fe0796c15d18f5f0 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 3 May 2021 12:48:49 +0200 Subject: [PATCH 717/987] ds: link the resultTree in the dataset --- garlic/ds/{ctf/mode.py => ctf-mode.py} | 0 garlic/ds/ctf/mode.nix | 23 ------------- garlic/ds/index.nix | 18 ++++------ garlic/ds/{osu/bw.py => osu-bw.py} | 0 garlic/ds/{osu/latency.py => osu-latency.py} | 0 garlic/ds/osu/bw.nix | 23 ------------- garlic/ds/osu/latency.nix | 23 ------------- garlic/ds/{perf/stat.py => perf-stat.py} | 0 garlic/ds/perf/stat.nix | 23 ------------- garlic/ds/py.nix | 34 +++++++++++++++++++ .../ds/{std/timetable.py => std-timetable.py} | 0 garlic/ds/std/timetable.nix | 23 ------------- garlic/pp/merge.nix | 13 +++++-- garlic/pp/rplot.nix | 4 +-- 14 files changed, 53 insertions(+), 131 deletions(-) rename garlic/ds/{ctf/mode.py => ctf-mode.py} (100%) delete mode 100644 garlic/ds/ctf/mode.nix rename garlic/ds/{osu/bw.py => osu-bw.py} (100%) rename garlic/ds/{osu/latency.py => osu-latency.py} (100%) delete mode 100644 garlic/ds/osu/bw.nix delete mode 100644 garlic/ds/osu/latency.nix rename garlic/ds/{perf/stat.py => perf-stat.py} (100%) delete mode 100644 garlic/ds/perf/stat.nix create mode 100644 garlic/ds/py.nix rename garlic/ds/{std/timetable.py => std-timetable.py} (100%) delete mode 100644 garlic/ds/std/timetable.nix diff --git a/garlic/ds/ctf/mode.py b/garlic/ds/ctf-mode.py similarity index 100% rename from garlic/ds/ctf/mode.py rename to garlic/ds/ctf-mode.py diff --git a/garlic/ds/ctf/mode.nix b/garlic/ds/ctf/mode.nix deleted file mode 100644 index d3348eb..0000000 --- a/garlic/ds/ctf/mode.nix +++ /dev/null @@ -1,23 +0,0 @@ -{ - stdenv -, python3 -, gzip -}: - -resultTree: - -stdenv.mkDerivation { - name = "ctf-mode.json.gz"; - preferLocalBuild = true; - src = ./mode.py; - phases = [ "unpackPhase" "installPhase" ]; - - unpackPhase = '' - cp $src mode.py - ''; - - buildInputs = [ python3 gzip ]; - installPhase = '' - python mode.py ${resultTree} | gzip > $out - ''; -} diff --git a/garlic/ds/index.nix b/garlic/ds/index.nix index b0dc7ec..95cb388 100644 --- a/garlic/ds/index.nix +++ b/garlic/ds/index.nix @@ -6,17 +6,13 @@ , callPackage }: -{ - std = { - timetable = callPackage ./std/timetable.nix {}; - }; +rec { - osu = { - latency = callPackage ./osu/latency.nix {}; - bw = callPackage ./osu/bw.nix {}; - }; + py = callPackage ./py.nix {}; - perf.stat = callPackage ./perf/stat.nix {}; - - ctf.mode = callPackage ./ctf/mode.nix {}; + std.timetable = py { script = ./std-timetable.py; compress = false; }; + osu.latency = py { script = ./osu-latency.py; }; + osu.bw = py { script = ./osu-bw.py; }; + perf.stat = py { script = ./perf-stat.py; }; + ctf.mode = py { script = ./ctf-mode.py; }; } diff --git a/garlic/ds/osu/bw.py b/garlic/ds/osu-bw.py similarity index 100% rename from garlic/ds/osu/bw.py rename to garlic/ds/osu-bw.py diff --git a/garlic/ds/osu/latency.py b/garlic/ds/osu-latency.py similarity index 100% rename from garlic/ds/osu/latency.py rename to garlic/ds/osu-latency.py diff --git a/garlic/ds/osu/bw.nix b/garlic/ds/osu/bw.nix deleted file mode 100644 index 9426998..0000000 --- a/garlic/ds/osu/bw.nix +++ /dev/null @@ -1,23 +0,0 @@ -{ - stdenv -, python3 -, gzip -}: - -resultTree: - -stdenv.mkDerivation { - name = "osu-bw.json.gz"; - preferLocalBuild = true; - src = ./bw.py; - phases = [ "unpackPhase" "installPhase" ]; - - unpackPhase = '' - cp $src bw.py - ''; - - buildInputs = [ python3 gzip ]; - installPhase = '' - python bw.py ${resultTree} | gzip > $out - ''; -} diff --git a/garlic/ds/osu/latency.nix b/garlic/ds/osu/latency.nix deleted file mode 100644 index 3fe0426..0000000 --- a/garlic/ds/osu/latency.nix +++ /dev/null @@ -1,23 +0,0 @@ -{ - stdenv -, python3 -, gzip -}: - -resultTree: - -stdenv.mkDerivation { - name = "osu-latency.json.gz"; - preferLocalBuild = true; - src = ./latency.py; - phases = [ "unpackPhase" "installPhase" ]; - - unpackPhase = '' - cp $src latency.py - ''; - - buildInputs = [ python3 gzip ]; - installPhase = '' - python latency.py ${resultTree} | gzip > $out - ''; -} diff --git a/garlic/ds/perf/stat.py b/garlic/ds/perf-stat.py similarity index 100% rename from garlic/ds/perf/stat.py rename to garlic/ds/perf-stat.py diff --git a/garlic/ds/perf/stat.nix b/garlic/ds/perf/stat.nix deleted file mode 100644 index 14b55c4..0000000 --- a/garlic/ds/perf/stat.nix +++ /dev/null @@ -1,23 +0,0 @@ -{ - stdenv -, python3 -, gzip -}: - -resultTree: - -stdenv.mkDerivation { - name = "perf-stat.json.gz"; - preferLocalBuild = true; - src = ./stat.py; - phases = [ "unpackPhase" "installPhase" ]; - - unpackPhase = '' - cp $src stat.py - ''; - - buildInputs = [ python3 gzip ]; - installPhase = '' - python stat.py ${resultTree} | gzip > $out - ''; -} diff --git a/garlic/ds/py.nix b/garlic/ds/py.nix new file mode 100644 index 0000000..012a159 --- /dev/null +++ b/garlic/ds/py.nix @@ -0,0 +1,34 @@ +{ + stdenv +, python3 +, gzip +}: + +{ + script, + compress ? true +}: + +tree: + +stdenv.mkDerivation { + name = "dataset"; + preferLocalBuild = true; + phases = [ "installPhase" ]; + buildInputs = [ python3 gzip ]; + installPhase = '' + mkdir -p $out + ln -s ${tree} $out/tree + ln -s ${script} $out/script + + COMPRESS_DATASET=${toString compress} + + if [ $COMPRESS_DATASET ]; then + python $out/script $out/tree | gzip > $out/dataset.json.gz + ln -s dataset.json.gz $out/dataset + else + python $out/script $out/tree > $out/dataset.json + ln -s dataset.json $out/dataset + fi + ''; +} diff --git a/garlic/ds/std/timetable.py b/garlic/ds/std-timetable.py similarity index 100% rename from garlic/ds/std/timetable.py rename to garlic/ds/std-timetable.py diff --git a/garlic/ds/std/timetable.nix b/garlic/ds/std/timetable.nix deleted file mode 100644 index 496dc58..0000000 --- a/garlic/ds/std/timetable.nix +++ /dev/null @@ -1,23 +0,0 @@ -{ - stdenv -, python3 -}: - -resultTree: - -stdenv.mkDerivation { - name = "timetable.json"; - preferLocalBuild = true; - src = ./timetable.py; - phases = [ "unpackPhase" "installPhase" ]; - - unpackPhase = '' - cp $src timetable.py - ''; - - buildInputs = [ python3 ]; - installPhase = '' - touch $out - python timetable.py ${resultTree} > $out - ''; -} diff --git a/garlic/pp/merge.nix b/garlic/pp/merge.nix index bd83c46..7f8919d 100644 --- a/garlic/pp/merge.nix +++ b/garlic/pp/merge.nix @@ -2,15 +2,22 @@ stdenv }: -experiments: +datasets: with stdenv.lib; stdenv.mkDerivation { - name = "merge.json"; + name = "merged-dataset"; preferLocalBuild = true; phases = [ "installPhase" ]; + inherit datasets; installPhase = '' - cat ${concatStringsSep " " experiments} >> $out + mkdir -p $out + n=1 + for d in $datasets; do + ln -s $d $out/$n + let n=n+1 + cat $d/dataset >> $out/dataset + done ''; } diff --git a/garlic/pp/rplot.nix b/garlic/pp/rplot.nix index cf194b6..28704d1 100644 --- a/garlic/pp/rplot.nix +++ b/garlic/pp/rplot.nix @@ -144,10 +144,10 @@ in stdenv.mkDerivation { mkdir -p $out cd $out - dataset="${dataset}" + dataset=$(readlink -f ${dataset}/dataset) ln -s $dataset input - Rscript --vanilla ${script} ${dataset} "$out" + Rscript --vanilla ${script} "$dataset" "$out" # HACK: replace the \minus for a \hyphen to keep the file paths intact, so # they can be copied to the terminal directly. The StandardEncoding is not From 3892167e7d5dd71458998dc2f18468485fe0d9ad Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 3 May 2021 11:10:19 +0200 Subject: [PATCH 718/987] creams: use python script to generate the input --- garlic/apps/creams/gen_grid.py | 49 ++++++++++++++++++++++++++++++++++ garlic/apps/creams/input.nix | 36 ++++++++++++++++--------- 2 files changed, 72 insertions(+), 13 deletions(-) create mode 100755 garlic/apps/creams/gen_grid.py diff --git a/garlic/apps/creams/gen_grid.py b/garlic/apps/creams/gen_grid.py new file mode 100755 index 0000000..723988b --- /dev/null +++ b/garlic/apps/creams/gen_grid.py @@ -0,0 +1,49 @@ +#!/usr/bin/env python3 + +import argparse + +parser = argparse.ArgumentParser(description="Generate a grid.dat input file for CREAMS") + +parser.add_argument('--npx', type=int, help='number of processes in X', default=1) +parser.add_argument('--npy', type=int, help='number of processes in Y', default=1) +parser.add_argument('--npz', type=int, help='number of processes in Z', default=32) +parser.add_argument('--grain', type=int, help='granularity', default=9) +parser.add_argument('--nx', type=int, help='number of points in X', default=20) +parser.add_argument('--ny', type=int, help='number of points in Y', default=20) +parser.add_argument('--nz', type=int, help='number of points in Z', default=7000) +parser.add_argument('--dx', type=float, help='grid spacing in X', default=0.0025062657) +parser.add_argument('--dy', type=float, help='grid spacing in Y', default=0.0025062657) +parser.add_argument('--dz', type=float, help='grid spacing in Z', default=0.0025062657) + +args = parser.parse_args() + +grain_str = "%d %d" % (args.grain, args.grain) +boundary = "extrapolation" + +# Print +print(' %-49d number of processes in x-direction (0 if automatic)' % args.npx) +print(' %-49d number of processes in y-direction (0 if automatic)' % args.npy) +print(' %-49d number of processes in z-direction (0 if automatic)' % args.npz) +print(' ') +print(' %-49s subdomain granularity' % grain_str) +print(' ') +print(' %-49s -x boundary' % boundary) +print(' %-49s +x boundary' % boundary) +print(' %-49s -y boundary' % boundary) +print(' %-49s +y boundary' % boundary) +print(' %-49s -z boundary' % boundary) +print(' %-49s +z boundary' % boundary) +print(' ') +print(' x-direction') +for i in range(args.nx): + print("%.9e" % (i * args.dx)) +print(' ') +print(' y-direction') +for i in range(args.ny): + print("%.9e" % (i * args.dy)) +print(' ') +print(' z-direction') +for i in range(args.nz): + print("%.9e" % (i * args.dz)) +print(' ') +print(' END') diff --git a/garlic/apps/creams/input.nix b/garlic/apps/creams/input.nix index 1749a72..5a12f91 100644 --- a/garlic/apps/creams/input.nix +++ b/garlic/apps/creams/input.nix @@ -1,7 +1,13 @@ { stdenv -, granul ? 0 -, nprocz ? 0 +, python3 +, granul ? 9 +, nprocx ? 1 +, nprocy ? 1 +, nprocz ? 1 +, nx ? 20 +, ny ? 20 +, nz ? 7000 , gitBranch ? "garlic/mpi+send+seq" , gitCommit ? null , garlicTools @@ -13,26 +19,30 @@ let inherit gitCommit gitBranch; gitTable = import ./git-table.nix; }; + + gen = ./gen_grid.py; in stdenv.mkDerivation rec { name = "creams-input"; + buildInputs = [ python3 ]; + inherit (gitSource) src gitBranch gitCommit; - phases = [ "unpackPhase" "patchPhase" "installPhase" ]; - - patchPhase = '' - patchShebangs SodTubeBenchmark/gridScript.sh - ''; + phases = [ "unpackPhase" "installPhase" ]; installPhase = '' - pushd SodTubeBenchmark - ./gridScript.sh 0 0 ${toString nprocz} ${toString granul} - popd - mkdir -p $out cp -a SodTubeBenchmark $out/ - ''; - hardeningDisable = [ "all" ]; + python3 ${gen} \ + --npx ${toString nprocx} \ + --npy ${toString nprocy} \ + --npz ${toString nprocz} \ + --grain ${toString granul} \ + --nx ${toString nx} \ + --ny ${toString ny} \ + --nz ${toString nz} \ + > $out/SodTubeBenchmark/grid.dat + ''; } From 5d6f6910455c46ce8eb9c1372e7c4d1a1129d485 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 3 May 2021 11:11:50 +0200 Subject: [PATCH 719/987] creams: add size experiment --- garlic/exp/creams/size.nix | 130 +++++++++++++++++++++++++++++++++++++ garlic/exp/index.nix | 1 + garlic/fig/creams/size.R | 96 +++++++++++++++++++++++++++ garlic/fig/index.nix | 1 + 4 files changed, 228 insertions(+) create mode 100644 garlic/exp/creams/size.nix create mode 100644 garlic/fig/creams/size.R diff --git a/garlic/exp/creams/size.nix b/garlic/exp/creams/size.nix new file mode 100644 index 0000000..c9911b0 --- /dev/null +++ b/garlic/exp/creams/size.nix @@ -0,0 +1,130 @@ +{ + stdenv +, stdexp +, bsc +, targetMachine +, stages +, garlicTools +, enableExtended ? false +}: + +with stdenv.lib; +with garlicTools; + +let + # Initial variable configuration + varConf = { + + #nodes = range2 1 16; + nodes = [ 16 ]; + sizeFactor = range2 1 32; + granul = [ 16 ] ++ optionals (enableExtended) [ 8 32 ]; + + # Max. number of iterations + iterations = [ 20 ] ++ optionals (enableExtended) [ 10 ]; + + gitBranch = [ + "garlic/tampi+isend+oss+task" + "garlic/mpi+send+omp+fork" + #"garlic/mpi+send+omp+task" + #"garlic/mpi+send+seq" + ] ++ optionals (enableExtended) [ + "garlic/mpi+send+oss+task" + "garlic/mpi+isend+omp+task" + "garlic/mpi+isend+oss+task" + ]; + }; + + # We use these auxiliary functions to assign different configurations + # depending on the git branch. + getGranul = branch: oldGranul: + if (branch == "garlic/mpi+send+seq") + then 999999 else oldGranul; + + getCpusPerTask = branch: hw: + if (branch == "garlic/mpi+send+seq") + then 1 else hw.cpusPerSocket; + + getNtasksPerNode = branch: hw: + if (branch == "garlic/mpi+send+seq") + then hw.cpusPerNode else hw.socketsPerNode; + + # Generate the complete configuration for each unit + genConf = c: targetMachine.config // rec { + + expName = "creams-size"; + unitName = "${expName}" + + "-granul.${toString granul}" + + "-sf.${toString sizeFactor}"; + + inherit (targetMachine.config) hw; + + # Options for creams + inherit (c) iterations gitBranch nodes sizeFactor; + granul = getGranul gitBranch c.granul; + nprocz = ntasksPerNode * nodes; + baseSizePerCpu = 4; + baseSize = baseSizePerCpu * cpusPerTask * ntasksPerNode * nodes; + + nz = baseSize * sizeFactor; + + # Repeat the execution of each unit 10 times + loops = 10; + + # Resources + qos = "debug"; + time = "02:00:00"; + ntasksPerNode = getNtasksPerNode gitBranch hw; + cpusPerTask = getCpusPerTask gitBranch hw; + jobName = unitName; + }; + + # Compute the array of configurations + configs = unique (stdexp.buildConfigs { + inherit varConf genConf; + }); + + # Custom srun stage to copy the creams input dataset + customSrun = {nextStage, conf, ...}: + let + input = bsc.garlic.apps.creamsInput.override { + inherit (conf) gitBranch granul nprocz nz; + }; + in + stdexp.stdStages.srun { + inherit nextStage conf; + # Now we add some commands to execute before calling srun. These will + # only run in one rank (the first in the list of allocated nodes) + preSrun = '' + cp -r ${input}/SodTubeBenchmark/* . + chmod +w -R . + sed -i '/maximum number of iterations/s/50/${toString conf.iterations}/' input.dat + rm -f nanos6.toml + ''; + }; + + exec = {nextStage, conf, ...}: stages.exec { + inherit nextStage; + env = '' + export NANOS6_CONFIG_OVERRIDE="version.dependencies=regions" + ''; + + # Remove restarts as is not needed and is huge + post = '' + rm -rf restarts || true + ''; + }; + + # Creams program + creams = {nextStage, conf, ...}: bsc.apps.creams.override { + inherit (conf) gitBranch; + }; + + pipeline = stdexp.stdPipelineOverride { + # Replace the stdandard srun stage with our own + overrides = { srun = customSrun; }; + } ++ [ exec creams ]; + +in + + stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/index.nix b/garlic/exp/index.nix index d467881..f531d34 100644 --- a/garlic/exp/index.nix +++ b/garlic/exp/index.nix @@ -21,6 +21,7 @@ creams = rec { ss = callPackage ./creams/ss.nix { }; granularity = callPackage ./creams/granularity.nix { }; + size = callPackage ./creams/size.nix { }; # These experiments are the extended versions of the previous # ones. We split them so we can keep a reasonable execution time diff --git a/garlic/fig/creams/size.R b/garlic/fig/creams/size.R new file mode 100644 index 0000000..21e3335 --- /dev/null +++ b/garlic/fig/creams/size.R @@ -0,0 +1,96 @@ +library(ggplot2) +library(dplyr, warn.conflicts = FALSE) +library(scales) +library(jsonlite) +library(viridis, warn.conflicts = FALSE) +library(stringr) + +args = commandArgs(trailingOnly=TRUE) + +# Set the input dataset if given in argv[1], or use "input" as default +if (length(args)>0) { input_file = args[1] } else { input_file = "input" } +if (length(args)>1) { output = args[2] } else { output = "?" } + +df = jsonlite::stream_in(file(input_file), verbose=FALSE) %>% + + jsonlite::flatten() %>% + + select(unit, + config.nodes, + config.gitBranch, + config.granul, + config.iterations, + config.sizeFactor, + config.nz, + time, + total_time) %>% + + rename(nodes=config.nodes, + gitBranch=config.gitBranch, + granul=config.granul, + sizeFactor=config.sizeFactor, + nz=config.nz, + iterations=config.iterations) %>% + + # Remove the "garlic/" prefix from the gitBranch + mutate(branch = str_replace(gitBranch, "garlic/", "")) %>% + + # Computations before converting to factor + mutate(time.nodes = time * nodes) %>% + mutate(time.elem = time / sizeFactor) %>% + mutate(time.nodes.iter = time.nodes / iterations) %>% + + # Convert to factors + mutate(unit = as.factor(unit)) %>% + mutate(nodes = as.factor(nodes)) %>% + mutate(gitBranch = as.factor(gitBranch)) %>% + mutate(granul = as.factor(granul)) %>% + mutate(iterations = as.factor(iterations)) %>% + mutate(sizeFactor = as.factor(sizeFactor)) %>% + mutate(nz = as.factor(nz)) %>% + mutate(unit = as.factor(unit)) %>% + + # Compute median times + group_by(unit) %>% + mutate(median.time = median(time)) %>% + mutate(median.time.nodes = median(time.nodes)) %>% + mutate(normalized.time = time / median.time - 1) %>% + mutate(log.median.time = log(median.time)) %>% + mutate(median.time.nodes.iter = median(time.nodes.iter)) %>% + ungroup() + +dpi = 300 +h = 3 +w = 6 + +# --------------------------------------------------------------------- + +#p = ggplot(df, aes(x=sizeFactor, y=normalized.time, fill=granul, color=iterations)) + +# geom_boxplot() + +# geom_hline(yintercept=c(-0.01, 0.01), linetype="dashed", color="red") + +# theme_bw() + +# facet_wrap(branch ~ .) + +# labs(x="nodes", y="Normalized time", +# title="Creams strong scaling: normalized time", +# subtitle=output) + +# theme(plot.subtitle=element_text(size=8)) +# +#ggsave("normalized.time.png", plot=p, width=w, height=h, dpi=dpi) +#ggsave("normalized.time.pdf", plot=p, width=w, height=h, dpi=dpi) + +# --------------------------------------------------------------------- + +p = ggplot(df, aes(x=sizeFactor, y=time.elem, color=branch)) + + geom_point(shape=21, size=3) + +# geom_line(aes(y=median.time, group=gitBranch)) + + theme_bw() + +# facet_wrap(branch ~ .) + + labs(x="Size factor k (nz=k*3072)", y="Time / k (s)", + #title="Creams size: time per object", + subtitle=output) + + theme(plot.subtitle=element_text(size=8, family="mono"), + legend.position="bottom") + +ggsave("time.png", plot=p, width=w, height=h, dpi=dpi) +ggsave("time.pdf", plot=p, width=w, height=h, dpi=dpi) + diff --git a/garlic/fig/index.nix b/garlic/fig/index.nix index 6f6ff4b..a54ed9f 100644 --- a/garlic/fig/index.nix +++ b/garlic/fig/index.nix @@ -56,6 +56,7 @@ in creams = with exp.creams; { ss = stdPlot ./creams/ss.R [ ss ]; granularity = stdPlot ./creams/granularity.R [ granularity ]; + size = stdPlot ./creams/size.R [ size ]; # Extended version (we could use another R script for those plots big.ss = stdPlot ./creams/ss.R [ big.ss ]; From b6f563f6216abcf490525ccea01ca2d2f2f6dbba Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Sun, 9 May 2021 11:36:43 +0200 Subject: [PATCH 720/987] creams: add granularity experiment with 16 nodes --- garlic/exp/creams/granularity16.nix | 131 +++++++++++++++++++++++++++ garlic/exp/index.nix | 1 + garlic/fig/creams/granularity16.R | 136 ++++++++++++++++++++++++++++ garlic/fig/index.nix | 1 + 4 files changed, 269 insertions(+) create mode 100644 garlic/exp/creams/granularity16.nix create mode 100644 garlic/fig/creams/granularity16.R diff --git a/garlic/exp/creams/granularity16.nix b/garlic/exp/creams/granularity16.nix new file mode 100644 index 0000000..a43d2bb --- /dev/null +++ b/garlic/exp/creams/granularity16.nix @@ -0,0 +1,131 @@ +{ + stdenv +, stdexp +, bsc +, targetMachine +, stages +, garlicTools +, enableExtended ? false +}: + +with stdenv.lib; +with garlicTools; + +let + # Initial variable configuration + varConf = { + + #nodes = range2 1 16; + nodes = [ 16 ]; + sizeFactor = [ 1 2 4 8 16 32 ]; + granul = [ 1 2 4 8 16 ]; + + # Max. number of iterations + iterations = [ 20 ] ++ optionals (enableExtended) [ 10 ]; + + gitBranch = [ + "garlic/tampi+isend+oss+task" + #"garlic/mpi+send+omp+fork" + #"garlic/mpi+send+omp+task" + #"garlic/mpi+send+seq" + ] ++ optionals (enableExtended) [ + "garlic/mpi+send+oss+task" + "garlic/mpi+isend+omp+task" + "garlic/mpi+isend+oss+task" + ]; + }; + + # We use these auxiliary functions to assign different configurations + # depending on the git branch. + getGranul = branch: oldGranul: + if (branch == "garlic/mpi+send+seq") + then 999999 else oldGranul; + + getCpusPerTask = branch: hw: + if (branch == "garlic/mpi+send+seq") + then 1 else hw.cpusPerSocket; + + getNtasksPerNode = branch: hw: + if (branch == "garlic/mpi+send+seq") + then hw.cpusPerNode else hw.socketsPerNode; + + # Generate the complete configuration for each unit + genConf = c: targetMachine.config // rec { + + expName = "creams-granularity16"; + unitName = "${expName}" + + "-granul.${toString granul}" + + "-sf.${toString sizeFactor}"; + + inherit (targetMachine.config) hw; + + # Options for creams + inherit (c) iterations gitBranch nodes sizeFactor; + granul = getGranul gitBranch c.granul; + nprocz = ntasksPerNode * nodes; + baseSizePerCpu = 2; + baseSize = baseSizePerCpu * cpusPerTask * ntasksPerNode * nodes; + + nz = baseSize * sizeFactor; + + # Repeat the execution of each unit 10 times + loops = 10; + + # Resources + qos = "debug"; + time = "02:00:00"; + ntasksPerNode = getNtasksPerNode gitBranch hw; + cpusPerTask = getCpusPerTask gitBranch hw; + jobName = unitName; + }; + + # Compute the array of configurations + configs = unique ( + filter (c: !(c.granul == 1 && c.sizeFactor >= 32))(stdexp.buildConfigs { + inherit varConf genConf; + })); + + # Custom srun stage to copy the creams input dataset + customSrun = {nextStage, conf, ...}: + let + input = bsc.garlic.apps.creamsInput.override { + inherit (conf) gitBranch granul nprocz nz; + }; + in + stdexp.stdStages.srun { + inherit nextStage conf; + # Now we add some commands to execute before calling srun. These will + # only run in one rank (the first in the list of allocated nodes) + preSrun = '' + cp -r ${input}/SodTubeBenchmark/* . + chmod +w -R . + sed -i '/maximum number of iterations/s/50/${toString conf.iterations}/' input.dat + rm -f nanos6.toml + ''; + }; + + exec = {nextStage, conf, ...}: stages.exec { + inherit nextStage; + env = '' + export NANOS6_CONFIG_OVERRIDE="version.dependencies=regions" + ''; + + # Remove restarts as is not needed and is huge + post = '' + rm -rf restarts || true + ''; + }; + + # Creams program + creams = {nextStage, conf, ...}: bsc.apps.creams.override { + inherit (conf) gitBranch; + }; + + pipeline = stdexp.stdPipelineOverride { + # Replace the stdandard srun stage with our own + overrides = { srun = customSrun; }; + } ++ [ exec creams ]; + +in + + stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/index.nix b/garlic/exp/index.nix index f531d34..ff54e7d 100644 --- a/garlic/exp/index.nix +++ b/garlic/exp/index.nix @@ -22,6 +22,7 @@ ss = callPackage ./creams/ss.nix { }; granularity = callPackage ./creams/granularity.nix { }; size = callPackage ./creams/size.nix { }; + granularity16 = callPackage ./creams/granularity16.nix { }; # These experiments are the extended versions of the previous # ones. We split them so we can keep a reasonable execution time diff --git a/garlic/fig/creams/granularity16.R b/garlic/fig/creams/granularity16.R new file mode 100644 index 0000000..24f3bf7 --- /dev/null +++ b/garlic/fig/creams/granularity16.R @@ -0,0 +1,136 @@ +library(ggplot2) +library(dplyr, warn.conflicts = FALSE) +library(scales) +library(jsonlite) +library(viridis, warn.conflicts = FALSE) +library(stringr) + +args = commandArgs(trailingOnly=TRUE) + +# Set the input dataset if given in argv[1], or use "input" as default +if (length(args)>0) { input_file = args[1] } else { input_file = "input" } +if (length(args)>1) { output = args[2] } else { output = "?" } + +df = jsonlite::stream_in(file(input_file), verbose=FALSE) %>% + + jsonlite::flatten() %>% + + select(unit, + config.nodes, + config.gitBranch, + config.granul, + config.iterations, + config.sizeFactor, + config.nz, + time, + total_time) %>% + + rename(nodes=config.nodes, + gitBranch=config.gitBranch, + granul=config.granul, + sizeFactor=config.sizeFactor, + nz=config.nz, + iterations=config.iterations) %>% + + # Remove the "garlic/" prefix from the gitBranch + mutate(branch = str_replace(gitBranch, "garlic/", "")) %>% + + # Computations before converting to factor + mutate(time.nodes = time * nodes) %>% + mutate(time.elem = time / sizeFactor) %>% + mutate(time.nodes.iter = time.nodes / iterations) %>% + + # Convert to factors + mutate(unit = as.factor(unit)) %>% + mutate(nodes = as.factor(nodes)) %>% + mutate(gitBranch = as.factor(gitBranch)) %>% + mutate(granul = as.factor(granul)) %>% + mutate(iterations = as.factor(iterations)) %>% + mutate(sizeFactor = as.factor(sizeFactor)) %>% + mutate(nz = as.factor(nz)) %>% + mutate(unit = as.factor(unit)) %>% + + # Compute median times + group_by(unit) %>% + mutate(median.time = median(time)) %>% + mutate(median.time.nodes = median(time.nodes)) %>% + mutate(median.time.elem = median(time.elem)) %>% + mutate(normalized.time = time / median.time - 1) %>% + mutate(log.median.time = log(median.time)) %>% + mutate(log.median.time.elem = log(median.time.elem)) %>% + mutate(median.time.nodes.iter = median(time.nodes.iter)) %>% + ungroup() %>% + group_by(sizeFactor) %>% + mutate(optimal.granul = (median.time.elem == min(median.time.elem))) %>% + ungroup() + +dfopt = df %>% filter(optimal.granul == TRUE) + +dpi = 300 +h = 4 +w = 10 + +# --------------------------------------------------------------------- + +#p = ggplot(df, aes(x=sizeFactor, y=normalized.time, fill=granul, color=iterations)) + +# geom_boxplot() + +# geom_hline(yintercept=c(-0.01, 0.01), linetype="dashed", color="red") + +# theme_bw() + +# facet_wrap(branch ~ .) + +# labs(x="nodes", y="Normalized time", +# title="Creams strong scaling: normalized time", +# subtitle=output) + +# theme(plot.subtitle=element_text(size=8)) +# +#ggsave("normalized.time.png", plot=p, width=w, height=h, dpi=dpi) +#ggsave("normalized.time.pdf", plot=p, width=w, height=h, dpi=dpi) + +# --------------------------------------------------------------------- + +p = ggplot(df, aes(x=granul, y=time.elem, color=branch)) + + geom_point(shape=21, size=3) + +# geom_line(aes(y=median.time, group=gitBranch)) + + theme_bw() + + facet_wrap(sizeFactor ~ ., labeller=label_both, nrow=1) + + labs(x="Granularity", y="Time / k (s)", + #title="Creams size: time per object", + subtitle=output) + + theme(plot.subtitle=element_text(size=8, family="mono"), + legend.position="bottom") + +ggsave("time.png", plot=p, width=w, height=h, dpi=dpi) +ggsave("time.pdf", plot=p, width=w, height=h, dpi=dpi) + +# --------------------------------------------------------------------- + +p = ggplot(df, aes(x=granul, y=median.time.elem, color=sizeFactor)) + + geom_line(aes(group=sizeFactor)) + + geom_point(data=dfopt, aes(x=granul, y=median.time.elem)) + + theme_bw() + + labs(x="Granularity", y="Time / k (s)", + color="Size factor k", + subtitle=output) + + theme(plot.subtitle=element_text(size=8, family="mono"), + legend.position="bottom") + +ggsave("median.time.png", plot=p, width=5, height=5, dpi=dpi) +ggsave("median.time.pdf", plot=p, width=5, height=5, dpi=dpi) + +# --------------------------------------------------------------------- + +p = ggplot(df, aes(x=granul, y=sizeFactor, fill=log.median.time.elem)) + + geom_raster() + + scale_fill_viridis(option="plasma") + + coord_fixed() + + theme_bw() + + theme(axis.text.x=element_text(angle = -45, hjust = 0)) + + theme(plot.subtitle=element_text(size=8)) + + #guides(fill = guide_colorbar(barwidth=15, title.position="top")) + + guides(fill = guide_colorbar(barwidth=12, title.vjust=0.8)) + + labs(x="Granularity", y="Size factor", fill="Time / k (s)", subtitle=output) + + theme(plot.subtitle=element_text(size=8, family="mono"), + legend.position="bottom") + +k=1 +ggsave("heatmap.png", plot=p, width=4.8*k, height=5*k, dpi=300) +ggsave("heatmap.pdf", plot=p, width=4.8*k, height=5*k, dpi=300) diff --git a/garlic/fig/index.nix b/garlic/fig/index.nix index a54ed9f..0e7ce41 100644 --- a/garlic/fig/index.nix +++ b/garlic/fig/index.nix @@ -57,6 +57,7 @@ in ss = stdPlot ./creams/ss.R [ ss ]; granularity = stdPlot ./creams/granularity.R [ granularity ]; size = stdPlot ./creams/size.R [ size ]; + granularity16 = stdPlot ./creams/granularity16.R [ granularity16 ]; # Extended version (we could use another R script for those plots big.ss = stdPlot ./creams/ss.R [ big.ss ]; From 83921d178852ce5b9da6e71ec989914a697361a8 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Sun, 9 May 2021 11:37:53 +0200 Subject: [PATCH 721/987] creams: increase granularity with size --- garlic/exp/creams/size.nix | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/garlic/exp/creams/size.nix b/garlic/exp/creams/size.nix index c9911b0..4fce9ee 100644 --- a/garlic/exp/creams/size.nix +++ b/garlic/exp/creams/size.nix @@ -18,7 +18,7 @@ let #nodes = range2 1 16; nodes = [ 16 ]; sizeFactor = range2 1 32; - granul = [ 16 ] ++ optionals (enableExtended) [ 8 32 ]; + baseGranul = [ 1 ] ++ optionals (enableExtended) [ 2 4 8 ]; # Max. number of iterations iterations = [ 20 ] ++ optionals (enableExtended) [ 10 ]; @@ -28,11 +28,11 @@ let "garlic/mpi+send+omp+fork" #"garlic/mpi+send+omp+task" #"garlic/mpi+send+seq" - ] ++ optionals (enableExtended) [ + ] ++ (optionals (enableExtended) [ "garlic/mpi+send+oss+task" "garlic/mpi+isend+omp+task" "garlic/mpi+isend+oss+task" - ]; + ]); }; # We use these auxiliary functions to assign different configurations @@ -60,10 +60,10 @@ let inherit (targetMachine.config) hw; # Options for creams - inherit (c) iterations gitBranch nodes sizeFactor; - granul = getGranul gitBranch c.granul; + inherit (c) iterations gitBranch nodes sizeFactor baseGranul; + granul = getGranul gitBranch (max 2 (baseGranul * sizeFactor)); nprocz = ntasksPerNode * nodes; - baseSizePerCpu = 4; + baseSizePerCpu = 2; baseSize = baseSizePerCpu * cpusPerTask * ntasksPerNode * nodes; nz = baseSize * sizeFactor; From 776a6ca1e48a3e5938dd838813b3b8d8cfd5f4db Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 10 May 2021 17:01:54 +0200 Subject: [PATCH 722/987] sh: add commit propagator tool --- garlic/sh/default.nix | 2 + garlic/sh/garlic-propagate-commit | 63 +++++++++++++++++++++++++++++++ 2 files changed, 65 insertions(+) create mode 100755 garlic/sh/garlic-propagate-commit diff --git a/garlic/sh/default.nix b/garlic/sh/default.nix index 8d5c6f9..e88a616 100644 --- a/garlic/sh/default.nix +++ b/garlic/sh/default.nix @@ -35,5 +35,7 @@ in mkdir -p $out/share/man/man1 cp garlic.1 $out/share/man/man1 cp garlic-git-table $out/bin + patchShebangs garlic-propagate-commit + cp garlic-propagate-commit $out/bin ''; } diff --git a/garlic/sh/garlic-propagate-commit b/garlic/sh/garlic-propagate-commit new file mode 100755 index 0000000..04617e1 --- /dev/null +++ b/garlic/sh/garlic-propagate-commit @@ -0,0 +1,63 @@ +#!/bin/bash -e + +function printHelp() +{ + >&2 echo "Usage: garlic-propagate-commit " + >&2 echo + cat >&2 </dev/null | sed 's/^..//'` == $1 ]]; then + return 0 + else + return 1 + fi +} + + +if [ $# -lt 1 ]; then + printHelp + exit 1 +fi + +# Obtain all the tracked branches +branches=(`git branch | sed 's/^..//'`) +currentBranch=`git rev-parse --abbrev-ref HEAD` + +# Make sure that the commit SHA exists +commit=$1 +if branchContainsCommit $currentBranch $commit; then + echo "Commit $commit exists in current branch, proceeding..." +else + echo "Error: Commit $commit does not exist in the current branch" + exit 1 +fi + +# Distribute the commit for all tracked branches +for branch in ${branches[@]}; +do + if [[ $branch != $currentBranch ]]; then + echo "Trying to add commit $commit to branch $branch" + if branchContainsCommit $branch $commit; then + echo "Branch $branch already contains commit $commit, skipping" + else + git checkout $branch + git cherry-pick $commit + git push + fi + fi +done + +# Return to the original branch +git checkout $currentBranch From fb2b3cbe06372cddbc173384991d6ef4eac6ad0d Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 11 May 2021 12:25:15 +0200 Subject: [PATCH 723/987] sh: add garlic-add-copyright tool --- garlic/sh/default.nix | 6 ++--- garlic/sh/garlic-add-copyright | 49 ++++++++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+), 3 deletions(-) create mode 100755 garlic/sh/garlic-add-copyright diff --git a/garlic/sh/default.nix b/garlic/sh/default.nix index e88a616..27d34d1 100644 --- a/garlic/sh/default.nix +++ b/garlic/sh/default.nix @@ -34,8 +34,8 @@ in chmod +x $out/bin/garlic mkdir -p $out/share/man/man1 cp garlic.1 $out/share/man/man1 - cp garlic-git-table $out/bin - patchShebangs garlic-propagate-commit - cp garlic-propagate-commit $out/bin + + patchShebangs garlic-* + cp garlic-* $out/bin ''; } diff --git a/garlic/sh/garlic-add-copyright b/garlic/sh/garlic-add-copyright new file mode 100755 index 0000000..089aafe --- /dev/null +++ b/garlic/sh/garlic-add-copyright @@ -0,0 +1,49 @@ +#!/bin/bash -e + +if [ -z "$1" ]; then + cat << 'EOF' +Usage: garlic-add-copyright files... + +This tool prepends the content of the copyright file to the list of given files. +The word 'copyright' is used to determine if a file already has a copyright +notice or not. + +Example: + + Given the following HEADER file: + + $ cat HEADER + /* + * This file is part of NBody and is licensed under the terms contained + * in the LICENSE file. + * + * Copyright (C) 2021 Barcelona Supercomputing Center (BSC) + */ + + It can be prepended to all files ending in .c or .h with: + + $ garlic-add-copyright HEADER $(find * -type f | grep -Ei '\.(c|h)$') + +EOF + exit 1 +fi + +header_file="$1" +shift + +if ! grep -qi copyright "$header_file"; then + >&2 echo "The header file '$header_file' doesn't contain the word 'copyright'" + exit 1 +fi + +for f in "${@}"; do + if grep -qi copyright "$f"; then + echo "$f: Contains copyright word, skipping" + continue + fi + + tmp_fn="$f.copyright-being-added" + + cat "$header_file" "$f" > "$tmp_fn" + mv "$tmp_fn" "$f" +done From 11a521ff51bc4618842f288c06d4fc20553d8b3c Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 2 Jun 2021 11:35:30 +0200 Subject: [PATCH 724/987] nanos6: allow the git url and branch to be specified --- bsc/nanos6/git.nix | 17 ++++++++++------- overlay.nix | 2 ++ 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/bsc/nanos6/git.nix b/bsc/nanos6/git.nix index 556fbd8..be6ff9a 100644 --- a/bsc/nanos6/git.nix +++ b/bsc/nanos6/git.nix @@ -11,9 +11,12 @@ , extrae , boost , autoreconfHook -, enableJemalloc ? false +, enableJemalloc ? true , jemalloc ? null , cachelineBytes ? 64 +, enableGlibcxxDebug ? false +, gitUrl ? "ssh://git@bscpm03.bsc.es/nanos6/nanos6" +, gitBranch ? "master" }: with stdenv.lib; @@ -21,11 +24,10 @@ with stdenv.lib; stdenv.mkDerivation rec { pname = "nanos6"; version = "${src.shortRev}"; - branch = "master"; src = builtins.fetchGit { - url = "ssh://git@bscpm03.bsc.es/nanos6/nanos6"; - ref = branch; + url = gitUrl; + ref = gitBranch; }; prePatch = '' @@ -37,11 +39,12 @@ stdenv.mkDerivation rec { preConfigure = '' export CACHELINE_WIDTH=${toString cachelineBytes} export NANOS6_GIT_VERSION=${src.rev} - export NANOS6_GIT_BRANCH=${branch} + export NANOS6_GIT_BRANCH=${gitBranch} ''; - configureFlags = [] ++ - optional enableJemalloc "--with-jemalloc=${jemalloc}"; + configureFlags = [] + ++ (optional enableJemalloc "--with-jemalloc=${jemalloc}") + ++ (optional enableGlibcxxDebug "CXXFLAGS=-D_GLIBCXX_DEBUG"); # The "bindnow" flags are incompatible with ifunc resolution mechanism. We # disable all by default, which includes bindnow. diff --git a/overlay.nix b/overlay.nix index fdf4849..b85d124 100644 --- a/overlay.nix +++ b/overlay.nix @@ -78,10 +78,12 @@ let nanos6 = bsc.nanos6Release; nanos6Release = callPackage ./bsc/nanos6/default.nix { }; nanos6Git = callPackage ./bsc/nanos6/git.nix { }; + nanos6Debug = bsc.nanos6.overrideAttrs (old: { dontStrip = true; enableDebugging = true; }); + nanos6GlibcxxDebug = bsc.nanos6Debug.override { enableGlibcxxDebug = true; }; From 4125e39ce07329f7d79a094947924e0a0d4876bb Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 2 Jun 2021 12:41:47 +0200 Subject: [PATCH 725/987] nanos6: don't strip symbols --- bsc/nanos6/default.nix | 1 + bsc/nanos6/git.nix | 1 + 2 files changed, 2 insertions(+) diff --git a/bsc/nanos6/default.nix b/bsc/nanos6/default.nix index 66ee301..5d0feb1 100644 --- a/bsc/nanos6/default.nix +++ b/bsc/nanos6/default.nix @@ -39,6 +39,7 @@ stdenv.mkDerivation rec { ''; enableParallelBuilding = true; + dontStrip = true; preConfigure = '' export CACHELINE_WIDTH=${toString cachelineBytes} diff --git a/bsc/nanos6/git.nix b/bsc/nanos6/git.nix index be6ff9a..37f3be3 100644 --- a/bsc/nanos6/git.nix +++ b/bsc/nanos6/git.nix @@ -35,6 +35,7 @@ stdenv.mkDerivation rec { ''; enableParallelBuilding = true; + dontStrip = true; preConfigure = '' export CACHELINE_WIDTH=${toString cachelineBytes} From 3be896d90d34b9bcb5c90a53634eca50683baf6e Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 2 Jun 2021 14:08:16 +0200 Subject: [PATCH 726/987] mcxx: add mcxx from the git repo --- bsc/mcxx/git.nix | 60 ++++++++++++++++++++++++++++++++++++++++++++++++ overlay.nix | 1 + 2 files changed, 61 insertions(+) create mode 100644 bsc/mcxx/git.nix diff --git a/bsc/mcxx/git.nix b/bsc/mcxx/git.nix new file mode 100644 index 0000000..6106f3c --- /dev/null +++ b/bsc/mcxx/git.nix @@ -0,0 +1,60 @@ +{ + stdenv +, fetchFromGitHub +, autoreconfHook +, nanos6 +, gperf +, python +, gfortran +, pkg-config +, sqlite +, flex +, bison +, gcc +}: + +stdenv.mkDerivation rec { + pname = "mcxx"; + version = src.shortRev; + + passthru = { + CC = "mcc"; + CXX = "mcxx"; + }; + + src = builtins.fetchGit { + url = "ssh://git@bscpm03.bsc.es/mercurium/mcxx"; + ref = "master"; + }; + + enableParallelBuilding = true; + + buildInputs = [ + autoreconfHook + nanos6 + gperf + python + gfortran + pkg-config + sqlite.dev + bison + flex + gcc + ]; + + # TODO: Not sure if we need this patch anymore (?) + #patches = [ ./intel.patch ]; + + preConfigure = '' + export ICC=icc + export ICPC=icpc + export IFORT=ifort + ''; + + configureFlags = [ + "--enable-ompss-2" + "--with-nanos6=${nanos6}" +# Fails with "memory exhausted" with bison 3.7.1 +# "--enable-bison-regeneration" + ]; +} diff --git a/overlay.nix b/overlay.nix index b85d124..4c38a7f 100644 --- a/overlay.nix +++ b/overlay.nix @@ -68,6 +68,7 @@ let mcxx = bsc.mcxxRelease; mcxxRelease = callPackage ./bsc/mcxx/default.nix { }; + mcxxGit = callPackage ./bsc/mcxx/git.nix { }; mcxxRarias = callPackage ./bsc/mcxx/rarias.nix { bison = self.bison_3_5; }; From f9581cfb59e12f5d2824d320986549a8251f0aaa Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 22 Jun 2021 14:55:52 +0200 Subject: [PATCH 727/987] cn6: enable extra test utils --- bsc/cn6/default.nix | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/bsc/cn6/default.nix b/bsc/cn6/default.nix index 7263c1a..4fcc74d 100644 --- a/bsc/cn6/default.nix +++ b/bsc/cn6/default.nix @@ -3,8 +3,18 @@ , babeltrace2 , pkg-config , uthash +, enableTest ? false +, mpi ? null +, clangOmpss2 ? null +, tampi ? null }: +with stdenv.lib; + +assert (enableTest -> (mpi != null)); +assert (enableTest -> (clangOmpss2 != null)); +assert (enableTest -> (tampi != null)); + stdenv.mkDerivation rec { pname = "cn6"; version = "${src.shortRev}"; @@ -13,7 +23,8 @@ stdenv.mkDerivation rec { babeltrace2 pkg-config uthash - ]; + mpi + ] ++ optionals (enableTest) [ mpi clangOmpss2 tampi ]; src = builtins.fetchGit { url = "ssh://git@bscpm03.bsc.es/rarias/cn6.git"; @@ -22,4 +33,18 @@ stdenv.mkDerivation rec { }; makeFlags = [ "PREFIX=$(out)" ]; + + postBuild = optionalString (enableTest) '' + ( + cd test + make timediff timediff_mpi + ) + ''; + + postInstall = optionalString (enableTest) '' + ( + cd test + cp timediff timediff_mpi sync-err.sh $out/bin/ + ) + ''; } From 1a9b8470bbff6ab64e786a51209274da28fa781a Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 22 Jun 2021 14:56:17 +0200 Subject: [PATCH 728/987] cn6: add clock sync experiment --- garlic/exp/cn6/timediff.nix | 170 ++++++++++++++++++++++++++++++++++++ garlic/exp/index.nix | 4 + 2 files changed, 174 insertions(+) create mode 100644 garlic/exp/cn6/timediff.nix diff --git a/garlic/exp/cn6/timediff.nix b/garlic/exp/cn6/timediff.nix new file mode 100644 index 0000000..ec20948 --- /dev/null +++ b/garlic/exp/cn6/timediff.nix @@ -0,0 +1,170 @@ +{ + stdenv +, stdexp +, bsc +, pkgs +, targetMachine +, stages +, garlicTools +, writeText +, enableHWC ? false +}: + +with stdenv.lib; +with garlicTools; + +let + # Initial variable configuration + varConf = { + nodes = [ 1 2 4 8 ]; + }; + + machineConfig = targetMachine.config; + + genConf = c: targetMachine.config // rec { + expName = "timediff"; + unitName = expName + "-nodes${toString nodes}"; + + inherit (machineConfig) hw; + + loops = 1; + + # Resources + cpusPerTask = hw.cpusPerSocket; + ntasksPerNode = hw.socketsPerNode; + nodes = c.nodes; + + qos = "debug"; + time = "02:00:00"; + + jobName = unitName; + }; + + configs = stdexp.buildConfigs { + inherit varConf genConf; + }; + + # Custom BSC packages + bsc' = bsc.extend (self: super: { + + # For nanos6 we use my fork for distributed instrumentation at the + # latest commit + nanos6 = (super.nanos6Git.override { + enableJemalloc = true; + }).overrideAttrs (old: rec { + + src = builtins.fetchGit { + url = "git@bscpm03.bsc.es:rarias/nanos6.git"; + ref = "rodrigo"; + rev = "5cbeabb4e0446c2c293cc3005f76e6139465caee"; + }; + + dontStrip = false; + version = src.shortRev; + + # Disable all unused instrumentations for faster builds + configureFlags = old.configureFlags ++ [ + "--disable-extrae-instrumentation" + "--disable-lint-instrumentation" + "--disable-graph-instrumentation" + "--disable-stats-instrumentation" + ]; + }); + + # Use clang from master + clangOmpss2Unwrapped = super.clangOmpss2Unwrapped.overrideAttrs (old: rec { + version = src.shortRev; + src = builtins.fetchGit { + url = "ssh://git@bscpm03.bsc.es/llvm-ompss/llvm-mono.git"; + ref = "master"; + rev = "ce47d99d2b2b968c87187cc7818cc5040b082d6c"; + }; + }); + + # Use mcxx from master + mcxx = super.mcxxGit; + + # We also need the instrumented version of TAMPI + tampi = super.tampiGit.overrideAttrs (old: rec { + version = src.shortRev; + dontStrip = true; + NIX_CFLAGS = "-O0 -g"; + src = builtins.fetchGit { + url = "ssh://git@bscpm03.bsc.es/rarias/tampi.git"; + ref = "instrument"; + rev = "6e4294299bf761a1cc31f4181d9479cefa1c7f3e"; + }; + }); + + # We use the latest commit in master as src for cn6 + cn6Git = ((super.cn6.overrideAttrs (old: rec { + version = src.shortRev; + src = builtins.fetchGit { + url = "ssh://git@bscpm03.bsc.es/rarias/cn6.git"; + ref = "master"; + rev = "1d23d01d60164b8641746d5a204128a9d31b9650"; + }; + })).override { enableTest = true; }); + + cn6 = self.cn6Git; + }); + + + ctf = {nextStage, conf, ...}: let + # Create the nanos6 configuration file + nanos6ConfigFile = writeText "nanos6.toml" '' + version.instrument = "ctf" + turbo.enabled = false + instrument.ctf.converter.enabled = false + '' + optionalString (enableHWC) '' + hardware_counters.papi.enabled = true + hardware_counters.papi.counters = [ + "PAPI_TOT_INS", "PAPI_TOT_CYC", + "PAPI_L1_TCM", "PAPI_L2_TCM", "PAPI_L3_TCM" + ] + ''; + + in stages.exec { + inherit nextStage; + + # And use it + env = '' + export NANOS6_CONFIG=${nanos6ConfigFile} + ''; + + post = '' + rank=$SLURM_PROCID + tracedir=trace_timediff_mpi + + # Convert CTF trace to PRV + ${bsc'.cn6}/bin/cn6 $tracedir/$rank + + # Merge on rank 0 only + if [ $rank != 0 ]; then + exit 0; + fi + + # Wait a bit for all ranks to finish the conversion + sleep 5 + + # Run the merger + ${bsc'.cn6}/bin/merge-prv $tracedir + + # We need some tools the path + export PATH="$PATH:${bsc'.babeltrace2}/bin:${pkgs.ministat}/bin" + + ${bsc'.cn6}/bin/sync-err.sh $tracedir + ''; + }; + + exec = {nextStage, conf, ...}: stages.exec { + inherit nextStage; + program = "${bsc'.cn6}/bin/timediff_mpi"; + argv = [ conf.cpusPerTask ]; + }; + + pipeline = stdexp.stdPipeline ++ [ ctf exec ]; + +in + + stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/index.nix b/garlic/exp/index.nix index ff54e7d..7f8c8d6 100644 --- a/garlic/exp/index.nix +++ b/garlic/exp/index.nix @@ -100,4 +100,8 @@ examples = { granularity = callPackage ./examples/granularity.nix { }; }; + + cn6 = { + timediff = callPackage ./cn6/timediff.nix { }; + }; } From c083d96b7992bcff4242ae04ea72dce91f1b01c4 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 28 Jun 2021 11:50:53 +0200 Subject: [PATCH 729/987] cn6: add experiment with nbody --- garlic/exp/cn6/nbody.nix | 160 +++++++++++++++++++++++++++++++++++++++ garlic/exp/index.nix | 1 + 2 files changed, 161 insertions(+) create mode 100644 garlic/exp/cn6/nbody.nix diff --git a/garlic/exp/cn6/nbody.nix b/garlic/exp/cn6/nbody.nix new file mode 100644 index 0000000..d70d152 --- /dev/null +++ b/garlic/exp/cn6/nbody.nix @@ -0,0 +1,160 @@ +{ + stdenv +, stdexp +, bsc +, pkgs +, targetMachine +, stages +, garlicTools +, writeText +, enableHWC ? false +}: + +with stdenv.lib; +with garlicTools; + +let + # Initial variable configuration + varConf = { + nodes = [ 2 ]; + }; + + machineConfig = targetMachine.config; + + genConf = c: targetMachine.config // rec { + expName = "cn6-nbody"; + unitName = expName + "-nodes${toString nodes}"; + + inherit (machineConfig) hw; + + # Parameters for nbody + particles = 4 * 1024 * hw.cpusPerSocket; + timesteps = 2; + blocksize = 512; + gitBranch = "garlic/tampi+isend+oss+task"; + + loops = 1; + + # Resources + cpusPerTask = hw.cpusPerSocket; + ntasksPerNode = hw.socketsPerNode; + nodes = c.nodes; + + qos = "debug"; + time = "02:00:00"; + + jobName = unitName; + }; + + configs = stdexp.buildConfigs { + inherit varConf genConf; + }; + + # Custom BSC packages + bsc' = bsc.extend (self: super: { + + # For nanos6 we use my fork for distributed instrumentation at the + # latest commit + nanos6 = (super.nanos6Git.override { + enableJemalloc = true; + }).overrideAttrs (old: rec { + + src = builtins.fetchGit { + url = "git@bscpm03.bsc.es:nanos6/forks/nanos6-fixes.git"; + ref = "distributed-instrumentation"; + rev = "cd5169532887839515b24de6a7409dca7044f109"; + }; + + dontStrip = false; + version = src.shortRev; + + # Disable all unused instrumentations for faster builds + configureFlags = old.configureFlags ++ [ + "--disable-extrae-instrumentation" + "--disable-lint-instrumentation" + "--disable-graph-instrumentation" + "--disable-stats-instrumentation" + "--with-babeltrace2=${super.babeltrace2}" + ]; + }); + + # Use clang from master + clangOmpss2Unwrapped = super.clangOmpss2Unwrapped.overrideAttrs (old: rec { + version = src.shortRev; + src = builtins.fetchGit { + url = "ssh://git@bscpm03.bsc.es/llvm-ompss/llvm-mono.git"; + ref = "master"; + rev = "ce47d99d2b2b968c87187cc7818cc5040b082d6c"; + }; + }); + + # Use mcxx from master + mcxx = super.mcxxGit; + + # We also need the instrumented version of TAMPI + tampi = super.tampiGit.overrideAttrs (old: rec { + version = src.shortRev; + #dontStrip = true; + #NIX_CFLAGS = "-O0 -g"; + src = builtins.fetchGit { + url = "ssh://git@bscpm03.bsc.es/interoperability/tampi.git"; + ref = "instrument"; + rev = "8cf0f7bc02a7195717f58cc6725aeabd0299f53b"; + }; + }); + }); + + ctf = {nextStage, conf, ...}: let + # Create the nanos6 configuration file + nanos6ConfigFile = writeText "nanos6.toml" '' + version.instrument = "ctf" + turbo.enabled = false + instrument.ctf.converter.enabled = true + instrument.ctf.converter.fast = true + ''; + + in stages.exec { + inherit nextStage; + + # And use it + env = '' + export NANOS6_CONFIG=${nanos6ConfigFile} + + # Add nanos6 binaries to the PATH + export PATH="$PATH:${bsc'.nanos6}/bin" + ''; + + post = '' + rank=$SLURM_PROCID + tracedir=trace_nbody + + # Merge on rank 0 only + if [ $rank != 0 ]; then + exit 0; + fi + + # Wait a bit for all ranks to finish the conversion + sleep 5 + + # Run the merger + nanos6-mergeprv "$tracedir" + ''; + }; + + exec = {nextStage, conf, ...}: stages.exec { + inherit nextStage; + argv = with conf; [ + "-t" timesteps + "-p" particles + ]; + }; + + program = {nextStage, conf, ...}: bsc'.garlic.apps.nbody.override { + inherit (conf) blocksize gitBranch; + }; + + pipeline = stdexp.stdPipeline ++ [ ctf exec program ]; + +in + + stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/index.nix b/garlic/exp/index.nix index 7f8c8d6..2f2bcc4 100644 --- a/garlic/exp/index.nix +++ b/garlic/exp/index.nix @@ -103,5 +103,6 @@ cn6 = { timediff = callPackage ./cn6/timediff.nix { }; + nbody = callPackage ./cn6/nbody.nix { }; }; } From b6d742380b0983db33a42ee402e7f170f44f9b6d Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 30 Jun 2021 15:54:31 +0200 Subject: [PATCH 730/987] cn6: test slow converter --- garlic/exp/cn6/nbody.nix | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/garlic/exp/cn6/nbody.nix b/garlic/exp/cn6/nbody.nix index d70d152..f0a3c06 100644 --- a/garlic/exp/cn6/nbody.nix +++ b/garlic/exp/cn6/nbody.nix @@ -28,7 +28,7 @@ let inherit (machineConfig) hw; # Parameters for nbody - particles = 4 * 1024 * hw.cpusPerSocket; + particles = 4 * 512 * hw.cpusPerSocket; timesteps = 2; blocksize = 512; gitBranch = "garlic/tampi+isend+oss+task"; @@ -61,8 +61,8 @@ let src = builtins.fetchGit { url = "git@bscpm03.bsc.es:nanos6/forks/nanos6-fixes.git"; - ref = "distributed-instrumentation"; - rev = "cd5169532887839515b24de6a7409dca7044f109"; + ref = "distributed-instrumentation-fixes"; + rev = "80058512527961fbde9bd81474b0a29141d7982c"; }; dontStrip = false; @@ -98,8 +98,8 @@ let #NIX_CFLAGS = "-O0 -g"; src = builtins.fetchGit { url = "ssh://git@bscpm03.bsc.es/interoperability/tampi.git"; - ref = "instrument"; - rev = "8cf0f7bc02a7195717f58cc6725aeabd0299f53b"; + ref = "master"; + rev = "f1e77e6f439a0e964e98b5e0a4738b2e95e4fd3d"; }; }); }); @@ -110,7 +110,7 @@ let version.instrument = "ctf" turbo.enabled = false instrument.ctf.converter.enabled = true - instrument.ctf.converter.fast = true + instrument.ctf.converter.fast = false ''; in stages.exec { @@ -120,8 +120,11 @@ let env = '' export NANOS6_CONFIG=${nanos6ConfigFile} - # Add nanos6 binaries to the PATH - export PATH="$PATH:${bsc'.nanos6}/bin" + # Add nanos6 and babeltrace2 binaries to the PATH + export PATH="$PATH:${bsc'.nanos6}/bin:${bsc'.babeltrace2}/bin" + + # Also add the babeltrace2 python module to python search path + export PYTHONPATH="$PYTHONPATH:${bsc'.babeltrace2}/lib/python3.8/site-packages" ''; post = '' From f2c6a3cb1557926efce3cf075d60e25daffbc87c Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 30 Jun 2021 16:33:51 +0200 Subject: [PATCH 731/987] nanos6: update 2.5.1 -> 2.6 --- bsc/nanos6/default.nix | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/bsc/nanos6/default.nix b/bsc/nanos6/default.nix index 5d0feb1..844bd9c 100644 --- a/bsc/nanos6/default.nix +++ b/bsc/nanos6/default.nix @@ -11,6 +11,7 @@ , papi , extrae , boost +, babeltrace2 , enableJemalloc ? true , jemalloc ? null , cachelineBytes ? 64 @@ -23,31 +24,28 @@ with stdenv.lib; stdenv.mkDerivation rec { pname = "nanos6"; - version = "2.5.1"; + version = "2.6"; src = fetchFromGitHub { owner = "bsc-pm"; repo = "nanos6"; rev = "version-${version}"; - sha256 = "17z6gr122cw0l4lsp0qdrdbcl1zcls4i0haxqpj3g60fvjx3fznp"; + sha256 = "0rnbcjgsczqs4qqbm5w761f8h7fs1cw36akhjlbfazs5l92f0ac5"; }; - patches = [ ./clock-monotonic.patch ]; - prePatch = '' patchShebangs scripts/generate_config.sh ''; enableParallelBuilding = true; - dontStrip = true; preConfigure = '' export CACHELINE_WIDTH=${toString cachelineBytes} ''; - configureFlags = [] ++ - optional enableJemalloc "--with-jemalloc=${jemalloc}" ++ - optional enableGlibcxxDebug "CXXFLAGS=-D_GLIBCXX_DEBUG"; + configureFlags = [ "--with-babeltrace2=${babeltrace2}" ] ++ + (optional enableJemalloc "--with-jemalloc=${jemalloc}") ++ + (optional enableGlibcxxDebug "CXXFLAGS=-D_GLIBCXX_DEBUG"); # The "bindnow" flags are incompatible with ifunc resolution mechanism. We # disable all by default, which includes bindnow. @@ -62,7 +60,8 @@ stdenv.mkDerivation rec { boost numactl hwloc - papi ] - ++ (if (extrae != null) then [extrae] else []); + papi + babeltrace2 + ] ++ (if (extrae != null) then [extrae] else []); } From 58fab3b87e78ecb9bad417e72ee2525bfb56f8e6 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 30 Jun 2021 16:34:39 +0200 Subject: [PATCH 732/987] tampi: update 1.0.2 -> 1.1 --- bsc/tampi/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/bsc/tampi/default.nix b/bsc/tampi/default.nix index f690874..f4f1685 100644 --- a/bsc/tampi/default.nix +++ b/bsc/tampi/default.nix @@ -12,7 +12,7 @@ }: stdenv.mkDerivation rec { - version = "1.0.2+6b11368e"; + version = "1.1"; pname = "tampi"; enableParallelBuilding = true; buildInputs = [ autoreconfHook automake autoconf libtool gnumake boost mpi gcc ]; @@ -21,8 +21,8 @@ stdenv.mkDerivation rec { src = fetchFromGitHub { owner = "bsc-pm"; repo = "tampi"; - rev = "6b11368ea522cd7095cfcf163831b8285faeee7e"; - sha256 = "0519lb1rinhzkk0iy5cjjiqnk1bzhnnzhfigj9ac2c3wl0zcsrvy"; + rev = "v${version}"; + sha256 = "0m369l3kprginqkkdjf5znlbrwvib2vjlhdy63nbvlw6v5ys7sci"; }; hardeningDisable = [ "all" ]; From aa083b1b66bb2e4145905323c4ad6c9a8e12f988 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 30 Jun 2021 16:44:30 +0200 Subject: [PATCH 733/987] clangOmpss2: update 2020.11 -> 2021.06 --- bsc/llvm-ompss2/clang.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/bsc/llvm-ompss2/clang.nix b/bsc/llvm-ompss2/clang.nix index 9afb3d3..2a0ded1 100644 --- a/bsc/llvm-ompss2/clang.nix +++ b/bsc/llvm-ompss2/clang.nix @@ -14,14 +14,14 @@ }: stdenv.mkDerivation rec { - version = "2020.11+d2d451fb"; + version = "2021.06"; pname = "clang-ompss2"; src = fetchFromGitHub { owner = "bsc-pm"; repo = "llvm"; - rev = "d2d451fb1a886b52d0ff95ec8484df7afa7a8132"; - sha256 = "1yrfxfp2wz3qpb7j39ra8kkjsqm328j611yrks8bjc86lscmp6yz"; + rev = "github-release-${version}"; + sha256 = "1dkqgf7jvdwi84fam7zwbvv4d6x6icw7182azxjf4mc7b97qmqwi"; }; enableParallelBuilding = true; From 9eb5c74cd64e6a64c5aa62b1ad5ef1faf46638b5 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 30 Jun 2021 17:19:39 +0200 Subject: [PATCH 734/987] mcxx: update 2.2.98 -> 2.2.98+da8945d0 --- bsc/mcxx/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/bsc/mcxx/default.nix b/bsc/mcxx/default.nix index 87fee60..2d63b27 100644 --- a/bsc/mcxx/default.nix +++ b/bsc/mcxx/default.nix @@ -15,7 +15,7 @@ stdenv.mkDerivation rec { pname = "mcxx"; - version = "2.2.98"; + version = "2.2.98+da8945d0"; passthru = { CC = "mcc"; @@ -26,8 +26,8 @@ stdenv.mkDerivation rec { src = fetchFromGitHub { owner = "bsc-pm"; repo = pname; - rev = version; - sha256 = "1ha1vn1jy817r3mvv8mzf18qmd93m238mr3j74q0k12qs333mwwk"; + rev = "ae79b93090a104f2cd30faae00389dac8318a7c9"; + sha256 = "1nwz0v63nvsp0d3qgvv8kpaqcisqk0m7360wy7fhy3xc8n3n3mas"; }; enableParallelBuilding = true; From 53d99d41cf5561e1a88f80fe3d616cb34af972ec Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 30 Jun 2021 19:24:56 +0200 Subject: [PATCH 735/987] mcxx: use git tag for the 2021.06 release --- bsc/mcxx/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bsc/mcxx/default.nix b/bsc/mcxx/default.nix index 2d63b27..f162df8 100644 --- a/bsc/mcxx/default.nix +++ b/bsc/mcxx/default.nix @@ -15,7 +15,7 @@ stdenv.mkDerivation rec { pname = "mcxx"; - version = "2.2.98+da8945d0"; + version = "2021.06"; passthru = { CC = "mcc"; @@ -26,7 +26,7 @@ stdenv.mkDerivation rec { src = fetchFromGitHub { owner = "bsc-pm"; repo = pname; - rev = "ae79b93090a104f2cd30faae00389dac8318a7c9"; + rev = "github-release-${version}"; sha256 = "1nwz0v63nvsp0d3qgvv8kpaqcisqk0m7360wy7fhy3xc8n3n3mas"; }; From 762fe8b82c120e4bec762f3d469c2d599c8484f9 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 12 Jul 2021 18:32:17 +0200 Subject: [PATCH 736/987] wxpropgrid: disable parallel build The parallel build fails with high probability due to incorrect dependencies in the Makefile, which lead to an attemp to link too soon. --- bsc/wxpropgrid/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bsc/wxpropgrid/default.nix b/bsc/wxpropgrid/default.nix index fc4c6da..f204c5e 100644 --- a/bsc/wxpropgrid/default.nix +++ b/bsc/wxpropgrid/default.nix @@ -17,7 +17,7 @@ stdenv.mkDerivation rec { sha256 = "1f62468x5s4h775bn5svlkv0lzzh06aciljpiqn5k3w2arkaijgh"; }; - enableParallelBuilding = true; + enableParallelBuilding = false; buildInputs = [ wx From 08aabfa657a24b5407d251717c76c5c92659871e Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 14 Jul 2021 15:29:55 +0200 Subject: [PATCH 737/987] icc: renew license until 2026-12-31 --- bsc/intel-compiler/license.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bsc/intel-compiler/license.nix b/bsc/intel-compiler/license.nix index 87455ed..710dab1 100644 --- a/bsc/intel-compiler/license.nix +++ b/bsc/intel-compiler/license.nix @@ -8,7 +8,7 @@ stdenv.mkDerivation rec { src = requireFile { name = "license.lic"; - sha256 = "1wi4a2f7hpc0v3gvbcdawvlj6yaqpkk20y1184d0zbx1cxrmwqxp"; + sha256 = "0rgmsqkhpqcfny8j7msa4sgz3prhh248ylh69gjh12dkra77prsj"; message = '' The Intel Compiler requires a license. You can get one (free of charge) if you meet the requeriments at the website: From c0362b6639a9e4818aedf9fcd0ece0c4b1b982be Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 2 Nov 2021 12:42:27 +0100 Subject: [PATCH 738/987] paraver: add fast version for ordered traces --- bsc/paraver/kernel-fast.nix | 48 ++++++++++++++++++++ bsc/paraver/wxparaver-fast.nix | 75 ++++++++++++++++++++++++++++++++ bsc/paraver/wxparaver-fast.patch | 13 ++++++ overlay.nix | 2 + 4 files changed, 138 insertions(+) create mode 100644 bsc/paraver/kernel-fast.nix create mode 100644 bsc/paraver/wxparaver-fast.nix create mode 100644 bsc/paraver/wxparaver-fast.patch diff --git a/bsc/paraver/kernel-fast.nix b/bsc/paraver/kernel-fast.nix new file mode 100644 index 0000000..d24f60e --- /dev/null +++ b/bsc/paraver/kernel-fast.nix @@ -0,0 +1,48 @@ +{ + stdenv +, autoreconfHook +, boost +, libxml2 +, xml2 +, wxpropgrid +, wxGTK28 +, autoconf +, automake +}: + +let + wx = wxGTK28; +in +stdenv.mkDerivation rec { + pname = "paraverKernelFast"; + version = "${src.shortRev}"; + + src = builtins.fetchGit { + url = "git@bscpm03.bsc.es:rpenacob/paraver-kernel.git"; + rev = "76f508095c35528ad89078473dc70b9600e507ff"; + ref = "fast"; + }; + + hardeningDisable = [ "all" ]; + enableParallelBuilding = true; + + dontStrip = true; + + preConfigure = '' + export CFLAGS="-O3" + export CXXFLAGS="-std=c++17 -O3" + ''; + + configureFlags = [ + "--with-boost=${boost}" + ]; + + buildInputs = [ + autoreconfHook + boost + libxml2.dev + xml2 + autoconf + automake + ]; +} diff --git a/bsc/paraver/wxparaver-fast.nix b/bsc/paraver/wxparaver-fast.nix new file mode 100644 index 0000000..37c84b1 --- /dev/null +++ b/bsc/paraver/wxparaver-fast.nix @@ -0,0 +1,75 @@ +{ + stdenv +, autoreconfHook +, boost +, libxml2 +, xml2 +, wxpropgrid +, wxGTK28 +, autoconf +, automake +, paraverKernelFast +, openssl +}: + +let + wx = wxGTK28; +in +stdenv.mkDerivation rec { + pname = "paraverFast"; + version = "${src.shortRev}"; + + src = builtins.fetchGit { + url = "https://github.com/bsc-performance-tools/wxparaver.git"; + rev = "9fc61decb6d8d9b1cacb50639c3b2c85788b2292"; + ref = "master"; + }; + + hardeningDisable = [ "all" ]; + + patches = [ ./wxparaver-fast.patch ]; + + # Fix the PARAVER_HOME variable + postPatch = '' + sed -i 's@^PARAVER_HOME=.*$@PARAVER_HOME='$out'@g' docs/wxparaver + ''; + + dontStrip = true; + enableParallelBuilding = true; + + preConfigure = '' + export CFLAGS="-O3" + export CXXFLAGS="-std=c++17 -O3" + ''; + + configureFlags = [ + "--with-boost=${boost}" + "--with-wx-config=${wx}/bin/wx-config" + "--with-wxpropgrid-dir=${wxpropgrid}" + "--with-paraver=${paraverKernelFast}" + "--with-openssl=${openssl.dev}" + ]; + + buildInputs = [ + autoreconfHook + boost + libxml2.dev + xml2 + wxpropgrid + wx + autoconf + automake + paraverKernelFast + openssl.dev + ]; + + postInstall = '' + mkdir -p $out/include + mkdir -p $out/lib/paraver-kernel + mkdir -p $out/share/filters-config + cp -p ${paraverKernelFast}/bin/* $out/bin + # cp -p ${paraverKernelFast}/include/* $out/include + cp -a ${paraverKernelFast}/lib/paraver-kernel $out/lib/paraver-kernel + cp -p ${paraverKernelFast}/share/filters-config/* $out/share/filters-config + ''; +} diff --git a/bsc/paraver/wxparaver-fast.patch b/bsc/paraver/wxparaver-fast.patch new file mode 100644 index 0000000..ae41cc7 --- /dev/null +++ b/bsc/paraver/wxparaver-fast.patch @@ -0,0 +1,13 @@ +--- a/docs/wxparaver 1970-01-01 01:00:01.000000000 +0100 ++++ b/docs/wxparaver 2021-11-02 12:08:54.670700017 +0100 +@@ -31,5 +31,10 @@ + + @inst_LOGIN_NODE_DETECTION@ + ++echo "WARNING: Using paraver fast, the trace must be ordered!" >&2 ++export PARAVER_FAST=1 ++ ++export LANG=C ++ + LD_LIBRARY_PATH="@inst_BOOST_LIBDIR@${PARAVER_HOME}/${LIB_DIR}/paraver-kernel:@inst_WXWIDGETS_LIBDIR@@inst_WXPROPGRID_LIB_PATH@@inst_LIBSSL_LIBDIR@${PARAVER_HOME}/${LIB_DIR}/wxparaver:$LD_LIBRARY_PATH" "${PARAVER_HOME}/bin/wxparaver.bin" "$@" + diff --git a/overlay.nix b/overlay.nix index 4c38a7f..dc990c9 100644 --- a/overlay.nix +++ b/overlay.nix @@ -140,6 +140,8 @@ let wxpropgrid = callPackage ./bsc/wxpropgrid/default.nix { }; paraver = callPackage ./bsc/paraver/default.nix { }; + paraverKernelFast = callPackage ./bsc/paraver/kernel-fast.nix { }; + paraverFast = callPackage ./bsc/paraver/wxparaver-fast.nix { }; paraverExtra = bsc.paraver.override { enableMouseLabel = true; }; paraverDebug = bsc.paraver.overrideAttrs (old: { dontStrip = true; From 35d19c262c13de198663ded0f36c910937fbbded Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Sun, 25 Jul 2021 17:42:24 +0200 Subject: [PATCH 739/987] garlic: add tool to query experiments --- garlic/sh/garlic-query | 102 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 102 insertions(+) create mode 100755 garlic/sh/garlic-query diff --git a/garlic/sh/garlic-query b/garlic/sh/garlic-query new file mode 100755 index 0000000..6b0c2de --- /dev/null +++ b/garlic/sh/garlic-query @@ -0,0 +1,102 @@ +#!/bin/bash + +function find_garlic_conf() { + grep -o '^cp /nix/store/[^ ]*-garlic_config.json' "$1" | sed 's/^cp //g' +} + +function show_units() { + exp=$1 + + units=$(grep '^/nix/store/.*-unit$' $exp) + + nunits=$(echo "$units" | wc -l) + echo " Experiment: $exp" + echo " Units: $nunits" + echo + echo " Unit file Name" + + for unit in $units; do + gconf=$(find_garlic_conf $unit) + unitName=$(jq -r .unitName "$gconf") + + printf " %s %s %s %s\n" "$unit" "$present" "$unitName" + done +} + +function query_tre() { + tre=$1 + exp=$(grep "^# */nix/store/[^ ]*-experiment$" "$tre" | sed 's/# *//g') + + echo + echo " Trebuchet: $tre" + show_units $exp + echo +} + +function query_exp() { + exp=$1 + + echo + show_units "$exp" + echo +} + +function query_unit() { + unit=$1 + + stages=$(grep '^# */nix/store/.*$' $unit | sed 's/^# */ /g') + gconf=$(find_garlic_conf $unit) + unitName=$(jq -r .unitName "$gconf") + + echo + echo " Unit: $unit" + echo " Name: $unitName" + echo " Stages:" + echo + echo "$stages" + echo + echo " Config: $gconf" + echo + jq . "$gconf" +} + +function query_result() { + tree=$1 + + tre=$(readlink -f $tree/trebuchet) + exp=$(readlink -f $tree/experiment) + + echo + echo " Result tree: $tree" + echo " Trebuchet: $tre" + show_units $exp + echo +} + +element=$1 + +if [ "$1" == "--help" -o -z "$1" ]; then + cat < + +The path may be a trebuchet, experiment, unit or resultTree. +EOF + exit 1 +fi + +# Try prepending the nix store +if [ ! -e $element ]; then + element=/nix/store/$element* +fi + +element=$(readlink -f $element) + +case "$element" in + *-trebuchet) query_tre $element ;; + *-experiment) query_exp $element ;; + *-unit) query_unit $element ;; + *-resultTree) query_result $element ;; + *) echo "unknown: $element"; exit 1 ;; +esac From d2834624c2c82f10d521040f429417d3c732a511 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ra=C3=BAl=20Pe=C3=B1acoba?= Date: Wed, 10 Nov 2021 15:25:14 +0100 Subject: [PATCH 740/987] paraver: enable OpenMP --- bsc/paraver/kernel-fast.nix | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/bsc/paraver/kernel-fast.nix b/bsc/paraver/kernel-fast.nix index d24f60e..cf2a3f3 100644 --- a/bsc/paraver/kernel-fast.nix +++ b/bsc/paraver/kernel-fast.nix @@ -29,12 +29,13 @@ stdenv.mkDerivation rec { dontStrip = true; preConfigure = '' - export CFLAGS="-O3" - export CXXFLAGS="-std=c++17 -O3" + export CFLAGS="-O3 -DPARALLEL_ENABLED" + export CXXFLAGS="-std=c++17 -O3 -DPARALLEL_ENABLED" ''; configureFlags = [ "--with-boost=${boost}" + "--enable-openmp" ]; buildInputs = [ From a5af7890b843c9e0002abf8aebfce74ca4cc46a9 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 13 Jul 2021 12:37:04 +0200 Subject: [PATCH 741/987] bsc: add GPI-2 and TAGASPI --- bsc/gpi-2/default.nix | 38 ++++++++++++++++++++++++++++++++++ bsc/tagaspi/default.nix | 46 +++++++++++++++++++++++++++++++++++++++++ overlay.nix | 10 +++++++++ 3 files changed, 94 insertions(+) create mode 100644 bsc/gpi-2/default.nix create mode 100644 bsc/tagaspi/default.nix diff --git a/bsc/gpi-2/default.nix b/bsc/gpi-2/default.nix new file mode 100644 index 0000000..425fe46 --- /dev/null +++ b/bsc/gpi-2/default.nix @@ -0,0 +1,38 @@ +{ + stdenv +, slurm +, rdma-core +, autoconf +, automake +, libtool +, mpi +, rsync +, gfortran +}: + +stdenv.mkDerivation rec { + pname = "GPI-2"; + version = src.shortRev; + + src = builtins.fetchGit { + url = "ssh://git@bscpm03.bsc.es/interoperability/GPI-2"; + ref = "lowlevel"; + }; + + preConfigure = '' + patchShebangs autogen.sh + ./autogen.sh + ''; + + configureFlags = [ + "--with-infiniband=${rdma-core}" + "--with-mpi=${mpi}" + "--with-slurm" + "CFLAGS=-fPIC" + "CXXFLAGS=-fPIC" + ]; + + buildInputs = [ slurm mpi rdma-core autoconf automake libtool rsync gfortran ]; + + hardeningDisable = [ "all" ]; +} diff --git a/bsc/tagaspi/default.nix b/bsc/tagaspi/default.nix new file mode 100644 index 0000000..21e9019 --- /dev/null +++ b/bsc/tagaspi/default.nix @@ -0,0 +1,46 @@ +{ + stdenv +, automake +, autoconf +, libtool +, mpi +, autoreconfHook +, gaspi +, boost +, numactl +, rdma-core +, gfortran +}: + +stdenv.mkDerivation rec { + pname = "tagaspi"; + version = src.shortRev; + enableParallelBuilding = false; + + buildInputs = [ + autoreconfHook + automake + autoconf + libtool + boost + mpi + numactl + rdma-core + gfortran + ]; + + dontDisableStatic = true; + + configureFlags = [ + "--with-gaspi=${gaspi}" + "CFLAGS=-fPIC" + "CXXFLAGS=-fPIC" + ]; + + src = builtins.fetchGit { + url = "ssh://git@bscpm03.bsc.es/interoperability/tagaspi"; + ref = "master"; + }; + + hardeningDisable = [ "all" ]; +} diff --git a/overlay.nix b/overlay.nix index dc990c9..6186f7a 100644 --- a/overlay.nix +++ b/overlay.nix @@ -134,6 +134,16 @@ let tampiRelease = callPackage ./bsc/tampi/default.nix { }; tampiGit = callPackage ./bsc/tampi/git.nix { }; + # ================================================================= + # GASPI + # ================================================================= + gpi-2 = callPackage ./bsc/gpi-2/default.nix { }; + + # Use GPI-2 as the default implementation for GASPI + gaspi = bsc.gpi-2; + + tagaspi = callPackage ./bsc/tagaspi/default.nix { }; + # ================================================================= # Tracing # ================================================================= From f74446b225cadc30eccb2d9a53143ce5bad905ff Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 5 Apr 2022 15:33:30 +0100 Subject: [PATCH 742/987] gpi-2: use last tagaspi tag --- bsc/gpi-2/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bsc/gpi-2/default.nix b/bsc/gpi-2/default.nix index 425fe46..ef7ce9d 100644 --- a/bsc/gpi-2/default.nix +++ b/bsc/gpi-2/default.nix @@ -16,7 +16,7 @@ stdenv.mkDerivation rec { src = builtins.fetchGit { url = "ssh://git@bscpm03.bsc.es/interoperability/GPI-2"; - ref = "lowlevel"; + ref = "refs/tags/tagaspi-2021.11"; }; preConfigure = '' From 2227f08814d60344b8e38309b1937b79be80004c Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 5 Apr 2022 15:34:10 +0100 Subject: [PATCH 743/987] gpi-2 and tagaspi: enable parallel build --- bsc/gpi-2/default.nix | 2 ++ bsc/tagaspi/default.nix | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/bsc/gpi-2/default.nix b/bsc/gpi-2/default.nix index ef7ce9d..a885e02 100644 --- a/bsc/gpi-2/default.nix +++ b/bsc/gpi-2/default.nix @@ -19,6 +19,8 @@ stdenv.mkDerivation rec { ref = "refs/tags/tagaspi-2021.11"; }; + enableParallelBuilding = true; + preConfigure = '' patchShebangs autogen.sh ./autogen.sh diff --git a/bsc/tagaspi/default.nix b/bsc/tagaspi/default.nix index 21e9019..de893eb 100644 --- a/bsc/tagaspi/default.nix +++ b/bsc/tagaspi/default.nix @@ -15,7 +15,7 @@ stdenv.mkDerivation rec { pname = "tagaspi"; version = src.shortRev; - enableParallelBuilding = false; + enableParallelBuilding = true; buildInputs = [ autoreconfHook From 3e3ce35237d870feb457365cad0a73ac751583e9 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 7 Feb 2022 12:46:59 +0100 Subject: [PATCH 744/987] nanos6: update 2.6 -> 2.7 --- bsc/nanos6/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bsc/nanos6/default.nix b/bsc/nanos6/default.nix index 844bd9c..d37b21d 100644 --- a/bsc/nanos6/default.nix +++ b/bsc/nanos6/default.nix @@ -24,13 +24,13 @@ with stdenv.lib; stdenv.mkDerivation rec { pname = "nanos6"; - version = "2.6"; + version = "2.7"; src = fetchFromGitHub { owner = "bsc-pm"; repo = "nanos6"; rev = "version-${version}"; - sha256 = "0rnbcjgsczqs4qqbm5w761f8h7fs1cw36akhjlbfazs5l92f0ac5"; + sha256 = "1zw0pn4w450il2av50yr4n4zfh0sljw50wxp816pw6vbk6zf3yks"; }; prePatch = '' From 315cf1d0dee3c71707746b92def4514aeed15c4b Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 7 Feb 2022 12:47:22 +0100 Subject: [PATCH 745/987] mcxx: update 2021.06 -> 2021.11 --- bsc/mcxx/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bsc/mcxx/default.nix b/bsc/mcxx/default.nix index f162df8..93ac423 100644 --- a/bsc/mcxx/default.nix +++ b/bsc/mcxx/default.nix @@ -15,7 +15,7 @@ stdenv.mkDerivation rec { pname = "mcxx"; - version = "2021.06"; + version = "2021.11"; passthru = { CC = "mcc"; @@ -27,7 +27,7 @@ stdenv.mkDerivation rec { owner = "bsc-pm"; repo = pname; rev = "github-release-${version}"; - sha256 = "1nwz0v63nvsp0d3qgvv8kpaqcisqk0m7360wy7fhy3xc8n3n3mas"; + sha256 = "0g9y93x7aqy3cpnw7l7k3b3lqqss6ri6ahwk1pbfkc2bpgylwfcx"; }; enableParallelBuilding = true; From 0b319b8a63b7ccacae1ab6e7223d60b16e5c320e Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 14 Feb 2022 20:44:39 +0100 Subject: [PATCH 746/987] clangOmpss2: 2021.06 -> 2021.11 libelf is now replaced by elfutils --- bsc/llvm-ompss2/clang.nix | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/bsc/llvm-ompss2/clang.nix b/bsc/llvm-ompss2/clang.nix index 2a0ded1..bcc3e7c 100644 --- a/bsc/llvm-ompss2/clang.nix +++ b/bsc/llvm-ompss2/clang.nix @@ -7,21 +7,21 @@ , python3 , perl , which -, libelf +, elfutils , libffi , pkg-config , enableDebug ? false }: stdenv.mkDerivation rec { - version = "2021.06"; + version = "2021.11"; pname = "clang-ompss2"; src = fetchFromGitHub { owner = "bsc-pm"; repo = "llvm"; - rev = "github-release-${version}"; - sha256 = "1dkqgf7jvdwi84fam7zwbvv4d6x6icw7182azxjf4mc7b97qmqwi"; + rev = "refs/tags/github-release-${version}"; + sha256 = "1x9scp1jpb2d5vm2pymc39r51242b7bvhx39hp9143rw5b2w3wrm"; }; enableParallelBuilding = true; @@ -41,7 +41,7 @@ stdenv.mkDerivation rec { perl cmake lld - libelf + elfutils libffi pkg-config ]; From 6e7a7febd4ca73f49569e594b6308ffc92fcb656 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 21 Feb 2022 11:51:09 +0100 Subject: [PATCH 747/987] clangOmpss2: wrap clang++ too --- bsc/llvm-ompss2/default.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/bsc/llvm-ompss2/default.nix b/bsc/llvm-ompss2/default.nix index e8f7b49..4627656 100644 --- a/bsc/llvm-ompss2/default.nix +++ b/bsc/llvm-ompss2/default.nix @@ -29,5 +29,7 @@ in wrapCCWith rec { echo "# Hack to include NANOS6_HOME" >> $out/nix-support/setup-hook echo "export NANOS6_HOME=${nanos6}" >> $out/nix-support/setup-hook + + wrap clang++ $wrapper $ccPath/clang++ ''; } From a2195aef43bf99b9ca8b4891ecedc6c96d1fa986 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 21 Feb 2022 15:58:16 +0100 Subject: [PATCH 748/987] clangOmpss2: use relative path for BINDIR Absolute paths are not supported and cause a silent error when installing the clang++ and other symlinks. See: https://pm.bsc.es/gitlab/llvm-ompss/llvm-mono/-/commit/d93a11c138bb57f0ecca234867dc65eed35ccba3 https://pm.bsc.es/gitlab/llvm-ompss/llvm-mono/-/commit/58580e922a69d94859a2506c3053d8c066a1e38c --- bsc/llvm-ompss2/clang.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/bsc/llvm-ompss2/clang.nix b/bsc/llvm-ompss2/clang.nix index bcc3e7c..ae9254a 100644 --- a/bsc/llvm-ompss2/clang.nix +++ b/bsc/llvm-ompss2/clang.nix @@ -70,6 +70,7 @@ stdenv.mkDerivation rec { "-DLLVM_ENABLE_PROJECTS=clang;openmp;compiler-rt" "-DLLVM_ENABLE_ASSERTIONS=${enableAssertions}" "-DLLVM_INSTALL_TOOLCHAIN_ONLY=ON" + "-DCMAKE_INSTALL_BINDIR=bin" ) ''; From df7c79f34bd51b4f1f688a6a81d4b69993a64722 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 21 Feb 2022 16:03:41 +0100 Subject: [PATCH 749/987] clangOmpss2: merge both nix files into one Add clangOmpss2Git to the overlay overriding the src attribute of the release nix derivation, so we only keep one derivation for both variants. --- bsc/llvm-ompss2/clang-git.nix | 79 ----------------------------------- overlay.nix | 13 ++++++ 2 files changed, 13 insertions(+), 79 deletions(-) delete mode 100644 bsc/llvm-ompss2/clang-git.nix diff --git a/bsc/llvm-ompss2/clang-git.nix b/bsc/llvm-ompss2/clang-git.nix deleted file mode 100644 index 2a2959e..0000000 --- a/bsc/llvm-ompss2/clang-git.nix +++ /dev/null @@ -1,79 +0,0 @@ -{ - stdenv -, fetchgit -, cmake -, lld -, bash -, python3 -, perl -, which -, libelf -, libffi -, pkg-config -, enableDebug ? true -}: - -stdenv.mkDerivation rec { - version = "${src.shortRev}"; - pname = "clang-ompss2"; - enableParallelBuilding = true; - isClang = true; - #isGNU = true; - - passthru = { - CC = "clang"; - CXX = "clang++"; - }; - - isClangWithOmpss = true; - - buildInputs = [ - which - bash - python3 - perl - cmake - lld - libelf - libffi - pkg-config - ]; - - hardeningDisable = [ "fortify" ]; - - cmakeBuildType = if enableDebug then "Debug" else "Release"; - - dontUseCmakeBuildDir = true; - enableAssertions = if enableDebug then "ON" else "OFF"; - - preConfigure = '' - mkdir -p build - cd build - cmakeDir="../llvm" - cmakeFlagsArray=( - "-DLLVM_ENABLE_LLD=ON" - "-DCMAKE_CXX_FLAGS_DEBUG=-g -ggnu-pubnames" - "-DCMAKE_EXE_LINKER_FLAGS_DEBUG=-Wl,-gdb-index" - "-DLLVM_LIT_ARGS=-sv --xunit-xml-output=xunit.xml" - "-DLLVM_ENABLE_PROJECTS=clang;openmp;compiler-rt" - "-DLLVM_ENABLE_ASSERTIONS=${enableAssertions}" - "-DLLVM_INSTALL_TOOLCHAIN_ONLY=ON" - ) - ''; - - # Remove support for GNU and Intel Openmp - postInstall = '' - rm $out/lib/libgomp* - rm $out/lib/libiomp* - ''; - -# About "-DCLANG_DEFAULT_NANOS6_HOME=${nanos6}", we could specify a default -# nanos6 installation, but this is would require a recompilation of clang each -# time nanos6 is changed. Better to use the environment variable NANOS6_HOME, -# and specify nanos6 at run time. - - src = builtins.fetchGit { - url = "ssh://git@bscpm03.bsc.es/llvm-ompss/llvm-mono.git"; - ref = "master"; - }; -} diff --git a/overlay.nix b/overlay.nix index 6186f7a..0c760aa 100644 --- a/overlay.nix +++ b/overlay.nix @@ -61,11 +61,24 @@ let stdenv = bsc.llvmPackages.stdenv; }; + clangOmpss2UnwrappedGit = bsc.clangOmpss2Unwrapped.overrideAttrs (old: rec { + src = builtins.fetchGit { + url = "ssh://git@bscpm03.bsc.es/llvm-ompss/llvm-mono.git"; + ref = "master"; + }; + version = src.shortRev; + }); + clangOmpss2 = appendPasstru ( callPackage ./bsc/llvm-ompss2/default.nix { clangOmpss2Unwrapped = bsc.clangOmpss2Unwrapped; }) { CC = "clang"; CXX = "clang++"; }; + clangOmpss2Git = appendPasstru ( + callPackage ./bsc/llvm-ompss2/default.nix { + clangOmpss2Unwrapped = bsc.clangOmpss2UnwrappedGit; + }) { CC = "clang"; CXX = "clang++"; }; + mcxx = bsc.mcxxRelease; mcxxRelease = callPackage ./bsc/mcxx/default.nix { }; mcxxGit = callPackage ./bsc/mcxx/git.nix { }; From 7d5e3f1845fa561112d28b125214b3aff6496626 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 23 Feb 2022 20:05:47 +0100 Subject: [PATCH 750/987] nanos6: don't strip debug symbols --- bsc/nanos6/default.nix | 3 +++ 1 file changed, 3 insertions(+) diff --git a/bsc/nanos6/default.nix b/bsc/nanos6/default.nix index d37b21d..d8ed475 100644 --- a/bsc/nanos6/default.nix +++ b/bsc/nanos6/default.nix @@ -51,6 +51,9 @@ stdenv.mkDerivation rec { # disable all by default, which includes bindnow. hardeningDisable = [ "all" ]; + # Keep debug symbols in the verbose variant of the library + dontStrip = true; + buildInputs = [ autoreconfHook autoconf From 1ffca6c9e071a77d7d8fd1a17d56e93bbeb6222e Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 30 Nov 2021 15:58:58 +0100 Subject: [PATCH 751/987] bsc: add ovni package --- bsc/ovni/default.nix | 30 ++++++++++++++++++++++++++++++ overlay.nix | 5 +++++ 2 files changed, 35 insertions(+) create mode 100644 bsc/ovni/default.nix diff --git a/bsc/ovni/default.nix b/bsc/ovni/default.nix new file mode 100644 index 0000000..16dc863 --- /dev/null +++ b/bsc/ovni/default.nix @@ -0,0 +1,30 @@ +{ + stdenv +, lib +, cmake +, mpi +, gitBranch ? "master" +, gitURL ? "ssh://git@gitlab-internal.bsc.es/nos-v/ovni.git" +, gitCommit ? "9c371d8c12ae4aed333bd7f90d0468603163ad6c" +# By default use debug +, enableDebug ? true +}: + +with lib; + +stdenv.mkDerivation rec { + pname = "ovni"; + version = "${src.shortRev}"; + + buildInputs = [ cmake mpi ]; + + cmakeBuildType = if (enableDebug) then "Debug" else "Release"; + dontStrip = true; + + src = builtins.fetchGit ({ + url = gitURL; + ref = gitBranch; + } // optionalAttrs (gitCommit != null) ({ + rev = gitCommit; + })); +} diff --git a/overlay.nix b/overlay.nix index 0c760aa..62413fd 100644 --- a/overlay.nix +++ b/overlay.nix @@ -184,6 +184,11 @@ let }; cn6 = callPackage ./bsc/cn6/default.nix { }; + ovni = callPackage ./bsc/ovni/default.nix { }; + ovniKernel = callPackage ./bsc/ovni/default.nix { + gitBranch = "kernel-context-switch"; + gitCommit = null; + }; # ================================================================= # MN4 specific From e57107024ec4d66cdf4fc4e165ad61dfc77c9757 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 13 Dec 2021 11:52:13 +0100 Subject: [PATCH 752/987] ovni: Update repository URL and unset commit --- bsc/ovni/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bsc/ovni/default.nix b/bsc/ovni/default.nix index 16dc863..1f1654b 100644 --- a/bsc/ovni/default.nix +++ b/bsc/ovni/default.nix @@ -4,8 +4,8 @@ , cmake , mpi , gitBranch ? "master" -, gitURL ? "ssh://git@gitlab-internal.bsc.es/nos-v/ovni.git" -, gitCommit ? "9c371d8c12ae4aed333bd7f90d0468603163ad6c" +, gitURL ? "ssh://git@bscpm03.bsc.es/rarias/ovni.git" +, gitCommit ? null # By default use debug , enableDebug ? true }: From b60698b791eb17048924c4103c5eb554760bd29c Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 1 Sep 2022 16:27:29 +0200 Subject: [PATCH 753/987] pkgs: update nixpkgs to 1614b96a --- bsc/babeltrace/default.nix | 4 +-- bsc/clsync/default.nix | 2 +- bsc/cn6/default.nix | 3 ++- bsc/extrae/default.nix | 19 ++++++++------ bsc/fftw/default.nix | 2 +- bsc/groff/default.nix | 28 ++++++++++----------- bsc/libpsm2/default.nix | 4 +-- bsc/lmbench/default.nix | 2 +- bsc/mpich/default.nix | 7 +++--- bsc/nanos6/default.nix | 3 ++- bsc/nanos6/git.nix | 3 ++- bsc/nix/default.nix | 6 ++--- bsc/nix/static.nix | 8 +++--- bsc/openmpi/default.nix | 6 ++--- bsc/openmpi/with-slurm.nix | 6 ++--- bsc/osu/default.nix | 2 +- bsc/paraver/default.nix | 3 ++- bsc/perf/default.nix | 6 ++--- bsc/pmix/pmix2.nix | 4 +-- bsc/rdma-core/default.nix | 4 +-- bsc/slurm/default.nix | 10 ++++---- bsc/slurm/pmi2.nix | 10 ++++---- bsc/vite/default.nix | 8 +++--- bsc/vtk/default.nix | 11 ++++---- default.nix | 10 +++++--- garlic/apps/bigsort/default.nix | 3 ++- garlic/apps/bigsort/genseq.nix | 3 ++- garlic/apps/bigsort/shuffle.nix | 3 ++- garlic/apps/fwi/default.nix | 3 ++- garlic/apps/fwi/params.nix | 3 ++- garlic/apps/hpccg/default.nix | 3 ++- garlic/apps/ifsker/default.nix | 3 ++- garlic/apps/lulesh/default.nix | 3 ++- garlic/apps/miniamr/default.nix | 3 ++- garlic/apps/nbody/default.nix | 3 ++- garlic/apps/saiph/default.nix | 5 ++-- garlic/doc/ug.ms | 6 ++--- garlic/exp/bigsort/genseq.nix | 3 ++- garlic/exp/bigsort/shuffle.nix | 3 ++- garlic/exp/bigsort/sort.nix | 3 ++- garlic/exp/cn6/nbody.nix | 3 ++- garlic/exp/cn6/timediff.nix | 3 ++- garlic/exp/creams/granularity.nix | 3 ++- garlic/exp/creams/granularity16.nix | 3 ++- garlic/exp/creams/size.nix | 3 ++- garlic/exp/creams/ss.nix | 3 ++- garlic/exp/examples/granularity.nix | 7 +++--- garlic/exp/fwi/common.nix | 3 ++- garlic/exp/fwi/granularity.nix | 3 ++- garlic/exp/fwi/io.nix | 3 ++- garlic/exp/fwi/reuse.nix | 3 ++- garlic/exp/fwi/ss.nix | 3 ++- garlic/exp/heat/granularity.nix | 3 ++- garlic/exp/hpcg/common.nix | 3 ++- garlic/exp/hpcg/gen.nix | 3 ++- garlic/exp/hpcg/granularity.nix | 3 ++- garlic/exp/hpcg/scaling.nix | 3 ++- garlic/exp/hpcg/size.nix | 3 ++- garlic/exp/lulesh/test.nix | 3 ++- garlic/exp/nbody/common.nix | 3 ++- garlic/exp/nbody/granularity.nix | 3 ++- garlic/exp/nbody/numa.nix | 3 ++- garlic/exp/nbody/old/granularity-oss.nix | 3 ++- garlic/exp/nbody/old/nblocks.nix | 3 ++- garlic/exp/nbody/old/scaling.nix | 3 ++- garlic/exp/nbody/old/strong-scaling-oss.nix | 3 ++- garlic/exp/nbody/old/weak-scaling-mpi.nix | 3 ++- garlic/exp/nbody/old/weak-scaling-oss.nix | 3 ++- garlic/exp/nbody/ss.nix | 3 ++- garlic/exp/osu/bw.nix | 3 ++- garlic/exp/osu/eager.nix | 3 ++- garlic/exp/osu/impi.nix | 3 ++- garlic/exp/osu/latency.nix | 3 ++- garlic/exp/osu/mtu.nix | 3 ++- garlic/exp/saiph/granularity.nix | 3 ++- garlic/exp/saiph/ss.nix | 3 ++- garlic/exp/slurm/cpu.nix | 3 ++- garlic/exp/slurm/exit1.nix | 3 ++- garlic/exp/slurm/sigsegv.nix | 3 ++- garlic/pp/merge.nix | 3 ++- garlic/pp/rplot.nix | 3 ++- garlic/stages/experiment.nix | 3 ++- garlic/stages/sbatch.nix | 3 ++- garlic/stages/unit.nix | 3 ++- garlic/stdexp.nix | 3 ++- garlic/tools.nix | 3 ++- overlay.nix | 12 +++++++++ 87 files changed, 229 insertions(+), 146 deletions(-) diff --git a/bsc/babeltrace/default.nix b/bsc/babeltrace/default.nix index 973820a..185fdaf 100644 --- a/bsc/babeltrace/default.nix +++ b/bsc/babeltrace/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchurl, pkgconfig, glib, libuuid, popt, elfutils, swig4, python3 }: +{ stdenv, lib, fetchurl, pkgconfig, glib, libuuid, popt, elfutils, swig4, python3 }: stdenv.mkDerivation rec { name = "babeltrace-1.5.8"; @@ -11,7 +11,7 @@ stdenv.mkDerivation rec { nativeBuildInputs = [ pkgconfig ]; buildInputs = [ glib libuuid popt elfutils swig4 python3 ]; - meta = with stdenv.lib; { + meta = with lib; { description = "Command-line tool and library to read and convert LTTng tracefiles"; homepage = "https://www.efficios.com/babeltrace"; license = licenses.mit; diff --git a/bsc/clsync/default.nix b/bsc/clsync/default.nix index 4c2a80d..77adcce 100644 --- a/bsc/clsync/default.nix +++ b/bsc/clsync/default.nix @@ -43,7 +43,7 @@ in stdenv.mkDerivation { enableParallelBuilding = true; - meta = with stdenv.lib; { + meta = with lib; { description = "File live sync daemon based on inotify/kqueue/bsm (Linux, FreeBSD), written in GNU C"; homepage = "https://github.com/clsync/clsync"; license = licenses.gpl3Plus; diff --git a/bsc/cn6/default.nix b/bsc/cn6/default.nix index 4fcc74d..5e3eaf5 100644 --- a/bsc/cn6/default.nix +++ b/bsc/cn6/default.nix @@ -1,5 +1,6 @@ { stdenv +, lib , babeltrace2 , pkg-config , uthash @@ -9,7 +10,7 @@ , tampi ? null }: -with stdenv.lib; +with lib; assert (enableTest -> (mpi != null)); assert (enableTest -> (clangOmpss2 != null)); diff --git a/bsc/extrae/default.nix b/bsc/extrae/default.nix index 1519a45..88a2f42 100644 --- a/bsc/extrae/default.nix +++ b/bsc/extrae/default.nix @@ -1,4 +1,5 @@ { stdenv +, lib , fetchFromGitHub , boost , libdwarf @@ -50,9 +51,9 @@ stdenv.mkDerivation rec { xml2 which libxml2.dev - python37Packages.sphinx + #python37Packages.sphinx ] - ++ stdenv.lib.optional stdenv.cc.isClang llvmPackages.openmp; + ++ lib.optional stdenv.cc.isClang llvmPackages.openmp; preConfigure = '' configureFlagsArray=( @@ -79,13 +80,15 @@ stdenv.mkDerivation rec { # Install the manuals only by hand, as we don't want to pull the complete # LaTeX world - postBuild = '' - make -C docs man - ''; - postInstall = '' - installManPage docs/builds/man/*/* - ''; + # FIXME: sphinx is broken + #postBuild = '' + # make -C docs man + #''; + # + #postInstall = '' + # installManPage docs/builds/man/*/* + #''; # ++ ( # if (openmp) diff --git a/bsc/fftw/default.nix b/bsc/fftw/default.nix index 71971c3..84fb1a8 100644 --- a/bsc/fftw/default.nix +++ b/bsc/fftw/default.nix @@ -48,7 +48,7 @@ stdenv.mkDerivation { checkInputs = [ perl ]; - meta = with stdenv.lib; { + meta = with lib; { description = "Fastest Fourier Transform in the West library"; homepage = "http://www.fftw.org/"; license = licenses.gpl2Plus; diff --git a/bsc/groff/default.nix b/bsc/groff/default.nix index a3397b4..1b27039 100644 --- a/bsc/groff/default.nix +++ b/bsc/groff/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchurl, perl +{ stdenv, lib, fetchurl, perl , ghostscript #for postscript and html output , psutils, netpbm #for html output , buildPackages @@ -22,18 +22,18 @@ stdenv.mkDerivation rec { ./0001-Fix-cross-compilation-by-looking-for-ar.patch ]; - postPatch = stdenv.lib.optionalString (psutils != null) '' + postPatch = lib.optionalString (psutils != null) '' substituteInPlace src/preproc/html/pre-html.cpp \ --replace "psselect" "${psutils}/bin/psselect" - '' + stdenv.lib.optionalString (netpbm != null) '' + '' + lib.optionalString (netpbm != null) '' substituteInPlace src/preproc/html/pre-html.cpp \ - --replace "pnmcut" "${stdenv.lib.getBin netpbm}/bin/pnmcut" \ - --replace "pnmcrop" "${stdenv.lib.getBin netpbm}/bin/pnmcrop" \ - --replace "pnmtopng" "${stdenv.lib.getBin netpbm}/bin/pnmtopng" + --replace "pnmcut" "${lib.getBin netpbm}/bin/pnmcut" \ + --replace "pnmcrop" "${lib.getBin netpbm}/bin/pnmcrop" \ + --replace "pnmtopng" "${lib.getBin netpbm}/bin/pnmtopng" substituteInPlace tmac/www.tmac.in \ - --replace "pnmcrop" "${stdenv.lib.getBin netpbm}/bin/pnmcrop" \ - --replace "pngtopnm" "${stdenv.lib.getBin netpbm}/bin/pngtopnm" \ - --replace "@PNMTOPS_NOSETPAGE@" "${stdenv.lib.getBin netpbm}/bin/pnmtops -nosetpage" + --replace "pnmcrop" "${lib.getBin netpbm}/bin/pnmcrop" \ + --replace "pngtopnm" "${lib.getBin netpbm}/bin/pngtopnm" \ + --replace "@PNMTOPS_NOSETPAGE@" "${lib.getBin netpbm}/bin/pnmtops -nosetpage" ''; buildInputs = [ ghostscript psutils netpbm perl ]; @@ -46,13 +46,13 @@ stdenv.mkDerivation rec { # have to pass "--with-appresdir", too. configureFlags = [ "--without-x" - ] ++ stdenv.lib.optionals (ghostscript != null) [ + ] ++ lib.optionals (ghostscript != null) [ "--with-gs=${ghostscript}/bin/gs" - ] ++ stdenv.lib.optionals (stdenv.buildPlatform != stdenv.hostPlatform) [ + ] ++ lib.optionals (stdenv.buildPlatform != stdenv.hostPlatform) [ "ac_cv_path_PERL=${buildPackages.perl}/bin/perl" ]; - makeFlags = stdenv.lib.optionals (stdenv.buildPlatform != stdenv.hostPlatform) [ + makeFlags = lib.optionals (stdenv.buildPlatform != stdenv.hostPlatform) [ # Trick to get the build system find the proper 'native' groff # http://www.mail-archive.com/bug-groff@gnu.org/msg01335.html "GROFF_BIN_PATH=${buildPackages.groff}/bin" @@ -100,11 +100,11 @@ stdenv.mkDerivation rec { substituteInPlace $out/bin/grog \ --replace $out/lib/groff/grog $out/lib/groff/grog - '' + stdenv.lib.optionalString (stdenv.buildPlatform != stdenv.hostPlatform) '' + '' + lib.optionalString (stdenv.buildPlatform != stdenv.hostPlatform) '' find $out/ -type f -print0 | xargs --null sed -i 's|${buildPackages.perl}|${perl}|' ''; - meta = with stdenv.lib; { + meta = with lib; { homepage = "https://www.gnu.org/software/groff/"; description = "GNU Troff, a typesetting package that reads plain text and produces formatted output"; license = licenses.gpl3Plus; diff --git a/bsc/libpsm2/default.nix b/bsc/libpsm2/default.nix index cf59010..e75e8d7 100644 --- a/bsc/libpsm2/default.nix +++ b/bsc/libpsm2/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchFromGitHub, numactl, pkgconfig }: +{ stdenv, lib, fetchFromGitHub, numactl, pkgconfig }: let version = "11.2.185"; @@ -34,7 +34,7 @@ stdenv.mkDerivation { rmdir $out/usr ''; - meta = with stdenv.lib; { + meta = with lib; { homepage = "https://github.com/intel/opa-psm2"; description = "The PSM2 library supports a number of fabric media and stacks"; license = with licenses; [ gpl2 bsd3 ]; diff --git a/bsc/lmbench/default.nix b/bsc/lmbench/default.nix index c86c222..676556e 100644 --- a/bsc/lmbench/default.nix +++ b/bsc/lmbench/default.nix @@ -35,6 +35,6 @@ stdenv.mkDerivation rec { description = "lmbench"; homepage = "http://www.bitmover.com/lmbench/"; maintainers = [ ]; - platforms = stdenv.lib.platforms.all; + platforms = lib.platforms.all; }; } diff --git a/bsc/mpich/default.nix b/bsc/mpich/default.nix index 87abe12..36bee85 100644 --- a/bsc/mpich/default.nix +++ b/bsc/mpich/default.nix @@ -1,5 +1,6 @@ { stdenv +, lib , fetchurl , perl , gfortran @@ -9,7 +10,7 @@ , enableDebug ? false }: -with stdenv.lib; +with lib; stdenv.mkDerivation rec { pname = "mpich"; @@ -41,7 +42,7 @@ stdenv.mkDerivation rec { sed -i 's:CXX="g++":CXX=${stdenv.cc}/bin/g++:' $out/bin/mpicxx sed -i 's:FC="gfortran":FC=${gfortran}/bin/gfortran:' $out/bin/mpifort '' - + stdenv.lib.optionalString (!stdenv.isDarwin) '' + + lib.optionalString (!stdenv.isDarwin) '' # /tmp/nix-build... ends up in the RPATH, fix it manually for entry in $out/bin/mpichversion $out/bin/mpivars; do echo "fix rpath: $entry" @@ -49,7 +50,7 @@ stdenv.mkDerivation rec { done ''; - meta = with stdenv.lib; { + meta = with lib; { description = "Implementation of the Message Passing Interface (MPI) standard"; longDescription = '' diff --git a/bsc/nanos6/default.nix b/bsc/nanos6/default.nix index d8ed475..50fe368 100644 --- a/bsc/nanos6/default.nix +++ b/bsc/nanos6/default.nix @@ -1,5 +1,6 @@ { stdenv +, lib , fetchFromGitHub , automake , autoconf @@ -20,7 +21,7 @@ assert enableJemalloc -> (jemalloc != null); -with stdenv.lib; +with lib; stdenv.mkDerivation rec { pname = "nanos6"; diff --git a/bsc/nanos6/git.nix b/bsc/nanos6/git.nix index 37f3be3..794f9fa 100644 --- a/bsc/nanos6/git.nix +++ b/bsc/nanos6/git.nix @@ -1,5 +1,6 @@ { stdenv +, lib , automake , autoconf , libtool @@ -19,7 +20,7 @@ , gitBranch ? "master" }: -with stdenv.lib; +with lib; stdenv.mkDerivation rec { pname = "nanos6"; diff --git a/bsc/nix/default.nix b/bsc/nix/default.nix index 78c5c3e..d31b3c3 100644 --- a/bsc/nix/default.nix +++ b/bsc/nix/default.nix @@ -140,9 +140,9 @@ common = environments. ''; homepage = "https://nixos.org/"; - license = stdenv.lib.licenses.lgpl2Plus; - maintainers = [ stdenv.lib.maintainers.eelco ]; - platforms = stdenv.lib.platforms.unix; + license = lib.licenses.lgpl2Plus; + maintainers = [ lib.maintainers.eelco ]; + platforms = lib.platforms.unix; outputsToInstall = [ "out" "man" ]; }; diff --git a/bsc/nix/static.nix b/bsc/nix/static.nix index 8dd10fc..1d4965c 100644 --- a/bsc/nix/static.nix +++ b/bsc/nix/static.nix @@ -146,9 +146,9 @@ common = environments. ''; homepage = "https://nixos.org/"; - license = stdenv.lib.licenses.lgpl2Plus; - maintainers = [ stdenv.lib.maintainers.eelco ]; - platforms = stdenv.lib.platforms.unix; + license = lib.licenses.lgpl2Plus; + maintainers = [ lib.maintainers.eelco ]; + platforms = lib.platforms.unix; outputsToInstall = [ "out" "man" ]; }; @@ -191,7 +191,7 @@ in rec { }; inherit storeDir stateDir confDir boehmgc; - } // stdenv.lib.optionalAttrs stdenv.cc.isClang { + } // lib.optionalAttrs stdenv.cc.isClang { stdenv = llvmPackages_6.stdenv; }); diff --git a/bsc/openmpi/default.nix b/bsc/openmpi/default.nix index 093eb9a..b1aede5 100644 --- a/bsc/openmpi/default.nix +++ b/bsc/openmpi/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchurl, fetchpatch, gfortran, perl, libnl +{ stdenv, lib, fetchurl, fetchpatch, gfortran, perl, libnl , rdma-core, zlib, numactl, libevent, hwloc, targetPackages, symlinkJoin , libpsm2, libfabric, pmix, pmi2, ucx @@ -32,7 +32,7 @@ in stdenv.mkDerivation rec { pname = "openmpi"; inherit version; - src = with stdenv.lib.versions; fetchurl { + src = with lib.versions; fetchurl { url = "https://www.open-mpi.org/software/ompi/v${major version}.${minor version}/downloads/${pname}-${version}.tar.bz2"; sha256 = "1i0slg2dxjdgw513aml1n9dsbdxn2fimi2b5712d5r9z4ar4xqj7"; }; @@ -105,7 +105,7 @@ in stdenv.mkDerivation rec { inherit cudaSupport cudatoolkit; }; - meta = with stdenv.lib; { + meta = with lib; { homepage = "https://www.open-mpi.org/"; description = "Open source MPI-3 implementation"; longDescription = "The Open MPI Project is an open source MPI-3 implementation that is developed and maintained by a consortium of academic, research, and industry partners. Open MPI is therefore able to combine the expertise, technologies, and resources from all across the High Performance Computing community in order to build the best MPI library available. Open MPI offers advantages for system and software vendors, application developers and computer science researchers."; diff --git a/bsc/openmpi/with-slurm.nix b/bsc/openmpi/with-slurm.nix index f987c00..687cb16 100644 --- a/bsc/openmpi/with-slurm.nix +++ b/bsc/openmpi/with-slurm.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchurl, fetchpatch, gfortran, perl, libnl +{ stdenv, lib, fetchurl, fetchpatch, gfortran, perl, libnl , rdma-core, zlib, numactl, libevent, hwloc, targetPackages, symlinkJoin , libpsm2, libfabric @@ -34,7 +34,7 @@ in stdenv.mkDerivation rec { pname = "openmpi"; inherit version; - src = with stdenv.lib.versions; fetchurl { + src = with lib.versions; fetchurl { url = "https://www.open-mpi.org/software/ompi/v${major version}.${minor version}/downloads/${pname}-${version}.tar.bz2"; sha256 = "00zxcw99gr5n693cmcmn4f6a47vx1ywna895p0x7p163v37gw0hl"; }; @@ -102,7 +102,7 @@ in stdenv.mkDerivation rec { inherit cudaSupport cudatoolkit; }; - meta = with stdenv.lib; { + meta = with lib; { homepage = "https://www.open-mpi.org/"; description = "Open source MPI-3 implementation"; longDescription = "The Open MPI Project is an open source MPI-3 implementation that is developed and maintained by a consortium of academic, research, and industry partners. Open MPI is therefore able to combine the expertise, technologies, and resources from all across the High Performance Computing community in order to build the best MPI library available. Open MPI offers advantages for system and software vendors, application developers and computer science researchers."; diff --git a/bsc/osu/default.nix b/bsc/osu/default.nix index 539a4c0..d8bf07f 100644 --- a/bsc/osu/default.nix +++ b/bsc/osu/default.nix @@ -34,6 +34,6 @@ stdenv.mkDerivation rec { description = "OSU Micro-Benchmarks"; homepage = http://mvapich.cse.ohio-state.edu/benchmarks/; maintainers = [ ]; - platforms = stdenv.lib.platforms.all; + platforms = lib.platforms.all; }; } diff --git a/bsc/paraver/default.nix b/bsc/paraver/default.nix index e8ae3e8..0876dae 100644 --- a/bsc/paraver/default.nix +++ b/bsc/paraver/default.nix @@ -1,5 +1,6 @@ { stdenv +, lib , fetchFromGitHub , boost , libxml2 @@ -13,7 +14,7 @@ , enableMouseLabel ? false }: -with stdenv.lib; +with lib; let wx = wxGTK28; diff --git a/bsc/perf/default.nix b/bsc/perf/default.nix index cce96f3..b4af296 100644 --- a/bsc/perf/default.nix +++ b/bsc/perf/default.nix @@ -47,7 +47,7 @@ stdenv.mkDerivation { buildInputs = [ elfutils newt slang libunwind libbfd zlib openssl systemtap.stapBuild numactl libopcodes python3 perl babeltrace - ] ++ stdenv.lib.optional withGtk gtk2 + ] ++ lib.optional withGtk gtk2 ++ (if (versionAtLeast kernel.version "4.19") then [ python3 ] else [ python2 ]); # Note: we don't add elfutils to buildInputs, since it provides a @@ -78,7 +78,7 @@ stdenv.mkDerivation { meta = { homepage = "https://perf.wiki.kernel.org/"; description = "Linux tools to profile with performance counters"; - maintainers = with stdenv.lib.maintainers; [viric]; - platforms = with stdenv.lib.platforms; linux; + maintainers = with lib.maintainers; [viric]; + platforms = with lib.platforms; linux; }; } diff --git a/bsc/pmix/pmix2.nix b/bsc/pmix/pmix2.nix index 6598fce..612e081 100644 --- a/bsc/pmix/pmix2.nix +++ b/bsc/pmix/pmix2.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchFromGitHub, perl, autoconf, automake +{ stdenv, lib, fetchFromGitHub, perl, autoconf, automake , libtool, flex, libevent, hwloc, munge, zlib } : @@ -37,7 +37,7 @@ in stdenv.mkDerivation { enableParallelBuilding = true; - meta = with stdenv.lib; { + meta = with lib; { description = "Process Management Interface for HPC environments"; homepage = "https://openpmix.github.io/"; license = licenses.bsd3; diff --git a/bsc/rdma-core/default.nix b/bsc/rdma-core/default.nix index 31c8de5..e3566f6 100644 --- a/bsc/rdma-core/default.nix +++ b/bsc/rdma-core/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchFromGitHub, cmake, pkgconfig, docutils +{ stdenv, lib, fetchFromGitHub, cmake, pkgconfig, docutils , pandoc, ethtool, iproute, libnl, udev, python, perl , makeWrapper } : @@ -48,7 +48,7 @@ in stdenv.mkDerivation { rm -rf $out/sbin ''; - meta = with stdenv.lib; { + meta = with lib; { description = "RDMA Core Userspace Libraries and Daemons"; homepage = "https://github.com/linux-rdma/rdma-core"; license = licenses.gpl2; diff --git a/bsc/slurm/default.nix b/bsc/slurm/default.nix index a82a52f..d65440e 100644 --- a/bsc/slurm/default.nix +++ b/bsc/slurm/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchFromGitHub, pkgconfig, libtool, curl +{ stdenv, lib, fetchFromGitHub, pkgconfig, libtool, curl , python, munge, perl, pam, openssl , ncurses, libmysqlclient, gtk2, lua, hwloc, numactl , readline, freeipmi, libssh2, xorg @@ -23,7 +23,7 @@ stdenv.mkDerivation rec { outputs = [ "out" "dev" ]; - prePatch = stdenv.lib.optional enableX11 '' + prePatch = lib.optional enableX11 '' substituteInPlace src/common/x11_util.c \ --replace '"/usr/bin/xauth"' '"${xorg.xauth}/bin/xauth"' ''; @@ -39,9 +39,9 @@ stdenv.mkDerivation rec { libmysqlclient ncurses gtk2 lua hwloc numactl readline freeipmi pmix - ] ++ stdenv.lib.optionals enableX11 [ libssh2 xorg.xauth ]; + ] ++ lib.optionals enableX11 [ libssh2 xorg.xauth ]; - configureFlags = with stdenv.lib; + configureFlags = with lib; [ "--with-munge=${munge}" "--with-ssl=${openssl.dev}" "--with-hwloc=${hwloc.dev}" @@ -70,7 +70,7 @@ stdenv.mkDerivation rec { enableParallelBuilding = true; - meta = with stdenv.lib; { + meta = with lib; { homepage = http://www.schedmd.com/; description = "Simple Linux Utility for Resource Management"; platforms = platforms.linux; diff --git a/bsc/slurm/pmi2.nix b/bsc/slurm/pmi2.nix index 36f337f..332ff02 100644 --- a/bsc/slurm/pmi2.nix +++ b/bsc/slurm/pmi2.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchFromGitHub, pkgconfig, libtool, curl +{ stdenv, lib, fetchFromGitHub, pkgconfig, libtool, curl , python, munge, perl, pam, openssl , ncurses, libmysqlclient, gtk2, lua, hwloc, numactl , readline, freeipmi, libssh2, xorg @@ -23,7 +23,7 @@ stdenv.mkDerivation rec { outputs = [ "out" ]; - prePatch = stdenv.lib.optional enableX11 '' + prePatch = lib.optional enableX11 '' substituteInPlace src/common/x11_util.c \ --replace '"/usr/bin/xauth"' '"${xorg.xauth}/bin/xauth"' ''; @@ -39,9 +39,9 @@ stdenv.mkDerivation rec { libmysqlclient ncurses gtk2 lua hwloc numactl readline freeipmi pmix - ] ++ stdenv.lib.optionals enableX11 [ libssh2 xorg.xauth ]; + ] ++ lib.optionals enableX11 [ libssh2 xorg.xauth ]; - configureFlags = with stdenv.lib; + configureFlags = with lib; [ "--with-munge=${munge}" "--with-ssl=${openssl.dev}" "--with-hwloc=${hwloc.dev}" @@ -72,7 +72,7 @@ stdenv.mkDerivation rec { enableParallelBuilding = true; - meta = with stdenv.lib; { + meta = with lib; { homepage = http://www.schedmd.com/; description = "Simple Linux Utility for Resource Management"; platforms = platforms.linux; diff --git a/bsc/vite/default.nix b/bsc/vite/default.nix index f0a44c9..b40c8d5 100644 --- a/bsc/vite/default.nix +++ b/bsc/vite/default.nix @@ -13,7 +13,7 @@ , otf ? null }: -with stdenv.lib; +with lib; # ViTE 1.1 has several bugs, so use the SVN version. let @@ -76,8 +76,8 @@ stdenv.mkDerivation rec { ''; homepage = "http://vite.gforge.inria.fr/"; - license = stdenv.lib.licenses.cecill20; - maintainers = with stdenv.lib.maintainers; [ ]; - platforms = stdenv.lib.platforms.linux; + license = lib.licenses.cecill20; + maintainers = with lib.maintainers; [ ]; + platforms = lib.platforms.linux; }; } diff --git a/bsc/vtk/default.nix b/bsc/vtk/default.nix index 9bf9aa3..299fb6d 100644 --- a/bsc/vtk/default.nix +++ b/bsc/vtk/default.nix @@ -1,5 +1,6 @@ { stdenv +, lib , fetchurl , cmake , libGLU @@ -13,10 +14,10 @@ , mpi ? null }: -with stdenv.lib; +with lib; let - os = stdenv.lib.optionalString; + os = lib.optionalString; majorVersion = "8.2"; minorVersion = "0"; version = "${majorVersion}.${minorVersion}"; @@ -69,8 +70,8 @@ stdenv.mkDerivation rec { meta = { description = "Open source libraries for 3D computer graphics, image processing and visualization"; homepage = "https://www.vtk.org/"; - license = stdenv.lib.licenses.bsd3; - maintainers = with stdenv.lib.maintainers; [ knedlsepp ]; - platforms = with stdenv.lib.platforms; unix; + license = lib.licenses.bsd3; + maintainers = with lib.maintainers; [ knedlsepp ]; + platforms = with lib.platforms; unix; }; } diff --git a/default.nix b/default.nix index 4c0c191..3212621 100644 --- a/default.nix +++ b/default.nix @@ -1,14 +1,16 @@ let bscOverlay = import ./overlay.nix; + commit = "1614b96a68dd210919865abe78bda56b501eb1ef"; + # Pin the nixpkgs nixpkgsPath = builtins.fetchTarball { # Descriptive name to make the store path easier to identify - name = "nixos-20.09"; - # Commit hash for nixos-20.09 as of 2021-01-11 - url = "https://github.com/nixos/nixpkgs/archive/41dddb1283733c4993cb6be9573d5cef937c1375.tar.gz"; + name = "nixpkgs-${commit}"; + # Commit hash for nixpkgs as of 2021-09-01 + url = "https://github.com/nixos/nixpkgs/archive/${commit}.tar.gz"; # Hash obtained using `nix-prefetch-url --unpack ` - sha256 = "1blbidbmxhaxar2x76nz72bazykc5yxi0algsbrhxgrsvijs4aiw"; + sha256 = "17c4a6cg0xmnp6hl76h8fvxglngh66s8nfm3qq2iqv6iay4a92qz"; }; pkgs = import nixpkgsPath { diff --git a/garlic/apps/bigsort/default.nix b/garlic/apps/bigsort/default.nix index c3f7d1b..4e7dd3d 100644 --- a/garlic/apps/bigsort/default.nix +++ b/garlic/apps/bigsort/default.nix @@ -1,5 +1,6 @@ { stdenv +, lib , cc , nanos6 ? null , mcxx ? null @@ -7,7 +8,7 @@ , gitBranch }: -with stdenv.lib; +with lib; stdenv.mkDerivation rec { name = "bigsort"; diff --git a/garlic/apps/bigsort/genseq.nix b/garlic/apps/bigsort/genseq.nix index 09adb25..6036467 100644 --- a/garlic/apps/bigsort/genseq.nix +++ b/garlic/apps/bigsort/genseq.nix @@ -1,10 +1,11 @@ { stdenv +, lib , cc , mpi }: -with stdenv.lib; +with lib; stdenv.mkDerivation rec { name = "genseq"; diff --git a/garlic/apps/bigsort/shuffle.nix b/garlic/apps/bigsort/shuffle.nix index c19366e..977d911 100644 --- a/garlic/apps/bigsort/shuffle.nix +++ b/garlic/apps/bigsort/shuffle.nix @@ -1,10 +1,11 @@ { stdenv +, lib , cc , mpi }: -with stdenv.lib; +with lib; stdenv.mkDerivation rec { name = "shuffle"; diff --git a/garlic/apps/fwi/default.nix b/garlic/apps/fwi/default.nix index d826e7f..681509a 100644 --- a/garlic/apps/fwi/default.nix +++ b/garlic/apps/fwi/default.nix @@ -1,5 +1,6 @@ { stdenv +, lib , mpi ? null , tampi ? null , mcxx ? null @@ -10,7 +11,7 @@ , garlicTools }: -with stdenv.lib; +with lib; assert !(tampi != null && mcxx == null); diff --git a/garlic/apps/fwi/params.nix b/garlic/apps/fwi/params.nix index 8dce26b..7fad46b 100644 --- a/garlic/apps/fwi/params.nix +++ b/garlic/apps/fwi/params.nix @@ -1,5 +1,6 @@ { stdenv +, lib , nz ? 200 , nx ? 200 , ny ? 500 @@ -8,7 +9,7 @@ , garlicTools }: -with stdenv.lib; +with lib; with builtins; let diff --git a/garlic/apps/hpccg/default.nix b/garlic/apps/hpccg/default.nix index 9193736..bb827a7 100644 --- a/garlic/apps/hpccg/default.nix +++ b/garlic/apps/hpccg/default.nix @@ -1,5 +1,6 @@ { stdenv +, lib , icc , mpi ? null , tampi ? null @@ -11,7 +12,7 @@ assert !(tampi != null && mcxx == null); -with stdenv.lib; +with lib; let gitSource = garlicTools.fetchGarlicApp { diff --git a/garlic/apps/ifsker/default.nix b/garlic/apps/ifsker/default.nix index 5ec28fa..b575364 100644 --- a/garlic/apps/ifsker/default.nix +++ b/garlic/apps/ifsker/default.nix @@ -1,5 +1,6 @@ { stdenv +, lib , mpi , gfortran , tampi @@ -10,7 +11,7 @@ , garlicTools }: -with stdenv.lib; +with lib; let gitSource = garlicTools.fetchGarlicApp { diff --git a/garlic/apps/lulesh/default.nix b/garlic/apps/lulesh/default.nix index d5202c5..8f64682 100644 --- a/garlic/apps/lulesh/default.nix +++ b/garlic/apps/lulesh/default.nix @@ -1,5 +1,6 @@ { stdenv +, lib , impi , mcxx , icc @@ -9,7 +10,7 @@ , garlicTools }: -with stdenv.lib; +with lib; let gitSource = garlicTools.fetchGarlicApp { diff --git a/garlic/apps/miniamr/default.nix b/garlic/apps/miniamr/default.nix index f005ead..a014a73 100644 --- a/garlic/apps/miniamr/default.nix +++ b/garlic/apps/miniamr/default.nix @@ -1,5 +1,6 @@ { stdenv +, lib , tampi , clangOmpss2 , mpi @@ -8,7 +9,7 @@ , variant }: -with stdenv.lib; +with lib; assert (assertOneOf "variant" variant [ "openmp" "openmp-tasks" "ompss-2" ]); diff --git a/garlic/apps/nbody/default.nix b/garlic/apps/nbody/default.nix index f003261..d5de8ce 100644 --- a/garlic/apps/nbody/default.nix +++ b/garlic/apps/nbody/default.nix @@ -1,5 +1,6 @@ { stdenv +, lib , cc , mpi ? null , tampi ? null @@ -13,7 +14,7 @@ assert !(tampi != null && mcxx == null); -with stdenv.lib; +with lib; let gitSource = garlicTools.fetchGarlicApp { diff --git a/garlic/apps/saiph/default.nix b/garlic/apps/saiph/default.nix index c09c1f7..bb81c89 100644 --- a/garlic/apps/saiph/default.nix +++ b/garlic/apps/saiph/default.nix @@ -1,5 +1,6 @@ { stdenv +, lib , nanos6 , mpi , tampi @@ -33,8 +34,8 @@ assert enableManualDist -> (nbgx != null); assert enableManualDist -> (nbgy != null); assert enableManualDist -> (nbgz != null); -with stdenv.lib; -with stdenv.lib.versions; +with lib; +with lib.versions; let gitSource = garlicTools.fetchGarlicApp { diff --git a/garlic/doc/ug.ms b/garlic/doc/ug.ms index d826bd6..8b7c579 100644 --- a/garlic/doc/ug.ms +++ b/garlic/doc/ug.ms @@ -1076,7 +1076,7 @@ produce the execution pipeline when built. The experiment file describes a function (which is typical in nix) and takes as argument an attribute set with some common packages, tools and options: .CS -{ stdenv, bsc, stdexp, targetMachine, stages, garlicTools }: +{ stdenv, lib, bsc, stdexp, targetMachine, stages, garlicTools }: .CE The .I bsc @@ -1344,8 +1344,8 @@ stdexp.genExperiment { inherit configs pipeline; } .CE The complete example experiment can be shown here: .CS -{ stdenv, stdexp, bsc, targetMachine, stages }: -with stdenv.lib; +{ stdenv, lib, stdexp, bsc, targetMachine, stages }: +with lib; let # Initial variable configuration varConf = { diff --git a/garlic/exp/bigsort/genseq.nix b/garlic/exp/bigsort/genseq.nix index 9348c3f..99a59f1 100644 --- a/garlic/exp/bigsort/genseq.nix +++ b/garlic/exp/bigsort/genseq.nix @@ -1,5 +1,6 @@ { stdenv +, lib , stdexp , bsc , targetMachine @@ -9,7 +10,7 @@ , strace }: -with stdenv.lib; +with lib; # Ensure the arguments are strings, to avoid problems with large numbers assert (isString n); diff --git a/garlic/exp/bigsort/shuffle.nix b/garlic/exp/bigsort/shuffle.nix index 5d3b7b7..a841720 100644 --- a/garlic/exp/bigsort/shuffle.nix +++ b/garlic/exp/bigsort/shuffle.nix @@ -1,5 +1,6 @@ { stdenv +, lib , stdexp , bsc , targetMachine @@ -11,7 +12,7 @@ , resultFromTrebuchet }: -with stdenv.lib; +with lib; with garlicTools; let diff --git a/garlic/exp/bigsort/sort.nix b/garlic/exp/bigsort/sort.nix index 21e10b2..2ae73e9 100644 --- a/garlic/exp/bigsort/sort.nix +++ b/garlic/exp/bigsort/sort.nix @@ -1,5 +1,6 @@ { stdenv +, lib , stdexp , bsc , targetMachine @@ -9,7 +10,7 @@ , inputTre }: -with stdenv.lib; +with lib; let varConf = { }; # Not used diff --git a/garlic/exp/cn6/nbody.nix b/garlic/exp/cn6/nbody.nix index f0a3c06..e48018f 100644 --- a/garlic/exp/cn6/nbody.nix +++ b/garlic/exp/cn6/nbody.nix @@ -1,5 +1,6 @@ { stdenv +, lib , stdexp , bsc , pkgs @@ -10,7 +11,7 @@ , enableHWC ? false }: -with stdenv.lib; +with lib; with garlicTools; let diff --git a/garlic/exp/cn6/timediff.nix b/garlic/exp/cn6/timediff.nix index ec20948..7d2d42f 100644 --- a/garlic/exp/cn6/timediff.nix +++ b/garlic/exp/cn6/timediff.nix @@ -1,5 +1,6 @@ { stdenv +, lib , stdexp , bsc , pkgs @@ -10,7 +11,7 @@ , enableHWC ? false }: -with stdenv.lib; +with lib; with garlicTools; let diff --git a/garlic/exp/creams/granularity.nix b/garlic/exp/creams/granularity.nix index 1a7c38d..3fab638 100644 --- a/garlic/exp/creams/granularity.nix +++ b/garlic/exp/creams/granularity.nix @@ -1,5 +1,6 @@ { stdenv +, lib , stdexp , bsc , targetMachine @@ -8,7 +9,7 @@ , enableExtended ? false }: -with stdenv.lib; +with lib; with garlicTools; let diff --git a/garlic/exp/creams/granularity16.nix b/garlic/exp/creams/granularity16.nix index a43d2bb..fa8dc6f 100644 --- a/garlic/exp/creams/granularity16.nix +++ b/garlic/exp/creams/granularity16.nix @@ -1,5 +1,6 @@ { stdenv +, lib , stdexp , bsc , targetMachine @@ -8,7 +9,7 @@ , enableExtended ? false }: -with stdenv.lib; +with lib; with garlicTools; let diff --git a/garlic/exp/creams/size.nix b/garlic/exp/creams/size.nix index 4fce9ee..dea3c8d 100644 --- a/garlic/exp/creams/size.nix +++ b/garlic/exp/creams/size.nix @@ -1,5 +1,6 @@ { stdenv +, lib , stdexp , bsc , targetMachine @@ -8,7 +9,7 @@ , enableExtended ? false }: -with stdenv.lib; +with lib; with garlicTools; let diff --git a/garlic/exp/creams/ss.nix b/garlic/exp/creams/ss.nix index 0194dec..86723be 100644 --- a/garlic/exp/creams/ss.nix +++ b/garlic/exp/creams/ss.nix @@ -1,5 +1,6 @@ { stdenv +, lib , stdexp , bsc , targetMachine @@ -8,7 +9,7 @@ , enableExtended ? false }: -with stdenv.lib; +with lib; with garlicTools; let diff --git a/garlic/exp/examples/granularity.nix b/garlic/exp/examples/granularity.nix index 5425e54..1c01244 100644 --- a/garlic/exp/examples/granularity.nix +++ b/garlic/exp/examples/granularity.nix @@ -6,6 +6,7 @@ # following keys: { stdenv +, lib , stdexp , bsc , targetMachine @@ -13,11 +14,11 @@ , garlicTools }: -# We import in the scope the content of the `stdenv.lib` attribute, which +# We import in the scope the content of the `lib` attribute, which # contain useful functions like `toString`, which will be used later. This is -# handy to avoid writting `stdenv.lib.tostring`. +# handy to avoid writting `lib.tostring`. -with stdenv.lib; +with lib; # We also have some functions specific to the garlic benchmark which we import # as well. Take a look at the garlic/tools.nix file for more details. diff --git a/garlic/exp/fwi/common.nix b/garlic/exp/fwi/common.nix index dbd8442..63e88de 100644 --- a/garlic/exp/fwi/common.nix +++ b/garlic/exp/fwi/common.nix @@ -1,11 +1,12 @@ { stdenv +, lib , stdexp , bsc , stages }: -with stdenv.lib; +with lib; # Common definitions used by fwi experiments rec { diff --git a/garlic/exp/fwi/granularity.nix b/garlic/exp/fwi/granularity.nix index cb9e6ce..15bc484 100644 --- a/garlic/exp/fwi/granularity.nix +++ b/garlic/exp/fwi/granularity.nix @@ -2,6 +2,7 @@ { stdenv +, lib , stdexp , bsc , targetMachine @@ -10,7 +11,7 @@ , callPackage }: -with stdenv.lib; +with lib; with garlicTools; let diff --git a/garlic/exp/fwi/io.nix b/garlic/exp/fwi/io.nix index 88bc97f..0d107d7 100644 --- a/garlic/exp/fwi/io.nix +++ b/garlic/exp/fwi/io.nix @@ -7,6 +7,7 @@ { stdenv +, lib , stdexp , bsc , targetMachine @@ -15,7 +16,7 @@ , enableExtended ? false }: -with stdenv.lib; +with lib; let common = callPackage ./common.nix {}; diff --git a/garlic/exp/fwi/reuse.nix b/garlic/exp/fwi/reuse.nix index d907e0c..9a725e2 100644 --- a/garlic/exp/fwi/reuse.nix +++ b/garlic/exp/fwi/reuse.nix @@ -20,6 +20,7 @@ { stdenv +, lib , stdexp , bsc , targetMachine @@ -27,7 +28,7 @@ , callPackage }: -with stdenv.lib; +with lib; let diff --git a/garlic/exp/fwi/ss.nix b/garlic/exp/fwi/ss.nix index 743ea48..c54370e 100644 --- a/garlic/exp/fwi/ss.nix +++ b/garlic/exp/fwi/ss.nix @@ -4,6 +4,7 @@ { stdenv +, lib , stdexp , bsc , targetMachine @@ -13,7 +14,7 @@ , enableExtended ? false }: -with stdenv.lib; +with lib; with garlicTools; let diff --git a/garlic/exp/heat/granularity.nix b/garlic/exp/heat/granularity.nix index 5d4d01e..8ebe5db 100644 --- a/garlic/exp/heat/granularity.nix +++ b/garlic/exp/heat/granularity.nix @@ -1,5 +1,6 @@ { stdenv +, lib , stdexp , bsc , targetMachine @@ -15,7 +16,7 @@ # TODO: Finish HWC first assert (enableHWC == false); -with stdenv.lib; +with lib; with garlicTools; let diff --git a/garlic/exp/hpcg/common.nix b/garlic/exp/hpcg/common.nix index 6bc5275..a7c19e3 100644 --- a/garlic/exp/hpcg/common.nix +++ b/garlic/exp/hpcg/common.nix @@ -1,12 +1,13 @@ { stdenv +, lib , stdexp , bsc , stages , callPackage }: -with stdenv.lib; +with lib; rec { diff --git a/garlic/exp/hpcg/gen.nix b/garlic/exp/hpcg/gen.nix index 4f2b13b..d34eccc 100644 --- a/garlic/exp/hpcg/gen.nix +++ b/garlic/exp/hpcg/gen.nix @@ -1,5 +1,6 @@ { stdenv +, lib , stdexp , bsc , targetMachine @@ -8,7 +9,7 @@ , callPackage }: -with stdenv.lib; +with lib; with garlicTools; rec { diff --git a/garlic/exp/hpcg/granularity.nix b/garlic/exp/hpcg/granularity.nix index a061142..7c3d2a8 100644 --- a/garlic/exp/hpcg/granularity.nix +++ b/garlic/exp/hpcg/granularity.nix @@ -1,5 +1,6 @@ { stdenv +, lib , stdexp , bsc , targetMachine @@ -8,7 +9,7 @@ , callPackage }: -with stdenv.lib; +with lib; with garlicTools; let diff --git a/garlic/exp/hpcg/scaling.nix b/garlic/exp/hpcg/scaling.nix index ecd1b16..afb1aee 100644 --- a/garlic/exp/hpcg/scaling.nix +++ b/garlic/exp/hpcg/scaling.nix @@ -1,5 +1,6 @@ { stdenv +, lib , stdexp , bsc , targetMachine @@ -10,7 +11,7 @@ , enableStrong ? true }: -with stdenv.lib; +with lib; with garlicTools; let diff --git a/garlic/exp/hpcg/size.nix b/garlic/exp/hpcg/size.nix index 3d3b9a5..1124323 100644 --- a/garlic/exp/hpcg/size.nix +++ b/garlic/exp/hpcg/size.nix @@ -1,5 +1,6 @@ { stdenv +, lib , stdexp , bsc , targetMachine @@ -8,7 +9,7 @@ , callPackage }: -with stdenv.lib; +with lib; with garlicTools; let diff --git a/garlic/exp/lulesh/test.nix b/garlic/exp/lulesh/test.nix index 595be9d..eb9b078 100644 --- a/garlic/exp/lulesh/test.nix +++ b/garlic/exp/lulesh/test.nix @@ -1,12 +1,13 @@ { stdenv +, lib , stdexp , bsc , targetMachine , stages }: -with stdenv.lib; +with lib; let diff --git a/garlic/exp/nbody/common.nix b/garlic/exp/nbody/common.nix index 434bc58..8570332 100644 --- a/garlic/exp/nbody/common.nix +++ b/garlic/exp/nbody/common.nix @@ -1,5 +1,6 @@ { stdenv +, lib , stdexp , bsc , stages @@ -7,7 +8,7 @@ , garlicTools }: -with stdenv.lib; +with lib; with garlicTools; rec { diff --git a/garlic/exp/nbody/granularity.nix b/garlic/exp/nbody/granularity.nix index 23baa26..4b59bae 100644 --- a/garlic/exp/nbody/granularity.nix +++ b/garlic/exp/nbody/granularity.nix @@ -1,5 +1,6 @@ { stdenv +, lib , stdexp , bsc , targetMachine @@ -8,7 +9,7 @@ , callPackage }: -with stdenv.lib; +with lib; with garlicTools; let diff --git a/garlic/exp/nbody/numa.nix b/garlic/exp/nbody/numa.nix index d4a3c28..a860fdc 100644 --- a/garlic/exp/nbody/numa.nix +++ b/garlic/exp/nbody/numa.nix @@ -1,5 +1,6 @@ { stdenv +, lib , stdexp , bsc , targetMachine @@ -9,7 +10,7 @@ , callPackage }: -with stdenv.lib; +with lib; with garlicTools; let diff --git a/garlic/exp/nbody/old/granularity-oss.nix b/garlic/exp/nbody/old/granularity-oss.nix index 1b1dd36..2dbe81c 100644 --- a/garlic/exp/nbody/old/granularity-oss.nix +++ b/garlic/exp/nbody/old/granularity-oss.nix @@ -1,5 +1,6 @@ { stdenv +, lib , stdexp , bsc , targetMachine @@ -7,7 +8,7 @@ , garlicTools }: -with stdenv.lib; +with lib; with garlicTools; let diff --git a/garlic/exp/nbody/old/nblocks.nix b/garlic/exp/nbody/old/nblocks.nix index 1c092e2..4e7dd94 100644 --- a/garlic/exp/nbody/old/nblocks.nix +++ b/garlic/exp/nbody/old/nblocks.nix @@ -1,5 +1,6 @@ { stdenv +, lib , stdexp , bsc , targetMachine @@ -19,7 +20,7 @@ , nblocks0 ? null }: -with stdenv.lib; +with lib; with garlicTools; let diff --git a/garlic/exp/nbody/old/scaling.nix b/garlic/exp/nbody/old/scaling.nix index 40ef4ed..47fd221 100644 --- a/garlic/exp/nbody/old/scaling.nix +++ b/garlic/exp/nbody/old/scaling.nix @@ -1,5 +1,6 @@ { stdenv +, lib , stdexp , bsc , targetMachine @@ -18,7 +19,7 @@ , nblocks0 ? null }: -with stdenv.lib; +with lib; with garlicTools; let diff --git a/garlic/exp/nbody/old/strong-scaling-oss.nix b/garlic/exp/nbody/old/strong-scaling-oss.nix index 9739fff..2a6f789 100644 --- a/garlic/exp/nbody/old/strong-scaling-oss.nix +++ b/garlic/exp/nbody/old/strong-scaling-oss.nix @@ -1,12 +1,13 @@ { stdenv +, lib , stdexp , bsc , targetMachine , stages }: -with stdenv.lib; +with lib; let # Initial variable configuration diff --git a/garlic/exp/nbody/old/weak-scaling-mpi.nix b/garlic/exp/nbody/old/weak-scaling-mpi.nix index ecbd768..e830a42 100644 --- a/garlic/exp/nbody/old/weak-scaling-mpi.nix +++ b/garlic/exp/nbody/old/weak-scaling-mpi.nix @@ -1,12 +1,13 @@ { stdenv +, lib , stdexp , bsc , targetMachine , stages }: -with stdenv.lib; +with lib; let # Initial variable configuration diff --git a/garlic/exp/nbody/old/weak-scaling-oss.nix b/garlic/exp/nbody/old/weak-scaling-oss.nix index a96d708..4c7e574 100644 --- a/garlic/exp/nbody/old/weak-scaling-oss.nix +++ b/garlic/exp/nbody/old/weak-scaling-oss.nix @@ -1,12 +1,13 @@ { stdenv +, lib , stdexp , bsc , targetMachine , stages }: -with stdenv.lib; +with lib; let # Initial variable configuration diff --git a/garlic/exp/nbody/ss.nix b/garlic/exp/nbody/ss.nix index 75ffa56..d9ebf07 100644 --- a/garlic/exp/nbody/ss.nix +++ b/garlic/exp/nbody/ss.nix @@ -1,5 +1,6 @@ { stdenv +, lib , stdexp , bsc , targetMachine @@ -8,7 +9,7 @@ , callPackage }: -with stdenv.lib; +with lib; with garlicTools; let diff --git a/garlic/exp/osu/bw.nix b/garlic/exp/osu/bw.nix index 47671be..e2c3f37 100644 --- a/garlic/exp/osu/bw.nix +++ b/garlic/exp/osu/bw.nix @@ -1,5 +1,6 @@ { stdenv +, lib , stdexp , bsc , targetMachine @@ -10,7 +11,7 @@ }: with builtins; -with stdenv.lib; +with lib; let diff --git a/garlic/exp/osu/eager.nix b/garlic/exp/osu/eager.nix index d1d89fe..69ee939 100644 --- a/garlic/exp/osu/eager.nix +++ b/garlic/exp/osu/eager.nix @@ -1,5 +1,6 @@ { stdenv +, lib , stdexp , bsc , targetMachine @@ -7,7 +8,7 @@ }: with builtins; -with stdenv.lib; +with lib; let diff --git a/garlic/exp/osu/impi.nix b/garlic/exp/osu/impi.nix index 7123560..97f6283 100644 --- a/garlic/exp/osu/impi.nix +++ b/garlic/exp/osu/impi.nix @@ -1,5 +1,6 @@ { stdenv +, lib , stdexp , bsc , targetMachine @@ -10,7 +11,7 @@ }: with builtins; -with stdenv.lib; +with lib; let diff --git a/garlic/exp/osu/latency.nix b/garlic/exp/osu/latency.nix index a59c0fa..f58eb60 100644 --- a/garlic/exp/osu/latency.nix +++ b/garlic/exp/osu/latency.nix @@ -1,5 +1,6 @@ { stdenv +, lib , stdexp , bsc , targetMachine @@ -11,7 +12,7 @@ }: with builtins; -with stdenv.lib; +with lib; let diff --git a/garlic/exp/osu/mtu.nix b/garlic/exp/osu/mtu.nix index ac58711..ca99091 100644 --- a/garlic/exp/osu/mtu.nix +++ b/garlic/exp/osu/mtu.nix @@ -1,5 +1,6 @@ { stdenv +, lib , stdexp , bsc , targetMachine @@ -7,7 +8,7 @@ }: with builtins; -with stdenv.lib; +with lib; let diff --git a/garlic/exp/saiph/granularity.nix b/garlic/exp/saiph/granularity.nix index 6387bf6..30b9b28 100644 --- a/garlic/exp/saiph/granularity.nix +++ b/garlic/exp/saiph/granularity.nix @@ -26,6 +26,7 @@ # Common packages, tools and options { stdenv +, lib , stdexp , bsc , targetMachine @@ -33,7 +34,7 @@ , garlicTools }: -with stdenv.lib; +with lib; with garlicTools; let diff --git a/garlic/exp/saiph/ss.nix b/garlic/exp/saiph/ss.nix index 4fbb24e..5ddc47a 100644 --- a/garlic/exp/saiph/ss.nix +++ b/garlic/exp/saiph/ss.nix @@ -27,6 +27,7 @@ # Common packages, tools and options { stdenv +, lib , stdexp , bsc , targetMachine @@ -34,7 +35,7 @@ , garlicTools }: -with stdenv.lib; +with lib; with garlicTools; let diff --git a/garlic/exp/slurm/cpu.nix b/garlic/exp/slurm/cpu.nix index d7038b1..d2ee632 100644 --- a/garlic/exp/slurm/cpu.nix +++ b/garlic/exp/slurm/cpu.nix @@ -1,5 +1,6 @@ { stdenv +, lib , stdexp , bsc , targetMachine @@ -7,7 +8,7 @@ , garlicTools }: -with stdenv.lib; +with lib; with garlicTools; let diff --git a/garlic/exp/slurm/exit1.nix b/garlic/exp/slurm/exit1.nix index 2feb393..bf60136 100644 --- a/garlic/exp/slurm/exit1.nix +++ b/garlic/exp/slurm/exit1.nix @@ -1,5 +1,6 @@ { stdenv +, lib , stdexp , bsc , targetMachine @@ -7,7 +8,7 @@ , garlicTools }: -with stdenv.lib; +with lib; with garlicTools; let diff --git a/garlic/exp/slurm/sigsegv.nix b/garlic/exp/slurm/sigsegv.nix index db1830a..b77f58b 100644 --- a/garlic/exp/slurm/sigsegv.nix +++ b/garlic/exp/slurm/sigsegv.nix @@ -1,5 +1,6 @@ { stdenv +, lib , stdexp , bsc , targetMachine @@ -7,7 +8,7 @@ , garlicTools }: -with stdenv.lib; +with lib; with garlicTools; let diff --git a/garlic/pp/merge.nix b/garlic/pp/merge.nix index 7f8919d..03caaea 100644 --- a/garlic/pp/merge.nix +++ b/garlic/pp/merge.nix @@ -1,10 +1,11 @@ { stdenv +, lib }: datasets: -with stdenv.lib; +with lib; stdenv.mkDerivation { name = "merged-dataset"; diff --git a/garlic/pp/rplot.nix b/garlic/pp/rplot.nix index 28704d1..df154da 100644 --- a/garlic/pp/rplot.nix +++ b/garlic/pp/rplot.nix @@ -1,5 +1,6 @@ { stdenv +, lib , rWrapper , rPackages , fontconfig @@ -22,7 +23,7 @@ , extraRPackages ? [] }: -with stdenv.lib; +with lib; let scalesPatched = with rPackages; buildRPackage { diff --git a/garlic/stages/experiment.nix b/garlic/stages/experiment.nix index b50fdec..19c0e45 100644 --- a/garlic/stages/experiment.nix +++ b/garlic/stages/experiment.nix @@ -1,5 +1,6 @@ { stdenv +, lib , garlicTools }: @@ -7,7 +8,7 @@ units }: -with stdenv.lib; +with lib; with garlicTools; let diff --git a/garlic/stages/sbatch.nix b/garlic/stages/sbatch.nix index 40c2d68..34a3167 100644 --- a/garlic/stages/sbatch.nix +++ b/garlic/stages/sbatch.nix @@ -1,5 +1,6 @@ { stdenv +, lib , numactl , slurm , garlicTools @@ -26,7 +27,7 @@ , acctgFreq ? null }: -with stdenv.lib; +with lib; with garlicTools; # sbatch fails silently if we pass garbage, so we assert the types here to avoid diff --git a/garlic/stages/unit.nix b/garlic/stages/unit.nix index babf39a..1af3f86 100644 --- a/garlic/stages/unit.nix +++ b/garlic/stages/unit.nix @@ -1,5 +1,6 @@ { stdenv +, lib , bash , writeText }: @@ -9,7 +10,7 @@ , conf }: -with stdenv.lib; +with lib; with builtins; let diff --git a/garlic/stdexp.nix b/garlic/stdexp.nix index 3213980..f06c1fb 100644 --- a/garlic/stdexp.nix +++ b/garlic/stdexp.nix @@ -1,5 +1,6 @@ { stdenv +, lib , config , stages , targetMachine @@ -11,7 +12,7 @@ , pp }: -with stdenv.lib; +with lib; with garlicTools; let diff --git a/garlic/tools.nix b/garlic/tools.nix index 8d81213..c092b55 100644 --- a/garlic/tools.nix +++ b/garlic/tools.nix @@ -1,8 +1,9 @@ { stdenv +, lib }: -with stdenv.lib; +with lib; let gen = rec { diff --git a/overlay.nix b/overlay.nix index 62413fd..020c4dd 100644 --- a/overlay.nix +++ b/overlay.nix @@ -216,6 +216,18 @@ let # Patched from upstream # ================================================================= + #libdwarf_insecure = super.libdwarf.overrideAttrs (old: { + # knownVulnerabilities = null; + #}); + libdwarf = super.symlinkJoin { + name = "libdwarf"; + paths = [ + self.libdwarf.dev + self.libdwarf.lib + self.libdwarf.out + ]; + }; + groff = callPackage ./bsc/groff/default.nix { }; fftw = callPackage ./bsc/fftw/default.nix { }; vtk = callPackage ./bsc/vtk/default.nix { From 60b2f9f6ccc2b939cb679ff4ab5320bbfe2bc39f Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 2 Mar 2023 11:14:47 +0100 Subject: [PATCH 754/987] Enable CI builds --- .gitlab-ci.yml | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 .gitlab-ci.yml diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..997cba8 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,6 @@ +build:bsc.ci: + stage: build + tags: + - nix + script: + - nix build -L --tarball-ttl 0 --file default.nix bsc.ci From f5987a0094578df690c43398f5f8cd3b9e7341e8 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 2 Mar 2023 11:15:25 +0100 Subject: [PATCH 755/987] Add ci derivation --- overlay.nix | 4 ++++ test/ci.nix | 31 +++++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+) create mode 100644 test/ci.nix diff --git a/overlay.nix b/overlay.nix index 020c4dd..3e26961 100644 --- a/overlay.nix +++ b/overlay.nix @@ -265,6 +265,10 @@ let # hwloc = callPackage ./test/bugs/hwloc.nix { }; sigsegv = callPackage ./test/reproducers/sigsegv.nix { }; }; + + ci = import ./test/ci.nix { + inherit self super bsc callPackage; + }; }); in diff --git a/test/ci.nix b/test/ci.nix new file mode 100644 index 0000000..0776b15 --- /dev/null +++ b/test/ci.nix @@ -0,0 +1,31 @@ +{ self, super, bsc, callPackage }: + +let + stdenv = self.stdenv; +in + +stdenv.mkDerivation rec { + name = "ci"; + src = ./ci.nix; + dontUnpack = true; + + # Just build some packages + buildInputs = with bsc; [ + extrae + ]; + + buildPhase = '' + if [ -e /boot ]; then + echo Build is NOT under chroot + echo This is the content of / : + ls -l / + exit 1 + fi + + echo "OK: Build is under chroot" + ''; + + installPhase = '' + touch $out + ''; +} From 38220140ec8f874e4ed2aa3da4442ac6375da38b Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 2 Mar 2023 11:16:54 +0100 Subject: [PATCH 756/987] Update nixpkgs to release 22.11 --- default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/default.nix b/default.nix index 3212621..1360756 100644 --- a/default.nix +++ b/default.nix @@ -1,16 +1,16 @@ let bscOverlay = import ./overlay.nix; - commit = "1614b96a68dd210919865abe78bda56b501eb1ef"; + commit = "3c0a90afd70b46b081601f9941999e596576337f"; # Pin the nixpkgs nixpkgsPath = builtins.fetchTarball { # Descriptive name to make the store path easier to identify name = "nixpkgs-${commit}"; - # Commit hash for nixpkgs as of 2021-09-01 + # Commit hash for nixpkgs release-22.11 as of 2023-03-02 url = "https://github.com/nixos/nixpkgs/archive/${commit}.tar.gz"; # Hash obtained using `nix-prefetch-url --unpack ` - sha256 = "17c4a6cg0xmnp6hl76h8fvxglngh66s8nfm3qq2iqv6iay4a92qz"; + sha256 = "0ss4cigiph1ck4lr0qjiw79pjsi4q0nd00mjfzmzmarxdphjsmyy"; }; pkgs = import nixpkgsPath { From 20c54467430aa299648448db2c161fe3e157e411 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 2 Mar 2023 11:17:39 +0100 Subject: [PATCH 757/987] CI build with verbose flag --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 997cba8..37a36b1 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -3,4 +3,4 @@ build:bsc.ci: tags: - nix script: - - nix build -L --tarball-ttl 0 --file default.nix bsc.ci + - nix build -v -L --tarball-ttl 0 --file default.nix bsc.ci From c28618b95c0cf809e1071fc1d2edc939618df343 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 2 Mar 2023 11:43:35 +0100 Subject: [PATCH 758/987] Update extrae to 4.0.1 --- bsc/extrae/default.nix | 19 ++++++++++++++----- overlay.nix | 16 +++------------- 2 files changed, 17 insertions(+), 18 deletions(-) diff --git a/bsc/extrae/default.nix b/bsc/extrae/default.nix index 88a2f42..26f7124 100644 --- a/bsc/extrae/default.nix +++ b/bsc/extrae/default.nix @@ -18,20 +18,29 @@ , autoreconfHook , python37Packages , installShellFiles +, symlinkJoin }: +let + libdwarfBundle = symlinkJoin { + name = "libdwarfBundle"; + paths = [ libdwarf.dev libdwarf.lib libdwarf.out ]; + }; +in + stdenv.mkDerivation rec { pname = "extrae"; - version = "3.8.3"; - + version = "4.0.1"; src = fetchFromGitHub { owner = "bsc-performance-tools"; repo = "extrae"; rev = "${version}"; - sha256 = "08ghd14zb3bgqb1smb824d621pqqww4q01n3pyws0vp3xi0kavf4"; + sha256 = "SlMYxNQXJ0Xg90HmpnotUR3tEPVVBXhk1NtEBJwGBR4="; }; - # FIXME: Waiting for German to merge this patch + # FIXME: Waiting for German to merge this patch. Still not in master, merged + # on 2023-03-01 in devel branch (after 3 years), see: + # https://github.com/bsc-performance-tools/extrae/pull/45 patches = [ ./use-command.patch ]; enableParallelBuilding = true; @@ -59,7 +68,7 @@ stdenv.mkDerivation rec { configureFlagsArray=( --enable-posix-clock --with-binutils="${binutils-unwrapped} ${libiberty}" - --with-dwarf=${libdwarf} + --with-dwarf=${libdwarfBundle} --with-elf=${libelf} --with-boost=${boost.dev} --enable-instrument-io diff --git a/overlay.nix b/overlay.nix index 3e26961..20fbd94 100644 --- a/overlay.nix +++ b/overlay.nix @@ -171,7 +171,9 @@ let enableDebugging = true; }); - extrae = callPackage ./bsc/extrae/default.nix { }; + extrae = callPackage ./bsc/extrae/default.nix { + libdwarf = super.libdwarf_20210528; + }; otf = callPackage ./bsc/otf/default.nix { }; vite = self.qt5.callPackage ./bsc/vite/default.nix { }; babeltrace = callPackage ./bsc/babeltrace/default.nix { }; @@ -216,18 +218,6 @@ let # Patched from upstream # ================================================================= - #libdwarf_insecure = super.libdwarf.overrideAttrs (old: { - # knownVulnerabilities = null; - #}); - libdwarf = super.symlinkJoin { - name = "libdwarf"; - paths = [ - self.libdwarf.dev - self.libdwarf.lib - self.libdwarf.out - ]; - }; - groff = callPackage ./bsc/groff/default.nix { }; fftw = callPackage ./bsc/fftw/default.nix { }; vtk = callPackage ./bsc/vtk/default.nix { From 7ef24b88e405820738cf1c5a6eecd8d1311c9f11 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 2 Mar 2023 11:46:27 +0100 Subject: [PATCH 759/987] Allow insecure packages --- .gitlab-ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 37a36b1..d623bfb 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -3,4 +3,5 @@ build:bsc.ci: tags: - nix script: + - export NIXPKGS_ALLOW_INSECURE=1 - nix build -v -L --tarball-ttl 0 --file default.nix bsc.ci From 4b5a948918929fbc5cd38e83653c3d757427d7e2 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 2 Mar 2023 12:03:12 +0100 Subject: [PATCH 760/987] Add PTR patch to Extrae --- bsc/extrae/PTR.patch | 13 +++++++++++++ bsc/extrae/default.nix | 12 ++++++++---- 2 files changed, 21 insertions(+), 4 deletions(-) create mode 100644 bsc/extrae/PTR.patch diff --git a/bsc/extrae/PTR.patch b/bsc/extrae/PTR.patch new file mode 100644 index 0000000..7b46282 --- /dev/null +++ b/bsc/extrae/PTR.patch @@ -0,0 +1,13 @@ +diff --git a/src/merger/common/bfd_manager.c b/src/merger/common/bfd_manager.c +index 5f9dacf9..5231e3eb 100644 +--- a/src/merger/common/bfd_manager.c ++++ b/src/merger/common/bfd_manager.c +@@ -225,7 +225,7 @@ asymbol **BFDmanager_getDefaultSymbols (void) + * + * @return No return value. + */ +-static void BFDmanager_findAddressInSection (bfd * abfd, asection * section, PTR data) ++static void BFDmanager_findAddressInSection (bfd * abfd, asection * section, void * data) + { + #if HAVE_BFD_GET_SECTION_SIZE || HAVE_BFD_SECTION_SIZE || HAVE_BFD_GET_SECTION_SIZE_BEFORE_RELOC + bfd_size_type size; diff --git a/bsc/extrae/default.nix b/bsc/extrae/default.nix index 26f7124..1f92de7 100644 --- a/bsc/extrae/default.nix +++ b/bsc/extrae/default.nix @@ -38,10 +38,14 @@ stdenv.mkDerivation rec { sha256 = "SlMYxNQXJ0Xg90HmpnotUR3tEPVVBXhk1NtEBJwGBR4="; }; - # FIXME: Waiting for German to merge this patch. Still not in master, merged - # on 2023-03-01 in devel branch (after 3 years), see: - # https://github.com/bsc-performance-tools/extrae/pull/45 - patches = [ ./use-command.patch ]; + patches = [ + # FIXME: Waiting for German to merge this patch. Still not in master, merged + # on 2023-03-01 in devel branch (after 3 years), see: + # https://github.com/bsc-performance-tools/extrae/pull/45 + ./use-command.patch + # https://github.com/bsc-performance-tools/extrae/issues/71 + ./PTR.patch + ]; enableParallelBuilding = true; hardeningDisable = [ "all" ]; From 1a99a7eb7369ccecb160feacbcac402ade7b7811 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 2 Mar 2023 12:08:02 +0100 Subject: [PATCH 761/987] Add more packages to CI --- test/ci.nix | 14 ++++++++++++++ test/compilers/llvm-ompss2-flang.nix | 25 +++++++++++++++++++++++++ 2 files changed, 39 insertions(+) create mode 100644 test/compilers/llvm-ompss2-flang.nix diff --git a/test/ci.nix b/test/ci.nix index 0776b15..99efcd2 100644 --- a/test/ci.nix +++ b/test/ci.nix @@ -11,7 +11,21 @@ stdenv.mkDerivation rec { # Just build some packages buildInputs = with bsc; [ + # Compilers + icc + clangOmpss2 + mcxx + # MPI + impi + mpich + openmpi + tampi + # Tools + ovni extrae + paraver + # Runtimes + nanos6 ]; buildPhase = '' diff --git a/test/compilers/llvm-ompss2-flang.nix b/test/compilers/llvm-ompss2-flang.nix new file mode 100644 index 0000000..9de7ebb --- /dev/null +++ b/test/compilers/llvm-ompss2-flang.nix @@ -0,0 +1,25 @@ +{ + stdenv +, flangOmpss2Git +, runCommand +, writeText +, strace +}: + +stdenv.mkDerivation { + name = "flang-ompss2-test"; + buildInputs = [ strace flangOmpss2Git ]; + file = writeText "hi.f90" + '' + program hello + print *, 'Hello, World!' + end program hello + ''; + phases = [ "installPhase" ]; + installPhase = '' + set -x + flang "$file" -c -o hi.o + flang hi.o -o hi + install -Dm555 hi "$out" + ''; +} From d18a95f8edb1b88eac21b91b02dc55e84be04804 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 2 Mar 2023 12:47:25 +0100 Subject: [PATCH 762/987] Update paraver to 4.10.6 Dropping wxpropgrid. Now it needs to link with openssl. --- bsc/paraver/default.nix | 23 +++++++++++------------ bsc/wxpropgrid/default.nix | 26 -------------------------- overlay.nix | 1 - 3 files changed, 11 insertions(+), 39 deletions(-) delete mode 100644 bsc/wxpropgrid/default.nix diff --git a/bsc/paraver/default.nix b/bsc/paraver/default.nix index 0876dae..7919842 100644 --- a/bsc/paraver/default.nix +++ b/bsc/paraver/default.nix @@ -6,10 +6,10 @@ , libxml2 , xml2 , fetchurl -, wxGTK28 +, wxGTK32 , autoconf , automake -, wxpropgrid +, openssl # For boost # Custom patches :) , enableMouseLabel ? false }: @@ -17,15 +17,15 @@ with lib; let - wx = wxGTK28; + wx = wxGTK32; in stdenv.mkDerivation rec { pname = "wxparaver"; - version = "4.8.2"; + version = "4.10.6"; src = fetchurl { url = "https://ftp.tools.bsc.es/wxparaver/wxparaver-${version}-src.tar.bz2"; - sha256 = "0b8rrhnf7h8j72pj6nrxkrbskgg9b5w60nxi47nxg6275qvfq8hd"; + sha256 = "a7L15viCXtQS9vAsdFzCFlUavUzl4Y0yOYmVSCrdWBU="; }; patches = [] @@ -37,17 +37,16 @@ stdenv.mkDerivation rec { # https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=wxparaver postPatch = '' pushd src/wxparaver - sed -i 's|-lparaver-kernel -lparaver-api|-L../../paraver-kernel/src/.libs -L../../paraver-kernel/api/.libs -lparaver-kernel -lparaver-api|g' src/Makefile.am - sed -i 's|^wxparaver_bin_CXXFLAGS =.*|& -I../../paraver-kernel -I../../paraver-kernel/api|' src/Makefile.am + sed -i \ + -e 's|-lparaver-api -lparaver-kernel|-L../../paraver-kernel/src/.libs -L../../paraver-kernel/api/.libs -lparaver-api -lparaver-kernel -lssl -lcrypto -ldl|g' \ + -e '$awxparaver_bin_CXXFLAGS = @CXXFLAGS@ -I../../paraver-kernel -I../../paraver-kernel/api' \ + src/Makefile.am + sed -i 's| -L$PARAVER_LIBDIR||g' configure.ac popd # Patch shebang as /usr/bin/env is missing in nix sed -i '1c#!/bin/sh' src/paraver-cfgs/install.sh - - #sed -i '1524d' src/wxparaver/src/gtimeline.cpp - #sed -i '806d' src/wxparaver/src/gtimeline.cpp - #sed -i '142d' src/wxparaver/src/paravermain.cpp ''; #TODO: Move the sed commands to proper patches (and maybe send them upstream?) @@ -60,7 +59,6 @@ stdenv.mkDerivation rec { configureFlags = [ "--with-boost=${boost}" "--with-wx-config=${wx}/bin/wx-config" - "--with-wxpropgrid-dir=${wxpropgrid}" ]; buildInputs = [ @@ -70,6 +68,7 @@ stdenv.mkDerivation rec { wx autoconf automake + openssl.dev ]; } diff --git a/bsc/wxpropgrid/default.nix b/bsc/wxpropgrid/default.nix deleted file mode 100644 index f204c5e..0000000 --- a/bsc/wxpropgrid/default.nix +++ /dev/null @@ -1,26 +0,0 @@ -{ - stdenv -, fetchurl -, wxGTK28 -}: - -let - #wx = wxGTK31; # BUG - wx = wxGTK28; -in -stdenv.mkDerivation rec { - pname = "wxpropgrid"; - version = "1.4.15"; - - src = fetchurl { - url = "http://prdownloads.sourceforge.net/wxpropgrid/wxpropgrid-${version}-src.tar.gz"; - sha256 = "1f62468x5s4h775bn5svlkv0lzzh06aciljpiqn5k3w2arkaijgh"; - }; - - enableParallelBuilding = false; - - buildInputs = [ - wx - ]; - -} diff --git a/overlay.nix b/overlay.nix index 20fbd94..7e4e345 100644 --- a/overlay.nix +++ b/overlay.nix @@ -161,7 +161,6 @@ let # Tracing # ================================================================= - wxpropgrid = callPackage ./bsc/wxpropgrid/default.nix { }; paraver = callPackage ./bsc/paraver/default.nix { }; paraverKernelFast = callPackage ./bsc/paraver/kernel-fast.nix { }; paraverFast = callPackage ./bsc/paraver/wxparaver-fast.nix { }; From bff039587259cfa7bd1717a03e1def5c8e8f15b5 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 2 Mar 2023 13:08:01 +0100 Subject: [PATCH 763/987] Update mpich to follow upstream --- overlay.nix | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/overlay.nix b/overlay.nix index 7e4e345..de1b4c1 100644 --- a/overlay.nix +++ b/overlay.nix @@ -126,8 +126,16 @@ let psmpi = callPackage ./bsc/parastation/psmpi.nix { }; # MPICH - mpich = callPackage ./bsc/mpich/default.nix { }; - mpichDebug = bsc.mpich.override { enableDebug = true; }; + #mpich_3 = callPackage ./bsc/mpich/default.nix { }; + #mpichDebug_3 = bsc.mpich.override { enableDebug = true; }; + mpich = super.mpich.overrideAttrs (old: { + buildInputs = old.buildInputs ++ [ self.libfabric ]; + configureFlags = old.configureFlags ++ [ + "--with-device=ch4:ofi" + "--with-libfabric=${self.libfabric}" + ]; + hardeningDisable = [ "all" ]; + }); # Default Intel MPI version is 2019 (the last one) impi = bsc.intelMpi; From f28817c3bf634e6e87027b14bbd1d146c1dfee7b Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 2 Mar 2023 17:58:53 +0100 Subject: [PATCH 764/987] Build wxparaver and paraver-kernel from github --- bsc/paraver/default.nix | 71 ++++++++-------- bsc/paraver/dont-expand-colors.patch | 120 +++++++++++++++++++++++++++ bsc/paraver/kernel.nix | 62 +++++++++----- bsc/paraver/release.nix | 74 +++++++++++++++++ overlay.nix | 12 ++- test/ci.nix | 2 +- 6 files changed, 275 insertions(+), 66 deletions(-) create mode 100644 bsc/paraver/dont-expand-colors.patch create mode 100644 bsc/paraver/release.nix diff --git a/bsc/paraver/default.nix b/bsc/paraver/default.nix index 7919842..60141ec 100644 --- a/bsc/paraver/default.nix +++ b/bsc/paraver/default.nix @@ -1,74 +1,73 @@ { stdenv -, lib -, fetchFromGitHub +, autoreconfHook , boost , libxml2 , xml2 -, fetchurl -, wxGTK32 +, wxGTK30 , autoconf , automake -, openssl # For boost -# Custom patches :) -, enableMouseLabel ? false +, paraverKernel +, openssl +, glibcLocales }: -with lib; - let - wx = wxGTK32; + wx = wxGTK30; in stdenv.mkDerivation rec { pname = "wxparaver"; version = "4.10.6"; - src = fetchurl { - url = "https://ftp.tools.bsc.es/wxparaver/wxparaver-${version}-src.tar.bz2"; - sha256 = "a7L15viCXtQS9vAsdFzCFlUavUzl4Y0yOYmVSCrdWBU="; + src = builtins.fetchGit { + url = "https://github.com/bsc-performance-tools/wxparaver.git"; + rev = "fe55c724ab59a5b0e60718919297bdf95582badb"; # v4.10.6 (missing tag) + ref = "master"; }; - patches = [] - ++ optional (enableMouseLabel) ./mouse-label.patch; + hardeningDisable = [ "all" ]; + # Fix the PARAVER_HOME variable + postPatch = '' + sed -i 's@^PARAVER_HOME=.*$@PARAVER_HOME='$out'@g' docs/wxparaver + sed -i '1aexport LOCALE_ARCHIVE="${glibcLocales}/lib/locale/locale-archive"' docs/wxparaver + ''; + + dontStrip = true; enableParallelBuilding = true; - # What would we do without the great gamezelda: - # https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=wxparaver - postPatch = '' - pushd src/wxparaver - sed -i \ - -e 's|-lparaver-api -lparaver-kernel|-L../../paraver-kernel/src/.libs -L../../paraver-kernel/api/.libs -lparaver-api -lparaver-kernel -lssl -lcrypto -ldl|g' \ - -e '$awxparaver_bin_CXXFLAGS = @CXXFLAGS@ -I../../paraver-kernel -I../../paraver-kernel/api' \ - src/Makefile.am - - sed -i 's| -L$PARAVER_LIBDIR||g' configure.ac - popd - - # Patch shebang as /usr/bin/env is missing in nix - sed -i '1c#!/bin/sh' src/paraver-cfgs/install.sh - ''; - #TODO: Move the sed commands to proper patches (and maybe send them upstream?) - preConfigure = '' - pushd src/wxparaver - autoreconf -i -f - popd + export CFLAGS="-O3" + export CXXFLAGS="-O3" ''; configureFlags = [ "--with-boost=${boost}" "--with-wx-config=${wx}/bin/wx-config" + "--with-paraver=${paraverKernel}" + "--with-openssl=${openssl.dev}" ]; buildInputs = [ + autoreconfHook boost - xml2 libxml2.dev + xml2 wx autoconf automake + paraverKernel openssl.dev + paraverKernel ]; + postInstall = '' + mkdir -p $out/include + mkdir -p $out/lib/paraver-kernel + mkdir -p $out/share/filters-config + cp -p ${paraverKernel}/bin/* $out/bin + # cp -p ${paraverKernel}/include/* $out/include + cp -a ${paraverKernel}/lib/paraver-kernel $out/lib/paraver-kernel + cp -p ${paraverKernel}/share/filters-config/* $out/share/filters-config + ''; } diff --git a/bsc/paraver/dont-expand-colors.patch b/bsc/paraver/dont-expand-colors.patch new file mode 100644 index 0000000..ff45d78 --- /dev/null +++ b/bsc/paraver/dont-expand-colors.patch @@ -0,0 +1,120 @@ +commit c2fa29f7f1bbde86f41417b198610253fff93667 +Author: Rodrigo Arias +Date: Thu Mar 2 13:14:56 2023 +0100 + + Add the PCF option DONT_EXPAND_COLORS + + Allows the user to specify the complete palette in the PCF, preventing + Paraver from expanding the colors. + +diff --git a/api/semanticcolor.cpp b/api/semanticcolor.cpp +index 9f86960..22859eb 100644 +--- a/api/semanticcolor.cpp ++++ b/api/semanticcolor.cpp +@@ -232,8 +232,9 @@ rgb CodeColor::getColor( PRV_UINT32 pos ) const + { + if( pos == 0 && ParaverConfig::getInstance()->getColorsTimelineUseZero() ) + return ParaverConfig::getInstance()->getColorsTimelineColorZero(); +- pos = pos % colors.size(); +- return colors[ pos ]; ++ // Skip the black at 0 ++ pos = pos % (colors.size() - 1); ++ return colors[ pos + 1 ]; + } + + void CodeColor::setColor( PRV_UINT32 whichPos, rgb whichColor ) +@@ -250,6 +251,12 @@ void CodeColor::setColor( PRV_UINT32 whichPos, rgb whichColor ) + colors[ whichPos ] = whichColor; + } + ++void CodeColor::cutAfter( PRV_UINT32 pos ) ++{ ++ if ( pos < colors.size() ) ++ colors.erase( colors.begin() + pos, colors.end() ); ++} ++ + void CodeColor::setCustomColor( TSemanticValue whichValue, rgb color ) + { + customPalette[ whichValue ] = color; +diff --git a/api/semanticcolor.h b/api/semanticcolor.h +index a079556..bddf3d8 100644 +--- a/api/semanticcolor.h ++++ b/api/semanticcolor.h +@@ -98,6 +98,7 @@ class CodeColor: public SemanticColor + + PRV_UINT32 getNumColors() const; + void setColor( PRV_UINT32 pos, rgb color ); ++ void cutAfter( PRV_UINT32 pos ); + void setCustomColor( TSemanticValue whichValue, rgb color ); + bool existCustomColors() const; + const std::map& getCustomPalette() const; +diff --git a/api/trace.cpp b/api/trace.cpp +index b0d2050..ee2ab69 100644 +--- a/api/trace.cpp ++++ b/api/trace.cpp +@@ -461,12 +461,21 @@ void TraceProxy::parsePCF( const string& whichFile ) + + rgb tmpColor; + const std::map< uint32_t, PCFFileParser<>::rgb >& semanticColors = pcfParser.getSemanticColors(); ++ uint32_t maxValue = 0; ++ + for ( auto it : semanticColors ) + { + std::tie( tmpColor.red, tmpColor.green, tmpColor.blue ) = it.second; + myCodeColor.setColor( it.first, tmpColor ); ++ if (it.first > maxValue) ++ maxValue = it.first; + } + ++ // Cut the palette after the highest defined value, so there are no ++ // extra expanded values ++ if ( !pcfParser.expandColors ) ++ myCodeColor.cutAfter(maxValue); ++ + myEventLabels = EventLabels( pcfParser ); + myStateLabels = StateLabels( pcfParser ); + +diff --git a/utils/traceparser/pcffileparser.cpp b/utils/traceparser/pcffileparser.cpp +index 9245955..3a1aecb 100644 +--- a/utils/traceparser/pcffileparser.cpp ++++ b/utils/traceparser/pcffileparser.cpp +@@ -286,6 +286,7 @@ constexpr char PCF_LABEL_SPEED[] = "SPEED"; + constexpr char PCF_LABEL_FLAG_ICONS[] = "FLAG_ICONS"; + constexpr char PCF_LABEL_NUM_OF_STATE_COLORS[] = "NUM_OF_STATE_COLORS"; + constexpr char PCF_LABEL_YMAX_SCALE[] = "YMAX_SCALE"; ++constexpr char PCF_LABEL_DONT_EXPAND_COLORS[] = "DONT_EXPAND_COLORS"; + + template< typename dummyParser = std::nullptr_t > + class DefaultOptionsParser : public PCFFileParser<>::SectionParser<> +@@ -293,12 +294,13 @@ class DefaultOptionsParser : public PCFFileParser<>::SectionParser<> + public: + DefaultOptionsParser( PCFFileParser<> *whichMainParser ) : PCFFileParser<>::SectionParser<>( whichMainParser ) + { +- parameterSetter[ PCF_LABEL_LEVEL ] = [this]( std::string line ) { mainParser->level = line; }; +- parameterSetter[ PCF_LABEL_UNITS ] = [this]( std::string line ) { mainParser->units = line; }; +- parameterSetter[ PCF_LABEL_LOOK_BACK ] = [this]( std::string line ) { mainParser->lookBack = line; }; +- parameterSetter[ PCF_LABEL_SPEED ] = [this]( std::string line ) { mainParser->speed = line; }; +- parameterSetter[ PCF_LABEL_FLAG_ICONS ] = [this]( std::string line ) { mainParser->flagIcons = line; }; +- parameterSetter[ PCF_LABEL_YMAX_SCALE ] = [this]( std::string line ) { mainParser->ymaxScale = line; }; ++ parameterSetter[ PCF_LABEL_LEVEL ] = [this]( std::string line ) { mainParser->level = line; }; ++ parameterSetter[ PCF_LABEL_UNITS ] = [this]( std::string line ) { mainParser->units = line; }; ++ parameterSetter[ PCF_LABEL_LOOK_BACK ] = [this]( std::string line ) { mainParser->lookBack = line; }; ++ parameterSetter[ PCF_LABEL_SPEED ] = [this]( std::string line ) { mainParser->speed = line; }; ++ parameterSetter[ PCF_LABEL_FLAG_ICONS ] = [this]( std::string line ) { mainParser->flagIcons = line; }; ++ parameterSetter[ PCF_LABEL_YMAX_SCALE ] = [this]( std::string line ) { mainParser->ymaxScale = line; }; ++ parameterSetter[ PCF_LABEL_DONT_EXPAND_COLORS ] = [this]( std::string line ) { mainParser->expandColors = false; }; + } + + virtual ~DefaultOptionsParser() = default; +diff --git a/utils/traceparser/pcffileparser.h b/utils/traceparser/pcffileparser.h +index 5fe2634..c12ecc8 100644 +--- a/utils/traceparser/pcffileparser.h ++++ b/utils/traceparser/pcffileparser.h +@@ -100,6 +100,7 @@ class PCFFileParser + void setEventLabel( TEventType eventType, const std::string& label ); + void setEventValues( TEventType eventType, const std::map< TEventValue, std::string >& values ); + void setEventValueLabel( TEventType eventType, TEventValue eventValue, const std::string& label ); ++ bool expandColors = true; + + private: + struct EventTypeData diff --git a/bsc/paraver/kernel.nix b/bsc/paraver/kernel.nix index 0a6c0b9..5e4d192 100644 --- a/bsc/paraver/kernel.nix +++ b/bsc/paraver/kernel.nix @@ -1,35 +1,53 @@ -{ stdenv -, fetchFromGitHub +{ + stdenv +, autoreconfHook , boost , libxml2 , xml2 -, fetchurl -, symlinkJoin +, wxGTK30 +, autoconf +, automake }: +let + wx = wxGTK30; +in stdenv.mkDerivation rec { pname = "paraver-kernel"; - version = "4.8.2"; + version = "${src.shortRev}"; - src = fetchurl { - url = "https://ftp.tools.bsc.es/wxparaver/wxparaver-${version}-src.tar.bz2"; - sha256 = "0b8rrhnf7h8j72pj6nrxkrbskgg9b5w60nxi47nxg6275qvfq8hd"; + src = builtins.fetchGit { + url = "https://github.com/bsc-performance-tools/paraver-kernel.git"; + rev = "3f89ec68da8e53ee227c57a2024bf789fa68ba98"; # master (missing tag) + ref = "master"; }; - postUnpack = "sourceRoot=$sourceRoot/src/paraver-kernel"; - - enableParallelBuilding = true; - - preConfigure = '' - configureFlagsArray=( - "--with-boost=${boost}" - ) - ''; - - buildInputs = [ - boost - xml2 - libxml2.dev + patches = [ + # https://github.com/bsc-performance-tools/paraver-kernel/pull/11 + ./dont-expand-colors.patch ]; + hardeningDisable = [ "all" ]; + enableParallelBuilding = true; + + dontStrip = true; + + preConfigure = '' + export CFLAGS="-O3 -DPARALLEL_ENABLED" + export CXXFLAGS="-O3 -DPARALLEL_ENABLED" + ''; + + configureFlags = [ + "--with-boost=${boost}" + "--enable-openmp" + ]; + + buildInputs = [ + autoreconfHook + boost + libxml2.dev + xml2 + autoconf + automake + ]; } diff --git a/bsc/paraver/release.nix b/bsc/paraver/release.nix new file mode 100644 index 0000000..7919842 --- /dev/null +++ b/bsc/paraver/release.nix @@ -0,0 +1,74 @@ +{ + stdenv +, lib +, fetchFromGitHub +, boost +, libxml2 +, xml2 +, fetchurl +, wxGTK32 +, autoconf +, automake +, openssl # For boost +# Custom patches :) +, enableMouseLabel ? false +}: + +with lib; + +let + wx = wxGTK32; +in +stdenv.mkDerivation rec { + pname = "wxparaver"; + version = "4.10.6"; + + src = fetchurl { + url = "https://ftp.tools.bsc.es/wxparaver/wxparaver-${version}-src.tar.bz2"; + sha256 = "a7L15viCXtQS9vAsdFzCFlUavUzl4Y0yOYmVSCrdWBU="; + }; + + patches = [] + ++ optional (enableMouseLabel) ./mouse-label.patch; + + enableParallelBuilding = true; + + # What would we do without the great gamezelda: + # https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=wxparaver + postPatch = '' + pushd src/wxparaver + sed -i \ + -e 's|-lparaver-api -lparaver-kernel|-L../../paraver-kernel/src/.libs -L../../paraver-kernel/api/.libs -lparaver-api -lparaver-kernel -lssl -lcrypto -ldl|g' \ + -e '$awxparaver_bin_CXXFLAGS = @CXXFLAGS@ -I../../paraver-kernel -I../../paraver-kernel/api' \ + src/Makefile.am + + sed -i 's| -L$PARAVER_LIBDIR||g' configure.ac + popd + + # Patch shebang as /usr/bin/env is missing in nix + sed -i '1c#!/bin/sh' src/paraver-cfgs/install.sh + ''; + #TODO: Move the sed commands to proper patches (and maybe send them upstream?) + + preConfigure = '' + pushd src/wxparaver + autoreconf -i -f + popd + ''; + + configureFlags = [ + "--with-boost=${boost}" + "--with-wx-config=${wx}/bin/wx-config" + ]; + + buildInputs = [ + boost + xml2 + libxml2.dev + wx + autoconf + automake + openssl.dev + ]; + +} diff --git a/overlay.nix b/overlay.nix index de1b4c1..3599ecf 100644 --- a/overlay.nix +++ b/overlay.nix @@ -169,14 +169,12 @@ let # Tracing # ================================================================= - paraver = callPackage ./bsc/paraver/default.nix { }; + paraverKernel = callPackage ./bsc/paraver/kernel.nix { }; + wxparaver = callPackage ./bsc/paraver/default.nix { }; + + # We should maintain these... paraverKernelFast = callPackage ./bsc/paraver/kernel-fast.nix { }; - paraverFast = callPackage ./bsc/paraver/wxparaver-fast.nix { }; - paraverExtra = bsc.paraver.override { enableMouseLabel = true; }; - paraverDebug = bsc.paraver.overrideAttrs (old: { - dontStrip = true; - enableDebugging = true; - }); + wxparaverFast = callPackage ./bsc/paraver/wxparaver-fast.nix { }; extrae = callPackage ./bsc/extrae/default.nix { libdwarf = super.libdwarf_20210528; diff --git a/test/ci.nix b/test/ci.nix index 99efcd2..67349d1 100644 --- a/test/ci.nix +++ b/test/ci.nix @@ -23,7 +23,7 @@ stdenv.mkDerivation rec { # Tools ovni extrae - paraver + wxparaver # Runtimes nanos6 ]; From 246aa8e7d14b8e575139e3dc10fd6ec82d5b2588 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 2 Mar 2023 18:10:06 +0100 Subject: [PATCH 765/987] Update Nanos6 to 2.8 --- bsc/nanos6/default.nix | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/bsc/nanos6/default.nix b/bsc/nanos6/default.nix index 50fe368..aa5b1ea 100644 --- a/bsc/nanos6/default.nix +++ b/bsc/nanos6/default.nix @@ -13,6 +13,7 @@ , extrae , boost , babeltrace2 +, ovni , enableJemalloc ? true , jemalloc ? null , cachelineBytes ? 64 @@ -25,13 +26,13 @@ with lib; stdenv.mkDerivation rec { pname = "nanos6"; - version = "2.7"; + version = "2.8"; src = fetchFromGitHub { owner = "bsc-pm"; repo = "nanos6"; rev = "version-${version}"; - sha256 = "1zw0pn4w450il2av50yr4n4zfh0sljw50wxp816pw6vbk6zf3yks"; + sha256 = "YGj/cubqXaNt4lR2CnSU+nXvi+SdB56EXLhfN/ufjHs="; }; prePatch = '' @@ -44,7 +45,10 @@ stdenv.mkDerivation rec { export CACHELINE_WIDTH=${toString cachelineBytes} ''; - configureFlags = [ "--with-babeltrace2=${babeltrace2}" ] ++ + configureFlags = [ + "--with-babeltrace2=${babeltrace2}" + "--with-ovni=${ovni}" + ] ++ (optional enableJemalloc "--with-jemalloc=${jemalloc}") ++ (optional enableGlibcxxDebug "CXXFLAGS=-D_GLIBCXX_DEBUG"); @@ -66,6 +70,7 @@ stdenv.mkDerivation rec { hwloc papi babeltrace2 + ovni ] ++ (if (extrae != null) then [extrae] else []); } From a2e02bb136cc9b2444e56a15ac306a4890413e85 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 2 Mar 2023 18:14:05 +0100 Subject: [PATCH 766/987] Update mcxx to 2022.11 --- bsc/mcxx/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bsc/mcxx/default.nix b/bsc/mcxx/default.nix index 93ac423..3913dc1 100644 --- a/bsc/mcxx/default.nix +++ b/bsc/mcxx/default.nix @@ -15,7 +15,7 @@ stdenv.mkDerivation rec { pname = "mcxx"; - version = "2021.11"; + version = "2022.11"; passthru = { CC = "mcc"; @@ -27,7 +27,7 @@ stdenv.mkDerivation rec { owner = "bsc-pm"; repo = pname; rev = "github-release-${version}"; - sha256 = "0g9y93x7aqy3cpnw7l7k3b3lqqss6ri6ahwk1pbfkc2bpgylwfcx"; + sha256 = "DMT5UPwsjVo2d0r2wgQvYhcrAacOe+BkiXjAvFA0zGo="; }; enableParallelBuilding = true; From 4cfad119ce010d78b75168c45e9ee01fe435bad9 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 2 Mar 2023 18:33:46 +0100 Subject: [PATCH 767/987] Update OmpSs-2 clang to 2022.11 --- bsc/llvm-ompss2/clang.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bsc/llvm-ompss2/clang.nix b/bsc/llvm-ompss2/clang.nix index ae9254a..a774771 100644 --- a/bsc/llvm-ompss2/clang.nix +++ b/bsc/llvm-ompss2/clang.nix @@ -14,14 +14,14 @@ }: stdenv.mkDerivation rec { - version = "2021.11"; + version = "2022.11"; pname = "clang-ompss2"; src = fetchFromGitHub { owner = "bsc-pm"; repo = "llvm"; rev = "refs/tags/github-release-${version}"; - sha256 = "1x9scp1jpb2d5vm2pymc39r51242b7bvhx39hp9143rw5b2w3wrm"; + sha256 = "i1+ewQ3Xe+27I/s294TGaEQC1McjMtywZ7vO64eGnus="; }; enableParallelBuilding = true; From 180fa4c9921ddc79bb0378e4907223fcf056e72c Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 16 Jun 2021 14:26:26 +0200 Subject: [PATCH 768/987] intel: remove unused nanos6 dependency --- bsc/intel-compiler/default.nix | 1 - 1 file changed, 1 deletion(-) diff --git a/bsc/intel-compiler/default.nix b/bsc/intel-compiler/default.nix index 17296ad..9b60dcf 100644 --- a/bsc/intel-compiler/default.nix +++ b/bsc/intel-compiler/default.nix @@ -1,7 +1,6 @@ { stdenv , gcc -, nanos6 , iccUnwrapped , wrapCCWith , intelLicense From a6549c1908a83e8071493712bef67f9c19b7f847 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 16 Jun 2021 14:26:48 +0200 Subject: [PATCH 769/987] intel: add intel compiler 2021.2.0 --- bsc/intel-compiler/icc2021.nix | 145 +++++++++++++++++++++++++++++ bsc/intel-compiler/wrapper2021.nix | 26 ++++++ overlay.nix | 10 +- 3 files changed, 180 insertions(+), 1 deletion(-) create mode 100644 bsc/intel-compiler/icc2021.nix create mode 100644 bsc/intel-compiler/wrapper2021.nix diff --git a/bsc/intel-compiler/icc2021.nix b/bsc/intel-compiler/icc2021.nix new file mode 100644 index 0000000..c995b5f --- /dev/null +++ b/bsc/intel-compiler/icc2021.nix @@ -0,0 +1,145 @@ +{ stdenv +, lib +, fetchurl +, dpkg +, rsync +, libffi +, libelf +, libxml2 +, hwloc +, autoPatchelfHook +}: + +with lib; + +let + + getsrc = url: sha256: fetchurl { inherit url sha256; }; + + version = "2021.2.0"; + _debpkgrel = "610"; + tbbrel = "357"; + + # Shorhands + main = "intel-oneapi-dpcpp-cpp"; + compiler = "intel-oneapi-compiler-dpcpp-cpp"; + shared = "intel-oneapi-compiler-shared"; + openmp = "intel-oneapi-openmp"; + tbb = "intel-oneapi-tbb"; + + # From Arch Linux PKGBUILD: + # https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=intel-oneapi-compiler-dpcpp-cpp + debs = [ + # From intel-oneapi-compiler-dpcpp-cpp + "${main}-${version}-${version}-${_debpkgrel}_amd64.deb" + "${compiler}-common-${version}-${version}-${_debpkgrel}_all.deb" + "${compiler}-runtime-${version}-${version}-${_debpkgrel}_amd64.deb" + + # From intel-oneapi-compiler-shared + "${shared}-${version}-${version}-${_debpkgrel}_amd64.deb" + "${shared}-runtime-${version}-${version}-${_debpkgrel}_amd64.deb" + "${shared}-common-${version}-${version}-${_debpkgrel}_all.deb" + "${shared}-common-runtime-${version}-${version}-${_debpkgrel}_all.deb" + "${compiler}-classic-fortran-shared-runtime-${version}-${version}-${_debpkgrel}_amd64.deb" + + # From intel-oneapi-openmp + "${openmp}-${version}-${version}-${_debpkgrel}_amd64.deb" + "${openmp}-common-${version}-${version}-${_debpkgrel}_all.deb" + + # From intel-oneapi-tbb + "${tbb}-${version}-${version}-${tbbrel}_amd64.deb" + "${tbb}-devel-${version}-${version}-${tbbrel}_amd64.deb" + "${tbb}-common-${version}-${version}-${tbbrel}_all.deb" + "${tbb}-common-devel-${version}-${version}-${tbbrel}_all.deb" + ]; + + apthost = "https://apt.repos.intel.com/oneapi/pool/main/"; + urls = map (x: apthost + x) debs; + + sums = [ + # From intel-oneapi-compiler-dpcpp-cpp + "0pwsfzkazr9yf6v6lgwb3p2in6ch3rlcc9qcfarkyqn052p760kk" + "0vzsanldhs4ym4gsfn0zjqm03x53ma1zjkj24hpkhpsvlr2r069w" + "0nx62v6g0wl70lqdh7sh7gfgxbynhrrips9gpj9if60ngz6fm21m" + + # From intel-oneapi-compiler-shared + "1al80pcy2r3q2r2pm04sva7rd3z6y287mkdv5jq4p5bfd8yi14d4" + "07rp0cjmbgj48wly9dm6ibxzbsanmgrsjjqr7mx688ms6qbhv314" + "1pf4xckyyhssjknhs6hwampjsz2qjlg81jw2fc441zaccwf25yf3" + "0hk0x4wq60g9wnn9j051v25zcmbasjdzp34xfvrihmcvyws0s69g" + "0dhbw8kshw4abqc9zf891z5ic0x13x3kvhk56nrqkqgcfwps9w8a" + + # From intel-oneapi-openmp + "1wqy2sjwlqdh72zhfrxl9pm106hjzfdbbm98cxigbg20fb5lbv5a" + "19nbqypvqcf8c3mwriaqrmp5igjpwvwrb9mq2fxa5i40w7bhlxjl" + + # From intel-oneapi-tbb + "1dpii3g861kimky0x7dqcj6hg7zb6i5kw1wgwrxdc5yxhi5slbm9" + "0bl1flm6w0w9nzrh34ig4p9qz2gbdgw9q14as2pwp8flicd8p899" + "0w3kip6q713v1xlfc10ai4v15cbwmbqrv8r1f5x6pfqdbb0bpmbv" + "0v95nmddyi0mjjdvm07w9fm3vq4a0wkx7zxlyzn2f4xg38qc5j73" + ]; + +in + stdenv.mkDerivation { + inherit version; + name = "intel-compiler-${version}"; + + passthru = { + CC = "icc"; + CXX = "icpc"; + }; + + srcs = zipListsWith getsrc urls sums; + + buildInputs = [ + dpkg + rsync + libffi + libelf + libxml2 + hwloc + autoPatchelfHook + ]; + + dontBuild = true; + + # The gcc package is required for building other programs + #propagatedBuildInputs = [ gcc ]; + + unpackCmd = '' + dpkg -x $curSrc . + ''; + + # FIXME: Some dependencies are missing + autoPatchelfIgnoreMissingDeps=true; + + # Compiler + installPhase = '' + mkdir -p $out/{bin,lib,include} + + pushd intel/oneapi/compiler/${version}/linux + # Binaries + rsync -a bin/ $out/bin/ + rsync -a bin/intel64/ $out/bin/ + + # Libraries + rsync -a --exclude=oclfpga lib/ $out/lib/ + rsync -a compiler/lib/intel64_lin/ $out/lib/ + + # Headers + rsync -a include/ $out/include/ + rsync -a compiler/include/ $out/include/ + popd + + # TBB + pushd intel/oneapi/tbb/${version} + # Libraries + rsync -a lib/intel64/gcc4.8/ $out/lib/ + + # Headers + rsync -a include/ $out/include/ + popd + ''; + + } diff --git a/bsc/intel-compiler/wrapper2021.nix b/bsc/intel-compiler/wrapper2021.nix new file mode 100644 index 0000000..b1c6185 --- /dev/null +++ b/bsc/intel-compiler/wrapper2021.nix @@ -0,0 +1,26 @@ +{ + stdenv +, gcc +, iccUnwrapped +, wrapCCWith +}: + +let + targetConfig = stdenv.targetPlatform.config; + inherit gcc; +in wrapCCWith rec { + cc = iccUnwrapped; + extraBuildCommands = '' + echo "-B${gcc.cc}/lib/gcc/${targetConfig}/${gcc.version}" >> $out/nix-support/cc-cflags + echo "-isystem ${iccUnwrapped}/include" >> $out/nix-support/cc-cflags + echo "-isystem ${iccUnwrapped}/include/icc" >> $out/nix-support/cc-cflags + echo "-L${gcc.cc}/lib/gcc/${targetConfig}/${gcc.version}" >> $out/nix-support/cc-ldflags + echo "-L${gcc.cc.lib}/lib" >> $out/nix-support/cc-ldflags + + # Create the wrappers for icc and icpc + wrap icx $wrapper $ccPath/icx + wrap icx $wrapper $ccPath/icpx + wrap icx $wrapper $ccPath/clang + wrap icx $wrapper $ccPath/clang++ + ''; +} diff --git a/overlay.nix b/overlay.nix index 3599ecf..4d7a302 100644 --- a/overlay.nix +++ b/overlay.nix @@ -37,13 +37,21 @@ let intel-mpi = bsc.intelMpi; }; + icc2021Unwrapped = callPackage ./bsc/intel-compiler/icc2021.nix { }; + # A wrapper script that puts all the flags and environment vars # properly and calls the intel compiler binary - icc = appendPasstru (callPackage ./bsc/intel-compiler/default.nix { + icc2020 = appendPasstru (callPackage ./bsc/intel-compiler/default.nix { iccUnwrapped = bsc.iccUnwrapped; intelLicense = bsc.intelLicense; }) { CC = "icc"; CXX = "icpc"; }; + icc2021 = appendPasstru (callPackage ./bsc/intel-compiler/wrapper2021.nix { + iccUnwrapped = bsc.icc2021Unwrapped; + }) { CC = "icc"; CXX = "icpc"; }; + + icc = bsc.icc2020; + # We need to set the cc.CC and cc.CXX attributes, in order to # determine the name of the compiler gcc = appendPasstru self.gcc { CC = "gcc"; CXX = "g++"; }; From ef5e98e06d395a578bfb5bcd1a0efdc892c02050 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 16 Jun 2021 19:30:43 +0200 Subject: [PATCH 770/987] icc2021: fix wrapper names and ldflags --- bsc/intel-compiler/wrapper2021.nix | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/bsc/intel-compiler/wrapper2021.nix b/bsc/intel-compiler/wrapper2021.nix index b1c6185..6802fa2 100644 --- a/bsc/intel-compiler/wrapper2021.nix +++ b/bsc/intel-compiler/wrapper2021.nix @@ -14,13 +14,14 @@ in wrapCCWith rec { echo "-B${gcc.cc}/lib/gcc/${targetConfig}/${gcc.version}" >> $out/nix-support/cc-cflags echo "-isystem ${iccUnwrapped}/include" >> $out/nix-support/cc-cflags echo "-isystem ${iccUnwrapped}/include/icc" >> $out/nix-support/cc-cflags + + echo "-L${iccUnwrapped}/lib" >> $out/nix-support/cc-ldflags echo "-L${gcc.cc}/lib/gcc/${targetConfig}/${gcc.version}" >> $out/nix-support/cc-ldflags echo "-L${gcc.cc.lib}/lib" >> $out/nix-support/cc-ldflags - # Create the wrappers for icc and icpc + # Create the wrappers for icx* + wrap lld $wrapper $ccPath/lld wrap icx $wrapper $ccPath/icx - wrap icx $wrapper $ccPath/icpx - wrap icx $wrapper $ccPath/clang - wrap icx $wrapper $ccPath/clang++ + wrap icpx $wrapper $ccPath/icpx ''; } From 5789b4a77a95a2ed3d98031085ded52a341f1d84 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ra=C3=BAl=20Pe=C3=B1acoba?= Date: Mon, 5 Jul 2021 17:06:23 +0200 Subject: [PATCH 771/987] icc2021: added stdc++ includes --- bsc/intel-compiler/wrapper2021.nix | 2 ++ overlay.nix | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/bsc/intel-compiler/wrapper2021.nix b/bsc/intel-compiler/wrapper2021.nix index 6802fa2..17ccdf8 100644 --- a/bsc/intel-compiler/wrapper2021.nix +++ b/bsc/intel-compiler/wrapper2021.nix @@ -14,6 +14,8 @@ in wrapCCWith rec { echo "-B${gcc.cc}/lib/gcc/${targetConfig}/${gcc.version}" >> $out/nix-support/cc-cflags echo "-isystem ${iccUnwrapped}/include" >> $out/nix-support/cc-cflags echo "-isystem ${iccUnwrapped}/include/icc" >> $out/nix-support/cc-cflags + echo "-isystem ${gcc.cc}/include/c++/${gcc.version}" >> $out/nix-support/cc-cflags + echo "-isystem ${gcc.cc}/include/c++/${gcc.version}/${targetConfig}" >> $out/nix-support/cc-cflags echo "-L${iccUnwrapped}/lib" >> $out/nix-support/cc-ldflags echo "-L${gcc.cc}/lib/gcc/${targetConfig}/${gcc.version}" >> $out/nix-support/cc-ldflags diff --git a/overlay.nix b/overlay.nix index 4d7a302..e12cbff 100644 --- a/overlay.nix +++ b/overlay.nix @@ -48,7 +48,7 @@ let icc2021 = appendPasstru (callPackage ./bsc/intel-compiler/wrapper2021.nix { iccUnwrapped = bsc.icc2021Unwrapped; - }) { CC = "icc"; CXX = "icpc"; }; + }) { CC = "icx"; CXX = "icpx"; }; icc = bsc.icc2020; From 833d58a8750458ccf496e3fcd980d04265e68ee4 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 10 Nov 2022 00:55:10 +0100 Subject: [PATCH 772/987] intel: add libstdc++ as dependency for patchelf --- bsc/intel-compiler/icc2021.nix | 3 +++ 1 file changed, 3 insertions(+) diff --git a/bsc/intel-compiler/icc2021.nix b/bsc/intel-compiler/icc2021.nix index c995b5f..b8f275a 100644 --- a/bsc/intel-compiler/icc2021.nix +++ b/bsc/intel-compiler/icc2021.nix @@ -100,9 +100,11 @@ in libxml2 hwloc autoPatchelfHook + stdenv.cc.cc.lib ]; dontBuild = true; + dontStrip = true; # The gcc package is required for building other programs #propagatedBuildInputs = [ gcc ]; @@ -113,6 +115,7 @@ in # FIXME: Some dependencies are missing autoPatchelfIgnoreMissingDeps=true; + #autoPatchelfIgnoreMissingDeps = [ "*" ]; # Compiler installPhase = '' From fd84af45f04fe22ce0c2318be1eefa1d0f59956d Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 9 Nov 2022 23:39:57 +0100 Subject: [PATCH 773/987] Add Intel OneAPI 2022 --- bsc/alya/default.nix | 40 +++ bsc/intel-compiler/default.nix | 14 +- bsc/intel-compiler/icc2021.nix | 2 +- bsc/intel-compiler/wrapper-fortran.nix | 29 ++ bsc/intel-oneapi/2022.3.1.nix | 219 ++++++++++++++ bsc/intel-oneapi/default.nix | 33 +++ bsc/intel-oneapi/ifort.nix | 383 +++++++++++++++++++++++++ bsc/intel-oneapi/license.nix | 39 +++ bsc/intel-oneapi/oneapi.nix | 100 +++++++ bsc/llvm-ompss2/clang.nix | 2 +- overlay.nix | 21 +- 11 files changed, 876 insertions(+), 6 deletions(-) create mode 100644 bsc/alya/default.nix create mode 100644 bsc/intel-compiler/wrapper-fortran.nix create mode 100644 bsc/intel-oneapi/2022.3.1.nix create mode 100644 bsc/intel-oneapi/default.nix create mode 100644 bsc/intel-oneapi/ifort.nix create mode 100644 bsc/intel-oneapi/license.nix create mode 100644 bsc/intel-oneapi/oneapi.nix diff --git a/bsc/alya/default.nix b/bsc/alya/default.nix new file mode 100644 index 0000000..8781068 --- /dev/null +++ b/bsc/alya/default.nix @@ -0,0 +1,40 @@ +{ + stdenv +, cmake +, ifort +, impi +, pkgconfig +, icc +}: + +stdenv.mkDerivation rec { + pname = "alya"; + version = "${src.shortRev}"; + src = builtins.fetchGit { + url = "ssh://git@alya.gitlab.bsc.es/alya/alya.git"; + ref = "master"; + rev = "d7bd220b4ecf70f745c9c3667b4e830a6b3e76dc"; + }; + buildInputs = [ cmake ifort impi pkgconfig icc ]; + cmakeFlags = [ + #"--debug-trycompile" + #"--debug-find" + "-DUSEMPIF08=ON" + "-DCMAKE_C_COMPILER=icc" + "-DCMAKE_CXX_COMPILER=icpc" + "-DCMAKE_Fortran_COMPILER=ifort" + "-DMPI_HOME=${impi}" + #"-DMPI_C_COMPILER=mpicc" + #"-DMPI_CXX_COMPILER=mpicxx" + #"-DWITH_ALL_MODULES=OFF" "-DWITH_MODULE_NASTIN=ON" + "-DWITH_NDIMEPAR=ON" + #"-DWITH_CTEST=OFF" + "-DINTEGER_SIZE=8" + ]; + #I_MPI_ROOT = impi; + #VERBOSE = 1; + #NIX_DEBUG = 5; + enableParallelBuilding = true; + dontStrip = true; + hardeningDisable = [ "all" ]; +} diff --git a/bsc/intel-compiler/default.nix b/bsc/intel-compiler/default.nix index 9b60dcf..5f3f76d 100644 --- a/bsc/intel-compiler/default.nix +++ b/bsc/intel-compiler/default.nix @@ -25,8 +25,16 @@ in wrapCCWith rec { >> $out/nix-support/setup-hook # Create the wrappers for icc and icpc - wrap icc $wrapper $ccPath/icc - wrap icpc $wrapper $ccPath/icpc - wrap ifort $wrapper $ccPath/ifort + if [ -e $ccPath/icc ]; then + wrap icc $wrapper $ccPath/icc + fi + + if [ -e $ccPath/icpc ]; then + wrap icpc $wrapper $ccPath/icpc + fi + + if [ -e $ccPath/ifort ]; then + wrap ifort $wrapper $ccPath/ifort + fi ''; } diff --git a/bsc/intel-compiler/icc2021.nix b/bsc/intel-compiler/icc2021.nix index b8f275a..076da54 100644 --- a/bsc/intel-compiler/icc2021.nix +++ b/bsc/intel-compiler/icc2021.nix @@ -114,7 +114,7 @@ in ''; # FIXME: Some dependencies are missing - autoPatchelfIgnoreMissingDeps=true; + autoPatchelfIgnoreMissingDeps = true; #autoPatchelfIgnoreMissingDeps = [ "*" ]; # Compiler diff --git a/bsc/intel-compiler/wrapper-fortran.nix b/bsc/intel-compiler/wrapper-fortran.nix new file mode 100644 index 0000000..17ccdf8 --- /dev/null +++ b/bsc/intel-compiler/wrapper-fortran.nix @@ -0,0 +1,29 @@ +{ + stdenv +, gcc +, iccUnwrapped +, wrapCCWith +}: + +let + targetConfig = stdenv.targetPlatform.config; + inherit gcc; +in wrapCCWith rec { + cc = iccUnwrapped; + extraBuildCommands = '' + echo "-B${gcc.cc}/lib/gcc/${targetConfig}/${gcc.version}" >> $out/nix-support/cc-cflags + echo "-isystem ${iccUnwrapped}/include" >> $out/nix-support/cc-cflags + echo "-isystem ${iccUnwrapped}/include/icc" >> $out/nix-support/cc-cflags + echo "-isystem ${gcc.cc}/include/c++/${gcc.version}" >> $out/nix-support/cc-cflags + echo "-isystem ${gcc.cc}/include/c++/${gcc.version}/${targetConfig}" >> $out/nix-support/cc-cflags + + echo "-L${iccUnwrapped}/lib" >> $out/nix-support/cc-ldflags + echo "-L${gcc.cc}/lib/gcc/${targetConfig}/${gcc.version}" >> $out/nix-support/cc-ldflags + echo "-L${gcc.cc.lib}/lib" >> $out/nix-support/cc-ldflags + + # Create the wrappers for icx* + wrap lld $wrapper $ccPath/lld + wrap icx $wrapper $ccPath/icx + wrap icpx $wrapper $ccPath/icpx + ''; +} diff --git a/bsc/intel-oneapi/2022.3.1.nix b/bsc/intel-oneapi/2022.3.1.nix new file mode 100644 index 0000000..76ea008 --- /dev/null +++ b/bsc/intel-oneapi/2022.3.1.nix @@ -0,0 +1,219 @@ +{ stdenv +, fetchurl +, ncurses +, lib +, dpkg +, rsync +, libffi +, libelf +, libxml2 +, hwloc +, autoPatchelfHook +}: + +# The distribution of intel packages is a mess. We are doing the installation +# based on the .deb metapackage "intel-hpckit", and follow de dependencies, +# which have mismatching versions. + +# Bruno Bzeznik (bzizou) went through the madness of using their .sh installer, +# pulling all the X dependencies here: +# https://github.com/Gricad/nur-packages/blob/4b67c8ad0ce1baa1d2f53ba41ae5bca8e00a9a63/pkgs/intel/oneapi.nix + +# But this is an attempt to install the packages from the APT repo + +let + + # Composite based on hpckit + hpckit = { ver = "2022.2.0"; rev = "191"; }; + #basekit = { ver = "2022.2.0"; rev = "262"; }; + comp = { ver = "2022.0.2"; rev = "3658"; }; + mpi = { ver = "2021.6.0"; rev = "602"; }; + + compilerRev = "3768"; + mpiRev = "76"; + debList = [ + "intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-${v}-${v}-${compilerRev}_amd64.deb" + "intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-runtime-${v}-${v}-${compilerRev}_amd64.deb" + "intel-oneapi-compiler-fortran-common-${v}-${v}-${compilerRev}_all.deb" + "intel-oneapi-compiler-shared-${v}-${v}-${compilerRev}_amd64.deb" + "intel-oneapi-compiler-cpp-eclipse-cfg-${v}-${compilerRev}_all.deb" + "intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-common-${v}-${v}-${compilerRev}_all.deb" + "intel-oneapi-compiler-dpcpp-cpp-classic-fortran-shared-runtime-${v}-${v}-${compilerRev}_amd64.deb" + "intel-oneapi-compiler-dpcpp-cpp-common-${v}-${v}-${compilerRev}_all.deb" + "intel-oneapi-compiler-fortran-runtime-${v}-${v}-${compilerRev}_amd64.deb" + "intel-oneapi-compiler-shared-common-${v}-${v}-${compilerRev}_all.deb" + "intel-oneapi-compiler-shared-runtime-${v}-${v}-${compilerRev}_amd64.deb" + + "intel-oneapi-dpcpp-cpp-${v}-${v}-${compilerRev}_amd64.deb" + "intel-oneapi-openmp-${v}-${v}-${compilerRev}_amd64.deb" + "intel-oneapi-openmp-common-${v}-${v}-${compilerRev}_all.deb" + + "intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-${v}-${compilerRev}_amd64.deb" + "intel-oneapi-compiler-dpcpp-cpp-runtime-${v}-${v}-${compilerRev}_amd64.deb" + "intel-oneapi-compiler-dpcpp-eclipse-cfg-${v}-${compilerRev}_all.deb" + "intel-oneapi-compiler-dpcpp-cpp-${v}-${v}-${compilerRev}_amd64.deb" + "intel-oneapi-compiler-fortran-${v}-${v}-${compilerRev}_amd64.deb" + "intel-oneapi-compiler-fortran-runtime-${v}-${compilerRev}_amd64.deb" + + "intel-oneapi-mpi-devel-${mpi.ver}-${mpi.ver}-${mpi.rev}_amd64.deb" + "intel-oneapi-mpi-${mpi.ver}-${mpi.ver}-${mpi.rev}_amd64.deb" + + #"intel-oneapi-tbb-${v}-${v}-${tbbVer}_amd64.deb" + #"intel-oneapi-tbb-devel-${v}-${v}-${tbbVer}_amd64.deb" + #"intel-oneapi-tbb-common-${v}-${v}-${tbbVer}_all.deb" + #"intel-oneapi-tbb-common-devel-${v}-${v}-${tbbVer}_all.deb" + + #intel-basekit-2021.1.0 + #intel-hpckit-getting-started (>= 2021.1.0-2684) + #intel-oneapi-common-vars (>= 2021.1.1-60) + #intel-oneapi-common-licensing-2021.1.1 + #intel-oneapi-dev-utilities-2021.1.1 + #intel-oneapi-inspector (>= 2021.1.1-42) + #intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-2021.1.1 + #intel-oneapi-compiler-fortran-2021.1.1 + #intel-oneapi-clck-2021.1.1 + #intel-oneapi-itac-2021.1.1 + ]; + + pkgsDesc = stdenv.mkDerivation { + name = "intel-oneapi-packages"; + srcs = [ + (fetchurl { + url = "https://apt.repos.intel.com/oneapi/dists/all/main/binary-amd64/Packages"; + sha256 = "sha256-swUGn097D5o1giK2l+3H4xFcUXSAUYtavQsPyiJlr2A="; + }) + (fetchurl { + url = "https://apt.repos.intel.com/oneapi/dists/all/main/binary-all/Packages"; + sha256 = "sha256-Ewpy0l0fXiJDG0FkAGykqizW1bm+/lcvI2OREyqzOLM="; + }) + ]; + phases = [ "installPhase" ]; + installPhase = '' + awk -F': ' '\ + BEGIN { print "[ {" } \ + NR>1 && /^Package: / { print "} {"; } \ + /: / { printf "%s = \"%s\";\n", $1, $2 } \ + END { print "} ]" }' $srcs > $out + ''; + }; + + pkgsExpanded = import pkgsDesc; + + getSum = pkgs: deb: + let + matches = lib.filter (x: "pool/main/${deb}" == x.Filename) pkgs; + match = assert lib.length matches == 1; lib.elemAt matches 0; + #match = lib.elemAt matches 0; + in + match.SHA256; + + apthost = "https://apt.repos.intel.com/oneapi/pool/main/"; + urls = builtins.map (x: apthost + x) debList; + sums = builtins.map (x: getSum pkgsExpanded x) debList; + getsrc = url: sha256: fetchurl { inherit url sha256; }; + + intel-oneapi-source = stdenv.mkDerivation rec { + version = v; + pname = "intel-oneapi-source"; + + srcs = lib.zipListsWith getsrc urls sums; + dontBuild = true; + dontStrip = true; + buildInputs = [ dpkg ]; + phases = [ "unpackPhase" "installPhase" ]; + + unpackCmd = '' + dpkg -x $curSrc . + ''; + + installPhase = '' + mkdir -p $out + mv intel $out + ''; + }; + +in + stdenv.mkDerivation rec { + version = v; + pname = "intel-oneapi"; + src = intel-oneapi-source; + + buildInputs = [ + rsync + libffi + libelf + libxml2 + hwloc + stdenv.cc.cc.lib + ]; + nativeBuildInputs = [ autoPatchelfHook ]; + + # The gcc package is required for building other programs + #propagatedBuildInputs = [ gcc ]; + + phases = [ "installPhase" "fixupPhase" ]; + + dontStrip = true; + + installPhase = '' + mkdir -p $out/{bin,lib,include} + mkdir -p $out/share/man + + cd $src + + # Compiler + pushd intel/oneapi/compiler/${version} + pushd linux + # Binaries + rsync -a bin/ $out/bin/ + rsync -a bin/intel64/ $out/bin/ + rsync -a bin-llvm/ $out/bin-llvm/ + + # Libraries + rsync -a --exclude=oclfpga lib/ $out/lib/ + rsync -a compiler/lib/intel64_lin/ $out/lib/ + + # Headers + rsync -a include/ $out/include/ + rsync -a compiler/include/ $out/include/ + popd + + # Manuals + rsync -a documentation/en/man/common/ $out/share/man/ + popd + ''; + + } + + + + + + +#in +# +#stdenv.mkDerivation rec { +# version = "2022.3.2"; +# pkgVersion = "2022.3.1.16997"; # Intel (R) Versioning ??? +# pname = "intel-onapi-hpc-toolkit"; +# +# # From their CI: https://github.com/oneapi-src/oneapi-ci/blob/master/.github/workflows/build_all.yml +# src = fetchurl { +# url = "https://registrationcenter-download.intel.com/akdlm/irc_nas/18975/l_HPCKit_p_${pkgVersion}_offline.sh"; +# sha256 = "sha256-04TYMArgro1i+ONdiNZejripMNneUPS7Gj+MSfoGfWI="; +# }; +# +# buildInputs = [ ncurses debs ]; +# +# unpackPhase = '' +# sh $src -x +# #sourceRoot=l_HPCKit_p_${pkgVersion}_offline +# ''; +# +# # The gcc package is required for building other programs +# #propagatedBuildInputs = [ gcc ]; +# +# installPhase = '' +# mv l_HPCKit_p_${pkgVersion}_offline $out +# ''; +#} diff --git a/bsc/intel-oneapi/default.nix b/bsc/intel-oneapi/default.nix new file mode 100644 index 0000000..17296ad --- /dev/null +++ b/bsc/intel-oneapi/default.nix @@ -0,0 +1,33 @@ +{ + stdenv +, gcc +, nanos6 +, iccUnwrapped +, wrapCCWith +, intelLicense +}: + +let + targetConfig = stdenv.targetPlatform.config; + inherit gcc; +in wrapCCWith rec { + cc = iccUnwrapped; + extraBuildCommands = '' + echo "-B${gcc.cc}/lib/gcc/${targetConfig}/${gcc.version}" >> $out/nix-support/cc-cflags + echo "-isystem ${iccUnwrapped}/include" >> $out/nix-support/cc-cflags + echo "-isystem ${iccUnwrapped}/include/intel64" >> $out/nix-support/cc-cflags + echo "-L${gcc.cc}/lib/gcc/${targetConfig}/${gcc.version}" >> $out/nix-support/cc-ldflags + echo "-L${gcc.cc.lib}/lib" >> $out/nix-support/cc-ldflags + + cat "${iccUnwrapped}/nix-support/propagated-build-inputs" >> \ + $out/nix-support/propagated-build-inputs + + echo "export INTEL_LICENSE_FILE=${intelLicense}" \ + >> $out/nix-support/setup-hook + + # Create the wrappers for icc and icpc + wrap icc $wrapper $ccPath/icc + wrap icpc $wrapper $ccPath/icpc + wrap ifort $wrapper $ccPath/ifort + ''; +} diff --git a/bsc/intel-oneapi/ifort.nix b/bsc/intel-oneapi/ifort.nix new file mode 100644 index 0000000..d9879f1 --- /dev/null +++ b/bsc/intel-oneapi/ifort.nix @@ -0,0 +1,383 @@ +{ stdenv +, fetchurl +, ncurses +, lib +, dpkg +, rsync +, libffi +, libelf +, libxml2 +, hwloc +, zlib +, autoPatchelfHook +, symlinkJoin +, libfabric +, gcc +, wrapCCWith +}: + +# The distribution of intel packages is a mess. We are doing the installation +# based on the .deb metapackage "intel-hpckit", and follow de dependencies, +# which have mismatching versions. + +# Bruno Bzeznik (bzizou) went through the madness of using their .sh installer, +# pulling all the X dependencies here: +# https://github.com/Gricad/nur-packages/blob/4b67c8ad0ce1baa1d2f53ba41ae5bca8e00a9a63/pkgs/intel/oneapi.nix + +# But this is an attempt to install the packages from the APT repo + +let + + # As of 2022-11-10 this is the last release for hpckit and all other + # components + v = { + hpckit = "2022.3.0"; + compiler = "2022.2.0"; + tbb = "2021.7.1"; + mpi = "2021.7.0"; + }; + + aptPackageIndex = stdenv.mkDerivation { + name = "intel-oneapi-packages"; + srcs = [ + (fetchurl { + url = "https://apt.repos.intel.com/oneapi/dists/all/main/binary-amd64/Packages"; + sha256 = "sha256-swUGn097D5o1giK2l+3H4xFcUXSAUYtavQsPyiJlr2A="; + }) + (fetchurl { + url = "https://apt.repos.intel.com/oneapi/dists/all/main/binary-all/Packages"; + sha256 = "sha256-Ewpy0l0fXiJDG0FkAGykqizW1bm+/lcvI2OREyqzOLM="; + }) + ]; + phases = [ "installPhase" ]; + installPhase = '' + awk -F': ' '\ + BEGIN { print "[ {" } \ + NR>1 && /^Package: / { print "} {"; } \ + /: / { printf "%s = \"%s\";\n", $1, $2 } \ + END { print "} ]" }' $srcs > $out + ''; + }; + + aptPackages = import aptPackageIndex; + + apthost = "https://apt.repos.intel.com/oneapi/"; + + getSum = pkgList: name: + let + matches = lib.filter (x: name == x.Package) pkgList; + #n = lib.length matches; + #match = builtins.trace (name + " -- ${builtins.toString n}") (lib.elemAt matches 0); + match = lib.elemAt matches 0; + in + match.SHA256; + + getUrl = pkgList: name: + let + matches = lib.filter (x: name == x.Package) pkgList; + match = assert lib.length matches == 1; lib.elemAt matches 0; + #n = lib.length matches; + #match = builtins.trace (name + " -- ${builtins.toString n}") (lib.elemAt matches 0); + in + apthost + match.Filename; + + uncompressDebs = debs: name: stdenv.mkDerivation { + name = name; + srcs = debs; + buildInputs = [ dpkg ]; + phases = [ "installPhase" ]; + installPhase = '' + mkdir -p $out + for src in $srcs; do + echo "unpacking $src" + dpkg -x $src $out + done + ''; + }; + + joinDebs = name: names: + let + urls = builtins.map (x: getUrl aptPackages x) names; + sums = builtins.map (x: getSum aptPackages x) names; + getsrc = url: sha256: fetchurl { inherit url sha256; }; + debs = lib.zipListsWith getsrc urls sums; + in + uncompressDebs debs "${name}-source"; + + + intel-mpi = stdenv.mkDerivation rec { + version = v.mpi; + pname = "intel-mpi"; + + src = joinDebs pname [ + "intel-oneapi-mpi-devel-${version}" + "intel-oneapi-mpi-${version}" + ]; + + buildInputs = [ + rsync + libfabric + zlib + stdenv.cc.cc.lib + ]; + + nativeBuildInputs = [ autoPatchelfHook ]; + phases = [ "installPhase" "fixupPhase" ]; + dontStrip = true; + installPhase = '' + mkdir -p $out/{bin,etc,lib,include} + mkdir -p $out/share/man + + cd $src + + # MPI + pushd opt/intel/oneapi/mpi/${version} + rsync -a man/ $out/share/man/ + rsync -a etc/ $out/etc/ + rsync -a include/ $out/include/ + rsync -a lib/ $out/lib/ + # Broken due missing libze_loader.so.1 + rsync -a --exclude IMB-MPI1-GPU bin/ $out/bin/ + popd + ''; + }; + + intel-tbb = stdenv.mkDerivation rec { + version = v.tbb; + pname = "intel-tbb"; + src = joinDebs pname [ + "intel-oneapi-tbb-${version}" + "intel-oneapi-tbb-common-${version}" + ]; + + buildInputs = [ + intel-mpi + rsync + libffi + libelf + libxml2 + hwloc + stdenv.cc.cc.lib + ]; + + nativeBuildInputs = [ autoPatchelfHook ]; + phases = [ "installPhase" "fixupPhase" ]; + dontStrip = true; + + autoPatchelfIgnoreMissingDeps = [ "libhwloc.so.5" ]; + + installPhase = '' + mkdir -p $out/lib + + cd $src + + pushd opt/intel/oneapi/tbb/${version} + # Libraries + rsync -a lib/intel64/gcc4.8/ $out/lib/ + popd + ''; + }; + + intel-compiler-shared = stdenv.mkDerivation rec { + version = v.compiler; + pname = "intel-compiler-shared"; + src = joinDebs pname [ + "intel-oneapi-compiler-shared-${version}" + "intel-oneapi-compiler-shared-common-${version}" + "intel-oneapi-compiler-shared-runtime-${version}" + ]; + + buildInputs = [ + intel-mpi + intel-tbb + rsync + libffi + libelf + libxml2 + hwloc + stdenv.cc.cc.lib + ]; + + nativeBuildInputs = [ autoPatchelfHook ]; + phases = [ "installPhase" "fixupPhase" ]; + dontStrip = true; + + autoPatchelfIgnoreMissingDeps = [ "libsycl.so.5" ]; + + installPhase = '' + mkdir -p $out/{bin,lib,include} + mkdir -p $out/share/man + + cd $src + + # Compiler + pushd opt/intel/oneapi/compiler/${version} + pushd linux + # Binaries + rsync -a bin/ $out/bin/ + rsync -a --exclude libcilkrts.so.5 bin/intel64/ $out/bin/ + + # Libraries + rsync -a lib/ $out/lib/ + rsync -a compiler/lib/intel64_lin/ $out/lib/ + chmod +w $out/lib + cp bin/intel64/libcilkrts.so.5 $out/lib/ + ln -s $out/lib/libcilkrts.so.5 $out/lib/libcilkrts.so + + # Headers + rsync -a compiler/include/ $out/include/ + popd + popd + ''; + }; + + + intel-compiler-fortran = stdenv.mkDerivation rec { + version = v.compiler; + pname = "intel-fortran"; + src = joinDebs pname [ + "intel-oneapi-compiler-fortran-${version}" + "intel-oneapi-compiler-fortran-common-${version}" + "intel-oneapi-compiler-fortran-runtime-${version}" + + "intel-oneapi-compiler-dpcpp-cpp-classic-fortran-shared-runtime-${version}" + #"intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-${version}" + #"intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-runtime-${version}" + ]; + + buildInputs = [ + intel-mpi + intel-compiler-shared + rsync + libffi + libelf + libxml2 + hwloc + stdenv.cc.cc.lib + ]; + + nativeBuildInputs = [ autoPatchelfHook ]; + + # The gcc package is required for building other programs + propagatedBuildInputs = [ stdenv.cc intel-compiler-shared ]; + + phases = [ "installPhase" "fixupPhase" ]; + + dontStrip = true; + + installPhase = '' + mkdir -p $out/{bin,lib,include} + mkdir -p $out/share/man + + cd $src + + # Compiler + pushd opt/intel/oneapi/compiler/${version} + pushd linux + # Binaries + rsync -a bin/ $out/bin/ + rsync -a bin/intel64/ $out/bin/ + + # Libraries + rsync -a lib/ $out/lib/ + rsync -a compiler/lib/intel64_lin/ $out/lib/ + + # Headers + rsync -a compiler/include/ $out/include/ + popd + + # Manuals + rsync -a documentation/en/man/common/ $out/share/man/ + + # Fix lib_lin + ln -s $out/lib $out/lib_lin + popd + ''; + }; + + + intel-compiler-classic = stdenv.mkDerivation rec { + version = v.compiler; + pname = "intel-compiler-classic"; + src = joinDebs pname [ + "intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-${version}" + "intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-runtime-${version}" + "intel-oneapi-compiler-dpcpp-cpp-classic-fortran-shared-runtime-${version}" + "intel-oneapi-dpcpp-cpp-${version}" + "intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-common-${version}" + ]; + + buildInputs = [ + intel-compiler-shared + rsync + libffi + libelf + libxml2 + hwloc + stdenv.cc.cc.lib + ]; + + nativeBuildInputs = [ autoPatchelfHook ]; + + # The gcc package is required for building other programs + propagatedBuildInputs = [ stdenv.cc intel-compiler-shared ]; + + phases = [ "installPhase" "fixupPhase" ]; + + dontStrip = true; + + installPhase = '' + mkdir -p $out/{bin,lib} + mkdir -p $out/share/man + + cd $src + + # Compiler + pushd opt/intel/oneapi/compiler/${version} + pushd linux + # Binaries + rsync -a bin/ $out/bin/ + rsync -a bin/intel64/ $out/bin/ + + # Libraries + rsync -a --exclude oclfpga lib/ $out/lib/ + popd + + # Manuals + rsync -a documentation/en/man/common/ $out/share/man/ + popd + ''; + }; + + intel-compiler-classic-wrapper = + let + targetConfig = stdenv.targetPlatform.config; + inherit gcc; + in wrapCCWith rec { + cc = intel-compiler-classic; + extraBuildCommands = '' + echo "-B${gcc.cc}/lib/gcc/${targetConfig}/${gcc.version}" >> $out/nix-support/cc-cflags + echo "-isystem ${cc}/include" >> $out/nix-support/cc-cflags + echo "-isystem ${cc}/include/intel64" >> $out/nix-support/cc-cflags + echo "-L${gcc.cc}/lib/gcc/${targetConfig}/${gcc.version}" >> $out/nix-support/cc-ldflags + echo "-L${gcc.cc.lib}/lib" >> $out/nix-support/cc-ldflags + echo "-L${intel-compiler-shared}/lib" >> $out/nix-support/cc-ldflags + + cat "${cc}/nix-support/propagated-build-inputs" >> \ + $out/nix-support/propagated-build-inputs + + # Create the wrappers for icc and icpc + wrap icc $wrapper $ccPath/icc + wrap icpc $wrapper $ccPath/icpc + wrap mcpcom $wrapper $ccPath/mcpcom + ''; + }; + +in + { + inherit + intel-compiler-classic + intel-compiler-classic-wrapper + intel-compiler-fortran + intel-compiler-shared; + } diff --git a/bsc/intel-oneapi/license.nix b/bsc/intel-oneapi/license.nix new file mode 100644 index 0000000..710dab1 --- /dev/null +++ b/bsc/intel-oneapi/license.nix @@ -0,0 +1,39 @@ +{ stdenv +, requireFile +}: + +stdenv.mkDerivation rec { + name = "intel-compiler-license"; + version = "2019.7.217"; + + src = requireFile { + name = "license.lic"; + sha256 = "0rgmsqkhpqcfny8j7msa4sgz3prhh248ylh69gjh12dkra77prsj"; + message = '' + The Intel Compiler requires a license. You can get one (free of charge) if + you meet the requeriments at the website: + + https://software.intel.com/content/www/us/en/develop/articles/qualify-for-free-software.html#opensourcecontributor + + Or you can use your own license. Add it to the store with: + + $ nix-store --add-fixed sha256 license.lic + /nix/store/2p9v0nvsl3scshjx348z6j32rh7ac0db-license.lic + + Notice that the name must match exactly "license.lic". + + Then update the hash in the bsc/intel-compiler/license.nix file using the + nix-hash command with: + + $ nix-hash --type sha256 --base32 --flat /nix/store/2p9v0nvsl3scshjx348z6j32rh7ac0db-license.lic + 06g2xgm1lch6zqfkhb768wacdx46kf61mfvj5wfpyssw0anr0x9q + ''; + }; + + dontUnpack = true; + + installPhase = '' + mkdir -p $out + cp $src $out/ + ''; +} diff --git a/bsc/intel-oneapi/oneapi.nix b/bsc/intel-oneapi/oneapi.nix new file mode 100644 index 0000000..d447752 --- /dev/null +++ b/bsc/intel-oneapi/oneapi.nix @@ -0,0 +1,100 @@ +{ lib, stdenv, fetchurl, glibc, glib, libnotify, xdg-utils, ncurses, nss, + at-spi2-core, libdrm, gtk3, mesa, qt515, zlib, xorg, atk, nspr, dbus, + pango, cairo, gdk-pixbuf, xlibsWrapper, cups, expat, libxkbcommon, alsaLib, + file, at-spi2-atk, strace }: + +stdenv.mkDerivation rec { + version = "2022.2.0.262"; + hpc_version = "2022.2.0.191"; + name = "intel-oneapi-${version}"; + + # For localy downloaded offline installers + # sourceRoot = "/data/scratch/intel/oneapi_installer"; + + # For installer fetching (no warranty of the links) + sourceRoot = "."; + srcs = [ + (fetchurl { + url = "https://registrationcenter-download.intel.com/akdlm/irc_nas/18673/l_BaseKit_p_2022.2.0.262_offline.sh"; + sha256 = "03qx6sb58mkhc7iyc8va4y1ihj6l3155dxwmqj8dfw7j2ma7r5f6"; + }) + (fetchurl { + url = "https://registrationcenter-download.intel.com/akdlm/irc_nas/18679/l_HPCKit_p_2022.2.0.191_offline.sh"; + sha256 = "0swz4w9bn58wwqjkqhjqnkcs8k8ms9nn9s8k7j5w6rzvsa6817d2"; + }) + ]; + + nativeBuildInputs = [ file strace ]; + + propagatedBuildInputs = [ glibc glib libnotify xdg-utils ncurses nss + at-spi2-core xorg.libxcb libdrm gtk3 mesa qt515.full + zlib xorg.xlibsWrapper ]; + + libPath = lib.makeLibraryPath [ stdenv.cc.cc xorg.libX11 glib libnotify xdg-utils + ncurses nss at-spi2-core xorg.libxcb libdrm gtk3 + mesa qt515.full zlib atk nspr dbus pango cairo + gdk-pixbuf xlibsWrapper cups expat libxkbcommon alsaLib + at-spi2-atk xorg.libXcomposite xorg.libxshmfence + xorg.libXdamage xorg.libXext xorg.libXfixes + xorg.libXrandr ]; + + phases = [ "installPhase" "fixupPhase" "installCheckPhase" "distPhase" ]; + + installPhase = '' + cd $sourceRoot + mkdir -p $out/tmp + if [ "$srcs" = "" ] + then + base_kit="./l_BaseKit_p_${version}_offline.sh" + hpc_kit="./l_HPCKit_p_${hpc_version}_offline.sh" + else + base_kit=`echo $srcs|cut -d" " -f1` + hpc_kit=`echo $srcs|cut -d" " -f2` + fi + # Extract files + bash $base_kit --log $out/basekit_install_log --extract-only --extract-folder $out/tmp -a --install-dir $out --download-cache $out/tmp --download-dir $out/tmp --log-dir $out/tmp -s --eula accept + bash $hpc_kit --log $out/hpckit_install_log --extract-only --extract-folder $out/tmp -a --install-dir $out --download-cache $out/tmp --download-dir $out/tmp --log-dir $out/tmp -s --eula accept + for file in `grep -l -r "/bin/sh" $out/tmp` + do + sed -e "s,/bin/sh,${stdenv.shell},g" -i $file + done + export HOME=$out + # Patch the bootstraper binaries and libs + for files in `find $out/tmp/l_BaseKit_p_${version}_offline/lib` + do + patchelf --set-rpath "${glibc}/lib:$libPath:$out/tmp/l_BaseKit_p_${version}_offline/lib" $file 2>/dev/null || true + done + patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" --set-rpath "${glibc}/lib:$libPath:$out/tmp/l_BaseKit_p_${version}_offline/lib" $out/tmp/l_BaseKit_p_${version}_offline/bootstrapper + # launch install + export LD_LIBRARY_PATH=${zlib}/lib + #export LD_DEBUG=libs + ls -l $out + cd $out/tmp + strace -f -e trace=execve -s 9999 $out/tmp/l_BaseKit_p_${version}_offline/install.sh --install-dir $out --download-cache $out/tmp --download-dir $out/tmp --log-dir $out/tmp --eula accept -s --ignore-errors + $out/tmp/l_HPCKit_p_${hpc_version}_offline/install.sh --install-dir $out --download-cache $out/tmp --download-dir $out/tmp --log-dir $out/tmp --eula accept -s --ignore-errors + rm -rf $out/tmp + ''; + + postFixup = '' + echo "Fixing rights..." + chmod u+w -R $out + echo "Patching rpath and interpreter..." + for dir in `find $out -mindepth 1 -maxdepth 1 -type d` + do + echo " $dir" + for file in `find $dir -type f -exec file {} + | grep ELF| awk -F: '{print $1}'` + do + echo " $file" + patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" --set-rpath '$ORIGIN'":${glibc}/lib:$libPath:$dir/latest/lib64" $file 2>/dev/null || true + done + done + ''; + + meta = { + description = "Intel OneAPI Basekit + HPCKit"; + maintainers = [ lib.maintainers.bzizou ]; + platforms = lib.platforms.linux; + license = lib.licenses.unfree; + }; +} + diff --git a/bsc/llvm-ompss2/clang.nix b/bsc/llvm-ompss2/clang.nix index a774771..a552712 100644 --- a/bsc/llvm-ompss2/clang.nix +++ b/bsc/llvm-ompss2/clang.nix @@ -67,7 +67,7 @@ stdenv.mkDerivation rec { "-DCMAKE_CXX_FLAGS_DEBUG=-g -ggnu-pubnames" "-DCMAKE_EXE_LINKER_FLAGS_DEBUG=-Wl,-gdb-index" "-DLLVM_LIT_ARGS=-sv --xunit-xml-output=xunit.xml" - "-DLLVM_ENABLE_PROJECTS=clang;openmp;compiler-rt" + "-DLLVM_ENABLE_PROJECTS=clang;openmp;compiler-rt;flang" "-DLLVM_ENABLE_ASSERTIONS=${enableAssertions}" "-DLLVM_INSTALL_TOOLCHAIN_ONLY=ON" "-DCMAKE_INSTALL_BINDIR=bin" diff --git a/overlay.nix b/overlay.nix index e12cbff..f2065e3 100644 --- a/overlay.nix +++ b/overlay.nix @@ -39,6 +39,14 @@ let icc2021Unwrapped = callPackage ./bsc/intel-compiler/icc2021.nix { }; + #icc2022Unwrapped = callPackage ./bsc/intel-oneapi/2022.3.1.nix { }; + + intel-oneapi = callPackage ./bsc/intel-oneapi/ifort.nix { }; + ifort2022Unwrapped = bsc.intel-oneapi.intel-compiler-fortran; + icc2022Unwrapped = bsc.intel-oneapi.intel-compiler-classic; + + #oneapi2022 = callPackage ./bsc/intel-oneapi/oneapi.nix { }; + # A wrapper script that puts all the flags and environment vars # properly and calls the intel compiler binary icc2020 = appendPasstru (callPackage ./bsc/intel-compiler/default.nix { @@ -50,7 +58,17 @@ let iccUnwrapped = bsc.icc2021Unwrapped; }) { CC = "icx"; CXX = "icpx"; }; - icc = bsc.icc2020; + ifort2022 = callPackage ./bsc/intel-compiler/default.nix { + iccUnwrapped = bsc.ifort2022Unwrapped; + intelLicense = bsc.intelLicense; + }; + + ifort = bsc.ifort2022; + + icc2022 = bsc.intel-oneapi.intel-compiler-classic-wrapper; + + + icc = bsc.icc2022; # We need to set the cc.CC and cc.CXX attributes, in order to # determine the name of the compiler @@ -248,6 +266,7 @@ let dummy = callPackage ./bsc/dummy/default.nix { }; mpptest = callPackage ./bsc/mpptest/default.nix { }; cpuid = callPackage ./bsc/cpuid/default.nix { }; + alya = callPackage ./bsc/alya/default.nix { }; # ================================================================= # Garlic benchmark From 115e9beb59c81d1b2f4f9be1fc3b38fe1b536c0a Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 3 Mar 2023 18:18:51 +0100 Subject: [PATCH 774/987] Add Intel oneAPI 2023 with compilation tests --- bsc/intel-oneapi/{ifort.nix => 2023.nix} | 179 +++++++++++++----- bsc/intel-oneapi/{default.nix => wrapper.nix} | 0 overlay.nix | 64 +++++-- test/ci.nix | 2 +- test/compilers/hello-c.nix | 68 +++++++ test/compilers/hello-cpp.nix | 36 ++++ test/compilers/hello-f.nix | 35 ++++ test/compilers/suffle-c.nix | 50 +++++ 8 files changed, 378 insertions(+), 56 deletions(-) rename bsc/intel-oneapi/{ifort.nix => 2023.nix} (60%) rename bsc/intel-oneapi/{default.nix => wrapper.nix} (100%) create mode 100644 test/compilers/hello-c.nix create mode 100644 test/compilers/hello-cpp.nix create mode 100644 test/compilers/hello-f.nix create mode 100644 test/compilers/suffle-c.nix diff --git a/bsc/intel-oneapi/ifort.nix b/bsc/intel-oneapi/2023.nix similarity index 60% rename from bsc/intel-oneapi/ifort.nix rename to bsc/intel-oneapi/2023.nix index d9879f1..f537ca1 100644 --- a/bsc/intel-oneapi/ifort.nix +++ b/bsc/intel-oneapi/2023.nix @@ -13,7 +13,9 @@ , symlinkJoin , libfabric , gcc +, gcc7 , wrapCCWith +, linuxHeaders }: # The distribution of intel packages is a mess. We are doing the installation @@ -28,25 +30,24 @@ let - # As of 2022-11-10 this is the last release for hpckit and all other - # components v = { - hpckit = "2022.3.0"; - compiler = "2022.2.0"; - tbb = "2021.7.1"; - mpi = "2021.7.0"; + hpckit = "2023.0.0"; + compiler = "2023.0.0"; + tbb = "2021.8.0"; + mpi = "2021.8.0"; }; aptPackageIndex = stdenv.mkDerivation { name = "intel-oneapi-packages"; srcs = [ + # Set the hashes to "" to fetch them (fetchurl { url = "https://apt.repos.intel.com/oneapi/dists/all/main/binary-amd64/Packages"; - sha256 = "sha256-swUGn097D5o1giK2l+3H4xFcUXSAUYtavQsPyiJlr2A="; + sha256 = "sha256-u0fKJRNkG19xlO3h5+uJgfeAArk+gMATOQQST2RM5pg="; }) (fetchurl { url = "https://apt.repos.intel.com/oneapi/dists/all/main/binary-all/Packages"; - sha256 = "sha256-Ewpy0l0fXiJDG0FkAGykqizW1bm+/lcvI2OREyqzOLM="; + sha256 = "sha256-m3UCjGzq1piHc2Qh/ejM4qBsqDQOVjm3U8E4USi5MwY="; }) ]; phases = [ "installPhase" ]; @@ -75,9 +76,9 @@ let getUrl = pkgList: name: let matches = lib.filter (x: name == x.Package) pkgList; - match = assert lib.length matches == 1; lib.elemAt matches 0; - #n = lib.length matches; - #match = builtins.trace (name + " -- ${builtins.toString n}") (lib.elemAt matches 0); + #match = assert lib.length matches == 1; lib.elemAt matches 0; + n = lib.length matches; + match = builtins.trace (name + " -- n=${builtins.toString n}") (lib.elemAt matches 0); in apthost + match.Filename; @@ -202,7 +203,7 @@ let phases = [ "installPhase" "fixupPhase" ]; dontStrip = true; - autoPatchelfIgnoreMissingDeps = [ "libsycl.so.5" ]; + autoPatchelfIgnoreMissingDeps = [ "libsycl.so.6" ]; installPhase = '' mkdir -p $out/{bin,lib,include} @@ -219,6 +220,7 @@ let # Libraries rsync -a lib/ $out/lib/ + rsync -a lib/x64/ $out/lib/ rsync -a compiler/lib/intel64_lin/ $out/lib/ chmod +w $out/lib cp bin/intel64/libcilkrts.so.5 $out/lib/ @@ -245,6 +247,8 @@ let #"intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-runtime-${version}" ]; + langFortran = true; + buildInputs = [ intel-mpi intel-compiler-shared @@ -258,9 +262,6 @@ let nativeBuildInputs = [ autoPatchelfHook ]; - # The gcc package is required for building other programs - propagatedBuildInputs = [ stdenv.cc intel-compiler-shared ]; - phases = [ "installPhase" "fixupPhase" ]; dontStrip = true; @@ -295,17 +296,41 @@ let ''; }; - - intel-compiler-classic = stdenv.mkDerivation rec { + intel-compiler = stdenv.mkDerivation rec { version = v.compiler; - pname = "intel-compiler-classic"; + pname = "intel-compiler"; src = joinDebs pname [ + # C/C++ + "intel-oneapi-dpcpp-cpp-${version}" + "intel-oneapi-compiler-dpcpp-cpp-${version}" + "intel-oneapi-compiler-dpcpp-cpp-common-${version}" + "intel-oneapi-compiler-dpcpp-cpp-runtime-${version}" "intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-${version}" + "intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-common-${version}" "intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-runtime-${version}" "intel-oneapi-compiler-dpcpp-cpp-classic-fortran-shared-runtime-${version}" - "intel-oneapi-dpcpp-cpp-${version}" - "intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-common-${version}" ]; + # From https://aur.archlinux.org/packages/intel-oneapi-compiler: + # - intel-oneapi-compiler-cpp-eclipse-cfg-2023.0.0-25370_all.deb + # + intel-oneapi-compiler-dpcpp-cpp-2023.0.0-2023.0.0-25370_amd64.deb + # x intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-2023.0.0-2023.0.0-25370_amd64.deb (empty) + # + intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-2023.0.0-25370_amd64.deb + # + intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-common-2023.0.0-2023.0.0-25370_all.deb + # + intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-runtime-2023.0.0-2023.0.0-25370_amd64.deb + # + intel-oneapi-compiler-dpcpp-cpp-classic-fortran-shared-runtime-2023.0.0-2023.0.0-25370_amd64.deb + # + intel-oneapi-compiler-dpcpp-cpp-common-2023.0.0-2023.0.0-25370_all.deb + # + intel-oneapi-compiler-dpcpp-cpp-runtime-2023.0.0-2023.0.0-25370_amd64.deb + # - intel-oneapi-compiler-dpcpp-eclipse-cfg-2023.0.0-25370_all.deb + # - intel-oneapi-compiler-fortran-2023.0.0-2023.0.0-25370_amd64.deb + # - intel-oneapi-compiler-fortran-common-2023.0.0-2023.0.0-25370_all.deb + # - intel-oneapi-compiler-fortran-runtime-2023.0.0-2023.0.0-25370_amd64.deb + # - intel-oneapi-compiler-fortran-runtime-2023.0.0-25370_amd64.deb + # - intel-oneapi-compiler-shared-2023.0.0-2023.0.0-25370_amd64.deb + # - intel-oneapi-compiler-shared-common-2023.0.0-2023.0.0-25370_all.deb + # - intel-oneapi-compiler-shared-runtime-2023.0.0-2023.0.0-25370_amd64.deb + # - intel-oneapi-dpcpp-cpp-2023.0.0-2023.0.0-25370_amd64.deb + # - intel-oneapi-openmp-2023.0.0-2023.0.0-25370_amd64.deb + # - intel-oneapi-openmp-common-2023.0.0-2023.0.0-25370_all.deb buildInputs = [ intel-compiler-shared @@ -318,9 +343,7 @@ let ]; nativeBuildInputs = [ autoPatchelfHook ]; - - # The gcc package is required for building other programs - propagatedBuildInputs = [ stdenv.cc intel-compiler-shared ]; + autoPatchelfIgnoreMissingDeps = [ "libtbb.so.12" "libtbbmalloc.so.2" "libze_loader.so.1" ]; phases = [ "installPhase" "fixupPhase" ]; @@ -337,10 +360,18 @@ let pushd linux # Binaries rsync -a bin/ $out/bin/ + rsync -a bin-llvm/ $out/bin/ rsync -a bin/intel64/ $out/bin/ # Libraries rsync -a --exclude oclfpga lib/ $out/lib/ + rsync -a compiler/lib/intel64_lin/ $out/lib/ + + # Headers + rsync -a compiler/include/ $out/include/ # Intrinsics for icc + rsync -a include/ $out/include/ + chmod +w $out/include + ln -s $out/lib/clang/16.0.0/include/ $out/include/icx # For icx popd # Manuals @@ -349,35 +380,97 @@ let ''; }; - intel-compiler-classic-wrapper = + wrapIntel = { cc, mygcc, extraBuild ? "", extraInstall ? "" }: let targetConfig = stdenv.targetPlatform.config; - inherit gcc; - in wrapCCWith rec { - cc = intel-compiler-classic; + in (wrapCCWith { + cc = cc; extraBuildCommands = '' - echo "-B${gcc.cc}/lib/gcc/${targetConfig}/${gcc.version}" >> $out/nix-support/cc-cflags echo "-isystem ${cc}/include" >> $out/nix-support/cc-cflags echo "-isystem ${cc}/include/intel64" >> $out/nix-support/cc-cflags - echo "-L${gcc.cc}/lib/gcc/${targetConfig}/${gcc.version}" >> $out/nix-support/cc-ldflags - echo "-L${gcc.cc.lib}/lib" >> $out/nix-support/cc-ldflags + + echo "-L${mygcc.cc}/lib/gcc/${targetConfig}/${mygcc.version}" >> $out/nix-support/cc-ldflags + echo "-L${mygcc.cc.lib}/lib" >> $out/nix-support/cc-ldflags echo "-L${intel-compiler-shared}/lib" >> $out/nix-support/cc-ldflags + echo "-L${cc}/lib" >> $out/nix-support/cc-ldflags - cat "${cc}/nix-support/propagated-build-inputs" >> \ - $out/nix-support/propagated-build-inputs + # Need the gcc in the path + echo 'export "PATH=${mygcc}/bin:$PATH"' >> $out/nix-support/cc-wrapper-hook - # Create the wrappers for icc and icpc - wrap icc $wrapper $ccPath/icc - wrap icpc $wrapper $ccPath/icpc - wrap mcpcom $wrapper $ccPath/mcpcom - ''; - }; + # Disable hardening by default + echo "" > $out/nix-support/add-hardening.sh + '' + extraBuild; + }).overrideAttrs (old: { + installPhase = old.installPhase + extraInstall; + }); + + icx-wrapper = wrapIntel rec { + cc = intel-compiler; + mygcc = gcc; + extraBuild = '' + wrap icx $wrapper $ccPath/icx + wrap icpx $wrapper $ccPath/icpx + echo "-isystem ${cc}/include/icx" >> $out/nix-support/cc-cflags + echo "--gcc-toolchain=${mygcc.cc}" >> $out/nix-support/cc-cflags + ''; + extraInstall = '' + export named_cc="icx" + export named_cxx="icpx" + ''; + }; + + # Legacy + icc-wrapper = wrapIntel rec { + cc = intel-compiler; + # Intel icc classic compiler tries to behave like the gcc found in $PATH. + # EVEN if it doesn't support some of the features. See: + # https://community.intel.com/t5/Intel-C-Compiler/builtin-shuffle-GCC-compatibility-and-has-builtin/td-p/1143619 + mygcc = gcc; + extraBuild = '' + wrap icc $wrapper $ccPath/icc + wrap icpc $wrapper $ccPath/icpc + echo "-isystem ${cc}/include/icc" >> $out/nix-support/cc-cflags + ''; + extraInstall = '' + export named_cc="icc" + export named_cxx="icpc" + ''; + }; + + ifort-wrapper = wrapIntel rec { + cc = intel-compiler-fortran; + mygcc = gcc; + extraBuild = '' + wrap ifort $wrapper $ccPath/ifort + ''; + extraInstall = '' + export named_fc="ifort" + ''; + }; + + stdenv-icc = stdenv.override { + cc = icc-wrapper; + allowedRequisites = null; + }; + + stdenv-icx = stdenv.override { + cc = icx-wrapper; + allowedRequisites = null; + }; + + stdenv-ifort = stdenv.override { + cc = ifort-wrapper; + allowedRequisites = null; + }; in { - inherit - intel-compiler-classic - intel-compiler-classic-wrapper - intel-compiler-fortran - intel-compiler-shared; + inherit aptPackages; + icx = icx-wrapper; + icc = icc-wrapper; + ifort = ifort-wrapper; + + stdenv = stdenv-icx; + stdenv-icc = stdenv-icc; + stdenv-ifort = stdenv-ifort; } diff --git a/bsc/intel-oneapi/default.nix b/bsc/intel-oneapi/wrapper.nix similarity index 100% rename from bsc/intel-oneapi/default.nix rename to bsc/intel-oneapi/wrapper.nix diff --git a/overlay.nix b/overlay.nix index f2065e3..de80618 100644 --- a/overlay.nix +++ b/overlay.nix @@ -39,13 +39,24 @@ let icc2021Unwrapped = callPackage ./bsc/intel-compiler/icc2021.nix { }; - #icc2022Unwrapped = callPackage ./bsc/intel-oneapi/2022.3.1.nix { }; + intel-oneapi-2023 = callPackage ./bsc/intel-oneapi/2023.nix { + libffi = self.libffi_3_3; + }; - intel-oneapi = callPackage ./bsc/intel-oneapi/ifort.nix { }; - ifort2022Unwrapped = bsc.intel-oneapi.intel-compiler-fortran; - icc2022Unwrapped = bsc.intel-oneapi.intel-compiler-classic; + intel2023 = { + inherit (bsc.intel-oneapi-2023) + stdenv icx stdenv-ifort ifort + # Deprecated in mid 2023 + stdenv-icc icc; + }; - #oneapi2022 = callPackage ./bsc/intel-oneapi/oneapi.nix { }; + intel2022 = { + icc = bsc.icc2021; + }; + + intel2021 = { + icc = bsc.icc2021; + }; # A wrapper script that puts all the flags and environment vars # properly and calls the intel compiler binary @@ -63,12 +74,9 @@ let intelLicense = bsc.intelLicense; }; - ifort = bsc.ifort2022; - - icc2022 = bsc.intel-oneapi.intel-compiler-classic-wrapper; - - - icc = bsc.icc2022; + icx = bsc.intel2023.icx; + icc = bsc.intel2023.icc; + ifort = bsc.intel2023.ifort; # We need to set the cc.CC and cc.CXX attributes, in order to # determine the name of the compiler @@ -118,6 +126,12 @@ let nanos6 = bsc.nanos6Release; nanos6Release = callPackage ./bsc/nanos6/default.nix { }; nanos6Git = callPackage ./bsc/nanos6/git.nix { }; + nanos6-icx = bsc.nanos6.override { + stdenv = bsc.intel2023.stdenv; + }; + nanos6-icc = bsc.nanos6.override { + stdenv = bsc.intel2023.stdenv-icc; + }; nanos6Debug = bsc.nanos6.overrideAttrs (old: { dontStrip = true; @@ -283,11 +297,37 @@ let inherit self super bsc callPackage; }; - test = { + test = rec { # hwloc = callPackage ./test/bugs/hwloc.nix { }; sigsegv = callPackage ./test/reproducers/sigsegv.nix { }; + compilers.hello-c = callPackage ./test/compilers/hello-c.nix { }; + compilers.hello-cpp = callPackage ./test/compilers/hello-cpp.nix { }; + compilers.hello-f = callPackage ./test/compilers/hello-f.nix { }; + compilers.intel2023.icx.c = compilers.hello-c.override { + stdenv = bsc.intel2023.stdenv; + }; + compilers.intel2023.icc.c = compilers.hello-c.override { + stdenv = bsc.intel2023.stdenv-icc; + }; + compilers.intel2023.icx.cpp = compilers.hello-cpp.override { + stdenv = bsc.intel2023.stdenv; + }; + compilers.intel2023.icc.cpp = compilers.hello-cpp.override { + stdenv = bsc.intel2023.stdenv-icc; + }; + compilers.intel2023.ifort = compilers.hello-f.override { + stdenv = bsc.intel2023.stdenv-ifort; + }; }; + testAll = with bsc.test; [ + compilers.intel2023.icx.c + compilers.intel2023.icc.c + compilers.intel2023.icx.cpp + compilers.intel2023.icc.cpp + compilers.intel2023.ifort + ]; + ci = import ./test/ci.nix { inherit self super bsc callPackage; }; diff --git a/test/ci.nix b/test/ci.nix index 67349d1..a409aa4 100644 --- a/test/ci.nix +++ b/test/ci.nix @@ -26,7 +26,7 @@ stdenv.mkDerivation rec { wxparaver # Runtimes nanos6 - ]; + ] ++ bsc.testAll; buildPhase = '' if [ -e /boot ]; then diff --git a/test/compilers/hello-c.nix b/test/compilers/hello-c.nix new file mode 100644 index 0000000..f1febd0 --- /dev/null +++ b/test/compilers/hello-c.nix @@ -0,0 +1,68 @@ +{ stdenv, writeText, which, strace }: + +let + hello_c = writeText "hello.c" '' + #include + #include + #include + + int main() + { + printf("Hello world!\n"); + return 0; + } + ''; + shuffle_c = writeText "shuffle.c" '' + #include + + typedef int v4si __attribute__ ((vector_size (16))); + + int main(void) { + v4si a = {1,2,3,4}; + v4si b = {5,6,7,8}; + v4si mask1 = {0,1,1,3}; + v4si mask2 = {0,4,2,5}; + v4si res; + + #if defined(__GNUC__) && (__GNUC__ >= 7) + res = __builtin_shuffle (a, mask1); /* res is {1,2,2,4} */ + res = __builtin_shuffle (a, b, mask2); /* res is {1,5,3,6} */ + + printf("%d %d %d %d\n", res[0], res[1], res[2], res[3]); + #endif + + return 0; + } + ''; +in + +stdenv.mkDerivation rec { + version = "0.0.1"; + name = "hello-c"; + buildInputs = [ stdenv which strace ]; + src = hello_c; + dontUnpack = true; + dontConfigure = true; + NIX_DEBUG = 0; + buildPhase = '' + set -x + echo CC=$CC + which $CC + $CC -v + + cp ${hello_c} hello.c + $CC -v hello.c -o hello + ./hello + + # Only gcc + #cp ${shuffle_c} shuffle.c + #$CC shuffle.c -o shuffle + #./shuffle + + set +x + ''; + + installPhase = '' + touch $out + ''; +} diff --git a/test/compilers/hello-cpp.nix b/test/compilers/hello-cpp.nix new file mode 100644 index 0000000..bd08e50 --- /dev/null +++ b/test/compilers/hello-cpp.nix @@ -0,0 +1,36 @@ +{ stdenv, writeText, which, strace }: + +let + hello_cpp = writeText "hello.cpp" '' + #include + + int main() + { + printf("Hello world!\n"); + return 0; + } + ''; +in + +stdenv.mkDerivation rec { + version = "0.0.1"; + name = "hello-cpp"; + buildInputs = [ stdenv which strace ]; + src = hello_cpp; + dontUnpack = true; + dontConfigure = true; + NIX_DEBUG = 0; + buildPhase = '' + cp $src hello.cpp + set -x + echo CXX=$CXX + which $CXX + $CXX hello.cpp -o hello + ./hello + set +x + ''; + + installPhase = '' + touch $out + ''; +} diff --git a/test/compilers/hello-f.nix b/test/compilers/hello-f.nix new file mode 100644 index 0000000..eeef62a --- /dev/null +++ b/test/compilers/hello-f.nix @@ -0,0 +1,35 @@ +{ stdenv, writeText, which, strace }: + +let + hello_f90 = writeText "hello.f90" '' + program hello + print *, 'Hello, World!' + end program hello + ''; +in + +stdenv.mkDerivation rec { + version = "0.0.1"; + name = "hello-f90"; + buildInputs = [ stdenv which strace ]; + src = hello_f90; + dontUnpack = true; + dontConfigure = true; + NIX_DEBUG = 0; + buildPhase = '' + set -x + echo FC=$FC + which $FC + $FC -v + + cp ${hello_f90} hello.f90 + $FC hello.f90 -o hello + ./hello + + set +x + ''; + + installPhase = '' + touch $out + ''; +} diff --git a/test/compilers/suffle-c.nix b/test/compilers/suffle-c.nix new file mode 100644 index 0000000..fdbb629 --- /dev/null +++ b/test/compilers/suffle-c.nix @@ -0,0 +1,50 @@ +{ stdenv, writeText, which, strace }: + +let + shuffle_c = writeText "shuffle.c" '' + #include + + typedef int v4si __attribute__ ((vector_size (16))); + + int main(void) { + v4si a = {1,2,3,4}; + v4si b = {5,6,7,8}; + v4si mask1 = {0,1,1,3}; + v4si mask2 = {0,4,2,5}; + v4si res; + + #if defined(__GNUC__) && (__GNUC__ >= 7) + res = __builtin_shuffle (a, mask1); /* res is {1,2,2,4} */ + res = __builtin_shuffle (a, b, mask2); /* res is {1,5,3,6} */ + + printf("%d %d %d %d\n", res[0], res[1], res[2], res[3]); + #endif + + return 0; + } + ''; +in + +stdenv.mkDerivation rec { + version = "0.0.1"; + name = "hello-c"; + buildInputs = [ stdenv which strace ]; + src = hello_c; + dontUnpack = true; + dontConfigure = true; + NIX_DEBUG = 0; + buildPhase = '' + cp $src hello.c + set -x + echo CC=$CC + which $CC + #strace -ff -e trace=execve -s99999999 $CC hello.c -o hello + $CC hello.c -o hello + ./hello + set +x + ''; + + installPhase = '' + touch $out + ''; +} From b57a17dd52dcd0390052f4252898c8a81d1e808e Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 3 Mar 2023 18:25:06 +0100 Subject: [PATCH 775/987] Remove alya --- bsc/alya/default.nix | 40 ---------------------------------------- overlay.nix | 1 - 2 files changed, 41 deletions(-) delete mode 100644 bsc/alya/default.nix diff --git a/bsc/alya/default.nix b/bsc/alya/default.nix deleted file mode 100644 index 8781068..0000000 --- a/bsc/alya/default.nix +++ /dev/null @@ -1,40 +0,0 @@ -{ - stdenv -, cmake -, ifort -, impi -, pkgconfig -, icc -}: - -stdenv.mkDerivation rec { - pname = "alya"; - version = "${src.shortRev}"; - src = builtins.fetchGit { - url = "ssh://git@alya.gitlab.bsc.es/alya/alya.git"; - ref = "master"; - rev = "d7bd220b4ecf70f745c9c3667b4e830a6b3e76dc"; - }; - buildInputs = [ cmake ifort impi pkgconfig icc ]; - cmakeFlags = [ - #"--debug-trycompile" - #"--debug-find" - "-DUSEMPIF08=ON" - "-DCMAKE_C_COMPILER=icc" - "-DCMAKE_CXX_COMPILER=icpc" - "-DCMAKE_Fortran_COMPILER=ifort" - "-DMPI_HOME=${impi}" - #"-DMPI_C_COMPILER=mpicc" - #"-DMPI_CXX_COMPILER=mpicxx" - #"-DWITH_ALL_MODULES=OFF" "-DWITH_MODULE_NASTIN=ON" - "-DWITH_NDIMEPAR=ON" - #"-DWITH_CTEST=OFF" - "-DINTEGER_SIZE=8" - ]; - #I_MPI_ROOT = impi; - #VERBOSE = 1; - #NIX_DEBUG = 5; - enableParallelBuilding = true; - dontStrip = true; - hardeningDisable = [ "all" ]; -} diff --git a/overlay.nix b/overlay.nix index de80618..8f701a4 100644 --- a/overlay.nix +++ b/overlay.nix @@ -280,7 +280,6 @@ let dummy = callPackage ./bsc/dummy/default.nix { }; mpptest = callPackage ./bsc/mpptest/default.nix { }; cpuid = callPackage ./bsc/cpuid/default.nix { }; - alya = callPackage ./bsc/alya/default.nix { }; # ================================================================= # Garlic benchmark From 5753f0c3121461fad242fbeb7e5e85a6e49e62a1 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 3 Mar 2023 18:28:44 +0100 Subject: [PATCH 776/987] Remove old files --- bsc/intel-compiler/wrapper-fortran.nix | 29 ---- bsc/intel-oneapi/2022.3.1.nix | 219 ------------------------- bsc/intel-oneapi/license.nix | 39 ----- bsc/intel-oneapi/oneapi.nix | 100 ----------- bsc/intel-oneapi/wrapper.nix | 33 ---- 5 files changed, 420 deletions(-) delete mode 100644 bsc/intel-compiler/wrapper-fortran.nix delete mode 100644 bsc/intel-oneapi/2022.3.1.nix delete mode 100644 bsc/intel-oneapi/license.nix delete mode 100644 bsc/intel-oneapi/oneapi.nix delete mode 100644 bsc/intel-oneapi/wrapper.nix diff --git a/bsc/intel-compiler/wrapper-fortran.nix b/bsc/intel-compiler/wrapper-fortran.nix deleted file mode 100644 index 17ccdf8..0000000 --- a/bsc/intel-compiler/wrapper-fortran.nix +++ /dev/null @@ -1,29 +0,0 @@ -{ - stdenv -, gcc -, iccUnwrapped -, wrapCCWith -}: - -let - targetConfig = stdenv.targetPlatform.config; - inherit gcc; -in wrapCCWith rec { - cc = iccUnwrapped; - extraBuildCommands = '' - echo "-B${gcc.cc}/lib/gcc/${targetConfig}/${gcc.version}" >> $out/nix-support/cc-cflags - echo "-isystem ${iccUnwrapped}/include" >> $out/nix-support/cc-cflags - echo "-isystem ${iccUnwrapped}/include/icc" >> $out/nix-support/cc-cflags - echo "-isystem ${gcc.cc}/include/c++/${gcc.version}" >> $out/nix-support/cc-cflags - echo "-isystem ${gcc.cc}/include/c++/${gcc.version}/${targetConfig}" >> $out/nix-support/cc-cflags - - echo "-L${iccUnwrapped}/lib" >> $out/nix-support/cc-ldflags - echo "-L${gcc.cc}/lib/gcc/${targetConfig}/${gcc.version}" >> $out/nix-support/cc-ldflags - echo "-L${gcc.cc.lib}/lib" >> $out/nix-support/cc-ldflags - - # Create the wrappers for icx* - wrap lld $wrapper $ccPath/lld - wrap icx $wrapper $ccPath/icx - wrap icpx $wrapper $ccPath/icpx - ''; -} diff --git a/bsc/intel-oneapi/2022.3.1.nix b/bsc/intel-oneapi/2022.3.1.nix deleted file mode 100644 index 76ea008..0000000 --- a/bsc/intel-oneapi/2022.3.1.nix +++ /dev/null @@ -1,219 +0,0 @@ -{ stdenv -, fetchurl -, ncurses -, lib -, dpkg -, rsync -, libffi -, libelf -, libxml2 -, hwloc -, autoPatchelfHook -}: - -# The distribution of intel packages is a mess. We are doing the installation -# based on the .deb metapackage "intel-hpckit", and follow de dependencies, -# which have mismatching versions. - -# Bruno Bzeznik (bzizou) went through the madness of using their .sh installer, -# pulling all the X dependencies here: -# https://github.com/Gricad/nur-packages/blob/4b67c8ad0ce1baa1d2f53ba41ae5bca8e00a9a63/pkgs/intel/oneapi.nix - -# But this is an attempt to install the packages from the APT repo - -let - - # Composite based on hpckit - hpckit = { ver = "2022.2.0"; rev = "191"; }; - #basekit = { ver = "2022.2.0"; rev = "262"; }; - comp = { ver = "2022.0.2"; rev = "3658"; }; - mpi = { ver = "2021.6.0"; rev = "602"; }; - - compilerRev = "3768"; - mpiRev = "76"; - debList = [ - "intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-${v}-${v}-${compilerRev}_amd64.deb" - "intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-runtime-${v}-${v}-${compilerRev}_amd64.deb" - "intel-oneapi-compiler-fortran-common-${v}-${v}-${compilerRev}_all.deb" - "intel-oneapi-compiler-shared-${v}-${v}-${compilerRev}_amd64.deb" - "intel-oneapi-compiler-cpp-eclipse-cfg-${v}-${compilerRev}_all.deb" - "intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-common-${v}-${v}-${compilerRev}_all.deb" - "intel-oneapi-compiler-dpcpp-cpp-classic-fortran-shared-runtime-${v}-${v}-${compilerRev}_amd64.deb" - "intel-oneapi-compiler-dpcpp-cpp-common-${v}-${v}-${compilerRev}_all.deb" - "intel-oneapi-compiler-fortran-runtime-${v}-${v}-${compilerRev}_amd64.deb" - "intel-oneapi-compiler-shared-common-${v}-${v}-${compilerRev}_all.deb" - "intel-oneapi-compiler-shared-runtime-${v}-${v}-${compilerRev}_amd64.deb" - - "intel-oneapi-dpcpp-cpp-${v}-${v}-${compilerRev}_amd64.deb" - "intel-oneapi-openmp-${v}-${v}-${compilerRev}_amd64.deb" - "intel-oneapi-openmp-common-${v}-${v}-${compilerRev}_all.deb" - - "intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-${v}-${compilerRev}_amd64.deb" - "intel-oneapi-compiler-dpcpp-cpp-runtime-${v}-${v}-${compilerRev}_amd64.deb" - "intel-oneapi-compiler-dpcpp-eclipse-cfg-${v}-${compilerRev}_all.deb" - "intel-oneapi-compiler-dpcpp-cpp-${v}-${v}-${compilerRev}_amd64.deb" - "intel-oneapi-compiler-fortran-${v}-${v}-${compilerRev}_amd64.deb" - "intel-oneapi-compiler-fortran-runtime-${v}-${compilerRev}_amd64.deb" - - "intel-oneapi-mpi-devel-${mpi.ver}-${mpi.ver}-${mpi.rev}_amd64.deb" - "intel-oneapi-mpi-${mpi.ver}-${mpi.ver}-${mpi.rev}_amd64.deb" - - #"intel-oneapi-tbb-${v}-${v}-${tbbVer}_amd64.deb" - #"intel-oneapi-tbb-devel-${v}-${v}-${tbbVer}_amd64.deb" - #"intel-oneapi-tbb-common-${v}-${v}-${tbbVer}_all.deb" - #"intel-oneapi-tbb-common-devel-${v}-${v}-${tbbVer}_all.deb" - - #intel-basekit-2021.1.0 - #intel-hpckit-getting-started (>= 2021.1.0-2684) - #intel-oneapi-common-vars (>= 2021.1.1-60) - #intel-oneapi-common-licensing-2021.1.1 - #intel-oneapi-dev-utilities-2021.1.1 - #intel-oneapi-inspector (>= 2021.1.1-42) - #intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-2021.1.1 - #intel-oneapi-compiler-fortran-2021.1.1 - #intel-oneapi-clck-2021.1.1 - #intel-oneapi-itac-2021.1.1 - ]; - - pkgsDesc = stdenv.mkDerivation { - name = "intel-oneapi-packages"; - srcs = [ - (fetchurl { - url = "https://apt.repos.intel.com/oneapi/dists/all/main/binary-amd64/Packages"; - sha256 = "sha256-swUGn097D5o1giK2l+3H4xFcUXSAUYtavQsPyiJlr2A="; - }) - (fetchurl { - url = "https://apt.repos.intel.com/oneapi/dists/all/main/binary-all/Packages"; - sha256 = "sha256-Ewpy0l0fXiJDG0FkAGykqizW1bm+/lcvI2OREyqzOLM="; - }) - ]; - phases = [ "installPhase" ]; - installPhase = '' - awk -F': ' '\ - BEGIN { print "[ {" } \ - NR>1 && /^Package: / { print "} {"; } \ - /: / { printf "%s = \"%s\";\n", $1, $2 } \ - END { print "} ]" }' $srcs > $out - ''; - }; - - pkgsExpanded = import pkgsDesc; - - getSum = pkgs: deb: - let - matches = lib.filter (x: "pool/main/${deb}" == x.Filename) pkgs; - match = assert lib.length matches == 1; lib.elemAt matches 0; - #match = lib.elemAt matches 0; - in - match.SHA256; - - apthost = "https://apt.repos.intel.com/oneapi/pool/main/"; - urls = builtins.map (x: apthost + x) debList; - sums = builtins.map (x: getSum pkgsExpanded x) debList; - getsrc = url: sha256: fetchurl { inherit url sha256; }; - - intel-oneapi-source = stdenv.mkDerivation rec { - version = v; - pname = "intel-oneapi-source"; - - srcs = lib.zipListsWith getsrc urls sums; - dontBuild = true; - dontStrip = true; - buildInputs = [ dpkg ]; - phases = [ "unpackPhase" "installPhase" ]; - - unpackCmd = '' - dpkg -x $curSrc . - ''; - - installPhase = '' - mkdir -p $out - mv intel $out - ''; - }; - -in - stdenv.mkDerivation rec { - version = v; - pname = "intel-oneapi"; - src = intel-oneapi-source; - - buildInputs = [ - rsync - libffi - libelf - libxml2 - hwloc - stdenv.cc.cc.lib - ]; - nativeBuildInputs = [ autoPatchelfHook ]; - - # The gcc package is required for building other programs - #propagatedBuildInputs = [ gcc ]; - - phases = [ "installPhase" "fixupPhase" ]; - - dontStrip = true; - - installPhase = '' - mkdir -p $out/{bin,lib,include} - mkdir -p $out/share/man - - cd $src - - # Compiler - pushd intel/oneapi/compiler/${version} - pushd linux - # Binaries - rsync -a bin/ $out/bin/ - rsync -a bin/intel64/ $out/bin/ - rsync -a bin-llvm/ $out/bin-llvm/ - - # Libraries - rsync -a --exclude=oclfpga lib/ $out/lib/ - rsync -a compiler/lib/intel64_lin/ $out/lib/ - - # Headers - rsync -a include/ $out/include/ - rsync -a compiler/include/ $out/include/ - popd - - # Manuals - rsync -a documentation/en/man/common/ $out/share/man/ - popd - ''; - - } - - - - - - -#in -# -#stdenv.mkDerivation rec { -# version = "2022.3.2"; -# pkgVersion = "2022.3.1.16997"; # Intel (R) Versioning ??? -# pname = "intel-onapi-hpc-toolkit"; -# -# # From their CI: https://github.com/oneapi-src/oneapi-ci/blob/master/.github/workflows/build_all.yml -# src = fetchurl { -# url = "https://registrationcenter-download.intel.com/akdlm/irc_nas/18975/l_HPCKit_p_${pkgVersion}_offline.sh"; -# sha256 = "sha256-04TYMArgro1i+ONdiNZejripMNneUPS7Gj+MSfoGfWI="; -# }; -# -# buildInputs = [ ncurses debs ]; -# -# unpackPhase = '' -# sh $src -x -# #sourceRoot=l_HPCKit_p_${pkgVersion}_offline -# ''; -# -# # The gcc package is required for building other programs -# #propagatedBuildInputs = [ gcc ]; -# -# installPhase = '' -# mv l_HPCKit_p_${pkgVersion}_offline $out -# ''; -#} diff --git a/bsc/intel-oneapi/license.nix b/bsc/intel-oneapi/license.nix deleted file mode 100644 index 710dab1..0000000 --- a/bsc/intel-oneapi/license.nix +++ /dev/null @@ -1,39 +0,0 @@ -{ stdenv -, requireFile -}: - -stdenv.mkDerivation rec { - name = "intel-compiler-license"; - version = "2019.7.217"; - - src = requireFile { - name = "license.lic"; - sha256 = "0rgmsqkhpqcfny8j7msa4sgz3prhh248ylh69gjh12dkra77prsj"; - message = '' - The Intel Compiler requires a license. You can get one (free of charge) if - you meet the requeriments at the website: - - https://software.intel.com/content/www/us/en/develop/articles/qualify-for-free-software.html#opensourcecontributor - - Or you can use your own license. Add it to the store with: - - $ nix-store --add-fixed sha256 license.lic - /nix/store/2p9v0nvsl3scshjx348z6j32rh7ac0db-license.lic - - Notice that the name must match exactly "license.lic". - - Then update the hash in the bsc/intel-compiler/license.nix file using the - nix-hash command with: - - $ nix-hash --type sha256 --base32 --flat /nix/store/2p9v0nvsl3scshjx348z6j32rh7ac0db-license.lic - 06g2xgm1lch6zqfkhb768wacdx46kf61mfvj5wfpyssw0anr0x9q - ''; - }; - - dontUnpack = true; - - installPhase = '' - mkdir -p $out - cp $src $out/ - ''; -} diff --git a/bsc/intel-oneapi/oneapi.nix b/bsc/intel-oneapi/oneapi.nix deleted file mode 100644 index d447752..0000000 --- a/bsc/intel-oneapi/oneapi.nix +++ /dev/null @@ -1,100 +0,0 @@ -{ lib, stdenv, fetchurl, glibc, glib, libnotify, xdg-utils, ncurses, nss, - at-spi2-core, libdrm, gtk3, mesa, qt515, zlib, xorg, atk, nspr, dbus, - pango, cairo, gdk-pixbuf, xlibsWrapper, cups, expat, libxkbcommon, alsaLib, - file, at-spi2-atk, strace }: - -stdenv.mkDerivation rec { - version = "2022.2.0.262"; - hpc_version = "2022.2.0.191"; - name = "intel-oneapi-${version}"; - - # For localy downloaded offline installers - # sourceRoot = "/data/scratch/intel/oneapi_installer"; - - # For installer fetching (no warranty of the links) - sourceRoot = "."; - srcs = [ - (fetchurl { - url = "https://registrationcenter-download.intel.com/akdlm/irc_nas/18673/l_BaseKit_p_2022.2.0.262_offline.sh"; - sha256 = "03qx6sb58mkhc7iyc8va4y1ihj6l3155dxwmqj8dfw7j2ma7r5f6"; - }) - (fetchurl { - url = "https://registrationcenter-download.intel.com/akdlm/irc_nas/18679/l_HPCKit_p_2022.2.0.191_offline.sh"; - sha256 = "0swz4w9bn58wwqjkqhjqnkcs8k8ms9nn9s8k7j5w6rzvsa6817d2"; - }) - ]; - - nativeBuildInputs = [ file strace ]; - - propagatedBuildInputs = [ glibc glib libnotify xdg-utils ncurses nss - at-spi2-core xorg.libxcb libdrm gtk3 mesa qt515.full - zlib xorg.xlibsWrapper ]; - - libPath = lib.makeLibraryPath [ stdenv.cc.cc xorg.libX11 glib libnotify xdg-utils - ncurses nss at-spi2-core xorg.libxcb libdrm gtk3 - mesa qt515.full zlib atk nspr dbus pango cairo - gdk-pixbuf xlibsWrapper cups expat libxkbcommon alsaLib - at-spi2-atk xorg.libXcomposite xorg.libxshmfence - xorg.libXdamage xorg.libXext xorg.libXfixes - xorg.libXrandr ]; - - phases = [ "installPhase" "fixupPhase" "installCheckPhase" "distPhase" ]; - - installPhase = '' - cd $sourceRoot - mkdir -p $out/tmp - if [ "$srcs" = "" ] - then - base_kit="./l_BaseKit_p_${version}_offline.sh" - hpc_kit="./l_HPCKit_p_${hpc_version}_offline.sh" - else - base_kit=`echo $srcs|cut -d" " -f1` - hpc_kit=`echo $srcs|cut -d" " -f2` - fi - # Extract files - bash $base_kit --log $out/basekit_install_log --extract-only --extract-folder $out/tmp -a --install-dir $out --download-cache $out/tmp --download-dir $out/tmp --log-dir $out/tmp -s --eula accept - bash $hpc_kit --log $out/hpckit_install_log --extract-only --extract-folder $out/tmp -a --install-dir $out --download-cache $out/tmp --download-dir $out/tmp --log-dir $out/tmp -s --eula accept - for file in `grep -l -r "/bin/sh" $out/tmp` - do - sed -e "s,/bin/sh,${stdenv.shell},g" -i $file - done - export HOME=$out - # Patch the bootstraper binaries and libs - for files in `find $out/tmp/l_BaseKit_p_${version}_offline/lib` - do - patchelf --set-rpath "${glibc}/lib:$libPath:$out/tmp/l_BaseKit_p_${version}_offline/lib" $file 2>/dev/null || true - done - patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" --set-rpath "${glibc}/lib:$libPath:$out/tmp/l_BaseKit_p_${version}_offline/lib" $out/tmp/l_BaseKit_p_${version}_offline/bootstrapper - # launch install - export LD_LIBRARY_PATH=${zlib}/lib - #export LD_DEBUG=libs - ls -l $out - cd $out/tmp - strace -f -e trace=execve -s 9999 $out/tmp/l_BaseKit_p_${version}_offline/install.sh --install-dir $out --download-cache $out/tmp --download-dir $out/tmp --log-dir $out/tmp --eula accept -s --ignore-errors - $out/tmp/l_HPCKit_p_${hpc_version}_offline/install.sh --install-dir $out --download-cache $out/tmp --download-dir $out/tmp --log-dir $out/tmp --eula accept -s --ignore-errors - rm -rf $out/tmp - ''; - - postFixup = '' - echo "Fixing rights..." - chmod u+w -R $out - echo "Patching rpath and interpreter..." - for dir in `find $out -mindepth 1 -maxdepth 1 -type d` - do - echo " $dir" - for file in `find $dir -type f -exec file {} + | grep ELF| awk -F: '{print $1}'` - do - echo " $file" - patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" --set-rpath '$ORIGIN'":${glibc}/lib:$libPath:$dir/latest/lib64" $file 2>/dev/null || true - done - done - ''; - - meta = { - description = "Intel OneAPI Basekit + HPCKit"; - maintainers = [ lib.maintainers.bzizou ]; - platforms = lib.platforms.linux; - license = lib.licenses.unfree; - }; -} - diff --git a/bsc/intel-oneapi/wrapper.nix b/bsc/intel-oneapi/wrapper.nix deleted file mode 100644 index 17296ad..0000000 --- a/bsc/intel-oneapi/wrapper.nix +++ /dev/null @@ -1,33 +0,0 @@ -{ - stdenv -, gcc -, nanos6 -, iccUnwrapped -, wrapCCWith -, intelLicense -}: - -let - targetConfig = stdenv.targetPlatform.config; - inherit gcc; -in wrapCCWith rec { - cc = iccUnwrapped; - extraBuildCommands = '' - echo "-B${gcc.cc}/lib/gcc/${targetConfig}/${gcc.version}" >> $out/nix-support/cc-cflags - echo "-isystem ${iccUnwrapped}/include" >> $out/nix-support/cc-cflags - echo "-isystem ${iccUnwrapped}/include/intel64" >> $out/nix-support/cc-cflags - echo "-L${gcc.cc}/lib/gcc/${targetConfig}/${gcc.version}" >> $out/nix-support/cc-ldflags - echo "-L${gcc.cc.lib}/lib" >> $out/nix-support/cc-ldflags - - cat "${iccUnwrapped}/nix-support/propagated-build-inputs" >> \ - $out/nix-support/propagated-build-inputs - - echo "export INTEL_LICENSE_FILE=${intelLicense}" \ - >> $out/nix-support/setup-hook - - # Create the wrappers for icc and icpc - wrap icc $wrapper $ccPath/icc - wrap icpc $wrapper $ccPath/icpc - wrap ifort $wrapper $ccPath/ifort - ''; -} From 84623ea9d029cc7327a2b02e27ac2f677fd283e6 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 6 Mar 2023 11:47:01 +0100 Subject: [PATCH 777/987] Use lld linker for clangOmpss2 for LTO --- bsc/llvm-ompss2/clang.nix | 2 +- bsc/llvm-ompss2/default.nix | 15 ++++++++++++- overlay.nix | 11 ++++++++++ test/compilers/lto.nix | 43 +++++++++++++++++++++++++++++++++++++ 4 files changed, 69 insertions(+), 2 deletions(-) create mode 100644 test/compilers/lto.nix diff --git a/bsc/llvm-ompss2/clang.nix b/bsc/llvm-ompss2/clang.nix index a552712..7573204 100644 --- a/bsc/llvm-ompss2/clang.nix +++ b/bsc/llvm-ompss2/clang.nix @@ -67,7 +67,7 @@ stdenv.mkDerivation rec { "-DCMAKE_CXX_FLAGS_DEBUG=-g -ggnu-pubnames" "-DCMAKE_EXE_LINKER_FLAGS_DEBUG=-Wl,-gdb-index" "-DLLVM_LIT_ARGS=-sv --xunit-xml-output=xunit.xml" - "-DLLVM_ENABLE_PROJECTS=clang;openmp;compiler-rt;flang" + "-DLLVM_ENABLE_PROJECTS=clang;openmp;compiler-rt;flang;lld" "-DLLVM_ENABLE_ASSERTIONS=${enableAssertions}" "-DLLVM_INSTALL_TOOLCHAIN_ONLY=ON" "-DCMAKE_INSTALL_BINDIR=bin" diff --git a/bsc/llvm-ompss2/default.nix b/bsc/llvm-ompss2/default.nix index 4627656..f57c450 100644 --- a/bsc/llvm-ompss2/default.nix +++ b/bsc/llvm-ompss2/default.nix @@ -4,14 +4,27 @@ , nanos6 , clangOmpss2Unwrapped , wrapCCWith +, llvmPackages }: let + + # We need to replace the lld linker from bintools with our linker just built, + # otherwise we run into incompatibility issues when mixing compiler and linker + # versions. + bintools-unwrapped = llvmPackages.tools.bintools-unwrapped.override { + lld = clangOmpss2Unwrapped; + }; + bintools = llvmPackages.tools.bintools.override { + bintools = bintools-unwrapped; + }; + targetConfig = stdenv.targetPlatform.config; inherit gcc nanos6; -in wrapCCWith rec { cc = clangOmpss2Unwrapped; +in wrapCCWith { + inherit cc bintools; extraBuildCommands = '' echo "-target ${targetConfig}" >> $out/nix-support/cc-cflags echo "-B${gcc.cc}/lib/gcc/${targetConfig}/${gcc.version}" >> $out/nix-support/cc-cflags diff --git a/overlay.nix b/overlay.nix index 8f701a4..ccbf4d5 100644 --- a/overlay.nix +++ b/overlay.nix @@ -105,6 +105,7 @@ let clangOmpss2 = appendPasstru ( callPackage ./bsc/llvm-ompss2/default.nix { + llvmPackages = self.llvmPackages_latest; clangOmpss2Unwrapped = bsc.clangOmpss2Unwrapped; }) { CC = "clang"; CXX = "clang++"; }; @@ -113,6 +114,11 @@ let clangOmpss2Unwrapped = bsc.clangOmpss2UnwrappedGit; }) { CC = "clang"; CXX = "clang++"; }; + stdenvClangOmpss2 = self.stdenv.override { + cc = bsc.clangOmpss2; + allowedRequisites = null; + }; + mcxx = bsc.mcxxRelease; mcxxRelease = callPackage ./bsc/mcxx/default.nix { }; mcxxGit = callPackage ./bsc/mcxx/git.nix { }; @@ -302,6 +308,7 @@ let compilers.hello-c = callPackage ./test/compilers/hello-c.nix { }; compilers.hello-cpp = callPackage ./test/compilers/hello-cpp.nix { }; compilers.hello-f = callPackage ./test/compilers/hello-f.nix { }; + compilers.lto = callPackage ./test/compilers/lto.nix { }; compilers.intel2023.icx.c = compilers.hello-c.override { stdenv = bsc.intel2023.stdenv; }; @@ -317,6 +324,9 @@ let compilers.intel2023.ifort = compilers.hello-f.override { stdenv = bsc.intel2023.stdenv-ifort; }; + compilers.clangOmpss2.lto = compilers.lto.override { + stdenv = bsc.stdenvClangOmpss2; + }; }; testAll = with bsc.test; [ @@ -325,6 +335,7 @@ let compilers.intel2023.icx.cpp compilers.intel2023.icc.cpp compilers.intel2023.ifort + compilers.clangOmpss2.lto ]; ci = import ./test/ci.nix { diff --git a/test/compilers/lto.nix b/test/compilers/lto.nix new file mode 100644 index 0000000..337bf51 --- /dev/null +++ b/test/compilers/lto.nix @@ -0,0 +1,43 @@ +{ stdenv, writeText, which, strace }: + +let + hello_c = writeText "hello.c" '' + #include + #include + #include + + int main() + { + printf("Hello world!\n"); + return 0; + } + ''; +in + +stdenv.mkDerivation rec { + version = "0.0.1"; + name = "lto-c"; + buildInputs = [ stdenv which strace ]; + src = hello_c; + dontUnpack = true; + dontConfigure = true; + NIX_DEBUG = 0; + buildPhase = '' + set -x + echo CC=$CC + echo LD=$LD + echo ------------------------------------------- + env + echo ------------------------------------------- + + cp ${hello_c} hello.c + $CC -v -flto hello.c -o hello + ./hello + + set +x + ''; + + installPhase = '' + touch $out + ''; +} From bf28263cc5959bdff4978b6838c33ec097cdbdf0 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 13 Mar 2023 14:54:40 +0100 Subject: [PATCH 778/987] Add OmpSs-2 test with tasks --- overlay.nix | 4 ++++ test/compilers/ompss2.nix | 43 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 47 insertions(+) create mode 100644 test/compilers/ompss2.nix diff --git a/overlay.nix b/overlay.nix index ccbf4d5..f38b062 100644 --- a/overlay.nix +++ b/overlay.nix @@ -327,6 +327,9 @@ let compilers.clangOmpss2.lto = compilers.lto.override { stdenv = bsc.stdenvClangOmpss2; }; + compilers.clangOmpss2.task = callPackage ./test/compilers/ompss2.nix { + stdenv = bsc.stdenvClangOmpss2; + }; }; testAll = with bsc.test; [ @@ -336,6 +339,7 @@ let compilers.intel2023.icc.cpp compilers.intel2023.ifort compilers.clangOmpss2.lto + compilers.clangOmpss2.task ]; ci = import ./test/ci.nix { diff --git a/test/compilers/ompss2.nix b/test/compilers/ompss2.nix new file mode 100644 index 0000000..3127ac5 --- /dev/null +++ b/test/compilers/ompss2.nix @@ -0,0 +1,43 @@ +{ stdenv, writeText, which, strace }: + +let + task_c = writeText "task.c" '' + #include + + int main() + { + for (int i = 0; i < 10; i++) { + #pragma oss task + printf("Hello world!\n"); + } + + return 0; + } + ''; +in + +stdenv.mkDerivation rec { + version = "0.0.1"; + name = "task_c"; + src = task_c; + dontUnpack = true; + dontConfigure = true; + hardeningDisable = [ "all" ]; + NIX_DEBUG = 1; + buildPhase = '' + set -x + echo CC=$CC + $CC -v + + cp ${task_c} task.c + cat task.c + $CC -v -fompss-2 task.c -o task + ./task + + set +x + ''; + + installPhase = '' + touch $out + ''; +} From 898534ee5218fe095c48cfbc627886e081b0be44 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 30 Nov 2021 16:18:06 +0100 Subject: [PATCH 779/987] bsc: add nosv package --- bsc/nosv/default.nix | 40 ++++++++++++++++++++++++++++++++++++++++ overlay.nix | 5 +++++ 2 files changed, 45 insertions(+) create mode 100644 bsc/nosv/default.nix diff --git a/bsc/nosv/default.nix b/bsc/nosv/default.nix new file mode 100644 index 0000000..2a9bec1 --- /dev/null +++ b/bsc/nosv/default.nix @@ -0,0 +1,40 @@ +{ + stdenv +, lib +, autoreconfHook +, pkgconfig +, numactl +, hwloc +, ovni ? null +, enableOvni ? false +, gitURL ? "git@gitlab-internal.bsc.es:nos-v/nos-v.git" +, gitBranch ? "master" +, gitCommit ? null +}: + +with lib; + +stdenv.mkDerivation rec { + pname = "nosv"; + version = "${src.shortRev}"; + + inherit gitURL gitCommit gitBranch; + + src = builtins.fetchGit ({ + url = gitURL; + ref = gitBranch; + } // (optionalAttrs (gitCommit != null) { rev = gitCommit; }) + ); + + hardeningDisable = [ "all" ]; + dontStrip = true; + + configureFlags = optional (enableOvni) "--with-ovni=${ovni}"; + + buildInputs = [ + autoreconfHook + pkgconfig + numactl + hwloc + ] ++ (optional (enableOvni) ovni); +} diff --git a/overlay.nix b/overlay.nix index f38b062..071644a 100644 --- a/overlay.nix +++ b/overlay.nix @@ -159,6 +159,11 @@ let hardeningDisable = [ "all" ]; }); + # ================================================================= + # nosv + # ================================================================= + nosv = callPackage ./bsc/nosv/default.nix { }; + # ================================================================= # MPI # ================================================================= From 9fae434553d6ff3ec931115b4d8e95bd9c548aa1 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 13 Mar 2023 16:08:38 +0100 Subject: [PATCH 780/987] Enable -fPIC in Nanos6 loader --- bsc/nanos6/default.nix | 2 ++ bsc/nanos6/fpic.patch | 57 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 59 insertions(+) create mode 100644 bsc/nanos6/fpic.patch diff --git a/bsc/nanos6/default.nix b/bsc/nanos6/default.nix index aa5b1ea..c67d280 100644 --- a/bsc/nanos6/default.nix +++ b/bsc/nanos6/default.nix @@ -35,6 +35,8 @@ stdenv.mkDerivation rec { sha256 = "YGj/cubqXaNt4lR2CnSU+nXvi+SdB56EXLhfN/ufjHs="; }; + patches = [ ./fpic.patch ]; + prePatch = '' patchShebangs scripts/generate_config.sh ''; diff --git a/bsc/nanos6/fpic.patch b/bsc/nanos6/fpic.patch new file mode 100644 index 0000000..34e2cdf --- /dev/null +++ b/bsc/nanos6/fpic.patch @@ -0,0 +1,57 @@ +diff --git a/Makefile.am b/Makefile.am +index 5718226456dcf0e422200d1289a14816f51bd39d..c4d49a80f3899b6439184837555c03337b832018 100755 +--- a/Makefile.am ++++ b/Makefile.am +@@ -115,7 +115,7 @@ lib_LTLIBRARIES = \ + libnanos6-optimized-discrete-verbose.la \ + libnanos6-optimized-regions-verbose.la + +-noinst_LIBRARIES = libnanos6-main-wrapper.a libnanos6-library-mode.a ++noinst_LTLIBRARIES = libnanos6-main-wrapper.la libnanos6-library-mode.la + lib_OBJECTS = nanos6-main-wrapper.o nanos6-library-mode.o + + +@@ -139,7 +139,7 @@ if ANDROID + main_interception += loader/intercept-main-android.c + endif + +-libnanos6_main_wrapper_a_SOURCES = \ ++libnanos6_main_wrapper_la_SOURCES = \ + $(main_interception) \ + loader/api-versions.c \ + loader/api-versions.h \ +@@ -150,25 +150,27 @@ libnanos6_main_wrapper_a_SOURCES = \ + loader/main-wrapper.c \ + loader/main-wrapper.h + +-libnanos6_main_wrapper_a_CPPFLAGS = $(CUDA_CFLAGS) $(MPI_CXXFLAGS) $(MCMODEL_FLAGS) ++libnanos6_main_wrapper_la_CPPFLAGS = $(CUDA_CFLAGS) $(MPI_CXXFLAGS) $(MCMODEL_FLAGS) ++libnanos6_main_wrapper_la_LDFLAGS = -static + + +-nanos6-main-wrapper.o: libnanos6-main-wrapper.a +- $(AM_V_LD)$(LD) -r --whole-archive libnanos6-main-wrapper.a -o nanos6-main-wrapper.o ++nanos6-main-wrapper.o: libnanos6-main-wrapper.la ++ $(AM_V_LD)$(LD) -r --whole-archive $(top_builddir)/.libs/libnanos6-main-wrapper.a -o nanos6-main-wrapper.o + + +-libnanos6_library_mode_a_SOURCES = \ ++libnanos6_library_mode_la_SOURCES = \ + $(library_interception) \ + loader/api-versions.c \ + loader/api-versions.h \ + loader/device_strings.c \ + loader/library-mode-init.c + +-libnanos6_library_mode_a_CPPFLAGS = $(CUDA_CFLAGS) $(MPI_CXXFLAGS) $(MCMODEL_FLAGS) ++libnanos6_library_mode_la_CPPFLAGS = $(CUDA_CFLAGS) $(MPI_CXXFLAGS) $(MCMODEL_FLAGS) ++libnanos6_library_mode_la_LDFLAGS = -static + + +-nanos6-library-mode.o: libnanos6-library-mode.a +- $(AM_V_LD)$(LD) -r --whole-archive libnanos6-library-mode.a -o nanos6-library-mode.o ++nanos6-library-mode.o: libnanos6-library-mode.la ++ $(AM_V_LD)$(LD) -r --whole-archive $(top_builddir)/.libs/libnanos6-library-mode.a -o nanos6-library-mode.o + + + # From 243ed2331a5ff4c835dac2db55cbfeb8c865da3f Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 13 Mar 2023 16:16:34 +0100 Subject: [PATCH 781/987] Add new package NODES --- bsc/nodes/git.nix | 60 +++++++++++++++++++++++++++++++++++++++ overlay.nix | 15 ++++++++++ test/compilers/ompss2.nix | 8 ++++-- 3 files changed, 81 insertions(+), 2 deletions(-) create mode 100644 bsc/nodes/git.nix diff --git a/bsc/nodes/git.nix b/bsc/nodes/git.nix new file mode 100644 index 0000000..a19ae3f --- /dev/null +++ b/bsc/nodes/git.nix @@ -0,0 +1,60 @@ +{ + stdenv +, lib +, automake +, autoconf +, libtool +, pkg-config +, perl +, numactl +, hwloc +, papi +, boost +, autoreconfHook +, jemalloc +, enableOvni ? false +, ovni ? null +, nosv +, gitUrl ? "ssh://git@gitlab-internal.bsc.es/nos-v/nodes.git" +, gitBranch ? "master" +}: + +with lib; + +stdenv.mkDerivation rec { + pname = "nodes"; + version = "${src.shortRev}"; + + src = builtins.fetchGit { + url = gitUrl; + ref = gitBranch; + }; + + enableParallelBuilding = true; + dontStrip = true; + + configureFlags = [ + "--with-jemalloc=${jemalloc}" + "--with-nosv=${nosv}" + ] ++ + (optional enableOvni "--with-ovni=${ovni}"); + + # The "bindnow" flags are incompatible with ifunc resolution mechanism. We + # disable all by default, which includes bindnow. + hardeningDisable = [ "all" ]; + + buildInputs = [ + autoreconfHook + autoconf + automake + libtool + pkg-config + boost + numactl + hwloc + papi + jemalloc + nosv + ] ++ + (optional enableOvni ovni); +} diff --git a/overlay.nix b/overlay.nix index 071644a..9ac4cdb 100644 --- a/overlay.nix +++ b/overlay.nix @@ -119,6 +119,14 @@ let allowedRequisites = null; }; + clangNodes = bsc.clangOmpss2.override { + nanos6 = bsc.nodes; + }; + stdenvClangNodes = self.stdenv.override { + cc = bsc.clangNodes; + allowedRequisites = null; + }; + mcxx = bsc.mcxxRelease; mcxxRelease = callPackage ./bsc/mcxx/default.nix { }; mcxxGit = callPackage ./bsc/mcxx/git.nix { }; @@ -159,6 +167,9 @@ let hardeningDisable = [ "all" ]; }); + nodes = callPackage ./bsc/nodes/git.nix { }; + nodesWithOvni = bsc.nodes.override { enableOvni = true; }; + # ================================================================= # nosv # ================================================================= @@ -335,6 +346,9 @@ let compilers.clangOmpss2.task = callPackage ./test/compilers/ompss2.nix { stdenv = bsc.stdenvClangOmpss2; }; + compilers.clangNodes.task = callPackage ./test/compilers/ompss2.nix { + stdenv = bsc.stdenvClangNodes; + }; }; testAll = with bsc.test; [ @@ -345,6 +359,7 @@ let compilers.intel2023.ifort compilers.clangOmpss2.lto compilers.clangOmpss2.task + compilers.clangNodes.task ]; ci = import ./test/ci.nix { diff --git a/test/compilers/ompss2.nix b/test/compilers/ompss2.nix index 3127ac5..b2862d4 100644 --- a/test/compilers/ompss2.nix +++ b/test/compilers/ompss2.nix @@ -1,4 +1,4 @@ -{ stdenv, writeText, which, strace }: +{ stdenv, writeText, which, strace, gdb }: let task_c = writeText "task.c" '' @@ -24,6 +24,8 @@ stdenv.mkDerivation rec { dontConfigure = true; hardeningDisable = [ "all" ]; NIX_DEBUG = 1; + buildInputs = [ strace gdb ]; + __noChroot = true; # Required for NODES buildPhase = '' set -x echo CC=$CC @@ -32,7 +34,9 @@ stdenv.mkDerivation rec { cp ${task_c} task.c cat task.c $CC -v -fompss-2 task.c -o task - ./task + #strace -ff -e trace=open,openat -s9999999 ./task + LD_DEBUG=libs ./task + #gdb -batch -ex "run" -ex "bt" ./task set +x ''; From f148a71c6c12d23fc229b4e2c942ba72853ff0e2 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 13 Mar 2023 16:17:02 +0100 Subject: [PATCH 782/987] Print buildInputs in CI test derivation --- test/ci.nix | 3 +++ 1 file changed, 3 insertions(+) diff --git a/test/ci.nix b/test/ci.nix index a409aa4..827be63 100644 --- a/test/ci.nix +++ b/test/ci.nix @@ -37,6 +37,9 @@ stdenv.mkDerivation rec { fi echo "OK: Build is under chroot" + + echo "buildInputs:" + printf -- "- %s\n" $buildInputs ''; installPhase = '' From 91a5bdb3447e1526a75a38c5d3d8fc611349f8bc Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 14 Mar 2023 10:32:59 +0100 Subject: [PATCH 783/987] Add comment about __noChroot in OmpSs-2 test --- test/compilers/ompss2.nix | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/test/compilers/ompss2.nix b/test/compilers/ompss2.nix index b2862d4..7041f37 100644 --- a/test/compilers/ompss2.nix +++ b/test/compilers/ompss2.nix @@ -25,7 +25,9 @@ stdenv.mkDerivation rec { hardeningDisable = [ "all" ]; NIX_DEBUG = 1; buildInputs = [ strace gdb ]; - __noChroot = true; # Required for NODES + # NODES requires access to /sys/devices to request NUMA information. It will + # fail to run otherwise, so we disable the sandbox for this test. + __noChroot = true; buildPhase = '' set -x echo CC=$CC From 054d70d23b08599958d5ea97629f493cf21dcf3a Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 14 Mar 2023 14:28:47 +0100 Subject: [PATCH 784/987] Add bench6 package --- bsc/bench6/default.nix | 25 +++++++++++++++++++++++++ overlay.nix | 1 + 2 files changed, 26 insertions(+) create mode 100644 bsc/bench6/default.nix diff --git a/bsc/bench6/default.nix b/bsc/bench6/default.nix new file mode 100644 index 0000000..a0e09c0 --- /dev/null +++ b/bsc/bench6/default.nix @@ -0,0 +1,25 @@ +{ + stdenv +, clangOmpss2 +, gitBranch ? "master" +, gitURL ? "ssh://git@bscpm03.bsc.es/rarias/bench6.git" +}: + +stdenv.mkDerivation rec { + pname = "bench6"; + version = "${src.shortRev}"; + + src = builtins.fetchGit { + url = gitURL; + ref = gitBranch; + }; + + buildInputs = [ clangOmpss2 ]; + + preInstall = '' + export DESTDIR=$out + ''; + + hardeningDisable = [ "all" ]; + dontStrip = true; +} diff --git a/overlay.nix b/overlay.nix index 9ac4cdb..2ba4d06 100644 --- a/overlay.nix +++ b/overlay.nix @@ -302,6 +302,7 @@ let dummy = callPackage ./bsc/dummy/default.nix { }; mpptest = callPackage ./bsc/mpptest/default.nix { }; cpuid = callPackage ./bsc/cpuid/default.nix { }; + bench6 = callPackage ./bsc/bench6/default.nix { }; # ================================================================= # Garlic benchmark From 94fa0de4fcdb6874c39724e359d2308c09cc14dd Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Sun, 2 Apr 2023 21:23:46 +0200 Subject: [PATCH 785/987] Add slurm 16.05.8.1 and hwloc 1.11.6 --- bsc/hwloc/1.11.6/default.nix | 70 ++++++++++++++++++ bsc/slurm/16.05.8.1/common-env-echo.patch | 13 ++++ bsc/slurm/16.05.8.1/default.nix | 87 +++++++++++++++++++++++ bsc/slurm/16.05.8.1/major.patch | 10 +++ bsc/slurm/16.05.8.1/mvwprintw.patch | 11 +++ bsc/slurm/16.05.8.1/pmi2.nix | 22 ++++++ bsc/slurm/16.05.8.1/pmix-configure.patch | 13 ++++ overlay.nix | 7 ++ 8 files changed, 233 insertions(+) create mode 100644 bsc/hwloc/1.11.6/default.nix create mode 100644 bsc/slurm/16.05.8.1/common-env-echo.patch create mode 100644 bsc/slurm/16.05.8.1/default.nix create mode 100644 bsc/slurm/16.05.8.1/major.patch create mode 100644 bsc/slurm/16.05.8.1/mvwprintw.patch create mode 100644 bsc/slurm/16.05.8.1/pmi2.nix create mode 100644 bsc/slurm/16.05.8.1/pmix-configure.patch diff --git a/bsc/hwloc/1.11.6/default.nix b/bsc/hwloc/1.11.6/default.nix new file mode 100644 index 0000000..1754fe5 --- /dev/null +++ b/bsc/hwloc/1.11.6/default.nix @@ -0,0 +1,70 @@ +{ stdenv, lib, fetchurl, pkgconfig, expat, ncurses +, pciutils, numactl }: + +with lib; + +stdenv.mkDerivation rec { + name = "hwloc-1.11.6"; + + src = fetchurl { + url = "http://www.open-mpi.org/software/hwloc/v1.11/downloads/${name}.tar.bz2"; + sha256 = "1yl7dm2qplwmnidd712zy12qfvxk28k8ccs694n42ybwdjwzg1bn"; + }; + + nativeBuildInputs = [ pkgconfig ]; + + # Filter out `null' inputs. This allows users to `.override' the + # derivation and set optional dependencies to `null'. + buildInputs = filter (x: x != null) + ([ expat ncurses ] + ++ (optionals stdenv.isLinux [ numactl ])); + + propagatedBuildInputs = + # Since `libpci' appears in `hwloc.pc', it must be propagated. + optional stdenv.isLinux pciutils; + + enableParallelBuilding = true; + + postInstall = + optionalString (stdenv.isLinux && numactl != null) + '' if [ -d "${numactl}/lib64" ] + then + numalibdir="${numactl}/lib64" + else + numalibdir="${numactl}/lib" + test -d "$numalibdir" + fi + + sed -i "$out/lib/libhwloc.la" \ + -e "s|-lnuma|-L$numalibdir -lnuma|g" + ''; + + # Checks disabled because they're impure (hardware dependent) and + # fail on some build machines. + doCheck = false; + + meta = { + description = "Portable abstraction of hierarchical architectures for high-performance computing"; + longDescription = '' + hwloc provides a portable abstraction (across OS, + versions, architectures, ...) of the hierarchical topology of + modern architectures, including NUMA memory nodes, sockets, + shared caches, cores and simultaneous multithreading. It also + gathers various attributes such as cache and memory + information. It primarily aims at helping high-performance + computing applications with gathering information about the + hardware so as to exploit it accordingly and efficiently. + + hwloc may display the topology in multiple convenient + formats. It also offers a powerful programming interface to + gather information about the hardware, bind processes, and much + more. + ''; + + # http://www.open-mpi.org/projects/hwloc/license.php + license = licenses.bsd3; + homepage = http://www.open-mpi.org/projects/hwloc/; + maintainers = [ ]; + platforms = platforms.all; + }; +} diff --git a/bsc/slurm/16.05.8.1/common-env-echo.patch b/bsc/slurm/16.05.8.1/common-env-echo.patch new file mode 100644 index 0000000..4236421 --- /dev/null +++ b/bsc/slurm/16.05.8.1/common-env-echo.patch @@ -0,0 +1,13 @@ +diff --git a/src/common/env.c b/src/common/env.c +index 987846d..73d3b3b 100644 +--- a/src/common/env.c ++++ b/src/common/env.c +@@ -1941,7 +1941,7 @@ char **env_array_user_default(const char *username, int timeout, int mode, + char **env = NULL; + char *starttoken = "XXXXSLURMSTARTPARSINGHEREXXXX"; + char *stoptoken = "XXXXSLURMSTOPPARSINGHEREXXXXX"; +- char cmdstr[256], *env_loc = NULL; ++ char cmdstr[MAXPATHLEN], *env_loc = NULL; + char *stepd_path = NULL; + int fd1, fd2, fildes[2], found, fval, len, rc, timeleft; + int buf_read, buf_rem, config_timeout; diff --git a/bsc/slurm/16.05.8.1/default.nix b/bsc/slurm/16.05.8.1/default.nix new file mode 100644 index 0000000..4d85ac0 --- /dev/null +++ b/bsc/slurm/16.05.8.1/default.nix @@ -0,0 +1,87 @@ +{ stdenv, lib, fetchFromGitHub, pkgconfig, libtool, curl +, python3, munge, perl, pam, zlib, shadow, coreutils +, ncurses, libmysqlclient, lua, hwloc, numactl +, readline, freeipmi, xorg, lz4, rdma-core, nixosTests +, pmix, enableX11 ? false +}: + +stdenv.mkDerivation rec { + pname = "slurm"; + version = "16.05.8.1"; + + # N.B. We use github release tags instead of https://www.schedmd.com/downloads.php + # because the latter does not keep older releases. + src = fetchFromGitHub { + owner = "SchedMD"; + repo = "slurm"; + # The release tags use - instead of . + rev = "${pname}-${builtins.replaceStrings ["."] ["-"] version}"; + sha256 = "1fkrbi4f22jb2pq19sv3j2yyvac4nh25fk8mzw6ic24swxp8wq9s"; + }; + + outputs = [ "out" "dev" ]; + + patches = [ + ./major.patch + ./mvwprintw.patch + # increase string length to allow for full + # path of 'echo' in nix store + #./common-env-echo.patch + # Required for configure to pick up the right dlopen path + #./pmix-configure.patch + ]; + + prePatch = '' + substituteInPlace src/common/env.c \ + --replace "/bin/echo" "${coreutils}/bin/echo" + ''; + + # nixos test fails to start slurmd with 'undefined symbol: slurm_job_preempt_mode' + # https://groups.google.com/forum/#!topic/slurm-devel/QHOajQ84_Es + # this doesn't fix tests completely at least makes slurmd to launch + hardeningDisable = [ "fortify" "bindnow" ]; + + nativeBuildInputs = [ pkgconfig libtool python3 ]; + buildInputs = [ + curl python3 munge perl pam zlib + libmysqlclient ncurses lz4 rdma-core + lua hwloc numactl readline freeipmi shadow.su + pmix + ]; + + configureFlags = [ + "CFLAGS=-fcommon" + "--with-freeipmi=${freeipmi}" + "--with-hwloc=${hwloc}" + "--with-lz4=${lz4.dev}" + "--with-munge=${munge}" + "--with-zlib=${zlib}" + "--with-ofed=${rdma-core}" + "--sysconfdir=/etc/slurm" + "--with-pmix=${pmix}" + "--disable-gtktest" + "--disable-x11" + ]; + + + preConfigure = '' + patchShebangs ./doc/html/shtml2html.py + patchShebangs ./doc/man/man2html.py + ''; + + postInstall = '' + rm -f $out/lib/*.la $out/lib/slurm/*.la + ''; + + enableParallelBuilding = true; + + passthru.tests.slurm = nixosTests.slurm; + + meta = with lib; { + homepage = "http://www.schedmd.com/"; + description = "Simple Linux Utility for Resource Management"; + platforms = platforms.linux; + license = licenses.gpl2; + maintainers = with maintainers; [ jagajaga markuskowa ]; + }; +} diff --git a/bsc/slurm/16.05.8.1/major.patch b/bsc/slurm/16.05.8.1/major.patch new file mode 100644 index 0000000..82300bc --- /dev/null +++ b/bsc/slurm/16.05.8.1/major.patch @@ -0,0 +1,10 @@ +--- a/src/plugins/task/cgroup/task_cgroup_devices.c 1970-01-01 01:00:01.000000000 +0100 ++++ b/src/plugins/task/cgroup/task_cgroup_devices.c 1970-01-01 01:00:01.000000000 +0100 +@@ -43,6 +43,7 @@ + #include + #include + #include ++#include + #include + #include + #include "src/common/xstring.h" diff --git a/bsc/slurm/16.05.8.1/mvwprintw.patch b/bsc/slurm/16.05.8.1/mvwprintw.patch new file mode 100644 index 0000000..cfa5e86 --- /dev/null +++ b/bsc/slurm/16.05.8.1/mvwprintw.patch @@ -0,0 +1,11 @@ +--- a/src/smap/partition_functions.c 2023-04-02 21:07:54.505816546 +0200 ++++ b/src/smap/partition_functions.c 2023-04-02 21:07:43.512816197 +0200 +@@ -588,7 +588,7 @@ + else + tmp_state = "unk"; + mvwprintw(text_win, main_ycord, main_xcord, +- tmp_state); ++ "%s", tmp_state); + main_xcord += 7; + + if (part_ptr->max_time == INFINITE) diff --git a/bsc/slurm/16.05.8.1/pmi2.nix b/bsc/slurm/16.05.8.1/pmi2.nix new file mode 100644 index 0000000..fa2fe64 --- /dev/null +++ b/bsc/slurm/16.05.8.1/pmi2.nix @@ -0,0 +1,22 @@ +{ + stdenv +, slurm +}: + +stdenv.mkDerivation rec { + name = "pmi2-${version}"; + + inherit (slurm) src version prePatch nativeBuildInputs buildInputs + configureFlags preConfigure; + + # Only build the pmi2 library + preBuild = ''cd contribs/pmi2''; + + # Include also the pmi.h header + postInstall = '' + mkdir -p $out/include + cp ../../slurm/pmi.h $out/include + ''; + + enableParallelBuilding = true; +} diff --git a/bsc/slurm/16.05.8.1/pmix-configure.patch b/bsc/slurm/16.05.8.1/pmix-configure.patch new file mode 100644 index 0000000..21c2197 --- /dev/null +++ b/bsc/slurm/16.05.8.1/pmix-configure.patch @@ -0,0 +1,13 @@ +diff --git a/configure b/configure +index 1cf53bc..ab68441 100755 +--- a/configure ++++ b/configure +@@ -21207,7 +21207,7 @@ rm -f conftest.err conftest.i conftest.$ac_ext + as_fn_error $? "error processing $x_ac_cv_pmix_libdir: PMIx v3.x was already found in one of the previous paths" "$LINENO" 5 + fi + _x_ac_pmix_v3_found="1" +- PMIX_V3_CPPFLAGS="-I$x_ac_cv_pmix_dir/include" ++ PMIX_V3_CPPFLAGS="-I$x_ac_cv_pmix_dir/include -DPMIXP_V3_LIBPATH=\\\"$x_ac_cv_pmix_libdir\\\"" + if test "$ac_with_rpath" = "yes"; then + PMIX_V3_LDFLAGS="-Wl,-rpath -Wl,$x_ac_cv_pmix_libdir -L$x_ac_cv_pmix_libdir" + else diff --git a/overlay.nix b/overlay.nix index 2ba4d06..d6f07fa 100644 --- a/overlay.nix +++ b/overlay.nix @@ -272,6 +272,13 @@ let slurm17-libpmi2 = callPackage ./bsc/slurm/pmi2.nix { pmix = bsc.pmix2; }; + + slurm-16-05-8-1 = callPackage ./bsc/slurm/16.05.8.1/default.nix { + hwloc = bsc.hwloc-1-11-6; + }; + + hwloc-1-11-6 = callPackage ./bsc/hwloc/1.11.6/default.nix {}; + # Use a slurm compatible with MN4 slurm = bsc.slurm17; # We need the unstable branch to get the fallocate problem fixed, as it is From a46a2ee7940e1793a740ff4b2bb6db1c3551dcd2 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 11 Apr 2023 20:31:54 +0200 Subject: [PATCH 786/987] Update nixpkgs commit to match xeon07 --- default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/default.nix b/default.nix index 1360756..ce996d7 100644 --- a/default.nix +++ b/default.nix @@ -1,16 +1,16 @@ let bscOverlay = import ./overlay.nix; - commit = "3c0a90afd70b46b081601f9941999e596576337f"; + commit = "9a6aabc4740790ef3bbb246b86d029ccf6759658"; # Pin the nixpkgs nixpkgsPath = builtins.fetchTarball { # Descriptive name to make the store path easier to identify name = "nixpkgs-${commit}"; - # Commit hash for nixpkgs release-22.11 as of 2023-03-02 + # Commit hash for nixpkgs as of 2023-04-11 url = "https://github.com/nixos/nixpkgs/archive/${commit}.tar.gz"; # Hash obtained using `nix-prefetch-url --unpack ` - sha256 = "0ss4cigiph1ck4lr0qjiw79pjsi4q0nd00mjfzmzmarxdphjsmyy"; + sha256 = "0m8cid2n6zfnbia7kkan9vw8n5dvwn8sv7cmrap46rckpzbahnls"; }; pkgs = import nixpkgsPath { From 03c725676757d91983c331aa24aed03a993f536d Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 11 Apr 2023 20:32:49 +0200 Subject: [PATCH 787/987] Disable extrae as is broken --- bsc/extrae/default.nix | 6 ++++-- bsc/nanos6/default.nix | 6 +----- bsc/nanos6/git.nix | 4 +--- test/ci.nix | 2 +- 4 files changed, 7 insertions(+), 11 deletions(-) diff --git a/bsc/extrae/default.nix b/bsc/extrae/default.nix index 1f92de7..2ceec91 100644 --- a/bsc/extrae/default.nix +++ b/bsc/extrae/default.nix @@ -12,11 +12,12 @@ , gfortran , xml2 , which +, libbfd , mpi ? null , cuda ? null , llvmPackages , autoreconfHook -, python37Packages +#, python3Packages , installShellFiles , symlinkJoin }: @@ -64,7 +65,8 @@ stdenv.mkDerivation rec { xml2 which libxml2.dev - #python37Packages.sphinx + libbfd + #python3Packages.sphinx ] ++ lib.optional stdenv.cc.isClang llvmPackages.openmp; diff --git a/bsc/nanos6/default.nix b/bsc/nanos6/default.nix index c67d280..faf2767 100644 --- a/bsc/nanos6/default.nix +++ b/bsc/nanos6/default.nix @@ -10,9 +10,7 @@ , numactl , hwloc , papi -, extrae , boost -, babeltrace2 , ovni , enableJemalloc ? true , jemalloc ? null @@ -48,7 +46,6 @@ stdenv.mkDerivation rec { ''; configureFlags = [ - "--with-babeltrace2=${babeltrace2}" "--with-ovni=${ovni}" ] ++ (optional enableJemalloc "--with-jemalloc=${jemalloc}") ++ @@ -71,8 +68,7 @@ stdenv.mkDerivation rec { numactl hwloc papi - babeltrace2 ovni - ] ++ (if (extrae != null) then [extrae] else []); + ]; } diff --git a/bsc/nanos6/git.nix b/bsc/nanos6/git.nix index 794f9fa..1e2cc09 100644 --- a/bsc/nanos6/git.nix +++ b/bsc/nanos6/git.nix @@ -9,7 +9,6 @@ , numactl , hwloc , papi -, extrae , boost , autoreconfHook , enableJemalloc ? true @@ -61,6 +60,5 @@ stdenv.mkDerivation rec { boost numactl hwloc - papi ] - ++ (if (extrae != null) then [extrae] else []); + papi ]; } diff --git a/test/ci.nix b/test/ci.nix index 827be63..a523982 100644 --- a/test/ci.nix +++ b/test/ci.nix @@ -22,7 +22,7 @@ stdenv.mkDerivation rec { tampi # Tools ovni - extrae + # extrae # Broken wxparaver # Runtimes nanos6 From 2627552a0f588e154771a907222bb0956d4ea55b Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 11 Apr 2023 20:33:35 +0200 Subject: [PATCH 788/987] Use python 3 --- bsc/mcxx/default.nix | 4 ++-- bsc/slurm/pmi2.nix | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/bsc/mcxx/default.nix b/bsc/mcxx/default.nix index 3913dc1..3dfa1cf 100644 --- a/bsc/mcxx/default.nix +++ b/bsc/mcxx/default.nix @@ -4,7 +4,7 @@ , autoreconfHook , nanos6 , gperf -, python +, python3 , gfortran , pkg-config , sqlite @@ -36,7 +36,7 @@ stdenv.mkDerivation rec { autoreconfHook nanos6 gperf - python + python3 gfortran pkg-config sqlite.dev diff --git a/bsc/slurm/pmi2.nix b/bsc/slurm/pmi2.nix index 332ff02..da9811f 100644 --- a/bsc/slurm/pmi2.nix +++ b/bsc/slurm/pmi2.nix @@ -1,5 +1,5 @@ { stdenv, lib, fetchFromGitHub, pkgconfig, libtool, curl -, python, munge, perl, pam, openssl +, python3, munge, perl, pam, openssl , ncurses, libmysqlclient, gtk2, lua, hwloc, numactl , readline, freeipmi, libssh2, xorg , pmix @@ -35,7 +35,7 @@ stdenv.mkDerivation rec { nativeBuildInputs = [ pkgconfig libtool ]; buildInputs = [ - curl python munge perl pam openssl + curl python3 munge perl pam openssl libmysqlclient ncurses gtk2 lua hwloc numactl readline freeipmi pmix From 9d2de00b0c7dcc9e58a3f046bb571adeac92da98 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 11 Apr 2023 20:33:50 +0200 Subject: [PATCH 789/987] Update Intel OneAPI package list --- bsc/intel-oneapi/2023.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bsc/intel-oneapi/2023.nix b/bsc/intel-oneapi/2023.nix index f537ca1..7cb466b 100644 --- a/bsc/intel-oneapi/2023.nix +++ b/bsc/intel-oneapi/2023.nix @@ -43,11 +43,11 @@ let # Set the hashes to "" to fetch them (fetchurl { url = "https://apt.repos.intel.com/oneapi/dists/all/main/binary-amd64/Packages"; - sha256 = "sha256-u0fKJRNkG19xlO3h5+uJgfeAArk+gMATOQQST2RM5pg="; + sha256 = "sha256-HkjbKzEDsXaBjZk2NdrGRMZsLkhT5YFJrjEgh2MN2zo="; }) (fetchurl { url = "https://apt.repos.intel.com/oneapi/dists/all/main/binary-all/Packages"; - sha256 = "sha256-m3UCjGzq1piHc2Qh/ejM4qBsqDQOVjm3U8E4USi5MwY="; + sha256 = "sha256-fLRjnmxaabQAi3XcMcyNKdQcaQy2yvupDj4PAZ8MUlU="; }) ]; phases = [ "installPhase" ]; From ef2631b69902d1816c914b9839714bb256c25ae2 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 11 Apr 2023 20:34:11 +0200 Subject: [PATCH 790/987] Build paraver with wxGTK32 --- bsc/paraver/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bsc/paraver/default.nix b/bsc/paraver/default.nix index 60141ec..c07591f 100644 --- a/bsc/paraver/default.nix +++ b/bsc/paraver/default.nix @@ -4,7 +4,7 @@ , boost , libxml2 , xml2 -, wxGTK30 +, wxGTK32 , autoconf , automake , paraverKernel @@ -13,7 +13,7 @@ }: let - wx = wxGTK30; + wx = wxGTK32; in stdenv.mkDerivation rec { pname = "wxparaver"; From c775ee4d6f76aded05b08ae13924c302f18f9b2c Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 26 Apr 2023 15:08:32 +0200 Subject: [PATCH 791/987] Add flakes support --- flake.nix | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 flake.nix diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..266eb61 --- /dev/null +++ b/flake.nix @@ -0,0 +1,5 @@ +{ + outputs = {...}: { + bscOverlay = import ./overlay.nix; + }; +} From 0605bc4cebc9e45a6d097c0aae068ec66a5c1e14 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 18 May 2023 20:40:29 +0200 Subject: [PATCH 792/987] Add bench6 new dependencies --- bsc/bench6/default.nix | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/bsc/bench6/default.nix b/bsc/bench6/default.nix index a0e09c0..24daf32 100644 --- a/bsc/bench6/default.nix +++ b/bsc/bench6/default.nix @@ -1,6 +1,10 @@ { stdenv -, clangOmpss2 +, clangOmpss2Git +, nanos6Git +, nodes +, mpi +, tampiGit , gitBranch ? "master" , gitURL ? "ssh://git@bscpm03.bsc.es/rarias/bench6.git" }: @@ -14,11 +18,7 @@ stdenv.mkDerivation rec { ref = gitBranch; }; - buildInputs = [ clangOmpss2 ]; - - preInstall = '' - export DESTDIR=$out - ''; + buildInputs = [ clangOmpss2Git nanos6Git nodes mpi tampiGit ]; hardeningDisable = [ "all" ]; dontStrip = true; From 9a500dd3d6a9da27b599b4745e36da6fb7a1a578 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 19 May 2023 18:32:35 +0200 Subject: [PATCH 793/987] Update Nanos6 git with ./autogen.sh --- bsc/nanos6/git.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/bsc/nanos6/git.nix b/bsc/nanos6/git.nix index 1e2cc09..b512eff 100644 --- a/bsc/nanos6/git.nix +++ b/bsc/nanos6/git.nix @@ -10,7 +10,6 @@ , hwloc , papi , boost -, autoreconfHook , enableJemalloc ? true , jemalloc ? null , cachelineBytes ? 64 @@ -32,6 +31,7 @@ stdenv.mkDerivation rec { prePatch = '' patchShebangs scripts/generate_config.sh + patchShebangs autogen.sh ''; enableParallelBuilding = true; @@ -41,9 +41,10 @@ stdenv.mkDerivation rec { export CACHELINE_WIDTH=${toString cachelineBytes} export NANOS6_GIT_VERSION=${src.rev} export NANOS6_GIT_BRANCH=${gitBranch} + ./autogen.sh ''; - configureFlags = [] + configureFlags = [ "--with-hwloc=${hwloc}" ] ++ (optional enableJemalloc "--with-jemalloc=${jemalloc}") ++ (optional enableGlibcxxDebug "CXXFLAGS=-D_GLIBCXX_DEBUG"); @@ -52,7 +53,6 @@ stdenv.mkDerivation rec { hardeningDisable = [ "all" ]; buildInputs = [ - autoreconfHook autoconf automake libtool From 1d788aeff2f3f88c76e4989e285fb95ce72f412a Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 19 May 2023 18:33:37 +0200 Subject: [PATCH 794/987] Update bench6 to use cmake --- bsc/bench6/default.nix | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/bsc/bench6/default.nix b/bsc/bench6/default.nix index 24daf32..fcd49d4 100644 --- a/bsc/bench6/default.nix +++ b/bsc/bench6/default.nix @@ -1,5 +1,6 @@ { stdenv +, cmake , clangOmpss2Git , nanos6Git , nodes @@ -18,8 +19,13 @@ stdenv.mkDerivation rec { ref = gitBranch; }; - buildInputs = [ clangOmpss2Git nanos6Git nodes mpi tampiGit ]; + buildInputs = [ cmake clangOmpss2Git nanos6Git nodes mpi tampiGit ]; + enableParallelBuilding = false; + cmakeFlags = [ + "-DCMAKE_C_COMPILER=clang" + "-DCMAKE_CXX_COMPILER=clang++" + ]; hardeningDisable = [ "all" ]; dontStrip = true; } From 46a3465e783a59c578bc75a898337dbe1a13c248 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 19 May 2023 18:34:11 +0200 Subject: [PATCH 795/987] Build clang with a new LLVM Older LLVM 11 version produces a broken compiler, see: https://pm.bsc.es/gitlab/llvm-ompss/llvm-mono/-/issues/183 --- overlay.nix | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/overlay.nix b/overlay.nix index d6f07fa..e10f007 100644 --- a/overlay.nix +++ b/overlay.nix @@ -83,8 +83,8 @@ let gcc = appendPasstru self.gcc { CC = "gcc"; CXX = "g++"; }; # Last llvm release by default - llvmPackages = self.llvmPackages_11 // { - clang = appendPasstru self.llvmPackages_11.clang { + llvmPackages = self.llvmPackages_latest // { + clang = appendPasstru self.llvmPackages_latest.clang { CC = "clang"; CXX = "clang++"; }; }; @@ -105,12 +105,13 @@ let clangOmpss2 = appendPasstru ( callPackage ./bsc/llvm-ompss2/default.nix { - llvmPackages = self.llvmPackages_latest; + llvmPackages = bsc.llvmPackages; clangOmpss2Unwrapped = bsc.clangOmpss2Unwrapped; }) { CC = "clang"; CXX = "clang++"; }; clangOmpss2Git = appendPasstru ( callPackage ./bsc/llvm-ompss2/default.nix { + llvmPackages = bsc.llvmPackages; clangOmpss2Unwrapped = bsc.clangOmpss2UnwrappedGit; }) { CC = "clang"; CXX = "clang++"; }; From a34e61933369ecd7f2c849fd5cab5a549bc60be4 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 19 May 2023 18:52:32 +0200 Subject: [PATCH 796/987] Update Intel oneAPI --- bsc/intel-oneapi/2023.nix | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/bsc/intel-oneapi/2023.nix b/bsc/intel-oneapi/2023.nix index 7cb466b..a91230d 100644 --- a/bsc/intel-oneapi/2023.nix +++ b/bsc/intel-oneapi/2023.nix @@ -31,10 +31,10 @@ let v = { - hpckit = "2023.0.0"; - compiler = "2023.0.0"; - tbb = "2021.8.0"; - mpi = "2021.8.0"; + hpckit = "2023.1.0"; + compiler = "2023.1.0"; + tbb = "2021.9.0"; + mpi = "2021.9.0"; }; aptPackageIndex = stdenv.mkDerivation { @@ -43,11 +43,11 @@ let # Set the hashes to "" to fetch them (fetchurl { url = "https://apt.repos.intel.com/oneapi/dists/all/main/binary-amd64/Packages"; - sha256 = "sha256-HkjbKzEDsXaBjZk2NdrGRMZsLkhT5YFJrjEgh2MN2zo="; + sha256 = "sha256-ZaXaicvmuyRB84LYK1mDYWwpdNW+ZHQCV072SuH4EFA="; }) (fetchurl { url = "https://apt.repos.intel.com/oneapi/dists/all/main/binary-all/Packages"; - sha256 = "sha256-fLRjnmxaabQAi3XcMcyNKdQcaQy2yvupDj4PAZ8MUlU="; + sha256 = "sha256-6vuioA0Hl34/AUuBbRYGu3lt+rccqJdpipXQWZ4Nfp8="; }) ]; phases = [ "installPhase" ]; @@ -465,7 +465,7 @@ let in { - inherit aptPackages; + inherit aptPackages aptPackageIndex; icx = icx-wrapper; icc = icc-wrapper; ifort = ifort-wrapper; From 3f4f3e1105d95cd848c93f2344ad0636038ae26c Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 22 May 2023 12:30:23 +0200 Subject: [PATCH 797/987] Export proper OmpSs-2 runtime home variable --- bsc/llvm-ompss2/default.nix | 14 ++++++++++---- overlay.nix | 4 +++- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/bsc/llvm-ompss2/default.nix b/bsc/llvm-ompss2/default.nix index f57c450..c613a10 100644 --- a/bsc/llvm-ompss2/default.nix +++ b/bsc/llvm-ompss2/default.nix @@ -1,7 +1,7 @@ { stdenv , gcc -, nanos6 +, rt , clangOmpss2Unwrapped , wrapCCWith , llvmPackages @@ -20,8 +20,14 @@ let bintools = bintools-unwrapped; }; + homevar = if rt.pname == "nanos6" + then + "NANOS6_HOME" + else + "NODES_HOME"; + targetConfig = stdenv.targetPlatform.config; - inherit gcc nanos6; + inherit gcc; cc = clangOmpss2Unwrapped; in wrapCCWith { inherit cc bintools; @@ -40,8 +46,8 @@ in wrapCCWith { echo "--gcc-toolchain=${gcc}" >> $out/nix-support/cc-cflags - echo "# Hack to include NANOS6_HOME" >> $out/nix-support/setup-hook - echo "export NANOS6_HOME=${nanos6}" >> $out/nix-support/setup-hook + # Setup NANOS6_HOME or NODES_HOME, based on the runtime. + echo "export ${homevar}=${rt}" >> $out/nix-support/setup-hook wrap clang++ $wrapper $ccPath/clang++ ''; diff --git a/overlay.nix b/overlay.nix index e10f007..7c9075f 100644 --- a/overlay.nix +++ b/overlay.nix @@ -105,12 +105,14 @@ let clangOmpss2 = appendPasstru ( callPackage ./bsc/llvm-ompss2/default.nix { + rt = bsc.nanos6; llvmPackages = bsc.llvmPackages; clangOmpss2Unwrapped = bsc.clangOmpss2Unwrapped; }) { CC = "clang"; CXX = "clang++"; }; clangOmpss2Git = appendPasstru ( callPackage ./bsc/llvm-ompss2/default.nix { + rt = bsc.nanos6; llvmPackages = bsc.llvmPackages; clangOmpss2Unwrapped = bsc.clangOmpss2UnwrappedGit; }) { CC = "clang"; CXX = "clang++"; }; @@ -121,7 +123,7 @@ let }; clangNodes = bsc.clangOmpss2.override { - nanos6 = bsc.nodes; + rt = bsc.nodes; }; stdenvClangNodes = self.stdenv.override { cc = bsc.clangNodes; From b8f7c16d1cb90c1a367b8a908b2c5d53fd80cc79 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 22 May 2023 13:54:41 +0200 Subject: [PATCH 798/987] Use clang from git for NODES --- overlay.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/overlay.nix b/overlay.nix index 7c9075f..4247be6 100644 --- a/overlay.nix +++ b/overlay.nix @@ -118,11 +118,11 @@ let }) { CC = "clang"; CXX = "clang++"; }; stdenvClangOmpss2 = self.stdenv.override { - cc = bsc.clangOmpss2; + cc = bsc.clangOmpss2Git; allowedRequisites = null; }; - clangNodes = bsc.clangOmpss2.override { + clangNodes = bsc.clangOmpss2Git.override { rt = bsc.nodes; }; stdenvClangNodes = self.stdenv.override { From bb6129a77e4d63d666053664c91a89feeb357f79 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 22 May 2023 13:55:23 +0200 Subject: [PATCH 799/987] Reduce ompss2 test verbosity --- test/compilers/ompss2.nix | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/test/compilers/ompss2.nix b/test/compilers/ompss2.nix index 7041f37..2246201 100644 --- a/test/compilers/ompss2.nix +++ b/test/compilers/ompss2.nix @@ -23,19 +23,22 @@ stdenv.mkDerivation rec { dontUnpack = true; dontConfigure = true; hardeningDisable = [ "all" ]; - NIX_DEBUG = 1; + #NIX_DEBUG = 1; buildInputs = [ strace gdb ]; # NODES requires access to /sys/devices to request NUMA information. It will # fail to run otherwise, so we disable the sandbox for this test. __noChroot = true; buildPhase = '' - set -x - echo CC=$CC - $CC -v + #set -x + #$CC -v cp ${task_c} task.c + + echo CC=$CC + echo NANOS6_HOME=$NANOS6_HOME + echo NODES_HOME=$NODES_HOME cat task.c - $CC -v -fompss-2 task.c -o task + $CC -fompss-2 task.c -o task #strace -ff -e trace=open,openat -s9999999 ./task LD_DEBUG=libs ./task #gdb -batch -ex "run" -ex "bt" ./task From 5553ee79a9fe22314ec3b1ece577339797b1a524 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 22 May 2023 19:30:15 +0200 Subject: [PATCH 800/987] Populate OMPSS2_RUNTIME in clang --- bsc/llvm-ompss2/default.nix | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/bsc/llvm-ompss2/default.nix b/bsc/llvm-ompss2/default.nix index c613a10..2b4e3d1 100644 --- a/bsc/llvm-ompss2/default.nix +++ b/bsc/llvm-ompss2/default.nix @@ -20,11 +20,8 @@ let bintools = bintools-unwrapped; }; - homevar = if rt.pname == "nanos6" - then - "NANOS6_HOME" - else - "NODES_HOME"; + homevar = if rt.pname == "nanos6" then "NANOS6_HOME" else "NODES_HOME"; + rtname = if rt.pname == "nanos6" then "libnanos6" else "libnodes"; targetConfig = stdenv.targetPlatform.config; inherit gcc; @@ -48,6 +45,7 @@ in wrapCCWith { # Setup NANOS6_HOME or NODES_HOME, based on the runtime. echo "export ${homevar}=${rt}" >> $out/nix-support/setup-hook + echo "export OMPSS2_RUNTIME=${rtname}" >> $out/nix-support/setup-hook wrap clang++ $wrapper $ccPath/clang++ ''; From 933cd1e3c7e0bc89ed2a721a8f2f8b9e46a8a154 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 22 May 2023 19:30:40 +0200 Subject: [PATCH 801/987] Show commands being executed in clang test --- test/compilers/ompss2.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/compilers/ompss2.nix b/test/compilers/ompss2.nix index 2246201..4ac142d 100644 --- a/test/compilers/ompss2.nix +++ b/test/compilers/ompss2.nix @@ -29,7 +29,7 @@ stdenv.mkDerivation rec { # fail to run otherwise, so we disable the sandbox for this test. __noChroot = true; buildPhase = '' - #set -x + set -x #$CC -v cp ${task_c} task.c From df32aa62d06e9777c2f563877dc59d604393e15e Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 30 May 2023 09:41:17 +0200 Subject: [PATCH 802/987] Update nanos6 to last release --- bsc/nanos6/default.nix | 13 +++++----- bsc/nanos6/fpic.patch | 57 ------------------------------------------ 2 files changed, 7 insertions(+), 63 deletions(-) delete mode 100644 bsc/nanos6/fpic.patch diff --git a/bsc/nanos6/default.nix b/bsc/nanos6/default.nix index faf2767..eeb7925 100644 --- a/bsc/nanos6/default.nix +++ b/bsc/nanos6/default.nix @@ -4,7 +4,6 @@ , fetchFromGitHub , automake , autoconf -, autoreconfHook , libtool , pkg-config , numactl @@ -24,28 +23,31 @@ with lib; stdenv.mkDerivation rec { pname = "nanos6"; - version = "2.8"; + version = "3.0"; src = fetchFromGitHub { owner = "bsc-pm"; repo = "nanos6"; rev = "version-${version}"; - sha256 = "YGj/cubqXaNt4lR2CnSU+nXvi+SdB56EXLhfN/ufjHs="; + sha256 = "sha256-XEG8/8yQv5/OdSyK9Kig8xuWe6mTZ1eQKhXx3fXlQ1Y="; }; - patches = [ ./fpic.patch ]; - prePatch = '' patchShebangs scripts/generate_config.sh + patchShebangs autogen.sh ''; enableParallelBuilding = true; preConfigure = '' export CACHELINE_WIDTH=${toString cachelineBytes} + ./autogen.sh ''; configureFlags = [ + "--with-hwloc=${hwloc}" + "--disable-all-instrumentations" + "--enable-ovni-instrumentation" "--with-ovni=${ovni}" ] ++ (optional enableJemalloc "--with-jemalloc=${jemalloc}") ++ @@ -59,7 +61,6 @@ stdenv.mkDerivation rec { dontStrip = true; buildInputs = [ - autoreconfHook autoconf automake libtool diff --git a/bsc/nanos6/fpic.patch b/bsc/nanos6/fpic.patch deleted file mode 100644 index 34e2cdf..0000000 --- a/bsc/nanos6/fpic.patch +++ /dev/null @@ -1,57 +0,0 @@ -diff --git a/Makefile.am b/Makefile.am -index 5718226456dcf0e422200d1289a14816f51bd39d..c4d49a80f3899b6439184837555c03337b832018 100755 ---- a/Makefile.am -+++ b/Makefile.am -@@ -115,7 +115,7 @@ lib_LTLIBRARIES = \ - libnanos6-optimized-discrete-verbose.la \ - libnanos6-optimized-regions-verbose.la - --noinst_LIBRARIES = libnanos6-main-wrapper.a libnanos6-library-mode.a -+noinst_LTLIBRARIES = libnanos6-main-wrapper.la libnanos6-library-mode.la - lib_OBJECTS = nanos6-main-wrapper.o nanos6-library-mode.o - - -@@ -139,7 +139,7 @@ if ANDROID - main_interception += loader/intercept-main-android.c - endif - --libnanos6_main_wrapper_a_SOURCES = \ -+libnanos6_main_wrapper_la_SOURCES = \ - $(main_interception) \ - loader/api-versions.c \ - loader/api-versions.h \ -@@ -150,25 +150,27 @@ libnanos6_main_wrapper_a_SOURCES = \ - loader/main-wrapper.c \ - loader/main-wrapper.h - --libnanos6_main_wrapper_a_CPPFLAGS = $(CUDA_CFLAGS) $(MPI_CXXFLAGS) $(MCMODEL_FLAGS) -+libnanos6_main_wrapper_la_CPPFLAGS = $(CUDA_CFLAGS) $(MPI_CXXFLAGS) $(MCMODEL_FLAGS) -+libnanos6_main_wrapper_la_LDFLAGS = -static - - --nanos6-main-wrapper.o: libnanos6-main-wrapper.a -- $(AM_V_LD)$(LD) -r --whole-archive libnanos6-main-wrapper.a -o nanos6-main-wrapper.o -+nanos6-main-wrapper.o: libnanos6-main-wrapper.la -+ $(AM_V_LD)$(LD) -r --whole-archive $(top_builddir)/.libs/libnanos6-main-wrapper.a -o nanos6-main-wrapper.o - - --libnanos6_library_mode_a_SOURCES = \ -+libnanos6_library_mode_la_SOURCES = \ - $(library_interception) \ - loader/api-versions.c \ - loader/api-versions.h \ - loader/device_strings.c \ - loader/library-mode-init.c - --libnanos6_library_mode_a_CPPFLAGS = $(CUDA_CFLAGS) $(MPI_CXXFLAGS) $(MCMODEL_FLAGS) -+libnanos6_library_mode_la_CPPFLAGS = $(CUDA_CFLAGS) $(MPI_CXXFLAGS) $(MCMODEL_FLAGS) -+libnanos6_library_mode_la_LDFLAGS = -static - - --nanos6-library-mode.o: libnanos6-library-mode.a -- $(AM_V_LD)$(LD) -r --whole-archive libnanos6-library-mode.a -o nanos6-library-mode.o -+nanos6-library-mode.o: libnanos6-library-mode.la -+ $(AM_V_LD)$(LD) -r --whole-archive $(top_builddir)/.libs/libnanos6-library-mode.a -o nanos6-library-mode.o - - - # From 3a249c5d88726c4fd32a50bf63160e3ab8298ef9 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 30 May 2023 14:51:36 +0200 Subject: [PATCH 803/987] Update nanos6 and merge release with git --- bsc/nanos6/clock-monotonic.patch | 21 ------ bsc/nanos6/default.nix | 107 ++++++++++++++++++------------- bsc/nanos6/git.nix | 64 ------------------ overlay.nix | 5 +- 4 files changed, 67 insertions(+), 130 deletions(-) delete mode 100644 bsc/nanos6/clock-monotonic.patch delete mode 100644 bsc/nanos6/git.nix diff --git a/bsc/nanos6/clock-monotonic.patch b/bsc/nanos6/clock-monotonic.patch deleted file mode 100644 index b05b17b..0000000 --- a/bsc/nanos6/clock-monotonic.patch +++ /dev/null @@ -1,21 +0,0 @@ -diff --git a/src/instrument/ctf/ctfapi/CTFClock.hpp b/src/instrument/ctf/ctfapi/CTFClock.hpp -index 7df821c9..27cf269b 100644 ---- a/src/instrument/ctf/ctfapi/CTFClock.hpp -+++ b/src/instrument/ctf/ctfapi/CTFClock.hpp -@@ -9,13 +9,9 @@ - - #include - --// We prefer CLOCK_MONOTONIC_RAW to prevent dynamic NTF time adjustments. --// However, if the system does not support it, we fall back to CLOCK_MONOTONIC -- --#ifdef CLOCK_MONOTONIC_RAW --#define CTF_CLOCK CLOCK_MONOTONIC_RAW --#else -+// Always use the CLOCK_MONOTONIC clock as it is drift-corrected by NTP, -+// and is the most reliable to compensate changes the oscillator -+// frequency. It is not affected by time jumps. - #define CTF_CLOCK CLOCK_MONOTONIC --#endif - - #endif // CTF_CLOCK_HPP diff --git a/bsc/nanos6/default.nix b/bsc/nanos6/default.nix index eeb7925..de0d8e4 100644 --- a/bsc/nanos6/default.nix +++ b/bsc/nanos6/default.nix @@ -15,61 +15,82 @@ , jemalloc ? null , cachelineBytes ? 64 , enableGlibcxxDebug ? false +, useGit ? false +, gitUrl ? "ssh://git@bscpm03.bsc.es/nanos6/nanos6" +, gitBranch ? "master" +, gitCommit ? "58712e669ac02f721fb841247361ea54f53a6a47" }: assert enableJemalloc -> (jemalloc != null); with lib; -stdenv.mkDerivation rec { - pname = "nanos6"; - version = "3.0"; - - src = fetchFromGitHub { - owner = "bsc-pm"; - repo = "nanos6"; - rev = "version-${version}"; - sha256 = "sha256-XEG8/8yQv5/OdSyK9Kig8xuWe6mTZ1eQKhXx3fXlQ1Y="; +let + release = rec { + version = "3.0"; + src = fetchFromGitHub { + owner = "bsc-pm"; + repo = "nanos6"; + rev = "version-${version}"; + sha256 = "sha256-XEG8/8yQv5/OdSyK9Kig8xuWe6mTZ1eQKhXx3fXlQ1Y="; + }; }; - prePatch = '' - patchShebangs scripts/generate_config.sh - patchShebangs autogen.sh - ''; + git = rec { + version = src.shortRev; + src = builtins.fetchGit { + url = gitUrl; + ref = gitBranch; + rev = gitCommit; + }; + }; - enableParallelBuilding = true; + source = if (useGit) then git else release; +in + stdenv.mkDerivation rec { + pname = "nanos6"; + inherit (source) src version; - preConfigure = '' - export CACHELINE_WIDTH=${toString cachelineBytes} - ./autogen.sh - ''; + prePatch = '' + patchShebangs scripts/generate_config.sh + patchShebangs autogen.sh + ''; - configureFlags = [ - "--with-hwloc=${hwloc}" - "--disable-all-instrumentations" - "--enable-ovni-instrumentation" - "--with-ovni=${ovni}" - ] ++ - (optional enableJemalloc "--with-jemalloc=${jemalloc}") ++ - (optional enableGlibcxxDebug "CXXFLAGS=-D_GLIBCXX_DEBUG"); + enableParallelBuilding = true; - # The "bindnow" flags are incompatible with ifunc resolution mechanism. We - # disable all by default, which includes bindnow. - hardeningDisable = [ "all" ]; + preConfigure = '' + export CACHELINE_WIDTH=${toString cachelineBytes} + ./autogen.sh + '' + lib.optionalString (useGit) '' + export NANOS6_GIT_VERSION=${src.rev} + export NANOS6_GIT_BRANCH=${gitBranch} + ''; - # Keep debug symbols in the verbose variant of the library - dontStrip = true; + configureFlags = [ + "--with-hwloc=${hwloc}" + "--disable-all-instrumentations" + "--enable-ovni-instrumentation" + "--with-ovni=${ovni}" + ] ++ + (optional enableJemalloc "--with-jemalloc=${jemalloc}") ++ + (optional enableGlibcxxDebug "CXXFLAGS=-D_GLIBCXX_DEBUG"); - buildInputs = [ - autoconf - automake - libtool - pkg-config - boost - numactl - hwloc - papi - ovni - ]; + # The "bindnow" flags are incompatible with ifunc resolution mechanism. We + # disable all by default, which includes bindnow. + hardeningDisable = [ "all" ]; -} + # Keep debug symbols in the verbose variant of the library + dontStrip = true; + + buildInputs = [ + autoconf + automake + libtool + pkg-config + boost + numactl + hwloc + papi + ovni + ]; + } diff --git a/bsc/nanos6/git.nix b/bsc/nanos6/git.nix deleted file mode 100644 index b512eff..0000000 --- a/bsc/nanos6/git.nix +++ /dev/null @@ -1,64 +0,0 @@ -{ - stdenv -, lib -, automake -, autoconf -, libtool -, pkg-config -, perl -, numactl -, hwloc -, papi -, boost -, enableJemalloc ? true -, jemalloc ? null -, cachelineBytes ? 64 -, enableGlibcxxDebug ? false -, gitUrl ? "ssh://git@bscpm03.bsc.es/nanos6/nanos6" -, gitBranch ? "master" -}: - -with lib; - -stdenv.mkDerivation rec { - pname = "nanos6"; - version = "${src.shortRev}"; - - src = builtins.fetchGit { - url = gitUrl; - ref = gitBranch; - }; - - prePatch = '' - patchShebangs scripts/generate_config.sh - patchShebangs autogen.sh - ''; - - enableParallelBuilding = true; - dontStrip = true; - - preConfigure = '' - export CACHELINE_WIDTH=${toString cachelineBytes} - export NANOS6_GIT_VERSION=${src.rev} - export NANOS6_GIT_BRANCH=${gitBranch} - ./autogen.sh - ''; - - configureFlags = [ "--with-hwloc=${hwloc}" ] - ++ (optional enableJemalloc "--with-jemalloc=${jemalloc}") - ++ (optional enableGlibcxxDebug "CXXFLAGS=-D_GLIBCXX_DEBUG"); - - # The "bindnow" flags are incompatible with ifunc resolution mechanism. We - # disable all by default, which includes bindnow. - hardeningDisable = [ "all" ]; - - buildInputs = [ - autoconf - automake - libtool - pkg-config - boost - numactl - hwloc - papi ]; -} diff --git a/overlay.nix b/overlay.nix index 4247be6..d4a0aae 100644 --- a/overlay.nix +++ b/overlay.nix @@ -118,13 +118,14 @@ let }) { CC = "clang"; CXX = "clang++"; }; stdenvClangOmpss2 = self.stdenv.override { - cc = bsc.clangOmpss2Git; + cc = bsc.clangOmpss2; allowedRequisites = null; }; clangNodes = bsc.clangOmpss2Git.override { rt = bsc.nodes; }; + stdenvClangNodes = self.stdenv.override { cc = bsc.clangNodes; allowedRequisites = null; @@ -142,7 +143,7 @@ let # ================================================================= nanos6 = bsc.nanos6Release; nanos6Release = callPackage ./bsc/nanos6/default.nix { }; - nanos6Git = callPackage ./bsc/nanos6/git.nix { }; + nanos6Git = callPackage ./bsc/nanos6/default.nix { useGit = true; }; nanos6-icx = bsc.nanos6.override { stdenv = bsc.intel2023.stdenv; }; From 0e176cb2a954779c501892ec091958d1583ac5c5 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 30 May 2023 14:52:42 +0200 Subject: [PATCH 804/987] Update OmpSs-2 clang to 2023.05 --- bsc/llvm-ompss2/clang.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/bsc/llvm-ompss2/clang.nix b/bsc/llvm-ompss2/clang.nix index 7573204..7d53fb2 100644 --- a/bsc/llvm-ompss2/clang.nix +++ b/bsc/llvm-ompss2/clang.nix @@ -14,14 +14,14 @@ }: stdenv.mkDerivation rec { - version = "2022.11"; + version = "2023.05"; pname = "clang-ompss2"; src = fetchFromGitHub { owner = "bsc-pm"; repo = "llvm"; rev = "refs/tags/github-release-${version}"; - sha256 = "i1+ewQ3Xe+27I/s294TGaEQC1McjMtywZ7vO64eGnus="; + sha256 = "sha256-AWkIfF3ZuYqbwkXt5L5cs+obl7aXuyYGVOVHMauD4Wk="; }; enableParallelBuilding = true; @@ -67,7 +67,7 @@ stdenv.mkDerivation rec { "-DCMAKE_CXX_FLAGS_DEBUG=-g -ggnu-pubnames" "-DCMAKE_EXE_LINKER_FLAGS_DEBUG=-Wl,-gdb-index" "-DLLVM_LIT_ARGS=-sv --xunit-xml-output=xunit.xml" - "-DLLVM_ENABLE_PROJECTS=clang;openmp;compiler-rt;flang;lld" + "-DLLVM_ENABLE_PROJECTS=clang;openmp;compiler-rt;lld" "-DLLVM_ENABLE_ASSERTIONS=${enableAssertions}" "-DLLVM_INSTALL_TOOLCHAIN_ONLY=ON" "-DCMAKE_INSTALL_BINDIR=bin" From d8c19eb4b42d6f8a92c4f642b47c544ee3d22d4b Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 30 May 2023 15:31:12 +0200 Subject: [PATCH 805/987] Add nos-v release by default --- bsc/nosv/default.nix | 60 +++++++++++++++++++++++++++----------------- 1 file changed, 37 insertions(+), 23 deletions(-) diff --git a/bsc/nosv/default.nix b/bsc/nosv/default.nix index 2a9bec1..1c4a80c 100644 --- a/bsc/nosv/default.nix +++ b/bsc/nosv/default.nix @@ -2,39 +2,53 @@ stdenv , lib , autoreconfHook +, fetchFromGitHub , pkgconfig , numactl , hwloc , ovni ? null -, enableOvni ? false +, useGit ? false , gitURL ? "git@gitlab-internal.bsc.es:nos-v/nos-v.git" , gitBranch ? "master" -, gitCommit ? null +, gitCommit ? "0edc81d065f20d3d2f8acf94df1d2640dc430d5e" }: with lib; -stdenv.mkDerivation rec { - pname = "nosv"; - version = "${src.shortRev}"; +let + release = rec { + version = "1.0.0"; + src = fetchFromGitHub { + owner = "bsc-pm"; + repo = "nos-v"; + rev = "${version}"; + sha256 = "sha256-1Dsxd7OQYxnPvFnpGgCTlG9wbxV8vQpzvSy+cdPD8ro="; + }; + }; - inherit gitURL gitCommit gitBranch; - - src = builtins.fetchGit ({ - url = gitURL; + git = rec { + version = src.shortRev; + src = builtins.fetchGit { + url = gitUrl; ref = gitBranch; - } // (optionalAttrs (gitCommit != null) { rev = gitCommit; }) - ); + rev = gitCommit; + }; + }; - hardeningDisable = [ "all" ]; - dontStrip = true; - - configureFlags = optional (enableOvni) "--with-ovni=${ovni}"; - - buildInputs = [ - autoreconfHook - pkgconfig - numactl - hwloc - ] ++ (optional (enableOvni) ovni); -} + source = if (useGit) then git else release; +in + stdenv.mkDerivation rec { + pname = "nosv"; + inherit (source) src version; + inherit gitURL gitCommit gitBranch; + hardeningDisable = [ "all" ]; + dontStrip = true; + configureFlags = [ "--with-ovni=${ovni}" ]; + buildInputs = [ + autoreconfHook + pkgconfig + numactl + hwloc + ovni + ]; + } From 1da216bab5fee8c6f2894565d5166e59de591ae1 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 30 May 2023 15:31:56 +0200 Subject: [PATCH 806/987] Add nodes release and git version --- bsc/nodes/default.nix | 80 +++++++++++++++++++++++++++++++++++++++++++ bsc/nodes/git.nix | 60 -------------------------------- overlay.nix | 6 ++-- 3 files changed, 84 insertions(+), 62 deletions(-) create mode 100644 bsc/nodes/default.nix delete mode 100644 bsc/nodes/git.nix diff --git a/bsc/nodes/default.nix b/bsc/nodes/default.nix new file mode 100644 index 0000000..83fd3f3 --- /dev/null +++ b/bsc/nodes/default.nix @@ -0,0 +1,80 @@ +{ + stdenv +, lib +, automake +, autoconf +, libtool +, fetchFromGitHub +, pkg-config +, perl +, numactl +, hwloc +, papi +, boost +, autoreconfHook +, jemalloc +, enableOvni ? false +, ovni ? null +, nosv +, useGit ? false +, gitUrl ? "ssh://git@gitlab-internal.bsc.es/nos-v/nodes.git" +, gitBranch ? "master" +, gitCommit ? "c1094418a0a4dbfe78fa38b3f44741bd36d56e51" +}: + +with lib; + +let + release = rec { + version = "1.0"; + src = fetchFromGitHub { + owner = "bsc-pm"; + repo = "nodes"; + rev = "version-${version}"; + sha256 = "sha256-UqqvbAqF512qsHsEE24WNSxnV1wCGAXuzc7FkzQxu10="; + }; + }; + + git = rec { + version = src.shortRev; + src = builtins.fetchGit { + url = gitUrl; + ref = gitBranch; + rev = gitCommit; + }; + }; + + source = if (useGit) then git else release; +in + stdenv.mkDerivation rec { + pname = "nodes"; + inherit (source) src version; + + enableParallelBuilding = true; + dontStrip = true; + + configureFlags = [ + "--with-jemalloc=${jemalloc}" + "--with-nosv=${nosv}" + ] ++ + (optional enableOvni "--with-ovni=${ovni}"); + + # The "bindnow" flags are incompatible with ifunc resolution mechanism. We + # disable all by default, which includes bindnow. + hardeningDisable = [ "all" ]; + + buildInputs = [ + autoreconfHook + autoconf + automake + libtool + pkg-config + boost + numactl + hwloc + papi + jemalloc + nosv + ] ++ + (optional enableOvni ovni); + } diff --git a/bsc/nodes/git.nix b/bsc/nodes/git.nix deleted file mode 100644 index a19ae3f..0000000 --- a/bsc/nodes/git.nix +++ /dev/null @@ -1,60 +0,0 @@ -{ - stdenv -, lib -, automake -, autoconf -, libtool -, pkg-config -, perl -, numactl -, hwloc -, papi -, boost -, autoreconfHook -, jemalloc -, enableOvni ? false -, ovni ? null -, nosv -, gitUrl ? "ssh://git@gitlab-internal.bsc.es/nos-v/nodes.git" -, gitBranch ? "master" -}: - -with lib; - -stdenv.mkDerivation rec { - pname = "nodes"; - version = "${src.shortRev}"; - - src = builtins.fetchGit { - url = gitUrl; - ref = gitBranch; - }; - - enableParallelBuilding = true; - dontStrip = true; - - configureFlags = [ - "--with-jemalloc=${jemalloc}" - "--with-nosv=${nosv}" - ] ++ - (optional enableOvni "--with-ovni=${ovni}"); - - # The "bindnow" flags are incompatible with ifunc resolution mechanism. We - # disable all by default, which includes bindnow. - hardeningDisable = [ "all" ]; - - buildInputs = [ - autoreconfHook - autoconf - automake - libtool - pkg-config - boost - numactl - hwloc - papi - jemalloc - nosv - ] ++ - (optional enableOvni ovni); -} diff --git a/overlay.nix b/overlay.nix index d4a0aae..241d7f1 100644 --- a/overlay.nix +++ b/overlay.nix @@ -122,7 +122,7 @@ let allowedRequisites = null; }; - clangNodes = bsc.clangOmpss2Git.override { + clangNodes = bsc.clangOmpss2.override { rt = bsc.nodes; }; @@ -171,7 +171,9 @@ let hardeningDisable = [ "all" ]; }); - nodes = callPackage ./bsc/nodes/git.nix { }; + nodes = bsc.nodesRelease; + nodesRelease = callPackage ./bsc/nodes/default.nix { }; + nodesGit = callPackage ./bsc/nodes/default.nix { useGit = true; }; nodesWithOvni = bsc.nodes.override { enableOvni = true; }; # ================================================================= From 11e897c10a879145a39e7fe97c55dd4c72e81c38 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 30 May 2023 16:14:04 +0200 Subject: [PATCH 807/987] Always build nodes with ovni --- bsc/nodes/default.nix | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/bsc/nodes/default.nix b/bsc/nodes/default.nix index 83fd3f3..b5f60f7 100644 --- a/bsc/nodes/default.nix +++ b/bsc/nodes/default.nix @@ -13,8 +13,7 @@ , boost , autoreconfHook , jemalloc -, enableOvni ? false -, ovni ? null +, ovni , nosv , useGit ? false , gitUrl ? "ssh://git@gitlab-internal.bsc.es/nos-v/nodes.git" @@ -56,8 +55,8 @@ in configureFlags = [ "--with-jemalloc=${jemalloc}" "--with-nosv=${nosv}" - ] ++ - (optional enableOvni "--with-ovni=${ovni}"); + "--with-ovni=${ovni}" + ]; # The "bindnow" flags are incompatible with ifunc resolution mechanism. We # disable all by default, which includes bindnow. @@ -75,6 +74,6 @@ in papi jemalloc nosv - ] ++ - (optional enableOvni ovni); + ovni + ]; } From feb39f404a64680a340eaa7f764bdbacd00a5b85 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 30 May 2023 16:23:39 +0200 Subject: [PATCH 808/987] Remove git attributes from derivation in nosv --- bsc/nosv/default.nix | 1 - 1 file changed, 1 deletion(-) diff --git a/bsc/nosv/default.nix b/bsc/nosv/default.nix index 1c4a80c..71ca91d 100644 --- a/bsc/nosv/default.nix +++ b/bsc/nosv/default.nix @@ -40,7 +40,6 @@ in stdenv.mkDerivation rec { pname = "nosv"; inherit (source) src version; - inherit gitURL gitCommit gitBranch; hardeningDisable = [ "all" ]; dontStrip = true; configureFlags = [ "--with-ovni=${ovni}" ]; From f5dcaf831b03b14477bcff31a5c8440466e97d45 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 30 May 2023 16:44:39 +0200 Subject: [PATCH 809/987] Update ovni to release and add useGit option --- bsc/ovni/default.nix | 48 ++++++++++++++++++++++++++++---------------- overlay.nix | 4 ---- 2 files changed, 31 insertions(+), 21 deletions(-) diff --git a/bsc/ovni/default.nix b/bsc/ovni/default.nix index 1f1654b..49fc847 100644 --- a/bsc/ovni/default.nix +++ b/bsc/ovni/default.nix @@ -3,28 +3,42 @@ , lib , cmake , mpi +, fetchFromGitHub +, useGit ? false , gitBranch ? "master" , gitURL ? "ssh://git@bscpm03.bsc.es/rarias/ovni.git" -, gitCommit ? null -# By default use debug -, enableDebug ? true +, gitCommit ? "d0a47783f20f8b177a48418966dae45454193a6a" +, enableDebug ? false }: with lib; -stdenv.mkDerivation rec { - pname = "ovni"; - version = "${src.shortRev}"; +let + release = rec { + version = "1.2.0"; + src = fetchFromGitHub { + owner = "bsc-pm"; + repo = "ovni"; + rev = "${version}"; + sha256 = "sha256-J6eC62RT/0CHN7IXJuIw1c9GBkjvVEyh0HjIF7uG0FM="; + }; + }; - buildInputs = [ cmake mpi ]; + git = rec { + version = src.shortRev; + src = builtins.fetchGit { + url = gitUrl; + ref = gitBranch; + rev = gitCommit; + }; + }; - cmakeBuildType = if (enableDebug) then "Debug" else "Release"; - dontStrip = true; - - src = builtins.fetchGit ({ - url = gitURL; - ref = gitBranch; - } // optionalAttrs (gitCommit != null) ({ - rev = gitCommit; - })); -} + source = if (useGit) then git else release; +in + stdenv.mkDerivation rec { + pname = "ovni"; + inherit (source) src version; + buildInputs = [ cmake mpi ]; + cmakeBuildType = if (enableDebug) then "Debug" else "Release"; + dontStrip = true; + } diff --git a/overlay.nix b/overlay.nix index 241d7f1..0f948c2 100644 --- a/overlay.nix +++ b/overlay.nix @@ -260,10 +260,6 @@ let cn6 = callPackage ./bsc/cn6/default.nix { }; ovni = callPackage ./bsc/ovni/default.nix { }; - ovniKernel = callPackage ./bsc/ovni/default.nix { - gitBranch = "kernel-context-switch"; - gitCommit = null; - }; # ================================================================= # MN4 specific From e23392fccd9025c68327a26240dbd8d3e9bbbc70 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 16 Jun 2023 15:31:58 +0200 Subject: [PATCH 810/987] Set install dir variable for Intel MPI --- bsc/intel-oneapi/2023.nix | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/bsc/intel-oneapi/2023.nix b/bsc/intel-oneapi/2023.nix index a91230d..be90a3a 100644 --- a/bsc/intel-oneapi/2023.nix +++ b/bsc/intel-oneapi/2023.nix @@ -141,6 +141,12 @@ let rsync -a --exclude IMB-MPI1-GPU bin/ $out/bin/ popd ''; + preFixup = '' + for i in $out/bin/mpi* ; do + echo "Fixing paths in $i" + sed -i "s:I_MPI_SUBSTITUTE_INSTALLDIR:$out:g" "$i" + done + ''; }; intel-tbb = stdenv.mkDerivation rec { From ce5577f14eee72d28142407d7ba6ef7d841c960d Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 16 Jun 2023 15:32:17 +0200 Subject: [PATCH 811/987] Export intel-mpi from oneapi --- bsc/intel-oneapi/2023.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bsc/intel-oneapi/2023.nix b/bsc/intel-oneapi/2023.nix index be90a3a..f9de097 100644 --- a/bsc/intel-oneapi/2023.nix +++ b/bsc/intel-oneapi/2023.nix @@ -471,7 +471,7 @@ let in { - inherit aptPackages aptPackageIndex; + inherit aptPackages aptPackageIndex intel-mpi; icx = icx-wrapper; icc = icc-wrapper; ifort = ifort-wrapper; From aad2c276aa82a1dd35b8429ee4930ffe849b6865 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 16 Jun 2023 15:32:49 +0200 Subject: [PATCH 812/987] Update intel mpi to 2021.9 --- overlay.nix | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/overlay.nix b/overlay.nix index 0f948c2..4a2b7ee 100644 --- a/overlay.nix +++ b/overlay.nix @@ -205,10 +205,11 @@ let hardeningDisable = [ "all" ]; }); - # Default Intel MPI version is 2019 (the last one) - impi = bsc.intelMpi; - intelMpi = bsc.intelMpi2019; - intelMpi2019 = callPackage ./bsc/intel-mpi/default.nix { }; + impi = bsc.intel-mpi; + # The version of MPI for 2023 is labeled 2021.9 ... + intel-mpi = bsc.intel-oneapi-2023.intel-mpi; + # Old releases + intel-mpi-2019 = callPackage ./bsc/intel-mpi/default.nix { }; # OpenMPI openmpi = bsc.openmpi-mn4; From e7647f1d999b4859a70ca9963032ef5eb3b8aa21 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 16 Jun 2023 15:33:39 +0200 Subject: [PATCH 813/987] Add pmix 4 --- overlay.nix | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/overlay.nix b/overlay.nix index 4a2b7ee..0f054e5 100644 --- a/overlay.nix +++ b/overlay.nix @@ -276,6 +276,29 @@ let pmix = bsc.pmix2; }; + pmix4 = + let + libevent-all = with final; symlinkJoin { + name = "${libevent.name}-all"; + paths = [ libevent.dev libevent.out ]; + }; + in + prev.pmix.overrideAttrs (old: rec { + version = "4.2.3"; + # Don't use fetchFromGitHub as is not a release! + src = builtins.fetchTarball { + url = "https://github.com/openpmix/openpmix/releases/download/v${version}/pmix-${version}.tar.gz"; + sha256 = "sha256:1iakrjkgydjz2f17if4cpyk1ldjff2790x4z787zdbbdnisxhdz2"; + }; + configureFlags = [ + "--with-munge=${self.munge}" + "--with-hwloc=${self.hwloc.dev}" + ]; + # libevent is not working, so use libev + buildInputs = old.buildInputs ++ [ self.python3 libevent-all ]; + nativeBuildInputs = old.nativeBuildInputs ++ [ self.pkgconfig ]; + }); + slurm-16-05-8-1 = callPackage ./bsc/slurm/16.05.8.1/default.nix { hwloc = bsc.hwloc-1-11-6; }; From 080811fe9df19b32568e538294bf49dfd29a3e48 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 16 Jun 2023 15:50:03 +0200 Subject: [PATCH 814/987] Add missing lib in osu benchmarks --- bsc/osu/default.nix | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/bsc/osu/default.nix b/bsc/osu/default.nix index d8bf07f..4026a7d 100644 --- a/bsc/osu/default.nix +++ b/bsc/osu/default.nix @@ -1,7 +1,8 @@ { - stdenv, - fetchurl, - mpi + stdenv +, fetchurl +, mpi +, lib }: stdenv.mkDerivation rec { From b953fd4b2fdd90664be7394ddb80b4fe1a7e1384 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 16 Jun 2023 16:27:47 +0200 Subject: [PATCH 815/987] Update osu benchmarks to 7.1-1 --- bsc/osu/default.nix | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/bsc/osu/default.nix b/bsc/osu/default.nix index 4026a7d..1bb3f0c 100644 --- a/bsc/osu/default.nix +++ b/bsc/osu/default.nix @@ -6,12 +6,12 @@ }: stdenv.mkDerivation rec { - version = "5.7"; + version = "7.1-1"; name = "osu-micro-benchmarks-${version}"; src = fetchurl { - url = "http://mvapich.cse.ohio-state.edu/download/mvapich/osu-micro-benchmarks-${version}.tar.gz"; - sha256 = "1425ygxpk3kyy6ilh4f6qjsjdyx0gjjzs7ic1cb7zjmn1vhfnw0l"; + url = "https://mvapich.cse.ohio-state.edu/download/mvapich/osu-micro-benchmarks-${version}.tar.gz"; + sha256 = "sha256-hfTdi+HfMSVeIyhSdprluC6HpfsUvi+Ouhrp3o/+ORo="; }; doCheck = true; @@ -25,10 +25,9 @@ stdenv.mkDerivation rec { postInstall = '' mkdir -p $out/bin - cp $out/libexec/osu-micro-benchmarks/mpi/one-sided/* $out/bin/ - cp $out/libexec/osu-micro-benchmarks/mpi/collective/* $out/bin/ - cp $out/libexec/osu-micro-benchmarks/mpi/pt2pt/* $out/bin/ - cp $out/libexec/osu-micro-benchmarks/mpi/startup/* $out/bin/ + for f in $(find $out -executable -type f); do + ln -s "$f" $out/bin/$(basename "$f") + done ''; meta = { From 7f18deaf69b2167a3e4b28147e4f9b69e9f85df4 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 16 Jun 2023 16:36:16 +0200 Subject: [PATCH 816/987] Update nixpkgs to d6b863fd to match nixos --- default.nix | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/default.nix b/default.nix index ce996d7..ab22cbd 100644 --- a/default.nix +++ b/default.nix @@ -1,16 +1,15 @@ let bscOverlay = import ./overlay.nix; - commit = "9a6aabc4740790ef3bbb246b86d029ccf6759658"; + commit = "d6b863fd9b7bb962e6f9fdf292419a775e772891"; # Pin the nixpkgs nixpkgsPath = builtins.fetchTarball { # Descriptive name to make the store path easier to identify name = "nixpkgs-${commit}"; - # Commit hash for nixpkgs as of 2023-04-11 url = "https://github.com/nixos/nixpkgs/archive/${commit}.tar.gz"; # Hash obtained using `nix-prefetch-url --unpack ` - sha256 = "0m8cid2n6zfnbia7kkan9vw8n5dvwn8sv7cmrap46rckpzbahnls"; + sha256 = "02rd1n6d453rdp2978bvnp99nyfa26jxgbsg78yb9mmdxvha3hnr"; }; pkgs = import nixpkgsPath { From b2283efd460bfeef022d23d3143841afdb48af20 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 16 Jun 2023 17:05:09 +0200 Subject: [PATCH 817/987] Install the Intel MPI libmpi.so into lib/ --- bsc/intel-oneapi/2023.nix | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/bsc/intel-oneapi/2023.nix b/bsc/intel-oneapi/2023.nix index f9de097..62d3d77 100644 --- a/bsc/intel-oneapi/2023.nix +++ b/bsc/intel-oneapi/2023.nix @@ -136,7 +136,9 @@ let rsync -a man/ $out/share/man/ rsync -a etc/ $out/etc/ rsync -a include/ $out/include/ - rsync -a lib/ $out/lib/ + cp -a lib/lib* $out/lib/ + # Copy the actual libmpi.so from release + cp -a lib/release/lib* $out/lib # Broken due missing libze_loader.so.1 rsync -a --exclude IMB-MPI1-GPU bin/ $out/bin/ popd From cbe9af5d042e9d5585fe2acef65a1347c68b2fbd Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 16 Jun 2023 17:05:36 +0200 Subject: [PATCH 818/987] Update TAMPI to 2.0 --- bsc/tampi/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bsc/tampi/default.nix b/bsc/tampi/default.nix index f4f1685..7eb3885 100644 --- a/bsc/tampi/default.nix +++ b/bsc/tampi/default.nix @@ -12,7 +12,7 @@ }: stdenv.mkDerivation rec { - version = "1.1"; + version = "2.0"; pname = "tampi"; enableParallelBuilding = true; buildInputs = [ autoreconfHook automake autoconf libtool gnumake boost mpi gcc ]; @@ -22,7 +22,7 @@ stdenv.mkDerivation rec { owner = "bsc-pm"; repo = "tampi"; rev = "v${version}"; - sha256 = "0m369l3kprginqkkdjf5znlbrwvib2vjlhdy63nbvlw6v5ys7sci"; + sha256 = "sha256-m0LDgP4pfUwavUaagcCsZ/ZHbnWBZdtHtGq108btGKM="; }; hardeningDisable = [ "all" ]; From 932d273ec7e1cd10c1529b28c79430826aeb6c8b Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 28 Jun 2023 10:45:03 +0200 Subject: [PATCH 819/987] Build OmpSs-2 llvm with zlib The zlib is required by the lld linker to work with zlib compressed sections in the ELF header. We also set the LD_LIBRARY_PATH during the build, as otherwise the llvm-tblgen binary is unable to find the zlib library, as its missing the directory in the rpath. --- bsc/llvm-ompss2/clang.nix | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/bsc/llvm-ompss2/clang.nix b/bsc/llvm-ompss2/clang.nix index 7d53fb2..897beb3 100644 --- a/bsc/llvm-ompss2/clang.nix +++ b/bsc/llvm-ompss2/clang.nix @@ -9,6 +9,7 @@ , which , elfutils , libffi +, zlib , pkg-config , enableDebug ? false }: @@ -34,6 +35,8 @@ stdenv.mkDerivation rec { isClangWithOmpss = true; + nativeBuildInputs = [ zlib ]; + buildInputs = [ which bash @@ -44,6 +47,7 @@ stdenv.mkDerivation rec { elfutils libffi pkg-config + zlib ]; # Error with -D_FORTIFY_SOURCE=2, see https://bugs.gentoo.org/636604: @@ -71,7 +75,15 @@ stdenv.mkDerivation rec { "-DLLVM_ENABLE_ASSERTIONS=${enableAssertions}" "-DLLVM_INSTALL_TOOLCHAIN_ONLY=ON" "-DCMAKE_INSTALL_BINDIR=bin" + "-DLLVM_ENABLE_ZLIB=FORCE_ON" + "-DLLVM_ENABLE_LIBXML2=OFF" ) + + ''; + + # Workaround the problem with llvm-tblgen and missing zlib.so.1 + preBuild = '' + export LD_LIBRARY_PATH=${zlib}/lib ''; # Remove support for GNU and Intel Openmp From f2f024b82de04b63b5c351dd0c25c7b8841d1223 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 28 Jun 2023 11:18:35 +0200 Subject: [PATCH 820/987] Add zlib to the rpath Instead of using LD_LIBRARY_PATH we provide the rpath from cmake, as otherwise the clang compiler is also missing the dependency. --- bsc/llvm-ompss2/clang.nix | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/bsc/llvm-ompss2/clang.nix b/bsc/llvm-ompss2/clang.nix index 897beb3..a1b05a6 100644 --- a/bsc/llvm-ompss2/clang.nix +++ b/bsc/llvm-ompss2/clang.nix @@ -77,15 +77,15 @@ stdenv.mkDerivation rec { "-DCMAKE_INSTALL_BINDIR=bin" "-DLLVM_ENABLE_ZLIB=FORCE_ON" "-DLLVM_ENABLE_LIBXML2=OFF" + # Set the rpath to include external libraries (zlib) both on build and + # install + "-DCMAKE_BUILD_WITH_INSTALL_RPATH=ON" + "-DCMAKE_INSTALL_RPATH_USE_LINK_PATH=ON" + "-DCMAKE_INSTALL_RPATH=${zlib}/lib" ) ''; - # Workaround the problem with llvm-tblgen and missing zlib.so.1 - preBuild = '' - export LD_LIBRARY_PATH=${zlib}/lib - ''; - # Remove support for GNU and Intel Openmp postInstall = '' rm $out/lib/libgomp* From caf0e9545ae32471a4c1e60ed0939dab108989ee Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 14 Jul 2023 16:44:24 +0200 Subject: [PATCH 821/987] Fix gitUrl input name --- bsc/nosv/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bsc/nosv/default.nix b/bsc/nosv/default.nix index 71ca91d..8ed7337 100644 --- a/bsc/nosv/default.nix +++ b/bsc/nosv/default.nix @@ -8,7 +8,7 @@ , hwloc , ovni ? null , useGit ? false -, gitURL ? "git@gitlab-internal.bsc.es:nos-v/nos-v.git" +, gitUrl ? "git@gitlab-internal.bsc.es:nos-v/nos-v.git" , gitBranch ? "master" , gitCommit ? "0edc81d065f20d3d2f8acf94df1d2640dc430d5e" }: From 534c5dd261236daca82bed1b344e6bba8ebea981 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 17 Jul 2023 10:52:03 +0200 Subject: [PATCH 822/987] Cache intel oneAPI package list --- bsc/intel-oneapi/2023.nix | 11 +- bsc/intel-oneapi/all-packages | 8769 ++++++++ bsc/intel-oneapi/amd64-packages | 34075 ++++++++++++++++++++++++++++++ bsc/intel-oneapi/update.sh | 4 + 4 files changed, 42850 insertions(+), 9 deletions(-) create mode 100644 bsc/intel-oneapi/all-packages create mode 100644 bsc/intel-oneapi/amd64-packages create mode 100755 bsc/intel-oneapi/update.sh diff --git a/bsc/intel-oneapi/2023.nix b/bsc/intel-oneapi/2023.nix index 62d3d77..eaa9cd0 100644 --- a/bsc/intel-oneapi/2023.nix +++ b/bsc/intel-oneapi/2023.nix @@ -40,15 +40,8 @@ let aptPackageIndex = stdenv.mkDerivation { name = "intel-oneapi-packages"; srcs = [ - # Set the hashes to "" to fetch them - (fetchurl { - url = "https://apt.repos.intel.com/oneapi/dists/all/main/binary-amd64/Packages"; - sha256 = "sha256-ZaXaicvmuyRB84LYK1mDYWwpdNW+ZHQCV072SuH4EFA="; - }) - (fetchurl { - url = "https://apt.repos.intel.com/oneapi/dists/all/main/binary-all/Packages"; - sha256 = "sha256-6vuioA0Hl34/AUuBbRYGu3lt+rccqJdpipXQWZ4Nfp8="; - }) + # Run update.sh to update the package lists + ./amd64-packages ./all-packages ]; phases = [ "installPhase" ]; installPhase = '' diff --git a/bsc/intel-oneapi/all-packages b/bsc/intel-oneapi/all-packages new file mode 100644 index 0000000..0a86279 --- /dev/null +++ b/bsc/intel-oneapi/all-packages @@ -0,0 +1,8769 @@ +Package: intel-aikit-getting-started +Architecture: all +Version: 2021.1.0-935 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 6 +Filename: pool/main/intel-aikit-getting-started-2021.1.0-935_all.deb +Size: 3586 +MD5sum: 1be845b3935be9420a6ca8cdfba06bef +SHA1: fcdea07e501a8bbc02f7ee1c7700b1343bc1b4fa +SHA256: 897c62e3d6d5dc503705e0a5114d97b465e7f88443995b158298408c4646f2f1 +SHA512: d302ea789fdb4d25df7ae47abb62baa67b73a0a2279ede375044ea322803fe6992098c63bddf6f75f893ce9ad25665d825c6f849cb082637c27ded0608110976 +Description: Intel® AI Analytics Toolkit + + +Package: intel-aikit-getting-started +Architecture: all +Version: 2021.2.0-1101 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 6 +Filename: pool/main/intel-aikit-getting-started-2021.2.0-1101_all.deb +Size: 3590 +MD5sum: b62ee903db75141ace98c628efa310cb +SHA1: e97239c29034a23b5814bd099abe6f31692f6063 +SHA256: 97ef6c60b35161185016322bf0f329338abc3f59cd916981c10e97f533313f01 +SHA512: 8986422e42a8799e10e8a9c693f0fca671e68197917a793af84f287372da2c8211260fc177fadd576dde8d0c0b63fbaf85f4ef6a47be534002e6c95fd0a67d5b +Description: Intel® oneAPI AI Analytics Toolkit + + +Package: intel-aikit-getting-started +Architecture: all +Version: 2021.3.0-1370 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 6 +Filename: pool/main/intel-aikit-getting-started-2021.3.0-1370_all.deb +Size: 3586 +MD5sum: a2ee4c93e087ca3f87973600214a2ee1 +SHA1: 830e6b0e980c3d411fd57f15c56ceee9f3c77d30 +SHA256: 15f18a7922d1c856edd2c9376a94aaaadab139335ac8f7690d451e4913f4426e +SHA512: 59b9f5bf40f60ef43d8e7cead339198adce7eab19f854e3aee3b2cae990ecc764e2de1fc344a0011b9114dbbdf90e85d52702fc7fbc85c57633d7f1c749b6453 +Description: Intel® oneAPI AI Analytics Toolkit + + +Package: intel-aikit-getting-started +Architecture: all +Version: 2021.4.0-1460 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 6 +Filename: pool/main/intel-aikit-getting-started-2021.4.0-1460_all.deb +Size: 3588 +MD5sum: 90f227cc51262c825658803b8c4f329d +SHA1: 10af5f0af63addea13bec3ab8e7518e3f16f85e1 +SHA256: fb97050967f6df4514bd27890b6bbde2a5bdf80d061f852ec0e505b0339e65c0 +SHA512: 1aabe67a2db59fb750bfb343d08c4616561b30505e4b61bd08214aef91b0c84284eb772209878019f0efbe19854aab14968a63f99b61422c4796adaad0dd9c4a +Description: Intel® oneAPI AI Analytics Toolkit + + +Package: intel-aikit-getting-started +Architecture: all +Version: 2022.1.1-106 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 6 +Filename: pool/main/intel-aikit-getting-started-2022.1.1-106_all.deb +Size: 3586 +MD5sum: b19479fca96b6c5a68353475788aa941 +SHA1: 32691163484678e7bd69e9de8b49feff4d12b268 +SHA256: 0a7a4c599cba7a358cad41f1fcac72233a00d0565fb38868abd24c2a6c14adbe +SHA512: 7247e4434b5257873f6f63ec4946efa0d59ad39901c48032cda35adfb02dd79334807932cf81475f986c585f25dae1e1952388e6e4702118a2a5f0d88830e953 +Description: Intel® oneAPI AI Analytics Toolkit + + +Package: intel-aikit-getting-started +Architecture: all +Version: 2022.1.2-135 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 6 +Filename: pool/main/intel-aikit-getting-started-2022.1.2-135_all.deb +Size: 3586 +MD5sum: bcc34ee198f97969a51e44f1a47b32ca +SHA1: a0973e9ed66ede47a02a243d4f6ac8c639475eed +SHA256: 30a867aa928a44189a02072f46658d5654f147a99e8d55b4ddef01e5aac6b4c4 +SHA512: 3d2761b1dc88c8ef128b194c2eb7bc4377c606a1085a1918478811f00a98a4ac8e0d65efcb1799e300e00063817d874f0d637d86b6c6307a9bb504b46c595602 +Description: Intel® oneAPI AI Analytics Toolkit + + +Package: intel-aikit-getting-started +Architecture: all +Version: 2022.2.0-231 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 6 +Filename: pool/main/intel-aikit-getting-started-2022.2.0-231_all.deb +Size: 3672 +MD5sum: 2edef2c814ea43c5e52262a75ace76de +SHA1: 8afa8ca5999c050675a1f98db4ec1cb8fb1294f5 +SHA256: d10823f480782336e7dc27f4e585b0a9a8f5018e9f73b757e129528046109686 +SHA512: 2e21975768cac059d2cbbb13a2f310113807d16b2043405684fe51b83059efd108063141b5eda58da9d11b9d42385f75b116db3bb47a1d440de633208f08c3fe +Description: Intel® oneAPI AI Analytics Toolkit + + +Package: intel-aikit-getting-started +Architecture: all +Version: 2022.3.0-8775 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 22 +Filename: pool/main/intel-aikit-getting-started-2022.3.0-8775_all.deb +Size: 3668 +MD5sum: f5d2a45a04a7f7ccbfb4ab0b34964de2 +SHA1: 3cfab8fd0f2095ffed0e556fdc7226980a1733e6 +SHA256: 2fc8098f414f24a21b1cb4ee95d810567789df19bce1b02ebbd3c5981fe3ab13 +SHA512: 921251fcfa3faff762f36f978ac2dc437e57353ce3357979512e68e348d340647692ef39ec839617902ca60f4e6be387da1c211efae87586d0049ddffd81a142 +Description: Intel® oneAPI AI Analytics Toolkit + + +Package: intel-aikit-getting-started +Architecture: all +Version: 2022.3.1-20890 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 22 +Filename: pool/main/intel-aikit-getting-started-2022.3.1-20890_all.deb +Size: 3672 +MD5sum: 28aea2fbecca244f46682836b0c19dbc +SHA1: 5b940cb6fb9ff8aebb12d54bc8406c44275ac738 +SHA256: 9b47443c770185df566b16cca7e79c7bf66470700145d28368b7a9fe15c6e9af +SHA512: 74c0e7a8680b9bbbc858d2f429a5af452188556a1bce8659b0d651b93f569420c16ba3a1b71b79d7777118f81c82fe89cfaa5f8b47643aaffd79b27ba508ee54 +Description: Intel® oneAPI AI Analytics Toolkit + + +Package: intel-aikit-getting-started +Architecture: all +Version: 2023.0.0-25695 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 22 +Filename: pool/main/intel-aikit-getting-started-2023.0.0-25695_all.deb +Size: 3676 +MD5sum: 7966abb5453f62bc66356e72255b7ea5 +SHA1: a57fde9e9507f96d20a53f4481f12a7987eddba4 +SHA256: 91dc2e80ead536e86bcd94519b2fdfab990977cfde602b735ec58883129614e2 +SHA512: 7eb49e1387822c187f7fef9648354dad7961333d52cd33ec9d64d495d6af14e3ce31536f72a9b749497a4f8aa4f8e88894beac7f927604e8cb9f16495301a453 +Description: Intel® oneAPI AI Analytics Toolkit + + +Package: intel-aikit-getting-started +Architecture: all +Version: 2023.0.0-25823 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 22 +Filename: pool/main/intel-aikit-getting-started-2023.0.0-25823_all.deb +Size: 3668 +MD5sum: 8194daf8fb640c8e707d74ca1349faf6 +SHA1: 17e9b8f445cfb1005235c66d0fe790700b83c76c +SHA256: 2862861346f1b6f93638701093b61c972659721f5245bf7501bcb332bd706ca8 +SHA512: 5d80e44cfa01166616235785b9d57f7522cd30ff68ffc871855e89ffb9fcc9857642c3706b26424567bff560dedb3c76e7519d8e924bcf5e4282d5ef21fc362b +Description: Intel® oneAPI AI Analytics Toolkit + + +Package: intel-aikit-getting-started +Architecture: all +Version: 2023.0.0-25859 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 22 +Filename: pool/main/intel-aikit-getting-started-2023.0.0-25859_all.deb +Size: 3672 +MD5sum: fd8650597e4be7606cad5541c49c03f3 +SHA1: 8a75d62a1170a10b25fbbdc484d03b12e32daaf0 +SHA256: 92e5c3c076adda2b6a617d53f0ecba40ab2a5c31e66e566ecb7cf6cf8758e237 +SHA512: cecada6a3c7800fd95d2f2b3dd36c4d68dc1c5ad6a959e16bb13a140e6fd933a133cdf09f5cf4c174d62253fa015970e2faf2bcb6bcee01318b075e6dc0d41de +Description: Intel® oneAPI AI Analytics Toolkit + + +Package: intel-aikit-getting-started +Architecture: all +Version: 2023.0.0-26100 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 22 +Filename: pool/main/intel-aikit-getting-started-2023.0.0-26100_all.deb +Size: 3676 +MD5sum: 08e430f39dee904ba83e8768a7446cbd +SHA1: 91808395bc0dbae6a732dc252ec45ca537963439 +SHA256: cdb4aae4204fd7f00f89ee572519c303a921fd1b5e020680e4b75d187f941b51 +SHA512: 3e5ff1d0f7932e1660ffbeca1e2c3f3b67775e16300ac7776ed0b0306e159e6a1079d25ff0dd2d4ce4795891535e7c0f606b19bf884643ff55eba56cbc5ad662 +Description: Intel® oneAPI AI Analytics Toolkit + + +Package: intel-aikit-getting-started +Architecture: all +Version: 2023.1.0-31760 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 22 +Filename: pool/main/intel-aikit-getting-started-2023.1.0-31760_all.deb +Size: 3672 +MD5sum: 1d0a609338f083ee4026ffd50006beaa +SHA1: c41753dc145181685d86d996d51ec40b6e4db8af +SHA256: dd82834b7c0d92f5843abc2d30eb9b8e59095e9328d460044f68593d53bbb926 +SHA512: d9390649833c5c95a98a70382f699af755ab3342e546e52236b6420b0b2d26989cf54dbc955100054dbb546d00797bd812984a6851555518cb81b74fc1cf3e79 +Description: Intel® oneAPI AI Analytics Toolkit + + +Package: intel-basekit-getting-started +Architecture: all +Version: 2021.1.0-2659 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 7 +Filename: pool/main/intel-basekit-getting-started-2021.1.0-2659_all.deb +Size: 3680 +MD5sum: 18b5d8abf52041eec2377b4007a7ced3 +SHA1: a845726f1e090f52efed0bf5e679cb67fb08ff00 +SHA256: c44cdd2c2281a7c8846d2644fefda2bc33088fe11b68750842d50c6a7a708088 +SHA512: c589417fc4d0044acf6db7dd662711b29728a0bf426f0bbcbd0816706aa3e15b21b5cb51d4dbb581aa2edaf0f4a387dc3cac5316b8eb2b3285c4c39810a022c7 +Description: Intel® oneAPI Base Toolkit + + +Package: intel-basekit-getting-started +Architecture: all +Version: 2021.2.0-2883 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 7 +Filename: pool/main/intel-basekit-getting-started-2021.2.0-2883_all.deb +Size: 3676 +MD5sum: 742ae2af89a3438dd6a985c99ca36dbf +SHA1: dc9150c309ac98375f2bd19129e7ce9df039e27b +SHA256: 5421f7e08204a379022d50d08b5fb0a0dee67502381ef93e6842af2242202c2e +SHA512: b9689af9c1c46c31d5504191e7ffb00ed374db9fe9ad2e4742d3232a6996eaeeef22a0df53b2b78b85351b5480c8e72151ffd48aa216c226856c7621e51856c8 +Description: Intel® oneAPI Base Toolkit + + +Package: intel-basekit-getting-started +Architecture: all +Version: 2021.3.0-3219 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 7 +Filename: pool/main/intel-basekit-getting-started-2021.3.0-3219_all.deb +Size: 3680 +MD5sum: 0d853107f23435c38ae7e5c9fdb931c1 +SHA1: 744b288103d296b4d3f376086483c1ad8ee67886 +SHA256: 95d1a8583905038cc7370a4ff8963c6a7974a90135a981df0e3e5c0c6793b24c +SHA512: b38e7d7424dfca29ad401c81831361bc0a0a2d95d9f507149a781a0d7be1e7ec4976484ec875be627364e25f855dfe1dc6cfcf3a4424680720548bce6f341485 +Description: Intel® oneAPI Base Toolkit + + +Package: intel-basekit-getting-started +Architecture: all +Version: 2021.4.0-3422 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 7 +Filename: pool/main/intel-basekit-getting-started-2021.4.0-3422_all.deb +Size: 3680 +MD5sum: c92b5d55f3d3abf1d7b7a737f18a7ad7 +SHA1: eab4994a17965177ae9d9c6250fbc5a76a10955a +SHA256: 34d1cab5a211bfe498d7e51b1b44a6c8e7eed7f4741bcefb1b805cc7824d1d78 +SHA512: 77e26d24dfac59a8dc04f10c2bdaac7777450f5ffb71c00704a53a5589de3e1ba3245383cfa971b532ec1bcdbe2fc92112310f0999d04010233403ecb676502b +Description: Intel® oneAPI Base Toolkit + + +Package: intel-basekit-getting-started +Architecture: all +Version: 2022.1.1-119 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 7 +Filename: pool/main/intel-basekit-getting-started-2022.1.1-119_all.deb +Size: 3676 +MD5sum: 482a16c8cdd7be4b87a81cb8e38d72c1 +SHA1: 310168bfc14bfae739e35b5ba8ebfd9db60e8c08 +SHA256: 1bf7fda0f97b7e490b5d55dc82c0466938b3b51b8f84559ebed6a9b32d47f8d3 +SHA512: c993b646dabfad1534d29364c6a192af5578b98aef360f9263b6da7dcb6070e4cabe0e1fa42e67828a09662f58c6c40005fcc576ae8d2cf48dad2c7802627225 +Description: Intel® oneAPI Base Toolkit + + +Package: intel-basekit-getting-started +Architecture: all +Version: 2022.1.2-146 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 7 +Filename: pool/main/intel-basekit-getting-started-2022.1.2-146_all.deb +Size: 3678 +MD5sum: 2a18702ee35b64adb54eb28f66b8fd23 +SHA1: e35f804f5f842ea4e417e043c1c9e27c521fb5b1 +SHA256: 10655b579aa19e6cd009f10127df284b5db47a57d23667743f5414903f03fc15 +SHA512: 01dfb23db3a400a8e5205b8ad1d63477f7ab518d85570c3a3c15c66a4220d166bfbf1ca37ff6474a17fff49d09c266e2cfcc7e0a0c7dc1adf047e5b9d9bc1026 +Description: Intel® oneAPI Base Toolkit + + +Package: intel-basekit-getting-started +Architecture: all +Version: 2022.2.0-262 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 7 +Filename: pool/main/intel-basekit-getting-started-2022.2.0-262_all.deb +Size: 3760 +MD5sum: d811e14ba1f217a964a4bf7ccbae89f2 +SHA1: 37f4f532487b3205e7763366344632f032edc729 +SHA256: 6c8eaa2289372d9d1a3b08ed4194fe4796e8bd2985f63d38b010c9b64d10c526 +SHA512: 2d2475341abc459e4632101791b171c1ddf322335f66a5a877533f085bbf255b2518138cf0a06c66840f28bef3cb3d4dbe5726ec8d5d483bdefaae432f136857 +Description: Intel® oneAPI Base Toolkit + + +Package: intel-basekit-getting-started +Architecture: all +Version: 2022.3.0-8767 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 22 +Filename: pool/main/intel-basekit-getting-started-2022.3.0-8767_all.deb +Size: 3760 +MD5sum: ef1ab505d648793b15b2fdedee097d34 +SHA1: 64d9b2be539f2ec107a3aba40b00c15ae9ee6975 +SHA256: e79960f2edb776f0732ea4b5ad556d53fdb2068b8b230761518d4e0ef1e9581a +SHA512: e28977b1538c9812676de772b841c5ad3bd83c9d20422b92ae2329e576df06c1a94b0651ed89dd7274e7c95d14c75f13082b1f63ace0aa7512fbea2286c4d4ce +Description: Intel® oneAPI Base Toolkit + + +Package: intel-basekit-getting-started +Architecture: all +Version: 2022.3.1-17310 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 22 +Filename: pool/main/intel-basekit-getting-started-2022.3.1-17310_all.deb +Size: 3764 +MD5sum: 40cd4869033157db6d658765b44bd533 +SHA1: ee387a5eea57456ec5c613c4e6897c99c1670fd1 +SHA256: 94c6cbd5d7c06cbc45eb1c410d666855e8f804c8810ddbf3c46faa5164ce69e9 +SHA512: 1415eb512847ef08f33a5af9e76cb465349bbe81bed1e2fea4749338e595853f895c56a0032a97ca42151dddbdf480b270502972ed22a8f8a13a0d42f866ebb9 +Description: Intel® oneAPI Base Toolkit + + +Package: intel-basekit-getting-started +Architecture: all +Version: 2023.0.0-25537 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 22 +Filename: pool/main/intel-basekit-getting-started-2023.0.0-25537_all.deb +Size: 3764 +MD5sum: 3c5baad6348f0a70cadca6620d44a7fa +SHA1: fecf26bfd4b67d11a8b1542c0c27382544ea9c4d +SHA256: 5ab5b524823c1ec39824c6b976f8a1b9c9cf9e5c25d21e8ed71c702e6ea07ee9 +SHA512: 4e7137fb0a4f0679a2f34b8997fb8c20d7355401825b3cc7ae8b4b097d11314fcb6b4058ca9ecd1df089673c785b119024280c9227711aa60f542591b0d5067e +Description: Intel® oneAPI Base Toolkit + + +Package: intel-basekit-getting-started +Architecture: all +Version: 2023.1.0-46401 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 22 +Filename: pool/main/intel-basekit-getting-started-2023.1.0-46401_all.deb +Size: 3760 +MD5sum: e22630a96b4c8d7a29b1dfa974ccd8b6 +SHA1: 89188f0df3ff763761853237281a119c0735b127 +SHA256: 68d93496496bb3a92cc70760ab9900548747375d6b716e8501121d8514ee39c0 +SHA512: 4bf031a30cc06a371dc842826de8275711856a6e9e037d4cc4e9d65f88e30fa0e8a3e376139cc5f7a9ef9dd2f0e344400b9686670585f3ff4dea4a9d287af70f +Description: Intel® oneAPI Base Toolkit + + +Package: intel-dlfdkit-getting-started +Architecture: all +Version: 2021.1.0-1920 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 7 +Filename: pool/main/intel-dlfdkit-getting-started-2021.1.0-1920_all.deb +Size: 3714 +MD5sum: 5341db51646252f3c696d03051e983f8 +SHA1: 534c2b978fdba772f04110aca5907700edf39693 +SHA256: fba121f32a72a86625f13cf77e1b75de024126f52658378ae737799b92f8b7b7 +SHA512: 38da81080deddbe385141203ce74f18660d20a6c09110770c8954ed6c08b711b0e02c1a07edf53c5205626737bc9b2ed7a2a474de3cc7dc053b734ba0237237e +Description: Intel® oneAPI DL Framework Developer Toolkit + + +Package: intel-dlfdkit-getting-started +Architecture: all +Version: 2021.2.0-1999 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 7 +Filename: pool/main/intel-dlfdkit-getting-started-2021.2.0-1999_all.deb +Size: 3712 +MD5sum: de41b2ddb736d8f38aed92f6d0b96513 +SHA1: d81be3d0ea90a4b7eddba8e9143eaea96195f5cd +SHA256: 1ae7d88f1d9351eb1b89ce1ae76fe6228b3bd15b91652bc0baea67c91f85943f +SHA512: 8bf7f1ab518bfddeaa3e35f3343e8717c9c05366bf978e5b10ec4de87cd892ab4d84dd0eb586629d5ff8ae1f0fcd523fff35f2aa8a3b6f8f4ef722a8601dc346 +Description: Intel® oneAPI DL Framework Developer Toolkit + + +Package: intel-dlfdkit-getting-started +Architecture: all +Version: 2021.3.0-2064 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 7 +Filename: pool/main/intel-dlfdkit-getting-started-2021.3.0-2064_all.deb +Size: 3712 +MD5sum: 46691fbd238e504b306b602503141d36 +SHA1: a20f1c4d2f9c80eaa01f209c9c0d08c80e8a5e1f +SHA256: 85a024062e8318a9962df13f9f5c65dbb89e8580cf48a329970773ec96cdf8ab +SHA512: edde1ea5b1ff6cb3be50c93294d89b93c08f3784aa8ccf76755888c9f78fda4ee3f9739da5a477a083f722bd7c9799991cd9d84c984957da76487d4b6b6ac9d2 +Description: Intel® oneAPI DL Framework Developer Toolkit + + +Package: intel-dlfdkit-getting-started +Architecture: all +Version: 2021.4.0-2105 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 7 +Filename: pool/main/intel-dlfdkit-getting-started-2021.4.0-2105_all.deb +Size: 3708 +MD5sum: 066b94bd20fe71b0849f31178db525b3 +SHA1: 0c3e00f1d60c170979d9e652d875fdcf5fa17e9e +SHA256: d52e06052949a4e24bf124f7a79937f4ef1cea36aee3593c78de3b15287d4be7 +SHA512: cf76a4eaf33931630c2e9eb7b300b1dac875f39164ebe84ce3fc9e7d7d77484a5d80e47d7ec63f750ca560fa8956c22779ebb0992f0141a0d51304be534ff457 +Description: Intel® oneAPI DL Framework Developer Toolkit + + +Package: intel-dlfdkit-getting-started +Architecture: all +Version: 2022.1.1-69 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 7 +Filename: pool/main/intel-dlfdkit-getting-started-2022.1.1-69_all.deb +Size: 3708 +MD5sum: 20a719011f7ab041aa668ec7b7accd37 +SHA1: 34a1aa696ac6a14a452014e8e557e59be6dc5241 +SHA256: fb640032091c126ee6db0b7d551b782f2ab3c35c5fc1b4e02798b621dd44c176 +SHA512: 1e75d17deabbc376c72f64ac72564ee53832a486d28234be8a7d39c3f0c2157602302bbdd39a9431d1feaba1c25667bc357781714c3d8980441b298020184780 +Description: Intel® oneAPI DL Framework Developer Toolkit + + +Package: intel-dlfdkit-getting-started +Architecture: all +Version: 2022.1.2-86 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 7 +Filename: pool/main/intel-dlfdkit-getting-started-2022.1.2-86_all.deb +Size: 3716 +MD5sum: f4c82d4580733fb0eb8da3060af91a12 +SHA1: 9de78b75347b088cb3fb4d2c28562014074a76fb +SHA256: a82d200a16c59060bc8d50d6b6ab5c0fb8eb2d52bb47934b82ac4c373c102b41 +SHA512: 0b57d73117adb4b7065cc5e34e2a0bc7f3ee5021543b5e675b1ca7de4c55461e15e5db8218f4e532cbf7b37be271c06e1e9d42e25c4a457a7e029c6b728b1afd +Description: Intel® oneAPI DL Framework Developer Toolkit + + +Package: intel-dlfdkit-getting-started +Architecture: all +Version: 2022.2.0-140 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 7 +Filename: pool/main/intel-dlfdkit-getting-started-2022.2.0-140_all.deb +Size: 3792 +MD5sum: b7b3de288aba6a0ab64f4a8a9f01dca1 +SHA1: 0378a1546cb8c0cfecbadfc1edbca7d7f7d07b4e +SHA256: e2e801179d07c236bdc59c69247aac50e4cc13775e6664197cb722fff784d3c6 +SHA512: 573c05651e99305e1677f8b12ea03968f92928cb6897fe5c1b2f1d377948022656164f1a4e0836e7a0e73e123604ffda8832d6918184bac489ebdc6b9af6b783 +Description: Intel® oneAPI DL Framework Developer Toolkit + + +Package: intel-dlfdkit-getting-started +Architecture: all +Version: 2022.3.0-8753 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 22 +Filename: pool/main/intel-dlfdkit-getting-started-2022.3.0-8753_all.deb +Size: 3796 +MD5sum: 6ec2fd2bb6db3166f89795b6adfbffcb +SHA1: 4264280f826aa09704da4455e6a7b4ce7234352d +SHA256: 77d543ec4f3689a0a189e10ba59fc645213189275d7f376be88cff8ded1a9a39 +SHA512: c8f02ed20a163191408583e66c82dd44aed4ffcf1dfcc7dc34b808becf25aeaa7f0483e3742480cd48c165b337b09566dd7880fde5dc6e5e47f53227192ced4d +Description: Intel® oneAPI DL Framework Developer Toolkit + + +Package: intel-dlfdkit-getting-started +Architecture: all +Version: 2022.3.1-17050 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 22 +Filename: pool/main/intel-dlfdkit-getting-started-2022.3.1-17050_all.deb +Size: 3796 +MD5sum: cee0dee71bd532f1d39f04db67bd3e8f +SHA1: a213cdde846fb0182ea1db25475cfba2edd357cb +SHA256: b23c31bdbd0a5f1c2bc87f1ad50f912bb0fb0930776d112d4424e4bb17dc7687 +SHA512: 4ffddb9ecdc32ec1654d2bec63d39a30ae1416bddf4c236faa3921852d9e505bfa63c25ec9d8d8ed72462150df88970091d037d6814b5333ce9432551d2b441d +Description: Intel® oneAPI DL Framework Developer Toolkit + + +Package: intel-dlfdkit-getting-started +Architecture: all +Version: 2023.0.0-25405 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 22 +Filename: pool/main/intel-dlfdkit-getting-started-2023.0.0-25405_all.deb +Size: 3796 +MD5sum: 2ede746701ef9b9fd19c736d8f38fa6f +SHA1: 8c8a3376128491265e15ae917da71bf89970c52e +SHA256: e710e4ddcf4577ea7128c1775867185e7cdc6acb8f99714a1867ffeb152daddb +SHA512: 35b0dcd94ffd7b5170634e4fbd2e9e1a195495880779a926d08499ed459d096f798caf880ad085cade74f05e08dcef60b1a74eeb1b8af0c36ac11c45ab71f9f6 +Description: Intel® oneAPI DL Framework Developer Toolkit + + +Package: intel-dlfdkit-getting-started +Architecture: all +Version: 2023.1.0-46364 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 22 +Filename: pool/main/intel-dlfdkit-getting-started-2023.1.0-46364_all.deb +Size: 3796 +MD5sum: 298c379972e74af7a8bb799b0e1999dd +SHA1: eabef659c893f948869ea372383698f4febf2cc8 +SHA256: ab855b70d42200cec9f1b94c9322feecec616bf61105fe22d9a5466ec62f7a04 +SHA512: 730116a031937781b7f75e3c25187fb5987c8094acbd56461b8f928657adb99ab9d4888ea0993ebdffb788d0824b3a5a3d8e40cbf9b11225b52c70abfce77d19 +Description: Intel® oneAPI DL Framework Developer Toolkit + + +Package: intel-hpckit-getting-started +Architecture: all +Version: 2021.1.0-2684 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 6 +Filename: pool/main/intel-hpckit-getting-started-2021.1.0-2684_all.deb +Size: 3652 +MD5sum: ab11e868c6b71690d33887d65d1ff8d4 +SHA1: 41d8125fb2ce7da885d0b17f6bce51a627432295 +SHA256: 1679da4f848056d343cebfc27bc3f457654703b8fc544cd837f74be3fef47f37 +SHA512: fa52e3673a6e01ca71c702dbd28e1ac0714b2628fd82eb68de9a8c7621c6c1236198799994eeaf556d8fdd7b3a0fce0dc402cc45170cb587ce4e5a757722d9bd +Description: Intel® oneAPI HPC Toolkit + + +Package: intel-hpckit-getting-started +Architecture: all +Version: 2021.2.0-2997 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 6 +Filename: pool/main/intel-hpckit-getting-started-2021.2.0-2997_all.deb +Size: 3656 +MD5sum: b4c70b72acd58b80a315ced383ac8c44 +SHA1: 7b08c9777c93a9332cbef6e4cde0023f8e8a515b +SHA256: bba9e5efba50447c05277e6a76fefb365d7d1880ea8f50b6a7eb01efa90bcda1 +SHA512: e4ee656d3e44ae1fa89b4df86ee9a3dbea1ff82444bd1e0f51bcfe2ac73f278a401624d903bcdf0b2f5fb145fcf93d8e11dbcde2d31fab55f37142a3bba5fc48 +Description: Intel® oneAPI HPC Toolkit + + +Package: intel-hpckit-getting-started +Architecture: all +Version: 2021.3.0-3230 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 6 +Filename: pool/main/intel-hpckit-getting-started-2021.3.0-3230_all.deb +Size: 3650 +MD5sum: b588d3571243f3041a16e5b782f5f98b +SHA1: cb0543c490368af0436f962f843b836b42ad28bc +SHA256: b85b15ffac0289fc5c8c31bdee96f163fb6d1567c513badafb9a25c1d28b44d5 +SHA512: f6e054bc40bf003b13a81977692e06e7a110cd76d276933e27fa1a9562507937c165877acb940825b68f34566020181c20169fa6beae3a75a2a0ba02e1c2366f +Description: Intel® oneAPI HPC Toolkit + + +Package: intel-hpckit-getting-started +Architecture: all +Version: 2021.4.0-3347 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 6 +Filename: pool/main/intel-hpckit-getting-started-2021.4.0-3347_all.deb +Size: 3652 +MD5sum: 53b5057b9c3dfa48697b18864cd1a77f +SHA1: 33d5da10d22ea2e0e5b9e3184f569b02212ecce9 +SHA256: 11711eca9ff163aaa324cdc35c9ef95fb56e36a78e1aeebd16ca9bdec7f89ead +SHA512: 72926a11066ef0cbc14f0219a9f12aeda84f7f90e8edc95593717b2cb45869609653a553b4e660057dea34967d37cd9c91da863ace36db5896607e8e6a279065 +Description: Intel® oneAPI HPC Toolkit + + +Package: intel-hpckit-getting-started +Architecture: all +Version: 2022.1.1-97 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 6 +Filename: pool/main/intel-hpckit-getting-started-2022.1.1-97_all.deb +Size: 3650 +MD5sum: f933f68d7a742c6f760f311cb4f0c7c0 +SHA1: 113119dcaf24704e744fb8c8becf2af74d0d7633 +SHA256: 41befcf4ca0a70538d796c4415dd1768f305c0380b61dded2ff12beb1ca89a6d +SHA512: 0dc067da983feaf0418c7d366404a140b477a22a8ce4c43f0aa4b2a48566a709c16a369034e59e609370a68c380ef702d725ab0e7bd8bedd46402fafc7373b52 +Description: Intel® oneAPI HPC Toolkit + + +Package: intel-hpckit-getting-started +Architecture: all +Version: 2022.1.2-117 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 6 +Filename: pool/main/intel-hpckit-getting-started-2022.1.2-117_all.deb +Size: 3654 +MD5sum: cfa1ff7680dcdacc063ceb0b95cddcbc +SHA1: 846054f1750790091c186ef4161c77f55850f572 +SHA256: fd33743503cfd1dd6d32763da75b0f324ea1b340b0112143e239c504186677c9 +SHA512: 3fb90f0ff94df3e344a5b48ea1b297bfd1d1576f6f0dc013a3ef57a2e9084199ad458c724523006229db56c962544f61963d56423d433d1f4abf80efde612460 +Description: Intel® oneAPI HPC Toolkit + + +Package: intel-hpckit-getting-started +Architecture: all +Version: 2022.2.0-191 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 6 +Filename: pool/main/intel-hpckit-getting-started-2022.2.0-191_all.deb +Size: 3732 +MD5sum: dfce30d65decd21794871ea24e97706d +SHA1: 999fd600a8f46ac2c9740cc45bb08dde76b530dc +SHA256: 47259c45f1b97270ccad08ec6c6492e3f91400cc4b2a4b7420658a00a0225afa +SHA512: 9169fa58ed0d3f4822451f031d9318208c9558b261d4dac60883bebbac9c174d2f2f5b9ffa7dffddca16546ebfcf5dd918dbe88dcf8064d43d77a3ac03cb408b +Description: Intel® oneAPI HPC Toolkit + + +Package: intel-hpckit-getting-started +Architecture: all +Version: 2022.3.0-8751 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 22 +Filename: pool/main/intel-hpckit-getting-started-2022.3.0-8751_all.deb +Size: 3740 +MD5sum: 865abe0e94e7af8e431fe16cea52c890 +SHA1: 73910f960d5675e433a47abb2fb54130f039eaf5 +SHA256: 8ada29ba81430379f0788010e455da17a97a5054db8b897ed54406fc80ca54d7 +SHA512: 77581707917a572fb1e46bd10fb0a2f09f8fe03e5ed479c3ba0d0f73bf5082aec7b94be22adf79db18a65ffc4e84dab9e3dd732f37dc99dd6dc5f051a3009271 +Description: Intel® oneAPI HPC Toolkit + + +Package: intel-hpckit-getting-started +Architecture: all +Version: 2022.3.1-16997 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 22 +Filename: pool/main/intel-hpckit-getting-started-2022.3.1-16997_all.deb +Size: 3740 +MD5sum: bb460f844e20dc145060db71dd339753 +SHA1: ef4c68849ea190f29e173d05e14e465e94555e5a +SHA256: 1d7e67b45f835bb9f323c01fa24b4e47461ec296e7d723251fd7c8981208f34f +SHA512: 319d2bcfb17fa5e4758ec1a6b1dad7f375651c30c5d3954a6787bab4a9eb283a746892b09ed3f696ceef1671ecaf536eb2b50dc421958286c5eaedd60896f98d +Description: Intel® oneAPI HPC Toolkit + + +Package: intel-hpckit-getting-started +Architecture: all +Version: 2023.0.0-25400 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 22 +Filename: pool/main/intel-hpckit-getting-started-2023.0.0-25400_all.deb +Size: 3732 +MD5sum: 5678e2c53f0239bf4d2d0c90a47bd6bb +SHA1: de9eeaa6c119c86e2aabb6c079118f8aa99a64f5 +SHA256: 77172d28f01e2c2e1d850a851cc05f23210f54a1d08f964bbf40c1596d051b0f +SHA512: b40b4042acdbb10fd78b851e9d7e5b7dab6550626bcda0fe9d8884f9f8c59cebc67e7b33a4acfce6249f40e39fcf6b9bbaf289b6125e86476406a282b8e22fbf +Description: Intel® oneAPI HPC Toolkit + + +Package: intel-hpckit-getting-started +Architecture: all +Version: 2023.1.0-46346 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 22 +Filename: pool/main/intel-hpckit-getting-started-2023.1.0-46346_all.deb +Size: 3732 +MD5sum: 74fab0cfd83e7b7000c90cae3ee6b2a1 +SHA1: 5e00a846582eb82d3a51c62be196590aad85287f +SHA256: be5d5e872bd60aee2dcff72a91f248d272bf90cfe13017782455e0d579d8bb4a +SHA512: f684f205466f6b7ef717fd04c1e60543a9309e5fbcf022bc9f98a02ba28969a9372f70f6bf0d52e23da4fc6cb0d5bb213c567392b528ec3d463781bc9375b158 +Description: Intel® oneAPI HPC Toolkit + + +Package: intel-iotkit-getting-started +Architecture: all +Version: 2021.1.0-2658 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 6 +Filename: pool/main/intel-iotkit-getting-started-2021.1.0-2658_all.deb +Size: 3650 +MD5sum: 9d621825a5d7581a47fb38ac7dbc8880 +SHA1: 2d3d7ed64cef6e175f6b4585e5d418afcaa14c55 +SHA256: 5b74161e9ffcf985a6ed5d4a8b36066d198268970a3a00e849a63d5fd81bc7e2 +SHA512: 9c2c8a34b2e2e28a219e78ceb4bb66ff93d21c270c8a899912b802dd87e43052f9607c92e5ad8e103a3d05337bbc58413b02ba900ba38f8992526ef72d00b2d4 +Description: Intel® oneAPI IoT Toolkit + + +Package: intel-iotkit-getting-started +Architecture: all +Version: 2021.2.0-2742 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 6 +Filename: pool/main/intel-iotkit-getting-started-2021.2.0-2742_all.deb +Size: 3650 +MD5sum: b729128b73e5fbdbe882ba901e0802d7 +SHA1: c3b20c200359b67c6686a157b6e05d834189797f +SHA256: 5a0d79c631116853a17880a9f396ce67487b378a273e2df13a365db7fc27338e +SHA512: f3baa5123d7d23914475ddbf98b2ea24979ed6308163ead403bcf9669e905eed42f5e91b175f5d6a2f985b9eb722a18efd859e8627521c8e8e69184f710f5fb1 +Description: Intel® oneAPI IoT Toolkit + + +Package: intel-iotkit-getting-started +Architecture: all +Version: 2021.3.0-2811 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 6 +Filename: pool/main/intel-iotkit-getting-started-2021.3.0-2811_all.deb +Size: 3650 +MD5sum: 9b43010aaa1da95a166540f59f237277 +SHA1: 488cf142d85a72603fb4bc38703b18504dfaf6b5 +SHA256: c100d66a8aedf4347dd4aa7fd0bebd22aa4c1aa69bfb1644a4cef741856a4ef1 +SHA512: 23168d6baa0635f2d2748d91bc4618fe2bbf549ef9e611d4f807f9cb26ec3b87620eac359e05c6d19675e75b03fecd5701cfc9df66830a7db6c3fbacb2d38f91 +Description: Intel® oneAPI IoT Toolkit + + +Package: intel-iotkit-getting-started +Architecture: all +Version: 2021.4.0-2858 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 6 +Filename: pool/main/intel-iotkit-getting-started-2021.4.0-2858_all.deb +Size: 3650 +MD5sum: 65b933b3c7f8b388cc5b24faee414fcb +SHA1: 13be1ff22fb6ef08fe92db7d248db68561b2489e +SHA256: c0127b8b96c71f6078a3b0b5b91e5082ff2074858789133a1574b7b531f93250 +SHA512: 73977bf6b095bfee3deda425a58fd6aa221c7de012d030b5f532c846f7af6eb0a37bea9235ca0fe65573c43582a83a939e45f6c6db81b64d6437b949482b1c8a +Description: Intel® oneAPI IoT Toolkit + + +Package: intel-iotkit-getting-started +Architecture: all +Version: 2022.1.1-84 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 6 +Filename: pool/main/intel-iotkit-getting-started-2022.1.1-84_all.deb +Size: 3648 +MD5sum: 92098b1c690511d44edde530ed8375ad +SHA1: 4f294331fe5c262229edca198d8f268b053d8d09 +SHA256: 7849856bd1c5b3773c58082a9914d6fa862ee6b76523a58f773f3f340fd9708e +SHA512: ca94cd34e8cb4e85b9c784e9b12ed606fac371592d4e0c0a57b46f13e494a7ce875215a3e53ada045677d0a7c1cd286c56e8f7a782a5e2e5a89565dbe3fedaee +Description: Intel® oneAPI IoT Toolkit + + +Package: intel-iotkit-getting-started +Architecture: all +Version: 2022.1.2-102 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 6 +Filename: pool/main/intel-iotkit-getting-started-2022.1.2-102_all.deb +Size: 3648 +MD5sum: f32fbedcafada6af137889b553a48aac +SHA1: 36390e1983230d2f32e496aab84d6452344efd6d +SHA256: ec491c7ff669a8c89f6d3c8525676d8bf0c86a549de05f5dab7534df03c1846e +SHA512: e1e5a271b804050835d3b867e806adaacb22df52d89d29017db44c7ffb5bb7f9faf3e5e6e17a31481575cae07045eef27e5192e7ca3285d0dbe6c482de17beb0 +Description: Intel® oneAPI IoT Toolkit + + +Package: intel-iotkit-getting-started +Architecture: all +Version: 2022.2.0-165 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 6 +Filename: pool/main/intel-iotkit-getting-started-2022.2.0-165_all.deb +Size: 3732 +MD5sum: 039493eb41c9d2d1ab2a6f7ab000025a +SHA1: 1823123bd7f7fb66a43f8402be9f632a27ea4b44 +SHA256: 38a7740de5178bac0cadc6704f93abc82c2c2fc8f9f397408ab9a96fc88fe0ea +SHA512: 1e492e548268a01735200d27e97ffa7d8e048907fc3357d5a7c3a06cc950cd976948dd3acf8094ba58bf1bff32c32182983241644b9b38634eabe62d1af97b0a +Description: Intel® oneAPI IoT Toolkit + + +Package: intel-iotkit-getting-started +Architecture: all +Version: 2022.3.0-8747 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 22 +Filename: pool/main/intel-iotkit-getting-started-2022.3.0-8747_all.deb +Size: 3732 +MD5sum: 36616c72346176c7a1746e40aeeafcde +SHA1: ae297985994f84150b98c6e2fc7bf80d10fd6110 +SHA256: e94a3b886acd5371efdb9980983bf360dc1af51f5dbb99dfbc82c232f7fa25ef +SHA512: 24907ff17f990cfc4b27a3dfdd4e9ac10400b912d8a98b73fd9168b1882322ba8a6f10e37b99d34d7c4c4b066bf3f3bd3dcfe5ba1721b0f65cc72f3d2d4bd11b +Description: Intel® oneAPI IoT Toolkit + + +Package: intel-iotkit-getting-started +Architecture: all +Version: 2022.3.1-16990 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 22 +Filename: pool/main/intel-iotkit-getting-started-2022.3.1-16990_all.deb +Size: 3732 +MD5sum: d2e79843be9627fdd1b24a4546873a98 +SHA1: 482bce0554dfd42d77e5c8f75165aae4885636dd +SHA256: 0dfe274d5f6e662d4ff62a2928d9facb1497d1c14257aac1d8c2f99b5a6c6b96 +SHA512: 3461f8e29c5b554a6463f2bd6bb03a78effcf0035903424eb4fd3488d8a391acaa4e53d58712bacb58f1aa9bcdcc8102813c5706b3cd0145ad70db6fdc12b193 +Description: Intel® oneAPI IoT Toolkit + + +Package: intel-iotkit-getting-started +Architecture: all +Version: 2023.0.0-25397 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 22 +Filename: pool/main/intel-iotkit-getting-started-2023.0.0-25397_all.deb +Size: 3736 +MD5sum: 1760d06d81151f462cad1f185af3b204 +SHA1: b44c2ec40129abf61b8424f975e6eb2ca07be0ad +SHA256: 3726904a8d67dcb1e86996ea4248ccca02da60ad3afdbf8afde1bcbc64563671 +SHA512: 767a19238b34a2cdab0b6bda471425814e3575e2505c2bc1b4d81c7c03397137b47687e1451be8599533ffc8f2df43fe4af9a1b297d1a5020a3c48ba9bc9012b +Description: Intel® oneAPI IoT Toolkit + + +Package: intel-iotkit-getting-started +Architecture: all +Version: 2023.1.0-46344 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 22 +Filename: pool/main/intel-iotkit-getting-started-2023.1.0-46344_all.deb +Size: 3736 +MD5sum: 9756c52ab308bdc2ddfcbd43ae485845 +SHA1: 65223981e83c8365e64885ed87990fc661894235 +SHA256: 98b3545d752a57edb77e3ac55b1d54d9b02f1fcb8275450476c5ac6e05d09da7 +SHA512: efae089a0375b2779f7ea1332405db950b0efc32f2e0291f4e8a9240cff860b1527cfec07336717e5c693bc67fddbcecda73d0334169c451d3bef68fcabd34df +Description: Intel® oneAPI IoT Toolkit + + +Package: intel-oneapi-common-licensing-2021.1.1 +Architecture: all +Version: 2021.1.1-60 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 182 +Filename: pool/main/intel-oneapi-common-licensing-2021.1.1-2021.1.1-60_all.deb +Size: 43788 +MD5sum: 06844012d2b794e42bf9c16559814453 +SHA1: ca009b67d852171ebfe38799f5dad9b1a9819707 +SHA256: ae4c1c0e8da68276ac555ff626aa40f5fdd190e4f3295d35866b2b6e3979d496 +SHA512: da86de9bf189ccce501284cc38bd37f7d4a3d0f626a42f464c8a738017604287d1cdcdfa7a868b9f7a3ef228168916a2d3b5efdb3ed4571cb680814e270db34b +Description: oneAPI Common License + + +Package: intel-oneapi-common-licensing +Architecture: all +Version: 2021.1.1-60 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-common-licensing-2021.1.1 +Filename: pool/main/intel-oneapi-common-licensing-2021.1.1-60_all.deb +Size: 2298 +MD5sum: 8e7cdf03f124ce1764c8532cd95863f6 +SHA1: d3d9b2187e85c4a52ac889b7b5a914163d558fba +SHA256: 76da6321ee3b802354ac7349a2a8570f94ec18e31a7355fdb03b9006fb2f01cf +SHA512: dfbb200ed34e392a67edc08da399ac274e5f04bb6e3fb446cae2fc483d1b92436f2cf956865c6639bcee9761253bbc7d54d8a918f376f5c0ea1a599f91bc6f5a +Description: oneAPI Common License + + +Package: intel-oneapi-common-licensing +Architecture: all +Version: 2021.2.0-195 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-common-licensing-2021.2.0 +Filename: pool/main/intel-oneapi-common-licensing-2021.2.0-195_all.deb +Size: 2298 +MD5sum: 6d41c94a74dd2637d09087f634dc6be1 +SHA1: 5a8723dde55916a1b668bcb791a70735bd22f939 +SHA256: 54d559e60a188e3c2dd9b3e869ba850df12d2b7fcc34f4bd114baeffc2a65cbf +SHA512: 7b95604c9ba774717e17963f5b0f142ceabe17dc262dfe1073fae7af7c954082e22df137c4c46c5ca84c8d9c708cfd2dedb9ad976c250c8776f50966bdb73934 +Description: oneAPI Common License + + +Package: intel-oneapi-common-licensing-2021.2.0 +Architecture: all +Version: 2021.2.0-195 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 146 +Filename: pool/main/intel-oneapi-common-licensing-2021.2.0-2021.2.0-195_all.deb +Size: 35646 +MD5sum: c954b5e25654f9a1302c2560872a889d +SHA1: 9bfe42e1e6f927d66854a7a0dd461bd26b8f6750 +SHA256: b9c7b7bebf05b817a2640562253959a0745296337a40354e9a22234f31543821 +SHA512: ed1c14e60a824bd50a3b7e75d24ccbcff335eccf17af45a609d9cf27c39014ae37a4515403a530837d558794261d71476f071e1ba867ea7d06ea4c15a1810f68 +Description: oneAPI Common License + + +Package: intel-oneapi-common-licensing-2021.3.0 +Architecture: all +Version: 2021.3.0-261 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 146 +Filename: pool/main/intel-oneapi-common-licensing-2021.3.0-2021.3.0-261_all.deb +Size: 35644 +MD5sum: 26d1529513f632a08ff14dee99c4d344 +SHA1: f23a9d9fe0a10b4792658ac155b80bfa287f0d28 +SHA256: 69f9be061197ed116dfd3094687f628b5f8915a3add95f516a43a78b8ba5f4f8 +SHA512: fc2ae1e0b310d8f606e2c94c80ce4f0f3fd8943623d202313cc55e0dc083a4f1b5d12a9e48b0e82b0b3430a12652a6add45845af1fc3dbba94616acd11f1369b +Description: oneAPI Common License + + +Package: intel-oneapi-common-licensing +Architecture: all +Version: 2021.3.0-261 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-common-licensing-2021.3.0 +Filename: pool/main/intel-oneapi-common-licensing-2021.3.0-261_all.deb +Size: 2298 +MD5sum: 745da5939808c9dae9827ef1664572c0 +SHA1: d78d602c4c44dbd29008b5b7d76de0dbe0a599cc +SHA256: a859f935372864d3f30e82baab4d370488153e6a0148593b0b45726eb9e501c6 +SHA512: ea0612733444faa47cbd122189d397be421417b48f63a22737e500167430ffacaa45a05cadc08897759b7b49b412685aefeaa20eb1025b457b52f001e97cbd46 +Description: oneAPI Common License + + +Package: intel-oneapi-common-licensing-2021.4.0 +Architecture: all +Version: 2021.4.0-327 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 146 +Filename: pool/main/intel-oneapi-common-licensing-2021.4.0-2021.4.0-327_all.deb +Size: 35682 +MD5sum: 24138fb7d4f7e73aca3b0c6886a9f5af +SHA1: dd12f832f607d90b61c631e4e8dc4c8af2326da2 +SHA256: 5984d85d27032283ad373d4962cfd631e1eb3f5dcc0209a283824382aa8d5fd8 +SHA512: f9f9851d3fd7e32ff5f514ef9486f0eb04d7c56c87b9e104eae1ab67edce28db10fb9203cd62d36a0d576e1bd376442a5c46498e4499702dc98206b0963663ca +Description: oneAPI Common License + + +Package: intel-oneapi-common-licensing +Architecture: all +Version: 2021.4.0-327 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-common-licensing-2021.4.0 +Filename: pool/main/intel-oneapi-common-licensing-2021.4.0-327_all.deb +Size: 2298 +MD5sum: abf72d4b6421002d42e7b888667412e8 +SHA1: 7a87a26e9322e660aae71e18edee807793217af7 +SHA256: 36bdd4e89beef776ee345cbde0a386f040bbc095cee8295b2142b4f925f45b45 +SHA512: 45108780e0da9f2e7d3d86fd3b5daf182cca3808d762e53352903cf5f938f43f90a81070de13b703ef0cfe59a3fed93e3ce0c19e6d13cf4b859b4f7c904d2c3d +Description: oneAPI Common License + + +Package: intel-oneapi-common-licensing-2022.0.0 +Architecture: all +Version: 2022.0.0-59 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 105 +Filename: pool/main/intel-oneapi-common-licensing-2022.0.0-2022.0.0-59_all.deb +Size: 30444 +MD5sum: c5b430930ea36033bbd2c9f90c71154f +SHA1: 057272e57ebdaa43d3348d879ba22b3d41d457b0 +SHA256: bf5f0d4960a6f6832a4db480ed7e8be4e72476ce50b3af546586639d10ce14c5 +SHA512: fc8f3d67fd95ac8003f7ca9fe0ec6d912132f3f9c7ff94a743fc5082514c164cb6fdf0d934b7fc1798531836d7987537c0f4e7ce22dd41258d7a4034d72bbed2 +Description: oneAPI Common License + + +Package: intel-oneapi-common-licensing +Architecture: all +Version: 2022.0.0-59 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-common-licensing-2022.0.0-59_all.deb +Size: 2072 +MD5sum: f00acfa602e419f30ca8a3fbbaf481d8 +SHA1: a01091e243f950c7d4144b0037d161dec46b25af +SHA256: 8d7c602ac816ce590fca2a1c269a5e5e1668bed52fd8744e208f8ac03ee17b71 +SHA512: 281d9e65a51d8fad15c5eb2bcec8abb42925da03dd317829ae2ea9ad6c12d84321c182d8e65d5ba645c40a4ec898843ecc659a1b23ef0a85e876fa57350fd7e5 +Description: oneAPI Common License + + +Package: intel-oneapi-common-licensing +Architecture: all +Version: 2022.0.1-139 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-common-licensing-2022.0.1 +Filename: pool/main/intel-oneapi-common-licensing-2022.0.1-139_all.deb +Size: 2072 +MD5sum: e7a1711f07a5bb47001ff0a36f780f25 +SHA1: eb5208042724f72882dfd8d4d6fb5f06b8fd2be4 +SHA256: 8501c4a3456a5b5b20d12a9e79b03741c72202ae74a7ae9b20b4c6af806c6a15 +SHA512: 49c97bfaeb4ab2be4ec09ac9806ffbacfad8d8899829b563eee75c6a2237a58b35b1123635d56dd1db10870a3ce8348a2bf6239cd43dee56fcb76be65df6c478 +Description: oneAPI Common License + + +Package: intel-oneapi-common-licensing +Architecture: all +Version: 2022.0.1-140 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-common-licensing-2022.0.1 +Filename: pool/main/intel-oneapi-common-licensing-2022.0.1-140_all.deb +Size: 2070 +MD5sum: 1b11f4b7e8dc7cec1801e9bb7bf50be3 +SHA1: b192fbd900c7d503f33037306c69877177a95ee5 +SHA256: 32b5e67056a46747ffa766267a5c0c8429e4bd1f966eb6bcc94938abdc6fd866 +SHA512: 1a2fb8d3d2b89cfd1aa950e3b63658a4564d8ae6d45ae3ad7dc84835c599aea85cd48a952e0e0c8fe977f990c0bd6df045ae8bb2e359c013924545f1122865a2 +Description: oneAPI Common License + + +Package: intel-oneapi-common-licensing-2022.0.1 +Architecture: all +Version: 2022.0.1-139 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 105 +Filename: pool/main/intel-oneapi-common-licensing-2022.0.1-2022.0.1-139_all.deb +Size: 30462 +MD5sum: 327bd59f1415b00ec356c1782f22c549 +SHA1: 9f16ac39ba84441060a828db1788131e09f811b4 +SHA256: 2ac438e6067c45476630ed52abbbdebe32957042110da765009126f3fd993dd1 +SHA512: cbfd52e28f29e943a7de3a72c7753a41c4a21951dd6b46864017e15af65f56bb54d6229ca7421c90752ba552550e8bfccc3afe34c926455e34ae98ed9eb3803e +Description: oneAPI Common License + + +Package: intel-oneapi-common-licensing-2022.0.1 +Architecture: all +Version: 2022.0.1-140 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 105 +Filename: pool/main/intel-oneapi-common-licensing-2022.0.1-2022.0.1-140_all.deb +Size: 30414 +MD5sum: f1a312b0211401c192ae0bd01d106773 +SHA1: 78db67cd8a7e787a242376326cc6fb77494f6500 +SHA256: 4a362ec8483175895aa8503c82094b327626348e6a552b8e24f9e8c2bc42489d +SHA512: b4c98d1a2ebf974c0f96c717acfdae9e0d44795d076892cd84d5ec2fa3111fcf98b39f8f128433e68defa3aae9777753c0021efdd7f7fbc0235686890cc7627c +Description: oneAPI Common License + + +Package: intel-oneapi-common-licensing +Architecture: all +Version: 2022.1.0-161 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-common-licensing-2022.1.0 +Filename: pool/main/intel-oneapi-common-licensing-2022.1.0-161_all.deb +Size: 2148 +MD5sum: 295ee19350e32104d41ca62d7c5cba84 +SHA1: 4743a2dadb96cd8d364d37f10ab8b9e4da03ac18 +SHA256: 4a1fd5ea24b5e200348218fc642bae1cb4ec21e1ad8e508b80bcd92ce85003f4 +SHA512: 2c14482767bdc75d12470a81e39258290091861589e59d3093a8962b1de4c4cc61adbe6bc0e9ee979ae460e33f6ea18609e707d83bea06bcdd27a9e4268fb147 +Description: oneAPI Common License + + +Package: intel-oneapi-common-licensing-2022.1.0 +Architecture: all +Version: 2022.1.0-161 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 105 +Filename: pool/main/intel-oneapi-common-licensing-2022.1.0-2022.1.0-161_all.deb +Size: 30506 +MD5sum: 676109fcb3e79b527fcd4ce1de04b752 +SHA1: ff5b2a1d05b281295e6f95b00a6340bfbe2bb4a6 +SHA256: 30f36ef653964ac629ce77c2c2d21a923c7ba4ff88936c39a8f39237b7446cca +SHA512: 1fd929e5b13835eb5440674bd83161c7fe75b3eefde6b239bce836bd4531f2a3ffd0f389ef7756c2d06d9ac4dae1cfe1a2b87af6120ccdfeca5f14ec1d8a9c35 +Description: oneAPI Common License + + +Package: intel-oneapi-common-licensing-2022.2.0 +Architecture: all +Version: 2022.2.0-8694 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 129 +Filename: pool/main/intel-oneapi-common-licensing-2022.2.0-2022.2.0-8694_all.deb +Size: 30510 +MD5sum: 86712c1d58a4efea71ac856cd6ca5e9f +SHA1: 70084611eea9c4dad047d0af2d3945837b7a4911 +SHA256: 060c0f68a2a90ff5d17d5846e52339efbd817e224cf91046339118dc59dd2d4e +SHA512: f25d29d70773b317eb207bdff9539f07d760811061d2644d037666937f667c29b050a2e39b4bad7e4d1c462fd00da8c79f0dbc02997f4fdd1484bbf3ecdb2c6c +Description: oneAPI Common License + + +Package: intel-oneapi-common-licensing +Architecture: all +Version: 2022.2.0-8694 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-common-licensing-2022.2.0 +Filename: pool/main/intel-oneapi-common-licensing-2022.2.0-8694_all.deb +Size: 2152 +MD5sum: 705667927baeb07c7aa9871e6085c562 +SHA1: 867fa409e2736b375af08279036d7771fe56fa28 +SHA256: 047716fe5b1e0fa6bd8c30f991381f124958e8203c71f6a361bec64d24d686d3 +SHA512: c9221a9e6ec63d9d7677999c4b943ac3a9133c21ebfbf79d64f24ed5558c8d14822d7009dd5c7496da43d5fc1cd1db67d3c9777155240df807c1cd83ad5bdaca +Description: oneAPI Common License + + +Package: intel-oneapi-common-licensing +Architecture: all +Version: 2022.2.1-14969 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-common-licensing-2022.2.1 +Filename: pool/main/intel-oneapi-common-licensing-2022.2.1-14969_all.deb +Size: 2152 +MD5sum: 32dc2fdfbf0b6da482fb5e87f9dab9dc +SHA1: 0ffab61b34e09c0f7925f1f287f1b36c6d6ea5fd +SHA256: d04a0cd4da089b3655766c7680789f3a062c799f8461df8f7e3f8e4c5e706a1e +SHA512: 1e92217c5bc7a47bb075a71439b7d488447755d5f0447cb21d04844ba91d79fe57e1ece084e9d27729d9aca4a2159067be7aa90d7f759a13746f9735d6b62587 +Description: oneAPI Common License + + +Package: intel-oneapi-common-licensing-2022.2.1 +Architecture: all +Version: 2022.2.1-14969 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 129 +Filename: pool/main/intel-oneapi-common-licensing-2022.2.1-2022.2.1-14969_all.deb +Size: 30498 +MD5sum: 10144c99587901ed9c13b30343784178 +SHA1: 2f734aff1892584b1181c9f4f2c8b11f291a0b18 +SHA256: 4e19df2b5fc3f26c0ece2d0d655000b52c9e97c70c0f6d0563745a68cbb9af18 +SHA512: 0037dea99ab8cebdfd9f7243a5efa5c60f290d0757c683ec9394b4dfa1d8a845572627a8c0e73911167409f9a0818672ba62a29d022bda725a550ea7fb6e581f +Description: oneAPI Common License + + +Package: intel-oneapi-common-licensing-2023.0.0 +Architecture: all +Version: 2023.0.0-25325 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 129 +Filename: pool/main/intel-oneapi-common-licensing-2023.0.0-2023.0.0-25325_all.deb +Size: 30502 +MD5sum: c0e28fba10e89989db77c989e91ad0aa +SHA1: f7b7abba08c1cbe73b6e5fffda1a18e185c5fe8a +SHA256: 801db78b05c548060638dc02b819ee9b4a714b920aca22c8d57cf89ec619e130 +SHA512: de40984b482e65c2b2ac7b714c75eda8d1cc2eef872019f697213cddf7b6e5225beb346f37ae10908990955d6bf99014dba3357437d7c638b6ee48389afd42dd +Description: oneAPI Common License + + +Package: intel-oneapi-common-licensing +Architecture: all +Version: 2023.0.0-25325 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-common-licensing-2023.0.0 +Filename: pool/main/intel-oneapi-common-licensing-2023.0.0-25325_all.deb +Size: 2152 +MD5sum: b35ee1c1ea771bd4f2b2f308697d65ea +SHA1: f72dd559a9cf201f246de67dacd59623533ebd6a +SHA256: 71ab89002ef7cfa74328593b8b4ff41d3f4d1e3985e0792f0c83c01dcc6bdf56 +SHA512: 4503de9034445fc5f15c94de44dae102e88c507ea3474d869f1746016ad2695c2c2b704e7a94e2af2980251c510e2f583680ff8d447a922fcda21a7878765008 +Description: oneAPI Common License + + +Package: intel-oneapi-common-licensing-2023.1.0 +Architecture: all +Version: 2023.1.0-43473 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 129 +Filename: pool/main/intel-oneapi-common-licensing-2023.1.0-2023.1.0-43473_all.deb +Size: 30486 +MD5sum: aadb681176aa4ca1d3ed78547f9dc74d +SHA1: f587945e3f2b4e2e36a9228938e84ef1c093fd68 +SHA256: 5a00affd150f0f8475b999f2a7719f6aaffaf67eaf07dd70072295299451fb9a +SHA512: 7e5dbdf4f8c4e958069b13de968e7abfdb8187452f680ed0787810e9752265b379b5de1e91e0309888c977721efd4390227b32c933323a45ca5565e1adc1ce42 +Description: oneAPI Common License + + +Package: intel-oneapi-common-licensing +Architecture: all +Version: 2023.1.0-43473 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-common-licensing-2023.1.0 +Filename: pool/main/intel-oneapi-common-licensing-2023.1.0-43473_all.deb +Size: 2148 +MD5sum: db2dd7f55df82298610f3df65239451f +SHA1: 4beba996913f59ed5d5ee59573f34b7ea1b8e543 +SHA256: 2f03fb1c96b489c53ac77b34ed231313f8294b7447f822a417e4d53aa5f151c6 +SHA512: aca60a3a33c9f5c57148083e25435472d0104c9372f2a046e18bbd4793c1d509202bfa04181e02df1b07cf3d8456d129d0588b83cc474df46ef8d0a84d4c93a2 +Description: oneAPI Common License + + +Package: intel-oneapi-common-vars +Architecture: all +Version: 2021.1.1-60 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 45 +Depends: intel-oneapi-common-licensing +Filename: pool/main/intel-oneapi-common-vars-2021.1.1-60_all.deb +Size: 12046 +MD5sum: e5cc3e54264f33e16775ac31d318ec45 +SHA1: e608395f7fbf33e243ba4da6dbd78987c11adce0 +SHA256: fc69a60d825ed1086209c817b537d6fa302430cd3738dd33c2ab0a4964771097 +SHA512: f71f5fab8156f4d65ebcc5fedb6f9f0dca68a813624d3cc475b0f2d99c386908eeedd976446e7a0d8253dd0a28f20f75d47d06880697a5b812d1125483a620fb +Description: oneAPI Common Environment Scripts + + +Package: intel-oneapi-common-vars +Architecture: all +Version: 2021.2.0-195 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 50 +Depends: intel-oneapi-common-licensing +Filename: pool/main/intel-oneapi-common-vars-2021.2.0-195_all.deb +Size: 13232 +MD5sum: 49d654ef534a46b0afd4dab776968e9a +SHA1: 406996d18c60f88bf1954a70aa51be5d18fb4faf +SHA256: 8d3abdd2b117d5be4bbc215bb901df043cb7c3711c43b3d10a99f36c8f83855c +SHA512: bf830a26ae864e7f16a6be21ac911772a3ac2e6e25bbeaeb90bbed1dfdf419186f4cbe12bc1890c79e3a360dcabcc7669811cec756b5265ae261da92ac588b82 +Description: oneAPI Common Environment Scripts + + +Package: intel-oneapi-common-vars +Architecture: all +Version: 2021.3.0-261 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 49 +Depends: intel-oneapi-common-licensing-2021.3.0 +Filename: pool/main/intel-oneapi-common-vars-2021.3.0-261_all.deb +Size: 12952 +MD5sum: 8eb1acb09614383d2f78eefb85da04ee +SHA1: b54f898fca8f791e0051d62471df13b58bf14028 +SHA256: 168ff1830a38d5e5290708d3fd4ff5dbe6eb6d3e8e3565f61979e4bc03d8c951 +SHA512: 5d05cafeb19c5619970ae6aea5180bdc05baadee272a7723a76c69e538ac051467c1bbd599f67ca7e2433468b88adf53922148cc3765c2dc19f2b5b2104d94cc +Description: oneAPI Common Environment Scripts + + +Package: intel-oneapi-common-vars +Architecture: all +Version: 2021.4.0-327 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 53 +Depends: intel-oneapi-common-licensing-2021.4.0 +Filename: pool/main/intel-oneapi-common-vars-2021.4.0-327_all.deb +Size: 13460 +MD5sum: ce05dde83fd1631036e0e5fe4d65e4c0 +SHA1: e64d5490bfcfec018e033aecdd279a9426314fd7 +SHA256: f2aab1934e1c6591b70d890f730b1e4b40b34ad26119f1854a0ac4a599dc3b30 +SHA512: 3be7f4cae948af1e169aa572d35b9ad54193fce37ab87e6d61dcb73275dfce96d9df9a073bc922ea862c8403ddf98411a9e215fe81ed36f5d65e47ef2b5c95b7 +Description: oneAPI Common Environment Scripts + + +Package: intel-oneapi-common-vars +Architecture: all +Version: 2022.0.0-59 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 54 +Depends: intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-common-vars-2022.0.0-59_all.deb +Size: 13690 +MD5sum: 85c81060dc26d19a18c21f043d0020fb +SHA1: 4c16f32bb712c3db27b22b7af5eac7313bc13e36 +SHA256: 9f297897575d715af23fa3fabff087ead1117e8939f898bc388a191200608aa6 +SHA512: a19778c34ed1f45e812479a4057bdbe81faef77f0a8d3266307f37a5303db2de3ee809cc4527f51b29568d3e94dd47a9a9bca9846ab2db0eb68992048d10bb28 +Description: oneAPI Common Environment Scripts + + +Package: intel-oneapi-common-vars +Architecture: all +Version: 2022.0.1-139 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 54 +Depends: intel-oneapi-common-licensing-2022.0.1 +Filename: pool/main/intel-oneapi-common-vars-2022.0.1-139_all.deb +Size: 13686 +MD5sum: 5f1c2ecd34d19f8eb38701628eeb92eb +SHA1: 15b827d081008c2937a423c9ea5046ed72c0ad89 +SHA256: fe38139d967fa68c9288b8724a41e30dae9e55cc782ab5a13e44f04fe1c4c287 +SHA512: a96bfb709f14d41b9b53c2140dd767c79e31c6b54b90150bba05cf6026bd07ff9d1a99d1bd38b567ff2dabf68329f0e3a0863b7e4b9dd18315512e16b159da64 +Description: oneAPI Common Environment Scripts + + +Package: intel-oneapi-common-vars +Architecture: all +Version: 2022.0.1-140 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 54 +Depends: intel-oneapi-common-licensing-2022.0.1 +Filename: pool/main/intel-oneapi-common-vars-2022.0.1-140_all.deb +Size: 13672 +MD5sum: c8d6537e4752e6692ff07a843a0a7f89 +SHA1: d39cfd7851a7d8011b53785a4d78de69812209cf +SHA256: ef8671ec252c99cad95e30a59ef4ca75d55024f77241cdf93516485c36a5937a +SHA512: 3a51e7e40a7df2246864d94514d0545d9e54539d28891d4b5b534cdbee0639bd96a3b0bcadca18c0aa9b0e3e271f15f5d2c75cb423732f26bb18b35f531569a0 +Description: oneAPI Common Environment Scripts + + +Package: intel-oneapi-common-vars +Architecture: all +Version: 2022.1.0-161 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 37 +Depends: intel-oneapi-common-licensing-2022.1.0 +Filename: pool/main/intel-oneapi-common-vars-2022.1.0-161_all.deb +Size: 11634 +MD5sum: c02c8098b65633b0ff3469f587bf106c +SHA1: e511b27f00f30ffa8839e231b969c518dd9ce4b8 +SHA256: 52a2726739652b4d3021a9f21d8ca664cd5582853b561e421f003b94789a4469 +SHA512: cfb24e5f63a788d24c3c5d876cb3c16a55a8582f85a2752f542da33fd80941fd9a921d1645643257b952e87fd736b73782341059e835e4ee4d97302661cf16f2 +Description: oneAPI Common Environment Scripts + + +Package: intel-oneapi-common-vars +Architecture: all +Version: 2022.2.0-8694 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 53 +Depends: intel-oneapi-common-licensing-2022.2.0 +Filename: pool/main/intel-oneapi-common-vars-2022.2.0-8694_all.deb +Size: 11634 +MD5sum: adc2c42e86b04646e76fbeb478cd6729 +SHA1: 8bba3b555c8f3e967f2154392c7ccd2e2a7330b0 +SHA256: 57c94bb485ec07f123d4ba9004d92ce6c9e11bfe071f9b9982afd69bf82f8775 +SHA512: 9121d0a28e320d6510cf0b00f6b53b0f22ae30b7d0970dc7777b465edf4f893abfdea9dfff106c406a59804019a77be1fd6007b524d85d83d006e9748fa46f7a +Description: oneAPI Common Environment Scripts + + +Package: intel-oneapi-common-vars +Architecture: all +Version: 2022.2.1-14969 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 53 +Depends: intel-oneapi-common-licensing-2022.2.1 +Filename: pool/main/intel-oneapi-common-vars-2022.2.1-14969_all.deb +Size: 11638 +MD5sum: 789cb1af3a782ded4978093d615b7244 +SHA1: b16942ad6aad12aa0cdaa0f5807d2944f249684a +SHA256: c2d86b9ba11fc0d3c26a49a90b3b4827d4d46d6cab2313c7120efb1de2111b69 +SHA512: 8d3cf94a5fd3a24f33db3e61427273aa0b70ad34a1f3a0a0c58a8f9185d480d10c6c0eded44b86865a113970c4112d3c917c826cdd301946d2a1d9bdbf4732d3 +Description: oneAPI Common Environment Scripts + + +Package: intel-oneapi-common-vars +Architecture: all +Version: 2023.0.0-25325 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 53 +Depends: intel-oneapi-common-licensing-2023.0.0 +Filename: pool/main/intel-oneapi-common-vars-2023.0.0-25325_all.deb +Size: 11642 +MD5sum: b7c835b0af3738ed56f18914ad8f83ab +SHA1: 2120de70497cda5f89565aade1c21cabd3e02732 +SHA256: a7779af0502470d07db51789abc2d31a7f80e9ffd6ac77ed3ffcaad79dbecd82 +SHA512: 97c5100590b64018b8c8888d83edd17572836156f1eb0fa55330609c1a8d6db06591a7a864ce52842172bb482f7dc97bcee5ed1022825627a96963bf0deae209 +Description: oneAPI Common Environment Scripts + + +Package: intel-oneapi-common-vars +Architecture: all +Version: 2023.1.0-43473 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 53 +Depends: intel-oneapi-common-licensing-2023.1.0 +Filename: pool/main/intel-oneapi-common-vars-2023.1.0-43473_all.deb +Size: 11638 +MD5sum: 66e8539e890eb7fa5292dc907bfe26c0 +SHA1: de8282218f92913056abed0ae8b5b332936d54ab +SHA256: 5eced1aad7100cdeff317798046589e4b08b5095602e23e9a87adc0fb3e42e52 +SHA512: 709a2dbc756a8a258a42248d53be454609581966ee33e70830cda6acbbe688957b3cbaca2c7bb030cb2f2deae81f9ff09e8cb7b097a841a0834e44b3b38816f3 +Description: oneAPI Common Environment Scripts + + +Package: intel-oneapi-compiler-cpp-eclipse-cfg +Architecture: all +Version: 2021.1.1-189 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1 +Provides: intel-oneapi-dpcpp-cpp-compiler-pro-eclipse-cfg (= 2021.1.1-189), intel-oneapi-cpp-compiler-eclipse-cfg (= 2021.1.1-189) +Depends: intel-oneapi-common-vars,intel-oneapi-common-licensing +Breaks: intel-oneapi-dpcpp-cpp-compiler-pro-eclipse-cfg (<< 2021.1.1-189), intel-oneapi-cpp-compiler-eclipse-cfg (<< 2021.1.1-189) +Replaces: intel-oneapi-dpcpp-cpp-compiler-pro-eclipse-cfg (<< 2021.1.1-189), intel-oneapi-cpp-compiler-eclipse-cfg (<< 2021.1.1-189) +Filename: pool/main/intel-oneapi-compiler-cpp-eclipse-cfg-2021.1.1-189_all.deb +Size: 2014 +MD5sum: cf1af3c5f4a0520585d26a4613503cbb +SHA1: 7017780d10913b2f4d4852704977762e2c58307a +SHA256: c76a2feb46c0fbc4d297737946c7cf7bbc89040811bb63531211a1a7667993a2 +SHA512: 50a169e5fd1695520cc279ee50874bf4ff668176738140ec597cca2a1f963c3749ef4ad592a23776ea23442118c9eb856e7fee2a4407538d7f7bded8e88fa9f3 +Description: Intel® oneAPI DPC++/C++ Compiler 2021.1.1 for Linux* eclipse integration configuration file (C++) + + +Package: intel-oneapi-compiler-cpp-eclipse-cfg +Architecture: all +Version: 2021.1.2-266 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1 +Provides: intel-oneapi-dpcpp-cpp-compiler-pro-eclipse-cfg (= 2021.1.2-266), intel-oneapi-cpp-compiler-eclipse-cfg (= 2021.1.2-266) +Depends: intel-oneapi-common-vars,intel-oneapi-common-licensing +Breaks: intel-oneapi-dpcpp-cpp-compiler-pro-eclipse-cfg (<< 2021.1.2-266), intel-oneapi-cpp-compiler-eclipse-cfg (<< 2021.1.2-266) +Replaces: intel-oneapi-dpcpp-cpp-compiler-pro-eclipse-cfg (<< 2021.1.2-266), intel-oneapi-cpp-compiler-eclipse-cfg (<< 2021.1.2-266) +Filename: pool/main/intel-oneapi-compiler-cpp-eclipse-cfg-2021.1.2-266_all.deb +Size: 2018 +MD5sum: 767db77b7cfcd53bd8738e41107451aa +SHA1: aba70a683394628924787f1d188c7032d19a5263 +SHA256: 849e765aa1d9d9d557784116caba81236e1d5d75259707bf44b3918ea06a23f2 +SHA512: 70650cb1c8b908113290006ddbf795f89cb91e6ddb12448f4138b3f426f6ec45dadc41fa878751a9cdb0604ece784414394fd7c2f246ff68d85cf7fd9588f24f +Description: Intel® oneAPI DPC++/C++ Compiler 2021.1.2 for Linux* eclipse integration configuration file (C++) + + +Package: intel-oneapi-compiler-cpp-eclipse-cfg +Architecture: all +Version: 2021.2.0-610 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1 +Provides: intel-oneapi-dpcpp-cpp-compiler-pro-eclipse-cfg (= 2021.2.0-610), intel-oneapi-cpp-compiler-eclipse-cfg (= 2021.2.0-610) +Depends: intel-oneapi-common-vars (>= 2021.2.0-195), intel-oneapi-common-licensing-2021.2.0 +Breaks: intel-oneapi-dpcpp-cpp-compiler-pro-eclipse-cfg (<< 2021.2.0-610), intel-oneapi-cpp-compiler-eclipse-cfg (<< 2021.2.0-610) +Replaces: intel-oneapi-dpcpp-cpp-compiler-pro-eclipse-cfg (<< 2021.2.0-610), intel-oneapi-cpp-compiler-eclipse-cfg (<< 2021.2.0-610) +Filename: pool/main/intel-oneapi-compiler-cpp-eclipse-cfg-2021.2.0-610_all.deb +Size: 2026 +MD5sum: a6db944f86827f666c43b3002b5f739c +SHA1: a57e4495a4744bee97937d2f5ef4c1a69e5726e2 +SHA256: 21651b1d5d5f24c3bc7ef9ac99cc04f5464ea8e6189611f95a71cae10169e549 +SHA512: a3b7f3affef7dde1f76ac7ca175ede35f3f678cee6c135a81a71f9c9e00893b00e42729ae0c15e42a3f7056f9f038d330fde23d075f31e816fa9fcbcf6769c51 +Description: Intel® oneAPI DPC++/C++ Compiler 2021.2.0 for Linux* eclipse integration configuration file (C++) + + +Package: intel-oneapi-compiler-cpp-eclipse-cfg +Architecture: all +Version: 2021.3.0-3350 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1 +Provides: intel-oneapi-dpcpp-cpp-compiler-pro-eclipse-cfg (= 2021.3.0-3350), intel-oneapi-cpp-compiler-eclipse-cfg (= 2021.3.0-3350) +Depends: intel-oneapi-common-vars (>= 2021.3.0-261), intel-oneapi-common-licensing-2021.3.0 +Breaks: intel-oneapi-dpcpp-cpp-compiler-pro-eclipse-cfg (<< 2021.3.0-3350), intel-oneapi-cpp-compiler-eclipse-cfg (<< 2021.3.0-3350) +Replaces: intel-oneapi-dpcpp-cpp-compiler-pro-eclipse-cfg (<< 2021.3.0-3350), intel-oneapi-cpp-compiler-eclipse-cfg (<< 2021.3.0-3350) +Filename: pool/main/intel-oneapi-compiler-cpp-eclipse-cfg-2021.3.0-3350_all.deb +Size: 2026 +MD5sum: b4dccd19b2dd48b3efab3f63c86535fb +SHA1: 3e062af932aeca1a08f4812d922b7c8ff9b3262b +SHA256: c317ba6fa54df15d69540040ecfbe31ab7fa7d08351802e8aed4cb2b25a21f03 +SHA512: d0dba8037cad6d83ad5bb98d767822bef8a695bbde6880129142fcd69c51053c2bc8c712c5d011409f2d8d518c516786c000ed04e7e8ae18a646c08a8a3fa9fb +Description: Intel® oneAPI DPC++/C++ Compiler 2021.3.0 for Linux* eclipse integration configuration file (C++) + + +Package: intel-oneapi-compiler-cpp-eclipse-cfg +Architecture: all +Version: 2021.4.0-3561 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1 +Provides: intel-oneapi-dpcpp-cpp-compiler-pro-eclipse-cfg (= 2021.4.0-3561), intel-oneapi-cpp-compiler-eclipse-cfg (= 2021.4.0-3561) +Depends: intel-oneapi-common-vars (>= 2021.4.0-327), intel-oneapi-common-licensing-2021.4.0 +Breaks: intel-oneapi-dpcpp-cpp-compiler-pro-eclipse-cfg (<< 2021.4.0-3561), intel-oneapi-cpp-compiler-eclipse-cfg (<< 2021.4.0-3561) +Replaces: intel-oneapi-dpcpp-cpp-compiler-pro-eclipse-cfg (<< 2021.4.0-3561), intel-oneapi-cpp-compiler-eclipse-cfg (<< 2021.4.0-3561) +Filename: pool/main/intel-oneapi-compiler-cpp-eclipse-cfg-2021.4.0-3561_all.deb +Size: 2026 +MD5sum: 21a2f9a718736ecd883145f3f28ada49 +SHA1: e896e2f97d0c28ac8b86903ac0e2734771050a0a +SHA256: 5271b4b5e576eb49320c849e865b003bfd1761ced70745eda10019e381558322 +SHA512: 82c4a6b9cab510079387b1e1af2f3cd52f2e04848d6ac90a26449c64115c19bbdb28939bafc124393c8603b810452dbe1f7b2293138597f480f935d7d0021210 +Description: Intel® oneAPI DPC++/C++ Compiler 2021.4.0 for Linux* eclipse integration configuration file (C++) + + +Package: intel-oneapi-compiler-cpp-eclipse-cfg +Architecture: all +Version: 2022.0.1-3633 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1 +Provides: intel-oneapi-dpcpp-cpp-compiler-pro-eclipse-cfg (= 2022.0.1-3633), intel-oneapi-cpp-compiler-eclipse-cfg (= 2022.0.1-3633) +Depends: intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Breaks: intel-oneapi-dpcpp-cpp-compiler-pro-eclipse-cfg (<< 2022.0.1-3633), intel-oneapi-cpp-compiler-eclipse-cfg (<< 2022.0.1-3633) +Replaces: intel-oneapi-dpcpp-cpp-compiler-pro-eclipse-cfg (<< 2022.0.1-3633), intel-oneapi-cpp-compiler-eclipse-cfg (<< 2022.0.1-3633) +Filename: pool/main/intel-oneapi-compiler-cpp-eclipse-cfg-2022.0.1-3633_all.deb +Size: 2030 +MD5sum: c811b80541d63a630596ae43aff83823 +SHA1: 501700e0141611fa9f9aa48c3153d298d48e3bd6 +SHA256: 0a79ab43d88473995a90d22af431cfbd3593e33a92f2a29b5732eb1d736ad1fe +SHA512: f1dfab12fe2ce31007c78b407fc30b8e77711a1801f2400e0acbffde06ee5318f5077ecf0199e4291e02e8d7d6eacf0c4f24889b5c2ed4d1c6fb7c387bc8b850 +Description: Intel® oneAPI DPC++/C++ Compiler 2022.0.1 for Linux* eclipse integration configuration file (C++) + + +Package: intel-oneapi-compiler-cpp-eclipse-cfg +Architecture: all +Version: 2022.0.2-3658 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1 +Provides: intel-oneapi-dpcpp-cpp-compiler-pro-eclipse-cfg (= 2022.0.2-3658), intel-oneapi-cpp-compiler-eclipse-cfg (= 2022.0.2-3658) +Depends: intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Breaks: intel-oneapi-dpcpp-cpp-compiler-pro-eclipse-cfg (<< 2022.0.2-3658), intel-oneapi-cpp-compiler-eclipse-cfg (<< 2022.0.2-3658) +Replaces: intel-oneapi-dpcpp-cpp-compiler-pro-eclipse-cfg (<< 2022.0.2-3658), intel-oneapi-cpp-compiler-eclipse-cfg (<< 2022.0.2-3658) +Filename: pool/main/intel-oneapi-compiler-cpp-eclipse-cfg-2022.0.2-3658_all.deb +Size: 2026 +MD5sum: f21ec1b70cca7b35055d29566da7f51d +SHA1: 5fcd5bdcc05a725261f5f40b2bd221417e9c03a1 +SHA256: 89e218c90f5b3c7579e07f0ebfafbc39d5ef21cd33acf3d8abc5e571d665a307 +SHA512: d21b2cfa051c481d41eb7f230c749572f4a4b7b25566687cb1f6d6ce4aeb798e57763c7c75e99fc73ac4b928110e9add27fbc744b4b275fb0dfeb14d85c91f4e +Description: Intel® oneAPI DPC++/C++ Compiler 2022.0.2 for Linux* eclipse integration configuration file (C++) + + +Package: intel-oneapi-compiler-cpp-eclipse-cfg +Architecture: all +Version: 2022.1.0-3768 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1 +Provides: intel-oneapi-dpcpp-cpp-compiler-pro-eclipse-cfg (= 2022.1.0-3768), intel-oneapi-cpp-compiler-eclipse-cfg (= 2022.1.0-3768) +Depends: intel-oneapi-common-vars (>= 2022.1.0-161), intel-oneapi-common-licensing-2022.1.0 +Breaks: intel-oneapi-dpcpp-cpp-compiler-pro-eclipse-cfg (<< 2022.1.0-3768), intel-oneapi-cpp-compiler-eclipse-cfg (<< 2022.1.0-3768) +Replaces: intel-oneapi-dpcpp-cpp-compiler-pro-eclipse-cfg (<< 2022.1.0-3768), intel-oneapi-cpp-compiler-eclipse-cfg (<< 2022.1.0-3768) +Filename: pool/main/intel-oneapi-compiler-cpp-eclipse-cfg-2022.1.0-3768_all.deb +Size: 2104 +MD5sum: 76a6403c7ee0ec5ea127f54641629807 +SHA1: f570644359ef73bb91f075b9c738c798cd609104 +SHA256: d505ca48613799f5cd63d22a006f8db69f3bbf999269183fda418f1c04c3088d +SHA512: a4d16fde173779511583d76d349048d4e9d1fe859f52610c0e6c7c17dccb63cbd67c9caee8e57343fc5779ee032e5e9c1e5cc886842cba9bc28d95770ac869c1 +Description: Intel® oneAPI DPC++/C++ Compiler 2022.1.0 for Linux* eclipse integration configuration file (C++) + + +Package: intel-oneapi-compiler-cpp-eclipse-cfg +Architecture: all +Version: 2022.2.0-8734 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 25 +Provides: intel-oneapi-dpcpp-cpp-compiler-pro-eclipse-cfg (= 2022.2.0-8734), intel-oneapi-cpp-compiler-eclipse-cfg (= 2022.2.0-8734) +Depends: intel-oneapi-common-vars (>= 2022.2.0-8694), intel-oneapi-common-licensing-2022.2.0 +Breaks: intel-oneapi-dpcpp-cpp-compiler-pro-eclipse-cfg (<< 2022.2.0-8734), intel-oneapi-cpp-compiler-eclipse-cfg (<< 2022.2.0-8734) +Replaces: intel-oneapi-dpcpp-cpp-compiler-pro-eclipse-cfg (<< 2022.2.0-8734), intel-oneapi-cpp-compiler-eclipse-cfg (<< 2022.2.0-8734) +Filename: pool/main/intel-oneapi-compiler-cpp-eclipse-cfg-2022.2.0-8734_all.deb +Size: 2100 +MD5sum: b4855718011036bc7b00073604db0447 +SHA1: 80e15e524f0ea2886bccda10088c1bcf74d6f50a +SHA256: e07e87ed69fcb5fa4ff1f2af944d33d328f363d262905f0e79a796900dcf5bd9 +SHA512: f5ff8e70b012755f1d6b7637b9da5898c20f3204525779f175d92cf2b4d4609aeffee9bf2072febf47e139890dfb31ed00f1308ae07fa392a0601bf651bab2cc +Description: Intel® oneAPI DPC++/C++ Compiler 2022.2.0 for Linux* eclipse integration configuration file (C++) + + +Package: intel-oneapi-compiler-cpp-eclipse-cfg +Architecture: all +Version: 2022.2.1-16953 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 25 +Provides: intel-oneapi-dpcpp-cpp-compiler-pro-eclipse-cfg (= 2022.2.1-16953), intel-oneapi-cpp-compiler-eclipse-cfg (= 2022.2.1-16953) +Depends: intel-oneapi-common-vars (>= 2022.2.1-14969), intel-oneapi-common-licensing-2022.2.1 +Breaks: intel-oneapi-dpcpp-cpp-compiler-pro-eclipse-cfg (<< 2022.2.1-16953), intel-oneapi-cpp-compiler-eclipse-cfg (<< 2022.2.1-16953) +Replaces: intel-oneapi-dpcpp-cpp-compiler-pro-eclipse-cfg (<< 2022.2.1-16953), intel-oneapi-cpp-compiler-eclipse-cfg (<< 2022.2.1-16953) +Filename: pool/main/intel-oneapi-compiler-cpp-eclipse-cfg-2022.2.1-16953_all.deb +Size: 2108 +MD5sum: e4c45ee1c897158bd44ede72cf1a6699 +SHA1: a06ac9e0473a01d85dda406d0a0f268a48238fc2 +SHA256: 1987a05f5569149ae910c101f9220081bdb7cf1fcfad15f58d95bc9d1a7ca66e +SHA512: 545311b1317a3f25cdb55d3f84d0fcc35bd8e95e5a95da98eb0a6ffa8e8c2ea14569ed2ce1fd52e3c0c1c6ea0f225cf1e5a5287894d43440e034eca1e31d969e +Description: Intel® oneAPI DPC++/C++ Compiler 2022.2.1 for Linux* eclipse integration configuration file (C++) + + +Package: intel-oneapi-compiler-cpp-eclipse-cfg +Architecture: all +Version: 2023.0.0-25370 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 25 +Provides: intel-oneapi-dpcpp-cpp-compiler-pro-eclipse-cfg (= 2023.0.0-25370), intel-oneapi-cpp-compiler-eclipse-cfg (= 2023.0.0-25370) +Depends: intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing-2023.0.0 +Breaks: intel-oneapi-dpcpp-cpp-compiler-pro-eclipse-cfg (<< 2023.0.0-25370), intel-oneapi-cpp-compiler-eclipse-cfg (<< 2023.0.0-25370) +Replaces: intel-oneapi-dpcpp-cpp-compiler-pro-eclipse-cfg (<< 2023.0.0-25370), intel-oneapi-cpp-compiler-eclipse-cfg (<< 2023.0.0-25370) +Filename: pool/main/intel-oneapi-compiler-cpp-eclipse-cfg-2023.0.0-25370_all.deb +Size: 2104 +MD5sum: c43081f8d351eb84336872a612bda436 +SHA1: 99a429d4e21c1fac1581dea64e5e7885293e3214 +SHA256: 3828f3cb147ec574de90e5fb518355a913c0d727e9d37e63db3a1e06a98f188a +SHA512: d19f2d396a930e1b74d72da3da4dd3b8a8bd901778f89110c7a773325cf2b83975c6c9260e338cdb58163feac4f097f5dad440c1dd4123b6d88298fb85f21e9d +Description: Intel® oneAPI DPC++/C++ Compiler 2023.0.0 for Linux* eclipse integration configuration file (C++) + + +Package: intel-oneapi-compiler-cpp-eclipse-cfg +Architecture: all +Version: 2023.1.0-46305 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 25 +Provides: intel-oneapi-dpcpp-cpp-compiler-pro-eclipse-cfg (= 2023.1.0-46305), intel-oneapi-cpp-compiler-eclipse-cfg (= 2023.1.0-46305) +Depends: intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing-2023.1.0 +Breaks: intel-oneapi-dpcpp-cpp-compiler-pro-eclipse-cfg (<< 2023.1.0-46305), intel-oneapi-cpp-compiler-eclipse-cfg (<< 2023.1.0-46305) +Replaces: intel-oneapi-dpcpp-cpp-compiler-pro-eclipse-cfg (<< 2023.1.0-46305), intel-oneapi-cpp-compiler-eclipse-cfg (<< 2023.1.0-46305) +Filename: pool/main/intel-oneapi-compiler-cpp-eclipse-cfg-2023.1.0-46305_all.deb +Size: 2104 +MD5sum: 20e07905a867be1271d3bedc69809b25 +SHA1: fb1b2b8b056d095ce98d39d8101aba1e270f3ddc +SHA256: 9d9bdb76756be285ce181aef01744e6bc8547d402cc98fe75e930daad67b1ceb +SHA512: d39d7f6b05b8adaf03883abb01dcaae661f2841177b7ff50ebbdc03f0f40cf6e271b39ac9b5e037763538d94fd07210ef5bde8108fd1891461b1f6bd1c008dd7 +Description: Intel® oneAPI DPC++/C++ Compiler 2023.1.0 for Linux* eclipse integration configuration file (C++) + + +Package: intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-common-2021.1.1 +Architecture: all +Version: 2021.1.1-189 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 891 +Depends: intel-oneapi-compiler-dpcpp-cpp-common-2021.1.1,intel-oneapi-common-vars,intel-oneapi-common-licensing +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-common-2021.1.1-2021.1.1-189_all.deb +Size: 108558 +MD5sum: e577d194d2f5cf59cc14c73dcf1e6242 +SHA1: 1df10bbdd56a72c0f9929567ed4abae613456739 +SHA256: aee4442597ebc853fe35838466754ced67ac4246834a34fd1ec11ba5a00dbb50 +SHA512: de0a29cb317276a002ae852d269a237820eba0e6092018f9d4e981609e8bb6abae91f23420a7abc534ee141cbb2a4919a16c584b1958f568864a5556bff5272b +Description: Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic 2021.1.1 for Linux* + + +Package: intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-common-2021.1.2 +Architecture: all +Version: 2021.1.2-266 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 891 +Depends: intel-oneapi-compiler-dpcpp-cpp-common-2021.1.2,intel-oneapi-common-vars,intel-oneapi-common-licensing +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-common-2021.1.2-2021.1.2-266_all.deb +Size: 108558 +MD5sum: 1a4b4d04b8b5d106603501d1122e3e51 +SHA1: 7dd67d276ada42cf636daa08ab5d02b9aa5f3f58 +SHA256: ac5039c84adc6a341bfc72571e74efdb0ec2593f151a5ec84ab69c4284f7632f +SHA512: 978229ee06fead52e9fcd1f94ca75036459f9164d3880de6309969c2c365d1a8f524fce4d738147738bd75b9f513c24c40fd64ad2f769a9dad4d850b998aae6b +Description: Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic 2021.1.2 for Linux* + + +Package: intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-common-2021.2.0 +Architecture: all +Version: 2021.2.0-610 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 865 +Depends: intel-oneapi-compiler-dpcpp-cpp-common-2021.2.0, intel-oneapi-common-vars (>= 2021.2.0-195), intel-oneapi-common-licensing-2021.2.0 +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-common-2021.2.0-2021.2.0-610_all.deb +Size: 109140 +MD5sum: 5112169b28ce6b2ead20f2b77c62989a +SHA1: 2711e84f64b95c6c4e51e51b80d15825f3446dae +SHA256: 9c5f3f48b2fdb5c62bf93cb9f8c28f8267138ed84c48b0ff95d881204a9b8e33 +SHA512: 2ac430ed66b6df44bc2dc67f14518164d982a3a636bc5c8bf4084f3d0a823219ab4a29fa425edb5f2fc4eda1266e9bbc918b51589cb28d235bcbb152a07327c1 +Description: Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic 2021.2.0 for Linux* + + +Package: intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-common-2021.3.0 +Architecture: all +Version: 2021.3.0-3350 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 876 +Depends: intel-oneapi-compiler-dpcpp-cpp-common-2021.3.0, intel-oneapi-common-vars (>= 2021.3.0-261), intel-oneapi-common-licensing-2021.3.0 +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-common-2021.3.0-2021.3.0-3350_all.deb +Size: 108894 +MD5sum: fdfbfcadb8116a73b485174bf427ab6a +SHA1: f4f4aec8c5bca6b7ed0874b51d43addb6d6acb5a +SHA256: 76f774448167435fa639fa42f5e08fae042cf0825f9db82a19ac03e4febc1971 +SHA512: 9c315231b81630ed1217ea855d88b9d5fb9c7c4eaa4057e581233308d700dba2e310fac38b508f1fdc69882248fe081412aedcfd144a937a366a2cf82f952477 +Description: Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic 2021.3.0 for Linux* + + +Package: intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-common-2021.4.0 +Architecture: all +Version: 2021.4.0-3561 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 881 +Depends: intel-oneapi-compiler-dpcpp-cpp-common-2021.4.0, intel-oneapi-common-vars (>= 2021.4.0-327), intel-oneapi-common-licensing-2021.4.0 +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-common-2021.4.0-2021.4.0-3561_all.deb +Size: 109698 +MD5sum: b2c9dd33f6a86808eb4daf3287dc0b82 +SHA1: a9189dd6a47ae3d35e5cc353bb2a059b2e9b4877 +SHA256: 7f99a232db992025eff98d14e0822b75d4ca6cca4813ee3121a5ec582f043f1b +SHA512: f176a9fe4813f776a598a39e124cf7ffafb593c0011dcad9b2858219e59fd0140e7b453b10ac5c1df2f74ae116795a102c932c643953f1dd8a74e534b40caf9d +Description: Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic 2021.4.0 for Linux* + + +Package: intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-common-2022.0.1 +Architecture: all +Version: 2022.0.1-3633 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 888 +Depends: intel-oneapi-compiler-dpcpp-cpp-common-2022.0.1, intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-common-2022.0.1-2022.0.1-3633_all.deb +Size: 110478 +MD5sum: bc5f55be5e0613f6f07ea3f5e9fa0613 +SHA1: 31c3d462a762f0db90fd2dba78f7007aaacfce69 +SHA256: 532d8c174d98ad321e6d5226033b2171e356e0fb91baeae5d5026baee23b01cc +SHA512: 08e5040789fb2624c5cd580425a82e7e50fb25bef726eede59f13fa4d395e3ee162d19744d9b80df84d03225f302828158a7ff0f3ee23a285f36c23b1d714bd3 +Description: Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic 2022.0.1 for Linux* + + +Package: intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-common-2022.0.2 +Architecture: all +Version: 2022.0.2-3658 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 888 +Depends: intel-oneapi-compiler-dpcpp-cpp-common-2022.0.2, intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-common-2022.0.2-2022.0.2-3658_all.deb +Size: 110472 +MD5sum: f1162910ab7a227b9b59afd90be0e6b8 +SHA1: 74f7140344d01aef299fffe46b03ce35df5fbce7 +SHA256: c04452c454a642777a4305d490049f6cfeeae34f360f20e5e5e9c85862490a08 +SHA512: 29be59be2cd769b3edfa248220d8f4d59a0556a7737cff02b7c8526c7284c5323f21e886dc09bf30bc8dfc9f79ddb59106c18c79ead148674be5733c5e97059f +Description: Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic 2022.0.2 for Linux* + + +Package: intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-common-2022.1.0 +Architecture: all +Version: 2022.1.0-3768 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 881 +Depends: intel-oneapi-compiler-dpcpp-cpp-common-2022.1.0, intel-oneapi-common-vars (>= 2022.1.0-161), intel-oneapi-common-licensing-2022.1.0 +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-common-2022.1.0-2022.1.0-3768_all.deb +Size: 109810 +MD5sum: c12ed7e7d170ada520dcdecaa23b95ef +SHA1: a4592630996dcf0e93ae28ef02f92056965f8dba +SHA256: 2877196318d0640b9590cf6914f339b17a9d2bea60958bb03246d5aff1d34ab0 +SHA512: 38a05ea0f80e4898484cb71bcd75b1035ad207f30cd8244a0d127547340825539b47ef1624caac4808cd0938c043fb43778155d66144a726dcbdb50114d1149c +Description: Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic 2022.1.0 for Linux* + + +Package: intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-common-2022.2.0 +Architecture: all +Version: 2022.2.0-8734 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 964 +Depends: intel-oneapi-compiler-dpcpp-cpp-common-2022.2.0, intel-oneapi-common-vars (>= 2022.2.0-8694), intel-oneapi-common-licensing-2022.2.0 +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-common-2022.2.0-2022.2.0-8734_all.deb +Size: 114418 +MD5sum: ec281606669a3985f91ea747bdaed247 +SHA1: b99fafe4d50faf54ec231cdfbbd617fb824841e2 +SHA256: 29f011b1024d93a6cd7e5620b84f209adfe208eee865e83e296c029082d34456 +SHA512: 9b5f35a6548b8f04007f6587563a5f76331827c549504e0877046f844e7ee4228fc19a30e3daf854eeeb255a4563a6b57211166bab81986eb0251211a7e738d1 +Description: Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic 2022.2.0 for Linux* + + +Package: intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-common-2022.2.1 +Architecture: all +Version: 2022.2.1-16953 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 964 +Depends: intel-oneapi-compiler-dpcpp-cpp-common-2022.2.1, intel-oneapi-common-vars (>= 2022.2.1-14969), intel-oneapi-common-licensing-2022.2.1 +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-common-2022.2.1-2022.2.1-16953_all.deb +Size: 114430 +MD5sum: b1812ff456c8862da589ff2e9648ed10 +SHA1: 37734cee0cc1161d7e5dce5b049b5781e4450b30 +SHA256: bafdc7f4181feb8671cdea44e786529ab0fcd5633ed694c6fcdf01e0a6b6e3ce +SHA512: 7d8564f885993f140b50b922bbea23cfb35777934a712edc94abf35a6d29efb734395e028c4d7a2e5321f3d4c7b454e2ffe66cf3e6a0d05be7933b8faa0d1163 +Description: Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic 2022.2.1 for Linux* + + +Package: intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-common-2023.0.0 +Architecture: all +Version: 2023.0.0-25370 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1000 +Depends: intel-oneapi-compiler-dpcpp-cpp-common-2023.0.0, intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing-2023.0.0 +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-common-2023.0.0-2023.0.0-25370_all.deb +Size: 116134 +MD5sum: b9f6d4c49640bd1f54b0e7d24e74edcf +SHA1: 46f4f4ce888a6ca8b8a771e66abe3e7aba74d8c4 +SHA256: c7dc0168580eb6d1eb34fef3dfe4595d2af8ee978a84c9461e1974a3624341c6 +SHA512: 4bda90054bd461a1fd7786417bc156f2b0f17930cb924fad61ecc632771789193984e77e949c7d7b613d236103c56e9f0d6902f6b09352cd993712d4b590105d +Description: Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic 2023.0.0 for Linux* + + +Package: intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-common-2023.1.0 +Architecture: all +Version: 2023.1.0-46305 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 993 +Depends: intel-oneapi-compiler-dpcpp-cpp-common-2023.1.0, intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing-2023.1.0 +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-common-2023.1.0-2023.1.0-46305_all.deb +Size: 116106 +MD5sum: bf8baf894cdb8e816e6e8707a7a68155 +SHA1: c4747448fcb314978fa5e816ba957d5f844e7f29 +SHA256: d38895ab3046195929b7109b8bf80b3a0cd14507fda096ab7d0577aaea79b727 +SHA512: 478221475777aedfb510cc1719fa97c2f957b8df71a6f81384009133a749c4562aae32342dcef4f0846da997f459004cce75f861033b663860715aaa9fcdfee6 +Description: Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic 2023.1.0 for Linux* + + +Package: intel-oneapi-compiler-dpcpp-cpp-common-2021.1.1 +Architecture: all +Version: 2021.1.1-189 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 9475 +Depends: intel-oneapi-compiler-shared-common-runtime-2021.1.1, intel-oneapi-compiler-dpcpp-eclipse-cfg (>= 2021.1.1-189), intel-oneapi-compiler-cpp-eclipse-cfg (>= 2021.1.1-189),intel-oneapi-common-vars,intel-oneapi-common-licensing +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-common-2021.1.1-2021.1.1-189_all.deb +Size: 1363504 +MD5sum: ecd46ba744d2c2c847aa2eba19d07012 +SHA1: 01cd004aa2a4d38aff61fd149af2757fcff905c6 +SHA256: d5ab4cf27d6a12bdf6dbb7e5c5f0b5d2e3aef01d0453d2e82766d20cf1936556 +SHA512: bc1ead7aaf02f3a90dc7ace749296933375256cdf3415de348cd9797d61f014cd5175dc24877bda5340bbc87ea0c886e8b1926c300659a0b45777f563d828554 +Description: Intel® oneAPI DPC++/C++ Compiler 2021.1.1 for Linux* + + +Package: intel-oneapi-compiler-dpcpp-cpp-common-2021.1.2 +Architecture: all +Version: 2021.1.2-266 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 9475 +Depends: intel-oneapi-compiler-shared-common-runtime-2021.1.2, intel-oneapi-compiler-dpcpp-eclipse-cfg (>= 2021.1.2-266), intel-oneapi-compiler-cpp-eclipse-cfg (>= 2021.1.2-266),intel-oneapi-common-vars,intel-oneapi-common-licensing +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-common-2021.1.2-2021.1.2-266_all.deb +Size: 1363468 +MD5sum: 0277414c369a1b0e710732062d448e87 +SHA1: 86d2013871f0f03258825b727a2d785808a857bd +SHA256: d2d0cdeac269d913d10df16befb1ee378718a65a9d62fc785d54bfb76d7b4307 +SHA512: cf1b97000b57ea0b18db6aa37f1d78e1164e8d35cac3e994ff660c75857513fd42010e3377ed65e54d928e2f22a77dd1a9a9e2d0ef6b2b3615b665d51988fc66 +Description: Intel® oneAPI DPC++/C++ Compiler 2021.1.2 for Linux* + + +Package: intel-oneapi-compiler-dpcpp-cpp-common-2021.2.0 +Architecture: all +Version: 2021.2.0-610 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 10133 +Depends: intel-oneapi-compiler-shared-common-runtime-2021.2.0, intel-oneapi-compiler-dpcpp-eclipse-cfg (>= 2021.2.0-610), intel-oneapi-compiler-cpp-eclipse-cfg (>= 2021.2.0-610), intel-oneapi-common-vars (>= 2021.2.0-195), intel-oneapi-common-licensing-2021.2.0 +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-common-2021.2.0-2021.2.0-610_all.deb +Size: 1478418 +MD5sum: 35f0f633d5e6469b3eb8d626ef5696c5 +SHA1: 92d02fb0f1932d863748c5fa686c8d363d8d4b79 +SHA256: 3c199045a65b5f382f24424ef983aaa3f4012a961f58a71fa99e68d8a855fa6f +SHA512: 45c385a115b15ea735ebe1a29b7a236e3a8a33b0719a9075202d82fe176b8d98561204ae088d6df616cd4e783bf6de4cf242c6b3d75b1e313b8de7fad37fd92a +Description: Intel® oneAPI DPC++/C++ Compiler 2021.2.0 for Linux* + + +Package: intel-oneapi-compiler-dpcpp-cpp-common-2021.3.0 +Architecture: all +Version: 2021.3.0-3350 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 10245 +Depends: intel-oneapi-compiler-shared-common-runtime-2021.3.0, intel-oneapi-compiler-dpcpp-eclipse-cfg (>= 2021.3.0-3350), intel-oneapi-compiler-cpp-eclipse-cfg (>= 2021.3.0-3350), intel-oneapi-common-vars (>= 2021.3.0-261), intel-oneapi-common-licensing-2021.3.0 +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-common-2021.3.0-2021.3.0-3350_all.deb +Size: 1503622 +MD5sum: 74a3e9df9a40e1e71c67d73bee469187 +SHA1: 5216f4d16be9eb0a0bc7cfba1342cf901d794cbc +SHA256: 08b905c64df60565c60007c34a69cef9462f743f7d30e23cdb42b514d7ddd792 +SHA512: 52bb3e42a1d9408b2b6f50a02ba961e7467edd4b7469114a87d86b3be191547ff9961ca99157b272220915bdbfcd9605117e465dad4df9865f3fcb5c5d2c0743 +Description: Intel® oneAPI DPC++/C++ Compiler 2021.3.0 for Linux* + + +Package: intel-oneapi-compiler-dpcpp-cpp-common-2021.4.0 +Architecture: all +Version: 2021.4.0-3561 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 11580 +Depends: intel-oneapi-compiler-dpcpp-eclipse-cfg (>= 2021.4.0-3561), intel-oneapi-compiler-cpp-eclipse-cfg (>= 2021.4.0-3561), intel-oneapi-common-vars (>= 2021.4.0-327), intel-oneapi-common-licensing-2021.4.0 +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-common-2021.4.0-2021.4.0-3561_all.deb +Size: 1574678 +MD5sum: e9da03634aa8a475df4fce431e3b6009 +SHA1: c3be13a584cd0ae75326587be3f7a1db46987573 +SHA256: f91b0fe0d6444588112703eb85632504003574d4f5768166fba23b8f2e009267 +SHA512: 697df3dc0fb660d212f7d17c57a0ca105800ed0a705eceec6a52d398e776d5fcc10461761f8b8ec5d4cda95e471b585434bd75be178b0827c4072e6306a80336 +Description: Intel® oneAPI DPC++/C++ Compiler 2021.4.0 for Linux* + + +Package: intel-oneapi-compiler-dpcpp-cpp-common-2022.0.1 +Architecture: all +Version: 2022.0.1-3633 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 11902 +Depends: intel-oneapi-compiler-dpcpp-eclipse-cfg (>= 2022.0.1-3633), intel-oneapi-compiler-cpp-eclipse-cfg (>= 2022.0.1-3633), intel-oneapi-icc-eclipse-plugin-cpp-2022.0.1, intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-common-2022.0.1-2022.0.1-3633_all.deb +Size: 1627076 +MD5sum: 06d90d2d291a2de93e35afeb3038cbdc +SHA1: 70f9a8acb8c35917fbad54acf2b5ce7ab4e7cc36 +SHA256: 891ced85dd44fcab32673e838fd358d84821c833a2da226f67ccdb1b1e9604cb +SHA512: db588cdc427a6b85b3a77f65691e3af50d825e74792f06a1de727b476c4777780534777ad76ac7a2115a84a096b30238f609fe26b5813eca414d7486316b6894 +Description: Intel® oneAPI DPC++/C++ Compiler 2022.0.1 for Linux* + + +Package: intel-oneapi-compiler-dpcpp-cpp-common-2022.0.2 +Architecture: all +Version: 2022.0.2-3658 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 11902 +Depends: intel-oneapi-compiler-dpcpp-eclipse-cfg (>= 2022.0.2-3658), intel-oneapi-compiler-cpp-eclipse-cfg (>= 2022.0.2-3658), intel-oneapi-icc-eclipse-plugin-cpp-2022.0.2, intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-common-2022.0.2-2022.0.2-3658_all.deb +Size: 1627248 +MD5sum: eac2a4fedb6d5c92f4c2a11f23ba737e +SHA1: ea4bc5a33a1a641f0208478206350c5b76a394f8 +SHA256: d93e385c6377226d87e1a11e0b4c282dea7976912951680b7c217fa1d14dea4c +SHA512: c98df9a1ee1e140e8f9a342ebed520ae7135ffa343a8cecc4774917a129b5f26020f59e78f1c6882c826860d40d5e39cecb1eed785df33ab2aae6893e18cb372 +Description: Intel® oneAPI DPC++/C++ Compiler 2022.0.2 for Linux* + + +Package: intel-oneapi-compiler-dpcpp-cpp-common-2022.1.0 +Architecture: all +Version: 2022.1.0-3768 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 11935 +Depends: intel-oneapi-compiler-dpcpp-eclipse-cfg (>= 2022.1.0-3768), intel-oneapi-compiler-cpp-eclipse-cfg (>= 2022.1.0-3768), intel-oneapi-icc-eclipse-plugin-cpp-2022.1.0, intel-oneapi-common-vars (>= 2022.1.0-161), intel-oneapi-common-licensing-2022.1.0 +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-common-2022.1.0-2022.1.0-3768_all.deb +Size: 1632552 +MD5sum: 916d22487a9d398904bb9ccac9ca49e8 +SHA1: b62964be6d13df8c12737c6f2aa2f4b80d53a25a +SHA256: 5bc6452a32f5781c96498515d061d8fe9d7bba13b41eb983fe9bb0f792621906 +SHA512: a626691ca6c55c1193707cfc71f48cc6368534ff88005e03b4fb30d2e1940e2db8c1d77b9b8d64889f9a92a027bd7a3af0d7e23a6e398da4164cfe007fa658c5 +Description: Intel® oneAPI DPC++/C++ Compiler 2022.1.0 for Linux* + + +Package: intel-oneapi-compiler-dpcpp-cpp-common-2022.2.0 +Architecture: all +Version: 2022.2.0-8734 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 13018 +Depends: intel-oneapi-compiler-dpcpp-eclipse-cfg (>= 2022.2.0-8734), intel-oneapi-compiler-cpp-eclipse-cfg (>= 2022.2.0-8734), intel-oneapi-icc-eclipse-plugin-cpp-2022.2.0, intel-oneapi-common-vars (>= 2022.2.0-8694), intel-oneapi-common-licensing-2022.2.0 +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-common-2022.2.0-2022.2.0-8734_all.deb +Size: 1728012 +MD5sum: dcd91ae020139f5634deabacb1863569 +SHA1: d6e020665aadf592f007e51bc7a56990b8162680 +SHA256: ae616c9f0a1f6fcde36d94f3d211fc675b1245f528c7f9114f2ad516899b2a7b +SHA512: f59779115f08ee462eb8f0cc6bc65d1450df3dfdca421bce4652b93e32520db6f5000411972adab9702bf627e1b5da160b7aec987ebd185e8d55eb67792e8bf0 +Description: Intel® oneAPI DPC++/C++ Compiler 2022.2.0 for Linux* + + +Package: intel-oneapi-compiler-dpcpp-cpp-common-2022.2.1 +Architecture: all +Version: 2022.2.1-16953 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 13017 +Depends: intel-oneapi-compiler-dpcpp-eclipse-cfg (>= 2022.2.1-16953), intel-oneapi-compiler-cpp-eclipse-cfg (>= 2022.2.1-16953), intel-oneapi-icc-eclipse-plugin-cpp-2022.2.1, intel-oneapi-common-vars (>= 2022.2.1-14969), intel-oneapi-common-licensing-2022.2.1 +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-common-2022.2.1-2022.2.1-16953_all.deb +Size: 1727804 +MD5sum: 2e7b205bea3d3dc4564ef8c9536ac0a9 +SHA1: d3af3b0eea9f14b6f5497a5b87cdfaeee4b959fb +SHA256: 63f29842484d4fc834e681cf636d8dc0cbc78a147907641b55c83a395023bc3b +SHA512: bfd69302fd3e8d7dc76dbde147d9d772ee29c7ccb4720af6c256ecab5171cb8245d7d8fb18792aa454747f35876711e230d576791baedab00c4bf1509109af04 +Description: Intel® oneAPI DPC++/C++ Compiler 2022.2.1 for Linux* + + +Package: intel-oneapi-compiler-dpcpp-cpp-common-2023.0.0 +Architecture: all +Version: 2023.0.0-25370 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 14571 +Depends: intel-oneapi-compiler-dpcpp-eclipse-cfg (>= 2023.0.0-25370), intel-oneapi-compiler-cpp-eclipse-cfg (>= 2023.0.0-25370), intel-oneapi-icc-eclipse-plugin-cpp-2023.0.0, intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing-2023.0.0 +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-common-2023.0.0-2023.0.0-25370_all.deb +Size: 1858328 +MD5sum: 476c52e957dc6658e73fd1a39aed2bdd +SHA1: d5234b3f34c7debf16a87b6e16efadadfb24ec0c +SHA256: ef2791532a7f5afee609e2e81ddadebf1306a248a84b711959a1be3112d8a509 +SHA512: 79e552ccf52e310b97dc44f8c2a041f0afc541c76f3366ab20fa4b812690090cbc825619794e7826fc086bae6e613ff43902dc6cb683c636d8d35af941b76601 +Description: Intel® oneAPI DPC++/C++ Compiler 2023.0.0 for Linux* + + +Package: intel-oneapi-compiler-dpcpp-cpp-common-2023.1.0 +Architecture: all +Version: 2023.1.0-46305 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 15686 +Depends: intel-oneapi-compiler-dpcpp-eclipse-cfg (>= 2023.1.0-46305), intel-oneapi-compiler-cpp-eclipse-cfg (>= 2023.1.0-46305), intel-oneapi-icc-eclipse-plugin-cpp-2023.1.0, intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing-2023.1.0 +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-common-2023.1.0-2023.1.0-46305_all.deb +Size: 1967996 +MD5sum: 90ed791685dcffd7fef5c4e6abc78a60 +SHA1: 1bf0ea6d918eff7aea1640b4142986ec76ade71d +SHA256: 9c117b25ddee699d1a8162ab101b9c23beeea5e9a3f2409414ee6bbc78d6593b +SHA512: fd79557a1f96ffc007ad77189bbfc35484951b658b30ab3216a03d1950162a1692e804913407592716851111e4ac52de16240115ac311a73bb6cf555233b9d93 +Description: Intel® oneAPI DPC++/C++ Compiler 2023.1.0 for Linux* + + +Package: intel-oneapi-compiler-dpcpp-eclipse-cfg +Architecture: all +Version: 2021.1.1-189 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1 +Provides: intel-oneapi-dpcpp-compiler-eclipse-cfg (= 2021.1.1-189) +Depends: intel-oneapi-common-vars,intel-oneapi-common-licensing +Breaks: intel-oneapi-dpcpp-compiler-eclipse-cfg (<< 2021.1.1-189) +Replaces: intel-oneapi-dpcpp-compiler-eclipse-cfg (<< 2021.1.1-189) +Filename: pool/main/intel-oneapi-compiler-dpcpp-eclipse-cfg-2021.1.1-189_all.deb +Size: 1974 +MD5sum: 82f562ee0f84df6d370a27cd891e520a +SHA1: 041625260e22d2e2849b2d25e532fca2ad5f3eda +SHA256: 242e5134504e63503814440583fad350a0d01f78e9dbd3cd2357a1039933774b +SHA512: 12b4a5cf90e40bb90538c5fdcd478b723fb7ea0632d187f309b33a1433f3c61d3569f26f4a46c6c84e7ce9b9c1fdb96bab637225f9d301467c27127369997768 +Description: Intel® oneAPI DPC++/C++ Compiler 2021.1.1 for Linux* eclipse integration configuration file (DPC++) + + +Package: intel-oneapi-compiler-dpcpp-eclipse-cfg +Architecture: all +Version: 2021.1.2-266 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1 +Provides: intel-oneapi-dpcpp-compiler-eclipse-cfg (= 2021.1.2-266) +Depends: intel-oneapi-common-vars,intel-oneapi-common-licensing +Breaks: intel-oneapi-dpcpp-compiler-eclipse-cfg (<< 2021.1.2-266) +Replaces: intel-oneapi-dpcpp-compiler-eclipse-cfg (<< 2021.1.2-266) +Filename: pool/main/intel-oneapi-compiler-dpcpp-eclipse-cfg-2021.1.2-266_all.deb +Size: 1978 +MD5sum: c1cb63cf5d77e32965514f45e5c8e356 +SHA1: c7811ac3fc6ce12e2468ce0e58639bbab7f190d1 +SHA256: 020230778ba6af2a4d5e6fb84628acb62fdb73d6e9482fccc4cfad2133064491 +SHA512: 79aefd8a69f52d9c648e480a0352a979cf2500b9d78431c19b2eaee64a3dfdac78e3fb1fded6350fdee82471488b5269a5bc58978dc2546d635a69f8d6e68fd1 +Description: Intel® oneAPI DPC++/C++ Compiler 2021.1.2 for Linux* eclipse integration configuration file (DPC++) + + +Package: intel-oneapi-compiler-dpcpp-eclipse-cfg +Architecture: all +Version: 2021.2.0-610 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1 +Provides: intel-oneapi-dpcpp-compiler-eclipse-cfg (= 2021.2.0-610) +Depends: intel-oneapi-common-vars (>= 2021.2.0-195), intel-oneapi-common-licensing-2021.2.0 +Breaks: intel-oneapi-dpcpp-compiler-eclipse-cfg (<< 2021.2.0-610) +Replaces: intel-oneapi-dpcpp-compiler-eclipse-cfg (<< 2021.2.0-610) +Filename: pool/main/intel-oneapi-compiler-dpcpp-eclipse-cfg-2021.2.0-610_all.deb +Size: 1988 +MD5sum: 91b5e8de64a9e133b4c2908a418c7eda +SHA1: 58d72caf22ffaf7d8c3f8e364dcc4855835b0eb6 +SHA256: 9ff1898c0861dca0146094ccb644496c94d13ed61e4d7ce121fc295854ebecf5 +SHA512: 9c8ea8df586089a993965a3b658039b6eb9bf1cf6859e3a514eca021eaa8312e9285ad2b34cdc0209874c66a65f677295184946813df8e7238a2148fba73250c +Description: Intel® oneAPI DPC++/C++ Compiler 2021.2.0 for Linux* eclipse integration configuration file (DPC++) + + +Package: intel-oneapi-compiler-dpcpp-eclipse-cfg +Architecture: all +Version: 2021.3.0-3350 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1 +Provides: intel-oneapi-dpcpp-compiler-eclipse-cfg (= 2021.3.0-3350) +Depends: intel-oneapi-common-vars (>= 2021.3.0-261), intel-oneapi-common-licensing-2021.3.0 +Breaks: intel-oneapi-dpcpp-compiler-eclipse-cfg (<< 2021.3.0-3350) +Replaces: intel-oneapi-dpcpp-compiler-eclipse-cfg (<< 2021.3.0-3350) +Filename: pool/main/intel-oneapi-compiler-dpcpp-eclipse-cfg-2021.3.0-3350_all.deb +Size: 1990 +MD5sum: c395ac4ae5f3f6167305137d2a1f3f04 +SHA1: 4de499e5e6ed2cf3cf9876a3f7dc51ebcc1b59ac +SHA256: 38c096efff46df1b227fa858691fa163f52e4b2215e2caf500efa04f4598fb5e +SHA512: 3e63c909622dbad3d26b5a50d0ee4c37ccae33cd6b12bffc1762e62e5d41b45da3e8ec4e97532d770a37d438735adc929722cb549dfbbe14892340930543269f +Description: Intel® oneAPI DPC++/C++ Compiler 2021.3.0 for Linux* eclipse integration configuration file (DPC++) + + +Package: intel-oneapi-compiler-dpcpp-eclipse-cfg +Architecture: all +Version: 2021.4.0-3561 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1 +Provides: intel-oneapi-dpcpp-compiler-eclipse-cfg (= 2021.4.0-3561) +Depends: intel-oneapi-common-vars (>= 2021.4.0-327), intel-oneapi-common-licensing-2021.4.0 +Breaks: intel-oneapi-dpcpp-compiler-eclipse-cfg (<< 2021.4.0-3561) +Replaces: intel-oneapi-dpcpp-compiler-eclipse-cfg (<< 2021.4.0-3561) +Filename: pool/main/intel-oneapi-compiler-dpcpp-eclipse-cfg-2021.4.0-3561_all.deb +Size: 1988 +MD5sum: 84ee5563cc55aaa147fb331e5ffa0374 +SHA1: 79a8e078ce28a48ce0bac0e8fa89b1aea3a70048 +SHA256: 27fa527cbadc78b76c6eb82cacda7cc84733e197047513f318b955e2081bdfa9 +SHA512: 84ec8ea9bb9915c0aecd76a240225cad65d503cba1f058ccf74f9d559172afb38c764212f22a4edad479fe8efbf5423e6460364264574c0346fbc66abb81d665 +Description: Intel® oneAPI DPC++/C++ Compiler 2021.4.0 for Linux* eclipse integration configuration file (DPC++) + + +Package: intel-oneapi-compiler-dpcpp-eclipse-cfg +Architecture: all +Version: 2022.0.1-3633 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1 +Provides: intel-oneapi-dpcpp-compiler-eclipse-cfg (= 2022.0.1-3633) +Depends: intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Breaks: intel-oneapi-dpcpp-compiler-eclipse-cfg (<< 2022.0.1-3633) +Replaces: intel-oneapi-dpcpp-compiler-eclipse-cfg (<< 2022.0.1-3633) +Filename: pool/main/intel-oneapi-compiler-dpcpp-eclipse-cfg-2022.0.1-3633_all.deb +Size: 1984 +MD5sum: 0b9a70140a2797f84a2ccf7559c5f828 +SHA1: bb7ab221af3b9da9a704dd18e527fedd8088e89d +SHA256: 0eb0e97da757fefc715ee45af21e7a493a0c0c079cb5ee191987799d01e04081 +SHA512: 28697783f4ae85bfd37c5c7e602658bff7642eb3e67325d0821ad1e37c0c34974744daeda313e579c2e8d69927fa8ba75e6b5d949614fbb8a99d59840fde98ac +Description: Intel® oneAPI DPC++/C++ Compiler 2022.0.1 for Linux* eclipse integration configuration file (DPC++) + + +Package: intel-oneapi-compiler-dpcpp-eclipse-cfg +Architecture: all +Version: 2022.0.2-3658 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1 +Provides: intel-oneapi-dpcpp-compiler-eclipse-cfg (= 2022.0.2-3658) +Depends: intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Breaks: intel-oneapi-dpcpp-compiler-eclipse-cfg (<< 2022.0.2-3658) +Replaces: intel-oneapi-dpcpp-compiler-eclipse-cfg (<< 2022.0.2-3658) +Filename: pool/main/intel-oneapi-compiler-dpcpp-eclipse-cfg-2022.0.2-3658_all.deb +Size: 1986 +MD5sum: a445af570be63048bcfe113a27f34e50 +SHA1: 44e2730754ca2debea8636b36c33e3a0f4e21544 +SHA256: e9a87eec4831ab0709422012e5a2530fe0b06ec7e8502502599200d618876838 +SHA512: 24561111335a7c52314bea33fa408c37e5c7f6162f3ea3e7932377d9c5ccf944ea1e9db06d460def05fe418314c265f7b5f7d4aee9923941aa0187ca24082c27 +Description: Intel® oneAPI DPC++/C++ Compiler 2022.0.2 for Linux* eclipse integration configuration file (DPC++) + + +Package: intel-oneapi-compiler-dpcpp-eclipse-cfg +Architecture: all +Version: 2022.1.0-3768 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1 +Provides: intel-oneapi-dpcpp-compiler-eclipse-cfg (= 2022.1.0-3768) +Depends: intel-oneapi-common-vars (>= 2022.1.0-161), intel-oneapi-common-licensing-2022.1.0 +Breaks: intel-oneapi-dpcpp-compiler-eclipse-cfg (<< 2022.1.0-3768) +Replaces: intel-oneapi-dpcpp-compiler-eclipse-cfg (<< 2022.1.0-3768) +Filename: pool/main/intel-oneapi-compiler-dpcpp-eclipse-cfg-2022.1.0-3768_all.deb +Size: 2068 +MD5sum: 5ab33c10e4e16e6771fb4f6b1a4e8312 +SHA1: 09a3a4f6165e11c7e9e82371315cc182ab1e7c34 +SHA256: 3335b168e758d72aa84f4f16524d311dd48448d34b57fbe3ff62068246b1cbfa +SHA512: a31bd729e419d32ba7e44ddd79c51b0a8c7b51ee46592cf51cae1e9b97f2686e3b0fbe9159fcb8aac82782038ff52fa1dfea0294847803a886e73055f75a2a80 +Description: Intel® oneAPI DPC++/C++ Compiler 2022.1.0 for Linux* eclipse integration configuration file (DPC++) + + +Package: intel-oneapi-compiler-dpcpp-eclipse-cfg +Architecture: all +Version: 2022.2.0-8734 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 25 +Provides: intel-oneapi-dpcpp-compiler-eclipse-cfg (= 2022.2.0-8734) +Depends: intel-oneapi-common-vars (>= 2022.2.0-8694), intel-oneapi-common-licensing-2022.2.0 +Breaks: intel-oneapi-dpcpp-compiler-eclipse-cfg (<< 2022.2.0-8734) +Replaces: intel-oneapi-dpcpp-compiler-eclipse-cfg (<< 2022.2.0-8734) +Filename: pool/main/intel-oneapi-compiler-dpcpp-eclipse-cfg-2022.2.0-8734_all.deb +Size: 2064 +MD5sum: c5cc493b3ca3ca0cf4e61a57b539e096 +SHA1: edbfbd1a58e94d20245d570b44e24898ecb1ed62 +SHA256: 70c788fdebc3c670d80071260560e7596ff87aa9cc0911e4217634f1edd7a2eb +SHA512: 0fa493c9ade8b487c9f46ddf74ea5a4ad6d077ee6ecd6ed7df0833c5c5c95caa5a5d586950da4546d252a7274ace714c4552ffacadfae7b80d1223d6f357dca1 +Description: Intel® oneAPI DPC++/C++ Compiler 2022.2.0 for Linux* eclipse integration configuration file (DPC++) + + +Package: intel-oneapi-compiler-dpcpp-eclipse-cfg +Architecture: all +Version: 2022.2.1-16953 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 25 +Provides: intel-oneapi-dpcpp-compiler-eclipse-cfg (= 2022.2.1-16953) +Depends: intel-oneapi-common-vars (>= 2022.2.1-14969), intel-oneapi-common-licensing-2022.2.1 +Breaks: intel-oneapi-dpcpp-compiler-eclipse-cfg (<< 2022.2.1-16953) +Replaces: intel-oneapi-dpcpp-compiler-eclipse-cfg (<< 2022.2.1-16953) +Filename: pool/main/intel-oneapi-compiler-dpcpp-eclipse-cfg-2022.2.1-16953_all.deb +Size: 2068 +MD5sum: 5366b022af34e7ccd19733e0c156da95 +SHA1: 42550aad7f3371a2a52625e5030cc507427a9dca +SHA256: 5ca3bdca40434a9a1504b5fcaaaff35185c43e6a0929e671fafaeaba14b7e7bb +SHA512: b2dabbec733e8078f8084b1a7d82de8712044e748aa968b3fd0767499df1c54aa3d02daf319ec2edf1c7c943d3f8dd5c8bf85eeb9b3b08479b49da375d4024e4 +Description: Intel® oneAPI DPC++/C++ Compiler 2022.2.1 for Linux* eclipse integration configuration file (DPC++) + + +Package: intel-oneapi-compiler-dpcpp-eclipse-cfg +Architecture: all +Version: 2023.0.0-25370 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 25 +Provides: intel-oneapi-dpcpp-compiler-eclipse-cfg (= 2023.0.0-25370) +Depends: intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing-2023.0.0 +Breaks: intel-oneapi-dpcpp-compiler-eclipse-cfg (<< 2023.0.0-25370) +Replaces: intel-oneapi-dpcpp-compiler-eclipse-cfg (<< 2023.0.0-25370) +Filename: pool/main/intel-oneapi-compiler-dpcpp-eclipse-cfg-2023.0.0-25370_all.deb +Size: 2064 +MD5sum: 15718370df51c1b71e32e4698e0671ff +SHA1: 04cdb6147cfb3c1d254aa0b9dd35b1990e24dcf7 +SHA256: 52a1aa257be0014d298f7dc61579768744c4bc0c59fdc951c368322c75facacf +SHA512: 6b83d32814d624ac426f1a985a0f821bbc4ed93e62ea06bb790c3fbea7f40ca1dfc962f1435d067c8f2139487cfc96cdf52d317cf70c90e19942d492229f9fa9 +Description: Intel® oneAPI DPC++/C++ Compiler 2023.0.0 for Linux* eclipse integration configuration file (DPC++) + + +Package: intel-oneapi-compiler-dpcpp-eclipse-cfg +Architecture: all +Version: 2023.1.0-46305 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 25 +Provides: intel-oneapi-dpcpp-compiler-eclipse-cfg (= 2023.1.0-46305) +Depends: intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing-2023.1.0 +Breaks: intel-oneapi-dpcpp-compiler-eclipse-cfg (<< 2023.1.0-46305) +Replaces: intel-oneapi-dpcpp-compiler-eclipse-cfg (<< 2023.1.0-46305) +Filename: pool/main/intel-oneapi-compiler-dpcpp-eclipse-cfg-2023.1.0-46305_all.deb +Size: 2068 +MD5sum: 0f32f01fcbfe2d8068698405fecff188 +SHA1: 03ea151fadf533ede8f34ab88935c67805ab066c +SHA256: d02cd7aea9d98e935f7f4051f2f41126143f37450de0ad4d44e14eebec96e61d +SHA512: 35df18ee2ea58406dd7d1a3c4cd300fb80a4f1edcf54ab31509ae0c5d6a40dc0b6d8ff4f95f18a3b7ad19e0602ffea044e93a42bbcb7e6988a70b3f8ce2492f8 +Description: Intel® oneAPI DPC++/C++ Compiler 2023.1.0 for Linux* eclipse integration configuration file (DPC++) + + +Package: intel-oneapi-compiler-fortran-common-2021.1.1 +Architecture: all +Version: 2021.1.1-189 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1616 +Depends: intel-oneapi-compiler-shared-common-2021.1.1,intel-oneapi-common-vars,intel-oneapi-common-licensing +Filename: pool/main/intel-oneapi-compiler-fortran-common-2021.1.1-2021.1.1-189_all.deb +Size: 173386 +MD5sum: bbc7e2fef94aae30f489b0b102d11f9d +SHA1: 3197c72e0872d291464325c40ef40a457661e100 +SHA256: 39e1d956d73c7aff385e8fb18c31c811b7ec8d592a27883e8d7db800007ed1da +SHA512: 57dc7e0d413d4d33d8e992fa1281472dcefc544eb3ebcdc65bdb78b09c4d4ec66f58f9161886b2f3f1cc17f13a23cad0c6eb334eae661180ba5e6cb3e050083d +Description: Intel® Fortran Compiler (Beta) & Intel® Fortran Compiler Classic 2021.1.1 for Linux* + + +Package: intel-oneapi-compiler-fortran-common-2021.1.2 +Architecture: all +Version: 2021.1.2-266 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1617 +Depends: intel-oneapi-compiler-shared-common-2021.1.2,intel-oneapi-common-vars,intel-oneapi-common-licensing +Filename: pool/main/intel-oneapi-compiler-fortran-common-2021.1.2-2021.1.2-266_all.deb +Size: 173438 +MD5sum: 38af467f8bcdc92b894a93ee9c5520ad +SHA1: 348c09f73c5c0302b8fe048bdde07df78a35948c +SHA256: 17acc9444afeae1e0eb4715859ac3ba86b2383e7ac8c70ca4b1d308ed6e992e4 +SHA512: 16c405315910f187d2c1c94f40beec0b26687564229a0821fd59c35af0d43c30f74dbd425aabd052d460f13516d96c29411530017711da398700e16a483ee6b8 +Description: Intel® Fortran Compiler (Beta) & Intel® Fortran Compiler Classic 2021.1.2 for Linux* + + +Package: intel-oneapi-compiler-fortran-common-2021.2.0 +Architecture: all +Version: 2021.2.0-610 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1614 +Depends: intel-oneapi-compiler-shared-common-2021.2.0, intel-oneapi-common-vars (>= 2021.2.0-195), intel-oneapi-common-licensing-2021.2.0 +Filename: pool/main/intel-oneapi-compiler-fortran-common-2021.2.0-2021.2.0-610_all.deb +Size: 176748 +MD5sum: ee4490f800e462e7fbf38a30d625482a +SHA1: ecccf4e9d109980b72cec10c0e90f71b5c35d699 +SHA256: 230f0acbbf2280c12e7104d3fdac420bd98d8adbc7991b2841f5a0e810bdd157 +SHA512: 9be5d842b02ebfd3b10c2cf086cb73b1b4a4acfee3e4daedc9e8247c17397c8e77e67759cdc8c13220ad02d45dc3a792255fbdf6c37c71be372c1b9108a119bc +Description: Intel® Fortran Compiler (Beta) & Intel® Fortran Compiler Classic 2021.2.0 for Linux* + + +Package: intel-oneapi-compiler-fortran-common-2021.3.0 +Architecture: all +Version: 2021.3.0-3350 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1610 +Depends: intel-oneapi-compiler-shared-common-2021.3.0, intel-oneapi-common-vars (>= 2021.3.0-261), intel-oneapi-common-licensing-2021.3.0 +Filename: pool/main/intel-oneapi-compiler-fortran-common-2021.3.0-2021.3.0-3350_all.deb +Size: 177024 +MD5sum: cbd5a92d6845284d2a60c0e6b09412ed +SHA1: 77a74e5d13c7a8bbc9bd793af4c804f828a82b96 +SHA256: a4fd2be6daa5a2800488ff2085fba0ce89c945da399e0878464481008d796e46 +SHA512: 64c3b5b0da2a292bb338a243553fb91a6826fecee84598d5bf4534f6397a3f06593dcfa30b09924240dceb85334597f67971ae7b7a1186a37733d09b77631ebb +Description: Intel® Fortran Compiler (Beta) & Intel® Fortran Compiler Classic 2021.3.0 for Linux* + + +Package: intel-oneapi-compiler-fortran-common-2021.4.0 +Architecture: all +Version: 2021.4.0-3561 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1609 +Depends: intel-oneapi-compiler-shared-common-2021.4.0, intel-oneapi-common-vars (>= 2021.4.0-327), intel-oneapi-common-licensing-2021.4.0 +Filename: pool/main/intel-oneapi-compiler-fortran-common-2021.4.0-2021.4.0-3561_all.deb +Size: 178182 +MD5sum: 4737c862a1a24fd22b6cdc41eb98222d +SHA1: 3adb6b8963c68e91a8d07e03934ccf2eb6d74e73 +SHA256: 1b8739a5df7ad655bf4f65e557ab51ee07c91501b02919ccaadbc9cfcb815f17 +SHA512: 94cf693fe81254d0c8f6231320cbcecbfe95447ca889f0140b6b706b74758bc66259e326495c81e29d9a0cde9d95393bc1649c033b054ac7d692e30aa2610f66 +Description: Intel® Fortran Compiler (Beta) & Intel® Fortran Compiler Classic 2021.4.0 for Linux* + + +Package: intel-oneapi-compiler-fortran-common-2022.0.1 +Architecture: all +Version: 2022.0.1-3633 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1622 +Depends: intel-oneapi-compiler-shared-common-2022.0.1, intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-compiler-fortran-common-2022.0.1-2022.0.1-3633_all.deb +Size: 178802 +MD5sum: 6bee0d1edcf1d15e6bac84326765682e +SHA1: fff0e01cb87f7249a6b77b0410d9903e7b02dbf3 +SHA256: 982fab164354a1bd0a825af5e031c70509e56197be15326694f5fb735aa721b7 +SHA512: f9316293af8cfb4c5279f625f92edecc1e18de33bca00c736f3692587573f7896266efb8f020449bd897b9748d8b473c8db33f8f4a2a049115b1627e567cfb9d +Description: Intel® Fortran Compiler & Intel® Fortran Compiler Classic 2022.0.1 for Linux* + + +Package: intel-oneapi-compiler-fortran-common-2022.0.2 +Architecture: all +Version: 2022.0.2-3658 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1622 +Depends: intel-oneapi-compiler-shared-common-2022.0.2, intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-compiler-fortran-common-2022.0.2-2022.0.2-3658_all.deb +Size: 178852 +MD5sum: 585a25aebc35fc1032a0c2ebf511efd1 +SHA1: 4abf39bf614b32b65078837dee43e20d5e35bc6c +SHA256: 8d79e2753b62c2332f401571291b64bfcf79b1425fbedd98cf7ad7150cb788cc +SHA512: e5e8f95dc442d5cb773068932f733990a152f91b847502fe205032b3fc56c68e690e64cf9ec928ea4e183dbc37757fea51b6327708b5a0a82f8bf0e3e36892df +Description: Intel® Fortran Compiler & Intel® Fortran Compiler Classic 2022.0.2 for Linux* + + +Package: intel-oneapi-compiler-fortran-common-2022.1.0 +Architecture: all +Version: 2022.1.0-3768 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1618 +Depends: intel-oneapi-compiler-shared-common-2022.1.0, intel-oneapi-common-vars (>= 2022.1.0-161), intel-oneapi-common-licensing-2022.1.0 +Filename: pool/main/intel-oneapi-compiler-fortran-common-2022.1.0-2022.1.0-3768_all.deb +Size: 178846 +MD5sum: 859d2a8e745796721d7b33c69be894a3 +SHA1: f0aa42af325cb752937f08ac561f41f36f9cc04d +SHA256: 206e3fb5d65391b62a086f21aea82820c1862d1b0665e667fd72d389f6fddfeb +SHA512: dac73734af299868209ecc1a66a0d36ee7ab2b18bf4f93fa88273c0b08d225d8858c1f97dc7a1bed2329974adac9bf6f39d18d0341865d257007fa508d45556d +Description: Intel® Fortran Compiler & Intel® Fortran Compiler Classic 2022.1.0 for Linux* + + +Package: intel-oneapi-compiler-fortran-common-2022.2.0 +Architecture: all +Version: 2022.2.0-8734 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1747 +Depends: intel-oneapi-compiler-shared-common-2022.2.0, intel-oneapi-common-vars (>= 2022.2.0-8694), intel-oneapi-common-licensing-2022.2.0 +Filename: pool/main/intel-oneapi-compiler-fortran-common-2022.2.0-2022.2.0-8734_all.deb +Size: 185586 +MD5sum: 012f70c564483c8a034f81824c0fa82f +SHA1: d147c6a8fe4893f216da409e21f1857b91702a25 +SHA256: 25d121f09fa22c9dd66dcf36f62f2db94dcb00c84941be9aa42c6507bab533c8 +SHA512: f7002cd62bbe377a6b4d7c9eac2e433d74732de111c6e90bce17c0e10eb42cfb86b06d9495d6e1158126688b779209ca41445c7b8eeb8e386570a30e8e269811 +Description: Intel® Fortran Compiler & Intel® Fortran Compiler Classic 2022.2.0 for Linux* + + +Package: intel-oneapi-compiler-fortran-common-2022.2.1 +Architecture: all +Version: 2022.2.1-16953 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1747 +Depends: intel-oneapi-compiler-shared-common-2022.2.1, intel-oneapi-common-vars (>= 2022.2.1-14969), intel-oneapi-common-licensing-2022.2.1 +Filename: pool/main/intel-oneapi-compiler-fortran-common-2022.2.1-2022.2.1-16953_all.deb +Size: 185662 +MD5sum: 19448ca7f531facaebf6e7ff61d61c31 +SHA1: 6ec4c6e4ba780f12b09e681362a8e2b57877e8c0 +SHA256: 8ff983c7a3fa44e53b65210806d9fb739f2fdcddebaa1be51c2821fa0bab1a5c +SHA512: 3d56bed40fcd953d2e81f4bf16bf9ca0766f0a69839352e3bd2f7f165e13be7bbc744930e69e0c95eaf702659169abd8bc16d7bc805ed26f2138bd2cd41f3b7c +Description: Intel® Fortran Compiler & Intel® Fortran Compiler Classic 2022.2.1 for Linux* + + +Package: intel-oneapi-compiler-fortran-common-2023.0.0 +Architecture: all +Version: 2023.0.0-25370 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1766 +Depends: intel-oneapi-compiler-shared-common-2023.0.0, intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing-2023.0.0 +Filename: pool/main/intel-oneapi-compiler-fortran-common-2023.0.0-2023.0.0-25370_all.deb +Size: 187446 +MD5sum: d3e5ea219d802440750f65789493f640 +SHA1: 5d09abb9a31fcceb90f88c6624631ffe7a7bd3ea +SHA256: cfec359010bf71862af2c716b4fa887364d91845a7dc492f7a0c55d428145a3f +SHA512: 934d56e1361b872a3b873a5c36cbc62082bcffa966832dc26b27f94339718deb82d0ec972256ad1bc4259dcfd875b2ff50758d955a5cd379fc34fd3ca669b9ae +Description: Intel® Fortran Compiler & Intel® Fortran Compiler Classic 2023.0.0 for Linux* + + +Package: intel-oneapi-compiler-fortran-common-2023.1.0 +Architecture: all +Version: 2023.1.0-46305 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1757 +Depends: intel-oneapi-compiler-shared-common-2023.1.0, intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing-2023.1.0 +Filename: pool/main/intel-oneapi-compiler-fortran-common-2023.1.0-2023.1.0-46305_all.deb +Size: 186166 +MD5sum: 0d0de12b7e02fd85ad1025b8c7eead53 +SHA1: 5b373eb616881dde963021c59d23e96086ea27e5 +SHA256: 312bc5e47b7254c5637110a31c48509e09bdcb4af07a8edfddc3d190cd83d9b7 +SHA512: dbff080b311f336baf9516ada654ce779b82d95139d2453171a8aec7ce790fc35eb40919b77c910eb214db35c7f58d05874889fea79a7940922d1f219d4aa4f4 +Description: Intel® Fortran Compiler & Intel® Fortran Compiler Classic 2023.1.0 for Linux* + + +Package: intel-oneapi-compiler-shared-common-2021.1.1 +Architecture: all +Version: 2021.1.1-189 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 455876 +Depends: intel-oneapi-compiler-shared-common-runtime-2021.1.1,intel-oneapi-common-vars,intel-oneapi-common-licensing +Filename: pool/main/intel-oneapi-compiler-shared-common-2021.1.1-2021.1.1-189_all.deb +Size: 102086918 +MD5sum: 0a661d6acdb6dc2f214402018b2af3b8 +SHA1: bffe7fc198fdb23ea9260daadd386afc1ae17a84 +SHA256: 9381726d3043013d352e8d7c8d84c1f0d0161a9d536acdd15c42721de285551e +SHA512: 8804772ebc55aa9ee152ec7c5f195d8572907b30848b1e5e424a61c2346706ccb54349adf24cae755a16d85a0a21f719fa15a9a148d09d418127d126ad930b20 +Description: Intel(R) Compiler Shared Files + + +Package: intel-oneapi-compiler-shared-common-2021.1.2 +Architecture: all +Version: 2021.1.2-266 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 455904 +Depends: intel-oneapi-compiler-shared-common-runtime-2021.1.2,intel-oneapi-common-vars,intel-oneapi-common-licensing +Filename: pool/main/intel-oneapi-compiler-shared-common-2021.1.2-2021.1.2-266_all.deb +Size: 102103770 +MD5sum: 206a5b02de6012983beceb58b1c062d6 +SHA1: d2aad49f135536c1099f5cb72743aa814e0edb19 +SHA256: f731144c16a43e43fd3f518a252ae7e90c527a3c11953f2afac4a4dcc3acbe80 +SHA512: cde9ca105689b8da8436b370679a13d8b2093e984bb2ac838b0eb55a1598f00fca8d3c28ea3b9a8e951f6f9b6952ef3d61c120e9b61f2cc2cc90853c6198a7c5 +Description: Intel(R) Compiler Shared Files + + +Package: intel-oneapi-compiler-shared-common-2021.2.0 +Architecture: all +Version: 2021.2.0-610 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 547546 +Depends: intel-oneapi-compiler-shared-common-runtime-2021.2.0, intel-oneapi-common-vars (>= 2021.2.0-195), intel-oneapi-common-licensing-2021.2.0 +Filename: pool/main/intel-oneapi-compiler-shared-common-2021.2.0-2021.2.0-610_all.deb +Size: 123925290 +MD5sum: 948c77d02ada5f147828f05bae0a8b40 +SHA1: 4cd448546645696e6ca07a9904001876ae6bbb60 +SHA256: c3f9221c674cfd40087382cb801e95587c2d6f551c1a0ded945a43ef27ebc4dd +SHA512: cb408765547ae6486366468f41c8bffd045df67644bec4ebdef5704c42e393f65f537f837ddd0a846750aa3374c17a6fcc23b2ccd551b991905aaf62a31ab209 +Description: Intel(R) Compiler Shared Files + + +Package: intel-oneapi-compiler-shared-common-2021.3.0 +Architecture: all +Version: 2021.3.0-3350 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 346709 +Depends: intel-oneapi-compiler-shared-common-runtime-2021.3.0, intel-oneapi-common-vars (>= 2021.3.0-261), intel-oneapi-common-licensing-2021.3.0 +Filename: pool/main/intel-oneapi-compiler-shared-common-2021.3.0-2021.3.0-3350_all.deb +Size: 76625208 +MD5sum: ecdbdef97deb9781d2abb14fe476b23c +SHA1: d6ba434a9c593aa244794aba44802277fd30787f +SHA256: dd73a95d53cc052ce60a544eb2abf9da8db4c55174cfcadc93605b37de680a10 +SHA512: 594e94064e2596f910fe9f3c55ee87c6366c99db2435d0cea6c51012eba34707abaa38dfb96e731072a61d3c968464dcbf29108e659928b757be16bdc8cb2fe2 +Description: Intel(R) Compiler Shared Files + + +Package: intel-oneapi-compiler-shared-common-2021.4.0 +Architecture: all +Version: 2021.4.0-3561 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 372257 +Depends: intel-oneapi-common-vars (>= 2021.4.0-327), intel-oneapi-common-licensing-2021.4.0 +Filename: pool/main/intel-oneapi-compiler-shared-common-2021.4.0-2021.4.0-3561_all.deb +Size: 79071608 +MD5sum: 22c531fe05a1b04978ffa0abb4449ebd +SHA1: 51a135ca6d27bb8e0128ebf9466174c98e0e48ee +SHA256: ddaf1e89d2c8fceec52186693b74905e7ce753f0b89e4966ac759ddb10a9ffc8 +SHA512: 6aa1992a1c600a13738f0e1f74fdcaad1f3224fbfa070f8003027ac4afc681fe5c87a1db7cff14505855cb8d0c70a7c43a1b5a42b209e906d07570f62ff477d9 +Description: Intel(R) Compiler Shared Files + + +Package: intel-oneapi-compiler-shared-common-2022.0.1 +Architecture: all +Version: 2022.0.1-3633 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 448828 +Depends: intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-compiler-shared-common-2022.0.1-2022.0.1-3633_all.deb +Size: 95026058 +MD5sum: d9494808617746adc3379d596917cf8d +SHA1: a8bdbb488327602ff6cc19b8f26f471604037fd9 +SHA256: 2b3fec8ffa62ba8d135d28cc0998015506165742f70939acac221c22060373dd +SHA512: 675ee93a04b4f6f71d42312d1e02678f0a6bf57cf66a25329590cfc721d27a4203f33dbe2335c391cbc3191e1b6caa4166a1e9408d5232c5f94b1fc3c56e79c5 +Description: Intel(R) Compiler Shared Files + + +Package: intel-oneapi-compiler-shared-common-2022.0.2 +Architecture: all +Version: 2022.0.2-3658 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 448828 +Depends: intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-compiler-shared-common-2022.0.2-2022.0.2-3658_all.deb +Size: 94994338 +MD5sum: 012776993c92d5f4746471989215e6c4 +SHA1: 57a5d75171cb6561b3cc0bf88c861147d8e97651 +SHA256: 75a7dc5e64c8ee2c5c51a35ed833845f73c5659f509e60d3c4b4c197797abba5 +SHA512: 453d2239818b369fe33b339aa1d47b39d4fdcaf7060470bf2186e6b52e9cda99c5596b4325fa1620c7789c3d76093aa9b2b984f649d6ba7858528b80231d5418 +Description: Intel(R) Compiler Shared Files + + +Package: intel-oneapi-compiler-shared-common-2022.1.0 +Architecture: all +Version: 2022.1.0-3768 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 415554 +Depends: intel-oneapi-common-vars (>= 2022.1.0-161), intel-oneapi-common-licensing-2022.1.0 +Filename: pool/main/intel-oneapi-compiler-shared-common-2022.1.0-2022.1.0-3768_all.deb +Size: 90290540 +MD5sum: 5cee024d1ef4118f18b0514e907cf4b1 +SHA1: 2fecbc4af5592213589041c0cfb3f5853dcdcb35 +SHA256: c9961b90a9c4f4636c78292b5ba3d6cf6bbd7081f1ce4a4690bb7db94596226e +SHA512: 55ca02e275d9feaf78b0279c38f5bc5d9fa38f10ada630e51e5a2af36275130ddc8f1f9d3e17b2c345887dde1c2c32f1c19627d1d27e226e04dc79b609fbbd5e +Description: Intel(R) Compiler Shared Files + + +Package: intel-oneapi-compiler-shared-common-2022.2.0 +Architecture: all +Version: 2022.2.0-8734 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 392782 +Depends: intel-oneapi-common-vars (>= 2022.2.0-8694), intel-oneapi-common-licensing-2022.2.0 +Filename: pool/main/intel-oneapi-compiler-shared-common-2022.2.0-2022.2.0-8734_all.deb +Size: 83113432 +MD5sum: 41d73c48e6c56d982b38ec4763bd68c2 +SHA1: 11d5e5bdcd12583bba9d959a7d7b4657bb9804a8 +SHA256: 2ccf9c0f1db32bcd10179acc184e87f2079d05cca27f32da63c4ad76973bc2a8 +SHA512: 82d612bb22842b0199f2131550c006135002794b6efd93354fb64c39997ea2eaf713065edfab7c3a3baa03519578da39c36a6695177a061c9a7e110a61c9cd13 +Description: Intel(R) Compiler Shared Files + + +Package: intel-oneapi-compiler-shared-common-2022.2.1 +Architecture: all +Version: 2022.2.1-16953 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 393067 +Depends: intel-oneapi-common-vars (>= 2022.2.1-14969), intel-oneapi-common-licensing-2022.2.1 +Filename: pool/main/intel-oneapi-compiler-shared-common-2022.2.1-2022.2.1-16953_all.deb +Size: 83167744 +MD5sum: 26a2585f2d09d3fae5ef32575c939dae +SHA1: 923b0b2d7f67a216e633c91c58756e618db4699f +SHA256: d272c34fe93fb64709b8912615a6555b5d93ad4b445606c80a96748f277f1d4a +SHA512: 6688072fe8b92b6f719d0e7d931b45e031570ec949e8ea6dce12850642f0b5d5ab7074194ce8a1c560c41f58bdad3a4bdffafda1e065baf908b652064c05a81f +Description: Intel(R) Compiler Shared Files + + +Package: intel-oneapi-compiler-shared-common-2023.0.0 +Architecture: all +Version: 2023.0.0-25370 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 524378 +Depends: intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing-2023.0.0 +Filename: pool/main/intel-oneapi-compiler-shared-common-2023.0.0-2023.0.0-25370_all.deb +Size: 100375534 +MD5sum: 42ededd0dcd4a573043549a8d826a360 +SHA1: 66a9a0143207baecc05fe92340ec6d9795b64e3b +SHA256: a1dcc49438fc1a83474a6f3bc4543ca6cf7dcb0b5a8dcd1bdffed9ac488825fd +SHA512: 7705923234d3eb95c8bcb96ae15c155ed4f2bea9dd69813f97c2d8ecd33959a11775fd547c97cf26deba873004fdeb9a6e801d4c29b18af729392900492540ad +Description: Intel(R) Compiler Shared Files + + +Package: intel-oneapi-compiler-shared-common-2023.1.0 +Architecture: all +Version: 2023.1.0-46305 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 587760 +Depends: intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing-2023.1.0 +Filename: pool/main/intel-oneapi-compiler-shared-common-2023.1.0-2023.1.0-46305_all.deb +Size: 108978714 +MD5sum: 97a7bf79b709b138b59aedc125ea6b86 +SHA1: f23f1e94df79f1e3eff5416d1b8d15f556434bd6 +SHA256: 894eaf13bfe840d2f5df49685e9f5bb9ca8212bc2c8ddf848adcabb3806db8bd +SHA512: 98ac22f4bf7438a514fd40c5ccc256e4762e862fcd782f631edb900b980dfc8dad37b561222c7bf5ff72ee0d5adf0a8fa7aadc846295e73d972edafa4fe73138 +Description: Intel(R) Compiler Shared Files + + +Package: intel-oneapi-compiler-shared-common-runtime-2021.1.1 +Architecture: all +Version: 2021.1.1-189 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 56513 +Depends: intel-oneapi-common-vars,intel-oneapi-common-licensing +Filename: pool/main/intel-oneapi-compiler-shared-common-runtime-2021.1.1-2021.1.1-189_all.deb +Size: 13167876 +MD5sum: 690370695738f32aa5e66d9fd7bd36e2 +SHA1: 5c0045fe22fd7e60d278d007228d9e0e28eca18d +SHA256: e6357f9ac62836ee4136a19635b78f591643024f07e1f3cad29d40c1577dacf4 +SHA512: f1934bddd187de1f98e10ddd5e07fb69d1c1742a1187c49f1cb3f27fa9ef356b8bc3a48d351ff10d0cbb52af336f0fbf04b07a3f6d0acbe14d99dc9ef679e0ab +Description: Intel(R) Compiler Shared Files + + +Package: intel-oneapi-compiler-shared-common-runtime-2021.1.2 +Architecture: all +Version: 2021.1.2-266 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 56513 +Depends: intel-oneapi-common-vars,intel-oneapi-common-licensing +Filename: pool/main/intel-oneapi-compiler-shared-common-runtime-2021.1.2-2021.1.2-266_all.deb +Size: 13168540 +MD5sum: a3688dcb8677c750d2c50ee9b9b1a38c +SHA1: 6605dfd917576d3bdfd1c74ca2cf753a9e17982c +SHA256: 86148e6ccb7d7d056c93b697418f3f77625d8177e67564f97f3647f1631ab032 +SHA512: c316e2057357a45e1c2ef86596942d35225e79d798d74f9546d64bafdedaccb8f17609c317cc606e0d39107e11aac9ed730ab39aa53c01f56bd9e55486901eb9 +Description: Intel(R) Compiler Shared Files + + +Package: intel-oneapi-compiler-shared-common-runtime-2021.2.0 +Architecture: all +Version: 2021.2.0-610 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 58041 +Depends: intel-oneapi-common-vars (>= 2021.2.0-195), intel-oneapi-common-licensing-2021.2.0 +Filename: pool/main/intel-oneapi-compiler-shared-common-runtime-2021.2.0-2021.2.0-610_all.deb +Size: 13912746 +MD5sum: e4bcecbf5a3bc363de5944bb9b97ba17 +SHA1: 9d19a0174dfd879c77caf8d909688f9d0ba5c13c +SHA256: 2f190d34f79b5518f3769d8cfb9bd46a55f68bd8a10099ace5e9018339e96042 +SHA512: ae055005b76d88edd4d8541a190acaae3f55446fe1dc4cb4bdcd44f4e28390ab10307dd39ff6b36458c14092c77afc6333ccb006814286617212f1c74c45d035 +Description: Intel(R) Compiler Shared Files + + +Package: intel-oneapi-compiler-shared-common-runtime-2021.3.0 +Architecture: all +Version: 2021.3.0-3350 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 62711 +Depends: intel-oneapi-common-vars (>= 2021.3.0-261), intel-oneapi-common-licensing-2021.3.0 +Filename: pool/main/intel-oneapi-compiler-shared-common-runtime-2021.3.0-2021.3.0-3350_all.deb +Size: 14614708 +MD5sum: e354c65077f67252cac49d4b04622811 +SHA1: c7cc69d0c7f30bc7b1f42e2d4d6b27d49e408cc1 +SHA256: 2555053fa6dce66de2b62037b69ee976358f8b6062ab1f5e71a35cfd84bc48de +SHA512: 7a84f7c64a97abaeec1875017fc4f4f2d01dc06d1a539d0031c33f3ab1fe0afa89e8b90213a88294fd0c8c375dc4172cbd151535dc881dbe998f68ab0e7abe10 +Description: Intel(R) Compiler Shared Files + + +Package: intel-oneapi-dal-common-2021.1.1 +Architecture: all +Version: 2021.1.1-79 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 120 +Depends: intel-oneapi-common-vars,intel-oneapi-common-licensing +Filename: pool/main/intel-oneapi-dal-common-2021.1.1-2021.1.1-79_all.deb +Size: 24452 +MD5sum: a444f5251e0d3260269f9146169ca857 +SHA1: 58025d6c552e5c40d42283f8e65dea9b93762d99 +SHA256: 89e87e88c8750477da48cfe109bd3d433f3c645837a6462be0e5e95413cdf332 +SHA512: d74f3e86a3fa65cf60c11860b492e9166858d1380514715f9f27af67ae582474befac610089f6fd7e1cc97fc08ef7aa0bb4419166b5bfdd02070646406d2f0dd +Description: Intel® oneAPI Data Analytics Library common + + +Package: intel-oneapi-dal-common-2021.2.0 +Architecture: all +Version: 2021.2.0-358 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 126 +Depends: intel-oneapi-common-vars (>= 2021.2.0-195), intel-oneapi-common-licensing-2021.2.0 +Filename: pool/main/intel-oneapi-dal-common-2021.2.0-2021.2.0-358_all.deb +Size: 26198 +MD5sum: c8904fda565ddbc511cafef8b0623251 +SHA1: c0d5f7ca68b7109dbf17cca2ed0ce91da7b23feb +SHA256: c5159e234463e2a6600c5786e76a567b335435dce54c7d83709a06be4db5f097 +SHA512: 5b0acc335a775ce996451e3c76414b83fc5ab0bb3622e910876f75bef6f958213ff70a57d742f068a11d4b637eb72810a863ca54f564ca5c75a361b09b950b03 +Description: Intel® oneAPI Data Analytics Library common + + +Package: intel-oneapi-dal-common-2021.3.0 +Architecture: all +Version: 2021.3.0-557 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 125 +Depends: intel-oneapi-common-vars (>= 2021.3.0-261), intel-oneapi-common-licensing-2021.3.0 +Filename: pool/main/intel-oneapi-dal-common-2021.3.0-2021.3.0-557_all.deb +Size: 25846 +MD5sum: 6a99cd2d7f81caad79b2736f61af80ae +SHA1: e27fe865f7909a73e67c8e4eb31facc9ee4946c6 +SHA256: f1d5fec319ebadf0c5aefacb43f42ad25e83fa4d94aa1950de5f01e894daf43b +SHA512: a22540290335978fefdd984e24dfa79e4c9e38aca7045286921db95af96435697b4c8df01641d7b09d48d0babae3b2b7ec7754ef5435f962ef5da14ae83b837f +Description: Intel® oneAPI Data Analytics Library common + + +Package: intel-oneapi-dal-common-2021.4.0 +Architecture: all +Version: 2021.4.0-729 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 138 +Depends: intel-oneapi-common-vars (>= 2021.4.0-327), intel-oneapi-common-licensing-2021.4.0 +Filename: pool/main/intel-oneapi-dal-common-2021.4.0-2021.4.0-729_all.deb +Size: 26910 +MD5sum: 882c2d2680778fdea7475b6cba4e8c08 +SHA1: 9915c589c84876e9f05f8967033b6629cd16199a +SHA256: af8cb55ac1fd502c3304d17a494a7bfafe34e94cf55f64b3706e34509e14a897 +SHA512: fe8cb0f9709fbc2bb8b90fea9833276889bda0dc5d21ac95748f50791671f49c60d011b489f51e932346f4b0732757d35c7ba5f94d22f30cfb5cf1478b5fa18d +Description: Intel® oneAPI Data Analytics Library common + + +Package: intel-oneapi-dal-common-2021.5.1 +Architecture: all +Version: 2021.5.1-803 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 137 +Depends: intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-dal-common-2021.5.1-2021.5.1-803_all.deb +Size: 26974 +MD5sum: 19698d6ded1b3479e5cf50d6f8bea8dc +SHA1: 3b73a40ad4e1c08d30cf877610a23dc3fd909d93 +SHA256: dfd0b9e5d55377044b02e1148fedc0a7e9c28ca0a2eb61540dc6268c2fae61f5 +SHA512: 50fb6af31770ed22e185ce9a5b414f46bc6d7def62b4876e9d74645ff421f16e07622ddffedfcf723b1c03ecff21c391e5d401b64a1182c468fe515e317d0301 +Description: Intel® oneAPI Data Analytics Library common + + +Package: intel-oneapi-dal-common-2021.5.3 +Architecture: all +Version: 2021.5.3-832 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 137 +Depends: intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-dal-common-2021.5.3-2021.5.3-832_all.deb +Size: 26972 +MD5sum: 1a26d0c73115d53dc8d9c33fb884f76c +SHA1: 42b5bf1c5797c73cd702c20aff936d43116ef57f +SHA256: 8db19cefe3863809b589653baf50e71ef2a91a825e1b401bb8e2a45de801d65e +SHA512: 02c834fe340780f1be4606b3976d2635820af78271d5a230c15e229f12af167ec83cd9c73f6d65bc58a3817176251396f765fdf075503d9549d1757178532718 +Description: Intel® oneAPI Data Analytics Library common + + +Package: intel-oneapi-dal-common-2021.6.0 +Architecture: all +Version: 2021.6.0-915 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 134 +Depends: intel-oneapi-common-vars (>= 2022.1.0-161), intel-oneapi-common-licensing-2022.1.0 +Filename: pool/main/intel-oneapi-dal-common-2021.6.0-2021.6.0-915_all.deb +Size: 27054 +MD5sum: 42e540b48902b5f48c5d92762aa876a0 +SHA1: a706c536b2ae654d468084d802bc5ba5c1651e21 +SHA256: 5c0a19bedba4bff264b87f12f50976ab1dc6176ebb7141e702a4a6d278e0eee0 +SHA512: 514c01f1fd4b11ae53c8a26249fb44837a83b06db53534925894d23eac7cb1544da08e7173e4f5fb81bd1676d13ba9b79c2bb4b555875a23aad5c20939522413 +Description: Intel® oneAPI Data Analytics Library common + + +Package: intel-oneapi-dal-common-2021.7.0 +Architecture: all +Version: 2021.7.0-8746 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 165 +Depends: intel-oneapi-common-vars (>= 2022.2.0-8694), intel-oneapi-common-licensing-2022.2.0 +Filename: pool/main/intel-oneapi-dal-common-2021.7.0-2021.7.0-8746_all.deb +Size: 27062 +MD5sum: 1b67af9996ad5b5a2dc8ebad3784c74b +SHA1: 85ceb9cc6a0325f802f9fc5ef0a41065f883f446 +SHA256: ba43dcb729384e0be6443d6c067206a00b4f15f0768919a575850ea4c1b66fb8 +SHA512: 14d02d67affb36588995104e0dbc3a501d9cb75f26f6af71adb83180d1d0988f09f74c70a32844fa0d076f43a6c3ddc0ba9623e088bc791a1b10fa486b805ca8 +Description: Intel® oneAPI Data Analytics Library common + + +Package: intel-oneapi-dal-common-2021.7.1 +Architecture: all +Version: 2021.7.1-16996 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 165 +Depends: intel-oneapi-common-vars (>= 2022.2.1-14969), intel-oneapi-common-licensing-2022.2.1 +Filename: pool/main/intel-oneapi-dal-common-2021.7.1-2021.7.1-16996_all.deb +Size: 27038 +MD5sum: 4cf2d6324bd95ecf9aadd0396bbc83fe +SHA1: 2e71cfef733cae1e9ef081e818c867cfed310704 +SHA256: 61299c06a53ee7f8948659fcc9d225dba6e5fb5652bc3e112735fc930d1af954 +SHA512: 8fc40add9ab981b73e09213049095adcd77f91a924dba550f5262b2009e98ace70f04ad04addf514c9b58dc95ed8f3e3423005df21961745f5e232ea9218cb45 +Description: Intel® oneAPI Data Analytics Library common + + +Package: intel-oneapi-dal-common-2023.0.0 +Architecture: all +Version: 2023.0.0-25395 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 176 +Depends: intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing-2023.0.0 +Filename: pool/main/intel-oneapi-dal-common-2023.0.0-2023.0.0-25395_all.deb +Size: 31866 +MD5sum: ecb3e9051237dfc9fe83fa5cc58b1352 +SHA1: 8f1916fcc4c05ded765a364402e6fe609ba83e69 +SHA256: 0e5a00df088bb049c4e725a9f0ecfc437646e932dddb15506d1b4fd6793ddf34 +SHA512: b45bca560345ce483a2558546bf551f43fba66e3e153c300c1b522f029528999614a257a45a6f54288f3e52900452ec35048d46965551378cdefadc5eaf3d082 +Description: Intel® oneAPI Data Analytics Library common + + +Package: intel-oneapi-dal-common-2023.1.0 +Architecture: all +Version: 2023.1.0-46349 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 176 +Depends: intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing-2023.1.0 +Filename: pool/main/intel-oneapi-dal-common-2023.1.0-2023.1.0-46349_all.deb +Size: 31850 +MD5sum: b7268508354b8e34b70025b1d7c07673 +SHA1: 74daf74983c650febf974ca146d53ed19bf67b1f +SHA256: ffa4620fe6deeb71779ecc8ea6e4b113d93d0abb326632ec87a2be6aa62b579f +SHA512: 7f08ce026aa1d849f05afb08fba802631fc027f7b90e492e5a37ca3931a9e41be56289e2da1a10d51e08de56b9850d25e741a578fdf60d12f0c6de09e9b4777b +Description: Intel® oneAPI Data Analytics Library common + + +Package: intel-oneapi-dal-common-devel-2021.1.1 +Architecture: all +Version: 2021.1.1-79 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 74846 +Depends: intel-oneapi-common-vars,intel-oneapi-common-licensing +Filename: pool/main/intel-oneapi-dal-common-devel-2021.1.1-2021.1.1-79_all.deb +Size: 17404852 +MD5sum: c6b8de693ab6e3645f60390338da8f4d +SHA1: 41d36db6d1559c633ce1fe72a564579ddf6986fd +SHA256: 23ad0f1e60e917a9f2a8a9c007201a8d673e1d17b7cd24be8a9b042754a12928 +SHA512: e20ea2a8b72cf5bc4ddeb2f935c8b011620def71e4d0a4310d2d5c4bdbcd4a198cfc388f4987069ad4a29541c6cf1f0b928d04d283d27123e542a90819a5aca0 +Description: Intel® oneAPI Data Analytics Library common + + +Package: intel-oneapi-dal-common-devel-2021.2.0 +Architecture: all +Version: 2021.2.0-358 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 76313 +Depends: intel-oneapi-common-vars (>= 2021.2.0-195), intel-oneapi-common-licensing-2021.2.0 +Filename: pool/main/intel-oneapi-dal-common-devel-2021.2.0-2021.2.0-358_all.deb +Size: 17885498 +MD5sum: 6006f1c7a886f3efd90f5bc4e3f446d9 +SHA1: 1642f66a96d5f0c27d41abf0ccfcfb2a8590d284 +SHA256: 992ddba70c401493c16dff60ee5d1dfb47bcd873b7a6de55f38a83a17a75d6df +SHA512: 89e69c0eba96e9d5dc51e6124e34415f403f028c77d89add9aae4e742d632762ec6897bca9797aa0b27381edc78b371d30c0875e05849d38619bc9a766de916e +Description: Intel® oneAPI Data Analytics Library common + + +Package: intel-oneapi-dal-common-devel-2021.3.0 +Architecture: all +Version: 2021.3.0-557 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 76976 +Depends: intel-oneapi-common-vars (>= 2021.3.0-261), intel-oneapi-common-licensing-2021.3.0 +Filename: pool/main/intel-oneapi-dal-common-devel-2021.3.0-2021.3.0-557_all.deb +Size: 18047908 +MD5sum: dbb43b45c3e1cb453e18e69c5d014870 +SHA1: 2271a6c56dbf6b7adfb20351eadfd3739e6f74c5 +SHA256: 56f019904a88d24723def7da174446edcd9e952e3092148e2cff232a9050110f +SHA512: 71630e5edfdc9313ca3a6d9133fae584c501d7c3f9f8dfcbf487781b9bba1f08584073848c81523755308a00a7b99c91f1e65c4f662ae900266b7e766a91cd8a +Description: Intel® oneAPI Data Analytics Library common + + +Package: intel-oneapi-dal-common-devel-2021.4.0 +Architecture: all +Version: 2021.4.0-729 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 76751 +Depends: intel-oneapi-common-vars (>= 2021.4.0-327), intel-oneapi-common-licensing-2021.4.0 +Filename: pool/main/intel-oneapi-dal-common-devel-2021.4.0-2021.4.0-729_all.deb +Size: 18034444 +MD5sum: 40c9ee40ab0e897f4e53e3ce9823cf28 +SHA1: 64d693f46883517c102304f5abfc85ba0b682fa6 +SHA256: 968bd4954fa051b69b30bf31205c809e9a83e91300dcc352e229d6d396b8d15d +SHA512: 925f8be90684231c0818865583dcc83117fdf200632efde361bf80a3a6cf4eecd04174d9064760d2be31c35426679446c8c60f4377e3b8e241781ebfd02dbd8c +Description: Intel® oneAPI Data Analytics Library common + + +Package: intel-oneapi-dal-common-devel-2021.5.1 +Architecture: all +Version: 2021.5.1-803 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 79476 +Depends: intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-dal-common-devel-2021.5.1-2021.5.1-803_all.deb +Size: 19026080 +MD5sum: 49997e2d18e1601d0255d8a46f4a2c46 +SHA1: 0237498706580abe8c0ec77ea14e4b39f402f3e7 +SHA256: 1960b604b84764ad5d93214579c0eacd793498bc22110c4ddcbd132fcbb5056c +SHA512: e3dfe83b33aad87cb6fab15646c4a59e9538279c9eda44da6b4af3a6f9eab973234e244c91a6fa215f99dad0c151641be13fb2158e8511c6ec1f8b243a498cd5 +Description: Intel® oneAPI Data Analytics Library common + + +Package: intel-oneapi-dal-common-devel-2021.5.3 +Architecture: all +Version: 2021.5.3-832 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 79476 +Depends: intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-dal-common-devel-2021.5.3-2021.5.3-832_all.deb +Size: 19017278 +MD5sum: b34e82b0aa1d0538c2341c0c1aa02d4b +SHA1: 92dba0fa75c28887f979cb795a61246c08fa4a27 +SHA256: 9920ee66295d8441ab0a55d07ccdd3791122badeba7510eff09da9b736a86437 +SHA512: f4bd8edee738a4653fe7d0f160150b56d6b7364071e182714179c1ba5b593f223787bb8c7ac5d5de1a695d212ba2ec971a2a23e8bd41f243882e4da3a073efda +Description: Intel® oneAPI Data Analytics Library common + + +Package: intel-oneapi-dal-common-devel-2021.6.0 +Architecture: all +Version: 2021.6.0-915 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 79376 +Depends: intel-oneapi-common-vars (>= 2022.1.0-161), intel-oneapi-common-licensing-2022.1.0 +Filename: pool/main/intel-oneapi-dal-common-devel-2021.6.0-2021.6.0-915_all.deb +Size: 19991354 +MD5sum: d66be04929f371e030e27b5043117247 +SHA1: 57ba8c88bcb58418c722623ac65ac8e94e764662 +SHA256: 1787712381e202cc9d54f6184dec24fef5722b1c78e49679aa7e29c4266031ec +SHA512: 986310618f59f185bc8c6167eac517dbe163cffd1a882b119becb9b8b6d60a4083626411b4f8134ac93678661a1d2f0df35048d3974a802b1be26710a21e1186 +Description: Intel® oneAPI Data Analytics Library common + + +Package: intel-oneapi-dal-common-devel-2021.7.0 +Architecture: all +Version: 2021.7.0-8746 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 80433 +Depends: intel-oneapi-common-vars (>= 2022.2.0-8694), intel-oneapi-common-licensing-2022.2.0 +Filename: pool/main/intel-oneapi-dal-common-devel-2021.7.0-2021.7.0-8746_all.deb +Size: 19969798 +MD5sum: b017327e482b6567a456f90208e4458a +SHA1: 7fab523ea24e5d67a27321a87393e97f7ccc30e7 +SHA256: aa7d36d5cc1e9e56bb6e39897e2108e2be37d7158979bd337e06693e65ac0ad2 +SHA512: 604d77be4b32ab7ecdcb4f9d811c91f5b6bebc3f19f18528ae9b55975f4edd44c69209a6bd94d4b734ecf9cfe14e2935c085439a0b130851efe6491638aa4b97 +Description: Intel® oneAPI Data Analytics Library common + + +Package: intel-oneapi-dal-common-devel-2021.7.1 +Architecture: all +Version: 2021.7.1-16996 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 80445 +Depends: intel-oneapi-common-vars (>= 2022.2.1-14969), intel-oneapi-common-licensing-2022.2.1 +Filename: pool/main/intel-oneapi-dal-common-devel-2021.7.1-2021.7.1-16996_all.deb +Size: 19985534 +MD5sum: 0764898394d4ebefa2410e630de77334 +SHA1: a70bcce8efcd46e2deaab5e16a2d2a7ec0a32f51 +SHA256: d28e857451b5b1896f0f9b00c89be138e95d406f28ae0e3f62a083878a855478 +SHA512: f99566aa9d2379141dfc831b79f442609dfaa5fe48702629a82517bcf60239466437a817b1f0665365b7f03b3ef8345ea178ac7f71c45cea7dcf58cf51391675 +Description: Intel® oneAPI Data Analytics Library common + + +Package: intel-oneapi-dal-common-devel-2023.0.0 +Architecture: all +Version: 2023.0.0-25395 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 80490 +Depends: intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing-2023.0.0 +Filename: pool/main/intel-oneapi-dal-common-devel-2023.0.0-2023.0.0-25395_all.deb +Size: 19998366 +MD5sum: 8a48cb2199bbe8b73281e29482fdb5ed +SHA1: 6e2d19584e8ad7c1b13acc5d4b8f690c835ae286 +SHA256: fe8210d31da4e6d1e4b4cae5b83cb44a3bbbe36b8ccb23199604b25770ec07a5 +SHA512: ebeb1de4aa804331acb64127d47b0dca91ed689feb55967246e1cce26bc8c3ceaa9d1a0f08ec61c56b5055cdf1fafa00a2bbc424789d471e0c08560921a31933 +Description: Intel® oneAPI Data Analytics Library common + + +Package: intel-oneapi-dal-common-devel-2023.1.0 +Architecture: all +Version: 2023.1.0-46349 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 55237 +Depends: intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing-2023.1.0 +Filename: pool/main/intel-oneapi-dal-common-devel-2023.1.0-2023.1.0-46349_all.deb +Size: 10224714 +MD5sum: 9e793ec9b9e4c22823ca59771a18809e +SHA1: ffc62b13e0b45b986779373cbc530345d4b1b6dd +SHA256: 72f539982ef75acc8d236144529715d656f35b3ffff486f5205295aa97fe097b +SHA512: d25a6b74599e3691338066664d0dfef15ed6e752d33e572ffc31945d35ec03858da36645bb478a57174cb90fbe610eb1198385b60afb4c3befded21acd51f948 +Description: Intel® oneAPI Data Analytics Library common + + +Package: intel-oneapi-dev-utilities-eclipse-cfg +Architecture: all +Version: 2021.1.1-197 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1 +Depends: intel-oneapi-common-vars,intel-oneapi-common-licensing +Filename: pool/main/intel-oneapi-dev-utilities-eclipse-cfg-2021.1.1-197_all.deb +Size: 1878 +MD5sum: 16d70335a5ea552cfe179f6cf0097fcb +SHA1: d4e872f96e66e7093923a27eddef2ca8ee04fa8d +SHA256: 737aaeba3b9b6d1275b21e132f37d5db485a530b8259cfcc591abcd315f4ca96 +SHA512: 1b441b802dbb4e9cc8ec1a9b5b5d15cf5f7cac8dbb4cb4bc786d63def1ed6612b135aa8498c6303ddb60c7ef5d3a6719bf842ae4f3f950ef768ee77096720970 +Description: intel-oneapi-dev-utilities-eclipse-cfg + + +Package: intel-oneapi-dev-utilities-eclipse-cfg +Architecture: all +Version: 2021.2.0-493 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1 +Depends: intel-oneapi-common-vars (>= 2021.2.0-195), intel-oneapi-common-licensing-2021.2.0 +Filename: pool/main/intel-oneapi-dev-utilities-eclipse-cfg-2021.2.0-493_all.deb +Size: 1892 +MD5sum: 3bf8d62af70d5e3a4bd42b088b17c034 +SHA1: b5ab17bc9ac334e1088a46c57d4417931df3a9ef +SHA256: fc2016d15d75e8f16929c6e985f762503884f2faeb148034069b60eb0e37c4ff +SHA512: 23ebbfcf86bc5bca8b215a66ddec4b4265b7155cb575d4681f9fc98d01f40e786b7bc7519baa54ab499af15ca9365084b1d4228836b35465e72d4bb31cc79bed +Description: intel-oneapi-dev-utilities-eclipse-cfg + + +Package: intel-oneapi-dev-utilities-eclipse-cfg +Architecture: all +Version: 2021.3.0-691 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1 +Depends: intel-oneapi-common-vars (>= 2021.3.0-261), intel-oneapi-common-licensing-2021.3.0 +Filename: pool/main/intel-oneapi-dev-utilities-eclipse-cfg-2021.3.0-691_all.deb +Size: 1888 +MD5sum: 986fc1de3712f1452d3799b9b6b38e64 +SHA1: 004da5907a75b5b5af3c5d99eb8f1031739f419f +SHA256: be02a8ef9af8d90ec1e721fd828f15d84a05d10221e814456a5455e8f9deec58 +SHA512: 26d7dc27460d0038007d11db091a582ddaa8b664bc9640bb124de2f2c4e9f9ba9f608c3d3d4b41f8eef4edcd97ea0f3ee2cace6cc1e29b2e4eb9bad254585b7e +Description: intel-oneapi-dev-utilities-eclipse-cfg + + +Package: intel-oneapi-dev-utilities-eclipse-cfg +Architecture: all +Version: 2021.4.0-847 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1 +Depends: intel-oneapi-common-vars (>= 2021.4.0-327), intel-oneapi-common-licensing-2021.4.0 +Filename: pool/main/intel-oneapi-dev-utilities-eclipse-cfg-2021.4.0-847_all.deb +Size: 1888 +MD5sum: 1bae1b3c08217afa12224f6cfc083396 +SHA1: daa3f26aed4b4ca0afee9ed46cca352fa62150e7 +SHA256: 045cd5a7b0055eaccbbbb93c9ea71bf187235237b4b6e7d683f5f489a741d404 +SHA512: fa0968ae0fcd9b78dae50f892beeeea51ab2868905176d58ff6d7ea977f85faec6c1e8903ca7a6421c9a499a4f501e383b66d38a882ce690dae67392a9ff4ba5 +Description: intel-oneapi-dev-utilities-eclipse-cfg + + +Package: intel-oneapi-dev-utilities-eclipse-cfg +Architecture: all +Version: 2021.5.1-924 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1 +Depends: intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-dev-utilities-eclipse-cfg-2021.5.1-924_all.deb +Size: 1896 +MD5sum: f170aaefd10371121028b016fbab597a +SHA1: 48007a55b0ac7bfcb1f11068e9be99d7e98a2bf1 +SHA256: 8cadea39537db1f3a6063909e8cf0721dd1b6c04e320d477c03c87d12761c7a5 +SHA512: fc8dbbb366966c8e3098cf5a9e6cee99f25806575542a17694586f28327124c70196b8d8d11f11fca69f691299b98dec74408ca97b57ade856918ed59355cfac +Description: intel-oneapi-dev-utilities-eclipse-cfg + + +Package: intel-oneapi-dev-utilities-eclipse-cfg +Architecture: all +Version: 2021.5.2-936 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1 +Depends: intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-dev-utilities-eclipse-cfg-2021.5.2-936_all.deb +Size: 1890 +MD5sum: 2d27e0d359e1b0e985db1b1cdb8f7d54 +SHA1: 4cad96fc628d310ab8a1eb416af68550f397d536 +SHA256: 529ad4e5dbe10a85350b03ca91c10bef25e0ed1849aed617f1efb910cd02eeb5 +SHA512: ca56d1284d05cb8d256a32d7d03a4d5b2f3346b76a93e383decbc119a7f25bef2263205d09b135f0cb219d3715d83136909fbcc36c0eec1f0a8dc8e39b86b2c0 +Description: intel-oneapi-dev-utilities-eclipse-cfg + + +Package: intel-oneapi-dev-utilities-eclipse-cfg +Architecture: all +Version: 2021.6.0-989 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1 +Depends: intel-oneapi-common-vars (>= 2022.1.0-161), intel-oneapi-common-licensing-2022.1.0 +Filename: pool/main/intel-oneapi-dev-utilities-eclipse-cfg-2021.6.0-989_all.deb +Size: 1980 +MD5sum: e5d97deb7d67d6825a13081ca60a8d73 +SHA1: 887470af8b53b0263c74574423ce6638ce175248 +SHA256: b9a4895851bbb6d69a0a87c2a12aea34b34553ab15f224a5ab81d8b98a14bc3d +SHA512: 2bb39f5ba8fffd0567c88f2948fe2984d403c5db6975b7e5a137d1eaa88104ee8f8a6f5d1f944d0ee3173fd573d97c84362e38e451e8c31678a65aa64ebc322b +Description: intel-oneapi-dev-utilities-eclipse-cfg + + +Package: intel-oneapi-dev-utilities-eclipse-cfg +Architecture: all +Version: 2021.7.0-8698 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 25 +Depends: intel-oneapi-common-vars (>= 2022.2.0-8694), intel-oneapi-common-licensing-2022.2.0 +Filename: pool/main/intel-oneapi-dev-utilities-eclipse-cfg-2021.7.0-8698_all.deb +Size: 1976 +MD5sum: f6a156ee57a70c8f4934eb32407b38dc +SHA1: 41652732553a7b121083e07161f4b684d1dac160 +SHA256: dd79b287a8f23902b8fe6a09aa9f02f38d462efce80c2ea69f3f80ca6c7da206 +SHA512: 6b58395e282d4944bdf6800d65adc8eae821bf36f5c14ae0554a8193fdd05e8b474833189025782df91aaa3066d93e201198ac65b62480391b9cf3a01d85926f +Description: intel-oneapi-dev-utilities-eclipse-cfg + + +Package: intel-oneapi-dev-utilities-eclipse-cfg +Architecture: all +Version: 2021.7.1-14991 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 25 +Depends: intel-oneapi-common-vars (>= 2022.2.1-14969), intel-oneapi-common-licensing-2022.2.1 +Filename: pool/main/intel-oneapi-dev-utilities-eclipse-cfg-2021.7.1-14991_all.deb +Size: 1976 +MD5sum: aa17993118982268c23d6e5db4d3915c +SHA1: 0f737d85f2b6a907e4115d4bac8ae43f4ee66937 +SHA256: f442d3051d5f0b44bb9a130b1b722c602d836af818a828583a5fe2541c12a4f5 +SHA512: 1a1d125f6f22f61b00c327adbe3abdc1815d849c5230619958a8308bbca70a68205521967d6de9c3e45b0b4dfd3bab27ffbe39ffb4622058b682ae3ac38ff094 +Description: intel-oneapi-dev-utilities-eclipse-cfg + + +Package: intel-oneapi-dev-utilities-eclipse-cfg +Architecture: all +Version: 2021.8.0-25328 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 25 +Depends: intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing-2023.0.0 +Filename: pool/main/intel-oneapi-dev-utilities-eclipse-cfg-2021.8.0-25328_all.deb +Size: 1972 +MD5sum: f4f4eaef69fb324f5ffd53a6ca15c241 +SHA1: 7a63e42abc0f78766d6ec318183cb7ed6f0878b0 +SHA256: e91dde74241905098eb7dc59faf37b1f3b6bb6c72fc2f4a7d17a2d6ad2d33937 +SHA512: 9fec25f86cd370f45d016c0652a8cb51fda70c025ada43c7c87a673aad4e2904ed5d7ab48ae76d5cc3da7e08f218160f4ddb4a685df8378e44f601c1452bfd4d +Description: intel-oneapi-dev-utilities-eclipse-cfg + + +Package: intel-oneapi-dev-utilities-eclipse-cfg +Architecture: all +Version: 2021.9.0-44447 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 25 +Depends: intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing-2023.1.0 +Filename: pool/main/intel-oneapi-dev-utilities-eclipse-cfg-2021.9.0-44447_all.deb +Size: 1976 +MD5sum: d041c271bec96fd8f25b30e79c26679c +SHA1: 6e5b4f55a5bf2ff8efd47cb40ee3a9f63846d7b5 +SHA256: 363d89c5923648a199afefb0a9679ee93b090e14beb85860ac66a868bd274f9c +SHA512: de644435da671b34ed87048b4c0b39c8b234209ff021513a177041379b9831b9e763ec403817ea24789f50cf3f1a347e9f925a67880743db03571a3248062d60 +Description: intel-oneapi-dev-utilities-eclipse-cfg + + +Package: intel-oneapi-dpcpp-ct-eclipse-cfg +Architecture: all +Version: 2021.1.1-59 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1 +Depends: intel-oneapi-common-vars,intel-oneapi-common-licensing +Filename: pool/main/intel-oneapi-dpcpp-ct-eclipse-cfg-2021.1.1-59_all.deb +Size: 1920 +MD5sum: 1e1d99f21e0c384792c923230421cb94 +SHA1: 892e67605a9b8daa16cf0ded5ba3c06a17f40c09 +SHA256: adf1c4a9b7464d25a4c2ce51edfec7d60434c4dfd58f829908d2668b01c8b22c +SHA512: d1d4ed0510e1390fb7687b9550cdfd9488bd91a05699df355685db9b51ca7ab8115648f88751f6b67e36324735d9e6c070349d98955a29988ed0254b35359f4c +Description: Intel® DPC++ Compatibility Tool 2021.1.1 for Linux* eclipse integration configuration file + + +Package: intel-oneapi-dpcpp-ct-eclipse-cfg +Architecture: all +Version: 2021.2.0-222 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1 +Depends: intel-oneapi-common-vars (>= 2021.2.0-195), intel-oneapi-common-licensing-2021.2.0 +Filename: pool/main/intel-oneapi-dpcpp-ct-eclipse-cfg-2021.2.0-222_all.deb +Size: 1932 +MD5sum: 101f701c7066944fc2cb49b51124d459 +SHA1: 1608376fd98fa64e30fe42db5eb068ec0dffaf9a +SHA256: a7296fe248e39f4f057a319b71c43911b0eba60bbdfe0b2e6f12fe09ea453373 +SHA512: d9cd78e39ea26d21de41258b926e8f675cad0b769503c277c0b81dde28e5985faf01cd6037f494bd5557d4f7aac2bc16785aa677931ebae5aab2fce4abe2a568 +Description: Intel® DPC++ Compatibility Tool 2021.2.0 for Linux* eclipse integration configuration file + + +Package: intel-oneapi-dpcpp-ct-eclipse-cfg +Architecture: all +Version: 2021.3.0-308 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1 +Depends: intel-oneapi-common-vars (>= 2021.3.0-261), intel-oneapi-common-licensing-2021.3.0 +Filename: pool/main/intel-oneapi-dpcpp-ct-eclipse-cfg-2021.3.0-308_all.deb +Size: 1934 +MD5sum: 3320964a32279f89775bb94f75ead075 +SHA1: 563cde1a679d49b6e6d0640cc61ded186c6864a5 +SHA256: 58a8d5a7daf3c555ced8d61a98e0b4d23d755227c01fe41b17a28043af6e1e91 +SHA512: 0a35fff6f7ae80dfdf49fb7aa8cd1c1217a3608ef4a112bde1578a3d5445389c8820807645a99b6b5b3d0fd7707059a5b04380d9493b02e683626af5585fc100 +Description: Intel® DPC++ Compatibility Tool 2021.3.0 for Linux* eclipse integration configuration file + + +Package: intel-oneapi-dpcpp-ct-eclipse-cfg +Architecture: all +Version: 2021.4.0-402 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1 +Depends: intel-oneapi-common-vars (>= 2021.4.0-327), intel-oneapi-common-licensing-2021.4.0 +Filename: pool/main/intel-oneapi-dpcpp-ct-eclipse-cfg-2021.4.0-402_all.deb +Size: 1934 +MD5sum: 1a9bfa5e77016968141bee05e8919beb +SHA1: 544de1f36ef523e845a0bae3d6a925f8b6aa099b +SHA256: 24cf9c149f467d14b80c370b2046044fcc4cf5c89d32bdee801ca61af3afd699 +SHA512: aa9989792e5cb76eff24a12fc1d522057ba0db557baddac806420588790a927ba05abd0e850cd8cc948ddd6721b1f29cb763952f78d7343363d5b329b76508b4 +Description: Intel® DPC++ Compatibility Tool 2021.4.0 for Linux* eclipse integration configuration file + + +Package: intel-oneapi-dpcpp-ct-eclipse-cfg +Architecture: all +Version: 2022.0.0-96 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1 +Depends: intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-dpcpp-ct-eclipse-cfg-2022.0.0-96_all.deb +Size: 1934 +MD5sum: b999f40dbd5c109252749792b35e45d9 +SHA1: 128c4dca0b160d4cbe2358a965bea2c192de21e8 +SHA256: 289e12f6ed8df55a233ba681885f07900b7b08cf5255428fdd8dd764c694d69d +SHA512: 51aeb95fc90b8e177857b6eb2668d4c4f5eeb9d87649c25743abf28ed7914adae7ba9717c4a3ad53eb0d1bd8d82c705b1ea6cd6784437ace188ce66956431cc7 +Description: Intel® DPC++ Compatibility Tool 2022.0.0 for Linux* eclipse integration configuration file + + +Package: intel-oneapi-dpcpp-ct-eclipse-cfg +Architecture: all +Version: 2022.1.0-172 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1 +Depends: intel-oneapi-common-vars (>= 2022.1.0-161), intel-oneapi-common-licensing-2022.1.0 +Filename: pool/main/intel-oneapi-dpcpp-ct-eclipse-cfg-2022.1.0-172_all.deb +Size: 2012 +MD5sum: eeee436677277faa346aee0431e09e13 +SHA1: 88a48acc4bf9088d42bdc4c0e439d6e4315933b4 +SHA256: b8e0053bf3c8ec14c3fdcc4e54b71c15c6f0ac7ee2f7ea22cf4bb677003ebf00 +SHA512: 13796f2a5bb58bded6833f947ee5a48d6199c93772050356e5741e669ea77d98e17fdf608be42afd4941d88e20f522871d91e034d1cc902c054a6a84bff39b0a +Description: Intel® DPC++ Compatibility Tool 2022.1.0 for Linux* eclipse integration configuration file + + +Package: intel-oneapi-dpcpp-ct-eclipse-cfg +Architecture: all +Version: 2022.2.0-8701 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 25 +Depends: intel-oneapi-common-vars (>= 2022.2.0-8694), intel-oneapi-common-licensing-2022.2.0 +Filename: pool/main/intel-oneapi-dpcpp-ct-eclipse-cfg-2022.2.0-8701_all.deb +Size: 2020 +MD5sum: b1775a9479ba38db512a897aaa6f485b +SHA1: d8757eddbc82c9560bd9bc2b21957c7e92d6ffa4 +SHA256: afaf58ad7f82efcb994d79225d5eab8594911aa90fe904d3b5e0692a9b2dc91a +SHA512: 728b105e223e56e3961fbce9380ea833274f8f87419d576a6cc25e91d27aeb4a2dbe9e5566e9d1aedded9d7aeb9f50d41151460accd0b1e52f76e364c21bc8d2 +Description: Intel® DPC++ Compatibility Tool 2022.2.0 for Linux* eclipse integration configuration file + + +Package: intel-oneapi-dpcpp-ct-eclipse-cfg +Architecture: all +Version: 2022.2.1-14994 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 25 +Depends: intel-oneapi-common-vars (>= 2022.2.1-14969), intel-oneapi-common-licensing-2022.2.1 +Filename: pool/main/intel-oneapi-dpcpp-ct-eclipse-cfg-2022.2.1-14994_all.deb +Size: 2012 +MD5sum: 6c5cab765ac169f370d10a77bb1da057 +SHA1: 572c324d5f0667c292683baf1b1a7a94eb49e6a1 +SHA256: ecc2266eef59af0803e181b79c09bbaf91d7517d0dbccd647a8edbd8ef01f114 +SHA512: 0ff94649c7fa42e1a8facd722669da5344251d168f2551cdd7ddfb87ea869814962a778cf35bf288b543f1147e06f319c76001a3802bf3104613d710aba09024 +Description: Intel® DPC++ Compatibility Tool 2022.2.1 for Linux* eclipse integration configuration file + + +Package: intel-oneapi-dpcpp-ct-eclipse-cfg +Architecture: all +Version: 2023.0.0-25483 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 25 +Depends: intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing-2023.0.0 +Filename: pool/main/intel-oneapi-dpcpp-ct-eclipse-cfg-2023.0.0-25483_all.deb +Size: 2016 +MD5sum: 86af97fa4f25d633db4d01d55cf03aa4 +SHA1: 871ed7d98d6b3190dddb59ed21b2bd20757df2bd +SHA256: 9abf42b750fa6c656cddb15acbea8bd7e6d101bafe2cfc8c634bc4029618da65 +SHA512: 36c7cb7d6105daf0843d7ca223f6aebebdd8b3540a3cf4f6a9525d18da4a9e8bf40aa5587ae48b42d855e511af529f7d4e6fe8fb789e05b743d02c6d601c664d +Description: Intel® DPC++ Compatibility Tool 2023.0.0 for Linux* eclipse integration configuration file + + +Package: intel-oneapi-dpcpp-ct-eclipse-cfg +Architecture: all +Version: 2023.1.0-44450 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 25 +Depends: intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing-2023.1.0 +Filename: pool/main/intel-oneapi-dpcpp-ct-eclipse-cfg-2023.1.0-44450_all.deb +Size: 2012 +MD5sum: 307b3c90f4c9f1b56efed083ba781a1f +SHA1: 4907e893db30c0c2ac676c18b0eefba55c3f6912 +SHA256: 0f0d427b2518e9498a94566eae6b32c9c8e41b12361ebf236846e8a57c302d44 +SHA512: b301bee3c89f7db6ba54f9cb120c27bc6701becb97bf49bfbf8088d1447865391c456799893ef54886c07a61f9a4f3f8648e71d349ff316574c460febd4fcac7 +Description: Intel® DPC++ Compatibility Tool 2023.1.0 for Linux* eclipse integration configuration file + + +Package: intel-oneapi-dpcpp-debugger-eclipse-cfg +Architecture: all +Version: 10.0.0-2219 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1 +Depends: intel-oneapi-common-vars,intel-oneapi-common-licensing +Filename: pool/main/intel-oneapi-dpcpp-debugger-eclipse-cfg-10.0.0-2219_all.deb +Size: 1910 +MD5sum: cb53a451ec12b7cd2b2dc5d9f62a0634 +SHA1: 288ba4cc13f9075d7fbec9b2e3de42184305be02 +SHA256: 00cb5a358986c540df61e559eca2d48f0715603de1dba7728c3a350f3b0c0178 +SHA512: 5ba5a06212f240af3701c5df82e84d0c403896e5480c17c493f16afc87d2c3834ddb1bc2f4566afe90ec8486c4c8b09cf3cd27d88739a4d6db44e8e93b8b6136 +Description: Intel® Distribution for GDB* 10.0.0 for Linux* eclipse integration configuration file + + +Package: intel-oneapi-dpcpp-debugger-eclipse-cfg +Architecture: all +Version: 10.1.1-80 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1 +Depends: intel-oneapi-common-vars (>= 2021.2.0-195), intel-oneapi-common-licensing-2021.2.0 +Filename: pool/main/intel-oneapi-dpcpp-debugger-eclipse-cfg-10.1.1-80_all.deb +Size: 1930 +MD5sum: d96d5009f1c51a29cce04b857f5fd458 +SHA1: 77e8642303ab248237548d6c5928ed8eacbb2e6e +SHA256: 3f9ea224b178085a688effc2726ba65493c5fdf91bad53bb585c3c2bef17e1a5 +SHA512: 0589ed75e4504dc8315b36b2b8786c4a44e6c703c8d6ecec90bce0ef72012383cdb39339c6a3859343b2b48a93bd17138c690dc850af19766e3197445e97202f +Description: Intel® Distribution for GDB* 10.1.1 for Linux* eclipse integration configuration file + + +Package: intel-oneapi-dpcpp-debugger-eclipse-cfg +Architecture: all +Version: 10.1.2-225 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1 +Depends: intel-oneapi-common-vars (>= 2021.3.0-261), intel-oneapi-common-licensing-2021.3.0 +Filename: pool/main/intel-oneapi-dpcpp-debugger-eclipse-cfg-10.1.2-225_all.deb +Size: 1928 +MD5sum: c4b2b45866e379d800b1a035a932bec6 +SHA1: 7ea9fe8aea785ea471e5b755d9020ec089d28404 +SHA256: 14ca30f19067610ddb1b8981e9301f53e2b74d723150abad62de307a72a958ba +SHA512: 9012d58205c87ca4c685d08aeb6b0f3cd7edbee888b31ee7b183325a13e683b7bf374cc46991933664662c4edae6ea009efd167716d5ea16b060e28bb5e0b45d +Description: Intel® Distribution for GDB* 10.1.2 for Linux* eclipse integration configuration file + + +Package: intel-oneapi-dpcpp-debugger-eclipse-cfg +Architecture: all +Version: 10.2.4-56 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1 +Depends: intel-oneapi-common-vars (>= 2021.4.0-327), intel-oneapi-common-licensing-2021.4.0 +Filename: pool/main/intel-oneapi-dpcpp-debugger-eclipse-cfg-10.2.4-56_all.deb +Size: 1932 +MD5sum: c16711b7dc69351df413c7b1a6c18063 +SHA1: 235c7c42799df07f55696a36d1a2f6f9835da830 +SHA256: 9c1b02aa24b65c66d871d1e749ff64e36a956707cbbb19b24679dd56cc6fc23e +SHA512: 2c714fd4a9f1af73955d4916c81516cd47afaabe4efddd6e770a242c5714a23be4a95f16dfc364df3f6801dff2122504d8ca1c9048b20c34dcf1caabfc9c9940 +Description: Intel® Distribution for GDB* 10.2.4 for Linux* eclipse integration configuration file + + +Package: intel-oneapi-dpcpp-debugger-eclipse-cfg +Architecture: all +Version: 2021.5.0-109 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1 +Depends: intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-dpcpp-debugger-eclipse-cfg-2021.5.0-109_all.deb +Size: 1932 +MD5sum: e0603637f512beaeba66439f2db82b2b +SHA1: 3a42f0b688913f51a202b96185235c6e9e2e6677 +SHA256: 9ebe9154d1619b2a32a93cd7174954460332deed14d8f87fc7b04ff9581bb406 +SHA512: d4c75886e9c7fe11b06adaa71a6e09764b2976ef255652ee968eab94059322014b584129f823e32c1a19ff0fe537400cb33a6f296a2cf7700925f1c5d9926a2f +Description: Intel® Distribution for GDB* 2021.5.0 for Linux* eclipse integration configuration file + + +Package: intel-oneapi-dpcpp-debugger-eclipse-cfg +Architecture: all +Version: 2021.6.0-178 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1 +Depends: intel-oneapi-common-vars (>= 2022.1.0-161), intel-oneapi-common-licensing-2022.1.0 +Filename: pool/main/intel-oneapi-dpcpp-debugger-eclipse-cfg-2021.6.0-178_all.deb +Size: 2004 +MD5sum: 52b1669e81cb9d1368c61d8a7889954e +SHA1: fa261c1fa2c0506730ea4e048ca21c56a653daa0 +SHA256: 91db109a0cfe173057d88fa8a8580b84870e73bbb576ba22883e6d8cff4bb88e +SHA512: 9eb2e6e482a5848d725a7b97da7bfba0e7ea24114dd1fef5a8d7a13dfb6f32f367c556b46e83c64dac9b5e85d611fe365f665e61c96195edea14ee778a91f614 +Description: Intel® Distribution for GDB* 2021.6.0 for Linux* eclipse integration configuration file + + +Package: intel-oneapi-dpcpp-debugger-eclipse-cfg +Architecture: all +Version: 2021.7.0-8700 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 25 +Depends: intel-oneapi-common-vars (>= 2022.2.0-8694), intel-oneapi-common-licensing-2022.2.0 +Filename: pool/main/intel-oneapi-dpcpp-debugger-eclipse-cfg-2021.7.0-8700_all.deb +Size: 2012 +MD5sum: 6c376dd2add3593ebee273f4618683e2 +SHA1: 329324baec1d2f02b6ba5a4a3deef41ce3f90639 +SHA256: 220978fbf39e3afc3ddd904d86e7f591dedb742ef6724f8070191ecaa58191ab +SHA512: bfe2b8a918d443bf1cba0f09e8f91da8d57fc5232b596fabbe244f8d88308514eb0bfd74779c893fa2b455cb89402ea29e7f3516fd5a098f80dd77619375b48d +Description: Intel® Distribution for GDB* 2021.7.0 for Linux* eclipse integration configuration file + + +Package: intel-oneapi-dpcpp-debugger-eclipse-cfg +Architecture: all +Version: 2021.7.1-14993 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 25 +Depends: intel-oneapi-common-vars (>= 2022.2.1-14969), intel-oneapi-common-licensing-2022.2.1 +Filename: pool/main/intel-oneapi-dpcpp-debugger-eclipse-cfg-2021.7.1-14993_all.deb +Size: 2016 +MD5sum: 97c083ba4a5ff0582c362f8acc4e4474 +SHA1: 98b77e2a0fcefad1e12e8cad19daf244a1c5ecee +SHA256: 9cf46bda4e43e05772fe39e6dc1252e5dbfddc7747ee419e78ff26aabb2063ef +SHA512: 463bfa7a8853b485749c2750112517fdf75415e8f9967b8442ac95bee3bc056f8fb9a51b43446b8f05111517610a1a7e16c6c503a40e75f99545dcc7cecdbb1a +Description: Intel® Distribution for GDB* 2021.7.1 for Linux* eclipse integration configuration file + + +Package: intel-oneapi-dpcpp-debugger-eclipse-cfg +Architecture: all +Version: 2023.0.0-25336 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 25 +Depends: intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing-2023.0.0 +Filename: pool/main/intel-oneapi-dpcpp-debugger-eclipse-cfg-2023.0.0-25336_all.deb +Size: 2004 +MD5sum: 0571f1067a137fbbe4d216daf585b075 +SHA1: d0ec4a782e7c7a341f7e0b5da938639781426fb0 +SHA256: 72aaaa91b827868ca5ad015a8faee53c9f90158f664a52053db470bf2c8e1111 +SHA512: 8c0362d8aa311bf4e85f632e6c3418dcede8264be80038ea12d5f2ebff9a9d08ef58c5b4f432bee0a24fc58f3848f6a379694f88f978b4e2c6844ac6249903be +Description: Intel® Distribution for GDB* 2023.0.0 for Linux* eclipse integration configuration file + + +Package: intel-oneapi-dpcpp-debugger-eclipse-cfg +Architecture: all +Version: 2023.1.0-43513 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 25 +Depends: intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing-2023.1.0 +Filename: pool/main/intel-oneapi-dpcpp-debugger-eclipse-cfg-2023.1.0-43513_all.deb +Size: 2004 +MD5sum: 0e8ecd867439ce2dbfcde1e459e86cc4 +SHA1: fa55882bb8256594cac45fc59bf7a94654601557 +SHA256: 389ace7ca89e567cf63dbc083dfea3c2ecef645f5461aca35cda02e5410ced8a +SHA512: 9d6dbe3b37721d56bae74376447ecdb0a8aa3fc60270b82c1fee43437354455ff023ad8f8bc55d8265e349f7f44e27fe3846978bbb4b4cabee3d7e88dbed3ba3 +Description: Intel® Distribution for GDB* 2023.1.0 for Linux* eclipse integration configuration file + + +Package: intel-oneapi-icc-eclipse-plugin-cpp-2022.0.1 +Architecture: all +Version: 2022.0.1-3633 +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-icc-eclipse-plugin-cpp-2022.0.1-2022.0.1-3633_all.deb +Size: 1894 +MD5sum: 3dd68382f9ee9f896dabd65e01554551 +SHA1: 49d90aa6de26ad5137e484c84fdfe38476d5dd09 +SHA256: 1b1f99e4e22575d17481121232ea675bf478454c6cbf4aa3f40c2aaffc003480 +SHA512: ec06d187a93204f4898337a18e5414e8dbc92661113946c18f949302c72129dbf49c1afa98296e2b449012ed8995e0e9e631d92f8c5dc9acddb993c3722ff56d +Description: Standards driven high performance cross architecture compiler and high performance C++ CPU focused compiler + + +Package: intel-oneapi-icc-eclipse-plugin-cpp-2022.0.2 +Architecture: all +Version: 2022.0.2-3658 +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-icc-eclipse-plugin-cpp-2022.0.2-2022.0.2-3658_all.deb +Size: 1898 +MD5sum: c2ee00390bf5369e4e09cc8bf4da6cb6 +SHA1: 116a60827fa7efb077203e581d8cd7171805226c +SHA256: 00fae38af51a327d08400484592332fad3c9d961af121984dfb775d97f03767c +SHA512: d5d67106f18d93700b8984395e00effad415fd59e0360698dca218c76ff8d670da44a39284a621ce1cc1054e76de48eb337dbe6c2fe52fca2b732eae2eef135a +Description: Standards driven high performance cross architecture compiler and high performance C++ CPU focused compiler + + +Package: intel-oneapi-icc-eclipse-plugin-cpp-2022.1.0 +Architecture: all +Version: 2022.1.0-3768 +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-icc-eclipse-plugin-cpp-2022.1.0-2022.1.0-3768_all.deb +Size: 1976 +MD5sum: c9761a241467e9a1ecf95147d4c5621d +SHA1: bf380c8c0544481c4c0930d0c23f5b9fd45fd53e +SHA256: 6e5858b9d42adb65a3df70bdd652da79dcb1c09cc4ed9f18517d54d790442e23 +SHA512: 5ab94620aea33fb7ca48fbba66fa15ba05591dd0e1bd200838f07501ca78240aa17f0d1ba55bae50dc56df1a81034cd70dc18445fb6f15bfcc12fcb678951c9f +Description: Standards driven high performance cross architecture compiler and high performance C++ CPU focused compiler + + +Package: intel-oneapi-icc-eclipse-plugin-cpp-2022.2.0 +Architecture: all +Version: 2022.2.0-8734 +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-icc-eclipse-plugin-cpp-2022.2.0-2022.2.0-8734_all.deb +Size: 1976 +MD5sum: 2dab5093c01f663aea5205ebb3fb0389 +SHA1: 7f027b8e7c4e16ad6450ee91056ba8fecbb7f88c +SHA256: a9de8426b077070c24212b2f82952d077877a40ee9f150cc9258d8da80fa0647 +SHA512: 36e988d74d9fc7e95d816aff66d3ab8ac01a880b65e5a4873475a785c8daad0568e494584e4a16eb2792a6d693427485496ba5eb9f8ece63b0091296022b1eda +Description: Standards driven high performance cross architecture compiler and high performance C++ CPU focused compiler + + +Package: intel-oneapi-icc-eclipse-plugin-cpp-2022.2.1 +Architecture: all +Version: 2022.2.1-16953 +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-icc-eclipse-plugin-cpp-2022.2.1-2022.2.1-16953_all.deb +Size: 1980 +MD5sum: 015dce71c415d8f6380cec879190924f +SHA1: 291b830f1d44e4fa0ce8f3c2ac13d5b61af759ec +SHA256: 9037a7b804d1ce770cf25486a730ef4bb50f4fad7474964a8c0478cb71ddcd11 +SHA512: e89d4ee13b2707443ef35024dd7154d2fb311bd71895306a37684790936a2fe2f8a88b5b5daf044a43aec3d3cd273ee3c8c3e77b5d9b750c30c0d3d3be755046 +Description: Standards driven high performance cross architecture compiler and high performance C++ CPU focused compiler + + +Package: intel-oneapi-icc-eclipse-plugin-cpp-2023.0.0 +Architecture: all +Version: 2023.0.0-25370 +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-icc-eclipse-plugin-cpp-2023.0.0-2023.0.0-25370_all.deb +Size: 1976 +MD5sum: 518a7f99b7fa514e4ff6b2a27c4d8c63 +SHA1: 40bf4f68008eb6c23644f2c0e7ab38a9fdb71cdd +SHA256: 969785ba2fcd15bebcc9756a9023b5f58f74386aea4cad8d259720b5dc167656 +SHA512: 2f1a591553252e4764711a4fe2a4f647f00f9fc5e974253bc2d25e9d6b5eded31ea719f88ff8caee6606ebdad81d17bdccf92333cee5a3ad8f288f92ef88cdc9 +Description: Standards driven high performance cross architecture compiler and high performance C++ CPU focused compiler + + +Package: intel-oneapi-icc-eclipse-plugin-cpp-2023.1.0 +Architecture: all +Version: 2023.1.0-46305 +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-icc-eclipse-plugin-cpp-2023.1.0-2023.1.0-46305_all.deb +Size: 1980 +MD5sum: 5e1964a17164a566e353ff9badbb7767 +SHA1: 91dcbcc2c6901ff9140fdff8983a6e6ea1c5a541 +SHA256: d376b9e9a6ff7c9c05606409c7815cd6c3e8b2738c904fcf922584f879cdd3df +SHA512: 403d11240aa0fcf064a94bad989bd71fa483bae16aab68d5fdaf418957c937b3a52e438ab9bf6215195438b1f5e12af418d9ab9651ca2720975d3e93693b7325 +Description: Standards driven high performance cross architecture compiler and high performance C++ CPU focused compiler + + +Package: intel-oneapi-iot-eclipse-plugins-2021.1.1 +Architecture: all +Version: 2021.1.1-69 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 14806 +Depends: intel-oneapi-iot-eclipse-plugins-cfg (>= 2021.1.1-69),intel-oneapi-common-vars,intel-oneapi-common-licensing +Filename: pool/main/intel-oneapi-iot-eclipse-plugins-2021.1.1-2021.1.1-69_all.deb +Size: 11293066 +MD5sum: a6bb09f5fc8db157c5312194cf17119c +SHA1: 3bb0bd57ac4c95257651d79694feed8c1cba9d5d +SHA256: a1adba98306255bd50000dd726c6cd8192be4e8d78f7c340a0b0f3b37bb6399c +SHA512: 7b81da17696523d0c47d7d9b8fa0fc5ae80786ecbdd8f9429f69843900a2c007d56828812a8ae64a8659b891dfa0e24fe43b0b7fb528e554b1b6db76104f42ec +Description: IoT Plugins for Eclipse + + +Package: intel-oneapi-iot-eclipse-plugins +Architecture: all +Version: 2021.1.1-69 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-iot-eclipse-plugins-2021.1.1 +Filename: pool/main/intel-oneapi-iot-eclipse-plugins-2021.1.1-69_all.deb +Size: 2304 +MD5sum: ed4b89c3770ec64efa2b70a16b270b44 +SHA1: d012497521c9cb05482c8c7ed9fb00c62ab278d8 +SHA256: 2cfd3263a4a6cb36239f48e97a6000d9ca7bd2785a3bfce9faa46aaf4f76f413 +SHA512: 302652ddd5a19fb1075ea0bfd7949331fa1bbd02fdd956d2cb71c7c2e0ad8be9d3c77e067780869a218449921da1fea0315a75e02fa83d0b116a5d70498b582a +Description: IoT Plugins for Eclipse + + +Package: intel-oneapi-iot-eclipse-plugins-2021.2.0 +Architecture: all +Version: 2021.2.0-213 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 14822 +Depends: intel-oneapi-iot-eclipse-plugins-cfg (>= 2021.2.0-213), intel-oneapi-common-vars (>= 2021.2.0-195), intel-oneapi-common-licensing-2021.2.0 +Filename: pool/main/intel-oneapi-iot-eclipse-plugins-2021.2.0-2021.2.0-213_all.deb +Size: 11296610 +MD5sum: 672aa30c919cc35465b0c2f53e4bb3e1 +SHA1: 13a6239c8865ea74cc9ba0869f8baa94b0cab127 +SHA256: a3e75b82458f608fbb512de51db3379f55561edaf50cb2e6d5661c7e1a3763d3 +SHA512: de8ffb008b64047c4988e1a71bd98d202dfcd95f78f91a9f25651df89de711efe9b2aad4c86f469c7b7e23600a5231c4c05a48adcc605409a2d7e26bcb1316da +Description: IoT Plugins for Eclipse + + +Package: intel-oneapi-iot-eclipse-plugins +Architecture: all +Version: 2021.2.0-213 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-iot-eclipse-plugins-2021.2.0 +Filename: pool/main/intel-oneapi-iot-eclipse-plugins-2021.2.0-213_all.deb +Size: 2306 +MD5sum: ead11b1213d9327cc40e490c5ce6ab36 +SHA1: 1810f5e1fc262d4dc8e768ba2594f837f1d088cf +SHA256: ba96d1f27255ae4656ae0a38b99796bf4f2dba76e25d45861684b1482750a7cf +SHA512: 510acdc24c32d9129a5f7ebe00c39ebf4e4f1d6b9dfe34951f316636d14baf4b14b916d3a0c2e1f8a5abf7db3829ca3d6b7749ac17a5c6523775960d42d6e55d +Description: IoT Plugins for Eclipse + + +Package: intel-oneapi-iot-eclipse-plugins-2021.3.0 +Architecture: all +Version: 2021.3.0-268 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 16036 +Depends: intel-oneapi-iot-eclipse-plugins-cfg (>= 2021.3.0-268), intel-oneapi-common-vars (>= 2021.3.0-261), intel-oneapi-common-licensing-2021.3.0 +Filename: pool/main/intel-oneapi-iot-eclipse-plugins-2021.3.0-2021.3.0-268_all.deb +Size: 11408166 +MD5sum: eb519c6c9f4190816a1cec637975b2a0 +SHA1: ff80428d2cf5d2a73636dbdc7f110514c63c2a7f +SHA256: 04d77d06b19e12f5128cf5ad381f13ec8b31ff25f2ec719ffa62bca2559c7a5f +SHA512: ffb20ea9bbe8f9e8af7f365a2d6a1659f462b8f8a1fd20f26874cf8044ddb17f2cf38dd6d4197693f7233cf8b4196e6c208bd72e560fa4918985e9e34fff2cd3 +Description: IoT Plugins for Eclipse + + +Package: intel-oneapi-iot-eclipse-plugins +Architecture: all +Version: 2021.3.0-268 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-iot-eclipse-plugins-2021.3.0 +Filename: pool/main/intel-oneapi-iot-eclipse-plugins-2021.3.0-268_all.deb +Size: 2310 +MD5sum: ba38c76d58ca3b364cf872e2da11a769 +SHA1: 41c9fcd547b4d2d9c48abcb610144c6aa3d52c55 +SHA256: 48f9ebbf69587dea3fa5aff9f2108bf365530981ca4c1c66cb5fce70ba274359 +SHA512: 990cca02442534f8a346d74ab1ff5de0bce7042372b4495032f14b932dc5822a5d77d93de88c23352ef746af8f13440552a8f9dbfa0283b79fffa035e963997e +Description: IoT Plugins for Eclipse + + +Package: intel-oneapi-iot-eclipse-plugins-2021.4.0 +Architecture: all +Version: 2021.4.0-338 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 16031 +Depends: intel-oneapi-iot-eclipse-plugins-cfg (>= 2021.4.0-338), intel-oneapi-common-vars (>= 2021.4.0-327), intel-oneapi-common-licensing-2021.4.0 +Filename: pool/main/intel-oneapi-iot-eclipse-plugins-2021.4.0-2021.4.0-338_all.deb +Size: 11360716 +MD5sum: 46282340036545b8a7a29bfb9469b1f9 +SHA1: 94ad02cda1911725e6fc6e09937ea34712983cec +SHA256: 167c52844db711dfeb676aa0a7d3568d6e260553eaca5619a4ad54244b191587 +SHA512: 46ac7871a245f4fddca8a06a91e03ae59077208026009dcb7ab3e076408e6c3ec6501c16ddf6317699a939a76bcab2c5643db6be637201a3dde3da23e91829da +Description: IoT Plugins for Eclipse + + +Package: intel-oneapi-iot-eclipse-plugins +Architecture: all +Version: 2021.4.0-338 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-iot-eclipse-plugins-2021.4.0 +Filename: pool/main/intel-oneapi-iot-eclipse-plugins-2021.4.0-338_all.deb +Size: 2306 +MD5sum: 36bc9dad8d25581519cea33cfd0b107e +SHA1: bc5a06cfb1348ce6f0b6320e22121e4a0fb6720a +SHA256: 4f1e71426509ef0569c6553f47b7299ce6a20c42c6ebddcc12a30b15ff5e5aee +SHA512: 21e01bf75f2a4887f00166138435dad855a7557623c0f3aec8912850f4f67053ed70922f0187e98cac5942ce3fba8f8e65a45262c40e1e757adcb7597196cd46 +Description: IoT Plugins for Eclipse + + +Package: intel-oneapi-iot-eclipse-plugins-cfg +Architecture: all +Version: 2021.1.1-69 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1 +Depends: intel-oneapi-common-vars,intel-oneapi-common-licensing +Filename: pool/main/intel-oneapi-iot-eclipse-plugins-cfg-2021.1.1-69_all.deb +Size: 1952 +MD5sum: 6522c5f0b839918f71174e827ea970f5 +SHA1: cd208bda1283ffd1c6b5b6bd4cd59caf9800389d +SHA256: a6c0b9ea807f2ef6bea5b488799c1ecaeceacc3829d433d482dea4770965fce9 +SHA512: 4c6eea3db02b7a7db8ad7822ddc682d7e49931fbca08ba9f0bd983ce9c5330197db67928db3f56e9a9692950e1f2a72450f52c5cd81e6a6d7eb52306a09ef5e0 +Description: IoT Plugins for Eclipse + + +Package: intel-oneapi-iot-eclipse-plugins-cfg +Architecture: all +Version: 2021.2.0-213 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1 +Depends: intel-oneapi-common-vars (>= 2021.2.0-195), intel-oneapi-common-licensing-2021.2.0 +Filename: pool/main/intel-oneapi-iot-eclipse-plugins-cfg-2021.2.0-213_all.deb +Size: 1968 +MD5sum: 0d147a805fc85d5111cc1dbce4a6cdb5 +SHA1: 70a22843fc44daf9d97439f7b8443f00a0ffd7d1 +SHA256: c89bccb06944d12731e65cee72bcc98b523021e00e07d7d83fde9c54c56de845 +SHA512: bba184d185c500ccabc86a1a8c548f45e6b8fa507d520b73ebe06fc81d14a3105eb817ec324d61f7f8d23dd538452f7a58d113ce0cd29b5885f9e9138946b91e +Description: IoT Plugins for Eclipse + + +Package: intel-oneapi-iot-eclipse-plugins-cfg +Architecture: all +Version: 2021.3.0-268 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1 +Depends: intel-oneapi-common-vars (>= 2021.3.0-261), intel-oneapi-common-licensing-2021.3.0 +Filename: pool/main/intel-oneapi-iot-eclipse-plugins-cfg-2021.3.0-268_all.deb +Size: 1964 +MD5sum: 06fdffa501fa22a21d489d473834b437 +SHA1: 958bfc78bf809886af1a85eb9954d338a41cef19 +SHA256: f2ff3c18f64bee9b35ad9c8f18adba60a2b341812e5489466e20ef6053e297fb +SHA512: 34380fdf2de67b480400b2098cc0e53f4937d62e827e0d0e7b755d4b3efbb6e8d27886ed21dd07620df40eabe46072dc23b46221e5aec96c36add3dc5dcf39db +Description: IoT Plugins for Eclipse + + +Package: intel-oneapi-iot-eclipse-plugins-cfg +Architecture: all +Version: 2021.4.0-338 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1 +Depends: intel-oneapi-common-vars (>= 2021.4.0-327), intel-oneapi-common-licensing-2021.4.0 +Filename: pool/main/intel-oneapi-iot-eclipse-plugins-cfg-2021.4.0-338_all.deb +Size: 1968 +MD5sum: 22e6ba0b6f8935264943de5385c4a470 +SHA1: c92c53abf2c0063da4bf35093d1eb5b79b9f4c99 +SHA256: decd52c8e25eb4780d06cc64d0a15e5bc1bbb03fca872568d2eaef9662d8176c +SHA512: ad4b59dc9072400861f7a6f0949cdefbaa71fb2864c8c41e36cff010b25ba865f49bfc3713d47afbddd876a40681635903c2c834a783c0676b89426895ef6fc8 +Description: IoT Plugins for Eclipse + + +Package: intel-oneapi-ipp-common-2021.1.1 +Architecture: all +Version: 2021.1.1-47 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 14 +Depends: intel-oneapi-common-vars,intel-oneapi-common-licensing +Filename: pool/main/intel-oneapi-ipp-common-2021.1.1-2021.1.1-47_all.deb +Size: 6444 +MD5sum: 77780b248b01c16398a4a7cff4635efe +SHA1: 4bca4c23706d08067daccf8bac7a7c7dee1f8a44 +SHA256: 5b7a2a933cd28fceb51725a6bba5285c2372ea090a09e2a12bbbe561567dc479 +SHA512: 20cdf3af1864eee4d8eb64f97c5bf2543c9f2c4270fe9029f21f8e339605a017d9807e59de276e0c50cffafc026c57fa341e49e2b777439e30a56ad0e06d134a +Description: Intel® Integrated Performance Primitives common + + +Package: intel-oneapi-ipp-common-2021.2.0 +Architecture: all +Version: 2021.2.0-233 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 15 +Depends: intel-oneapi-common-vars (>= 2021.2.0-195), intel-oneapi-common-licensing-2021.2.0 +Filename: pool/main/intel-oneapi-ipp-common-2021.2.0-2021.2.0-233_all.deb +Size: 6752 +MD5sum: 3ab32fe3c99fb970182ecaf260298c59 +SHA1: 1322d53abdaf607e21d131984490dfbbe3e9ea2d +SHA256: fc04adf575cd7966c3a86c302e263db76a56bed0fd85e7459fc227c7d6d4a448 +SHA512: a2f05ef1cbeb4fe754fc00a751daa061619dc6e23db6d353f16899be28cfe7fc52e051ff8b95594e14665869febd5d111989f8e017b6ff7fc81bed2a80f6c7f3 +Description: Intel® Integrated Performance Primitives common + + +Package: intel-oneapi-ipp-common-2021.3.0 +Architecture: all +Version: 2021.3.0-333 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 17 +Depends: intel-oneapi-common-vars (>= 2021.3.0-261), intel-oneapi-common-licensing-2021.3.0 +Filename: pool/main/intel-oneapi-ipp-common-2021.3.0-2021.3.0-333_all.deb +Size: 7188 +MD5sum: 5e1bce435a93bc8b8aa0013aa80bc109 +SHA1: 1cc9d7fba5169751374b13435eb24fe2b993a148 +SHA256: 5a3f7aa345b1f136f972565470c10db4f47361540661187f6693942abe0420e4 +SHA512: f42b5ff907c833a442c611b8930d3660421cdf75b4faff1e555ad20dc0b07db87d77b8ab637f595aabe979833c0d47aeb937c230f1ed203ef6a8aaa6c6383881 +Description: Intel® Integrated Performance Primitives common + + +Package: intel-oneapi-ipp-common-2021.4.0 +Architecture: all +Version: 2021.4.0-459 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 30 +Depends: intel-oneapi-common-vars (>= 2021.4.0-327), intel-oneapi-common-licensing-2021.4.0 +Filename: pool/main/intel-oneapi-ipp-common-2021.4.0-2021.4.0-459_all.deb +Size: 10598 +MD5sum: 2569cb95bac2406dd095ed4d4535fe48 +SHA1: 4b690e131b11819b73f6fff2e3d7c7470f67a5ae +SHA256: e44d15d9a67a41684513da2c3626483c390b1f811eef671b63c9ea5b723ef113 +SHA512: 9e70e5c191dbea8ec065765b54eeb7d3040b5a0cbc6e5488caf8f65332c7f861eca3316ac586d09c080671699a2239c9c9c9565efb3823746259d00dab8d2df5 +Description: Intel® Integrated Performance Primitives common + + +Package: intel-oneapi-ipp-common-2021.5.1 +Architecture: all +Version: 2021.5.1-522 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 29 +Depends: intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-ipp-common-2021.5.1-2021.5.1-522_all.deb +Size: 10748 +MD5sum: dea8ab5c01c40ff8b8c918baf62434b8 +SHA1: cca2a1952e003140d650d8deb2f84d040bde1fe6 +SHA256: b8da3ab8c8ce073c8652ce9548b313fb13950d87d81607b09a104ecd532c4eb0 +SHA512: 4b37c3681d928d2536670b63103f68be44d1750bc49ec4dbf25ef56b0cbd567fc3365823b918862ff6986b641f2fc2b7105b94fb5f28d71c1d518b94ae92827f +Description: Intel® Integrated Performance Primitives common + + +Package: intel-oneapi-ipp-common-2021.5.2 +Architecture: all +Version: 2021.5.2-544 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 29 +Depends: intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-ipp-common-2021.5.2-2021.5.2-544_all.deb +Size: 10744 +MD5sum: c090e0a1b839ea3a4209f1eaa188c543 +SHA1: 9fe406c722fb4a96c6d9121c6b25afd8efa6b74d +SHA256: fd0c2017b726e9b8f24d945a8c4d1240798dc47f0d210962fa846e0e78069572 +SHA512: c4791c2e00a66859edfb30fff76751daf624f07545d8a31cf569ca1e979e1d5f491bf9c2f5463a4bbbfa3455f4f5524bc1756344a4c09fa39b470a733f4dc3b5 +Description: Intel® Integrated Performance Primitives common + + +Package: intel-oneapi-ipp-common-2021.6.0 +Architecture: all +Version: 2021.6.0-626 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 29 +Depends: intel-oneapi-common-vars (>= 2022.1.0-161), intel-oneapi-common-licensing-2022.1.0 +Filename: pool/main/intel-oneapi-ipp-common-2021.6.0-2021.6.0-626_all.deb +Size: 10692 +MD5sum: ab189107e0c83c5a30cb09c2bc15dcf4 +SHA1: 99633a84359570f1e1ffbf545ff4a10d52aba9f1 +SHA256: 8635703ac473eff8aa251e5324bd339cbccdbefd3c3fe1d895e9a6508fdd49fe +SHA512: 0c2a3d31a574b933e1e1887b018b92513efc8ab2d48e371cdd71d46b7b9991947688b0bd95b35b23119abac0550038123da98801e13e83dbd1f5f1118290d937 +Description: Intel® Integrated Performance Primitives common + + +Package: intel-oneapi-ipp-common-2021.6.1 +Architecture: all +Version: 2021.6.1-8749 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 61 +Depends: intel-oneapi-common-vars (>= 2022.2.0-8694), intel-oneapi-common-licensing-2022.2.0 +Filename: pool/main/intel-oneapi-ipp-common-2021.6.1-2021.6.1-8749_all.deb +Size: 10692 +MD5sum: 8ef4963f641c01a85f3d7d42a0483f3d +SHA1: caf2885c727679461413026cb856ac339d664be2 +SHA256: a1081a8e132643c78e779b318916d5db6b1985a8f31a90f439830b3ffad92cf0 +SHA512: 49aa2703f8a188c1292ad3f00de68d5511c69aaead459ba66fd6abba887914bf33dbe8a6ed6b4b9a34d943c705fae0944e5b452137dc0b4fc0f6de8da231d9d0 +Description: Intel® Integrated Performance Primitives common + + +Package: intel-oneapi-ipp-common-2021.6.2 +Architecture: all +Version: 2021.6.2-16995 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 61 +Depends: intel-oneapi-common-vars (>= 2022.2.1-14969), intel-oneapi-common-licensing-2022.2.1 +Filename: pool/main/intel-oneapi-ipp-common-2021.6.2-2021.6.2-16995_all.deb +Size: 10688 +MD5sum: 97dcd7638c8c3cc6da9278c2c40fd065 +SHA1: 949f3e3c19fd5476d850bc828950bbe33d45be71 +SHA256: b8a14496bbd265404b9993484717fb92df495fdd23597ea4a45ebf5b35e52da7 +SHA512: 869532c28ea7dc1b40e863c6714db22806b888518afd4513bd60d02ff24208645d5e19f2f1d078957fa9081ce165e2fff7fdea56cd092b6b16fad16788568601 +Description: Intel® Integrated Performance Primitives common + + +Package: intel-oneapi-ipp-common-2021.7.0 +Architecture: all +Version: 2021.7.0-25396 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 61 +Depends: intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing-2023.0.0 +Filename: pool/main/intel-oneapi-ipp-common-2021.7.0-2021.7.0-25396_all.deb +Size: 10776 +MD5sum: ea6c3f174ba6a30c281aec031b1819bc +SHA1: 18f2e3fbbc8c908cd975c0117e10bd7cb9a6be51 +SHA256: c870add93cb529c23dabaf1e62bbb4d059a38ca85d930e5187989aa79a19b7c2 +SHA512: c856ab5e7bc49622c4a8caf529d22c46f21c3edf3767c73f1424049bd4f5e3594a77f835d8fabe0dcb48d93576dee824ae80de5881d77bea1a767c9cc54b46a3 +Description: Intel® Integrated Performance Primitives common + + +Package: intel-oneapi-ipp-common-2021.8.0 +Architecture: all +Version: 2021.8.0-46345 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 61 +Depends: intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing-2023.1.0 +Filename: pool/main/intel-oneapi-ipp-common-2021.8.0-2021.8.0-46345_all.deb +Size: 10768 +MD5sum: c394b716a4a312940a173d86fd63d2d4 +SHA1: c06e33bac30eae4f8c260b1ade10e9e036154394 +SHA256: d367b5eb7135fd16e78be64e31be8fabf82bdd7ff5b7e20c0cab7aa89da82612 +SHA512: 4ebb3c72ca544c4050289907c7ff532fe7dae1e59c2c5e8deaf5c15d520b1cf848e7a5ad74857a7107e45baa4d46b7e09fd62dcd0659738f4fb5a2477ba6beb3 +Description: Intel® Integrated Performance Primitives common + + +Package: intel-oneapi-ipp-common-devel-2021.1.1 +Architecture: all +Version: 2021.1.1-47 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 5998 +Depends: intel-oneapi-common-vars,intel-oneapi-common-licensing +Filename: pool/main/intel-oneapi-ipp-common-devel-2021.1.1-2021.1.1-47_all.deb +Size: 3478356 +MD5sum: d9c85f4883c2f3f3b0d7e087c6e08478 +SHA1: 501460768a0825210f6695ce29755c0a9313c082 +SHA256: 73c5d7fed25d5793acbdb3dd5bc253c7ce2437dc84df5ef4c565f84d784e1805 +SHA512: 6d4b1e7fdbd9475b08561c64f7866c52676632146d3b8b6e6a95e524667081bfc7558f5766ae1c54217875126f77dbca40082995d66b63fa2e08437e35cd717f +Description: Intel® Integrated Performance Primitives common + + +Package: intel-oneapi-ipp-common-devel-2021.2.0 +Architecture: all +Version: 2021.2.0-233 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 6089 +Depends: intel-oneapi-common-vars (>= 2021.2.0-195), intel-oneapi-common-licensing-2021.2.0 +Filename: pool/main/intel-oneapi-ipp-common-devel-2021.2.0-2021.2.0-233_all.deb +Size: 3526640 +MD5sum: 28891544591290d7f96c45b36a5ee667 +SHA1: f19fa993763eb178fe17970437e6bea83c20396c +SHA256: 1c09bed32365604d97e36567a9565dfc63fc6b87d353e443342deb01119ad88a +SHA512: 55b10deea0c6bbf58d997cf1aa10e117f9b8d136573871378c2ff563fd91acc232ff751a7c35f4b3b4f7ccd1a6c80f7bcdc8100bf1dec82cdc3f32446356ac7c +Description: Intel® Integrated Performance Primitives common + + +Package: intel-oneapi-ipp-common-devel-2021.3.0 +Architecture: all +Version: 2021.3.0-333 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 6097 +Depends: intel-oneapi-common-vars (>= 2021.3.0-261), intel-oneapi-common-licensing-2021.3.0 +Filename: pool/main/intel-oneapi-ipp-common-devel-2021.3.0-2021.3.0-333_all.deb +Size: 3523338 +MD5sum: eb3dc3f025d35adac9bce78df72cccba +SHA1: d6148551b9cd551ca88aeb9cdac132dec37691ee +SHA256: 530b05842384fa729849e0522535553a092e41b2f5ec11143cb96bb528fbdc4e +SHA512: 6ccfc1887cee6f0a89713655890327e2ea73fb9f8557f79136c8a70839655fa8d3a1f2f49c62cc2033c870369b936f7128eae92175b20dcaf04bade036b3c028 +Description: Intel® Integrated Performance Primitives common + + +Package: intel-oneapi-ipp-common-devel-2021.4.0 +Architecture: all +Version: 2021.4.0-459 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 6120 +Depends: intel-oneapi-common-vars (>= 2021.4.0-327), intel-oneapi-common-licensing-2021.4.0 +Filename: pool/main/intel-oneapi-ipp-common-devel-2021.4.0-2021.4.0-459_all.deb +Size: 3539164 +MD5sum: 209c6533ed769e8300f7bb80be6e9d17 +SHA1: ff59bb81f8813b02634e54101ad4bc657de0397d +SHA256: 04f7e854b0a6c5c2576ebd4f6bf31aa8a432194b349368fa03b675b054b8d688 +SHA512: 26b5ffcfb2d7735d33ac97428c7c174214cadd8abe9ad69b02a352f2a7d5f7be36686a1198c9bbf6d25ffcfa5bd5615a05204504cfc4c724511f342d6004a9d9 +Description: Intel® Integrated Performance Primitives common + + +Package: intel-oneapi-ipp-common-devel-2021.5.1 +Architecture: all +Version: 2021.5.1-522 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 6136 +Depends: intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-ipp-common-devel-2021.5.1-2021.5.1-522_all.deb +Size: 3542176 +MD5sum: c689a13fce6d347780da2ba742c322e3 +SHA1: 9bcbd87b7b1bd573fc6cec86ca7d9383c838d87e +SHA256: 5bb8c18f93b01584c176bd16dab82f092a0967bc9e6d5d7a459c6884b3052fc5 +SHA512: f693983d92424f345e83281f7fca4ad9707bed26cf959293960aa45fd330314752d3bfab6e5e1394512a79dc0639cf169cb203108a5599a9dee82bbf154dc89a +Description: Intel® Integrated Performance Primitives common + + +Package: intel-oneapi-ipp-common-devel-2021.5.2 +Architecture: all +Version: 2021.5.2-544 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 6136 +Depends: intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-ipp-common-devel-2021.5.2-2021.5.2-544_all.deb +Size: 3542040 +MD5sum: f13d11ed06f5b592bb17004b2caacb3d +SHA1: c3db023643c97eef22ad7685363d4f6fc1cd745f +SHA256: 926a1a514b66829f2750ea87032076967fc8db0a38facd84e489d2d32d25ff3c +SHA512: bed49b97f634477e8e5a6bc40dff8a89306d46cd5a5c9bfa1377ef9bb0386b126f1204ded03fd2dc06e7d55b473c869b23fbc74829e501ddfe75ca2afc93b317 +Description: Intel® Integrated Performance Primitives common + + +Package: intel-oneapi-ipp-common-devel-2021.6.0 +Architecture: all +Version: 2021.6.0-626 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 6103 +Depends: intel-oneapi-common-vars (>= 2022.1.0-161), intel-oneapi-common-licensing-2022.1.0 +Filename: pool/main/intel-oneapi-ipp-common-devel-2021.6.0-2021.6.0-626_all.deb +Size: 3529744 +MD5sum: 294605080e3f6608e497d3ec234125c8 +SHA1: 7454c36624835dba85ad5d30d83bb2823f01e22a +SHA256: c0683abd09e5d3759e62dcd96e496c9581416bee80300c189e4e81b55c145c4b +SHA512: e6f962d46ce82d39223743c71f21c62019c28183ea4607961e94f70be1bf3a8c4f63b37e5a818123800921abf8a935edd3c50c80d55d415dfc8ca24e0ae8c6d3 +Description: Intel® Integrated Performance Primitives common + + +Package: intel-oneapi-ipp-common-devel-2021.6.1 +Architecture: all +Version: 2021.6.1-8749 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 6199 +Depends: intel-oneapi-common-vars (>= 2022.2.0-8694), intel-oneapi-common-licensing-2022.2.0 +Filename: pool/main/intel-oneapi-ipp-common-devel-2021.6.1-2021.6.1-8749_all.deb +Size: 3554172 +MD5sum: c137fba154321c0203750c35e5afb7ae +SHA1: 1cce90f88e2ad18d248eb9ce6daaa7f3a6d3dad7 +SHA256: c0f19b682894ff2d018024d591b877f40083027b0d0209cee932989d782f5b89 +SHA512: 075abfd07a860b9714c8fa9658afa1d8af288dd5b9dc6dfa2606b2ac4b28e3142ed65f2ee46ebf7d5621dca98ad7200a839c51b69761011c5afca1257141517f +Description: Intel® Integrated Performance Primitives common + + +Package: intel-oneapi-ipp-common-devel-2021.6.2 +Architecture: all +Version: 2021.6.2-16995 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 6199 +Depends: intel-oneapi-common-vars (>= 2022.2.1-14969), intel-oneapi-common-licensing-2022.2.1 +Filename: pool/main/intel-oneapi-ipp-common-devel-2021.6.2-2021.6.2-16995_all.deb +Size: 3555192 +MD5sum: 2db2b6fa05880d6eebb7268b8c337b5c +SHA1: a4d6b5f4c4813277e7ec8c19ac03add9c43a9234 +SHA256: cd605174be660a991a9d66caee5732a7156df07d34a7dd2a1e44437b420e1f78 +SHA512: d98d8b0c46be745e47ae603128a0696fe79f3a3939a41a7fb49f740fbd784a404706ed903112c54bea3eb26e3cbec177469f577fe5b30b3439d03d410ad1c7c0 +Description: Intel® Integrated Performance Primitives common + + +Package: intel-oneapi-ipp-common-devel-2021.7.0 +Architecture: all +Version: 2021.7.0-25396 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 6210 +Depends: intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing-2023.0.0 +Filename: pool/main/intel-oneapi-ipp-common-devel-2021.7.0-2021.7.0-25396_all.deb +Size: 3568316 +MD5sum: 8d15c9f4df6e2a1ba93877a6b4f54241 +SHA1: 83109502aacb7cebef0a742a07c4f530e35c577e +SHA256: 9c23b560ee4a035656c2f502aad171c65386d62f7180cfe099b08bb73adbf0a9 +SHA512: e2b81d6cbea358b7d9d0995f53b61b3a91663b7eb935f7fc7614929e679e53fcf76f5e5689498e64e76612a0f33df0330974e71b0a0e9b893c0e8ef2584414b9 +Description: Intel® Integrated Performance Primitives common + + +Package: intel-oneapi-ipp-common-devel-2021.8.0 +Architecture: all +Version: 2021.8.0-46345 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 6217 +Depends: intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing-2023.1.0 +Filename: pool/main/intel-oneapi-ipp-common-devel-2021.8.0-2021.8.0-46345_all.deb +Size: 3570072 +MD5sum: cef65593791a57bab279b7d98c89e63a +SHA1: d243f9e75b67e95ddc34bdef0b1cb9682ab4cecf +SHA256: 16f5d9448492023b701b36dbe860ede13fb771ca60d5165464151f4fec086423 +SHA512: 860a887f93797baa9823e50e1dbb3fd2b9039934fc8cef0d7bd6456cf731216e799a0242b6e69f989290ac24ae9b2a389f230173ec7578fd2d3ece9c939d66ae +Description: Intel® Integrated Performance Primitives common + + +Package: intel-oneapi-ippcp-common-2021.1.1 +Architecture: all +Version: 2021.1.1-54 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 25 +Depends: intel-oneapi-common-vars,intel-oneapi-common-licensing +Filename: pool/main/intel-oneapi-ippcp-common-2021.1.1-2021.1.1-54_all.deb +Size: 10312 +MD5sum: 4cb3afd44abdaf3e5844007f2634f7a7 +SHA1: bae001d9063c658e2ba0a1f7115da282abd388c4 +SHA256: 60872183924e0e138ccf3cda2c93750f3e1407ae2ac0acf778d47d1343667b87 +SHA512: c1236551c417dfb8a01159de076ba5084277b9f0e3c0fd70c8e08483ac0b625c2688eeacc9f96e06e21fd7524aa804a7c9731c98edf841692414c7b6a3c5c1eb +Description: Intel® Integrated Performance Primitives Cryptography common + + +Package: intel-oneapi-ippcp-common-2021.2.0 +Architecture: all +Version: 2021.2.0-231 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 27 +Depends: intel-oneapi-common-vars (>= 2021.2.0-195), intel-oneapi-common-licensing-2021.2.0 +Filename: pool/main/intel-oneapi-ippcp-common-2021.2.0-2021.2.0-231_all.deb +Size: 10828 +MD5sum: d45582f63d8f03ce1e4323205d1b3085 +SHA1: 08f36453b928f8d7e1a3882817ac343ba9d5f5df +SHA256: 1ff3731ee259a0d9916319f404c6513eacdb21ce8c33482874706c3370f64c8b +SHA512: 3be841b74569168e8d9706c53f96a9e852b166a8e30c43cac7bba32e87206435ac5c5739d00a5469b1889242a5c498999c21041c532294f0213095051b53d267 +Description: Intel® Integrated Performance Primitives Cryptography common + + +Package: intel-oneapi-ippcp-common-2021.3.0 +Architecture: all +Version: 2021.3.0-315 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 29 +Depends: intel-oneapi-common-vars (>= 2021.3.0-261), intel-oneapi-common-licensing-2021.3.0 +Filename: pool/main/intel-oneapi-ippcp-common-2021.3.0-2021.3.0-315_all.deb +Size: 11196 +MD5sum: cb781f88110e62d7608cf2eecb29e2ad +SHA1: 1d27a91e13ea08bcaecfb5de52232693a1435ed9 +SHA256: e47cd69f6b010dab852082729fbfd28b73f361cf9aa16632e748e52a0e7a08a3 +SHA512: 92935e9c74724b0668c6a969ead1ccabe80b9a4240b11735ba3a42cede52d8e2be599d7f20513d1ee63190beeb6b1b6ad93d48e8f3b902e0cf97fe196102d27d +Description: Intel® Integrated Performance Primitives Cryptography common + + +Package: intel-oneapi-ippcp-common-2021.4.0 +Architecture: all +Version: 2021.4.0-401 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 20 +Depends: intel-oneapi-common-vars (>= 2021.4.0-327), intel-oneapi-common-licensing-2021.4.0 +Filename: pool/main/intel-oneapi-ippcp-common-2021.4.0-2021.4.0-401_all.deb +Size: 8616 +MD5sum: d08ff1eac5af68af9c476612754a94cf +SHA1: 85722d7e39347789b6dac954b4166f610503c2a4 +SHA256: 9dc74b09ca7d35fd8ae4cfbf317cf7a9a36926814b2e58c8b00f175691c1885a +SHA512: 846374f24288cf1a1adc871f8f93593d8ce8157d376cce3d98b50616daa610b0d91ce2c39ba35733e24ff1fa748949779b6de933a13d0e21b26a0475db735c0c +Description: Intel® Integrated Performance Primitives Cryptography common + + +Package: intel-oneapi-ippcp-common-2021.5.0 +Architecture: all +Version: 2021.5.0-445 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 19 +Depends: intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-ippcp-common-2021.5.0-2021.5.0-445_all.deb +Size: 8214 +MD5sum: c38d345f863e92a4e865db43d8686317 +SHA1: 0fc41af44e2d22025ad8ff7d48fa022b751ef960 +SHA256: a248893692b2cd734974f8939e3e24af625eaa601b8b5bb92b534b1e1517cc8c +SHA512: 21aa0eca6e937f5a43ee034c4d1844d41953b3c410a2464d91ee7c9b6a2d716ff88d8808b8f864a24874b51f68def60ace87599faff3b36bdf79aca5572ad4ee +Description: Intel® Integrated Performance Primitives Cryptography common + + +Package: intel-oneapi-ippcp-common-2021.5.1 +Architecture: all +Version: 2021.5.1-462 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 19 +Depends: intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-ippcp-common-2021.5.1-2021.5.1-462_all.deb +Size: 8212 +MD5sum: c8e934f70b04aab70f020bf29f9033da +SHA1: aedfa1a400839e6f280d82914d3b69b4b3b6aecf +SHA256: a32b92b6641a0310c46dc585a0967069d7149baae68156b5421e98c17cdcea45 +SHA512: 4ee5fc5467e030e9d7dba93e0bba18086e8f56fb4c507f13e87cbb09e120a5f2fe160158f9c013e716f342e9a1f2bc97d2ea7c85ab16ee7af30291b0d58abf25 +Description: Intel® Integrated Performance Primitives Cryptography common + + +Package: intel-oneapi-ippcp-common-2021.6.0 +Architecture: all +Version: 2021.6.0-536 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 19 +Depends: intel-oneapi-common-vars (>= 2022.1.0-161), intel-oneapi-common-licensing-2022.1.0 +Filename: pool/main/intel-oneapi-ippcp-common-2021.6.0-2021.6.0-536_all.deb +Size: 8288 +MD5sum: 23660a9c4fd45befb5bbc52052df1c0f +SHA1: 96cc88f488d21fbcc336554fa32eac17e234be2c +SHA256: d89cc7b3e290673891c72f303b11fa2422fd79faa6756c4ab3080e1a2c36e736 +SHA512: 5b1061b94d64930e150f2635c4382f0d4e2a6390e7281d2c0b78d192d99f095c27d4d89638a2a62a0cf563e6e66c62550456fa89c0ef2361933aede297cedae3 +Description: Intel® Integrated Performance Primitives Cryptography common + + +Package: intel-oneapi-ippcp-common-2021.6.1 +Architecture: all +Version: 2021.6.1-8714 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 51 +Depends: intel-oneapi-common-vars (>= 2022.2.0-8694), intel-oneapi-common-licensing-2022.2.0 +Filename: pool/main/intel-oneapi-ippcp-common-2021.6.1-2021.6.1-8714_all.deb +Size: 8292 +MD5sum: 349bd3b4d51f9cb1f9b1bca0c869897c +SHA1: 5f7e5a4570f75bfc7bed6bcd09fb1a54c554ffea +SHA256: 6393eac34377b5670a4f51969083174f34c9706089ada7b8c2c4323a95c1715d +SHA512: be0945ffedafe2cc738b8131c832d5ee5f8028255366227a73ba71a0746a0aee481d910d48661b50a1b4cb4d9d2184a8ec489f7faf6dc42ee6ba17e8aaf703e4 +Description: Intel® Integrated Performance Primitives Cryptography common + + +Package: intel-oneapi-ippcp-common-2021.6.2 +Architecture: all +Version: 2021.6.2-15006 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 51 +Depends: intel-oneapi-common-vars (>= 2022.2.1-14969), intel-oneapi-common-licensing-2022.2.1 +Filename: pool/main/intel-oneapi-ippcp-common-2021.6.2-2021.6.2-15006_all.deb +Size: 8292 +MD5sum: 701e3ab2907ef812aee05e900584c768 +SHA1: 0589494b6433591fd191b2d213345aaca2b34b76 +SHA256: e2862946e2b86725cd8b1608eab0e18a998d91e44bbd87c4c728ad95c6c3ad92 +SHA512: 7cd5b13d46f5639d665cf1b60922319bd219d42f90c45bc2efc35ba4ae6829e1a958f4a36553a7d3d3e979a55b9f9efb9d5c0b8db24591ea3de405affd691b29 +Description: Intel® Integrated Performance Primitives Cryptography common + + +Package: intel-oneapi-ippcp-common-2021.6.3 +Architecture: all +Version: 2021.6.3-25343 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 51 +Depends: intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing-2023.0.0 +Filename: pool/main/intel-oneapi-ippcp-common-2021.6.3-2021.6.3-25343_all.deb +Size: 8232 +MD5sum: 9b8c7a24ab01d5b80351fd99c84df472 +SHA1: 994abfada56c80281a7ddd427ac08fe9a4293f6e +SHA256: 369f1ece17876453876dba326872a38ab4755b862ea4ce4c04d949b38327c61d +SHA512: 8b3625fe9c6983b0d721e702a8ca5c7f6fe1a0b327b5e8cdfd4cea818c7eaa1f9fa2b74b4a144f7fc4f78196cbb7973b0212eac3372f1324186f1f046958d0fd +Description: Intel® Integrated Performance Primitives Cryptography common + + +Package: intel-oneapi-ippcp-common-2021.7.0 +Architecture: all +Version: 2021.7.0-43492 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 50 +Depends: intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing-2023.1.0 +Filename: pool/main/intel-oneapi-ippcp-common-2021.7.0-2021.7.0-43492_all.deb +Size: 8060 +MD5sum: e5f8d60048cb4f38eeca25270f1dac1e +SHA1: 34b8858200e6d4053602c15a1236f44835c40aa0 +SHA256: acda55e5e660fb0a15183310aaf5acd42b2a5aef82395964e2aa2d74012b8fde +SHA512: 3357342cf2ddd20061d27760c3ac90d6e1b67748b6291a43e52acf7845c3bf223f78977ea809a4eee9f31dff37b70f85a9973ff132f32ed027808609ec87bbe3 +Description: Intel® Integrated Performance Primitives Cryptography common + + +Package: intel-oneapi-ippcp-common-devel-2021.1.1 +Architecture: all +Version: 2021.1.1-54 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 402 +Depends: intel-oneapi-common-vars,intel-oneapi-common-licensing +Filename: pool/main/intel-oneapi-ippcp-common-devel-2021.1.1-2021.1.1-54_all.deb +Size: 144704 +MD5sum: dcfb4f33f5a0119a58dd41f5c4cb1a1f +SHA1: 5c7737c1235830d6156c2fdcbb55a0929db4ce9d +SHA256: 1c4d74e2af89b3481fc0af789b28df265c2dc281f658ec2a66e944eff5b1e666 +SHA512: 5a7f5b507859bb97ad19aa1f63bb5b52af9153254a5d6d53dade21c60fbbddc6bfc125291bb482a60673f5b6acb20255939cfd9db9e01a913519bea2d51832b2 +Description: Intel® Integrated Performance Primitives Cryptography common + + +Package: intel-oneapi-ippcp-common-devel-2021.2.0 +Architecture: all +Version: 2021.2.0-231 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 412 +Depends: intel-oneapi-common-vars (>= 2021.2.0-195), intel-oneapi-common-licensing-2021.2.0 +Filename: pool/main/intel-oneapi-ippcp-common-devel-2021.2.0-2021.2.0-231_all.deb +Size: 148446 +MD5sum: feec1705414df132bbb4268a211bc36a +SHA1: e15e69cfa2fa8a5cdc45ddee25151cc0bc895a5f +SHA256: b869a9d26c469724c271138e0ddcfd5f802012ea7d82bec70cc662c6880937ab +SHA512: 79a3d2ef8dbfd4ac7a51d5125df3a20bb7a8b8143fa1c09bf74bb1652de51d6885d05d9fb7fb4947a5d3afc49d2df8fd8b15c5bbb842d0f7553cca8df482765e +Description: Intel® Integrated Performance Primitives Cryptography common + + +Package: intel-oneapi-ippcp-common-devel-2021.3.0 +Architecture: all +Version: 2021.3.0-315 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 412 +Depends: intel-oneapi-common-vars (>= 2021.3.0-261), intel-oneapi-common-licensing-2021.3.0 +Filename: pool/main/intel-oneapi-ippcp-common-devel-2021.3.0-2021.3.0-315_all.deb +Size: 148452 +MD5sum: aeca0d55b856002d27d16250f6568fc4 +SHA1: 797754f45c64216d845e12de3424afc6a1038356 +SHA256: 426fd2709b5f2e17284221ec0c39072a2ff142f1ddfdf706946a1e8d90a6e98e +SHA512: ed763373b551886b48b56e2cae8eed92766839aeec70de02c9dfabf85e988ba1844bde19cf9915f38c7243d760af37e4ba9cef2e3e5d2cd89cf456115c8b53b5 +Description: Intel® Integrated Performance Primitives Cryptography common + + +Package: intel-oneapi-ippcp-common-devel-2021.4.0 +Architecture: all +Version: 2021.4.0-401 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 419 +Depends: intel-oneapi-common-vars (>= 2021.4.0-327), intel-oneapi-common-licensing-2021.4.0 +Filename: pool/main/intel-oneapi-ippcp-common-devel-2021.4.0-2021.4.0-401_all.deb +Size: 152438 +MD5sum: e6eb1b4829d2908a70347332387b7cc7 +SHA1: 0cb6ef8086cf4d3cd7dc42e3dbc033a5e6aa8b6f +SHA256: 888131b5607422b7906fafdc93b5a2bd8f54d541496bca84cf46b2cc5ec246dc +SHA512: 8850c47d431bd0196416bcdbf1eeb8ec525d2e710e97cd1e2325b4da45a541d1bf12cf2eafe2a66ca10d747797c5a88947c2d19e7effe6e25f93e5058d3bf04f +Description: Intel® Integrated Performance Primitives Cryptography common + + +Package: intel-oneapi-ippcp-common-devel-2021.5.0 +Architecture: all +Version: 2021.5.0-445 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 423 +Depends: intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-ippcp-common-devel-2021.5.0-2021.5.0-445_all.deb +Size: 153322 +MD5sum: 84a3b5ceb5b7991602c8e0ff6b473bce +SHA1: c2f0f6227f92261726265d9ecaf53d86d7ef6e40 +SHA256: f796e069155d927fd26ead6b33c3168129b2480ab8875c45f0edde94d0b0324c +SHA512: 44fba9e710ccebe965e80feb191f169c476ce337fed83f09a436a5e2242d02bd9b0a1f02d9223adbbbf94a8900744e6b8f45761189460915db8e5c4aa955a696 +Description: Intel® Integrated Performance Primitives Cryptography common + + +Package: intel-oneapi-ippcp-common-devel-2021.5.1 +Architecture: all +Version: 2021.5.1-462 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 423 +Depends: intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-ippcp-common-devel-2021.5.1-2021.5.1-462_all.deb +Size: 153302 +MD5sum: 9eaabb5d5ba772ea3b2a335f9a9f1dbe +SHA1: 5ee23cc4d68a47246da19fa96c074831e3327b68 +SHA256: 0190cb204ebff78bcd4631979ddbd0491a70dce29fea8b7588de19c4b64a03d2 +SHA512: 928c8b16f7dc9f51cf199f3f62f84fd09114a6584bd92327b57ac096698c81bce5444d25a4a810dbf0687caa8f77ae9fed6222416c052a592a8d939f1aa561bd +Description: Intel® Integrated Performance Primitives Cryptography common + + +Package: intel-oneapi-ippcp-common-devel-2021.6.0 +Architecture: all +Version: 2021.6.0-536 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 421 +Depends: intel-oneapi-common-vars (>= 2022.1.0-161), intel-oneapi-common-licensing-2022.1.0 +Filename: pool/main/intel-oneapi-ippcp-common-devel-2021.6.0-2021.6.0-536_all.deb +Size: 153504 +MD5sum: 969ba339ac9d270f4bd6da7111b6eb0e +SHA1: 2d5ba29874b89d0b269babef18db1547b4f60a8f +SHA256: 314658f2bed9e4d816179b8fd315baa86c2f3188ee570c0d5832df855bc5a44e +SHA512: ab4cbcd3f42e4fc2db5616d90ba2ca1233c6db27e4c80f8f1b97b68746ac5a1e81aa33b8779318c2e20b64379e45bd33d416c97a8c7e990847bbec1ccc114e3b +Description: Intel® Integrated Performance Primitives Cryptography common + + +Package: intel-oneapi-ippcp-common-devel-2021.6.1 +Architecture: all +Version: 2021.6.1-8714 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 491 +Depends: intel-oneapi-common-vars (>= 2022.2.0-8694), intel-oneapi-common-licensing-2022.2.0 +Filename: pool/main/intel-oneapi-ippcp-common-devel-2021.6.1-2021.6.1-8714_all.deb +Size: 153632 +MD5sum: 695f6e3efdd56fab063b0db9d68f993e +SHA1: fdc2d3620b6840f2f1f852d122ae603303d37e3d +SHA256: 32bd6dcfcc3441baf1eaf2579421fec351714cbeff59916976aeb26acee39855 +SHA512: d4eb4187aea65d036e962970299809847d90b23f069ba1661b1eaf4a146ae1df778cad08c43c35ec32d1f47615c4e0139aeced1e4403d006431d567991bbb5fa +Description: Intel® Integrated Performance Primitives Cryptography common + + +Package: intel-oneapi-ippcp-common-devel-2021.6.2 +Architecture: all +Version: 2021.6.2-15006 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 491 +Depends: intel-oneapi-common-vars (>= 2022.2.1-14969), intel-oneapi-common-licensing-2022.2.1 +Filename: pool/main/intel-oneapi-ippcp-common-devel-2021.6.2-2021.6.2-15006_all.deb +Size: 153640 +MD5sum: 8025187adbeba1c5875804a6a2ee3ad2 +SHA1: 37a745bd2cd00d62d6d78babdec6f6a4ef0a9cfc +SHA256: 48d461ce741e3e07ae1b16dedcdf1843444add34ffdd8d2d83ff5461e37562cf +SHA512: dbf6d608ecb836e8744e005fa14f6a7b544f26ed509e30a4f035cb7a90b0df7e28d0f9f6e23aca4113c9d9f36ff85ecf08078984d75e146fb0889384b3ef8acc +Description: Intel® Integrated Performance Primitives Cryptography common + + +Package: intel-oneapi-ippcp-common-devel-2021.6.3 +Architecture: all +Version: 2021.6.3-25343 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 492 +Depends: intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing-2023.0.0 +Filename: pool/main/intel-oneapi-ippcp-common-devel-2021.6.3-2021.6.3-25343_all.deb +Size: 154032 +MD5sum: bfafe753dd04ecb15809291751162a3e +SHA1: 517e9ad16c3bc054639d85bb8331f9ac5ad8cd15 +SHA256: eaec1556207835b6602c2f845c21d0897e863bb95bf5c3f3d9c2d4db9bd89a26 +SHA512: dd3f10f1d8af898b55e2cb05f56f324334e7e2fd9cfd5f4b479426f5bd7a8b1874c9d3a597e4348b9ce0ca58f9268e6b6a93fb03e3f6451118ceb722a7391f42 +Description: Intel® Integrated Performance Primitives Cryptography common + + +Package: intel-oneapi-ippcp-common-devel-2021.7.0 +Architecture: all +Version: 2021.7.0-43492 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 498 +Depends: intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing-2023.1.0 +Filename: pool/main/intel-oneapi-ippcp-common-devel-2021.7.0-2021.7.0-43492_all.deb +Size: 154712 +MD5sum: 3ff37dfda3da83aefbd66b645b779848 +SHA1: 044bf5040f1c4ccb742f2c5afd6c4f64dd75166d +SHA256: d2c7e3f1c6a1cb0c84bfeb8ab1d398dc5dd4ebd48569a2a1d4d64292bb4bf938 +SHA512: 142bb6c967a264cc79843e7ff15e95385487173ce04d3f5e4ab514dc3c03aaca509b5042621c9b4ef5be40b376dd6077f6212173fce744498911d9b870bf7306 +Description: Intel® Integrated Performance Primitives Cryptography common + + +Package: intel-oneapi-mkl-common-2021.1.1 +Architecture: all +Version: 2021.1.1-52 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 102 +Depends: intel-oneapi-common-vars,intel-oneapi-common-licensing +Filename: pool/main/intel-oneapi-mkl-common-2021.1.1-2021.1.1-52_all.deb +Size: 18634 +MD5sum: 55a419d682f6b2d2fbd355ad3fc5967c +SHA1: a7a56031f1ce27bbb6e901c5d8bee2770562d29d +SHA256: 9beb673bf4c68a8472a8d3e92c772f29a30a7fbc1b93bfec144dfe8cab24d011 +SHA512: 4e31f200a7e44615cc1edcd3d334fb3af29894f5dee04d81fc7b784dca25e2de92f033c5e1094f2e299ed4e5479d92ce253f6899cddf923dcedd016e650729e3 +Description: Intel® oneAPI Math Kernel Library 2021.1.1 for Linux* common + + +Package: intel-oneapi-mkl-common-2021.2.0 +Architecture: all +Version: 2021.2.0-296 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 113 +Depends: intel-oneapi-common-vars (>= 2021.2.0-195), intel-oneapi-common-licensing-2021.2.0 +Filename: pool/main/intel-oneapi-mkl-common-2021.2.0-2021.2.0-296_all.deb +Size: 22514 +MD5sum: 6f0bef543fd0ec5485d9b25a65c8df3e +SHA1: 26a4c91df8d056e4e92c471049db47133fb2e701 +SHA256: 0d45f3a0783d20d63d0484c3a851c20057d663b170ac7633d22a663a5c9377f2 +SHA512: c3fc471e1c00f806b7bdf2989b490c6812508704521ecb717716bdcd0e3f5d90a4990fb3b39dc0dba89fa94ede1e7ca3e3e8ce8db139cd3e644f7c8f8f2b3309 +Description: Intel® oneAPI Math Kernel Library 2021.2.0 for Linux* common + + +Package: intel-oneapi-mkl-common-2021.3.0 +Architecture: all +Version: 2021.3.0-520 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 118 +Depends: intel-oneapi-common-vars (>= 2021.3.0-261), intel-oneapi-common-licensing-2021.3.0 +Filename: pool/main/intel-oneapi-mkl-common-2021.3.0-2021.3.0-520_all.deb +Size: 23810 +MD5sum: 1df0cde5b472e9c171c4259f5c18d031 +SHA1: bb58eabaac016ae6b367c839b4af707952f9b0d5 +SHA256: e0055af96451959c8485f1138226aca45eabb7258b05ca5ce2a9241e551a163e +SHA512: 345872ed3084637290c75702f3f891bd1599f1e600345219c7399e8d0b5bee45f2d8728b4864289d44643e3073f684952aea116ebdd7c85d456de2100554f242 +Description: Intel® oneAPI Math Kernel Library 2021.3.0 for Linux* common + + +Package: intel-oneapi-mkl-common-2021.4.0 +Architecture: all +Version: 2021.4.0-640 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 118 +Depends: intel-oneapi-common-vars (>= 2021.4.0-327), intel-oneapi-common-licensing-2021.4.0 +Filename: pool/main/intel-oneapi-mkl-common-2021.4.0-2021.4.0-640_all.deb +Size: 23802 +MD5sum: 8642252c4b9998a039a48c01053859c6 +SHA1: 1be02123714b1a955ac25984a5dea5d8b3ad210b +SHA256: 72bfadfc19d4f3a8b3c8d9e73a412fb9380eeafb073db56c190a7c22c5c211cf +SHA512: 5d7ed14d31cebbd13e29f6bb436232ce5bbe75b5022ef62c7ed081027acc620c12cc13408b5e775fbdb7cab8bf9a874e03672701351cd3709af1708eef488133 +Description: Intel® oneAPI Math Kernel Library 2021.4.0 for Linux* common + + +Package: intel-oneapi-mkl-common-2022.0.1 +Architecture: all +Version: 2022.0.1-117 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 117 +Depends: intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-mkl-common-2022.0.1-2022.0.1-117_all.deb +Size: 23746 +MD5sum: 0b623f91b7f00591af9054c1b3556a3d +SHA1: 7dfd1f04414549cf4102c66e9730f7aff2a399d8 +SHA256: 1c15c85a9f52e3993dd2177d1d931428741a6bf919acd4a8419ee2fd1e7ece8e +SHA512: eb96882b56772ec9dcf35f2ea7a92cd91048350ce37243ce84a29de885332ec9f23d1ff1676b8740531c4d634e3fd6ac3565bcb4f2aefbd168f1eca8c0726a69 +Description: Intel® oneAPI Math Kernel Library 2022.0.1 for Linux* common + + +Package: intel-oneapi-mkl-common-2022.0.2 +Architecture: all +Version: 2022.0.2-136 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 117 +Depends: intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-mkl-common-2022.0.2-2022.0.2-136_all.deb +Size: 23738 +MD5sum: 3a7f13ae848d7a6fc6dc27272e2ddb89 +SHA1: 5cfd443ffa30a1b48a4fa2d0adcb3bd8d5ed560b +SHA256: 136bf4a2208350a7e45a0d6fc741af7999b8c4bc192b070bdb1bad858cb4b0b7 +SHA512: 51e96a119cef358de2c5c223479489ded454af26842c91e8f1743a8480b4d50fb42658b5c3547cabadeefb9ac93d76c7aa87907e01fbce76c95fef7d908885cd +Description: Intel® oneAPI Math Kernel Library 2022.0.2 for Linux* common + + +Package: intel-oneapi-mkl-common-2022.1.0 +Architecture: all +Version: 2022.1.0-223 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 114 +Depends: intel-oneapi-common-vars (>= 2022.1.0-161), intel-oneapi-common-licensing-2022.1.0 +Filename: pool/main/intel-oneapi-mkl-common-2022.1.0-2022.1.0-223_all.deb +Size: 23906 +MD5sum: 99ea2b40381a669559a9775d219e94e5 +SHA1: 294031500249625298c1e96816122e11020eb7bb +SHA256: 93b461332d506ba74900518f0d65a309b203391d91b33b399f37262dbb23bdfc +SHA512: 3887eb148ce96a526b44057be86aa62b174dd33cdfc738b0d17fce49a89f6a60c5de1719ef9f977ad22cbae0c851ce269c085c125daa668027969e082ca20287 +Description: Intel® oneAPI Math Kernel Library 2022.1.0 for Linux* common + + +Package: intel-oneapi-mkl-common-2022.2.0 +Architecture: all +Version: 2022.2.0-8748 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 149 +Depends: intel-oneapi-common-vars (>= 2022.2.0-8694), intel-oneapi-common-licensing-2022.2.0 +Filename: pool/main/intel-oneapi-mkl-common-2022.2.0-2022.2.0-8748_all.deb +Size: 23862 +MD5sum: d8ecdc692c5c80c0027a4f2ae8490912 +SHA1: 120552b381b0692062a7a4dd550917b54c74ab13 +SHA256: 883b2530f1b3f3d02824531dadf350d28e7393ef02a886fe99808f8f99993419 +SHA512: 4254b69c5de1acadce9c12b28c2b10e38a125b532f29c46c78bf917a2a8b8e5bd7f3d41abea635f6474c6338d8596763ce4b87bdd73186f9842390416ca22903 +Description: Intel® oneAPI Math Kernel Library 2022.2.0 for Linux* common + + +Package: intel-oneapi-mkl-common-2022.2.1 +Architecture: all +Version: 2022.2.1-16993 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 149 +Depends: intel-oneapi-common-vars (>= 2022.2.1-14969), intel-oneapi-common-licensing-2022.2.1 +Filename: pool/main/intel-oneapi-mkl-common-2022.2.1-2022.2.1-16993_all.deb +Size: 23890 +MD5sum: e5f890dd6014d127034d868fc204190c +SHA1: f3dae0ee57bbe5259bbeb7e7f8d7b2eaa6f96575 +SHA256: a06f051ffc83f6b89df582b444e67afbb35277752ed6eba5209bea56bf2f4cc7 +SHA512: 362640c14713bc8186ea712bb6720311cce1dae6e775d7aade4c613a7a5708224507ff4fefa1081165fa366840f94f8ae73ee345699a4fee5cf7cd7607d9f94e +Description: Intel® oneAPI Math Kernel Library 2022.2.1 for Linux* common + + +Package: intel-oneapi-mkl-common-2023.0.0 +Architecture: all +Version: 2023.0.0-25398 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 149 +Depends: intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing-2023.0.0 +Filename: pool/main/intel-oneapi-mkl-common-2023.0.0-2023.0.0-25398_all.deb +Size: 23930 +MD5sum: 663c248c9bda5ed688f7c9332a9caf44 +SHA1: dbf01c69ec779149564ce5d12518f20d92fd1ea0 +SHA256: 47fc873a5c0b736016ed76b7b99fd93b6bd9c27ee052a23e1944d8095b1b0a6c +SHA512: 3c190353b19ed32c13e702f45f453c37d62815aef306dc3bcf88faa20b5afe322c577e9129eafe2d1ace0238fde8d1f8fed04fcadd0ed2d6c43f8e5c46a76ce6 +Description: Intel® oneAPI Math Kernel Library 2023.0.0 for Linux* common + + +Package: intel-oneapi-mkl-common-2023.1.0 +Architecture: all +Version: 2023.1.0-46342 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 149 +Depends: intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing-2023.1.0 +Filename: pool/main/intel-oneapi-mkl-common-2023.1.0-2023.1.0-46342_all.deb +Size: 23886 +MD5sum: c6cdc162502253e6b3e18f2a43f32f6e +SHA1: 290128750352227bc9de6ac42861cba8491c90d4 +SHA256: 50c1537cd8252b443802325a6938f607b4b3801c552e77aacaa8d9d9dfc8c34e +SHA512: c51723be1522e9b1dcb41d30e46c9c1314a68f8cd76ee984c4b12e8206872d41360a9a28e89835225427f4ab2e637e4847fceaf6492cb18b18b22f32d124988d +Description: Intel® oneAPI Math Kernel Library 2023.1.0 for Linux* common + + +Package: intel-oneapi-mkl-common-devel-2021.1.1 +Architecture: all +Version: 2021.1.1-52 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 20682 +Depends: intel-oneapi-mkl-common-2021.1.1,intel-oneapi-common-vars,intel-oneapi-common-licensing +Filename: pool/main/intel-oneapi-mkl-common-devel-2021.1.1-2021.1.1-52_all.deb +Size: 4873942 +MD5sum: 77343a05f9ae28d4483995d68efeb855 +SHA1: bfde0a7948d10207810a0e4dd34ba63c13a12a15 +SHA256: 8f7bf451630c94c5f85a5af8fb13bffd6b72b66e53ec10bbb089e276321b29a4 +SHA512: 423d50fdd0b8589befd50be6bbe0d05530b095718733a7e3bed7e7a2df4526c5caf03504e597c1af3271728c8f5166f8c4ba37fc51e9ffc9c0e70499259f8782 +Description: Intel® oneAPI Math Kernel Library common + + +Package: intel-oneapi-mkl-common-devel-2021.2.0 +Architecture: all +Version: 2021.2.0-296 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 21534 +Depends: intel-oneapi-mkl-common-2021.2.0, intel-oneapi-common-vars (>= 2021.2.0-195), intel-oneapi-common-licensing-2021.2.0 +Filename: pool/main/intel-oneapi-mkl-common-devel-2021.2.0-2021.2.0-296_all.deb +Size: 4836576 +MD5sum: 65bacc592e964345b1b4da7af5d8b982 +SHA1: 54603e9f72c5f7895e9b471b4f867d0030168c20 +SHA256: 041bdd1fe191e70d235409a8767d70bb805315417dee8071391aa5aafb5942ad +SHA512: cb04497abb6d15627324a0d9ef7844706465f0681f9f3acc2adb72b0b05ac0911d3fd8d8331773f24719fb53451336f296d29e139ae4b379b1966185c64f1121 +Description: Intel® oneAPI Math Kernel Library common + + +Package: intel-oneapi-mkl-common-devel-2021.3.0 +Architecture: all +Version: 2021.3.0-520 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 21998 +Depends: intel-oneapi-mkl-common-2021.3.0, intel-oneapi-common-vars (>= 2021.3.0-261), intel-oneapi-common-licensing-2021.3.0 +Filename: pool/main/intel-oneapi-mkl-common-devel-2021.3.0-2021.3.0-520_all.deb +Size: 4750302 +MD5sum: 5ea7433be4aed09c6229461b4fc4553c +SHA1: a6d778ab68007401f86f549b5aea090168fa48ea +SHA256: 3e42fb9b4e325af63432cd5010ec46d9965ab53b65e5549f2717b0e8d08053f5 +SHA512: 9090d622e4ef6662f435e7274a3515d7c627fde1284018cea4f1709576cb333c1df265562ca6623c6b006eae3fbbdd937bef1c94af7ea23f13c1f46367b06c6c +Description: Intel® oneAPI Math Kernel Library common + + +Package: intel-oneapi-mkl-common-devel-2021.4.0 +Architecture: all +Version: 2021.4.0-640 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 22286 +Depends: intel-oneapi-mkl-common-2021.4.0, intel-oneapi-common-vars (>= 2021.4.0-327), intel-oneapi-common-licensing-2021.4.0 +Filename: pool/main/intel-oneapi-mkl-common-devel-2021.4.0-2021.4.0-640_all.deb +Size: 4750900 +MD5sum: f5f46fd0b9273e02a5018e21dac18a59 +SHA1: feccf2be80f8075947d6683f4516948faa8451b1 +SHA256: 4f979031b990286284051ce7505aa9181c9eabe29a994fea772ac647389fc870 +SHA512: 0960843dae364617f7887a9153321a9b3b8bf944fa6e34b110767420b0737f60b4ae4e9a2431903130466efafcbac41fdd417f07d1c5f52e13a0131cd57dbe47 +Description: Intel® oneAPI Math Kernel Library common + + +Package: intel-oneapi-mkl-common-devel-2022.0.1 +Architecture: all +Version: 2022.0.1-117 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 23747 +Depends: intel-oneapi-mkl-common-2022.0.1, intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-mkl-common-devel-2022.0.1-2022.0.1-117_all.deb +Size: 4884444 +MD5sum: f36ee4726ef984795a69b285ff8042b9 +SHA1: d42accfcd4945e5cc68d00ad34957df905a2a9e6 +SHA256: 1c84c0b72638415318229326cb143691a5914d5e88552abef39391db3d285cff +SHA512: e346a23649ec82478d3baa234c458c5d9bb11544d6bf1b217ca6a605ad151b447e3abf6395bc99a40a11a779dfa6f043175c3e71351d5ec806256ad04ca99938 +Description: Intel® oneAPI Math Kernel Library common + + +Package: intel-oneapi-mkl-common-devel-2022.0.2 +Architecture: all +Version: 2022.0.2-136 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 23747 +Depends: intel-oneapi-mkl-common-2022.0.2, intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-mkl-common-devel-2022.0.2-2022.0.2-136_all.deb +Size: 4884662 +MD5sum: 8117e75f6472a8dd955b968427e99049 +SHA1: fb71b40d3dfdf7f26100cb352beb2607e5e0ff84 +SHA256: 5ab00cbc8c7d9cf1f83b1947ee40c6eab0f574cc7f6d0923ea88d4a41020aea0 +SHA512: d920715c73fc2f0f4fffca6b25a799e8168b880753860c8d8bb4b8affb2d4ccb21b5b8758db9b8faa4d29ee305b3783bd18c4bf5ad1f9155e35ea171bd54d66f +Description: Intel® oneAPI Math Kernel Library common + + +Package: intel-oneapi-mkl-common-devel-2022.1.0 +Architecture: all +Version: 2022.1.0-223 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 24162 +Depends: intel-oneapi-mkl-common-2022.1.0, intel-oneapi-common-vars (>= 2022.1.0-161), intel-oneapi-common-licensing-2022.1.0 +Filename: pool/main/intel-oneapi-mkl-common-devel-2022.1.0-2022.1.0-223_all.deb +Size: 4909496 +MD5sum: 49885cc6e4fc3f462b6f3439f60ef599 +SHA1: 8bf848d662a902d65d7ef08fc3170e85d346fc98 +SHA256: 789924d0506f55d9d0db23636402e9a0f73026d2849eac460d73ee7d083c4701 +SHA512: 313e32d4fb1d49b315b7fe33803e6be2cfe897966ebde82a6bad0eec7e0980bab0ad21073b3efddaf8f57830693df89257e46b818d4b9485042a3aca2cd9b9e2 +Description: Intel® oneAPI Math Kernel Library common + + +Package: intel-oneapi-mkl-common-devel-2022.2.0 +Architecture: all +Version: 2022.2.0-8748 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 25005 +Depends: intel-oneapi-mkl-common-2022.2.0, intel-oneapi-common-vars (>= 2022.2.0-8694), intel-oneapi-common-licensing-2022.2.0 +Filename: pool/main/intel-oneapi-mkl-common-devel-2022.2.0-2022.2.0-8748_all.deb +Size: 4688984 +MD5sum: 1b166e616377e9acefaf151d3b7745a7 +SHA1: 2ca76486d6a81de541d495c468910cd3f3988916 +SHA256: d2e259c24b6f4dc8345dbfa1e1917406eaac05727fb280c581207e2a7afac03e +SHA512: 31038d7d425b804f4ed90794d0e57804026e505fbbba5fab873fde9f9b0c66d8af9d153b1d09c24a0d5e6561e86c822b071684ead88c5b6fdb4faaa77884c335 +Description: Intel® oneAPI Math Kernel Library common + + +Package: intel-oneapi-mkl-common-devel-2022.2.1 +Architecture: all +Version: 2022.2.1-16993 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 25005 +Depends: intel-oneapi-mkl-common-2022.2.1, intel-oneapi-common-vars (>= 2022.2.1-14969), intel-oneapi-common-licensing-2022.2.1 +Filename: pool/main/intel-oneapi-mkl-common-devel-2022.2.1-2022.2.1-16993_all.deb +Size: 4688928 +MD5sum: f0c5331c74b7ae854f722f432940db9f +SHA1: aed826df7a6c09a5bf46b17d79ec085c706951cc +SHA256: 65a36b2c94666c4c5aba2148533600e208fa0d64d4b8208dcb82020b3e0dd83c +SHA512: 275f267cf103b92ed0bdf56fdd55aee7c5ba5f42d2f7507abe1219aba72f325b9386c8e203a04d4a91020598d0d9cc82b0fc7abe22491c1103f44f3a31d42b2a +Description: Intel® oneAPI Math Kernel Library common + + +Package: intel-oneapi-mkl-common-devel-2023.0.0 +Architecture: all +Version: 2023.0.0-25398 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 25194 +Depends: intel-oneapi-mkl-common-2023.0.0, intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing-2023.0.0 +Filename: pool/main/intel-oneapi-mkl-common-devel-2023.0.0-2023.0.0-25398_all.deb +Size: 4584320 +MD5sum: 3ebe094524ad9128d29d329b070b455e +SHA1: 3949c7772cc296add1a519709ef4de7712df1195 +SHA256: 114861a697500e5ee5e0e5f1e920bc0c96dbacd80145877e4974c582acb26c52 +SHA512: 9f300fd9950c734b10e846ccf21ff579dd761158c6e74f33acb77a8f636956c789f67b6757d9ff5e6ae7292782782556b158b413535b39fd39b80a45c634a017 +Description: Intel® oneAPI Math Kernel Library common + + +Package: intel-oneapi-mkl-common-devel-2023.1.0 +Architecture: all +Version: 2023.1.0-46342 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 25324 +Depends: intel-oneapi-mkl-common-2023.1.0, intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing-2023.1.0 +Filename: pool/main/intel-oneapi-mkl-common-devel-2023.1.0-2023.1.0-46342_all.deb +Size: 4661052 +MD5sum: 64c1c7ab0379269c0f98cb8793159ee2 +SHA1: 4d9089a740e050e21cd55428dbd429cf07e265d6 +SHA256: bb096792ea3669a0977beb0949c49238e0e43e3bc48a7f63abc5fdb856562651 +SHA512: 877c758cc79d4b6239a0cf57b363f7a869b0794caf80f72eeeae9252544d8c2bafabd9f356f1b43839560d394218652e86a7983f30879523009bc144e5b2e814 +Description: Intel® oneAPI Math Kernel Library common + + +Package: intel-oneapi-openmp-common-2021.1.1 +Architecture: all +Version: 2021.1.1-189 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 56 +Depends: intel-oneapi-common-vars,intel-oneapi-common-licensing +Filename: pool/main/intel-oneapi-openmp-common-2021.1.1-2021.1.1-189_all.deb +Size: 13902 +MD5sum: c65451c65695bc417bcc39e8196a642b +SHA1: 3d37133c57389941aadced98319bb6ffe1c6b924 +SHA256: 04c895075fa68ea7dca99d7a7c577bbeda06abca5bc570ef756e8753b55c0223 +SHA512: 6882c7db39933264e34aa5603b763449b7477d2b329a3fe6ed4800a5ba49d8145563fbf812837814729801e40dacc361f801403bfe047d9541f11fba8bd81d94 +Description: Intel® OpenMP* Runtime Library 2021.1.1 for Linux* + + +Package: intel-oneapi-openmp-common-2021.1.2 +Architecture: all +Version: 2021.1.2-266 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 56 +Depends: intel-oneapi-common-vars,intel-oneapi-common-licensing +Filename: pool/main/intel-oneapi-openmp-common-2021.1.2-2021.1.2-266_all.deb +Size: 13904 +MD5sum: e670d662bc772841433d9dbb7c6c2567 +SHA1: ed7a439ffb392a6691a2db91292275510c3fbff9 +SHA256: a3330ee15fff68cc109e96dca53f43038366d9a171318583b3579a43539efbf7 +SHA512: b3baf993956a49b9049f3fed4cb16f4f9a94108ce036cb107ce262aa1f6693be8903bb08dc8aa2a88a241fd74dc0ae88d56fd4b1db67f3a5b354badc32c62fde +Description: Intel® OpenMP* Runtime Library 2021.1.2 for Linux* + + +Package: intel-oneapi-openmp-common-2021.2.0 +Architecture: all +Version: 2021.2.0-610 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 60 +Depends: intel-oneapi-common-vars (>= 2021.2.0-195), intel-oneapi-common-licensing-2021.2.0 +Filename: pool/main/intel-oneapi-openmp-common-2021.2.0-2021.2.0-610_all.deb +Size: 15984 +MD5sum: dc09bcbc2bce9c59841e2578b306b08c +SHA1: 44e77f6af8810e99a32332b08cb0fe05fafd79e4 +SHA256: 54760ad7e180c4a2ba13b8a695f9e657be586ecd58c5cceb60c831bcafc7cba6 +SHA512: 5d38f334fdc2ba881c95d78f34b46599ab572420c12fd7e627f064f4d735bb022bfeac655ed6ab1b0b2fe2bdaf575c028e022612c75d8c66bb4c16f509098a12 +Description: Intel® OpenMP* Runtime Library 2021.2.0 for Linux* + + +Package: intel-oneapi-openmp-common-2021.3.0 +Architecture: all +Version: 2021.3.0-3350 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 59 +Depends: intel-oneapi-common-vars (>= 2021.3.0-261), intel-oneapi-common-licensing-2021.3.0 +Filename: pool/main/intel-oneapi-openmp-common-2021.3.0-2021.3.0-3350_all.deb +Size: 15962 +MD5sum: 0b4c0ce91fb7e80462001410e6b5c6d4 +SHA1: 1cfd5be25d092d0c7d16cd7adb774ce2186cd625 +SHA256: e5e0f9141885e9862b0c5ceba73c1a90b112a4b0c912dc3f0cc2635d293db397 +SHA512: 302b3f481d34d1b069b48457074f17a319fb408f4b24a5f25c30fc17c4fc9f99db3203d1e5b8623f40298222b55876fca261cc9c6b1837bff2e7e343a91cd73a +Description: Intel® OpenMP* Runtime Library 2021.3.0 for Linux* + + +Package: intel-oneapi-openmp-common-2021.4.0 +Architecture: all +Version: 2021.4.0-3561 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 66 +Depends: intel-oneapi-common-vars (>= 2021.4.0-327), intel-oneapi-common-licensing-2021.4.0 +Filename: pool/main/intel-oneapi-openmp-common-2021.4.0-2021.4.0-3561_all.deb +Size: 16096 +MD5sum: f122b666a14b14c3b3dc5c8f317c5e77 +SHA1: ab9b1af3648d37289a317e8506ec143593b6d622 +SHA256: 884d41d2e461a5c2bb808a62cf7533159ec862bd67084cd24f3d65c5969f3f1a +SHA512: a8aaf2bb082b20f13e0c2357dd3d328d9165c24f4eb34cd62c8e9ed0e0652b9b2a2eacf25150fe2159ecea34bcede86561e37bf715773e13f69b173b10c37c88 +Description: Intel® OpenMP* Runtime Library 2021.4.0 for Linux* + + +Package: intel-oneapi-openmp-common-2022.0.1 +Architecture: all +Version: 2022.0.1-3633 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 67 +Depends: intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-openmp-common-2022.0.1-2022.0.1-3633_all.deb +Size: 16130 +MD5sum: d2a0215451f28adc0c2f3ea67d768b75 +SHA1: 4bae9520cb5fb8a05d5903625b19c2e3057fbeac +SHA256: c72e48f184b914b84e043fe455ff2133352f019d6dc041ba8d1a4ac80385523a +SHA512: 8b652e55c8807023ed8fdb34fdb450d06081b9de69c8015a4aca832201e92aeba5eca8146164e1c6fc94409db5231c6ae5357cf50eaebcf18a26654390e0bcfc +Description: Intel® OpenMP* Runtime Library 2022.0.1 for Linux* + + +Package: intel-oneapi-openmp-common-2022.0.2 +Architecture: all +Version: 2022.0.2-3658 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 67 +Depends: intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-openmp-common-2022.0.2-2022.0.2-3658_all.deb +Size: 16138 +MD5sum: 1426cc49df8e9335e61645648d79fd35 +SHA1: f3ab865909209de766bed8c1933c43d431aedc2a +SHA256: d302e5ca9a67eb6fa6e97320f48e4f66bd795e7625d3e33bb986d4505a13341c +SHA512: 31262337ce888f838ea7f20184a809fef8bb00d020e80247e47852946e904a46455af98f8fd35f5dddd59189c4b425b0fe72921d8c031473578a0e8d068316bf +Description: Intel® OpenMP* Runtime Library 2022.0.2 for Linux* + + +Package: intel-oneapi-openmp-common-2022.1.0 +Architecture: all +Version: 2022.1.0-3768 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 78 +Depends: intel-oneapi-common-vars (>= 2022.1.0-161), intel-oneapi-common-licensing-2022.1.0 +Filename: pool/main/intel-oneapi-openmp-common-2022.1.0-2022.1.0-3768_all.deb +Size: 18550 +MD5sum: a6a36eafd7112e61dce8977919a816df +SHA1: 785989856b760caa24123c72551556ca27f64195 +SHA256: aaa06115d6cbad606373a61a512162f132c52360f6058970d7a4df55300fb826 +SHA512: cbc8301bbc6c772aff1d61dcbb0fc32641040acf581e611f48e246714eaecdb29ca61ecc0aa66eb863ec6d3112c113fbf8e37f632c2e26708a8589e1129716cf +Description: Intel® OpenMP* Runtime Library 2022.1.0 for Linux* + + +Package: intel-oneapi-openmp-common-2022.2.0 +Architecture: all +Version: 2022.2.0-8734 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 127 +Depends: intel-oneapi-common-vars (>= 2022.2.0-8694), intel-oneapi-common-licensing-2022.2.0 +Filename: pool/main/intel-oneapi-openmp-common-2022.2.0-2022.2.0-8734_all.deb +Size: 19258 +MD5sum: 7f2fc3b33b098ee89564204b9c6bf09d +SHA1: 8d6f98ff8acd95511d6e2ac9060c0e4f9b6e1ddd +SHA256: a63d9b072eabafe1ccb3150e00892f1883375f56f7a8dfcc69b072022f03c70e +SHA512: 73b8d31e3a064914bfdd8af5625bba08ac370bcc4388a8c652ff8629a39e3fdf1b3a043cf4b0de3023184b71aff851213d05e6cd0003386c3e532b04d1b2e3ed +Description: Intel® OpenMP* Runtime Library 2022.2.0 for Linux* + + +Package: intel-oneapi-openmp-common-2022.2.1 +Architecture: all +Version: 2022.2.1-16953 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 127 +Depends: intel-oneapi-common-vars (>= 2022.2.1-14969), intel-oneapi-common-licensing-2022.2.1 +Filename: pool/main/intel-oneapi-openmp-common-2022.2.1-2022.2.1-16953_all.deb +Size: 19258 +MD5sum: adf2918490a547ccc91f2d9dd383b3ce +SHA1: d52e88b43122c198840466d76c6c2437a6a80a4b +SHA256: 706b1e86b9bc1fdbea958eb9f62c893b75b80704d02e11be3ca4549ecd7c87ef +SHA512: 0af4cd098d6b8004ca70ec88db7f02e8d680f23ef480429a31d70d40aecb9b005ab13e3709bd447a989ff93b7a0d51d89eac395fd839c0165511c3b0921eb822 +Description: Intel® OpenMP* Runtime Library 2022.2.1 for Linux* + + +Package: intel-oneapi-openmp-common-2023.0.0 +Architecture: all +Version: 2023.0.0-25370 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 127 +Depends: intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing-2023.0.0 +Filename: pool/main/intel-oneapi-openmp-common-2023.0.0-2023.0.0-25370_all.deb +Size: 19238 +MD5sum: d549f1449de06f120e7e86ada1618684 +SHA1: 4054ca292132690261c742d60d2fa3a71713834d +SHA256: b324474eae8bd5bd010df52de880eea55566e91dc043462879fc295ea6b3039c +SHA512: ce0eed9e142cc6dc127b43f14eb79fa1dfd446760a03ec25401ded56603fee8054d94752d940510b4d8d1166920d377928a82e1c2d3ef719791d588aad6c81af +Description: Intel® OpenMP* Runtime Library 2023.0.0 for Linux* + + +Package: intel-oneapi-openmp-common-2023.1.0 +Architecture: all +Version: 2023.1.0-46305 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 127 +Depends: intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing-2023.1.0 +Filename: pool/main/intel-oneapi-openmp-common-2023.1.0-2023.1.0-46305_all.deb +Size: 19234 +MD5sum: 045ab3eccfdb16fe91b92eb7ec2dba57 +SHA1: 842bc6c4472bd9260d04817047c614e802e37ae3 +SHA256: d4cb4adfbfc1ba289996f4b55e85fef73348ee193314552b08a3c59c2af2c8e0 +SHA512: 7b1576b3e8fcd12766dc75dcd72ec2caa23db9e4428b69f6d6d4ebcb8857671381aec88173fef28ce27e67287f4df841973135b0a65e53a07be06a378131c5cc +Description: Intel® OpenMP* Runtime Library 2023.1.0 for Linux* + + +Package: intel-oneapi-runtime-compilers-common +Architecture: all +Version: 2021.1.1-189 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 34 +Filename: pool/main/intel-oneapi-runtime-compilers-common-2021.1.1-189_all.deb +Size: 12462 +MD5sum: 6e1850efdcfb5eff543dbb9e1a3659cb +SHA1: 2d5419b472cae8a11fa8674f9a3207eb0d90867f +SHA256: 10325bdc3b369004584f635fbaa816aadb801bfb64307a7d024b52b57bedb688 +SHA512: 27330fa655d79b5aefb536f51caece32180bbe429ecce7a8f3754a09fb5f860c3ab8fdd371fbcba6452c80c3c424b57b2c5c8ada23036d97ed57e756462c3f89 +Description: Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic runtime common files + + +Package: intel-oneapi-runtime-compilers-common +Architecture: all +Version: 2021.1.2-266 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 34 +Filename: pool/main/intel-oneapi-runtime-compilers-common-2021.1.2-266_all.deb +Size: 12462 +MD5sum: b0154da57cacf908d4908334300d0a50 +SHA1: cf5d3a7926a84391f38fb47e51118dcafae246b1 +SHA256: 37b84b572b62284ae74449f8947f0b8f5270c846515be8597c8a2b8a2fe9576f +SHA512: cadeab8a306432d8e2953132ffc6b14160c33710874e3c46c9224d8e7b4a8ede4b7ca9605e76bc925497216088695d3c875ea51d0fac13383a1af453dc157c62 +Description: Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic runtime common files + + +Package: intel-oneapi-runtime-compilers-common +Architecture: all +Version: 2021.2.0-610 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 34 +Filename: pool/main/intel-oneapi-runtime-compilers-common-2021.2.0-610_all.deb +Size: 12466 +MD5sum: f75b7e55f57be24fa6c8d9a0dca224bd +SHA1: a815b8777e5dc52007b4ee88987a4cb96e72cd44 +SHA256: c26904292b3e5d5d5ec63cad1952960ba6a7ba894dfca216f7cfbae5e948dc51 +SHA512: 6ccebe742d997549f37a5475f7c59768c2618a0c531e1dde2b2722aed72b4deaaf84a310753dfdc2d622bff8c4069546ccb07bb1dae641a04be5bc15e5b0f9aa +Description: Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic runtime common files + + +Package: intel-oneapi-runtime-compilers-common +Architecture: all +Version: 2021.3.0-3350 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 34 +Filename: pool/main/intel-oneapi-runtime-compilers-common-2021.3.0-3350_all.deb +Size: 12466 +MD5sum: b39e477b6824b4aa4383df32e86db7c8 +SHA1: 11ff6098a78c848f201996f966a9b7f0df8889bf +SHA256: a245d311400244462dd6663631fbb24403f356fc0868becf1e3329ece35f2921 +SHA512: 2c27c3541fc3945bccc87748d58ad3d6e52de22505b1c4849b60bee6d99a372c94f97f89284fcac0e97b6a377d7126cbb974f0381140c3518dbaba736f9b67a5 +Description: Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic runtime common files + + +Package: intel-oneapi-runtime-compilers-common +Architecture: all +Version: 2021.4.0-3561 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 34 +Filename: pool/main/intel-oneapi-runtime-compilers-common-2021.4.0-3561_all.deb +Size: 12462 +MD5sum: 44e05892d41f0ce157a2ae1190148851 +SHA1: cf0ed12e03b96fa931977e6dd0f50fd83e5e1aa7 +SHA256: 9d446a793e2a3b5749c949b8985c6cc05125df107458cd9640e39e32650f9365 +SHA512: ebebb0e89667335d3b2cd6f00327bcc1c9dc4395ae5d36ff075e5f09ff9370034e4457650cb83586e7443b0c126992395b8c2d584d7c9eedccfae541b7dc7b59 +Description: Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic runtime common files + + +Package: intel-oneapi-runtime-compilers-common +Architecture: all +Version: 2022.0.1-3633 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 25 +Filename: pool/main/intel-oneapi-runtime-compilers-common-2022.0.1-3633_all.deb +Size: 9626 +MD5sum: fad8e8d85e8b1050a85e5fc938f781b5 +SHA1: 23d65f901d4c27baa8e4d254e80c74cc0882b9a2 +SHA256: c592482f68b131fff0623fdc978c592950f02d7f35f6795587e93a28fe1d3c31 +SHA512: c1c0820c8d9a62118b25c852081ca1d754281e5ff0539c12dd4c663ce348ba389c8116dc9b51678cd733656605db937b7be5773407d44c72bb99aaeaa7a3131d +Description: Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic runtime common files + + +Package: intel-oneapi-runtime-compilers-common +Architecture: all +Version: 2022.0.2-3658 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 25 +Filename: pool/main/intel-oneapi-runtime-compilers-common-2022.0.2-3658_all.deb +Size: 9634 +MD5sum: 4147c6d953500ce0f43d2eeee5b8d100 +SHA1: d9c0d1ff2d58c1bf3a25e9afd64411384e85132b +SHA256: 9b22a58094ef66fac44d6e4ff27efab712dc0dcd4560740b0f629111abc754b2 +SHA512: 2cc72b2caa07af7ddfde41725201d340aa34f229160efd0d24fdef0bd1920f399d22c298f5c9e9a4cf728c25db53832cae8081bbd7ecbfd65048d180c4d43a68 +Description: Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic runtime common files + + +Package: intel-oneapi-runtime-compilers-common +Architecture: all +Version: 2022.1.0-3768 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 25 +Filename: pool/main/intel-oneapi-runtime-compilers-common-2022.1.0-3768_all.deb +Size: 9708 +MD5sum: ade38c916cf020726ae72eff95b2a218 +SHA1: 66090a7160fbfa56d092392a58557cd7ecc5e118 +SHA256: 7347588844ad9e86291586c049185381ec960cde09b6fd220c626fb865f8865c +SHA512: 36d431f452291cc3ccc5568c5d33f043ac7c3159b4f47794c93f77a188327436357eec671153f2387e50ebed72ed5735e0628967ada6127eb6371006c2efbb97 +Description: Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic runtime common files + + +Package: intel-oneapi-runtime-compilers-common +Architecture: all +Version: 2022.2.0-8734 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 52 +Filename: pool/main/intel-oneapi-runtime-compilers-common-2022.2.0-8734_all.deb +Size: 9704 +MD5sum: 765b78d00280f680fb3b319d975e2aa9 +SHA1: 9d8e17be1a17adbd2df87cafe52698647dd16e95 +SHA256: 31aec0c81e656f4f4dc7135341678e4d122c2c99c9f2316725e9b7799a8526e9 +SHA512: 113df57f8e37da651ffcbc3b4709b2dacbb2d1595d8dfc79797cd779c1077612bc7f7d1358e08ebae1ba751a07c0b11e2e0ba02ac3a7d6f00e82490673691e52 +Description: Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic runtime common files + + +Package: intel-oneapi-runtime-compilers-common +Architecture: all +Version: 2022.2.1-16953 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 52 +Filename: pool/main/intel-oneapi-runtime-compilers-common-2022.2.1-16953_all.deb +Size: 9712 +MD5sum: c63cc1500d2e12de9e5f0fb80aec3f33 +SHA1: 476e61f649f1f86563178224382742dfe32cf9a4 +SHA256: eb36e9913058abb128e3137bab3549f0a594ae982a8d06fdf29235d35b19ad8d +SHA512: ef31d04b94639218d11aa26b130a1e5c276f6bed85cc2dde2325603f555c0f588e52a023fc07669340c9e8eb629f636fd10ee4b9f6c718540bf44d764e8cb596 +Description: Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic runtime common files + + +Package: intel-oneapi-runtime-compilers-common +Architecture: all +Version: 2023.0.0-25370 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 52 +Filename: pool/main/intel-oneapi-runtime-compilers-common-2023.0.0-25370_all.deb +Size: 9708 +MD5sum: aa38b942f622ca47341e82e0abf2ca24 +SHA1: fb528c91653fd2a788445610129abd01c5452b80 +SHA256: 40da8f3a627b14b333c8992659502e52162fb71267d032f94d5952a1ba5b5571 +SHA512: 15fe21d88f4ba86b7e21b67e50f9b90dbf63fb1ceadbf76cec920a36cf196c24bc432fa2df744ae470d1a9e96fabd60e03b18f521552f9d5ad6f0f457079b183 +Description: Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic runtime common files + + +Package: intel-oneapi-runtime-compilers-common +Architecture: all +Version: 2023.1.0-46305 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 52 +Filename: pool/main/intel-oneapi-runtime-compilers-common-2023.1.0-46305_all.deb +Size: 9720 +MD5sum: 9f3ac39d72d0c25e5c84de35f154357e +SHA1: 983ee83093e23183f9168b0b6d05a73864742b49 +SHA256: 4610d4f428eb008eae65ac589c853fd0629ddd8e0ed126b0882e0aafc3767291 +SHA512: ee721589499a36bbd75f29dcabb2b7bdd787c7d500a85cbc73a8f10f3b03e9053d717f465a2d0abfd81372a69fdbbbf3c480f1f2c49b551132c1c3da967d754e +Description: Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic runtime common files + + +Package: intel-oneapi-runtime-dpcpp-cpp-common +Architecture: all +Version: 2021.1.1-189 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 62 +Filename: pool/main/intel-oneapi-runtime-dpcpp-cpp-common-2021.1.1-189_all.deb +Size: 11044 +MD5sum: f51a796c01824b392b5be8386901deff +SHA1: d55e0b39240b214ed35f98ddc091a1903dac1530 +SHA256: 601b056090820b6466f21107e3e873c13210a1acab631a294bbaccdd461027fe +SHA512: 7f39ad9d9589c35093f2f98d3d68a49b64ce5c980fa14eeae169e8cf8057af1188fac94dd09e6a380af9bf5362d4b60e57bf2376ef7f2cb1ef2e9f9621ac39a8 +Description: Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic runtime + + +Package: intel-oneapi-runtime-dpcpp-cpp-common +Architecture: all +Version: 2021.1.2-266 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 62 +Filename: pool/main/intel-oneapi-runtime-dpcpp-cpp-common-2021.1.2-266_all.deb +Size: 11044 +MD5sum: a72f3bc4e575a47e25878c6da5e3b87f +SHA1: 219db320fa8286d887a50eca6c81bdddbf68997a +SHA256: 987644037cb604949ad386f3f5c06b894c00692d0b9ce5a85b802f95e5d1434c +SHA512: 91c7507ec080eb7e24dd4a7672fa199e8992b5b7f930b8f4aa6351c1f1bfc830bc6cbac1fdc421ba9d3691c7958e0e0dad6897c37609b7b03239aa2afb049354 +Description: Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic runtime + + +Package: intel-oneapi-runtime-dpcpp-cpp-common +Architecture: all +Version: 2021.2.0-610 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 69 +Filename: pool/main/intel-oneapi-runtime-dpcpp-cpp-common-2021.2.0-610_all.deb +Size: 12270 +MD5sum: 5cb01251e349a0b9c88dc6f75cba258c +SHA1: 5cd38ba386e4b87044d93d51193eaf15a81fe06d +SHA256: 4796141614b771f6dd365aef507f277304acae8730f59e50cfd474f283974811 +SHA512: 333f12252074f3f025f4b3ad46ba73e2f1fb1db220148b5b302f73cc3579326e60e871c825ea8937146179b6899536135e4de5e7348527e2004b50e92386a098 +Description: Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic runtime + + +Package: intel-oneapi-runtime-dpcpp-cpp-common +Architecture: all +Version: 2021.3.0-3350 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 65 +Filename: pool/main/intel-oneapi-runtime-dpcpp-cpp-common-2021.3.0-3350_all.deb +Size: 11786 +MD5sum: a7fb903fda34b0fcd9220a32bbcc4b28 +SHA1: e6d65a07ab53f8231d007238ece3ec0d19191e3d +SHA256: 1c09587845df2961ae0981a181e66155d1e648cf722b5f6be6da6279ac067ceb +SHA512: 189d8dc1c5dd11965e26de03bae136c85703564435f6badf047f9d9f28a837de7c6f200cf5b75734a475a16919748f1cfdc68dd4ca624bf2d3d8ece7c4adb065 +Description: Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic runtime + + +Package: intel-oneapi-runtime-dpcpp-cpp-common +Architecture: all +Version: 2021.4.0-3561 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 65 +Filename: pool/main/intel-oneapi-runtime-dpcpp-cpp-common-2021.4.0-3561_all.deb +Size: 11786 +MD5sum: 36706fc2956060d9767edba3d22ed401 +SHA1: 7162e39a9b4e46373de878d1fde594f189e28595 +SHA256: ff8303b4b4da9f03302cef00fb275c875a3876f34c242813707d461ad4c9628d +SHA512: 1666e55add280c7a1541fcf88b9dd57362c08a1bc1dfc0d67bc7008d3e4bd68ffe2cba5cc001042941de834497368593b8a04d8f823b606fc32ab2acd27211ed +Description: Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic runtime + + +Package: intel-oneapi-runtime-dpcpp-cpp-common +Architecture: all +Version: 2022.0.1-3633 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 68 +Filename: pool/main/intel-oneapi-runtime-dpcpp-cpp-common-2022.0.1-3633_all.deb +Size: 12202 +MD5sum: 864cda64e584872a3a11af9b317d000c +SHA1: 4e29bd7d1ff33065332f8d90136ab57fe2576fb5 +SHA256: 9cd0957a75f5ad45b208f2c1c8ee2aa032e335ada9193ca69f8ac5a7cb548d02 +SHA512: fba0543902e6ca65ee7b01b643db79a0c0fb80687d3189e6623d195d6a909762b707bcf4f7dffe3b78617c3b40c2541207354a4a73ed90b98fbd33162b489e64 +Description: Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic runtime + + +Package: intel-oneapi-runtime-dpcpp-cpp-common +Architecture: all +Version: 2022.0.2-3658 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 68 +Filename: pool/main/intel-oneapi-runtime-dpcpp-cpp-common-2022.0.2-3658_all.deb +Size: 12210 +MD5sum: 3484c8c5875639675402b7d41bdd6f7c +SHA1: db75ae5e872602f7fdd5197563ab67a41306d73f +SHA256: 82daa59ed26efd8961019d438d06f3674bcae23d5465fe849d84e9ba5758221f +SHA512: d83c16fe0365ce6379de1259239686e4852f0518f8661a25e2b3825ea4e999cf961123237b6c6f0fab3d763d20f1d81e5e2a6c5a96165951110c81931033a96c +Description: Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic runtime + + +Package: intel-oneapi-runtime-dpcpp-cpp-common +Architecture: all +Version: 2022.1.0-3768 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 71 +Filename: pool/main/intel-oneapi-runtime-dpcpp-cpp-common-2022.1.0-3768_all.deb +Size: 12862 +MD5sum: 878a5715010ae974b67c38ce7872184f +SHA1: e3783f7e26b5faeacaf47db849a4a1c4dea25232 +SHA256: 17e7303b55a598ed3f37719a3cc41508e11290d0ef1ede91d9cc809e2a0409b4 +SHA512: 2dd7307ed14de6afea7b75e4350fbbc9d2c41d5baa194d270fc2d3f738e4d941bd0f1b2037838548f1d49578987cdc75b407fa90670a87ae4435bb45731e48cf +Description: Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic runtime + + +Package: intel-oneapi-runtime-dpcpp-cpp-common +Architecture: all +Version: 2022.2.0-8734 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 102 +Filename: pool/main/intel-oneapi-runtime-dpcpp-cpp-common-2022.2.0-8734_all.deb +Size: 12862 +MD5sum: 1c1816d84f30940ac210f305a2d113c0 +SHA1: e8cffa17e71f084f1508cde4c7630603281c33a7 +SHA256: 46cbcf3633c50fb73929a7bfbfa7629b553922a50bb899f371e2d74c2acb1303 +SHA512: c69f94cf59a6ea6aea4223ff09300ba5099eb7f09412c1e02fb2ade4f1f484c2839c44417fa590b289803aa51fc18c643e639b8968e6fba3a935f5b58fc6ec4c +Description: Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic runtime + + +Package: intel-oneapi-runtime-dpcpp-cpp-common +Architecture: all +Version: 2022.2.1-16953 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 102 +Filename: pool/main/intel-oneapi-runtime-dpcpp-cpp-common-2022.2.1-16953_all.deb +Size: 12866 +MD5sum: c496dc0eb3e17549377ab5d1a9892c62 +SHA1: 974b32aaaecfcf359b53d3f3fe37bb8c73866c41 +SHA256: 905b6dc194785649339d2690c8ea99189d92f816878c58feec1769d713485ca6 +SHA512: b9b72bdba5734c1cbe3e80ff3a3e393e808ec679a1439982dee2d400d4b087c3ca6cf8fa0c98ecad1bdafa4ee4108504f65ec740cb68245885d659e7af31d575 +Description: Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic runtime + + +Package: intel-oneapi-runtime-dpcpp-cpp-common +Architecture: all +Version: 2023.0.0-25370 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 102 +Filename: pool/main/intel-oneapi-runtime-dpcpp-cpp-common-2023.0.0-25370_all.deb +Size: 12886 +MD5sum: 4de4a2838ec261b825009f7f3c028a5d +SHA1: 50a6f2d78e3d61c7876d1a06c8d7dd17b84c0278 +SHA256: 0ab43f8a24e84fa094f01b2ecdc0d74394273e60291f2f725bd49734dd4d0050 +SHA512: 26581c120b8cad75fe39cb69040146b035d9c72f369d86979eb81efe9dfb83570e7f6405a50c513aa4433d4e9ee16bca71676ed23587f42fa3fe199e4129620e +Description: Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic runtime + + +Package: intel-oneapi-runtime-dpcpp-cpp-common +Architecture: all +Version: 2023.1.0-46305 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 102 +Filename: pool/main/intel-oneapi-runtime-dpcpp-cpp-common-2023.1.0-46305_all.deb +Size: 12890 +MD5sum: 42a8025a9defe18961b2dfaf3dc90b02 +SHA1: 48aa7aae445a130dc0bf13c09041ac0dcf522b64 +SHA256: 45d10a4d05cec3b06652294d1592013ac7f3d48d537248a069762c9f1c80a0d3 +SHA512: 8c1c603cde053e75c071f722f7d18e964551726935e93658410b36ead596b5561e1b9bb0ee1d242e75f2c2ab71488e9989ec5056f9c55c66b29ece2d8e197c95 +Description: Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic runtime + + +Package: intel-oneapi-runtime-fortran-common +Architecture: all +Version: 2021.1.1-189 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 62 +Depends: intel-oneapi-runtime-compilers-common +Filename: pool/main/intel-oneapi-runtime-fortran-common-2021.1.1-189_all.deb +Size: 11054 +MD5sum: 4338ee4d601c2817141bc17069159ba4 +SHA1: 996808a2614028993d00fac102f44c4842718689 +SHA256: b216b3c3ae92596a5d39c9bee09cf5f5672e51d06466eb0f4fae9a2d79310179 +SHA512: e0d2beccc08243bb245928ccbeea0be7bddde465028116a24125e3e8caab774b8bdc97e938d411a311bf658e46873ca82a82ea1d9e499ef795b84e7176044c79 +Description: Intel® Fortran Compiler (Beta) & Intel® Fortran Compiler Classic runtime + + +Package: intel-oneapi-runtime-fortran-common +Architecture: all +Version: 2021.1.2-266 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 62 +Depends: intel-oneapi-runtime-compilers-common +Filename: pool/main/intel-oneapi-runtime-fortran-common-2021.1.2-266_all.deb +Size: 11058 +MD5sum: 8513d738dca7cea4276107f9dd1be92f +SHA1: d3708905d0bddb43a294d9b5aa821dd749777606 +SHA256: 0df99a56cf38fa689ff940084f57df590fce9b94324473008d288b5802aa2a4b +SHA512: 1b0dba654f364c272bd80c595dda8000cf5c8b94e5628b5e7eeff33497a35842211d8a7d0d754819f79a9b132a4517a37951cd0b7a4181e985e2c4065b5b23aa +Description: Intel® Fortran Compiler (Beta) & Intel® Fortran Compiler Classic runtime + + +Package: intel-oneapi-runtime-fortran-common +Architecture: all +Version: 2021.2.0-610 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 69 +Depends: intel-oneapi-runtime-compilers-common (= 2021.2.0-610) +Filename: pool/main/intel-oneapi-runtime-fortran-common-2021.2.0-610_all.deb +Size: 12290 +MD5sum: 45b52ff1ce1593ac15223950471a4f37 +SHA1: 12fc232b5542debb7f4b18d43d871142a3c561f9 +SHA256: 5f33115fa787c58c71958b2ee8c28ecebd30c288255e72ac95f3a7b6bcafb12a +SHA512: af162b811d66018e2c063d939b70fa18d73b8d28406a682a1c86eea489f3693032454551dfee0f8f54f64027437211d5e3a2316e65d5f5e7739494e84f42f156 +Description: Intel® Fortran Compiler (Beta) & Intel® Fortran Compiler Classic runtime + + +Package: intel-oneapi-runtime-fortran-common +Architecture: all +Version: 2021.3.0-3350 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 65 +Depends: intel-oneapi-runtime-compilers-common (= 2021.3.0-3350) +Filename: pool/main/intel-oneapi-runtime-fortran-common-2021.3.0-3350_all.deb +Size: 11806 +MD5sum: 7d22b73daac90183459b48349b2ff016 +SHA1: 84e0165a15cdba7af3e15cb1827ae3c8ebc53fc8 +SHA256: babdb3ecea03364f7af6771c42aee9aa6c15bead82128c63626a43aa1d30dcaf +SHA512: 023d4acadfaed78cc60876c50a68210a6f5fca1d2781bb0f1628b7c956e2320129ac01c260982b84ba7fb8b59c76bb95e7a99d625720aeaea6ff51eee746fa7a +Description: Intel® Fortran Compiler (Beta) & Intel® Fortran Compiler Classic runtime + + +Package: intel-oneapi-runtime-fortran-common +Architecture: all +Version: 2021.4.0-3561 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 65 +Depends: intel-oneapi-runtime-compilers-common (= 2021.4.0-3561) +Filename: pool/main/intel-oneapi-runtime-fortran-common-2021.4.0-3561_all.deb +Size: 11810 +MD5sum: a268042d01a773943721248011ba14c8 +SHA1: d71c90a1bf20f499c12a0bd7842ea65841b6c9b0 +SHA256: d1f24aa38bffb094d71610fae774e313e51559fd475e394faa9d83697f6fc630 +SHA512: cb515fd583d60e1030233289eead8acd549c97114ab03469133bdf3acaedd59de8cc479effe08aac532d2808d0f4d2d85f0b6b3f6a9108aa6302752bacdb5586 +Description: Intel® Fortran Compiler (Beta) & Intel® Fortran Compiler Classic runtime + + +Package: intel-oneapi-runtime-fortran-common +Architecture: all +Version: 2022.0.1-3633 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 68 +Depends: intel-oneapi-runtime-compilers-common (= 2022.0.1-3633) +Filename: pool/main/intel-oneapi-runtime-fortran-common-2022.0.1-3633_all.deb +Size: 12220 +MD5sum: e98bdb4dc1ad8018b944dd7492274e12 +SHA1: 054c87b8b37bc00e1a254a4430e598283238bcd5 +SHA256: f803f055a89464a777ac20697479dd09a2b9f058fa29047218fb8e7ae766b3e6 +SHA512: 7bbae956d8d49e13d27eac4b4d0c494c132dce51a66a8c54edd076aad69120dab8795051e6b40a73e543b0da97427672269dd33d2119c553ba7648fc3d599822 +Description: Intel® Fortran Compiler & Intel® Fortran Compiler Classic runtime + + +Package: intel-oneapi-runtime-fortran-common +Architecture: all +Version: 2022.0.2-3658 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 68 +Depends: intel-oneapi-runtime-compilers-common (= 2022.0.2-3658) +Filename: pool/main/intel-oneapi-runtime-fortran-common-2022.0.2-3658_all.deb +Size: 12220 +MD5sum: 50ea86a129b93094cbe588df989a6cc9 +SHA1: 67de682ef63c8346b9fed5d08efb46db8d3be325 +SHA256: f67288a0714524865cb589437f5486dbe67d7d6d29460727936cd87d3df6f1d8 +SHA512: dbb1eb747f310d4b41436d331cd9ba5cd245afa5dc697303381c056e632256d047c06008cc31af4f74793811fd41946fae84408562a0e1147173cf56535ac1f7 +Description: Intel® Fortran Compiler & Intel® Fortran Compiler Classic runtime + + +Package: intel-oneapi-runtime-fortran-common +Architecture: all +Version: 2022.1.0-3768 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 71 +Depends: intel-oneapi-runtime-compilers-common (= 2022.1.0-3768) +Filename: pool/main/intel-oneapi-runtime-fortran-common-2022.1.0-3768_all.deb +Size: 12870 +MD5sum: c82d84d395b6075f4276cf484d8cb870 +SHA1: 26298d8d87e80eb9eda7756a1a40fb3f559dbcd7 +SHA256: 1e42ffaa2d67281085c887df2a5d0a1a515c220e14033acc677c40f017e2142c +SHA512: dc44d6e8cdb6f4f97feca0fabfecb946756a48ef35210073a0dd76e0c6f3e03f0ff20f871e9e11a2a633858c6f5e3a818ed4afa7ed6d342594c3acaa13e3587e +Description: Intel® Fortran Compiler & Intel® Fortran Compiler Classic runtime + + +Package: intel-oneapi-runtime-fortran-common +Architecture: all +Version: 2022.2.0-8734 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 102 +Depends: intel-oneapi-runtime-compilers-common (= 2022.2.0-8734) +Filename: pool/main/intel-oneapi-runtime-fortran-common-2022.2.0-8734_all.deb +Size: 12862 +MD5sum: 8aeb73b3614d85ade3b0e59d912eccd9 +SHA1: 1a263a9709c2312dde57b4126c2ad3078ab36cf9 +SHA256: e3720603ee9a7fcadcb57befa74ceae926859465c8e536b806ea666435567f25 +SHA512: 2462c66102be30089c20a3d12006cb2675eb896f2f420cd2cea325b9315026887a5bf5f34541ebce098b2c25f6b91973089b2f5fb7ee9b34b1d709ab8e6369c5 +Description: Intel® Fortran Compiler & Intel® Fortran Compiler Classic runtime + + +Package: intel-oneapi-runtime-fortran-common +Architecture: all +Version: 2022.2.1-16953 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 102 +Depends: intel-oneapi-runtime-compilers-common (= 2022.2.1-16953) +Filename: pool/main/intel-oneapi-runtime-fortran-common-2022.2.1-16953_all.deb +Size: 12878 +MD5sum: c0fa4269993f1bcd5d436855e5773780 +SHA1: b8555c93d6c801392d669c1cb36535b673ba5294 +SHA256: 03791fafea479d7809b3a7b8ae80dd826720af3a4fe7aac603b110c7ba8567ff +SHA512: 5fd2f199b642113cfaba32858cfaaf59d66b3fb0e7de70fad776f8d64ce70439894c284d4ca033926d59b92ba590693c4a6a4bf02e76bf33053f97b367f4a167 +Description: Intel® Fortran Compiler & Intel® Fortran Compiler Classic runtime + + +Package: intel-oneapi-runtime-fortran-common +Architecture: all +Version: 2023.0.0-25370 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 102 +Depends: intel-oneapi-runtime-compilers-common (= 2023.0.0-25370) +Filename: pool/main/intel-oneapi-runtime-fortran-common-2023.0.0-25370_all.deb +Size: 12886 +MD5sum: a5e7f6ca0b2f2da2d16a82b59ad3354a +SHA1: 234b12fbe0263d5137f79baccf4b5080938352d5 +SHA256: 5cbd760b73b22724ac870888d7bc3685e95dcf9b088aed95c848971b70b506fa +SHA512: e07d4dadd098ffb553f5280ebc8af1118a6f938244fba41011af87844a09251b623946175ff0f19fb87c9ce10f774e296ebb5fdbb23ba7cee7802465ede5bb8d +Description: Intel® Fortran Compiler & Intel® Fortran Compiler Classic runtime + + +Package: intel-oneapi-runtime-fortran-common +Architecture: all +Version: 2023.1.0-46305 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 102 +Depends: intel-oneapi-runtime-compilers-common (= 2023.1.0-46305) +Filename: pool/main/intel-oneapi-runtime-fortran-common-2023.1.0-46305_all.deb +Size: 12890 +MD5sum: 3d5bb8d47a08a3b9d9671beea3c3efcf +SHA1: e965a1d27937c914cfc4b67e530a692315249d6d +SHA256: 5d55e8a1e22ec39b8075e21c36638b16d6e18ae9ce96fbf2dca7dc2788d9070f +SHA512: e4bf580f88e6994e256a764430c2832dbb56ae4c702ccb188c00cf352ee9afa3ae8c744ce266dc50b69c909027c719e59f7d7c2b94aa14f3491970aa2ccc66af +Description: Intel® Fortran Compiler & Intel® Fortran Compiler Classic runtime + + +Package: intel-oneapi-runtime-ipp-common +Architecture: all +Version: 2021.1.1-47 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 5 +Filename: pool/main/intel-oneapi-runtime-ipp-common-2021.1.1-47_all.deb +Size: 3900 +MD5sum: 37ac13219d86564d729be8d513a3a4b0 +SHA1: 85dd79fbd9c492d3f45952f659e6525a77bb6dfa +SHA256: f4e5ac109614b47a34aeca9c587c1ca003aa51f67cd72c6edd2c3cb9f2e50f53 +SHA512: 3741eb93ce352fdadd788e770a2ed5dac2ba8d6800a126eff6fe3d1c19363c855ce9aa02bc86e360978ece495a4fe5d7f051673ef1e02a12a4fe27cc9e5587dc +Description: Intel® Integrated Performance Primitives runtime common + + +Package: intel-oneapi-runtime-ipp-common +Architecture: all +Version: 2021.2.0-233 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 5 +Filename: pool/main/intel-oneapi-runtime-ipp-common-2021.2.0-233_all.deb +Size: 3880 +MD5sum: 86f6a34966b0ad4bfac55b8710c81dfd +SHA1: 37538d2ce82abd1f5a6470371a6c1f7a0825b9fe +SHA256: 983b4901df76acc129010a021dfff9f7e2755ad9f05aa114b9e9c8ddc8da05cd +SHA512: 55c4d19e433e015bb0c536dbe100cfd4d9072ea108a264f8e638ed3d65d053286e8b72d93b088b20342d55821c6c033d987ccea5fff537204067c4adc3fc0b04 +Description: Intel® Integrated Performance Primitives runtime common + + +Package: intel-oneapi-runtime-ipp-common +Architecture: all +Version: 2021.3.0-333 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 10 +Filename: pool/main/intel-oneapi-runtime-ipp-common-2021.3.0-333_all.deb +Size: 4462 +MD5sum: f746c7e372a83897e680297b8edfda7b +SHA1: 2ad36ebb77e76497faa23938513c46a96cbdc233 +SHA256: dc733ccc61b7c74a3ffa1c9f63a321e678cba8e09afd1c4ac882954d4602ed97 +SHA512: e97186e80178e3042692f3d7705b8170f154b419863d56688d2d85ee79321b8026ed01a46eb6df94c1ec14993fe30e8a19fc36708748b383a09a2a67fa768f94 +Description: Intel® Integrated Performance Primitives runtime common + + +Package: intel-oneapi-runtime-ipp-common +Architecture: all +Version: 2021.4.0-459 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 23 +Filename: pool/main/intel-oneapi-runtime-ipp-common-2021.4.0-459_all.deb +Size: 7912 +MD5sum: da0832ab82003fc5692600531eb13458 +SHA1: 38d0529a788a8ea8033b96c2b4b361bca1eaa9ac +SHA256: 46808f3e3eb2bb9d9b4169cd00be319b246f0ab2ba590925e776ef45d37d617f +SHA512: 247431aa6f0943dd3397976651df468e4677bbe8099d8ce42dbc452d6010a77eb957441318891b9492262cbe3ff512666499f7e1a443b96f709770eadfe4d663 +Description: Intel® Integrated Performance Primitives runtime common + + +Package: intel-oneapi-runtime-ipp-common +Architecture: all +Version: 2021.5.1-522 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 23 +Filename: pool/main/intel-oneapi-runtime-ipp-common-2021.5.1-522_all.deb +Size: 8302 +MD5sum: c2c72bcd0fe1435a426c6bf0ee080b37 +SHA1: 59086e9b272a8c8e446677192477435e80815471 +SHA256: 1aac41633179e824567b90afd39b8405db30df79a027421568df019b2b51bdd1 +SHA512: 9328497871a9de0766f48272f686cf98d5e23f58656515da6e10c1b404d08826a4115f2b2ba9e63a2fd0ed4a4e7fa8cc21b1c79f72a5cbc79ee8466bc2860e9e +Description: Intel® Integrated Performance Primitives runtime common + + +Package: intel-oneapi-runtime-ipp-common +Architecture: all +Version: 2021.5.2-544 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 23 +Filename: pool/main/intel-oneapi-runtime-ipp-common-2021.5.2-544_all.deb +Size: 8296 +MD5sum: 3990ac2e1a6a9ed1d935742ba978a51c +SHA1: 7930677d98579f7709a5ce73c1d4925ec5a333ff +SHA256: 2f117d23efe390ba7bc53603589579b2046901798f09d2e8c442631b59b61714 +SHA512: 37ef39c49c4bfc2b03b90278c12a464de6505c7c993be9e77f859463e737e9f8c44a59308381db4955bddfbe1ac5c18ffbc5b5e0e51cfdb4b23d9de1c3dd39c3 +Description: Intel® Integrated Performance Primitives runtime common + + +Package: intel-oneapi-runtime-ipp-common +Architecture: all +Version: 2021.6.0-626 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 24 +Filename: pool/main/intel-oneapi-runtime-ipp-common-2021.6.0-626_all.deb +Size: 8512 +MD5sum: 1cd60630f262c5bb5b5d46f0107f2465 +SHA1: f6d3a99538e7c6bb2e59e277e5c221bd2b864081 +SHA256: 77bc63d114b4e61a1ca900261dfe206f76fe3cabeac53f8e1242dbc6873b7edc +SHA512: e94f3e3f019506dc860c71d61dae493a2437f73e186155c33354d2d7d0d766cd1e931860093a03c043861f172e466234dcfb127ba5fb6f54218a20c3d5cbe9bf +Description: Intel® Integrated Performance Primitives runtime common + + +Package: intel-oneapi-runtime-ipp-common +Architecture: all +Version: 2021.6.1-8749 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 51 +Filename: pool/main/intel-oneapi-runtime-ipp-common-2021.6.1-8749_all.deb +Size: 8512 +MD5sum: 88dc1011524b950f899ae5d45b17ef57 +SHA1: 59c95637799184f912326542fecf1e66c01e9bbe +SHA256: 8679a68f0357df7d3cc788f7c28cd1d8f6fe98f4ead78db76be89878e4621814 +SHA512: 7a31f4c4791d3af370f9a542650def071092f51e5beccfb31c164be3af96f6babfd4dc17f6586449701cf1fb16557792d8978de5c057f6905f42b954ae6b08ff +Description: Intel® Integrated Performance Primitives runtime common + + +Package: intel-oneapi-runtime-ipp-common +Architecture: all +Version: 2021.6.2-16995 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 51 +Filename: pool/main/intel-oneapi-runtime-ipp-common-2021.6.2-16995_all.deb +Size: 8520 +MD5sum: 837c7ade34aad809127748c9ac2360e8 +SHA1: d152260bb0adf85ae608dbba9f59c430387cb5aa +SHA256: 4a33aec8135729f4de4fc5b2b909b5237a0fc88f29bbbe756af519b937a3d879 +SHA512: 63d7a2e0b3f41b023fc6f2d8eda9a45f7872ff58528794830c670b15b7e0854a223b091ab22efb57db80eadb3ee26143ab19394a3f28827ee7eefa95ea4905e6 +Description: Intel® Integrated Performance Primitives runtime common + + +Package: intel-oneapi-runtime-ipp-common +Architecture: all +Version: 2021.7.0-25396 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 51 +Filename: pool/main/intel-oneapi-runtime-ipp-common-2021.7.0-25396_all.deb +Size: 8596 +MD5sum: 3e0fe22741aeaacda5a3c56fa9e1b327 +SHA1: 9ed244cb7b64824d05aaa32378a15a70240a7384 +SHA256: 3bc7f2258e115e1e5ad6457f404b2cf3e75fc4f33acf2ceed3098052bb875bac +SHA512: 265f312166345550c3748675fb6079e8c814160bdf6babdf70e71122ffc1c9b7345a06c7a924cfd80e5563c0498d6dbc22d849aee92e65cf052756d08be47ddc +Description: Intel® Integrated Performance Primitives runtime common + + +Package: intel-oneapi-runtime-ipp-common +Architecture: all +Version: 2021.8.0-46345 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 51 +Filename: pool/main/intel-oneapi-runtime-ipp-common-2021.8.0-46345_all.deb +Size: 8588 +MD5sum: 390378cce1dee22930d600520c5d3468 +SHA1: 1d3920f566d38100f24de754a9f79f250de8c3f6 +SHA256: 85564f63c6905fee511d75e2a99cdbf28c99a1e464892dd82222ec7e5bfa3e45 +SHA512: 30afdf696074b1b4d4f5655293e513098af0e65b5a6a6839fa38127e4cb37f70565e3ac6a990528d71b1510e7b7b2eafcf6aae0f145f64c39b7f76ccfc693ff9 +Description: Intel® Integrated Performance Primitives runtime common + + +Package: intel-oneapi-runtime-ipp-crypto-common +Architecture: all +Version: 2021.1.1-54 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 5 +Filename: pool/main/intel-oneapi-runtime-ipp-crypto-common-2021.1.1-54_all.deb +Size: 3888 +MD5sum: 5b76d96c3aad8f10d37e43819dc2fd03 +SHA1: bc7fbe2cef10847187c47d269c8b8fac6296dead +SHA256: 7ced82a58c08317a6476c50cfa7a23f19640868e4158960b0ec11bc39cc5cede +SHA512: 38ee30ca507b8a5471d8a2e4c650817fbf572fc10adc6c01f896cc28ef5b8198f93c7b2d9ce4a806e05503c820876b430e28c3d3393cc399b88bdd13f3a1d265 +Description: Intel® Integrated Performance Primitives Cryptography runtime common + + +Package: intel-oneapi-runtime-ipp-crypto-common +Architecture: all +Version: 2021.2.0-231 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 5 +Filename: pool/main/intel-oneapi-runtime-ipp-crypto-common-2021.2.0-231_all.deb +Size: 3892 +MD5sum: 5357f0acb9a6fa5d14a9a5d6a1c7e369 +SHA1: 76accecf43fd06dd7656fc7a1048de095cfccb92 +SHA256: 854e01a6367c5dd379210bb39fde0b342030b85efb0446df8bdb06563416cf83 +SHA512: 2127158b3c550468aa9e1a65e52911de889b7ae62cd0e2a239cec2e86031c32c45400943fa3cb9c90074c29cb7b7ab6667f04b1d8994c9b0881579725e246c3b +Description: Intel® Integrated Performance Primitives Cryptography runtime common + + +Package: intel-oneapi-runtime-ipp-crypto-common +Architecture: all +Version: 2021.3.0-315 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 19 +Filename: pool/main/intel-oneapi-runtime-ipp-crypto-common-2021.3.0-315_all.deb +Size: 8128 +MD5sum: 7b7821cea3eac368646ed85fc670f3ea +SHA1: 29a9c4ae20b6edca8a43b9bc204ba574ee884901 +SHA256: 3421f60543c8bddf9885e7b8dc4f99c7b573789dd32013966be3706c3e7fbafd +SHA512: 7186f897cb17fef6a3da0f11df340c8e287b162b45e76d2fa77db9914b50c04a712277b5179dc93d3bef0481aab6b10ee5e87d29038bc8727d289214e64fb90f +Description: Intel® Integrated Performance Primitives Cryptography runtime common + + +Package: intel-oneapi-runtime-ipp-crypto-common +Architecture: all +Version: 2021.4.0-401 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 10 +Filename: pool/main/intel-oneapi-runtime-ipp-crypto-common-2021.4.0-401_all.deb +Size: 5478 +MD5sum: 8f7132c62582848ac73e76fc590bb332 +SHA1: b353c9a63fedc62bf18b01f6b616b7ddb2d78f0e +SHA256: 3d4d342da06e4eeb17dd82bca93c53d647910046e2206ce9b2bf8fae3ed15296 +SHA512: c80c0f093849608b6757ec68c09a80e2709493559929da8785cb519e65409e4a4508a7289a4ed342cc3a4555d7a9025e42a8538454acaa9825d3f36b9c279236 +Description: Intel® Integrated Performance Primitives Cryptography runtime common + + +Package: intel-oneapi-runtime-ipp-crypto-common +Architecture: all +Version: 2021.5.0-445 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 10 +Filename: pool/main/intel-oneapi-runtime-ipp-crypto-common-2021.5.0-445_all.deb +Size: 5306 +MD5sum: dd1cf98619e5d231956aa1cf77002c19 +SHA1: e9968ceb5f0543f3a71b6cf7b7820006a38ddb67 +SHA256: 183e31415c37e67fcad862d784dcd2840848e86355fef8701962f2f42311dd4e +SHA512: 37a3168cd67bc71e6f0af59cf4d720b04c0cac7817183750b6eae713981a64a0d584e402e1e25aa9f4e61f7780d5c629c0df9e01d326a5cc50afeaca3e1de5be +Description: Intel® Integrated Performance Primitives Cryptography runtime common + + +Package: intel-oneapi-runtime-ipp-crypto-common +Architecture: all +Version: 2021.5.1-462 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 10 +Filename: pool/main/intel-oneapi-runtime-ipp-crypto-common-2021.5.1-462_all.deb +Size: 5308 +MD5sum: 7b4d56f8a289cac1b82fcaeea72bd5b1 +SHA1: 69ecba89cfd77ae513f43fc9f614fb05e83d5611 +SHA256: edcee06ea1678be0a453cfb626c4c81d9cc19e50e45bfc65cb018824485460d0 +SHA512: f2ad854f1a5b594c2b2d7c19ac006d9e6ca5d7197edce9b2c72e74c4effeef066ab3a0b4455ff39e65bb39a560bdbd6c920fbbefa702799dc4be5825faab7fff +Description: Intel® Integrated Performance Primitives Cryptography runtime common + + +Package: intel-oneapi-runtime-ipp-crypto-common +Architecture: all +Version: 2021.6.0-536 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 10 +Filename: pool/main/intel-oneapi-runtime-ipp-crypto-common-2021.6.0-536_all.deb +Size: 5384 +MD5sum: 53fa1684117350d5d61d451a32390b89 +SHA1: 5dae87e1a519e8caf6ad05d87e2f8b3f0b87305e +SHA256: bcfeb761f37ba9355b00e5dea105728e59fb9fb7fc26127f555e77d780f6a36e +SHA512: 34a69f614823a900474296f06dfa002a6bce95e33d2168c37a554c614d381d69ed97642ca7452ab5fc864e7e96e271fc110c735f6ac32ef109d0d18a30697168 +Description: Intel® Integrated Performance Primitives Cryptography runtime common + + +Package: intel-oneapi-runtime-ipp-crypto-common +Architecture: all +Version: 2021.6.1-8714 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 38 +Filename: pool/main/intel-oneapi-runtime-ipp-crypto-common-2021.6.1-8714_all.deb +Size: 5392 +MD5sum: 2dc7a8fb9a49bb53ffcce3b14b219a60 +SHA1: a51f8631c69311bc7b22c67c56553244bec5dcef +SHA256: c9124df718bd8562cd0af59dbd993a81d7b52edb9c72c22fdfe520abfcf3e7f7 +SHA512: dea6d8236692e0a9ca50aef364154616b5acac06637abd7775be00cdabd976a4ccfc7305a0e1732d79c320f9b4c53bffbbd736f25b15a8c1030b477ec4456e67 +Description: Intel® Integrated Performance Primitives Cryptography runtime common + + +Package: intel-oneapi-runtime-ipp-crypto-common +Architecture: all +Version: 2021.6.2-15006 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 38 +Filename: pool/main/intel-oneapi-runtime-ipp-crypto-common-2021.6.2-15006_all.deb +Size: 5388 +MD5sum: 515fa3688d3be1d36970d9c6b7f04d7c +SHA1: a94cfc9a3ace62c9a90d41d024677cd32b7a4ef6 +SHA256: 7827d63cfd4c946aca0cbaf75c645284356f72a6310460bc8c6322e7e5d83dbc +SHA512: 9f48a66e1c6743aff92c516ae4bbb0d694ce532b85abb6cdadc2b0ca1dbab0785250868e6f1b06ed478b4cb81b3dd159d24aa0048aff6b197b33e02fb9882f88 +Description: Intel® Integrated Performance Primitives Cryptography runtime common + + +Package: intel-oneapi-runtime-ipp-crypto-common +Architecture: all +Version: 2021.6.3-25343 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 38 +Filename: pool/main/intel-oneapi-runtime-ipp-crypto-common-2021.6.3-25343_all.deb +Size: 5332 +MD5sum: adedaafcf5b3ea99f23911d55b91d952 +SHA1: eb60959b64b929c9203c99b5d27f5d03f7232225 +SHA256: 2bc31ea78ce73382e4ff7a6eb94a95cd97a475fad3ee0906dd9598a0510558b2 +SHA512: d4872bbac80c101023059333ca9fb1d2ef439b0e07699e3f9d2cf49b055848bba57d9d5c6ddbe2c05fc7c4f595b714d78f36551c8e089378ff1f98dd214d2c93 +Description: Intel® Integrated Performance Primitives Cryptography runtime common + + +Package: intel-oneapi-runtime-ipp-crypto-common +Architecture: all +Version: 2021.7.0-43492 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 38 +Filename: pool/main/intel-oneapi-runtime-ipp-crypto-common-2021.7.0-43492_all.deb +Size: 5336 +MD5sum: b608b25850400ba3dee82aaa550178dd +SHA1: ea328a96301a2e99e2b371a52826038c8dcff92c +SHA256: 2cf36161c14a188cbe9c3783012842f38c86364dc6d22165a373785bc21dc9a1 +SHA512: c91e45ec0105c8cdd7c511030d9bc5b903e22a93a1fc9e85a2491382f75bf082794827348d2a5b6951c1564568a8487726b67679b473d7f934baac3580ff2bdc +Description: Intel® Integrated Performance Primitives Cryptography runtime common + + +Package: intel-oneapi-runtime-mkl-common +Architecture: all +Version: 2021.1.1-52 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 87 +Filename: pool/main/intel-oneapi-runtime-mkl-common-2021.1.1-52_all.deb +Size: 14910 +MD5sum: 83b9917c9bd73a5787f876e7b723b338 +SHA1: 44e5f98a835012cc97f9bccd4307803d2669596b +SHA256: 083f165020d646a0ef1014b28da75ac753fd01cac70dfa52299dc1a81da37277 +SHA512: 58ccaf08e5196e235d82be84c2a88f6bc2853b20b1830b29b1e0aeba5db1ce89d160b8ea5786f99f96c54ddb9b43a5a2816f81a76105dc991166538adf9cb536 +Description: Intel® oneAPI Math Kernel Library runtime common + + +Package: intel-oneapi-runtime-mkl-common +Architecture: all +Version: 2021.2.0-296 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 97 +Filename: pool/main/intel-oneapi-runtime-mkl-common-2021.2.0-296_all.deb +Size: 18842 +MD5sum: 847128ef9ea85d8908507bb43dd8a22c +SHA1: 4c8c5cf22ba16d57613bf8056c8a9de3ce914144 +SHA256: 8c1cebddd4f5ec3aaaf8c4fdda71305f63993f50895a16e1ff84fe2a7111e863 +SHA512: 840466fe757cccbe1dc7bc9d39af964d594898fb8c51055434ab27714f7e85b81b3cbfa6207dc2fb03813e767073cbdd714d1bdd5b402783a2e29348f22d4e13 +Description: Intel® oneAPI Math Kernel Library runtime common + + +Package: intel-oneapi-runtime-mkl-common +Architecture: all +Version: 2021.3.0-520 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 97 +Filename: pool/main/intel-oneapi-runtime-mkl-common-2021.3.0-520_all.deb +Size: 18864 +MD5sum: 5f9429887f463b785d1dd88f7da2b02e +SHA1: c11e6e787553a829237a4effcca898e4a8bbbcca +SHA256: df1e3b7677257123cd5487654a0aa4e01a3753451b9ecab34764b188c1880ee4 +SHA512: 85bc6352b7e8aff231f6197f0e10f4cc9ccddebac26e9f24b2af6fe424bcd1f598b6a52b80fe5ee0e1cf11bbaf048724d4b9366bff3b6c7c0a046cacffb90f32 +Description: Intel® oneAPI Math Kernel Library runtime common + + +Package: intel-oneapi-runtime-mkl-common +Architecture: all +Version: 2021.4.0-640 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 97 +Filename: pool/main/intel-oneapi-runtime-mkl-common-2021.4.0-640_all.deb +Size: 18862 +MD5sum: df027372600c363c4fcf254a009d38bb +SHA1: f5ae4cec01558214e714063ba7bf84762685468b +SHA256: 70ecfe07b2f888f66938a0e207aa8cb0637eb8d4deb659f6f6d924b8ee70a76e +SHA512: 2bc42822b14a328847f2146b331cc7f7ce4a74259aa06bd81c61b396b490c3dfca3215f0d3618f9e687cf4f251b667ebc15ca361b5b185ad102349fbf7b2b8a0 +Description: Intel® oneAPI Math Kernel Library runtime common + + +Package: intel-oneapi-runtime-mkl-common +Architecture: all +Version: 2022.0.1-117 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 97 +Filename: pool/main/intel-oneapi-runtime-mkl-common-2022.0.1-117_all.deb +Size: 18978 +MD5sum: 291524a7cf74b89956283203ea180803 +SHA1: 0c212e6a3a7f79295d034f5c3cbbd266408f2771 +SHA256: bff8b2bfedbd09c9e6d0366cca3d4de80af521302bd5938fe6fa0128c6839041 +SHA512: 9a9f764e86d99a325522f672e796a8f20e5f3d06f956ded43813f7006bf93206ffe4e150f1d6bc6448d35e6b15ff643489434935708367ebdbe6ac168a979bf9 +Description: Intel® oneAPI Math Kernel Library runtime common + + +Package: intel-oneapi-runtime-mkl-common +Architecture: all +Version: 2022.0.2-136 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 97 +Filename: pool/main/intel-oneapi-runtime-mkl-common-2022.0.2-136_all.deb +Size: 18984 +MD5sum: c97e5a26c662098293164b6279b04047 +SHA1: 06d4888126a2788d18006e2c6e5fd205f638e49c +SHA256: 7e79dc04e2816c661801bb330c2ab21731ccdc70b7b75ed2d77737ecb2a65b05 +SHA512: 635ad3e0d9383a1b64b4a9ae2899a60730b851015dc84837da4f5e52a43191c799c5442b5ebc8dbae3b6c97d2fe3adf42013c14b9c6253f894f8407c61a26538 +Description: Intel® oneAPI Math Kernel Library runtime common + + +Package: intel-oneapi-runtime-mkl-common +Architecture: all +Version: 2022.1.0-223 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 93 +Filename: pool/main/intel-oneapi-runtime-mkl-common-2022.1.0-223_all.deb +Size: 19062 +MD5sum: 97ce9efce525509879445675a0c6097e +SHA1: 9e355f23dae0e108521a5553eb012a1c76e7f910 +SHA256: b2814f72fe78002c6de23f4fd8e631d39aec58924f0e15ae6dcd3e6655371a57 +SHA512: f1bc4f833d820aedfcfe46ceb7acbd98cf77d574e76dbd77e887d88e8d919f8c7414311d209e191ef4b2b46165c6896502fa2598440d564212133fe2573d09ba +Description: Intel® oneAPI Math Kernel Library runtime common + + +Package: intel-oneapi-runtime-mkl-common +Architecture: all +Version: 2022.2.0-8748 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 121 +Filename: pool/main/intel-oneapi-runtime-mkl-common-2022.2.0-8748_all.deb +Size: 19062 +MD5sum: df22b85001c1f3fc574a9cb627a8d60f +SHA1: da21186673207223ce73f9f57ddfd39d3324de7e +SHA256: 514434ba769cc870539046187d30fffe2279fe5fa764420ed6724e5aa45d8934 +SHA512: ef4cc5d2ab2290f68d2fd7522eeb590c61740aebe7fcdbf4b5f74b03cbb988a0a1a92fdbef4e348c00f2124b64282cc6b2d106b87ac188c20bbec3b03374e708 +Description: Intel® oneAPI Math Kernel Library runtime common + + +Package: intel-oneapi-runtime-mkl-common +Architecture: all +Version: 2022.2.1-16993 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 121 +Filename: pool/main/intel-oneapi-runtime-mkl-common-2022.2.1-16993_all.deb +Size: 19062 +MD5sum: 0624ad9c0ccc44513d34ff61dba11846 +SHA1: 9ee43ab745f833a4fc3971c18abd0a64c6bfa233 +SHA256: 679dec61bfb64b5890c365a11f0be884e9ffe369fc216b2f0c638669dd0bf988 +SHA512: a7d80bb47a0370f4c5bd03e829c88164ffde35b8bcdf2c2df45f4f04ad75b1acbced3f29e28c104667bd0af138eb57de33a51deca24ab3ba96ebc37302d9f79a +Description: Intel® oneAPI Math Kernel Library runtime common + + +Package: intel-oneapi-runtime-mkl-common +Architecture: all +Version: 2023.0.0-25398 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 121 +Filename: pool/main/intel-oneapi-runtime-mkl-common-2023.0.0-25398_all.deb +Size: 19106 +MD5sum: bca4f6f3159699f48a7f8d998699d255 +SHA1: 72e046f8c428f534deefde75530f106f1b545bed +SHA256: 5983af05c8f8873d3df772392b87612c09594ca0ee7c2f667857c517b0024062 +SHA512: 039959d2cb55d1c4f14cba342fc6a708dd257aedbdcaa81b523dd693bb73cb0e906abee212c653bbb17e0c7421172611069330216aa1a7d1a0d478cbb9621382 +Description: Intel® oneAPI Math Kernel Library runtime common + + +Package: intel-oneapi-runtime-mkl-common +Architecture: all +Version: 2023.1.0-46342 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 121 +Filename: pool/main/intel-oneapi-runtime-mkl-common-2023.1.0-46342_all.deb +Size: 19122 +MD5sum: b38e1db06450c5e2b524e36147bae0f5 +SHA1: d13bcb8d990a2fac22304973af801a9958045a2b +SHA256: bbbf554783cbcc3664aea0e52ff06852d06a87a91c3b22e32cb5f1d3145ad63f +SHA512: d5cced1a0334b114d2528deeeba9bf594f3f492ca343e5b45eed861ed42e1af9ace8d12f66154491dd27815ec07ce1cc0218c269dc842eef7dbb48df9eee6ca4 +Description: Intel® oneAPI Math Kernel Library runtime common + + +Package: intel-oneapi-runtime-openmp-common +Architecture: all +Version: 2021.1.1-189 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 31 +Filename: pool/main/intel-oneapi-runtime-openmp-common-2021.1.1-189_all.deb +Size: 9952 +MD5sum: 00a0ddbbf633b1d155f7066f033551d7 +SHA1: 73d6f39cd99fc4131361bf3558f9069c0cfd5f57 +SHA256: a4ae09c90481a1882570fecb2389b49a91507273b7ad80098f9b1e079a178f30 +SHA512: fc25579828042dfff047340e22c2d3aff59cc64a4003651e8fe83d56858148f7c51e60d11c1b7d359eae1d86869d0e469d141352563f51cd8152f16215b81c15 +Description: l_openmp.runtime.description> + + +Package: intel-oneapi-runtime-openmp-common +Architecture: all +Version: 2021.1.2-266 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 31 +Filename: pool/main/intel-oneapi-runtime-openmp-common-2021.1.2-266_all.deb +Size: 9952 +MD5sum: 30530073ff381934fe11c8955733b896 +SHA1: d87ecbdc96f01c2271201bfc7053f2852bbe920b +SHA256: 106480a96f74136457fc3bfdb2637dd9a5a74a21a2287bddde37160fc9269e65 +SHA512: 146a79d7fff10487947b21506b4527f49f4b11154df28b0d3d43bb7ba4af6c44dda869fef218a1dad0379bd95430122ebb590e505cd664b03e7357fa77b442f1 +Description: l_openmp.runtime.description> + + +Package: intel-oneapi-runtime-openmp-common +Architecture: all +Version: 2021.2.0-610 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 31 +Filename: pool/main/intel-oneapi-runtime-openmp-common-2021.2.0-610_all.deb +Size: 9958 +MD5sum: dfe84f2c72ea2dd000112ed309a128e3 +SHA1: aa4af37c0b705f057b999dce596b81915563f3d6 +SHA256: c2a7939ba411da8f06b3a1cf1d1e8cffd9c83fc39e571fe022f45dd7973b8436 +SHA512: 27300b484f687974cf289c3454af7e18cf075899fd9f3d570a681be2ea10846c437dfcb749aba63af4353e334ccefc1901b19df2cb9786728c418868808a4547 +Description: l_openmp.runtime.description> + + +Package: intel-oneapi-runtime-openmp-common +Architecture: all +Version: 2021.3.0-3350 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 31 +Filename: pool/main/intel-oneapi-runtime-openmp-common-2021.3.0-3350_all.deb +Size: 9958 +MD5sum: c0be2335141be409239cfbebdf113183 +SHA1: 5dd284d17b03fcba4f9b2c0c66b9991a9ebbd855 +SHA256: a4b58cd2458de6e7019f3df2c5939a41da7a4aae5ee8ea91c5d0c6e33da293bb +SHA512: 5b9243ac25a37911bc566305d8a7565a73bea23f8789f8b176da42c1a3944e64de090fceac25e3ef9de31c926e6f7787792b9a44af8099760535fe27e1ce5e01 +Description: l_openmp.runtime.description> + + +Package: intel-oneapi-runtime-openmp-common +Architecture: all +Version: 2021.4.0-3561 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 31 +Filename: pool/main/intel-oneapi-runtime-openmp-common-2021.4.0-3561_all.deb +Size: 9958 +MD5sum: 976debd827eef47aacab106ad04bbd07 +SHA1: be98a5322cbbbb112024674575707aa2043a9bb5 +SHA256: 53a59a72051760bcf04186beaa17656082eacec2ecaee86bfde7f6e7560457bf +SHA512: ed71f929291368e5299af134364e860520fe47d0a6974e84c560c50c39e5e7345359e47a808c62fc0e22a2b1f8b9c27605d7d6589de446c2cdb3bcc38d00852b +Description: l_openmp.runtime.description> + + +Package: intel-oneapi-runtime-openmp-common +Architecture: all +Version: 2022.0.1-3633 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 31 +Filename: pool/main/intel-oneapi-runtime-openmp-common-2022.0.1-3633_all.deb +Size: 9948 +MD5sum: 28d447d0a3d76507c41db6e6831b79d9 +SHA1: d125fbbafd41dd272960c2d839e34d367fe5f59d +SHA256: 5bd2fc7a1605545fc8536ec0e8d80c982f1feb7dc6eed5b45adf3cd0370e0a98 +SHA512: 5a32ea05b87fde686dc37e06a8d13e86fa9f4337b21644c685086be08774acc8f5495a59d5e745e915a661d1e6f6fbaa10657c406071fb709467728694375390 +Description: l_openmp.runtime.description> + + +Package: intel-oneapi-runtime-openmp-common +Architecture: all +Version: 2022.0.2-3658 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 31 +Filename: pool/main/intel-oneapi-runtime-openmp-common-2022.0.2-3658_all.deb +Size: 9958 +MD5sum: 193305c4fbf60c07a6551c87a70c81fb +SHA1: c0b53a9a7a2c86b451f5d959886323ad2195d413 +SHA256: 3922d902237b68204c7aaff2f835d29cadec00ccefc5c0359aecca020cfc903a +SHA512: a79ebbfa02a6882637678638f67a8ebb35cde625ec1b252e98462fb49e818ad3694a42496d21a6d9131d4f513fc034b9ca128f02a70994e4b5a1faa66f815da8 +Description: l_openmp.runtime.description> + + +Package: intel-oneapi-runtime-openmp-common +Architecture: all +Version: 2022.1.0-3768 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 32 +Filename: pool/main/intel-oneapi-runtime-openmp-common-2022.1.0-3768_all.deb +Size: 10048 +MD5sum: 2c519fd186ecc9e2dbe99fff29020225 +SHA1: ec33d5061022b9bc12ebbe3ea7a40f89521c5ff3 +SHA256: 827f518cb53c2694a5d635b361219fa136344986cd74277b55b1d0b8e7a561d2 +SHA512: f262784863db3895c51ed6f94eb25736dc067672c98feee40da86c23e8c5aa5388881da9852390e0c8e8f87718e36f75c2b83d26737ea89b6e42b0f53651e02f +Description: l_openmp.runtime.description> + + +Package: intel-oneapi-runtime-openmp-common +Architecture: all +Version: 2022.2.0-8734 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 63 +Filename: pool/main/intel-oneapi-runtime-openmp-common-2022.2.0-8734_all.deb +Size: 10044 +MD5sum: 7de61f90f08777a0e02f39103d0d7da3 +SHA1: 092f75f10cc3b7aa086848cd1719264c0ce41c67 +SHA256: 6afa21dd3bea20f2de60bad514ead973de7976081656c03469c7f991673835d2 +SHA512: 2f2811638077c1fc031b7153826b8ab130b326b5bbfa04495524ed4f95c8414a6bd2053d3e09687880d7f89715501922c63fdbeb5f45e36343f5f5e955a46f14 +Description: l_openmp.runtime.description> + + +Package: intel-oneapi-runtime-openmp-common +Architecture: all +Version: 2022.2.1-16953 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 63 +Filename: pool/main/intel-oneapi-runtime-openmp-common-2022.2.1-16953_all.deb +Size: 10044 +MD5sum: 2b79e4abcc0293411bd5532a0f5e2e68 +SHA1: 67c503ce54836976586d45f36e2f50083cd3e332 +SHA256: 706d7408172eda211cace17019527a50a20263103912369b9928fea17219ad0c +SHA512: 40865390a401fcabe212b65712ebf90616c938001db2af05e8944a15ef4d4cad60bc5125a3433e7115e93b52bbe545ecee3dcacc02f469e4f0e1be60864fa039 +Description: l_openmp.runtime.description> + + +Package: intel-oneapi-runtime-openmp-common +Architecture: all +Version: 2023.0.0-25370 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 63 +Filename: pool/main/intel-oneapi-runtime-openmp-common-2023.0.0-25370_all.deb +Size: 10040 +MD5sum: 5898bd56754df4c5427fde1b2cd9f12b +SHA1: 008d5cf2568b1dd5e16183c2881bddb1ae164750 +SHA256: f14e031161bd732d7cd4a8b0ae4aa9ee81c7588c6d63bbea9efb3ddeffe72298 +SHA512: dd04cf26688f3e5d9f0e2dcc868866cede3ff94e277482551dee9ef0327534ffcd316cf827c6f399528df414b992e9596cf355744009432db6904f3e0e579f61 +Description: l_openmp.runtime.description> + + +Package: intel-oneapi-runtime-openmp-common +Architecture: all +Version: 2023.1.0-46305 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 63 +Filename: pool/main/intel-oneapi-runtime-openmp-common-2023.1.0-46305_all.deb +Size: 10040 +MD5sum: afd279acd6cdd69ba8225be8549bf0f2 +SHA1: 65332c86a6a34fb791f1fffe583a7807f0cc642a +SHA256: f4ce0f602270d218a3977971812d3c64ea6fc885c8d487620ac6ade366e5bad4 +SHA512: b716b5e4343ab349267dcfc901dcb8b53b2bf0b131de21d98ce06763d71d1a44e0812cc54a104cc161837afdb43f82ff22d2cd1d2c919ed6433b64dce3bd0804 +Description: l_openmp.runtime.description> + + +Package: intel-oneapi-runtime-tbb-common +Architecture: all +Version: 2021.1.1-119 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 55 +Filename: pool/main/intel-oneapi-runtime-tbb-common-2021.1.1-119_all.deb +Size: 17718 +MD5sum: 6bdfc95d0226e9c1fbef996bace66833 +SHA1: d78136632916ef47612b338bf483a07c6f8ae62a +SHA256: 4a5bec1e96b2a613bcc416c9b239ee603611a5bd5c475ceeda38c0e6c6b8cfc5 +SHA512: 1aac25f2409bf5b392ad6aa315e616edbd3f1ad96838c80d35dce8e393dfdc2abd1f5386b54d92781b6182406b418139a3a8590d7076f0df00125873d1cb4d7a +Description: Intel® oneAPI Threading Building Blocks runtime common + + +Package: intel-oneapi-runtime-tbb-common +Architecture: all +Version: 2021.2.0-357 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 55 +Filename: pool/main/intel-oneapi-runtime-tbb-common-2021.2.0-357_all.deb +Size: 17712 +MD5sum: 61902c80e0cc526502787489b861c07b +SHA1: f47b3f42329635965d22bbbe6833395644992940 +SHA256: 56ae76ae58734697b623def0acb0982a4b7f55237342492a4acf1bbe53996e35 +SHA512: bc06d6e0b83674496d307d92514b89d567aecaff681f559bd501d93087e264758e74e8c5742f29d73444393c6b3ff117ec0e15a79008075fb9626648f35e51a7 +Description: Intel® oneAPI Threading Building Blocks runtime common + + +Package: intel-oneapi-runtime-tbb-common +Architecture: all +Version: 2021.3.0-511 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 55 +Filename: pool/main/intel-oneapi-runtime-tbb-common-2021.3.0-511_all.deb +Size: 17726 +MD5sum: de32d9946f7f1bd45df03ec380a599af +SHA1: 9c22d5c9006f3f5ef60c240199f8beb10b4d8e94 +SHA256: f18f84cfc80d8dea43b9baccc67ca84a852a22015c16dcd065a0c4da27d5327d +SHA512: d18cc02a014272e3320e22d1392d442be21123bf70164bd01e4068a0a872aa80934b69b227998b7700b2632511639338cd111e1898c23c0e965847a48fb9b2b7 +Description: Intel® oneAPI Threading Building Blocks runtime common + + +Package: intel-oneapi-runtime-tbb-common +Architecture: all +Version: 2021.4.0-643 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 54 +Filename: pool/main/intel-oneapi-runtime-tbb-common-2021.4.0-643_all.deb +Size: 17686 +MD5sum: b3c0a64ff7fb52a9cdf8dcf62b3d0568 +SHA1: 57169d2412cf7fa46c7b6d52cc0b43449e838ba7 +SHA256: 3fe07a57227e9dcb340ea887f1b5118366b74e287200af6f88106151ea690af7 +SHA512: 57aba8a5d1fb53f0f5b1a6d3e3b7e0d15c1b5ed602e4e1c8b22780ae810ea7b2f4d000f95c7352497b762d0b7351f1ae0b63dedf43a0a33e4e392b127dfb1867 +Description: Intel® oneAPI Threading Building Blocks runtime common + + +Package: intel-oneapi-runtime-tbb-common +Architecture: all +Version: 2021.5.0-707 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 54 +Filename: pool/main/intel-oneapi-runtime-tbb-common-2021.5.0-707_all.deb +Size: 17574 +MD5sum: c5f97d5a5e7a89a7c78815421149b911 +SHA1: b44fb9ce4c4c0c445a864a3617dd58799dcf5de7 +SHA256: 46c4bb5e59a4099fea9d9d029cd924749f17b437bf48d86e04750f58e61cd4a3 +SHA512: af3cb903119e18d01b55f6dfffbe54316b973ed8c8e97a7da3978a5f568ee747246e7195ccabf8137fd3f7497c58cfda021656741875d459b6305070f8e53e87 +Description: Intel® oneAPI Threading Building Blocks runtime common + + +Package: intel-oneapi-runtime-tbb-common +Architecture: all +Version: 2021.5.1-738 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 54 +Filename: pool/main/intel-oneapi-runtime-tbb-common-2021.5.1-738_all.deb +Size: 17570 +MD5sum: 5103d463f9ecf764f40a3a6a0a67268c +SHA1: 1b9a758f0c7e54167bf6b057ed2ff857962704d7 +SHA256: 1fce65a836d12a9cb8bda103b00851c0855c75081c17cc0e9957f4369f2d95a4 +SHA512: a5ac5fe0f388c0ec885fb137bedeb10725065fb1467cfba2201470db6fe4cd14b654698db9896c29e5bafb9603240ae025a31afb2fbc8e6dc3676e96b69a6350 +Description: Intel® oneAPI Threading Building Blocks runtime common + + +Package: intel-oneapi-runtime-tbb-common +Architecture: all +Version: 2021.6.0-835 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 54 +Filename: pool/main/intel-oneapi-runtime-tbb-common-2021.6.0-835_all.deb +Size: 17658 +MD5sum: a63947e2fb2c007e217eb2618012cc7b +SHA1: 3c982206f81c8e9d1a2b496d72d00e30b475839c +SHA256: 485ebf7ed7407bf420bf3981686d36d59564f23bc06226f2136fe5954d58f69d +SHA512: 3a0cbe4e0c74fabead03851fc33a34ec9577399c02d860a8d8ed96b43aa0db3bcb872de2e61b0916cf5540f57d2d0e497cf17fcf5efe9a4cf76d74a782dfd83c +Description: Intel® oneAPI Threading Building Blocks runtime common + + +Package: intel-oneapi-runtime-tbb-common +Architecture: all +Version: 2021.7.0-8712 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 82 +Filename: pool/main/intel-oneapi-runtime-tbb-common-2021.7.0-8712_all.deb +Size: 17662 +MD5sum: f31b770b075f63ff7d661e5b73ec0611 +SHA1: ac842fa77e438de37bcd1c193cba0ffb205b46dc +SHA256: 555c2b9bc92c925eefad51439272ee73f5d8b9adc36307ef3f20d9aec56a9a3b +SHA512: 796cbc783cbd2b7978ca24fd061f7de1f17947791d40642fa50e7083f650d806017d91afb94c4f45b8467f2046db88a16ee004c4d879fcf64d7255f5f6373653 +Description: Intel® oneAPI Threading Building Blocks runtime common + + +Package: intel-oneapi-runtime-tbb-common +Architecture: all +Version: 2021.7.1-15005 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 82 +Filename: pool/main/intel-oneapi-runtime-tbb-common-2021.7.1-15005_all.deb +Size: 17654 +MD5sum: 7a7ad829ca3e599befc921a36513c3da +SHA1: c5558bf738207da247c6cfd86dd30da240f7b212 +SHA256: bc35b691e6dcdd7444c55bb715e580684b7860b345cf45062a1d5fe263984882 +SHA512: bf7dc25148307d37227c8c7988a47905c68e1953b331efb62778fbf0ef159b07bd467f5d58c8f72d347fc72aa826e0c749da73f5b1ffe3dd0cac9f00dfad08ff +Description: Intel® oneAPI Threading Building Blocks runtime common + + +Package: intel-oneapi-runtime-tbb-common +Architecture: all +Version: 2021.8.0-25334 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 82 +Filename: pool/main/intel-oneapi-runtime-tbb-common-2021.8.0-25334_all.deb +Size: 17670 +MD5sum: f5853d5cc438fe311b9269649bf7ad3c +SHA1: 3469e74340810f7ae6e0c8289f92507fe15f960c +SHA256: 6ae110285f695e2c5f03a084962e9d38c17d15c33917a28f1c816fdeb7c01fb3 +SHA512: 09b4ae12c1c64c6d1110f5c3e49dcff9a1dd0e395f9ef7875857f604637e242f121bb112504f1b189cc19c11bcca9411bd403ad9d85922921a6a2090b47bcb74 +Description: Intel® oneAPI Threading Building Blocks runtime common + + +Package: intel-oneapi-runtime-tbb-common +Architecture: all +Version: 2021.9.0-43484 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 82 +Filename: pool/main/intel-oneapi-runtime-tbb-common-2021.9.0-43484_all.deb +Size: 17638 +MD5sum: 5eb77d8a543c5e7e5fe808c0e528a755 +SHA1: 562d086e73cb8be3224bb892ae084c27279f7436 +SHA256: 2b8c8c9d2c0d405e91d2387cf47f94f9160c0a39d5aeed7914e29c0e69931bab +SHA512: b6221a7bbdf7e60515a9324c7e305b36aaf0fc9abde7f4d6636c02b5730aa94340a1a9a64c8befcdd6a25adf5a0b4d7fa8f81e2836f2de210ee6df7dc61c841a +Description: Intel® oneAPI Threading Building Blocks runtime common + + +Package: intel-oneapi-tbb-common-2021.1.1 +Architecture: all +Version: 2021.1.1-119 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 64 +Depends: intel-oneapi-common-vars,intel-oneapi-common-licensing +Filename: pool/main/intel-oneapi-tbb-common-2021.1.1-2021.1.1-119_all.deb +Size: 20056 +MD5sum: 7352ffa01d8a58c719e7a41dc3b52cf7 +SHA1: e45ff350e2e0ed34af3c902501c2a25a634e320a +SHA256: 7b6d9b84509fe9e031d5b435a788a40546e472e61fd3f2c035a7045bf88bc2cb +SHA512: 2e1647442d97a5cc495a8675b8bbdad7cf729381dd8e84ab04bcbeec333b3f0726186201830c7238c35c6090afc35c09cd4a2cd798430f1d012f72cbe885a726 +Description: Intel® oneAPI Threading Building Blocks common + + +Package: intel-oneapi-tbb-common-2021.2.0 +Architecture: all +Version: 2021.2.0-357 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 64 +Depends: intel-oneapi-common-vars (>= 2021.2.0-195), intel-oneapi-common-licensing-2021.2.0 +Filename: pool/main/intel-oneapi-tbb-common-2021.2.0-2021.2.0-357_all.deb +Size: 20080 +MD5sum: 50d6c48cf0f6df87e6f63f5b2aa55ff4 +SHA1: 26fae0560548d2cc641b272dfb7b17c1d9f8d0eb +SHA256: 7bd5bbc05a0dbb6b7a7121a39df1aa7cb11236890a04e6680f7b8483cd8d7370 +SHA512: 5ac5e3c3dea979a17798090ce8b60fd8b396552166f956c1ede05cf7643501aac0b77ec3fd4f420d550b03877feeb4e20b0b7408f36873a8a9ddaaa3133fecc5 +Description: Intel® oneAPI Threading Building Blocks common + + +Package: intel-oneapi-tbb-common-2021.3.0 +Architecture: all +Version: 2021.3.0-511 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 69 +Depends: intel-oneapi-common-vars (>= 2021.3.0-261), intel-oneapi-common-licensing-2021.3.0 +Filename: pool/main/intel-oneapi-tbb-common-2021.3.0-2021.3.0-511_all.deb +Size: 21452 +MD5sum: a11459ad991fd753d56438c08e90088e +SHA1: 584d26e7b903bf55904f4f375dc732ac5128b42f +SHA256: e9b05ae0d3f829ffa3a949ff20a1d82fd23ab7ef36fafa16ae767e4ed875d1bf +SHA512: 06e22073f4309019fddcf2cf355cf4203cb1d51467d6dfd5cc1a881560909779ac8232e8524a91cdeb121824463019a94d52249611d9e7cb89f7efae5ba8828f +Description: Intel® oneAPI Threading Building Blocks common + + +Package: intel-oneapi-tbb-common-2021.4.0 +Architecture: all +Version: 2021.4.0-643 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 68 +Depends: intel-oneapi-common-vars (>= 2021.4.0-327), intel-oneapi-common-licensing-2021.4.0 +Filename: pool/main/intel-oneapi-tbb-common-2021.4.0-2021.4.0-643_all.deb +Size: 21364 +MD5sum: 83c58e54aa41a9ee28d29696bd46d29b +SHA1: 7a23cbbf8f832299c22f79766000b989144054e0 +SHA256: 5aaea747c5c58e60c6300238b774ec510f6af665a9b577295eac14525627c25f +SHA512: c4c1d8ab2f2420e44b592419cc3c7f259c9bb476552977c8ff1a10b49a223001760bb03dff15c1f17d86246af2a8ae05c85589e6730fb70ea99fa40e5ee3272e +Description: Intel® oneAPI Threading Building Blocks common + + +Package: intel-oneapi-tbb-common-2021.5.0 +Architecture: all +Version: 2021.5.0-707 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 67 +Depends: intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-tbb-common-2021.5.0-2021.5.0-707_all.deb +Size: 21192 +MD5sum: b84eec7bdebf6d2d56a37641e42022df +SHA1: cdfbd87f1bff4c34abd3f71c0b21499079505cf3 +SHA256: dceada4f28b818b422923cc78e9d99e533a410511925f4df28bd8b5b4cb2ee2d +SHA512: b5fa9952751c9be2f7aa0628adaebb9865138888f89e5fae97b92ee8f43be644363591dd1c833bbc83b01c2ce72f8b0ba5eba99eb9e0e426f098f0be3f91e688 +Description: Intel® oneAPI Threading Building Blocks common + + +Package: intel-oneapi-tbb-common-2021.5.1 +Architecture: all +Version: 2021.5.1-738 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 67 +Depends: intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-tbb-common-2021.5.1-2021.5.1-738_all.deb +Size: 21196 +MD5sum: 5d04090087fa389d6822b0fe9a4f9e35 +SHA1: 7e2bebf58b5bde1f4dd79d493ae32e3bd749cc71 +SHA256: 64c131d70b0a51bd2a1188e6a9dc347680508196d41346e05ce6ec3a11370ce5 +SHA512: af6169f8f5e92c859ded1a08506dcbd8476341a9c2c0872380ef913ab22367024b7b1e5ddff8b88be4d0d7f8729b1e2462861ba2af67da3cc33e3afecc2ea9fc +Description: Intel® oneAPI Threading Building Blocks common + + +Package: intel-oneapi-tbb-common-2021.6.0 +Architecture: all +Version: 2021.6.0-835 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 67 +Depends: intel-oneapi-common-vars (>= 2022.1.0-161), intel-oneapi-common-licensing-2022.1.0 +Filename: pool/main/intel-oneapi-tbb-common-2021.6.0-2021.6.0-835_all.deb +Size: 21254 +MD5sum: 5235f62f9682fac5fd3c236dcdffa614 +SHA1: 7133f48f6e76296b5d253012f7008641f2305df2 +SHA256: 148f21702a2cb0ae185aef720cce19e3e7abcd219ac20a0a8211a0b931b0b816 +SHA512: 007dd9b084b984fddd791010a142792bc80fe54e87893365bd2d9d21cec8157a401f0a542642403d0e7a13fab0bef3ad5b12bc4edd021ba15e7118171d4b2b33 +Description: Intel® oneAPI Threading Building Blocks common + + +Package: intel-oneapi-tbb-common-2021.7.0 +Architecture: all +Version: 2021.7.0-8712 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 99 +Depends: intel-oneapi-common-vars (>= 2022.2.0-8694), intel-oneapi-common-licensing-2022.2.0 +Filename: pool/main/intel-oneapi-tbb-common-2021.7.0-2021.7.0-8712_all.deb +Size: 21246 +MD5sum: 1579d8301e667e7f79b94aa570fe9a9d +SHA1: 751496ac2e55d048e9350e457ac6c090c2dd364c +SHA256: 68ae63719f897dbc86a8ba0c76e1f603866bbd3f898dbd114515d49a5766e3f6 +SHA512: 23bf44c8310ee48e2ebb457d8b7eba49932ab201e18292c25cdbd1df8e7ac1d474e77045ca27f7a034167dd228ac368745a468a7ca27205824584b36799623ca +Description: Intel® oneAPI Threading Building Blocks common + + +Package: intel-oneapi-tbb-common-2021.7.1 +Architecture: all +Version: 2021.7.1-15005 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 99 +Depends: intel-oneapi-common-vars (>= 2022.2.1-14969), intel-oneapi-common-licensing-2022.2.1 +Filename: pool/main/intel-oneapi-tbb-common-2021.7.1-2021.7.1-15005_all.deb +Size: 21254 +MD5sum: f3c2633e3c850def20a633dc472e4be3 +SHA1: 2ee8a9fff8b15c7a554f20926c45e064f332dfb7 +SHA256: 7b95492faf1fbebde5d704a181a66a8053084ecc6fd15a3e68c578578d0cb441 +SHA512: b32c97c42530b19694bf44569759ab7090e6d8021d6faf00aaf40fc0bec91ce58193a9796a60d441ba36f8da9b05ed5b11723ec8ec1be9afad3abd4c0820a7cc +Description: Intel® oneAPI Threading Building Blocks common + + +Package: intel-oneapi-tbb-common-2021.8.0 +Architecture: all +Version: 2021.8.0-25334 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 99 +Depends: intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing-2023.0.0 +Filename: pool/main/intel-oneapi-tbb-common-2021.8.0-2021.8.0-25334_all.deb +Size: 21250 +MD5sum: 862b667b38742f29c7eaf87ab8a7f1c0 +SHA1: 4e127d6bfddba172e3f4b74c598fd0442c44896b +SHA256: 4ae366766051d7be739d66d830f162de8b45762f8a662071eb64ba1b3c83e426 +SHA512: a6b3593c4566a596b07d38c021ee59df515e4f676c938d3693f8128f397edf8326dc69490e2ca6241e00b98c9084485de914ac63c23c9308b82ae58fcbf804df +Description: Intel® oneAPI Threading Building Blocks common + + +Package: intel-oneapi-tbb-common-2021.9.0 +Architecture: all +Version: 2021.9.0-43484 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 99 +Depends: intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing-2023.1.0 +Filename: pool/main/intel-oneapi-tbb-common-2021.9.0-2021.9.0-43484_all.deb +Size: 21310 +MD5sum: 70833ee91a0d916c9de7c9a40dfbd08e +SHA1: 8ded91167415d77cdda842bee2f2a868dd11e5a7 +SHA256: cdad350bed77e0f695d28c0a1468c5b21b32ff9d6db960e5c11d466ea17c634a +SHA512: 4f191c39ac829cab476289b196b409f2c22b72718b03f614e98fa36f34bc530ba6af5e8c29f8215aae36ab5f66e653e2eb1e2549d1481457342d887461182960 +Description: Intel® oneAPI Threading Building Blocks common + + +Package: intel-oneapi-tbb-common-devel-2021.1.1 +Architecture: all +Version: 2021.1.1-119 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1218 +Depends: intel-oneapi-tbb-common-2021.1.1,intel-oneapi-common-vars,intel-oneapi-common-licensing +Filename: pool/main/intel-oneapi-tbb-common-devel-2021.1.1-2021.1.1-119_all.deb +Size: 168190 +MD5sum: dc3322038e3a248a8c240fd0a778629c +SHA1: 803b27a4fd64a7cb3efda33a49f90920de7ec3ac +SHA256: 82c1441fd7b12edd2b4651e10f5436f37eb0e43077e6e9476088b9bf31d20523 +SHA512: a43c3bfb71345369c4b73c601cce5df1f4a7646e21e203ab34d9bbbb2e4ca86074fb1d5785302f21d7d173dcc2404077f376362bd873621657a00d69daf7537c +Description: Intel® oneAPI Threading Building Blocks common + + +Package: intel-oneapi-tbb-common-devel-2021.2.0 +Architecture: all +Version: 2021.2.0-357 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1252 +Depends: intel-oneapi-tbb-common-2021.2.0, intel-oneapi-common-vars (>= 2021.2.0-195), intel-oneapi-common-licensing-2021.2.0 +Filename: pool/main/intel-oneapi-tbb-common-devel-2021.2.0-2021.2.0-357_all.deb +Size: 171988 +MD5sum: af56ca0222df80e5e7b1c540a17b9e2f +SHA1: 4aa0e0b298eca34ab6f1dab9d5ed617f09061699 +SHA256: e3c8c2301aaf1327ecf7b4ffd327078ae03daa4bfc80ba9b941544df5ab5256d +SHA512: cb421681f9b34b9a1f2b2413f0a5635352acdea8b06861a0a4d803c6a05daddca0b31d8886c726ffcee563ef8de1524bd838d7a8731de5af25c9df1a2ebed783 +Description: Intel® oneAPI Threading Building Blocks common + + +Package: intel-oneapi-tbb-common-devel-2021.3.0 +Architecture: all +Version: 2021.3.0-511 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1312 +Depends: intel-oneapi-tbb-common-2021.3.0, intel-oneapi-common-vars (>= 2021.3.0-261), intel-oneapi-common-licensing-2021.3.0 +Filename: pool/main/intel-oneapi-tbb-common-devel-2021.3.0-2021.3.0-511_all.deb +Size: 178224 +MD5sum: feb4b8d9cd6ff0334ab0da507bf8ed93 +SHA1: b013fe7b5bb0802716838cf06fd711c50069854d +SHA256: ea55a09cd3e6ce73b4b108517c4947d40bb19698948e9aa6866fde97fa12c4a0 +SHA512: c13a3eed4ec97f6b231d4b369c04fcc02fa58033bf0d4d01bcfca4f363a32ae60ad85acbbc2878e7e92b6a7c39f1de41914c3bf7c03cd6ced2e852243aee236e +Description: Intel® oneAPI Threading Building Blocks common + + +Package: intel-oneapi-tbb-common-devel-2021.4.0 +Architecture: all +Version: 2021.4.0-643 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1331 +Depends: intel-oneapi-tbb-common-2021.4.0, intel-oneapi-common-vars (>= 2021.4.0-327), intel-oneapi-common-licensing-2021.4.0 +Filename: pool/main/intel-oneapi-tbb-common-devel-2021.4.0-2021.4.0-643_all.deb +Size: 181218 +MD5sum: 056ab3ce142dd0fbb8d9b1feb7357190 +SHA1: b53d15268fcb16a57521fd2dd99581fa37ce33e2 +SHA256: 8dbfb848a70e25f251685c31134de7af20f843435f40e85947444063bdbc8e24 +SHA512: 66ce23b33da147d5ce9957eb291cb852b5e3026be46f4e79358844de2977aac297a4d47094fa35550872da9a41a18c10f5373fe5d74d352039bbb70c44a571f7 +Description: Intel® oneAPI Threading Building Blocks common + + +Package: intel-oneapi-tbb-common-devel-2021.5.0 +Architecture: all +Version: 2021.5.0-707 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1332 +Depends: intel-oneapi-tbb-common-2021.5.0, intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-tbb-common-devel-2021.5.0-2021.5.0-707_all.deb +Size: 181240 +MD5sum: e68e50eb5fda1b459210c191644d4926 +SHA1: d6598e177d0496e7e18de4d42ad126c24e33102d +SHA256: 55cbc143e3451ddf14cd8c0e1cb6e76eab0543997b9fc3058a6f81f7f513d47f +SHA512: 205f0c6b119a55498c7ab98485f4b1fa117940655471d0f5f03e0ef08167ce069975b9b06779a0a5983b7e840edab9e8abf8eeacacb738b871b870acc267061c +Description: Intel® oneAPI Threading Building Blocks common + + +Package: intel-oneapi-tbb-common-devel-2021.5.1 +Architecture: all +Version: 2021.5.1-738 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1332 +Depends: intel-oneapi-tbb-common-2021.5.1, intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-tbb-common-devel-2021.5.1-2021.5.1-738_all.deb +Size: 181232 +MD5sum: 43e15d900f4f67a363b7e6cb930a9ffb +SHA1: 53b49dbee9a7e969948515aa783d327582f7b7ff +SHA256: 3bf7d565766deaeac87b5fce87f14d1df1e4a789b2385747dde5d087ce1e0234 +SHA512: b57dc611852e5317984edc0a55900852dfed71ed8ab6d9f47e4a7da48373ee113a4f26d620f67aecaf360d994dbe19abcb93721d8d5aa24746c4584895738d7e +Description: Intel® oneAPI Threading Building Blocks common + + +Package: intel-oneapi-tbb-common-devel-2021.6.0 +Architecture: all +Version: 2021.6.0-835 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1335 +Depends: intel-oneapi-tbb-common-2021.6.0, intel-oneapi-common-vars (>= 2022.1.0-161), intel-oneapi-common-licensing-2022.1.0 +Filename: pool/main/intel-oneapi-tbb-common-devel-2021.6.0-2021.6.0-835_all.deb +Size: 181726 +MD5sum: 4fb7461710b20dcfa6c52f5fec6ed9b8 +SHA1: 9e8eae9d5c51b8a8f0edb245f85be2a8e74783d6 +SHA256: 956f1ebcc56cb3301d48f874e43906cfc2b18022cfa983916d0d160527d6b6aa +SHA512: 494bcf7beebabbd70d0e3ae2090a1e6ac82233001d0f2231865a7a88dce4d2d07f9bfebae7fbc4dbe6e5a8e813ab9a0975329d84174057cbc002e7e7bab7df56 +Description: Intel® oneAPI Threading Building Blocks common + + +Package: intel-oneapi-tbb-common-devel-2021.7.0 +Architecture: all +Version: 2021.7.0-8712 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1379 +Depends: intel-oneapi-tbb-common-2021.7.0, intel-oneapi-common-vars (>= 2022.2.0-8694), intel-oneapi-common-licensing-2022.2.0 +Filename: pool/main/intel-oneapi-tbb-common-devel-2021.7.0-2021.7.0-8712_all.deb +Size: 181810 +MD5sum: 9273313770bc0a9a56b77d8374e1d47d +SHA1: f3f5d153878ae4f11ec5ab9ed5dff02bd540deb9 +SHA256: f0dd6a6b643048f6ccec689338e9deafc37db5c8149dca31a159ec3275d2612e +SHA512: f0bb49b6e18685aeba72a06c51064824af82c216e51b0d01fb52780d0b490344b012130563e3144ce8c966c4b2113b9890445f5728f9ad118e5f227ce255f810 +Description: Intel® oneAPI Threading Building Blocks common + + +Package: intel-oneapi-tbb-common-devel-2021.7.1 +Architecture: all +Version: 2021.7.1-15005 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1379 +Depends: intel-oneapi-tbb-common-2021.7.1, intel-oneapi-common-vars (>= 2022.2.1-14969), intel-oneapi-common-licensing-2022.2.1 +Filename: pool/main/intel-oneapi-tbb-common-devel-2021.7.1-2021.7.1-15005_all.deb +Size: 181778 +MD5sum: 727a7fef0e5929536fe1907a5140a6a9 +SHA1: dcec89c830ef5982772a2536b85bf89be417c4e1 +SHA256: eb3efdb0df38b3f8c69ba083819f03588c5568821f8fd36977745b88a857a463 +SHA512: e7f70caf57dc91bab9ef45400c80a90a155045efcf04c24b299f6c77a66a835cddacd58fb132f34abb7a231624bbff515f74cb8a1e5ae18898ff4a4bba2854c2 +Description: Intel® oneAPI Threading Building Blocks common + + +Package: intel-oneapi-tbb-common-devel-2021.8.0 +Architecture: all +Version: 2021.8.0-25334 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1381 +Depends: intel-oneapi-tbb-common-2021.8.0, intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing-2023.0.0 +Filename: pool/main/intel-oneapi-tbb-common-devel-2021.8.0-2021.8.0-25334_all.deb +Size: 181774 +MD5sum: 1bd43595e89107817b352cebe7719f71 +SHA1: cee4101931a1aa4315e5aa9ddb90270363b3d246 +SHA256: e77465e411ae8986c7ffbdaf7faafb0336d27ada811010660172ebb7f4c20bfd +SHA512: 8cccb7874106cfa0587be3b0c50ea40cd9f01da86845b1ccf8e231c4dd626a20a182fdbf6f84586cf98f99a05461fa7481d558c6ca6036623390bdb8d16d663d +Description: Intel® oneAPI Threading Building Blocks common + + +Package: intel-oneapi-tbb-common-devel-2021.9.0 +Architecture: all +Version: 2021.9.0-43484 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1382 +Depends: intel-oneapi-tbb-common-2021.9.0, intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing-2023.1.0 +Filename: pool/main/intel-oneapi-tbb-common-devel-2021.9.0-2021.9.0-43484_all.deb +Size: 182058 +MD5sum: d4cc0b9575217fff20de36194190b0dc +SHA1: f470afab0889db419173ed533300b17f9e5ddc00 +SHA256: 919783c69c8fe7d78ba592801630da2dc6031bfec9c56363bc09ff3ce762d9b8 +SHA512: 87e49708c44ee668b4c5613b5b95f70d72a975fb7cc0f6319b8ed43e028821ce3308b9afb232b428190b80f4caf295081358a62fe7ca6b46bb311accd42cfe81 +Description: Intel® oneAPI Threading Building Blocks common + + +Package: intel-oneapi-vtune-eclipse-plugin-vtune +Architecture: all +Version: 2022.0.0-94 +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-vtune-eclipse-plugin-vtune-2022.0.0-94_all.deb +Size: 1910 +MD5sum: e4b309d4617ccf7037af4ddd73f28e22 +SHA1: fae3453d3115e01583306fc40c96981072c3c094 +SHA256: 0316f8e5924d764d78bb8070decbf0d7389776f0980840032a97b6b46dcb6511 +SHA512: c336787e4e51fb4563a8be48ddea24bfe7076357267807e088b49ff46c0646be840471c13fd6f3059150c9b5bc8ccc9c3d898b4a198fc8379fd2707ef0405b31 +Description: Locate and optimize performance bottlenecks fast across CPU, GPU, and FPGA systems. + + +Package: intel-oneapi-vtune-eclipse-plugin-vtune +Architecture: all +Version: 2022.1.0-98 +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-vtune-eclipse-plugin-vtune-2022.1.0-98_all.deb +Size: 1904 +MD5sum: cf63a218d1d413aba882012d103cbdcd +SHA1: d928415650b4e71d8eda6d50507a26098a9a89d8 +SHA256: ec1b97bdb455ad171cf296d48997b5e8f3509417869babb6cfc330175d7eea80 +SHA512: 6b42bac2ea00bce1f773cdf7f35b7b37629f584242d0ea5c80e41165e9dc1a3baa2945a0a13044c5214fd804695c2c5bb0aee1432a33dafa761e2e2bc3025cf1 +Description: Locate and optimize performance bottlenecks fast across CPU, GPU, and FPGA systems. + + +Package: intel-oneapi-vtune-eclipse-plugin-vtune +Architecture: all +Version: 2022.2.0-172 +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-vtune-eclipse-plugin-vtune-2022.2.0-172_all.deb +Size: 1908 +MD5sum: bb0bdeef0a350862b1b8a1e992fb34e6 +SHA1: 13a3985263211fde95c13e36b0b50d943011f78f +SHA256: cc4404bc5c029ee4254dcab3804bbd56fb06752c73240cf11ac51576f8a3f136 +SHA512: 4039d066fafba14f932a2dd0f4eadec30051d545c02f884888d5ba797d8ec982e82b7deb4a40256e6f37e8e5873fd0d8417040e9c639495d0b4c88e8c3fd27c3 +Description: Locate and optimize performance bottlenecks fast across CPU, GPU, and FPGA systems. + + +Package: intel-oneapi-vtune-eclipse-plugin-vtune +Architecture: all +Version: 2022.3.0-195 +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-vtune-eclipse-plugin-vtune-2022.3.0-195_all.deb +Size: 1904 +MD5sum: 3f5f392aee85c4c2e7e68b431e9b7522 +SHA1: f2a86dbf9b4921050ede21b3542440f317b018ac +SHA256: bf26a749de03cef35134917a552d5271dff61941ca79c4b8eae7eaf5b6b142d3 +SHA512: 3b97eadc19827fecf6d784db2524900fbadf9080581d813c43d1fd9353553064d57b9f65cc8b61be1e75bee7bad975a050e2050c20a5c953ed3cdb42b474c067 +Description: Locate and optimize performance bottlenecks fast across CPU, GPU, and FPGA systems. + + +Package: intel-oneapi-vtune-eclipse-plugin-vtune +Architecture: all +Version: 2022.4.0-8705 +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-vtune-eclipse-plugin-vtune-2022.4.0-8705_all.deb +Size: 1988 +MD5sum: 20afc4c9921e2e763d37ed3874a775e7 +SHA1: bec5689c61fb58d4c6b1160409d872d4182d6572 +SHA256: 9f37019f6c8d9639ce03755015a669cd4a01a5f21cd9213898e81ee307f4d9b2 +SHA512: 01501836ea05cf617fe437e5db7fe45f6ee30fa156e4a31e0cf38be07e5039229dc88c10823d02e2e89649f7258c14874057ca4af2fa9b654e68ffe604bc5e05 +Description: Locate and optimize performance bottlenecks fast across CPU, GPU, and FPGA systems. + + +Package: intel-oneapi-vtune-eclipse-plugin-vtune +Architecture: all +Version: 2022.4.1-16919 +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-vtune-eclipse-plugin-vtune-2022.4.1-16919_all.deb +Size: 1984 +MD5sum: 1e65eae8b2c786bc88ff165566ab11e0 +SHA1: d6422c1fb649f6cd6b04ef9195398bb3defc6431 +SHA256: 176404ccef5486b0014c8988dde5bda5699329ebfb0267ee7d56a598be7899fb +SHA512: 825494142c92e0c4bcc4388d7cf2165ba757ec8757a330d5a91045216c95fc8d2d98287fa343d84c1439836fba3c40fd31e254285ed2eb5e3a179da7dbd81293 +Description: Locate and optimize performance bottlenecks fast across CPU, GPU, and FPGA systems. + + +Package: intel-oneapi-vtune-eclipse-plugin-vtune +Architecture: all +Version: 2023.0.0-25339 +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-vtune-eclipse-plugin-vtune-2023.0.0-25339_all.deb +Size: 1984 +MD5sum: f78276f2e388fde7f10b71b68f371bfc +SHA1: 04697ea03588500ac35799cb789729562efc5ab0 +SHA256: 143c07f8d139fbc4983c42e329d07d92027ef6c199f779f2d17e162826798bdf +SHA512: f9faebb5c2bd14966ec2c2c2e6f3eef1e0e7ea3fe57e35729665a995fb0c3e546f559e7e94c29f30bf5e97fcbc6af401ecd3679bc45c272dab1caf430213b0fe +Description: Locate and optimize performance bottlenecks fast across CPU, GPU, and FPGA systems. + + +Package: intel-oneapi-vtune-eclipse-plugin-vtune +Architecture: all +Version: 2023.1.0-44286 +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-vtune-eclipse-plugin-vtune-2023.1.0-44286_all.deb +Size: 1980 +MD5sum: b4910624d901ebee87e9eac165b8a8a5 +SHA1: 337c4f1359b7a438856ea593df3cd18e4a5e3c52 +SHA256: 22d6a4831fc970f7c6d9510e98bf4510f295e9b4785490028dd9b43d53e3d0ed +SHA512: 91d0ecef8440341af3107393206485420f519dbb752080719fd28c04452d1e606743b373218191b3ba98e3fc5eb5131d4eb6fcc4dcab65ee79ab15281dfd31b4 +Description: Locate and optimize performance bottlenecks fast across CPU, GPU, and FPGA systems. + + +Package: intel-renderkit-getting-started +Architecture: all +Version: 2021.1.0-627 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 6 +Filename: pool/main/intel-renderkit-getting-started-2021.1.0-627_all.deb +Size: 3596 +MD5sum: 359791380114084038ec6883bdeff228 +SHA1: 53de5da689400ff4cf7515e74b10e37a82eb0988 +SHA256: 75d9421796e5ffb50d5b228fc56edbe4440066146d89ac7a6878b5130a3e65cd +SHA512: b80aa1f7e7d5a8de6d573e1b16d6c8368feba50d66f28ba50ced53faa7149c684ca3aab25a49534db50e8b39cc06cbd7732c7e0faebe21790656b1ec97b1de2c +Description: Intel® oneAPI Rendering Toolkit + + +Package: intel-renderkit-getting-started +Architecture: all +Version: 2021.2.0-739 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 6 +Filename: pool/main/intel-renderkit-getting-started-2021.2.0-739_all.deb +Size: 3606 +MD5sum: d777556924c22d5423e6392a1e9fc0fe +SHA1: 04eb7fab30edd180438ba4c73061be57716c61a8 +SHA256: 5f10036cc47ca83141a2d50e280ad2b8f24364e4d1b7b7669e078c1422c61d84 +SHA512: 06ed05846be82fb958bf643619f9429f477a07db62a66893b1b4260343f5ba3e4a3ee27fc7fef5c76634014217f35ba49e50bdf04ad02a2396df5e03afb9e2b4 +Description: Intel® oneAPI Rendering Toolkit + + +Package: intel-renderkit-getting-started +Architecture: all +Version: 2021.3.0-807 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 6 +Filename: pool/main/intel-renderkit-getting-started-2021.3.0-807_all.deb +Size: 3602 +MD5sum: a80910b64f347152a43ef78db17ae304 +SHA1: 057a66b6f2cc54b1ddb9bbba77503cf7540077c7 +SHA256: 33a3de984b9b48c39e02a3b70da7123cdcaa56932a2e6fef8765b7b30bc030bd +SHA512: fcdec299e707da626beac8887a5d4af18e63f1f660e7ff784a530ab567401841574b5d376e743386af445b57ade58d657b4ba128a09dd9e7a648aa8beacd3729 +Description: Intel® oneAPI Rendering Toolkit + + +Package: intel-renderkit-getting-started +Architecture: all +Version: 2021.4.0-845 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 6 +Filename: pool/main/intel-renderkit-getting-started-2021.4.0-845_all.deb +Size: 3602 +MD5sum: 9b8ab7cad93b259a02f9de87f3da86d0 +SHA1: 85ab345be0847370f15598cdac0a686d2c572567 +SHA256: 35b7b5ad25a8b150baa8579e163362379c34120f07318995763faf905fff41f4 +SHA512: aa0de94f21308495c9f935300a6f5f86deefc0057a6b264491d6325b96d364168b4aa8fd296b9ed23e3f556f3518578c8d57d44f727b440c62ed313e8b86afad +Description: Intel® oneAPI Rendering Toolkit + + +Package: intel-renderkit-getting-started +Architecture: all +Version: 2022.1.0-74 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 6 +Filename: pool/main/intel-renderkit-getting-started-2022.1.0-74_all.deb +Size: 3602 +MD5sum: 6c38aa681e7234070315b57c927f7a36 +SHA1: 52068fcb887bc5882fe31c4ccfd3c12905604cb5 +SHA256: c7bdb4a80b990f231e596920fd2056b1fe96e89b80426c5e6bba592091756487 +SHA512: 28c5bd2159f63e7555d4b43a140e01aa75238226be571846318e87bcd68449a125eebe5d08ef6be8b3fe8fbad1b0155c9750f604cbf110ed23661882cc24a5f5 +Description: Intel® oneAPI Rendering Toolkit + + +Package: intel-renderkit-getting-started +Architecture: all +Version: 2022.2.0-151 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 6 +Filename: pool/main/intel-renderkit-getting-started-2022.2.0-151_all.deb +Size: 3684 +MD5sum: 61cdff2d45b89d9012e7ae6caaf7cd49 +SHA1: 3146ab47f36b4f44dd9e4f01ec07b3a633337b9e +SHA256: 80dd9602e20d6756f0f043c04adbf357c572ced4adbfe3d7dd6940da29b3aa21 +SHA512: 782a5d4b7c60eeff310ebe0a0637c362e921e8b92b7821f641aa4a673f7071a2d1dded1e983ea43041a3e392e657411338418460d6b70257c6aff1656170546d +Description: Intel® oneAPI Rendering Toolkit + + +Package: intel-renderkit-getting-started +Architecture: all +Version: 2022.3.0-8742 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 22 +Filename: pool/main/intel-renderkit-getting-started-2022.3.0-8742_all.deb +Size: 3676 +MD5sum: 29c373b9d4c955d890067a499dbed388 +SHA1: 39b588a3a142c9da07578f85c205e6602ad51915 +SHA256: d6de452f53eb37bf95b4138f197e746401734193c198b0ad72dfbafd61b30c60 +SHA512: 5e6f4247766c708032a6495be3d143a64e90ef6a3231c54cf0713dcc537363600cffd4ab8192a4f222f3b43eb0f94fdfbfa4601a756948663617924d39e83dbb +Description: Intel® oneAPI Rendering Toolkit + + +Package: intel-renderkit-getting-started +Architecture: all +Version: 2022.3.1-21169 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 22 +Filename: pool/main/intel-renderkit-getting-started-2022.3.1-21169_all.deb +Size: 3676 +MD5sum: 7a12c3ba3da082307d5c20cc4f67b0d5 +SHA1: 2476bb7bc6b5de1bb2300e3ec063f67e6f034cd2 +SHA256: 25d423126e7d477344c94c7a9cbb819284660cf45e76a1ca25d1ce85e7cfe04d +SHA512: c059ae710d27aa803c66a597ab35280f551a97e1db7e76079f16a6b15057a6940150207e92c60425ba6a99bca9bc586a5866fe84a5f9f45242cc81cf06d470ca +Description: Intel® oneAPI Rendering Toolkit + + +Package: intel-renderkit-getting-started +Architecture: all +Version: 2023.0.0-25403 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 22 +Filename: pool/main/intel-renderkit-getting-started-2023.0.0-25403_all.deb +Size: 3680 +MD5sum: 42d52852ab3c520c7b30114430e88767 +SHA1: 66513fa3e3aa9d6d98b3369f26dd8a5097003bb5 +SHA256: 3cc1bd02d3bfc17a8bf0e645fcb6cdcbe17ac23e5e745e038de87a184c80a428 +SHA512: 54129b7d1d713ebd3f45d918dc070e26d6d7dacd51a03fcae75b17d599b43c47451956fad5a6920168f7d51da833fa17809420181d2b18eaa28d930fbc06899d +Description: Intel® oneAPI Rendering Toolkit + + +Package: intel-renderkit-getting-started +Architecture: all +Version: 2023.1.0-47259 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 22 +Filename: pool/main/intel-renderkit-getting-started-2023.1.0-47259_all.deb +Size: 3676 +MD5sum: 7a5686d64cb77ea3f599326e45d73be3 +SHA1: ed57ce7d55554744d139500d367ca536477b78e6 +SHA256: dccdc2aa3ecb33e8a8272afb490e44f7b4e1f6ce648de5b0e6669e449625b937 +SHA512: b723fcee002b2efd5bbdc8280a01243651b868bca9b29f8f0c65a01d34defab2a08e87c2f497af0b8f1ab0538cd40507eaee36ea4c4e8687e4b77c2600844ba8 +Description: Intel® oneAPI Rendering Toolkit + + +Package: python3-opae.pacsign +Architecture: all +Version: 1.0.4 +Priority: optional +Section: python +Source: opae.pacsign +Maintainer: The OPAE Development Team, +Installed-Size: 6282 +Depends: python3 (<< 3.7), python3 (>= 3.6~), python3:any (>= 3.3.2-2~) +Filename: pool/main/python3-opae.pacsign_1.0.4_all.deb +Size: 2523292 +MD5sum: 5a42b0583424ffad9f78bc7128b84288 +SHA1: 552635e894f96719ea4573e7a4f2bea56bf6665e +SHA256: d5acf3b5caef9bbe744237580611e2c2d13d70163613f5843af4d7dcbb4b4f5f +SHA512: 80df6bcc8132225e49f4807f608e0aeea7d3981cd996f90f01161db4b843c0cddaeb9bd5276b587f5cf9e1da85c64760e760a897c01791e5747e2f80e1d18b6b +Description: PacSign for Intel FPGA PAC devices. + + +Package: intel-aikit-getting-started +Architecture: all +Version: 2023.1.1-48862 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 22 +Depends: +Filename: pool/main/intel-aikit-getting-started-2023.1.1-48862_all.deb +Size: 3676 +MD5sum: 971cd607de4062c21890f52bb0b23b81 +SHA1: 02b8152661e9c7fe25f5c2f0b91b2e0efe26a51f +SHA256: b67a5ce9b5b0f42929c80795288d2529c5b7f75c6b298033b5e2ed0f60426b94 +SHA512: f96168ffc7d62a5988041db6a968370884975fd4a262a14612016fb9cdb2a052d5171f94874922811beaabe1218262777eb34ff51f15245454e2045a26157f33 +Description: Intel® oneAPI AI Analytics Toolkit + + +Package: intel-renderkit-getting-started +Architecture: all +Version: 2023.1.1-18 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 22 +Depends: +Filename: pool/main/intel-renderkit-getting-started-2023.1.1-18_all.deb +Size: 3676 +MD5sum: e33f72ea7638657e634815b172e4fed9 +SHA1: 3ecba630a1e8b35e5aa301ac7cb95761bae5a0f3 +SHA256: fcd001f32141c54d696f857b3d62c829c282f3b23bb65a1ac1a69e203edff77c +SHA512: aa16fd10ca7beb08af0a71da346b08719cf60d22017ac713f7213ffd3d2e55d631ecc7ddf67d78f399d1b272b2c3db1c426490de94f83bcca7f0a2c8a27adfca +Description: Intel® oneAPI Rendering Toolkit + + +Package: intel-oneapi-dpcpp-ct-eclipse-cfg +Architecture: all +Version: 2023.2.0-49330 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 25 +Depends: intel-oneapi-common-vars (>= 2023.2.0-0), intel-oneapi-common-licensing-2023.2.0 +Filename: pool/main/intel-oneapi-dpcpp-ct-eclipse-cfg-2023.2.0-49330_all.deb +Size: 2016 +MD5sum: 2f4fe8274746f3287b9e5cb1eb6120db +SHA1: cbfdc61d2eb319b50f996719509671bf5979e905 +SHA256: 07a315ce899171c858a16a9065322bc73725a03a0880765c0e1d507e4868e4b3 +SHA512: 94d94ed49af8d71c18dcc9cc6f6aee537b58d6737cd4c4dcfc15aa000787c32b8a045f5fc3867943833b8436b1c70c55d42197b37c60c30e8443273c053baa06 +Description: Intel® DPC++ Compatibility Tool 2023.2.0 for Linux* eclipse integration configuration file + +Package: intel-oneapi-tbb-common-2021.10.0 +Architecture: all +Version: 2021.10.0-49541 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 93 +Depends: intel-oneapi-common-vars (>= 2023.2.0-0), intel-oneapi-common-licensing-2023.2.0 +Filename: pool/main/intel-oneapi-tbb-common-2021.10.0-2021.10.0-49541_all.deb +Size: 20078 +MD5sum: e18c66b7c0be4b6000e2a0c809429a67 +SHA1: d33dd34c7e5627cfa573296d4abfd1a539aeb4ef +SHA256: 39fb590aae0cde3cd869ef92139776a12ea480b9bcb4eb4dea06585886243ebe +SHA512: e2de092aa5b6f0e4513a82ecf338357e9f5879198d8946367eb2459ce0717378f73ee3e6a9cd6725c2069e0d2f5026680efb1d64e579cb8062152fe93031d46e +Description: Intel® oneAPI Threading Building Blocks common + +Package: intel-oneapi-runtime-tbb-common +Architecture: all +Version: 2021.10.0-49541 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 82 +Depends: +Filename: pool/main/intel-oneapi-runtime-tbb-common-2021.10.0-49541_all.deb +Size: 17622 +MD5sum: 10aa3d5d70616141c43721e5610fb6a9 +SHA1: 65978bbb252c9a1349cf9f5b5c2363b28f6a7a58 +SHA256: 7b6ca181b86c37750941912aa57153b4cc166312d0923aaabb3abac4a4602480 +SHA512: 092a32b1680f5f370703309c4ee2e597ac420fd06ed05de98be9f81225dd88ed4be007912da2b91af1d031afeeee3be7005d9c5e680d4444453c8e6057afc2fb +Description: Intel® oneAPI Threading Building Blocks runtime common + +Package: intel-oneapi-tbb-common-devel-2021.10.0 +Architecture: all +Version: 2021.10.0-49541 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1390 +Depends: intel-oneapi-tbb-common-2021.10.0, intel-oneapi-common-vars (>= 2023.2.0-0), intel-oneapi-common-licensing-2023.2.0 +Filename: pool/main/intel-oneapi-tbb-common-devel-2021.10.0-2021.10.0-49541_all.deb +Size: 182774 +MD5sum: 16461853155dc5f78c3a62090d596bb7 +SHA1: df4bf6b1fd93044a5c9870594d01b7f7a2271621 +SHA256: 8a727b717cfeb0f75d80a54c19d1a22ec4d7cdee6614de32fd5b98a6b3e4a4e6 +SHA512: 341fc841e31b1d4aeecb30e396c98b7e5118699ef726862f2af358f37f11eb2e7ebccc5c51898cefed77a403ffdbd64c0a3c786980e5cbdaace51c4fd2988f70 +Description: Intel® oneAPI Threading Building Blocks common + +Package: intel-oneapi-ippcp-common-devel-2021.8.0 +Architecture: all +Version: 2021.8.0-49490 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 498 +Depends: intel-oneapi-common-vars (>= 2023.2.0-0), intel-oneapi-common-licensing-2023.2.0 +Filename: pool/main/intel-oneapi-ippcp-common-devel-2021.8.0-2021.8.0-49490_all.deb +Size: 154896 +MD5sum: 066068f545ac2c6bb9e3015dd179f6ef +SHA1: c3b9e20cee4fc72a783d45eceb1130aa51d24f24 +SHA256: e1b7e6d28750d593d685bc478d26f81848d8f13970c16423757387ba88badded +SHA512: 8bb5c4aa93cd785edddd4bd7842bd530bee2fcd66ad78be04a25d4dda2abf027b6684649b00e394e9acb611bc375a983effd09baa9f96b1004499982fdd5e916 +Description: Intel® Integrated Performance Primitives Cryptography common + +Package: intel-oneapi-runtime-ipp-crypto-common +Architecture: all +Version: 2021.8.0-49490 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 38 +Depends: +Filename: pool/main/intel-oneapi-runtime-ipp-crypto-common-2021.8.0-49490_all.deb +Size: 5336 +MD5sum: ace4897b3bdc49c199cb7ce1a24ab312 +SHA1: a363376eea07a18ec04469685d9fa6bd39123acc +SHA256: b9412b48690fd69e55a7df19ec3d4db9b15a434c18adc18533c9fca09d75b0d0 +SHA512: d10a6d33dcba22e5c4c1c1167e9b07c3cb0db0b0db6edb0c9049d62fc31855174cba835ea7445de64b79bd55e11c9276fb872b39157208e04b4cf53e4bbfbb54 +Description: Intel® Integrated Performance Primitives Cryptography runtime common + +Package: intel-oneapi-ippcp-common-2021.8.0 +Architecture: all +Version: 2021.8.0-49490 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 50 +Depends: intel-oneapi-common-vars (>= 2023.2.0-0), intel-oneapi-common-licensing-2023.2.0 +Filename: pool/main/intel-oneapi-ippcp-common-2021.8.0-2021.8.0-49490_all.deb +Size: 8064 +MD5sum: 29dde081877df42ac18018ad33a8d5bc +SHA1: b08383d13a11df7f3abd552058de97a0dcc5f943 +SHA256: 561d6f5704407dd6e59b91f08a71150f57a7593d8c053bd11535f0071a119d8b +SHA512: 54928597497ff661a016f3b580e58fc05e9bf141cd390eade0529dd573915e7a005ee94dc3f53b8e32cbc6ef351ca2368c525e093804329609960e75a5edae42 +Description: Intel® Integrated Performance Primitives Cryptography common + +Package: intel-oneapi-mkl-common-2023.2.0 +Architecture: all +Version: 2023.2.0-49495 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 142 +Depends: intel-oneapi-common-vars (>= 2023.2.0-0), intel-oneapi-common-licensing-2023.2.0 +Filename: pool/main/intel-oneapi-mkl-common-2023.2.0-2023.2.0-49495_all.deb +Size: 19942 +MD5sum: b7167d4548eacefdda8668cea0269d53 +SHA1: 659cdcbafef221592a9db5c708a7abb98e7b00e5 +SHA256: 0202cb8ad6681f47e290f689d142dae9d686e1d772b11f0b6a0f3b5b8bcf7398 +SHA512: f0b730f379926df53affce6e33f5a5e9b3f427d419efd1574d1fc3ba091a94e6c9a6dc8b1bb54f1de5163a04f9af07d3e5590c491599a54c31a5325eb7e85850 +Description: Intel® oneAPI Math Kernel Library 2023.2.0 for Linux* common + +Package: intel-oneapi-runtime-mkl-common +Architecture: all +Version: 2023.2.0-49495 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 114 +Depends: +Filename: pool/main/intel-oneapi-runtime-mkl-common-2023.2.0-49495_all.deb +Size: 15118 +MD5sum: bea09f975a77c4d210c0f39c492a1ab2 +SHA1: 26915cf081e0d2e3195f668d87d810ecdcc2b6a9 +SHA256: 669d40f8e8b57002d10101bc8f789db92def7926b3ff12f8e05eee2286ea55da +SHA512: d4e71cffd0f7097c7717fb41357b55db218517ab0e567364c2124b4ea251a10279f09c6eb9ea10c105158f54f6b1c131c37dcaa3f56213f0a649ba489dfd729c +Description: Intel® oneAPI Math Kernel Library runtime common + +Package: intel-oneapi-mkl-common-devel-2023.2.0 +Architecture: all +Version: 2023.2.0-49495 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 25946 +Depends: intel-oneapi-mkl-common-2023.2.0, intel-oneapi-common-vars (>= 2023.2.0-0), intel-oneapi-common-licensing-2023.2.0 +Filename: pool/main/intel-oneapi-mkl-common-devel-2023.2.0-2023.2.0-49495_all.deb +Size: 4610428 +MD5sum: 4601082299fb68b6ef3640caabe5ffdf +SHA1: 06479c7e281e03bc608931bf3a9d94122dda00dd +SHA256: 3de924a117afcfb7de6174ca338a3d436461ff41243a900449bada986a4b5c22 +SHA512: 3ebaa3e68b0ed94e5e8c8a1e39409b82b21435f687e0b577130347342419ba7e5491801e9b8fe701be22e097753b5c1f6e37b91eb1092dc93b9b0ac73445f818 +Description: Intel® oneAPI Math Kernel Library common + +Package: intel-iotkit-getting-started +Architecture: all +Version: 2023.2.0-49271 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 22 +Depends: +Filename: pool/main/intel-iotkit-getting-started-2023.2.0-49271_all.deb +Size: 3628 +MD5sum: 56146ba0d11e20fb700609dc2e722608 +SHA1: b8b68f561036ef69fada0a11cd2106cce5abd40a +SHA256: c20ac7eee7b334c4bbcbdba9e3b08781da1d947fd0c0552f14b04c1843ed8e2d +SHA512: 0952d25879baccd679a1fa19bec3a220a37c598ff2e17e0449cd169bed22e7c0a268419ec9f759cea4e4446ec0cbf5dffd1d82c5890d42794762c201cba78da3 +Description: Intel® oneAPI IoT Toolkit + +Package: intel-oneapi-icc-eclipse-plugin-cpp-2023.2.0 +Architecture: all +Version: 2023.2.0-49495 +Multi-Arch: +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: +Filename: pool/main/intel-oneapi-icc-eclipse-plugin-cpp-2023.2.0-2023.2.0-49495_all.deb +Size: 1980 +MD5sum: 8563e977e19b3b037daab48a3bda57c1 +SHA1: 6f248e09fa5fb69af842d616d8bbc3793a2875c9 +SHA256: eb464f0cd84f2dda48b1e58042bf29afa3a49d2277fc5d08171ad88d89c1c8dd +SHA512: 268dfab02c1f17af98e1b7067992299f3f3576985b5bb6ed5b90b9268208b948534efa2c3a35906b9b31249f6a62b6c6e76347a211f24d63d2f8f887ebf25790 +Description: Standards driven high performance cross architecture compiler and high performance C++ CPU focused compiler + +Package: intel-oneapi-compiler-dpcpp-eclipse-cfg +Architecture: all +Version: 2023.2.0-49495 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 25 +Depends: intel-oneapi-common-vars (>= 2023.2.0-0), intel-oneapi-common-licensing-2023.2.0 +Filename: pool/main/intel-oneapi-compiler-dpcpp-eclipse-cfg-2023.2.0-49495_all.deb +Size: 2064 +MD5sum: c4e99f611b6a06aee578eafb3ade246b +SHA1: 4929e06a7d0f6bf0a6d507479a788cd1af6c8a7d +SHA256: f275a736a439af5322ea9c19c50c4002f079cbce22775729498d886a0501eae8 +SHA512: b60b61cc627c730189bba952af7ce9328418acd758015f43ee41240326a9cc44f03e816cf6ac4c7415d58941e244dc22b02f9e45f3b05ec3081048e809624d8d +Description: Intel® oneAPI DPC++/C++ Compiler 2023.2.0 for Linux* eclipse integration configuration file (DPC++) + +Package: intel-oneapi-runtime-dpcpp-sycl-gpu-rt +Architecture: all +Version: 2023.2.0-49495 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-runtime-dpcpp-sycl-core (>= 2023.2.0-49495) +Filename: pool/main/intel-oneapi-runtime-dpcpp-sycl-gpu-rt-2023.2.0-49495_all.deb +Size: 1760 +MD5sum: 80004d8bd719e2821c0d583b0a5e685b +SHA1: c08e4039eb2ee64f5990ef927894b81be91b89e2 +SHA256: 46c08058beaaac532edda6a334c2c617933fb392d37932564eb91a79520d6317 +SHA512: 7e68825a889432878fb93080c84527106173f580e6b9de5b176cf37fd46fd98b27823733abebca3d1b43dc91f2fb85089d9f58da0146605dcb0a2fd132a5372e +Description: Intel® oneAPI DPC++/C++ Compiler SYCL* GPU Runtime + +Package: intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-common-2023.2.0 +Architecture: all +Version: 2023.2.0-49495 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 980 +Depends: intel-oneapi-compiler-dpcpp-cpp-common-2023.2.0, intel-oneapi-common-vars (>= 2023.2.0-0), intel-oneapi-common-licensing-2023.2.0 +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-common-2023.2.0-2023.2.0-49495_all.deb +Size: 116802 +MD5sum: 76815ab4a5eafeae8e33801f4b99e282 +SHA1: 1d20a2a053067db0ed1e1af217358412165a90d6 +SHA256: 873fb41c382e8cbfc259b58ab96c3bd988e18e55a5902113104b86540935d982 +SHA512: 37ccad325d4bb0d1386d898961bc6b98aad8dafc2d0b077310659989a75970f6fa737a15386fedac47930e177a5b957fd3d94eb08d016c5ff753d2153528b621 +Description: Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic 2023.2.0 for Linux* + +Package: intel-oneapi-runtime-dpcpp-sycl-fpga-rt +Architecture: all +Version: 2023.2.0-49495 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-runtime-dpcpp-sycl-rt (>= 2023.2.0-49495) +Filename: pool/main/intel-oneapi-runtime-dpcpp-sycl-fpga-rt-2023.2.0-49495_all.deb +Size: 1760 +MD5sum: 8c1439cc62abf4b503b370aa34e73d9a +SHA1: af200200ba900a2fb72769957e6ce6eebe17ba4b +SHA256: b71c18f1c2ac71bbe3eea8c7eac94caa51e15cf6a589431475c73e2e2f746ec9 +SHA512: 009580175930cb75d4c3b6822f7b1211fd059f5acecd8545a6e987b75e6418fdd27e100f735ee2766145452d75bbaf7f451f4f1fb1e79fde91dd6f0998c726f3 +Description: Intel® oneAPI DPC++/C++ Compiler SYCL* FPGA Runtime + +Package: intel-oneapi-runtime-compilers-common +Architecture: all +Version: 2023.2.0-49495 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 55 +Depends: +Filename: pool/main/intel-oneapi-runtime-compilers-common-2023.2.0-49495_all.deb +Size: 10288 +MD5sum: c1a5b044c3cd783ee71a734e691282a3 +SHA1: 7cfde0a164c729e77903e4c83daf0cef98d37332 +SHA256: 74c269100338d6590a52d96a2d8f52eb07a5261c97bf66f84bd653c2b369d543 +SHA512: 9f62d421d930535582845bbcb2a5e415c07b3b9049883eb3951e906b5fc475a2da23bfa8d356eec4a77f054aeadf033406deacc6b7bf6f4d956c90f7c86d8339 +Description: Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic runtime common files + +Package: intel-oneapi-compiler-dpcpp-cpp-common-2023.2.0 +Architecture: all +Version: 2023.2.0-49495 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 16088 +Depends: intel-oneapi-compiler-dpcpp-eclipse-cfg (>= 2023.2.0-49495), intel-oneapi-compiler-cpp-eclipse-cfg (>= 2023.2.0-49495), intel-oneapi-icc-eclipse-plugin-cpp-2023.2.0, intel-oneapi-common-vars (>= 2023.2.0-0), intel-oneapi-common-licensing-2023.2.0 +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-common-2023.2.0-2023.2.0-49495_all.deb +Size: 1994820 +MD5sum: 60170195962ce70c42b2f5dfd9f93434 +SHA1: 0049beb12950b6cf309a82bbda92c8f992edb70c +SHA256: 21d3b202f24b3c16a58749258b046ff22d07b0be88bd761bc5ea833e331ba430 +SHA512: 6c3435f456db896bcbf60aeb68bceb4c0d18aadbeed35ab982dc2cff0ead07d98de6e903873f602999abd6d3f485d67e936cfadb8d93b51a52499f9f98c3c276 +Description: Intel® oneAPI DPC++/C++ Compiler 2023.2.0 for Linux* + +Package: intel-oneapi-runtime-dpcpp-sycl-cpu-rt +Architecture: all +Version: 2023.2.0-49495 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-runtime-dpcpp-sycl-core (>= 2023.2.0-49495), intel-oneapi-runtime-dpcpp-sycl-opencl-cpu (>= 2023.2.0-49495) +Filename: pool/main/intel-oneapi-runtime-dpcpp-sycl-cpu-rt-2023.2.0-49495_all.deb +Size: 1768 +MD5sum: 8634dcd2d94244ac392d797c6b1fa7b0 +SHA1: 9662df308a3dcc1f519d1895e7c464636199f25c +SHA256: 069febb213d1408617d041c14f1de83b95971c1ce5dfc09509869f6d787a2423 +SHA512: cc2348923cddf0f9f9cacdae51dc6002ac558fc9512450539337a79aa913258c1bb459425628f3c65eecea059076d4e840bc8a76d917a060534b8f1f77da480f +Description: Intel® oneAPI DPC++/C++ Compiler SYCL* CPU Runtime + +Package: intel-oneapi-compiler-cpp-eclipse-cfg +Architecture: all +Version: 2023.2.0-49495 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 25 +Depends: intel-oneapi-common-vars (>= 2023.2.0-0), intel-oneapi-common-licensing-2023.2.0 +Filename: pool/main/intel-oneapi-compiler-cpp-eclipse-cfg-2023.2.0-49495_all.deb +Size: 2104 +MD5sum: a815c3e2c0d08e81847496fd8debb633 +SHA1: 1152b63040df8191605cd5a4010a84a05d3db543 +SHA256: 510cd6cd04d38b517aa1f06004d60dd24f2ca88657f89a88c2a39174248db065 +SHA512: ca09e32ec7354342c664d9792d10b62e5cb41ecf99bda9305238dbeadb9a3a55a03ec8d953bcb6e73bd4eaba9d24a98590c8f64d858cbf817fcdc3a1a6a0444c +Description: Intel® oneAPI DPC++/C++ Compiler 2023.2.0 for Linux* eclipse integration configuration file (C++) + +Package: intel-oneapi-runtime-dpcpp-sycl-rt +Architecture: all +Version: 2023.2.0-49495 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-runtime-dpcpp-sycl-cpu-rt (>= 2023.2.0-49495) +Filename: pool/main/intel-oneapi-runtime-dpcpp-sycl-rt-2023.2.0-49495_all.deb +Size: 1752 +MD5sum: 6a29651a08a52f49098423da3b7aa58d +SHA1: 15f2d223bcac4e082bfc73e42c6ff3fef04f7c33 +SHA256: c16657ac67ef28bd3aeb32aad6594dcec8d25792554e78694f8aa9a08e6bdb2f +SHA512: 2aba708fc5d6e155bea5100e8c8c226fde7243206640252a871cca70ce66bfc18652fd12fac484a116555c0953d77bb2be735c4645f3835254b0c590f58215a6 +Description: Intel® oneAPI DPC++/C++ Compiler SYCL* Runtime + +Package: intel-oneapi-runtime-dpcpp-sycl-fpga-emul +Architecture: all +Version: 2023.2.0-49495 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 36 +Depends: intel-oneapi-runtime-dpcpp-sycl-rt (>= 2023.2.0-49495) +Filename: pool/main/intel-oneapi-runtime-dpcpp-sycl-fpga-emul-2023.2.0-49495_all.deb +Size: 5584 +MD5sum: cdb67a8eb90682bc4f1d2eb8cce33315 +SHA1: b53bc7c556805d6eb47148960c4225d7ae8a0208 +SHA256: 3670508b9a2b2bc1328e70b63ad3244e27d00c258b3fca1cf01e5326e345debb +SHA512: c04ab311728b168deddaa692d479455137ef46ab2f6ef6e55f87fa185fa43f1ec608984c96418eda92b2e9116aac9de0568eabaa7f3dfb67fb7d0e2ff032cd72 +Description: Intel® oneAPI DPC++/C++ Compiler SYCL* FPGA Emulator Runtime + +Package: intel-oneapi-runtime-dpcpp-cpp-common +Architecture: all +Version: 2023.2.0-49495 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 102 +Depends: +Filename: pool/main/intel-oneapi-runtime-dpcpp-cpp-common-2023.2.0-49495_all.deb +Size: 12886 +MD5sum: b6232d77d28716ade46b4cb845dd5f5d +SHA1: fa6c044a0c5134f97dcb76841addd57f4b5a2612 +SHA256: 253ecaec448ceef81f060655831e2c9439392b229afff7f35fb093c1e903fa40 +SHA512: 76591159ddecd49de22b7661b36a402505c5fcd457facb911c011716d2cafcb0c59f7645b6612775b7b29bf23b73bc929d3239e6bce7d4062e79b4df69561e27 +Description: Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic runtime + +Package: intel-oneapi-openmp-common-2023.2.0 +Architecture: all +Version: 2023.2.0-49495 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 101 +Depends: intel-oneapi-common-vars (>= 2023.2.0-0), intel-oneapi-common-licensing-2023.2.0 +Filename: pool/main/intel-oneapi-openmp-common-2023.2.0-2023.2.0-49495_all.deb +Size: 17574 +MD5sum: 2ffcf61a91c36351c8ed0ca2e705eab2 +SHA1: 4b63fbf6a5e55a413ea729788953eba09786faab +SHA256: 41f0d48ae40951837ce50d891177073e7a7ac5054b17824d6dc1db7a5250bd4a +SHA512: 51dc030ded2a8ae409b061b23151b5ca5245829878240f1785843b61d76b88f1673fbfb4c93b91d89ec12317e4840d0817083ff298f8ee286a2e7388c54804e1 +Description: Intel® OpenMP* Runtime Library 2023.2.0 for Linux* + +Package: intel-oneapi-runtime-fortran-common +Architecture: all +Version: 2023.2.0-49495 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 102 +Depends: intel-oneapi-runtime-compilers-common (= 2023.2.0-49495) +Filename: pool/main/intel-oneapi-runtime-fortran-common-2023.2.0-49495_all.deb +Size: 12894 +MD5sum: 3415c5dec131d7731579a8079c8ccfab +SHA1: af51da9197486346d6387684fab15366ef38a6db +SHA256: b2d4361cf73bc64652fc7c0cf249d2893f5d5c1859346423901b61812394202f +SHA512: a8a29dd45eb775b05397d3ad38887ea894062c877c436e20ed3bff2bb17ebd5914ffc8ea8493c540d1fe83f2e47af1ef95440f7f553df7caadf71dfef25a4518 +Description: Intel® Fortran Compiler & Intel® Fortran Compiler Classic runtime + +Package: intel-oneapi-runtime-dpcpp-sycl-core +Architecture: all +Version: 2023.2.0-49495 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 5571 +Depends: +Filename: pool/main/intel-oneapi-runtime-dpcpp-sycl-core-2023.2.0-49495_all.deb +Size: 1167292 +MD5sum: 154905661b899be6dba4228a09023d1b +SHA1: 7b21ddddbd441a159198057008fe2b0b807c917c +SHA256: f1694cb4be4a3887718907f4bc4fedcb04c6648c0a1cde7bfcf9bc06ad12c59e +SHA512: b9c721c7d810bda15526b92ba1e358fe4657cb16ce5432d79479f8c9a2b069a4cdf64d541a3ed4b3abcafb02dadc2c16f575d89ca6c0ac4ae6ba3c332b415b01 +Description: Intel® oneAPI DPC++/C++ Compiler SYCL* Runtime Core + +Package: intel-oneapi-compiler-shared-common-2023.2.0 +Architecture: all +Version: 2023.2.0-49495 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 583969 +Depends: intel-oneapi-common-vars (>= 2023.2.0-0), intel-oneapi-common-licensing-2023.2.0 +Filename: pool/main/intel-oneapi-compiler-shared-common-2023.2.0-2023.2.0-49495_all.deb +Size: 110516162 +MD5sum: 96445a84598144446aa2af9f2b17b197 +SHA1: e31a984efd4c8cd5ec7ba54efa624c2caebea077 +SHA256: d3842d2f606449cf14a341f46d5d702a7851d42f4e49a0721829975cafbe7aa9 +SHA512: 89a4cba02310b1f4901477a39fb92fe31cfcaccbb8847d0c56230ed118b51cbb17b8a9bc65a01f01f5ea06bfc9f69298effe7098b04d911b20f45aa8295d61c1 +Description: Intel(R) Compiler Shared Files + +Package: intel-oneapi-compiler-fortran-common-2023.2.0 +Architecture: all +Version: 2023.2.0-49495 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1740 +Depends: intel-oneapi-compiler-shared-common-2023.2.0, intel-oneapi-common-vars (>= 2023.2.0-0), intel-oneapi-common-licensing-2023.2.0 +Filename: pool/main/intel-oneapi-compiler-fortran-common-2023.2.0-2023.2.0-49495_all.deb +Size: 186010 +MD5sum: 568e1184259821fb203844c2e68eb9ac +SHA1: 6616d3f44b084b3e1c9f7f489d0e6ed07b416945 +SHA256: 9d3f41c8eeeb9e68ab40e0bddf0e23fce8439d0858fb961944d8fdcc89f97f75 +SHA512: 0db7d366f258705c1ddfb65508c0b0f35cf9eb30ea213529f64ac145f4149f83ac7ff353be0156e30f18b80a1a44b9899b68fdd96704b335457e54f57c6fa9f9 +Description: Intel® Fortran Compiler & Intel® Fortran Compiler Classic 2023.2.0 for Linux* + +Package: intel-oneapi-dal-common-2023.2.0 +Architecture: all +Version: 2023.2.0-49572 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 176 +Depends: intel-oneapi-common-vars (>= 2023.2.0-0), intel-oneapi-common-licensing-2023.2.0 +Filename: pool/main/intel-oneapi-dal-common-2023.2.0-2023.2.0-49572_all.deb +Size: 31854 +MD5sum: 90245bbf80e53279672840c6d7dcf953 +SHA1: fc833bdb21da7c0258caab828add211a3d4b8e7c +SHA256: 8ace7f0251fa2cab4558230ffd362e69a8b17eea34739261f917276b0e2c233e +SHA512: 5e504b58015059ea05223430f65609789a9eef74b3814e7bccb898bb0dacf000bd76956b6a4dd9e6088f91dd8d41e0586dd24d9a9986ffc9d4d3a50837320f6b +Description: Intel® oneAPI Data Analytics Library common + +Package: intel-oneapi-dal-common-devel-2023.2.0 +Architecture: all +Version: 2023.2.0-49572 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 56216 +Depends: intel-oneapi-common-vars (>= 2023.2.0-0), intel-oneapi-common-licensing-2023.2.0 +Filename: pool/main/intel-oneapi-dal-common-devel-2023.2.0-2023.2.0-49572_all.deb +Size: 10506798 +MD5sum: 6eb9035b8acb638e65230e5efd3339b8 +SHA1: 97e5f30acfd84317a8aa1ff7741909cee07b8060 +SHA256: 8000cfd26c5f95beba9b1f503a3c924fecff546f3373250c6d2b123dbd59d772 +SHA512: 22a6ed4dea6ddc8d737184377d60c62c819bfac42092c2a61fd239b165cd1f8b341c4aef6e9b64e4ce9334b8f7ff54dd281ed42028e96b04cb6566e7106186b8 +Description: Intel® oneAPI Data Analytics Library common + +Package: intel-basekit-getting-started +Architecture: all +Version: 2023.2.0-49384 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 22 +Depends: +Filename: pool/main/intel-basekit-getting-started-2023.2.0-49384_all.deb +Size: 3624 +MD5sum: 5af71c10e3a5b32f103a657ff6050b19 +SHA1: 7cae0a8ef97f903ab181c7bbafba514761840566 +SHA256: 5a48cfe4604157a3f2dbbba82b619247e32921e366bad5686efe571f66e1625c +SHA512: 314fc76e90cc5bcba0d514c3bde4d268fbddc0efa8e51219bdb3753734d9b73fbd1b34bc2223ead0c0575b8c773a65dadf8d3d5bdbbcddf6cc07042b918a4607 +Description: Intel® oneAPI Base Toolkit + +Package: intel-hpckit-getting-started +Architecture: all +Version: 2023.2.0-49438 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 22 +Depends: +Filename: pool/main/intel-hpckit-getting-started-2023.2.0-49438_all.deb +Size: 3632 +MD5sum: 91703e7eee2bbef9171040335c664013 +SHA1: 270b50e91a664cf910524f2d117b2935cadfa083 +SHA256: c993c61526bffa48b570718dd871d1585a06cfdaec1480b9af115ed4783da10b +SHA512: 9f5c77f3eb9d5e088650b3a314847ac230e28aa4067d2e608fea21fc97b3d622c94695bc0a8b277d26dffdc5aad7e535a69a91043a7d3e4d6f1887eae09b3ecf +Description: Intel® oneAPI HPC Toolkit + +Package: intel-oneapi-dev-utilities-eclipse-cfg +Architecture: all +Version: 2021.10.0-49423 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 25 +Depends: intel-oneapi-common-vars (>= 2023.2.0-0), intel-oneapi-common-licensing-2023.2.0 +Filename: pool/main/intel-oneapi-dev-utilities-eclipse-cfg-2021.10.0-49423_all.deb +Size: 1976 +MD5sum: 7cae6f501f5bdc24f4a4e3f1e0cf3351 +SHA1: 2f7271f7ea15e406a7e09199d8e16f4d722b250a +SHA256: c368f68a8bffe940664d2a70a6917939bccd179768d2bce96b569e9f786d33cd +SHA512: b8b26681e6db77f5c1ac5c4ed6fcea59711b51aaac4fbcc55a9dcbaf49afbec8b5d96ba11c526b911effc0d047d0e2b71623d1fa97a89ac09223fad63b70bc02 +Description: intel-oneapi-dev-utilities-eclipse-cfg + +Package: intel-renderkit-getting-started +Architecture: all +Version: 2023.2.0-49365 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 22 +Depends: +Filename: pool/main/intel-renderkit-getting-started-2023.2.0-49365_all.deb +Size: 3636 +MD5sum: c92a14e000415350c7207c8cd8ca80cf +SHA1: ad954dc086dece0d7eefccbffc042248560dbe5a +SHA256: bc4c8b3f81ea84b9b1d8659e7546ac310bf5b38aa05fd080d6a19ad7737457a2 +SHA512: 9be216a9ec5192ffb70cf95127600f64f587d36ad4051fbc4d3eaef12b0aabf841300c26af34052b2c5a02dc3c74c1ed1947b0452b62516840f6a3bc3c9406c1 +Description: Intel® oneAPI Rendering Toolkit + +Package: intel-oneapi-common-licensing-2023.2.0 +Architecture: all +Version: 2023.2.0-49462 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 129 +Depends: +Filename: pool/main/intel-oneapi-common-licensing-2023.2.0-2023.2.0-49462_all.deb +Size: 30430 +MD5sum: f17e84ca750eff4cfbba8a0112012d21 +SHA1: f82ccaf83d29933818a75f4979c6d09ae6ed10b7 +SHA256: 7fb6da168435e124893271755f0c5a4a4b28379e5676a3f1a8baa6d57fb9062a +SHA512: 656406efc8f61c6376c0f1e7985f79261b47e273c3739f3c45cfd2d2f897b858c979662db2943971b6260192cdde662e99eec777c2b65ddf3303d40e558b7e44 +Description: oneAPI Common License + +Package: intel-oneapi-common-vars +Architecture: all +Version: 2023.2.0-49462 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 54 +Depends: intel-oneapi-common-licensing-2023.2.0 +Filename: pool/main/intel-oneapi-common-vars-2023.2.0-49462_all.deb +Size: 11910 +MD5sum: b8ac3da82559bd5f75ce7f9c093145f4 +SHA1: c262e5096a0b306e0a9b5b7d3d58543482e065ab +SHA256: e7631a3bdb9a2539aea1245fd7c3657ff31d47115534bd6b0e87dc62a9553b05 +SHA512: ddceca27077a16b4e87d621e208de9d5d1028ee273a86ec85a26e604ef34e543bdefd411c48be293e8387cc89ca839815853c60b450e271c8993d5369ae84d8b +Description: oneAPI Common Environment Scripts + +Package: intel-oneapi-common-licensing +Architecture: all +Version: 2023.2.0-49462 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-common-licensing-2023.2.0 +Filename: pool/main/intel-oneapi-common-licensing-2023.2.0-49462_all.deb +Size: 2152 +MD5sum: a8feb638ca61b99762d5d62cd132e59e +SHA1: 36e44457ee07d75dd496e7a753d6e25ef4f75810 +SHA256: bd74250aecb063622ee351589ebdf2ef563809cda73f947b04511b1bc0f1048e +SHA512: 3a6fcfad519dae3d36c5441417f2e35361cd122833b40a9d1bb8f5c159d04b693fe10bebf1a3faa805365ab8c1cc2f27c313bdb70e7ab30e4144b963885606cf +Description: oneAPI Common License + +Package: intel-oneapi-vtune-eclipse-plugin-vtune +Architecture: all +Version: 2023.2.0-49484 +Multi-Arch: +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: +Filename: pool/main/intel-oneapi-vtune-eclipse-plugin-vtune-2023.2.0-49484_all.deb +Size: 1984 +MD5sum: 7e7b0802f805883adfcc9c4ac85c7a2c +SHA1: e6ee4775686a6233177f6928b870e21df48c5238 +SHA256: 61cb9dddc409d63b6376dd5a03b3bf710aea0016ef1121ff47e7a659a08e0367 +SHA512: 57b3c07aacb0722f46d891c94ab24f7ea14c03e3b7c71c4f7b516f4e6b6b07ed6f46509070a0e89a69c9210515d878988ece4ce53483ec8e7cb25e3a6c08285f +Description: Locate and optimize performance bottlenecks fast across CPU, GPU, and FPGA systems. + +Package: intel-oneapi-ipp-common-2021.9.0 +Architecture: all +Version: 2021.9.0-49452 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 61 +Depends: intel-oneapi-common-vars (>= 2023.2.0-0), intel-oneapi-common-licensing-2023.2.0 +Filename: pool/main/intel-oneapi-ipp-common-2021.9.0-2021.9.0-49452_all.deb +Size: 10796 +MD5sum: 57eaedf23a73343e4d31a8d64d199611 +SHA1: be323b340d2456eac9ca9ba0f802dab30dc3083c +SHA256: 2d39f588c989ee5cd432b9d276840a61f5b6a8565be71615f05cd56bd3c001ef +SHA512: 30b74ee9776b24649faeb2dca43ec9153fefb45c5933b6966c2671968707f5c0249ad291fb915562655a8dbc56dee8cc8964b43b2b9c6f95fe039120d0cdd8ff +Description: Intel® Integrated Performance Primitives common + +Package: intel-oneapi-ipp-common-devel-2021.9.0 +Architecture: all +Version: 2021.9.0-49452 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 6213 +Depends: intel-oneapi-common-vars (>= 2023.2.0-0), intel-oneapi-common-licensing-2023.2.0 +Filename: pool/main/intel-oneapi-ipp-common-devel-2021.9.0-2021.9.0-49452_all.deb +Size: 3567668 +MD5sum: 87ab714243f8497ad63770cfdb2eb058 +SHA1: cd017531d72c2de080b046be7e4808d46c3a7a6f +SHA256: 4f2e927fee2d65db15c9df5f962cd4173ed704b838dc4da48f729c92a65805e4 +SHA512: 0171a8e4b825ff1ab3858ebfe0a312ebd9b99d40ff0ad1ae30c8050e756c090eac5434a71d3fda87d7c0ee98f27e3ecdba602954ca1b469cc0a86bf2b60a0560 +Description: Intel® Integrated Performance Primitives common + +Package: intel-oneapi-runtime-ipp-common +Architecture: all +Version: 2021.9.0-49452 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 51 +Depends: +Filename: pool/main/intel-oneapi-runtime-ipp-common-2021.9.0-49452_all.deb +Size: 8596 +MD5sum: 22291144f6f8f2a29bd9d74c8941fe3f +SHA1: f6891d7221e875abcc69a8a80b65f6e2dbfce1ea +SHA256: 11b829e61317edeeaaef6270f17193039f5c32a1d597a6b6e09f212bdc60d2d9 +SHA512: 80b50588c7fbb7a574de82f0ece4cb77991c065deecc57aa2a2e344c914545ec0e635e9c53d79179b5c2c90a0ea2416aac1cd7915efe2fec3067ed3a725d63cd +Description: Intel® Integrated Performance Primitives runtime common + diff --git a/bsc/intel-oneapi/amd64-packages b/bsc/intel-oneapi/amd64-packages new file mode 100644 index 0000000..fb51ac4 --- /dev/null +++ b/bsc/intel-oneapi/amd64-packages @@ -0,0 +1,34075 @@ +Package: intel-aikit-2021.1.0 +Architecture: amd64 +Version: 2021.1.0-935 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-aikit-getting-started (>= 2021.1.0-935), intel-oneapi-common-vars (>= 2021.1.1-60), intel-oneapi-common-licensing-2021.1.1 , intel-oneapi-dev-utilities-2021.1.1 , intel-oneapi-python (>= 2021.1.1-44), intel-oneapi-model-zoo (>= 1.8.0-204), intel-oneapi-pytorch (>= 1.5.0-726), intel-oneapi-ilit (>= 1.0.0-204), intel-oneapi-tensorflow (>= 2.2.0-219) +Filename: pool/main/intel-aikit-2021.1.0-2021.1.0-935_amd64.deb +Size: 1964 +MD5sum: 40243c6eafbea020503e13f668a50a9b +SHA1: 9529ce02e99356a9064b1badf4eed043e785663b +SHA256: 090be96602a102c048907dbf501b95084fae3e2d59cd76221025f79c9902655f +SHA512: 173ab8b21d27934b00206ccc4674ba1a5bac8c7ee3d0957b347556d5766cacb508867137ce459432eb6fbbbb76d869f710eef9e09ab414860152b8017dabf109 +Description: Intel® AI Analytics Toolkit + + +Package: intel-aikit +Architecture: amd64 +Version: 2021.1.0-935 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-aikit-getting-started (>= 2021.1.0-935), intel-oneapi-common-vars (>= 2021.1.1-60), intel-oneapi-common-licensing (>= 2021.1.1-60), intel-oneapi-dev-utilities (>= 2021.1.1-197), intel-oneapi-python (>= 2021.1.1-44), intel-oneapi-model-zoo (>= 1.8.0-204), intel-oneapi-pytorch (>= 1.5.0-726), intel-oneapi-ilit (>= 1.0.0-204), intel-oneapi-tensorflow (>= 2.2.0-219) +Filename: pool/main/intel-aikit-2021.1.0-935_amd64.deb +Size: 1962 +MD5sum: 7cedf1597121954562d3318e92278900 +SHA1: f63ea1f5ab6701de4a3f587ff07c1bd15ea7be84 +SHA256: e8c774bd62b0781a7720203f1ccb34c0eb8f188b04cfa751e23e162e549842e7 +SHA512: a16d728c2265453c0f6cfdb0a7a20c1010818243e90cfdcfb6b6aabb774de5cf8e76af6447d1cd152c077f9bfacb521fd7ddca52e650459fff34ddaca2a99225 +Description: Intel® AI Analytics Toolkit + + +Package: intel-aikit +Architecture: amd64 +Version: 2021.2.0-1101 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-aikit-getting-started (>= 2021.2.0-1101), intel-oneapi-common-vars (>= 2021.2.0-195), intel-oneapi-common-licensing (>= 2021.2.0-195), intel-oneapi-dev-utilities (>= 2021.2.0-493), intel-oneapi-ilit (>= 1.0.0-319), intel-oneapi-python (>= 2021.2.0-161), intel-oneapi-tensorflow (>= 2.3.0-365), intel-oneapi-pytorch (>= 1.7.0-846), intel-oneapi-model-zoo (>= 2.2.0-287) +Filename: pool/main/intel-aikit-2021.2.0-1101_amd64.deb +Size: 1968 +MD5sum: 65988f59fbed481170f45887d9d5a923 +SHA1: 2c46b23f42334e95c96ef36df646beba5adcd25c +SHA256: 6ccc21339f3f6e634d0d02cf5403ef9932ffd5359c98ade2bb1bebd043bc37c3 +SHA512: f2c7852ba4d3459c68d56d680f7e4a05e2076889161233122bf70f00d541b2b1a9009ca351259bf635181cace08b5da7c19946c18ff9def078a861cdee75b4b3 +Description: Intel® oneAPI AI Analytics Toolkit + + +Package: intel-aikit-2021.2.0 +Architecture: amd64 +Version: 2021.2.0-1101 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-aikit-getting-started (>= 2021.2.0-1101), intel-oneapi-common-vars (>= 2021.2.0-195), intel-oneapi-common-licensing-2021.2.0 , intel-oneapi-dev-utilities-2021.2.0 , intel-oneapi-ilit (>= 1.0.0-319), intel-oneapi-python (>= 2021.2.0-161), intel-oneapi-tensorflow (>= 2.3.0-365), intel-oneapi-pytorch (>= 1.7.0-846), intel-oneapi-model-zoo (>= 2.2.0-287) +Filename: pool/main/intel-aikit-2021.2.0-2021.2.0-1101_amd64.deb +Size: 1970 +MD5sum: 0bb0740c98c729d75711af6c6f7308d7 +SHA1: 0b36797f0a4d7d807473d12fa1c9dc8bf2cb2d12 +SHA256: a893f531dabbbae872b73d40eeba996df494a188593a72a0717781459f16a77a +SHA512: 17094b0cab125ff8584a236e41608c17e9c03df5ab88c0a9db2166e05463ae771224731d26794fc5fdf12be4356ca38a95d156e540b86fb5c687e5021b90d694 +Description: Intel® oneAPI AI Analytics Toolkit + + +Package: intel-aikit +Architecture: amd64 +Version: 2021.3.0-1370 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-aikit-getting-started (>= 2021.3.0-1370), intel-oneapi-common-vars (>= 2021.3.0-261), intel-oneapi-common-licensing (>= 2021.3.0-261), intel-oneapi-dev-utilities (>= 2021.3.0-691), intel-oneapi-python (>= 2021.3.0-3209), intel-oneapi-pytorch (>= 1.8.0-1075), intel-oneapi-tensorflow (>= 2.5.0-563), intel-oneapi-lpot (>= 1.4.1.0-454), intel-oneapi-model-zoo (>= 2.4.0-344) +Filename: pool/main/intel-aikit-2021.3.0-1370_amd64.deb +Size: 1974 +MD5sum: 18da05c67de23d4592dd35c00b30e703 +SHA1: e96f539f0459ccc84d35e67c108b10212321bf13 +SHA256: d7c9cbbde5041331f5eec8281d8e89c30fdf0bc21fb5f8060e06c417d811938d +SHA512: 52254033b504ac02c3f17ab463693a9e7a308c748bca5f7dc864c9cdd5d8bec7183ff8355f60e9f92c594101b31c752dd48ef9fb32ea75c7021bbef4af15a680 +Description: Intel® oneAPI AI Analytics Toolkit + + +Package: intel-aikit-2021.3.0 +Architecture: amd64 +Version: 2021.3.0-1370 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-aikit-getting-started (>= 2021.3.0-1370), intel-oneapi-common-vars (>= 2021.3.0-261), intel-oneapi-common-licensing-2021.3.0 , intel-oneapi-dev-utilities-2021.3.0 , intel-oneapi-python (>= 2021.3.0-3209), intel-oneapi-pytorch (>= 1.8.0-1075), intel-oneapi-tensorflow (>= 2.5.0-563), intel-oneapi-lpot (>= 1.4.1.0-454), intel-oneapi-model-zoo (>= 2.4.0-344) +Filename: pool/main/intel-aikit-2021.3.0-2021.3.0-1370_amd64.deb +Size: 1976 +MD5sum: 78881180a9e80bf090b9e2ff5cf27ddf +SHA1: 15d4da73e7658c24322f3ea4ce647837cbe42f1b +SHA256: 70a79d6b6cabfa3721d7ffbffb2b3da5e0cdb534dc610eb81d13462cd0b9768e +SHA512: eab558be5ed98d3b13c6dd417fffbf8aeacb3fada82b39ad6738ee4783049deb6024fa97c036ddd206666dddc76a2a554fbe2e422128913808cd47e6f3fd45bb +Description: Intel® oneAPI AI Analytics Toolkit + + +Package: intel-aikit +Architecture: amd64 +Version: 2021.4.0-1460 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-aikit-getting-started (>= 2021.4.0-1460), intel-oneapi-common-vars (>= 2021.4.0-327), intel-oneapi-common-licensing (>= 2021.4.0-327), intel-oneapi-dev-utilities (>= 2021.4.0-847), intel-oneapi-python (>= 2021.4.0-3353), intel-oneapi-lpot (>= 1.5.1.0-537), intel-oneapi-pytorch (>= 1.8.0-1194), intel-oneapi-tensorflow (>= 2.5.0-736), intel-oneapi-model-zoo (>= 2.4.0-417) +Filename: pool/main/intel-aikit-2021.4.0-1460_amd64.deb +Size: 1974 +MD5sum: f4bae71a04c465f4a2f91ae2d2983c50 +SHA1: 21e8980a901ff2d55d66094c34e18268f4f0e67a +SHA256: 9d0f86d5be6a37c8d7e9f1b5bcab6b3663b20dc1c53881c16b9ef057a59e0470 +SHA512: d1958b0fba86bac1394140aa08e573dc01d9df4f8b2d01ca0efc91b0e718846b2d5ad4cbd61ac6710880dcb97e8e000a9c88a2bb7e9b046d6c6880d46d2e7596 +Description: Intel® oneAPI AI Analytics Toolkit + + +Package: intel-aikit-2021.4.0 +Architecture: amd64 +Version: 2021.4.0-1460 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-aikit-getting-started (>= 2021.4.0-1460), intel-oneapi-common-vars (>= 2021.4.0-327), intel-oneapi-common-licensing-2021.4.0 , intel-oneapi-dev-utilities-2021.4.0 , intel-oneapi-python (>= 2021.4.0-3353), intel-oneapi-lpot (>= 1.5.1.0-537), intel-oneapi-pytorch (>= 1.8.0-1194), intel-oneapi-tensorflow (>= 2.5.0-736), intel-oneapi-model-zoo (>= 2.4.0-417) +Filename: pool/main/intel-aikit-2021.4.0-2021.4.0-1460_amd64.deb +Size: 1974 +MD5sum: a595b185746b4e8a97b4ec10ee6f566a +SHA1: a703a9048fdb8e68d72d17891f0afd6a5cb5e186 +SHA256: 47c3bcf0cdc6d4f36c08d5116f5f30b008a31042224867bb008a716b85f11fb1 +SHA512: f2ce8c08d7331d593ecbaa73a746a2026a190e05a041ecae7f85e3a7bc12a60a0b3a3f254c05bee0479beb578bd1520d3c37995833927f8dd7e5884e8a47e635 +Description: Intel® oneAPI AI Analytics Toolkit + + +Package: intel-aikit +Architecture: amd64 +Version: 2022.1.1-106 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-aikit-getting-started (>= 2022.1.1-106), intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing (>= 2022.0.0-59), intel-oneapi-model-zoo (>= 2.5.0-63), intel-oneapi-dev-utilities (>= 2021.5.1-924), intel-oneapi-python (>= 2022.0.1-127), intel-oneapi-neural-compressor (>= 1.7.0-597), intel-oneapi-pytorch (>= 1.8.0-1262), intel-oneapi-tensorflow (>= 2.6.0-101) +Filename: pool/main/intel-aikit-2022.1.1-106_amd64.deb +Size: 1986 +MD5sum: e7f6aa28c1258b4acbbf37fd6919490b +SHA1: e3a4a33424e42536f1aba613a6721322eb4c0a2a +SHA256: 1cb2ab95ea730aa079fae76ef8451fe1e9d49f251d1a8bdee6afe4ede94e7e50 +SHA512: 2874a203ca9a2517e0c91b112ceb4d16aac347da14cafa8477877eafd28abc91a5442df6354f8b79cbfee2d2ad7694c44f85805da232fa4a4d42486347b11d4b +Description: Intel® oneAPI AI Analytics Toolkit + + +Package: intel-aikit-2022.1.1 +Architecture: amd64 +Version: 2022.1.1-106 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-aikit-getting-started (>= 2022.1.1-106), intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 , intel-oneapi-model-zoo (>= 2.5.0-63), intel-oneapi-dev-utilities-2021.5.1 , intel-oneapi-python (>= 2022.0.1-127), intel-oneapi-neural-compressor (>= 1.7.0-597), intel-oneapi-pytorch (>= 1.8.0-1262), intel-oneapi-tensorflow (>= 2.6.0-101) +Filename: pool/main/intel-aikit-2022.1.1-2022.1.1-106_amd64.deb +Size: 1986 +MD5sum: a162a529a09349a650cb617bb1371fff +SHA1: a302928778af9516a47fa3169b54aa02a7041f4c +SHA256: 695a92761fdd1735bb70df3fc57e5d862e5b372c69f790b93346c182f81bc898 +SHA512: 1dc433b875e6ac251c71ac93da0be1ab3ab5dbfe69bfe32f74cd4c7c4c7130f487fabd5fae6c0722c5e1994c65c32c816a32c522ca041aa26e296c0f331aa491 +Description: Intel® oneAPI AI Analytics Toolkit + + +Package: intel-aikit +Architecture: amd64 +Version: 2022.1.2-135 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-aikit-getting-started (>= 2022.1.2-135), intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing (>= 2022.0.0-59), intel-oneapi-model-zoo (>= 2.5.0-63), intel-oneapi-dev-utilities (>= 2021.5.2-936), intel-oneapi-python (>= 2022.0.2-155), intel-oneapi-neural-compressor (>= 1.7.0-616), intel-oneapi-tensorflow (>= 2.6.0-128), intel-oneapi-pytorch (>= 1.8.0-1291) +Filename: pool/main/intel-aikit-2022.1.2-135_amd64.deb +Size: 1988 +MD5sum: 0f18242d219b6800e40b2179372a1044 +SHA1: 9539b0a9cd170c1a0883291d3a484e528bba9f06 +SHA256: 8e88f834d89a3aec464869a410b2832a6941d529ab37f1990711d5929d74b71f +SHA512: e21af6e5fc55984d0845b54a7f7e35869ee4b7e5e093ba4ef6903c64ba8880620e08be1310fbe28dad8045fd3f3f08b3bf725c7acd986e8493f278e1ad8897f5 +Description: Intel® oneAPI AI Analytics Toolkit + + +Package: intel-aikit-2022.1.2 +Architecture: amd64 +Version: 2022.1.2-135 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-aikit-getting-started (>= 2022.1.2-135), intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 , intel-oneapi-model-zoo (>= 2.5.0-63), intel-oneapi-dev-utilities-2021.5.2 , intel-oneapi-python (>= 2022.0.2-155), intel-oneapi-neural-compressor (>= 1.7.0-616), intel-oneapi-tensorflow (>= 2.6.0-128), intel-oneapi-pytorch (>= 1.8.0-1291) +Filename: pool/main/intel-aikit-2022.1.2-2022.1.2-135_amd64.deb +Size: 1986 +MD5sum: 2e530d715e7ab5e9b586a69081f6dd5d +SHA1: 353b5b8ab8a37fdc521967bd1b7ead68d772959d +SHA256: 1938c7539100406ef951433cf69c0e6d68b1140b4588eb84e242b9ebb953d741 +SHA512: 22f2368d23ee62c03fa6b159b839cbc419ad66b6f1dc1088b71902bc242c89dd252f7cad268060d0c1afd7f09b7fcf2e3970dfd2704503451c8efb4026fdd7ce +Description: Intel® oneAPI AI Analytics Toolkit + + +Package: intel-aikit-2022.2.0 +Architecture: amd64 +Version: 2022.2.0-231 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-aikit-getting-started (>= 2022.2.0-231), intel-oneapi-common-vars (>= 2022.1.0-161), intel-oneapi-common-licensing-2022.1.0 , intel-oneapi-dev-utilities-2021.6.0 , intel-oneapi-model-zoo (>= 2.5.0-146), intel-oneapi-python (>= 2022.1.0-214), intel-oneapi-tensorflow (>= 2.8.0-243), intel-oneapi-neural-compressor (>= 1.10.0-703), intel-oneapi-pytorch (>= 1.10.0-1427), intel-oneapi-modin (>= 0.13.3-69) +Filename: pool/main/intel-aikit-2022.2.0-2022.2.0-231_amd64.deb +Size: 2072 +MD5sum: 1bc78c777cacf6f055cb58645e10bf1a +SHA1: d30f242ab8b1786eaa28351eda496fa76f3529b9 +SHA256: d1e19b63216ff4af75605bfba07ffa1dcf552600009ee100b756e6c02bfba4c7 +SHA512: 5725892dafc439e27bf434cf5e77903f2f1df8ac3c3e0ad9cbf2a32d970faf26b17eaf30b59640c49406c3e09b473c2ad49bdd7beab65888304786b5974af012 +Description: Intel® oneAPI AI Analytics Toolkit + + +Package: intel-aikit +Architecture: amd64 +Version: 2022.2.0-231 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-aikit-getting-started (>= 2022.2.0-231), intel-oneapi-common-vars (>= 2022.1.0-161), intel-oneapi-common-licensing (>= 2022.1.0-161), intel-oneapi-dev-utilities (>= 2021.6.0-989), intel-oneapi-model-zoo (>= 2.5.0-146), intel-oneapi-python (>= 2022.1.0-214), intel-oneapi-tensorflow (>= 2.8.0-243), intel-oneapi-neural-compressor (>= 1.10.0-703), intel-oneapi-pytorch (>= 1.10.0-1427), intel-oneapi-modin (>= 0.13.3-69) +Filename: pool/main/intel-aikit-2022.2.0-231_amd64.deb +Size: 2072 +MD5sum: 13ed57af2144410b9a53b8de95064cd0 +SHA1: b8266688109e7a8f90dd7168ec775ec50c6eee7b +SHA256: d0efba8f43b544b3d3be433034f5ddb057cea5fc25e1985edaa02fb316e2f3e4 +SHA512: 6344c441e960fdb3f715b4f4cfb3fddff392053404be71020918ba49cc0375ed8deab79beb1d0fd5973d347f45429b1cfab55d4098a62d36b955edbe0be55e59 +Description: Intel® oneAPI AI Analytics Toolkit + + +Package: intel-aikit-2022.3.0 +Architecture: amd64 +Version: 2022.3.0-8775 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-aikit-getting-started (>= 2022.3.0-8775), intel-oneapi-common-vars (>= 2022.2.0-8694), intel-oneapi-common-licensing-2022.2.0 , intel-oneapi-dev-utilities-2021.7.0 , intel-oneapi-model-zoo (>= 2.8.0-8699), intel-oneapi-python (>= 2022.2.0-8762), intel-oneapi-tensorflow (>= 2.9.1.0-8766), intel-oneapi-neural-compressor (>= 1.13.0-8764), intel-oneapi-pytorch (>= 1.12.0-8768), intel-oneapi-modin (>= 0.13.3-8765) +Filename: pool/main/intel-aikit-2022.3.0-2022.3.0-8775_amd64.deb +Size: 2072 +MD5sum: 0f3dc68b1f8f65dea50ce389bfe2ccbc +SHA1: e8e05698090e4717b017659cc0185e520b0b59b1 +SHA256: fe037b3a371bc48b3ed6fd94899cd8023f520ba584302dfee7892d347e7f7fe8 +SHA512: 8a9c1deeae8bac963eabc45cf262535803a80cd9c530d12e0bc46bab9d1a92faa9b203533dd00a6a114ac6d09ac90cf7bc6bedf4d0b096e4f0a544c0facd075b +Description: Intel® oneAPI AI Analytics Toolkit + + +Package: intel-aikit +Architecture: amd64 +Version: 2022.3.0-8775 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-aikit-getting-started (>= 2022.3.0-8775), intel-oneapi-common-vars (>= 2022.2.0-8694), intel-oneapi-common-licensing (>= 2022.2.0-8694), intel-oneapi-dev-utilities (>= 2021.7.0-8698), intel-oneapi-model-zoo (>= 2.8.0-8699), intel-oneapi-python (>= 2022.2.0-8762), intel-oneapi-tensorflow (>= 2.9.1.0-8766), intel-oneapi-neural-compressor (>= 1.13.0-8764), intel-oneapi-pytorch (>= 1.12.0-8768), intel-oneapi-modin (>= 0.13.3-8765) +Filename: pool/main/intel-aikit-2022.3.0-8775_amd64.deb +Size: 2060 +MD5sum: 5abc2e7c52da13165f305d24e7aa54ef +SHA1: 8fee7c376f7173fdafcd182d90fe642772e0a3df +SHA256: 0e263e3625782335e9df20e0de35be3b557acba0e19421c0c008bf53c308edd5 +SHA512: f56ec233e9bf4c16e96d1a3a400ad6374de774b671582b1e80ae147feca79683ac41442567ea4d68fda42e3b985b4524d05be1444a0263eda57984a650e261ea +Description: Intel® oneAPI AI Analytics Toolkit + + +Package: intel-aikit-2022.3.1 +Architecture: amd64 +Version: 2022.3.1-20890 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-aikit-getting-started (>= 2022.3.1-20890), intel-oneapi-common-vars (>= 2022.2.1-14969), intel-oneapi-common-licensing-2022.2.1 , intel-oneapi-dev-utilities-2021.7.1 , intel-oneapi-model-zoo (>= 2.8.0-20880), intel-oneapi-python (>= 2022.2.1-17274), intel-oneapi-tensorflow (>= 2.9.1.0-20877), intel-oneapi-neural-compressor (>= 1.13.0-20878), intel-oneapi-pytorch (>= 1.12.0-20888), intel-oneapi-modin (>= 0.13.3-20879) +Filename: pool/main/intel-aikit-2022.3.1-2022.3.1-20890_amd64.deb +Size: 2072 +MD5sum: e217eb78a1da2770a2dd86426de80fae +SHA1: 4575dcf8246a6d3f92a70dab536a1c228fff0785 +SHA256: a0817d353580fe0f4f8a840643f1db34760a94e101144438a4d1b82f5cdc455a +SHA512: 1829385b9d05603fe5bdd1c67298f00cc9cacc8965d2c88e7a2cd11a58a540bfdf0f87d06ad6b57dbfadaca480b2da72a3e2c20a885826e985a48fd876f9dae6 +Description: Intel® oneAPI AI Analytics Toolkit + + +Package: intel-aikit +Architecture: amd64 +Version: 2022.3.1-20890 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-aikit-getting-started (>= 2022.3.1-20890), intel-oneapi-common-vars (>= 2022.2.1-14969), intel-oneapi-common-licensing (>= 2022.2.1-14969), intel-oneapi-dev-utilities (>= 2021.7.1-14991), intel-oneapi-model-zoo (>= 2.8.0-20880), intel-oneapi-python (>= 2022.2.1-17274), intel-oneapi-tensorflow (>= 2.9.1.0-20877), intel-oneapi-neural-compressor (>= 1.13.0-20878), intel-oneapi-pytorch (>= 1.12.0-20888), intel-oneapi-modin (>= 0.13.3-20879) +Filename: pool/main/intel-aikit-2022.3.1-20890_amd64.deb +Size: 2068 +MD5sum: 0d4497d4a0ac3bb42a4eebb2f74b0efe +SHA1: 6a2d7e3d069b17c66869eac29b408da0a30531a0 +SHA256: a689928e47bc4e6cc2c834160b996a1180e7c821e8a0097483659abadd4ca0a8 +SHA512: 3eb201b6479fb0e36040142dde8e0c3298cf46b49e8af9f9b6ee758c912aab92426ccca25957d6120fb16b9f5cd0f441321a4f251a723c0d978f7b53e316423a +Description: Intel® oneAPI AI Analytics Toolkit + + +Package: intel-aikit-2023.0.0 +Architecture: amd64 +Version: 2023.0.0-25695 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-aikit-getting-started (>= 2023.0.0-25695), intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing-2023.0.0 , intel-oneapi-dev-utilities-2021.8.0 , intel-oneapi-model-zoo (>= 2.8.0-25330), intel-oneapi-python (>= 2023.0.0-25636), intel-oneapi-tensorflow (>= 2.9.1.0-25640), intel-oneapi-neural-compressor (>= 1.13.0-25641), intel-oneapi-pytorch (>= 1.12.0-25649), intel-oneapi-modin (>= 0.17.0-25642) +Filename: pool/main/intel-aikit-2023.0.0-2023.0.0-25695_amd64.deb +Size: 2064 +MD5sum: 33a56ad0ab0d482570b81e14f4319e4e +SHA1: 45cd43f1f4cd2d6152a827b93a965ec040c30379 +SHA256: 87d3d05f05d9e68c16ee86a682abc62436bffe24f576441d2a07aa875e225f93 +SHA512: b87e407c90401ffe758f2df91527455355bc06cf2abb8ed3d4a90dbfe21a7076c6e749706f7cbf6ccfda71d9854b4474401baa1be7e0cf58c8bc2de0d996f0d3 +Description: Intel® oneAPI AI Analytics Toolkit + + +Package: intel-aikit-2023.0.0 +Architecture: amd64 +Version: 2023.0.0-25823 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-aikit-getting-started (>= 2023.0.0-25823), intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing-2023.0.0 , intel-oneapi-dev-utilities-2021.8.0 , intel-oneapi-model-zoo (>= 2.8.0-25330), intel-oneapi-python (>= 2023.0.0-25636), intel-oneapi-tensorflow (>= 2.9.1.0-25822), intel-oneapi-neural-compressor (>= 1.13.0-25641), intel-oneapi-pytorch (>= 1.12.0-25649), intel-oneapi-modin (>= 0.17.0-25642) +Filename: pool/main/intel-aikit-2023.0.0-2023.0.0-25823_amd64.deb +Size: 2068 +MD5sum: 0780a10271b6f79ddfadfb03768d0cac +SHA1: 6d98abe9488c201a1bf47c441207f636b753c1af +SHA256: 9d905562c5595ffd893e87517ff38d49e5667f5e8d36f8e88d3185914a63ed87 +SHA512: 48e4eb00023de935db757ab36ca9a1888a9b55085739956c15ad6ab0876674a91e903bec76f168b1f2e1b3293a58d7578f488823f45739114da2ac3950822671 +Description: Intel® oneAPI AI Analytics Toolkit + + +Package: intel-aikit-2023.0.0 +Architecture: amd64 +Version: 2023.0.0-25859 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-aikit-getting-started (>= 2023.0.0-25859), intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing-2023.0.0 , intel-oneapi-dev-utilities-2021.8.0 , intel-oneapi-model-zoo (>= 2.8.0-25330), intel-oneapi-python (>= 2023.0.0-25636), intel-oneapi-tensorflow (>= 2.9.1.1-25852), intel-oneapi-neural-compressor (>= 1.13.0-25641), intel-oneapi-pytorch (>= 1.12.0.1-25853), intel-oneapi-modin (>= 0.17.0-25642) +Filename: pool/main/intel-aikit-2023.0.0-2023.0.0-25859_amd64.deb +Size: 2072 +MD5sum: 4c4b4a7087fad499e85cd37c7f08cfa4 +SHA1: b4a5a2d26fadc2a7114e0a4def5cac42c817afe7 +SHA256: a91d9001dca420dc6e228d6c5831a7db8f62690f69361116f1418f25c46425f0 +SHA512: 76dfa026377768ea01b62748275942af713553af1bf7226558243d22e7074cab3340da46e2ce2ddbbc76f4024c3449f319e64fea52205000a26f36eaeb272d92 +Description: Intel® oneAPI AI Analytics Toolkit + + +Package: intel-aikit-2023.0.0 +Architecture: amd64 +Version: 2023.0.0-26100 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-aikit-getting-started (>= 2023.0.0-26100), intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing-2023.0.0 , intel-oneapi-dev-utilities-2021.8.0 , intel-oneapi-model-zoo (>= 2.8.0-25330), intel-oneapi-python (>= 2023.0.0-25636), intel-oneapi-tensorflow (>= 2.9.1.1-25852), intel-oneapi-neural-compressor (>= 1.13.0-26098), intel-oneapi-pytorch (>= 1.12.0.1-26099), intel-oneapi-modin (>= 0.17.0-26095) +Filename: pool/main/intel-aikit-2023.0.0-2023.0.0-26100_amd64.deb +Size: 2076 +MD5sum: 2b0ff050aebfd58119401eb355c84a87 +SHA1: 1bc4945248b06698c8eeab9491793f8398ea47bd +SHA256: 0ddb8214707b7e87883aa880804caa20f921630af3d2105c9937924f775c7098 +SHA512: c7d20966942c732c718e6809490ba4b45e0c10000f9e5054e672edfa8b1596156f4739080e65edd6f65ad349e3c0aedabdf8f59696570adeb3a2d463c8d7e2de +Description: Intel® oneAPI AI Analytics Toolkit + + +Package: intel-aikit +Architecture: amd64 +Version: 2023.0.0-25695 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-aikit-getting-started (>= 2023.0.0-25695), intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing (>= 2023.0.0-25325), intel-oneapi-dev-utilities (>= 2021.8.0-25328), intel-oneapi-model-zoo (>= 2.8.0-25330), intel-oneapi-python (>= 2023.0.0-25636), intel-oneapi-tensorflow (>= 2.9.1.0-25640), intel-oneapi-neural-compressor (>= 1.13.0-25641), intel-oneapi-pytorch (>= 1.12.0-25649), intel-oneapi-modin (>= 0.17.0-25642) +Filename: pool/main/intel-aikit-2023.0.0-25695_amd64.deb +Size: 2056 +MD5sum: cc3216b04efffcb3d492ae6a93cb8276 +SHA1: f28553a43a4e2359cdaba830b79f525e7e90295d +SHA256: 981a0a0ff5b99811380e2e8a08e92f1bc8c8ce69606ba3647d4b6cd0eadcd97d +SHA512: 54acb78a91ac27b98ace46a880a08963c10f54408542876e524c155927c6e9cc85a3f47831f99223543d66d3c68fa5bd48c98aa581c057226c7e9e2dfab104f2 +Description: Intel® oneAPI AI Analytics Toolkit + + +Package: intel-aikit +Architecture: amd64 +Version: 2023.0.0-25823 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-aikit-getting-started (>= 2023.0.0-25823), intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing (>= 2023.0.0-25325), intel-oneapi-dev-utilities (>= 2021.8.0-25328), intel-oneapi-model-zoo (>= 2.8.0-25330), intel-oneapi-python (>= 2023.0.0-25636), intel-oneapi-tensorflow (>= 2.9.1.0-25822), intel-oneapi-neural-compressor (>= 1.13.0-25641), intel-oneapi-pytorch (>= 1.12.0-25649), intel-oneapi-modin (>= 0.17.0-25642) +Filename: pool/main/intel-aikit-2023.0.0-25823_amd64.deb +Size: 2060 +MD5sum: b40a7cb6463e35b9aae164312d1d3957 +SHA1: 7b2270326bb40d187bc3aa26b61189deb14b8d1a +SHA256: 9012af704af8079110fb768fcb9d2b740953bd1b07dc7a00c2d545acdc600508 +SHA512: cde8e43ea39487e24f36ee24e74db7154b7241a8e4dd2292d856ddb4643de9a1fb2b306e9cbc0b553744d891a27bbffc592a2934b579bbcd20e83b212c2de9e6 +Description: Intel® oneAPI AI Analytics Toolkit + + +Package: intel-aikit +Architecture: amd64 +Version: 2023.0.0-25859 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-aikit-getting-started (>= 2023.0.0-25859), intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing (>= 2023.0.0-25325), intel-oneapi-dev-utilities (>= 2021.8.0-25328), intel-oneapi-model-zoo (>= 2.8.0-25330), intel-oneapi-python (>= 2023.0.0-25636), intel-oneapi-tensorflow (>= 2.9.1.1-25852), intel-oneapi-neural-compressor (>= 1.13.0-25641), intel-oneapi-pytorch (>= 1.12.0.1-25853), intel-oneapi-modin (>= 0.17.0-25642) +Filename: pool/main/intel-aikit-2023.0.0-25859_amd64.deb +Size: 2068 +MD5sum: 597d960fec7b2289ac0d1c046191f3bf +SHA1: cd555d35fd27e253a2f34c75114b638d12c8c17e +SHA256: 33c958b6724174c0270184c2a4c441d84d996606ca22fa9016ea24a8b0aeecb5 +SHA512: 05abd11d265dc36dfdf002bea9bc306df6815cf50d8383f035ab019cc861a455937c97e6aa95734d6196a9bc9f744cf592d53f074e580af2b2bc7482ebf5fc43 +Description: Intel® oneAPI AI Analytics Toolkit + + +Package: intel-aikit +Architecture: amd64 +Version: 2023.0.0-26100 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-aikit-getting-started (>= 2023.0.0-26100), intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing (>= 2023.0.0-25325), intel-oneapi-dev-utilities (>= 2021.8.0-25328), intel-oneapi-model-zoo (>= 2.8.0-25330), intel-oneapi-python (>= 2023.0.0-25636), intel-oneapi-tensorflow (>= 2.9.1.1-25852), intel-oneapi-neural-compressor (>= 1.13.0-26098), intel-oneapi-pytorch (>= 1.12.0.1-26099), intel-oneapi-modin (>= 0.17.0-26095) +Filename: pool/main/intel-aikit-2023.0.0-26100_amd64.deb +Size: 2068 +MD5sum: 1a59ad42242e82bc7a95aea31b365a49 +SHA1: a729020e0db96742bb579bc30a9c710313b97355 +SHA256: da04f6152c8868cf23b4ee501dd146b26f37afddfaaf3cbc501de332d13aad33 +SHA512: a5d2a33ded1959095935259e68c58287ac83b6e4a3c0c712f86d32e9d53ece48aaccb963195044451759e1960a1bd6e99b14c2277ed8f217af6d8308cc2ee7d1 +Description: Intel® oneAPI AI Analytics Toolkit + + +Package: intel-aikit-2023.1.0 +Architecture: amd64 +Version: 2023.1.0-31760 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-aikit-getting-started (>= 2023.1.0-31760), intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing-2023.0.0 , intel-oneapi-dev-utilities-2021.8.0 , intel-oneapi-model-zoo (>= 2.9.0-29666), intel-oneapi-python (>= 2023.0.0-25636), intel-oneapi-tensorflow (>= 2.10.0.0-31758), intel-oneapi-neural-compressor (>= 1.14.2.0-31757), intel-oneapi-pytorch (>= 1.13.0.0-31759), intel-oneapi-modin (>= 0.17.0.1-31755) +Filename: pool/main/intel-aikit-2023.1.0-2023.1.0-31760_amd64.deb +Size: 2076 +MD5sum: cb56644a904616bc42f91d96d9c2c42d +SHA1: 5495220da5d929122b6180f17603d178028ffa7b +SHA256: 198366fb58b4c7ac6884bf6f77277ba5005199353d6a64c4543b9d7d7b568476 +SHA512: dfe4975f140dd2939a3b6fc1678323107fd49e49322b64539020354a5affcc32e420b80311e63e2cf10d09d7e932b866d8590648ba3d763682013a671df14c9b +Description: Intel® oneAPI AI Analytics Toolkit + + +Package: intel-aikit +Architecture: amd64 +Version: 2023.1.0-31760 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-aikit-getting-started (>= 2023.1.0-31760), intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing (>= 2023.0.0-25325), intel-oneapi-dev-utilities (>= 2021.8.0-25328), intel-oneapi-model-zoo (>= 2.9.0-29666), intel-oneapi-python (>= 2023.0.0-25636), intel-oneapi-tensorflow (>= 2.10.0.0-31758), intel-oneapi-neural-compressor (>= 1.14.2.0-31757), intel-oneapi-pytorch (>= 1.13.0.0-31759), intel-oneapi-modin (>= 0.17.0.1-31755) +Filename: pool/main/intel-aikit-2023.1.0-31760_amd64.deb +Size: 2068 +MD5sum: 2caa6bd9e30515af0f73e5d8db2a8705 +SHA1: 5dcff1d1f75b07fa6b193051916b9a3dce0bbb74 +SHA256: 0cd8d2003c6ac0ab00a426917d2c00d7be514d9709c7db60554364161c0721e7 +SHA512: 861cbaa47491f505d12f69adec1bf4c1efafef0981c847afdb4a30d2ba19da232820da3bf51309fd87e814b8774e87937669b9709ed3f04478500afd8fea334e +Description: Intel® oneAPI AI Analytics Toolkit + + +Package: intel-aikit-runtime-2021.1.0 +Architecture: amd64 +Version: 2021.1.0-935 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-aikit-getting-started (>= 2021.1.0-935), intel-oneapi-common-vars (>= 2021.1.1-60), intel-oneapi-common-licensing-2021.1.1 , intel-oneapi-dev-utilities-2021.1.1 +Filename: pool/main/intel-aikit-runtime-2021.1.0-2021.1.0-935_amd64.deb +Size: 1704 +MD5sum: b49b83d865a9952474634e8abf961e80 +SHA1: efccca505e0197eff1b577bc7857918af8ecb7d5 +SHA256: 5e8bc7994e9f8c4afef75b61a1f1dfccdf62f5392d1dc811c16a5055359da010 +SHA512: e65d1fb33726fdb002599292c813f007870d86afb7c760a7b7e35e098b4f12427504c28a9e93a022add067add95609af8628ba23d3097e922025ca41a5a74bb4 +Description: Intel® AI Analytics Toolkit + + +Package: intel-aikit-runtime +Architecture: amd64 +Version: 2021.1.0-935 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-aikit-getting-started (>= 2021.1.0-935), intel-oneapi-common-vars (>= 2021.1.1-60), intel-oneapi-common-licensing (>= 2021.1.1-60), intel-oneapi-dev-utilities (>= 2021.1.1-197) +Filename: pool/main/intel-aikit-runtime-2021.1.0-935_amd64.deb +Size: 1702 +MD5sum: fa78dbd060b62e8cddf69a96a5b142e6 +SHA1: 7c50008f4f6f500d5f99d2af134eb451739049c2 +SHA256: 46ded5df66c12c526503bac16d9ae4d76cd50b00c51b2764eec7f7af75f44c27 +SHA512: 600aa7907c6fd0c9d1fbe1bea1b557f7c930b1b8a6ef0e7541e5138592a4491dbc5cc59b3d8104d775df8e81de2f52918acc86837a8b79c0fda011bdd9225c59 +Description: Intel® AI Analytics Toolkit + + +Package: intel-aikit-runtime +Architecture: amd64 +Version: 2021.2.0-1101 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-aikit-getting-started (>= 2021.2.0-1101), intel-oneapi-common-vars (>= 2021.2.0-195), intel-oneapi-common-licensing (>= 2021.2.0-195), intel-oneapi-dev-utilities (>= 2021.2.0-493) +Filename: pool/main/intel-aikit-runtime-2021.2.0-1101_amd64.deb +Size: 1706 +MD5sum: dc0e5d9c37c6d2ecdb46a4e1f33d80f0 +SHA1: 4608f765c3d57b08fb3734b2c40f041d60297c52 +SHA256: 20f4088e3347ae6a9bfa61bb021b5a3a3c61022051340513b5d852dae39952dd +SHA512: a35a84db3419d384606ed3921b4241eec049f27996124bfc1b70ecf4e3a1f392efa69a7a5de96216500cc99fb854b225ddf25b8e9b3146a2054f340655014be3 +Description: Intel® oneAPI AI Analytics Toolkit + + +Package: intel-aikit-runtime-2021.2.0 +Architecture: amd64 +Version: 2021.2.0-1101 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-aikit-getting-started (>= 2021.2.0-1101), intel-oneapi-common-vars (>= 2021.2.0-195), intel-oneapi-common-licensing-2021.2.0 , intel-oneapi-dev-utilities-2021.2.0 +Filename: pool/main/intel-aikit-runtime-2021.2.0-2021.2.0-1101_amd64.deb +Size: 1708 +MD5sum: f6a8a8256a2da1568309bfb8b283d604 +SHA1: d31512d0f7c5e9675514e252295aa266564268bf +SHA256: 8baac27995d627ef1b5ed57cda43eff522532d661afd04759533db62caec3906 +SHA512: c09a91641037548c0aa5e0420d8624c69ef573604e96b20f6db86ad1136c3397d755532f02b31bf69c121b6c83909da9f3b4458b3231693548fc9dd5a1bf2871 +Description: Intel® oneAPI AI Analytics Toolkit + + +Package: intel-aikit-runtime +Architecture: amd64 +Version: 2021.3.0-1370 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-aikit-getting-started (>= 2021.3.0-1370), intel-oneapi-common-vars (>= 2021.3.0-261), intel-oneapi-common-licensing (>= 2021.3.0-261), intel-oneapi-dev-utilities (>= 2021.3.0-691) +Filename: pool/main/intel-aikit-runtime-2021.3.0-1370_amd64.deb +Size: 1706 +MD5sum: f5f39a2ff7e894a3601fc3e569a6273c +SHA1: 76ebd7a30becae8d42442619a3495692a1b35510 +SHA256: e7ce16fa3ae0f3ed67fdec77981900505f20773a23ea4a4bfe79c11f2afb8795 +SHA512: 401d50ffe19014a971f6844d332b32aafda7a0db8c91ac4feae999c57b92b25a39123e3a0be548944d55924061815327dc045f299a254daffbf811aa3a1553b7 +Description: Intel® oneAPI AI Analytics Toolkit + + +Package: intel-aikit-runtime-2021.3.0 +Architecture: amd64 +Version: 2021.3.0-1370 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-aikit-getting-started (>= 2021.3.0-1370), intel-oneapi-common-vars (>= 2021.3.0-261), intel-oneapi-common-licensing-2021.3.0 , intel-oneapi-dev-utilities-2021.3.0 +Filename: pool/main/intel-aikit-runtime-2021.3.0-2021.3.0-1370_amd64.deb +Size: 1708 +MD5sum: 56c2467dc57481d5fa8602112e8bc7ab +SHA1: eed3e5fa988b98be5dbe372e4fd953c9d57fd81c +SHA256: 1330ba8d7a5205a85bd20f5cee0ec69b2b0aa13ff2257badc43509d077560158 +SHA512: c67e91dd32b0d7677d5a4cb7ca89f0f60b986aaecaad6f0bd9d27dfe0f63248620733c349ab2ee3dac46af807de2b9d4180efd8fdf416330f654e07378198f21 +Description: Intel® oneAPI AI Analytics Toolkit + + +Package: intel-aikit-runtime +Architecture: amd64 +Version: 2021.4.0-1460 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-aikit-getting-started (>= 2021.4.0-1460), intel-oneapi-common-vars (>= 2021.4.0-327), intel-oneapi-common-licensing (>= 2021.4.0-327), intel-oneapi-dev-utilities (>= 2021.4.0-847) +Filename: pool/main/intel-aikit-runtime-2021.4.0-1460_amd64.deb +Size: 1706 +MD5sum: 02acfe930cbb9df0d5ff77e9c81dc418 +SHA1: d3314f4b5f17613779bc29d79a8953850224d5b4 +SHA256: 546f9ff34352de28aec7fbf9527f3a8d318084b20432d2fd374cca5d76f367dc +SHA512: 3f069eb4653e468c457fb918c788702421da67111d0b58d74dfe70982760a8a829809062a38fdd9049f552be927884746ec39a379f8f44ceba29fd6e3c8d5009 +Description: Intel® oneAPI AI Analytics Toolkit + + +Package: intel-aikit-runtime-2021.4.0 +Architecture: amd64 +Version: 2021.4.0-1460 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-aikit-getting-started (>= 2021.4.0-1460), intel-oneapi-common-vars (>= 2021.4.0-327), intel-oneapi-common-licensing-2021.4.0 , intel-oneapi-dev-utilities-2021.4.0 +Filename: pool/main/intel-aikit-runtime-2021.4.0-2021.4.0-1460_amd64.deb +Size: 1708 +MD5sum: 50916199ac3d39b075d10ab0fcd29e86 +SHA1: 4a0efb8023b4f98f9bfecc51848fa270a6e11387 +SHA256: 5743a2bcedc9769139c11034b76c4df3dcde29f6afc49fb8de1c3d52b8f202a8 +SHA512: 6f71434b51e56ece7ee18f807b7abc17ae0f789e4262ba116b4940df0f7f90e8e02b944461fa3d30879f8e204a59238e198c7d34f9f762a41923f39db509fc1f +Description: Intel® oneAPI AI Analytics Toolkit + + +Package: intel-aikit-runtime +Architecture: amd64 +Version: 2022.1.1-106 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-aikit-getting-started (>= 2022.1.1-106), intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing (>= 2022.0.0-59), intel-oneapi-dev-utilities (>= 2021.5.1-924) +Filename: pool/main/intel-aikit-runtime-2022.1.1-106_amd64.deb +Size: 1714 +MD5sum: 7855a4de8565b3df7902b2fc04965c6a +SHA1: 261232d5f11216b17623b5acfe255c4545267df7 +SHA256: 081091b79b56b8bf52dfbd578eaa2c7b26a88b10a2752ce08bcd6e5451c5ef6a +SHA512: 4a7504b71209c6a818fb94f265b5acecc341e9ade2a1b7fc36913a41828b3adbf0bc23022210d0c54f386b52a6f633acb5b393eb7d47d1dc8285194b7fe74563 +Description: Intel® oneAPI AI Analytics Toolkit + + +Package: intel-aikit-runtime-2022.1.1 +Architecture: amd64 +Version: 2022.1.1-106 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-aikit-getting-started (>= 2022.1.1-106), intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 , intel-oneapi-dev-utilities-2021.5.1 +Filename: pool/main/intel-aikit-runtime-2022.1.1-2022.1.1-106_amd64.deb +Size: 1714 +MD5sum: 9c74526ce3a0f7b2ec925da0102734ef +SHA1: f9f49adea4cea45022a079c3d877eee39678975e +SHA256: 4e0f6cbf80fab80145ed1904d1c1ca93d676b75394b750fd89d1d20e4948ac4a +SHA512: b3115109dcf86911d0e8ea6a4c2e1b71ddf1fa35e85f11f4ffcc62b6391497e0ec5ced97ec4b34078fedb26e949f71b9dbb504215668ce10e4e4220bb8e03c7e +Description: Intel® oneAPI AI Analytics Toolkit + + +Package: intel-aikit-runtime +Architecture: amd64 +Version: 2022.1.2-135 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-aikit-getting-started (>= 2022.1.2-135), intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing (>= 2022.0.0-59), intel-oneapi-dev-utilities (>= 2021.5.2-936) +Filename: pool/main/intel-aikit-runtime-2022.1.2-135_amd64.deb +Size: 1712 +MD5sum: dab4c81d59e1dd7c32de3c301e4fd6e3 +SHA1: a8b2f004a67cd78d3fd78a012a521a33ded99cd5 +SHA256: 096ade97d1e5a68e8a4dcb048dc9e2a0d14932eacdf240cb467ca0a116e2f23b +SHA512: 5314f37df231f6ec3413f89f7156f824fde3fd01d54a8f56c3253e66b943ce51171e17a746536595de91bf312936ef2b3281dde883cd637d1b5fbdc6e2c58198 +Description: Intel® oneAPI AI Analytics Toolkit + + +Package: intel-aikit-runtime-2022.1.2 +Architecture: amd64 +Version: 2022.1.2-135 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-aikit-getting-started (>= 2022.1.2-135), intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 , intel-oneapi-dev-utilities-2021.5.2 +Filename: pool/main/intel-aikit-runtime-2022.1.2-2022.1.2-135_amd64.deb +Size: 1714 +MD5sum: 6bee368ed7e7760e33902f1162b1c0ac +SHA1: c754952b2713d78599ff378cf28408271bb0e80f +SHA256: 29d0f83ee20cb269a1c32faeac0e52ff964d28e71f53b412f13b5b554de57a8f +SHA512: 753362936503d776410929b5add9960c5f7228810205814f1de071fc2d986ceef3e34dab5834049da0a0ac4534a8c06a479a1d6d956c4050eaf876300bd017d1 +Description: Intel® oneAPI AI Analytics Toolkit + + +Package: intel-aikit-runtime-2022.2.0 +Architecture: amd64 +Version: 2022.2.0-231 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-aikit-getting-started (>= 2022.2.0-231), intel-oneapi-common-vars (>= 2022.1.0-161), intel-oneapi-common-licensing-2022.1.0 , intel-oneapi-dev-utilities-2021.6.0 +Filename: pool/main/intel-aikit-runtime-2022.2.0-2022.2.0-231_amd64.deb +Size: 1792 +MD5sum: 55cd278445789a48f56a54b70494ba49 +SHA1: 697db815bbbbebc96b41f2ce614a1113ac224d92 +SHA256: 46264bdc319fff163cacf15160bd0bf72dcf0aa3efe8aeeab698d6b37347e24c +SHA512: 24af28e831457442e0712454c6221970f7b2a21ce049e2d7520a94efde611686c54c9f686497fe6a7def206ae4d01cad165c686d3edac33cc0d961286cca397c +Description: Intel® oneAPI AI Analytics Toolkit + + +Package: intel-aikit-runtime +Architecture: amd64 +Version: 2022.2.0-231 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-aikit-getting-started (>= 2022.2.0-231), intel-oneapi-common-vars (>= 2022.1.0-161), intel-oneapi-common-licensing (>= 2022.1.0-161), intel-oneapi-dev-utilities (>= 2021.6.0-989) +Filename: pool/main/intel-aikit-runtime-2022.2.0-231_amd64.deb +Size: 1788 +MD5sum: b927522bb61cdae60d1323e32e2c1ebd +SHA1: 7dd11ec53bcd5325eff0678d78ff1ed30786afab +SHA256: 847f48cc099c7974b4a2ca44dca3589335a18bd27b4fd78b9495596c624aafa6 +SHA512: 32c5ec8c0a700848d520ee1d64251e9487aba944ab7d52d60dbefc71299d255e5640373f3ab30b01d6503a792d2b46667260490a7da7d95ab3f7b0afe0cfb6ce +Description: Intel® oneAPI AI Analytics Toolkit + + +Package: intel-aikit-runtime-2022.3.0 +Architecture: amd64 +Version: 2022.3.0-8775 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-aikit-getting-started (>= 2022.3.0-8775), intel-oneapi-common-vars (>= 2022.2.0-8694), intel-oneapi-common-licensing-2022.2.0 , intel-oneapi-dev-utilities-2021.7.0 +Filename: pool/main/intel-aikit-runtime-2022.3.0-2022.3.0-8775_amd64.deb +Size: 1796 +MD5sum: 68a2d15dc97581fdb4f525bff156029c +SHA1: b22778f941f29a0dbf8853f94b62d6b90d5ab94c +SHA256: 130ae18617a01750d2fb5033f2fc8ca56f3a5e1617eafbea4d6925f9a5cb25ec +SHA512: 4a2b8b5fd294dd992d0b234ef7333c80f542f4f0fc1943c0cf8cb67224049b7eab290b500837216ee9ed6ce9f681133c0398de4d805e657b826b5fe9c6f378f8 +Description: Intel® oneAPI AI Analytics Toolkit + + +Package: intel-aikit-runtime +Architecture: amd64 +Version: 2022.3.0-8775 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-aikit-getting-started (>= 2022.3.0-8775), intel-oneapi-common-vars (>= 2022.2.0-8694), intel-oneapi-common-licensing (>= 2022.2.0-8694), intel-oneapi-dev-utilities (>= 2021.7.0-8698) +Filename: pool/main/intel-aikit-runtime-2022.3.0-8775_amd64.deb +Size: 1792 +MD5sum: fe7a8ff680bd030c7a117e6cd7e8e3fe +SHA1: f1fe6474661ce413be0573d8a2f7b4557894856c +SHA256: 8e5f91b15f3ce0cba936f0af5d5f92b03f2bda15813bd31873bc95c7f521ef7a +SHA512: cbeb24dbcc7cc3a52afd3e645e81c8143784dc191e116911bc9ee6717bc163865ad78f6839ff8a22ff51c8ca87cb2aa8f549dbcaf49e1a8abe596e264d554a37 +Description: Intel® oneAPI AI Analytics Toolkit + + +Package: intel-aikit-runtime-2022.3.1 +Architecture: amd64 +Version: 2022.3.1-20890 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-aikit-getting-started (>= 2022.3.1-20890), intel-oneapi-common-vars (>= 2022.2.1-14969), intel-oneapi-common-licensing-2022.2.1 , intel-oneapi-dev-utilities-2021.7.1 +Filename: pool/main/intel-aikit-runtime-2022.3.1-2022.3.1-20890_amd64.deb +Size: 1792 +MD5sum: adc54a22394882e07e2834964030c563 +SHA1: 92faa76f39ad8d64b8741fe8d64895f8babb93a8 +SHA256: 9ad8ebf92afbe2a1fae990e9bd63304827afbb05990258f7dd1d6c88814007fe +SHA512: 15576e4203f46bb9dc5ab298b222ef5d4186d398e692f5de0a44a469cd213a1d0eb5dd3bbb337e1c2429c1ef6eccd662da14d2c141a867008aed101b821166f8 +Description: Intel® oneAPI AI Analytics Toolkit + + +Package: intel-aikit-runtime +Architecture: amd64 +Version: 2022.3.1-20890 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-aikit-getting-started (>= 2022.3.1-20890), intel-oneapi-common-vars (>= 2022.2.1-14969), intel-oneapi-common-licensing (>= 2022.2.1-14969), intel-oneapi-dev-utilities (>= 2021.7.1-14991) +Filename: pool/main/intel-aikit-runtime-2022.3.1-20890_amd64.deb +Size: 1784 +MD5sum: 6983a4c9ce279255a564900fcc444abc +SHA1: ac46fb07b20b768eecbf74ee1b3d20f3e5d5e505 +SHA256: e82834ab164342d19a7a9f395f4112774b8f2baf3592fec7981955cee43716d5 +SHA512: 545285e242a07efe8d31dd649e8238a8ade19841f0a665466d9255a14c16ac768ba374ae88aebe3cfae2d506665afd6eb57864e9b2f0d27bcd9e6020ec0f6a73 +Description: Intel® oneAPI AI Analytics Toolkit + + +Package: intel-aikit-runtime-2023.0.0 +Architecture: amd64 +Version: 2023.0.0-25695 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-aikit-getting-started (>= 2023.0.0-25695), intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing-2023.0.0 , intel-oneapi-dev-utilities-2021.8.0 +Filename: pool/main/intel-aikit-runtime-2023.0.0-2023.0.0-25695_amd64.deb +Size: 1792 +MD5sum: a3ad9acb9566b1dbf9294480592548a6 +SHA1: f7cdd949dfef0edb110b339da571b289795c31d4 +SHA256: 8d919a63198a46bac552da4e24b0b9b8fdc124a522b6c5cbffc55f5054ba8dde +SHA512: 41def0600ce505c4d046bc280e1ecca012e340ed483e759b8593e17b2ceabaf496bd218779b3e61368f20c8a0e02e15f0c12bc44b6844ef3429587331b31ccec +Description: Intel® oneAPI AI Analytics Toolkit + + +Package: intel-aikit-runtime-2023.0.0 +Architecture: amd64 +Version: 2023.0.0-25823 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-aikit-getting-started (>= 2023.0.0-25823), intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing-2023.0.0 , intel-oneapi-dev-utilities-2021.8.0 +Filename: pool/main/intel-aikit-runtime-2023.0.0-2023.0.0-25823_amd64.deb +Size: 1792 +MD5sum: f89ee589cde966b4029be54db3247f83 +SHA1: 269db8dd5e925a3742458c6ddb1b0261e6c5b1ed +SHA256: f8262b8de082f78c58d12a0f1a06ebd6ae23b5d0123f68491a040553ff4b0222 +SHA512: 23dcb3f975f0360ad2b0394a06e9df42341648212b540be4fd6d88c931c39a41bf0cc9b2c552bbfbe50906d5cc9734c7649073b0c0f6e8656f487785a32844c7 +Description: Intel® oneAPI AI Analytics Toolkit + + +Package: intel-aikit-runtime-2023.0.0 +Architecture: amd64 +Version: 2023.0.0-25859 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-aikit-getting-started (>= 2023.0.0-25859), intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing-2023.0.0 , intel-oneapi-dev-utilities-2021.8.0 +Filename: pool/main/intel-aikit-runtime-2023.0.0-2023.0.0-25859_amd64.deb +Size: 1792 +MD5sum: db521e4bd1a3e7d1e1837a51079ff7ec +SHA1: 70d5f66852150de652a344facb09ce3196eb2946 +SHA256: a4868b57f1976e87d4dd6adb1bca41d13363ec5a1f92c8b21ee16d0727a17040 +SHA512: 450be543cbd3900cc565418bf712462202e6897b35b3ec8753e1bbf9151f79fd038d4ed6610d04433b799ea741c6bf416ee664b72826c544515a7fef0156fb30 +Description: Intel® oneAPI AI Analytics Toolkit + + +Package: intel-aikit-runtime-2023.0.0 +Architecture: amd64 +Version: 2023.0.0-26100 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-aikit-getting-started (>= 2023.0.0-26100), intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing-2023.0.0 , intel-oneapi-dev-utilities-2021.8.0 +Filename: pool/main/intel-aikit-runtime-2023.0.0-2023.0.0-26100_amd64.deb +Size: 1792 +MD5sum: 3e27e20e62f0e40a55fed4f9200077fd +SHA1: f6b51903fb12886efcbaeb394c3ec726018ae2b8 +SHA256: 8475708a0c27c5f4cc5fe6a6fd5bb0e8a9ec779c6ab785665d7e50a3b261c5aa +SHA512: ec3bd3c612d1f3c237c3410cabea31723d912cb55f13c88dc826da9b09a83128ecfcd8aac3107e3555ce408ae3b27b188927ef8fe803df8025052cdf9a9f8d57 +Description: Intel® oneAPI AI Analytics Toolkit + + +Package: intel-aikit-runtime +Architecture: amd64 +Version: 2023.0.0-25695 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-aikit-getting-started (>= 2023.0.0-25695), intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing (>= 2023.0.0-25325), intel-oneapi-dev-utilities (>= 2021.8.0-25328) +Filename: pool/main/intel-aikit-runtime-2023.0.0-25695_amd64.deb +Size: 1788 +MD5sum: 7e82aadf3cce01f3ee76757489377e29 +SHA1: 120b09a07c441338cf029bc191cca2fb0c83bbca +SHA256: b10b24643f03a154ff3c709d07ff0ca00a61c03dc4067a2bc50e2b17e3815dd5 +SHA512: 74638e124d780ed07d04e22b5fceffccfac3c5491489ee935b1846db950cc7f357df30418c3bddaf89058c5f30ce6e67b6ae7e29e59a4002fbd766aa64778bd0 +Description: Intel® oneAPI AI Analytics Toolkit + + +Package: intel-aikit-runtime +Architecture: amd64 +Version: 2023.0.0-25823 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-aikit-getting-started (>= 2023.0.0-25823), intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing (>= 2023.0.0-25325), intel-oneapi-dev-utilities (>= 2021.8.0-25328) +Filename: pool/main/intel-aikit-runtime-2023.0.0-25823_amd64.deb +Size: 1788 +MD5sum: 5145ec41fe38bf92fd8c27661f0ab28c +SHA1: 38a9c54779f945901702f787c48e02a174555386 +SHA256: 8b7d817baed5a30feded7ae7fc84f0b7b0035a42be33cd6be8213828a07ee3d9 +SHA512: 10b232346190e154ffb53ab46abd2cf3685e9152f8523a51b05d58abf4ba00ec0eb52b176e90a44afc7a2f3d06d9e928995a371f892e1e443343f128dd6efb8b +Description: Intel® oneAPI AI Analytics Toolkit + + +Package: intel-aikit-runtime +Architecture: amd64 +Version: 2023.0.0-25859 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-aikit-getting-started (>= 2023.0.0-25859), intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing (>= 2023.0.0-25325), intel-oneapi-dev-utilities (>= 2021.8.0-25328) +Filename: pool/main/intel-aikit-runtime-2023.0.0-25859_amd64.deb +Size: 1788 +MD5sum: 6b7749215f211c019df5c07b34230330 +SHA1: b686816de90fccb3da9f57e4d24fc1f59cd714f2 +SHA256: 2153bae45347f895a3682200b9c287600766c02db90087a9782747c41e238176 +SHA512: d2e25c3f5243bd6fb2725c579f465c3a413aabdbb525f3c2737c0aa7a00db214414b0dcf6c1e22dd4904fa486585fd8dd6c3792ec6f9c599a9a9f15a9193a6c4 +Description: Intel® oneAPI AI Analytics Toolkit + + +Package: intel-aikit-runtime +Architecture: amd64 +Version: 2023.0.0-26100 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-aikit-getting-started (>= 2023.0.0-26100), intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing (>= 2023.0.0-25325), intel-oneapi-dev-utilities (>= 2021.8.0-25328) +Filename: pool/main/intel-aikit-runtime-2023.0.0-26100_amd64.deb +Size: 1788 +MD5sum: f018b615a87b301ccd25ca60f69ce9dd +SHA1: 265be4e70a80b16b1b6c57dd18fe46bb72a51e61 +SHA256: cbdd3ac157eee10878ba218d85d85e860e80b108e0c9f81bb417cdfb53a1db80 +SHA512: d00e17322525416b8be5510d57daef0b363524157844684cbaed822dbd809cc226246088dd7bcb8dd7e6aaf027020d63411de31602aeefd7611dbcafb5a96a3e +Description: Intel® oneAPI AI Analytics Toolkit + + +Package: intel-aikit-runtime-2023.1.0 +Architecture: amd64 +Version: 2023.1.0-31760 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-aikit-getting-started (>= 2023.1.0-31760), intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing-2023.0.0 , intel-oneapi-dev-utilities-2021.8.0 +Filename: pool/main/intel-aikit-runtime-2023.1.0-2023.1.0-31760_amd64.deb +Size: 1792 +MD5sum: d9b206ddb9ad35f4ac47ac202ee7c4b9 +SHA1: 0391be94153c919935bb0d374ae16eaad688bbe4 +SHA256: 13c593b6e9365d24a08d4be2b332130e2c2fee6ce6988ca6fd0f5ed76db64e24 +SHA512: 939c466cca63391edfa7416a5ec92c1b6e293142a5d59dd98365a6da69fdfa7fbeafac00038615d82c8b45eb09abf0d9fedb5d0868af820a5637fa3e23307fe4 +Description: Intel® oneAPI AI Analytics Toolkit + + +Package: intel-aikit-runtime +Architecture: amd64 +Version: 2023.1.0-31760 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-aikit-getting-started (>= 2023.1.0-31760), intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing (>= 2023.0.0-25325), intel-oneapi-dev-utilities (>= 2021.8.0-25328) +Filename: pool/main/intel-aikit-runtime-2023.1.0-31760_amd64.deb +Size: 1788 +MD5sum: 3128de53f93baf99826665a87887e95f +SHA1: bd6653057906388c34e27692975d251a86eec82e +SHA256: 39d522631d3ea00b237f09cdb8977531058d7f4511aeb17d8a661698015a944e +SHA512: d1014f460a8d3f56ee51b1462b93ce20fce6c9954005c758dc00f6dac28d799aa1cc73431278d0936307730af98daf09c55b1429c783b6d2c785ff1373ffd494 +Description: Intel® oneAPI AI Analytics Toolkit + + +Package: intel-basekit-2021.1.0 +Architecture: amd64 +Version: 2021.1.0-2659 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit-getting-started (>= 2021.1.0-2659), intel-oneapi-common-vars (>= 2021.1.1-60), intel-oneapi-common-licensing-2021.1.1 , intel-oneapi-dev-utilities-2021.1.1 , intel-oneapi-tbb-devel-2021.1.1 , intel-oneapi-compiler-dpcpp-cpp-2021.1.1 , intel-oneapi-libdpstd-devel-2021.1.1 , intel-oneapi-mkl-devel-2021.1.1 , intel-oneapi-ipp-devel-2021.1.1 , intel-oneapi-dal-devel-2021.1.1 , intel-oneapi-advisor (>= 2021.1.1-43), intel-oneapi-dnnl-devel (>= 2021.1.1-55), intel-oneapi-ccl-devel-2021.1.1 , intel-oneapi-vtune (>= 2021.1.1-61), intel-oneapi-dpcpp-ct-2021.1.1 , intel-oneapi-python (>= 2021.1.1-44), intel-oneapi-onevpl-devel-2021.1.1 , intel-oneapi-ippcp-devel-2021.1.1 , intel-oneapi-dpcpp-debugger-10.0.0 +Filename: pool/main/intel-basekit-2021.1.0-2021.1.0-2659_amd64.deb +Size: 2020 +MD5sum: dd2d744d19aad50ff1e2f85cf6e039d3 +SHA1: a2408325a974df5a234066e8d070b4720e74dc5c +SHA256: b63b8dabf1ad59f3c10e974ece2399d44a2034a16e6a143dd69a8f6240a69802 +SHA512: 1e280b2e640fe62722a18e91bff558432e7552ce096a001663cea2039ec260c0805bb34911512380d717a6d3425956429d12bdaf9254c011d5eaf0c2e1ef9355 +Description: Intel® oneAPI Base Toolkit + + +Package: intel-basekit +Architecture: amd64 +Version: 2021.1.0-2659 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit-getting-started (>= 2021.1.0-2659), intel-oneapi-common-vars (>= 2021.1.1-60), intel-oneapi-common-licensing (>= 2021.1.1-60), intel-oneapi-dev-utilities (>= 2021.1.1-197), intel-oneapi-tbb-devel (>= 2021.1.1-119), intel-oneapi-compiler-dpcpp-cpp (>= 2021.1.1-189), intel-oneapi-libdpstd-devel (>= 2021.1.1-189), intel-oneapi-mkl-devel (>= 2021.1.1-52), intel-oneapi-ipp-devel (>= 2021.1.1-47), intel-oneapi-dal-devel (>= 2021.1.1-79), intel-oneapi-advisor (>= 2021.1.1-43), intel-oneapi-dnnl-devel (>= 2021.1.1-55), intel-oneapi-ccl-devel (>= 2021.1.1-54), intel-oneapi-vtune (>= 2021.1.1-61), intel-oneapi-dpcpp-ct (>= 2021.1.1-59), intel-oneapi-python (>= 2021.1.1-44), intel-oneapi-onevpl-devel (>= 2021.1.1-66), intel-oneapi-ippcp-devel (>= 2021.1.1-54), intel-oneapi-dpcpp-debugger (>= 10.0.0-2219) +Filename: pool/main/intel-basekit-2021.1.0-2659_amd64.deb +Size: 2040 +MD5sum: dd33038a9343e587ab1385af6048db21 +SHA1: a249560cd933af0b5995df4b07b0a6f20a377365 +SHA256: 601e5cbc83cb030af20b2c6fb1f9213d98a39d1ff8a58a8d3777f5ce1543e716 +SHA512: 9199a93c8f06d5fe0e82ca27b4d269728365bc236ed8a0d671a0244c421b172a551410d0f709816258f21c410926e1069186a53ab099aa629769b6c6dce42242 +Description: Intel® oneAPI Base Toolkit + + +Package: intel-basekit-2021.2.0 +Architecture: amd64 +Version: 2021.2.0-2883 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit-getting-started (>= 2021.2.0-2883), intel-oneapi-common-vars (>= 2021.2.0-195), intel-oneapi-common-licensing-2021.2.0 , intel-oneapi-dev-utilities-2021.2.0 , intel-oneapi-tbb-devel-2021.2.0 , intel-oneapi-ccl-devel-2021.2.0 , intel-oneapi-compiler-dpcpp-cpp-2021.2.0 , intel-oneapi-dnnl-devel (>= 2021.2.0-228), intel-oneapi-ipp-devel-2021.2.0 , intel-oneapi-dal-devel-2021.2.0 , intel-oneapi-mkl-devel-2021.2.0 , intel-oneapi-vtune (>= 2021.2.0-263), intel-oneapi-advisor (>= 2021.2.0-189), intel-oneapi-dpcpp-ct-2021.2.0 , intel-oneapi-onevpl-devel-2021.2.2 , intel-oneapi-python (>= 2021.2.0-161), intel-oneapi-ippcp-devel-2021.2.0 , intel-oneapi-libdpstd-devel-2021.2.0 , intel-oneapi-dpcpp-debugger-10.1.1 +Filename: pool/main/intel-basekit-2021.2.0-2021.2.0-2883_amd64.deb +Size: 2018 +MD5sum: 807cf75efaefc36e2f195b7094d5d68e +SHA1: f57985ec91d89ca3ea61adb641c5fca695e87c87 +SHA256: e0088ec926c7f6ae855a83ba63c6de2c297c88679e061e341cf415a728ab98f7 +SHA512: 4a8d94318e41380493056080fc4c02b57ac5cf191fa8a2b33dc73b0843d8bac8072eac4f725bf9bb9cc227add8101bcb0a03a6e9b8ee552072260816a8184a0e +Description: Intel® oneAPI Base Toolkit + + +Package: intel-basekit +Architecture: amd64 +Version: 2021.2.0-2883 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit-getting-started (>= 2021.2.0-2883), intel-oneapi-common-vars (>= 2021.2.0-195), intel-oneapi-common-licensing (>= 2021.2.0-195), intel-oneapi-dev-utilities (>= 2021.2.0-493), intel-oneapi-tbb-devel (>= 2021.2.0-357), intel-oneapi-ccl-devel (>= 2021.2.0-269), intel-oneapi-compiler-dpcpp-cpp (>= 2021.2.0-610), intel-oneapi-dnnl-devel (>= 2021.2.0-228), intel-oneapi-ipp-devel (>= 2021.2.0-233), intel-oneapi-dal-devel (>= 2021.2.0-358), intel-oneapi-mkl-devel (>= 2021.2.0-296), intel-oneapi-vtune (>= 2021.2.0-263), intel-oneapi-advisor (>= 2021.2.0-189), intel-oneapi-dpcpp-ct (>= 2021.2.0-222), intel-oneapi-onevpl-devel (>= 2021.2.2-212), intel-oneapi-python (>= 2021.2.0-161), intel-oneapi-ippcp-devel (>= 2021.2.0-231), intel-oneapi-libdpstd-devel (>= 2021.2.0-245), intel-oneapi-dpcpp-debugger (>= 10.1.1-80) +Filename: pool/main/intel-basekit-2021.2.0-2883_amd64.deb +Size: 2048 +MD5sum: 9c527e6ec5d463a6883260e851e3e665 +SHA1: e24a6436f435a950df720501f95d851d7b6e2ef6 +SHA256: 45e555ff0daf239264c70be71d5583dafd5b8aeb4d386ac1e3afc6846548c6ef +SHA512: 4b0a698163e51882b364971a30dcd50948f3110e0bbeae23373b240609a4cfa282e5a7b997b0c05f4db27918f62e077f1ea740d7780a078ee97c32bfe7687afe +Description: Intel® oneAPI Base Toolkit + + +Package: intel-basekit-2021.3.0 +Architecture: amd64 +Version: 2021.3.0-3219 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit-getting-started (>= 2021.3.0-3219), intel-oneapi-common-vars (>= 2021.3.0-261), intel-oneapi-common-licensing-2021.3.0 , intel-oneapi-ippcp-devel-2021.3.0 , intel-oneapi-tbb-devel-2021.3.0 , intel-oneapi-dev-utilities-2021.3.0 , intel-oneapi-dpcpp-debugger-10.1.2 , intel-oneapi-dpcpp-ct-2021.3.0 , intel-oneapi-compiler-dpcpp-cpp-2021.3.0 , intel-oneapi-dal-devel-2021.3.0 , intel-oneapi-dnnl-devel (>= 2021.3.0-344), intel-oneapi-mkl-devel-2021.3.0 , intel-oneapi-ipp-devel-2021.3.0 , intel-oneapi-advisor (>= 2021.3.0-290), intel-oneapi-python (>= 2021.3.0-3209), intel-oneapi-ccl-devel-2021.3.0 , intel-oneapi-onevpl-devel-2021.4.0 , intel-oneapi-libdpstd-devel-2021.4.0 , intel-oneapi-vtune (>= 2021.5.0-381) +Filename: pool/main/intel-basekit-2021.3.0-2021.3.0-3219_amd64.deb +Size: 2020 +MD5sum: ae736a4adad02896b7a35c6375c9a3da +SHA1: e4f42a6e0a75e62bde2aab3b9bdbd3f8c4d1e48c +SHA256: 4267f307a96568e6236358449c3976d746afe601e346f60bd7c5b117a0f1e3a9 +SHA512: 2f5e50f808e04ef60d7af4a13377bd94130c182a8af96a57bcacdc052e14e4ef5acaf0bbbfa8f32dae6f22da73ace7d14a527494a69bd73cfc09fc26565a4ed8 +Description: Intel® oneAPI Base Toolkit + + +Package: intel-basekit +Architecture: amd64 +Version: 2021.3.0-3219 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit-getting-started (>= 2021.3.0-3219), intel-oneapi-common-vars (>= 2021.3.0-261), intel-oneapi-common-licensing (>= 2021.3.0-261), intel-oneapi-ippcp-devel (>= 2021.3.0-315), intel-oneapi-tbb-devel (>= 2021.3.0-511), intel-oneapi-dev-utilities (>= 2021.3.0-691), intel-oneapi-dpcpp-debugger (>= 10.1.2-225), intel-oneapi-dpcpp-ct (>= 2021.3.0-308), intel-oneapi-compiler-dpcpp-cpp (>= 2021.3.0-3350), intel-oneapi-dal-devel (>= 2021.3.0-557), intel-oneapi-dnnl-devel (>= 2021.3.0-344), intel-oneapi-mkl-devel (>= 2021.3.0-520), intel-oneapi-ipp-devel (>= 2021.3.0-333), intel-oneapi-advisor (>= 2021.3.0-290), intel-oneapi-python (>= 2021.3.0-3209), intel-oneapi-ccl-devel (>= 2021.3.0-343), intel-oneapi-onevpl-devel (>= 2021.4.0-328), intel-oneapi-libdpstd-devel (>= 2021.4.0-337), intel-oneapi-vtune (>= 2021.5.0-381) +Filename: pool/main/intel-basekit-2021.3.0-3219_amd64.deb +Size: 2050 +MD5sum: 0bb1ea926ca9b35e362a6e07d219550d +SHA1: c09985e71b3dc8a9b03249ec1bc8a864de203333 +SHA256: e12b2c99b59ab63f3b1243e9f6904f873abd09619718e501cd03ae2def5a5aac +SHA512: e67e25755453ada8aac906db1732d738d81f43880061be249d0b19043f6a436645da35932f9ae2ed3eed4da12291db5aa47d30e5359d752b8b94c52f02a0dce9 +Description: Intel® oneAPI Base Toolkit + + +Package: intel-basekit-2021.4.0 +Architecture: amd64 +Version: 2021.4.0-3422 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit-getting-started (>= 2021.4.0-3422), intel-oneapi-common-vars (>= 2021.4.0-327), intel-oneapi-common-licensing-2021.4.0 , intel-oneapi-tbb-devel-2021.4.0 , intel-oneapi-dev-utilities-2021.4.0 , intel-oneapi-compiler-dpcpp-cpp-2021.4.0 , intel-oneapi-ipp-devel-2021.4.0 , intel-oneapi-ippcp-devel-2021.4.0 , intel-oneapi-dal-devel-2021.4.0 , intel-oneapi-mkl-devel-2021.4.0 , intel-oneapi-dnnl-devel (>= 2021.4.0-467), intel-oneapi-ccl-devel-2021.4.0 , intel-oneapi-python (>= 2021.4.0-3353), intel-oneapi-dpcpp-ct-2021.4.0 , intel-oneapi-advisor (>= 2021.4.0-389), intel-oneapi-libdpstd-devel-2021.5.0 , intel-oneapi-diagnostics-utility (>= 2021.4.0-84), intel-oneapi-dpcpp-debugger-10.2.4 , intel-oneapi-onevpl-devel-2021.6.0 , intel-oneapi-vtune (>= 2021.7.1-492) +Filename: pool/main/intel-basekit-2021.4.0-2021.4.0-3422_amd64.deb +Size: 2044 +MD5sum: 7d23d5629a8075ef24c848e58617f881 +SHA1: 02e2d0d1f1850da90ce5cb3a607da4617672e0dc +SHA256: 448aad29e47769dc58ec479fe630a2d0252402311ce0ad4d2f3386326e9f9ea6 +SHA512: d9b7e5911b6514f71ed5663681191c80503f8fc7529219adff06becbfee005f92feb5024a3a76179771b3a3f9ba736386d300214ebc4de60dee23fcb72aba01e +Description: Intel® oneAPI Base Toolkit + + +Package: intel-basekit +Architecture: amd64 +Version: 2021.4.0-3422 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit-getting-started (>= 2021.4.0-3422), intel-oneapi-common-vars (>= 2021.4.0-327), intel-oneapi-common-licensing (>= 2021.4.0-327), intel-oneapi-tbb-devel (>= 2021.4.0-643), intel-oneapi-dev-utilities (>= 2021.4.0-847), intel-oneapi-compiler-dpcpp-cpp (>= 2021.4.0-3561), intel-oneapi-ipp-devel (>= 2021.4.0-459), intel-oneapi-ippcp-devel (>= 2021.4.0-401), intel-oneapi-dal-devel (>= 2021.4.0-729), intel-oneapi-mkl-devel (>= 2021.4.0-640), intel-oneapi-dnnl-devel (>= 2021.4.0-467), intel-oneapi-ccl-devel (>= 2021.4.0-433), intel-oneapi-python (>= 2021.4.0-3353), intel-oneapi-dpcpp-ct (>= 2021.4.0-402), intel-oneapi-advisor (>= 2021.4.0-389), intel-oneapi-libdpstd-devel (>= 2021.5.0-445), intel-oneapi-diagnostics-utility (>= 2021.4.0-84), intel-oneapi-dpcpp-debugger (>= 10.2.4-56), intel-oneapi-onevpl-devel (>= 2021.6.0-458), intel-oneapi-vtune (>= 2021.7.1-492) +Filename: pool/main/intel-basekit-2021.4.0-3422_amd64.deb +Size: 2072 +MD5sum: d437bb5966b6329ec3ac54064d4d1953 +SHA1: 693e7e5cae54b5fe7c4233161c3f4cbd38f7bf1b +SHA256: 8f0dd7d399f6fdfde9f03cae634a92796a48faf3da6c058c69aa4eb81b66b9a2 +SHA512: ec69e6743887b988008175f4800689b6826f0c137a06d61ce8a1530b1acae5dea5c3e932781291e98578821670e1f1fc4bab8882e1c60ae0c73bc1f9d828854a +Description: Intel® oneAPI Base Toolkit + + +Package: intel-basekit +Architecture: amd64 +Version: 2022.1.1-119 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit-getting-started (>= 2022.1.1-119), intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing (>= 2022.0.0-59), intel-oneapi-tbb-devel (>= 2021.5.0-707), intel-oneapi-ccl-devel (>= 2021.5.0-478), intel-oneapi-advisor (>= 2022.0.0-92), intel-oneapi-libdpstd-devel (>= 2021.6.0-501), intel-oneapi-vtune (>= 2022.0.0-94), intel-oneapi-ippcp-devel (>= 2021.5.0-445), intel-oneapi-dpcpp-ct (>= 2022.0.0-96), intel-oneapi-dpcpp-debugger (>= 2021.5.0-109), intel-oneapi-diagnostics-utility (>= 2022.0.0-58), intel-oneapi-onevpl-devel (>= 2022.0.0-58), intel-oneapi-dev-utilities (>= 2021.5.1-924), intel-oneapi-compiler-dpcpp-cpp (>= 2022.0.1-3633), intel-oneapi-dal-devel (>= 2021.5.1-803), intel-oneapi-ipp-devel (>= 2021.5.1-522), intel-oneapi-mkl-devel (>= 2022.0.1-117), intel-oneapi-dnnl-devel (>= 2022.0.1-26), intel-oneapi-python (>= 2022.0.1-127) +Filename: pool/main/intel-basekit-2022.1.1-119_amd64.deb +Size: 2078 +MD5sum: 3269c87caff949c045b3557422e543a4 +SHA1: f26c3a91a68462f7a9ecc5c86fcddb63803f1b27 +SHA256: af5dc4cff71d061cf9752233c57669895f465562e78893df0ac7e1e601581469 +SHA512: ec31cfbaeae628fcf2a2d5aecf391f5d3c43700b1a7ad5bfcc8974e8e434c40a4c6f027eeb46f124653cdd8968286b83a0b76cfd2688461bd451df6d6682712b +Description: Intel® oneAPI Base Toolkit + + +Package: intel-basekit-2022.1.1 +Architecture: amd64 +Version: 2022.1.1-119 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit-getting-started (>= 2022.1.1-119), intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 , intel-oneapi-tbb-devel-2021.5.0 , intel-oneapi-ccl-devel-2021.5.0 , intel-oneapi-advisor (>= 2022.0.0-92), intel-oneapi-libdpstd-devel-2021.6.0 , intel-oneapi-vtune (>= 2022.0.0-94), intel-oneapi-ippcp-devel-2021.5.0 , intel-oneapi-dpcpp-ct-2022.0.0 , intel-oneapi-dpcpp-debugger-2021.5.0 , intel-oneapi-diagnostics-utility (>= 2022.0.0-58), intel-oneapi-onevpl-devel-2022.0.0 , intel-oneapi-dev-utilities-2021.5.1 , intel-oneapi-compiler-dpcpp-cpp-2022.0.1 , intel-oneapi-dal-devel-2021.5.1 , intel-oneapi-ipp-devel-2021.5.1 , intel-oneapi-mkl-devel-2022.0.1 , intel-oneapi-dnnl-devel (>= 2022.0.1-26), intel-oneapi-python (>= 2022.0.1-127) +Filename: pool/main/intel-basekit-2022.1.1-2022.1.1-119_amd64.deb +Size: 2050 +MD5sum: cb6929ab4c47a92d03727df8f46f4821 +SHA1: 87c2f2ddba0a6e76022b8781addacf11716b8afc +SHA256: b2c96a0fe8281ca897e63852a7035a4da20bd1252ffafa45ddd1c2b699d4c21f +SHA512: cea35103729e35f0787db69a40c58cb4b895de30a5b9e756cd77ada3aa9dfd6ec076df7d879318a6a6e9630799fc1e799556947275d860110228c891f4652a28 +Description: Intel® oneAPI Base Toolkit + + +Package: intel-basekit +Architecture: amd64 +Version: 2022.1.2-146 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit-getting-started (>= 2022.1.2-146), intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing (>= 2022.0.0-59), intel-oneapi-advisor (>= 2022.0.0-92), intel-oneapi-libdpstd-devel (>= 2021.6.0-501), intel-oneapi-vtune (>= 2022.0.0-94), intel-oneapi-dpcpp-ct (>= 2022.0.0-96), intel-oneapi-dpcpp-debugger (>= 2021.5.0-109), intel-oneapi-diagnostics-utility (>= 2022.0.0-58), intel-oneapi-onevpl-devel (>= 2022.0.0-58), intel-oneapi-dev-utilities (>= 2021.5.2-936), intel-oneapi-compiler-dpcpp-cpp (>= 2022.0.2-3658), intel-oneapi-ipp-devel (>= 2021.5.2-544), intel-oneapi-dal-devel (>= 2021.5.3-832), intel-oneapi-dnnl-devel (>= 2022.0.2-43), intel-oneapi-mkl-devel (>= 2022.0.2-136), intel-oneapi-python (>= 2022.0.2-155), intel-oneapi-tbb-devel (>= 2021.5.1-738), intel-oneapi-ccl-devel (>= 2021.5.1-494), intel-oneapi-ippcp-devel (>= 2021.5.1-462) +Filename: pool/main/intel-basekit-2022.1.2-146_amd64.deb +Size: 2078 +MD5sum: 3b12dc1439067639ad5c852ef7fd8bc4 +SHA1: 6e81bd09308fd2d2ca208661c5e46f1ef53d2311 +SHA256: 745bd62d1e7b1380a074c1c48f6463ba3ffe6d46e97deeeedf2a200c3f4d9628 +SHA512: 6fdd11700f4e87a70d8469f41b6232596ded27a32b1d3f8bd0b557d3b4d7337bdd55a46710f45e4d62e2295e8b405226d4256961e7cac44d1ae0c05d54ef0029 +Description: Intel® oneAPI Base Toolkit + + +Package: intel-basekit-2022.1.2 +Architecture: amd64 +Version: 2022.1.2-146 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit-getting-started (>= 2022.1.2-146), intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 , intel-oneapi-advisor (>= 2022.0.0-92), intel-oneapi-libdpstd-devel-2021.6.0 , intel-oneapi-vtune (>= 2022.0.0-94), intel-oneapi-dpcpp-ct-2022.0.0 , intel-oneapi-dpcpp-debugger-2021.5.0 , intel-oneapi-diagnostics-utility (>= 2022.0.0-58), intel-oneapi-onevpl-devel-2022.0.0 , intel-oneapi-dev-utilities-2021.5.2 , intel-oneapi-compiler-dpcpp-cpp-2022.0.2 , intel-oneapi-ipp-devel-2021.5.2 , intel-oneapi-dal-devel-2021.5.3 , intel-oneapi-dnnl-devel (>= 2022.0.2-43), intel-oneapi-mkl-devel-2022.0.2 , intel-oneapi-python (>= 2022.0.2-155), intel-oneapi-tbb-devel-2021.5.1 , intel-oneapi-ccl-devel-2021.5.1 , intel-oneapi-ippcp-devel-2021.5.1 +Filename: pool/main/intel-basekit-2022.1.2-2022.1.2-146_amd64.deb +Size: 2060 +MD5sum: 87a373cd908fc8ca1da8661e6546b183 +SHA1: d1d2ee2fd0747d14795315b5e80ea714660eecdf +SHA256: 0df4f57b65c4a37ec937769cd02c0e17be0d38e89af2e9e18f998ee3265ef093 +SHA512: fb601a5a9d2874d337e5fd19f3407466b1326a344d77234b4d768df85c32351ebd9a6012caed721f0d2b9f453307cc7e28e2b12318523342f46501e99c2a7599 +Description: Intel® oneAPI Base Toolkit + + +Package: intel-basekit-2022.2.0 +Architecture: amd64 +Version: 2022.2.0-262 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit-getting-started (>= 2022.2.0-262), intel-oneapi-common-vars (>= 2022.1.0-161), intel-oneapi-common-licensing-2022.1.0 , intel-oneapi-dpcpp-ct-2022.1.0 , intel-oneapi-dev-utilities-2021.6.0 , intel-oneapi-dpcpp-debugger-2021.6.0 , intel-oneapi-libdpstd-devel-2021.7.0 , intel-oneapi-diagnostics-utility (>= 2022.1.0-150), intel-oneapi-tbb-devel-2021.6.0 , intel-oneapi-ccl-devel-2021.6.0 , intel-oneapi-compiler-dpcpp-cpp-2022.1.0 , intel-oneapi-dal-devel-2021.6.0 , intel-oneapi-onevpl-devel-2022.1.0 , intel-oneapi-ipp-devel-2021.6.0 , intel-oneapi-ippcp-devel-2021.6.0 , intel-oneapi-mkl-devel-2022.1.0 , intel-oneapi-advisor (>= 2022.1.0-171), intel-oneapi-python (>= 2022.1.0-214), intel-oneapi-vtune (>= 2022.2.0-172), intel-oneapi-dnnl-devel (>= 2022.1.0-132) +Filename: pool/main/intel-basekit-2022.2.0-2022.2.0-262_amd64.deb +Size: 2116 +MD5sum: 7fd4bd2fa3b2b0ccc9ba5149ac584eb6 +SHA1: 0ccb459ab3ece371b049b4b172863918184283eb +SHA256: ed4ca79da07198b8518ba6e53fa736e8465fb865e73acab5fad17d075317215b +SHA512: e72d1ea724b89a6fdc802f38af49055d9e3549c2f0c148b3e2b11c492e0f8d3ac85cbf41eca3a3539d31f8114fc56a1ce29157bce1505da853b20540cc3685dc +Description: Intel® oneAPI Base Toolkit + + +Package: intel-basekit +Architecture: amd64 +Version: 2022.2.0-262 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit-getting-started (>= 2022.2.0-262), intel-oneapi-common-vars (>= 2022.1.0-161), intel-oneapi-common-licensing (>= 2022.1.0-161), intel-oneapi-dpcpp-ct (>= 2022.1.0-172), intel-oneapi-dev-utilities (>= 2021.6.0-989), intel-oneapi-dpcpp-debugger (>= 2021.6.0-178), intel-oneapi-libdpstd-devel (>= 2021.7.0-631), intel-oneapi-diagnostics-utility (>= 2022.1.0-150), intel-oneapi-tbb-devel (>= 2021.6.0-835), intel-oneapi-ccl-devel (>= 2021.6.0-568), intel-oneapi-compiler-dpcpp-cpp (>= 2022.1.0-3768), intel-oneapi-dal-devel (>= 2021.6.0-915), intel-oneapi-onevpl-devel (>= 2022.1.0-154), intel-oneapi-ipp-devel (>= 2021.6.0-626), intel-oneapi-ippcp-devel (>= 2021.6.0-536), intel-oneapi-mkl-devel (>= 2022.1.0-223), intel-oneapi-advisor (>= 2022.1.0-171), intel-oneapi-python (>= 2022.1.0-214), intel-oneapi-vtune (>= 2022.2.0-172), intel-oneapi-dnnl-devel (>= 2022.1.0-132) +Filename: pool/main/intel-basekit-2022.2.0-262_amd64.deb +Size: 2144 +MD5sum: 8c032252d3661596fdedb11c8a6fcb9a +SHA1: 9bd7ccdaf226e78a679ed554e894819baf0bf771 +SHA256: b332a6da3ebdcf40aa78c9da2ee5dcbd1026a63d058f37b2a8adc5b1d654cadd +SHA512: f757d96b9d31a3adaab372c57299e39532e6d8b165b0dbd2c00707dcfa9ff66f2d5d35eba609c7f6407115444d83a65616945472dd21283ff23f25dd76b3ae1c +Description: Intel® oneAPI Base Toolkit + + +Package: intel-basekit-2022.3.0 +Architecture: amd64 +Version: 2022.3.0-8767 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit-getting-started (>= 2022.3.0-8767), intel-oneapi-common-vars (>= 2022.2.0-8694), intel-oneapi-common-licensing-2022.2.0 , intel-oneapi-dpcpp-ct-2022.2.0 , intel-oneapi-dev-utilities-2021.7.0 , intel-oneapi-dpcpp-debugger-2021.7.0 , intel-oneapi-libdpstd-devel-2021.7.1 , intel-oneapi-diagnostics-utility (>= 2022.1.1-8702), intel-oneapi-tbb-devel-2021.7.0 , intel-oneapi-ccl-devel-2021.7.0 , intel-oneapi-compiler-dpcpp-cpp-2022.2.0 , intel-oneapi-dal-devel-2021.7.0 , intel-oneapi-onevpl-devel-2022.2.0 , intel-oneapi-ipp-devel-2021.6.1 , intel-oneapi-ippcp-devel-2021.6.1 , intel-oneapi-mkl-devel-2022.2.0 , intel-oneapi-advisor (>= 2022.3.0-8704), intel-oneapi-python (>= 2022.2.0-8762), intel-oneapi-vtune (>= 2022.4.0-8705), intel-oneapi-dnnl-devel (>= 2022.2.0-8750) +Filename: pool/main/intel-basekit-2022.3.0-2022.3.0-8767_amd64.deb +Size: 2124 +MD5sum: 6fe57df555f8d13b0e5c4b0a5baf6c0c +SHA1: 797463230d03670bb88299d660e6368cda3228cd +SHA256: 804e6ea6807141066b52e6d521c902a770b2eefa3c2ef9ff16c04c957494158c +SHA512: 0c360df9c1a24fda59fc5833a08da382e1cf42a0575e3bd295b5e5708e54a6b7a9e69ecc101bcf0b37dd124a0876187706f74029f35956381d7a1b3b24932dd0 +Description: Intel® oneAPI Base Toolkit + + +Package: intel-basekit +Architecture: amd64 +Version: 2022.3.0-8767 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit-getting-started (>= 2022.3.0-8767), intel-oneapi-common-vars (>= 2022.2.0-8694), intel-oneapi-common-licensing (>= 2022.2.0-8694), intel-oneapi-dpcpp-ct (>= 2022.2.0-8701), intel-oneapi-dev-utilities (>= 2021.7.0-8698), intel-oneapi-dpcpp-debugger (>= 2021.7.0-8700), intel-oneapi-libdpstd-devel (>= 2021.7.1-8713), intel-oneapi-diagnostics-utility (>= 2022.1.1-8702), intel-oneapi-tbb-devel (>= 2021.7.0-8712), intel-oneapi-ccl-devel (>= 2021.7.0-8733), intel-oneapi-compiler-dpcpp-cpp (>= 2022.2.0-8734), intel-oneapi-dal-devel (>= 2021.7.0-8746), intel-oneapi-onevpl-devel (>= 2022.2.0-8703), intel-oneapi-ipp-devel (>= 2021.6.1-8749), intel-oneapi-ippcp-devel (>= 2021.6.1-8714), intel-oneapi-mkl-devel (>= 2022.2.0-8748), intel-oneapi-advisor (>= 2022.3.0-8704), intel-oneapi-python (>= 2022.2.0-8762), intel-oneapi-vtune (>= 2022.4.0-8705), intel-oneapi-dnnl-devel (>= 2022.2.0-8750) +Filename: pool/main/intel-basekit-2022.3.0-8767_amd64.deb +Size: 2140 +MD5sum: 0f56c124008bc1f85c7a4d4a245e02c8 +SHA1: bfd9aa023ce3cfb23dc72755f106a401930329c7 +SHA256: 4250a7ad25d7596aac06219c62494e01f2a3803f25bb1b2a5da2848fafa25462 +SHA512: 47e7f62afcec327cbf3adb2a0660fdfbb5447a1de21b70be96f572f2a4a459532e8ac9fa91606d108ab6e08b5b00d836cb74ff552b4216a0ab1ed5b091bef598 +Description: Intel® oneAPI Base Toolkit + + +Package: intel-basekit +Architecture: amd64 +Version: 2022.3.1-17310 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit-getting-started (>= 2022.3.1-17310), intel-oneapi-common-vars (>= 2022.2.1-14969), intel-oneapi-common-licensing (>= 2022.2.1-14969), intel-oneapi-dpcpp-ct (>= 2022.2.1-14994), intel-oneapi-dev-utilities (>= 2021.7.1-14991), intel-oneapi-dpcpp-debugger (>= 2021.7.1-14993), intel-oneapi-libdpstd-devel (>= 2021.7.2-15007), intel-oneapi-diagnostics-utility (>= 2022.1.2-14995), intel-oneapi-tbb-devel (>= 2021.7.1-15005), intel-oneapi-ccl-devel (>= 2021.7.1-16948), intel-oneapi-compiler-dpcpp-cpp (>= 2022.2.1-16953), intel-oneapi-dal-devel (>= 2021.7.1-16996), intel-oneapi-onevpl-devel (>= 2022.2.5-17121), intel-oneapi-ipp-devel (>= 2021.6.2-16995), intel-oneapi-ippcp-devel (>= 2021.6.2-15006), intel-oneapi-mkl-devel (>= 2022.2.1-16993), intel-oneapi-advisor (>= 2022.3.1-15323), intel-oneapi-python (>= 2022.2.1-17274), intel-oneapi-vtune (>= 2022.4.1-16919), intel-oneapi-dnnl-devel (>= 2022.2.1-16994) +Filename: pool/main/intel-basekit-2022.3.1-17310_amd64.deb +Size: 2164 +MD5sum: fef00803f36a1b8d2d9d434d9a65f0d5 +SHA1: 15ed4d9e48ddbb910020775c71e4e4d03a42f6c3 +SHA256: 1404ab696d41c1a39ea17a1a42727e3c1b7727c6611cd1f41382be4fe8777943 +SHA512: 8da21240dc269cf7e677298094855937526674ddc15ecc33bc7cd2dac98d68dc188ef58f613d56e704976502e8431974b6d9a7bff8126e049f2c57996d5ab11f +Description: Intel® oneAPI Base Toolkit + + +Package: intel-basekit-2022.3.1 +Architecture: amd64 +Version: 2022.3.1-17310 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit-getting-started (>= 2022.3.1-17310), intel-oneapi-common-vars (>= 2022.2.1-14969), intel-oneapi-common-licensing-2022.2.1 , intel-oneapi-dpcpp-ct-2022.2.1 , intel-oneapi-dev-utilities-2021.7.1 , intel-oneapi-dpcpp-debugger-2021.7.1 , intel-oneapi-libdpstd-devel-2021.7.2 , intel-oneapi-diagnostics-utility (>= 2022.1.2-14995), intel-oneapi-tbb-devel-2021.7.1 , intel-oneapi-ccl-devel-2021.7.1 , intel-oneapi-compiler-dpcpp-cpp-2022.2.1 , intel-oneapi-dal-devel-2021.7.1 , intel-oneapi-onevpl-devel-2022.2.5 , intel-oneapi-ipp-devel-2021.6.2 , intel-oneapi-ippcp-devel-2021.6.2 , intel-oneapi-mkl-devel-2022.2.1 , intel-oneapi-advisor (>= 2022.3.1-15323), intel-oneapi-python (>= 2022.2.1-17274), intel-oneapi-vtune (>= 2022.4.1-16919), intel-oneapi-dnnl-devel (>= 2022.2.1-16994) +Filename: pool/main/intel-basekit-2022.3.1-2022.3.1-17310_amd64.deb +Size: 2132 +MD5sum: b48187ed2b34a62a18313b309a29ef68 +SHA1: bfb30ffae7677b60e8bd78706daf00c07592a00f +SHA256: 0656a464f989474c1797a76564d8f4bc2294d4d9b430bf6f34f03e020707a095 +SHA512: 8ee5922de91abbf708b5eb7ec1ef56ac7747d0d8bce13652b6c74499c4abfe75908fdd895556b15fc25803da495fcec5874236a4ed14b2cd316a84e9ee710f39 +Description: Intel® oneAPI Base Toolkit + + +Package: intel-basekit-2023.0.0 +Architecture: amd64 +Version: 2023.0.0-25537 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit-getting-started (>= 2023.0.0-25537), intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing-2023.0.0 , intel-oneapi-dpcpp-ct-2023.0.0 , intel-oneapi-dev-utilities-2021.8.0 , intel-oneapi-dpcpp-debugger-2023.0.0 , intel-oneapi-libdpstd-devel-2022.0.0 , intel-oneapi-diagnostics-utility (>= 2022.2.0-25337), intel-oneapi-tbb-devel-2021.8.0 , intel-oneapi-ccl-devel-2021.8.0 , intel-oneapi-compiler-dpcpp-cpp-2023.0.0 , intel-oneapi-dal-devel-2023.0.0 , intel-oneapi-onevpl-devel-2023.0.0 , intel-oneapi-ipp-devel-2021.7.0 , intel-oneapi-ippcp-devel-2021.6.3 , intel-oneapi-mkl-devel-2023.0.0 , intel-oneapi-advisor (>= 2023.0.0-25338), intel-oneapi-vtune (>= 2023.0.0-25339), intel-oneapi-dnnl-devel (>= 2023.0.0-25399) +Filename: pool/main/intel-basekit-2023.0.0-2023.0.0-25537_amd64.deb +Size: 2108 +MD5sum: 6b41840de55a7ca868d814349d732b9c +SHA1: 8e7b187f83237bd8da16a6f266700340d62ea594 +SHA256: 9830027e0fbddf3acf411376c018348eb160adbbed1c9601d0fa0451964f91da +SHA512: f6894114386aa5df906b7180ccb8386d6262008fd69a5b85988b577996c681a61e736442bd56231e0e15b55e61e260610a667d9bfeebdbc493fd34ac4b6fa977 +Description: Intel® oneAPI Base Toolkit + + +Package: intel-basekit +Architecture: amd64 +Version: 2023.0.0-25537 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit-getting-started (>= 2023.0.0-25537), intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing (>= 2023.0.0-25325), intel-oneapi-dpcpp-ct (>= 2023.0.0-25483), intel-oneapi-dev-utilities (>= 2021.8.0-25328), intel-oneapi-dpcpp-debugger (>= 2023.0.0-25336), intel-oneapi-libdpstd-devel (>= 2022.0.0-25335), intel-oneapi-diagnostics-utility (>= 2022.2.0-25337), intel-oneapi-tbb-devel (>= 2021.8.0-25334), intel-oneapi-ccl-devel (>= 2021.8.0-25371), intel-oneapi-compiler-dpcpp-cpp (>= 2023.0.0-25370), intel-oneapi-dal-devel (>= 2023.0.0-25395), intel-oneapi-onevpl-devel (>= 2023.0.0-25332), intel-oneapi-ipp-devel (>= 2021.7.0-25396), intel-oneapi-ippcp-devel (>= 2021.6.3-25343), intel-oneapi-mkl-devel (>= 2023.0.0-25398), intel-oneapi-advisor (>= 2023.0.0-25338), intel-oneapi-vtune (>= 2023.0.0-25339), intel-oneapi-dnnl-devel (>= 2023.0.0-25399) +Filename: pool/main/intel-basekit-2023.0.0-25537_amd64.deb +Size: 2132 +MD5sum: ee45f538613f9f964cac4f1f0be78833 +SHA1: 06fc24b4c1283fae9fe1b9ac99c67250d8a03773 +SHA256: 15aed1fcfb82fe0036b0a5a3c79cf95a7aa02ace709d7e4ff5ab238aa0cbbbb6 +SHA512: 6dd980f2a4dd551d4d0ff427728a1b506153c3bfb64520c362069915a9b0aa26c755be5b30f6d9a13a193eea2ae3657c7eb6b7555ae9a185c9e023e9c18a5dae +Description: Intel® oneAPI Base Toolkit + + +Package: intel-basekit-2023.1.0 +Architecture: amd64 +Version: 2023.1.0-46401 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit-getting-started (>= 2023.1.0-46401), intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing-2023.1.0 , intel-oneapi-dpcpp-ct-2023.1.0 , intel-oneapi-dev-utilities-2021.9.0 , intel-oneapi-dpcpp-debugger-2023.1.0 , intel-oneapi-libdpstd-devel-2022.1.0 , intel-oneapi-diagnostics-utility (>= 2022.3.0-43897), intel-oneapi-tbb-devel-2021.9.0 , intel-oneapi-ccl-devel-2021.9.0 , intel-oneapi-compiler-dpcpp-cpp-2023.1.0 , intel-oneapi-dal-devel-2023.1.0 , intel-oneapi-ipp-devel-2021.8.0 , intel-oneapi-ippcp-devel-2021.7.0 , intel-oneapi-mkl-devel-2023.1.0 , intel-oneapi-advisor (>= 2023.1.0-43480), intel-oneapi-vtune (>= 2023.1.0-44286), intel-oneapi-dnnl-devel (>= 2023.1.0-46343) +Filename: pool/main/intel-basekit-2023.1.0-2023.1.0-46401_amd64.deb +Size: 2104 +MD5sum: 5310114a634875af5ce440c50cba5d67 +SHA1: 6d3d0ee6c9d9a310224baaaa1925230a88f0852b +SHA256: 7f78fa8a24226d1fe85ba6b592287fc0e77e6e9ec7339f1f600b33397366c79d +SHA512: 7444b214538c8136bd505916f5af65188deec4f9523ab5e0d2b8fff5d0cbc0dfca6753a16038cf10f893633e5e4d6127c6321fe1fdb62d8b05333be4420e3333 +Description: Intel® oneAPI Base Toolkit + + +Package: intel-basekit +Architecture: amd64 +Version: 2023.1.0-46401 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit-getting-started (>= 2023.1.0-46401), intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing (>= 2023.1.0-43473), intel-oneapi-dpcpp-ct (>= 2023.1.0-44450), intel-oneapi-dev-utilities (>= 2021.9.0-44447), intel-oneapi-dpcpp-debugger (>= 2023.1.0-43513), intel-oneapi-libdpstd-devel (>= 2022.1.0-43490), intel-oneapi-diagnostics-utility (>= 2022.3.0-43897), intel-oneapi-tbb-devel (>= 2021.9.0-43484), intel-oneapi-ccl-devel (>= 2021.9.0-43543), intel-oneapi-compiler-dpcpp-cpp (>= 2023.1.0-46305), intel-oneapi-dal-devel (>= 2023.1.0-46349), intel-oneapi-ipp-devel (>= 2021.8.0-46345), intel-oneapi-ippcp-devel (>= 2021.7.0-43492), intel-oneapi-mkl-devel (>= 2023.1.0-46342), intel-oneapi-advisor (>= 2023.1.0-43480), intel-oneapi-vtune (>= 2023.1.0-44286), intel-oneapi-dnnl-devel (>= 2023.1.0-46343) +Filename: pool/main/intel-basekit-2023.1.0-46401_amd64.deb +Size: 2132 +MD5sum: 559773e88f165c01982ebfc27eb73495 +SHA1: 6741e349d094f544724c03cb16b034af2f38e4e6 +SHA256: 300cda645290c89c4bae784bafa0918910cb51dbd101d552b7a7464ec32e10c7 +SHA512: af8e519694c0d7418b4757d7700c359f6f80e8ff422b84e992c41275ba0b60a0f0d01a880b5956c75be5cc91cd4daa9c10f80e618426eacbd949428aaab0c246 +Description: Intel® oneAPI Base Toolkit + + +Package: intel-basekit-runtime-2021.1.0 +Architecture: amd64 +Version: 2021.1.0-2659 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit-getting-started (>= 2021.1.0-2659), intel-oneapi-common-vars (>= 2021.1.1-60), intel-oneapi-common-licensing-2021.1.1 , intel-oneapi-dev-utilities-2021.1.1 , intel-oneapi-compiler-dpcpp-cpp-runtime-2021.1.1 , intel-oneapi-dnnl (>= 2021.1.1-55), intel-oneapi-onevpl-2021.1.1 +Filename: pool/main/intel-basekit-runtime-2021.1.0-2021.1.0-2659_amd64.deb +Size: 1742 +MD5sum: 9935edda38ad657a1c3aa399db4acc70 +SHA1: bebf54b3f669284303a55dd04614ba925181bd7d +SHA256: 905e57fc8cf7ec3986d8d9ba81eeca2aae9fbd99ece1d2457c1a1cb8b1b80658 +SHA512: c2452f552095f3141aee0ce04a6fd166f2cc00e227a6470898a4b63e8b49373e6e415f76d371129a160ac1592c4edc5ab0b61b3f5aee8d5a36b45973b3a16cea +Description: Intel® oneAPI Base Toolkit + + +Package: intel-basekit-runtime +Architecture: amd64 +Version: 2021.1.0-2659 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit-getting-started (>= 2021.1.0-2659), intel-oneapi-common-vars (>= 2021.1.1-60), intel-oneapi-common-licensing (>= 2021.1.1-60), intel-oneapi-dev-utilities (>= 2021.1.1-197), intel-oneapi-compiler-dpcpp-cpp-runtime (>= 2021.1.1-189), intel-oneapi-dnnl (>= 2021.1.1-55), intel-oneapi-onevpl (>= 2021.1.1-66) +Filename: pool/main/intel-basekit-runtime-2021.1.0-2659_amd64.deb +Size: 1738 +MD5sum: 824b39709a9c273a4f40b8e6110340e4 +SHA1: c8c80846d7b67b78ef2e6231405eec3cd9447de9 +SHA256: dc91ecf4315998bb840aef9e8617a8ea1a525f25f5591a7273e272103b4b3244 +SHA512: 7c1cd8cdc8d72426d66296057001566f777418ec0ad64fa444b69f8ea7b33eca69816b99f939ae417fc28b204499eed4ed476c396376ec6247762657581b170a +Description: Intel® oneAPI Base Toolkit + + +Package: intel-basekit-runtime-2021.2.0 +Architecture: amd64 +Version: 2021.2.0-2883 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit-getting-started (>= 2021.2.0-2883), intel-oneapi-common-vars (>= 2021.2.0-195), intel-oneapi-common-licensing-2021.2.0 , intel-oneapi-dev-utilities-2021.2.0 , intel-oneapi-compiler-dpcpp-cpp-runtime-2021.2.0 , intel-oneapi-dnnl (>= 2021.2.0-228), intel-oneapi-onevpl-2021.2.2 +Filename: pool/main/intel-basekit-runtime-2021.2.0-2021.2.0-2883_amd64.deb +Size: 1738 +MD5sum: 1005599246ac6f5cadfbb254f2547148 +SHA1: 2a0fc9b310325dea772f732b2e2f8c3b87cc25f6 +SHA256: 2aa632bcc81802bb3d006d2b6730c2a1ff0622ba3c95114777c90de9b58b5814 +SHA512: 7e0f6bdf4ef2f3a4d0340de8174ced9c7ef6ec00a089ce144db554b059e44e8ecee8c58fe26800cb3b37293c44d9eb5615be4c2c04f14dd123eb00a6423eaead +Description: Intel® oneAPI Base Toolkit + + +Package: intel-basekit-runtime +Architecture: amd64 +Version: 2021.2.0-2883 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit-getting-started (>= 2021.2.0-2883), intel-oneapi-common-vars (>= 2021.2.0-195), intel-oneapi-common-licensing (>= 2021.2.0-195), intel-oneapi-dev-utilities (>= 2021.2.0-493), intel-oneapi-compiler-dpcpp-cpp-runtime (>= 2021.2.0-610), intel-oneapi-dnnl (>= 2021.2.0-228), intel-oneapi-onevpl (>= 2021.2.2-212) +Filename: pool/main/intel-basekit-runtime-2021.2.0-2883_amd64.deb +Size: 1740 +MD5sum: 244683d9c7574f3d50a814c10f1eec3e +SHA1: 7cbb89a230f72a1a8269406e942cb0b1745e8133 +SHA256: f28807eb8bc369e6a9f8a04789a1ca1f3da0594a1e8f6f394cc18636d237e34f +SHA512: 6e6523c74c2b9e252d36c3f703693a2ca40e55f77c78f77df033ece6940a7058f101fd347e4c5bd5e7ee2766184e1e143bf7db3e7c59bc955dc639f9e9a470b2 +Description: Intel® oneAPI Base Toolkit + + +Package: intel-basekit-runtime-2021.3.0 +Architecture: amd64 +Version: 2021.3.0-3219 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit-getting-started (>= 2021.3.0-3219), intel-oneapi-common-vars (>= 2021.3.0-261), intel-oneapi-common-licensing-2021.3.0 , intel-oneapi-dev-utilities-2021.3.0 , intel-oneapi-dnnl (>= 2021.3.0-344), intel-oneapi-onevpl-2021.4.0 +Filename: pool/main/intel-basekit-runtime-2021.3.0-2021.3.0-3219_amd64.deb +Size: 1722 +MD5sum: bf09afed2309116c683c8b5232d17f61 +SHA1: 8bd4b5285119d698373d44d19fdb890a21c77988 +SHA256: 4229c07099fc3582a14412d71ed0a24bd249ec2854d75ef59fa364339f8a0412 +SHA512: 0ba0a29132a2218ad7009da7b9f70230894d57f685f9d696bcf497796e7004bfad3e071a351d292dbcdf5e286ddba95eb6d2260498eb23aeb5c12f11b57684db +Description: Intel® oneAPI Base Toolkit + + +Package: intel-basekit-runtime +Architecture: amd64 +Version: 2021.3.0-3219 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit-getting-started (>= 2021.3.0-3219), intel-oneapi-common-vars (>= 2021.3.0-261), intel-oneapi-common-licensing (>= 2021.3.0-261), intel-oneapi-dev-utilities (>= 2021.3.0-691), intel-oneapi-dnnl (>= 2021.3.0-344), intel-oneapi-onevpl (>= 2021.4.0-328) +Filename: pool/main/intel-basekit-runtime-2021.3.0-3219_amd64.deb +Size: 1722 +MD5sum: 514ae0405765353ca3532d2c6b0c9d46 +SHA1: 43db4496317ff2d6801877b172c3da726689f600 +SHA256: ae215f8dd4d5a974f23a1956129fb0e9f1478bba92239623233b69c419a28386 +SHA512: e594afc7fe7530da2adb579e664a1f37a2386f938a16da47ffca771798a3c73c7f3c26d5a331c452e9af354cc8eedb082073cd80ed63f3172722c0e726df9733 +Description: Intel® oneAPI Base Toolkit + + +Package: intel-basekit-runtime-2021.4.0 +Architecture: amd64 +Version: 2021.4.0-3422 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit-getting-started (>= 2021.4.0-3422), intel-oneapi-common-vars (>= 2021.4.0-327), intel-oneapi-common-licensing-2021.4.0 , intel-oneapi-dev-utilities-2021.4.0 , intel-oneapi-dnnl (>= 2021.4.0-467), intel-oneapi-onevpl-2021.6.0 +Filename: pool/main/intel-basekit-runtime-2021.4.0-2021.4.0-3422_amd64.deb +Size: 1722 +MD5sum: 17bdd39321b3c98671c48eb873ed0afc +SHA1: 883222fe545a93787bea98c902e3afc1be3ff73f +SHA256: 86ea2749d4ad44d6801522fbb23a617541d78e7b6728392fe443c6f5ace26701 +SHA512: 88c41eea766b4af199a4f51d3ad643b8f0796a6f11091ce566255485a22b6b2a2df37fba9537df28004737afc7957d84bc23ea3d85601d1af88ad08a7be884f7 +Description: Intel® oneAPI Base Toolkit + + +Package: intel-basekit-runtime +Architecture: amd64 +Version: 2021.4.0-3422 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit-getting-started (>= 2021.4.0-3422), intel-oneapi-common-vars (>= 2021.4.0-327), intel-oneapi-common-licensing (>= 2021.4.0-327), intel-oneapi-dev-utilities (>= 2021.4.0-847), intel-oneapi-dnnl (>= 2021.4.0-467), intel-oneapi-onevpl (>= 2021.6.0-458) +Filename: pool/main/intel-basekit-runtime-2021.4.0-3422_amd64.deb +Size: 1722 +MD5sum: 19884664ee097d492b646da78c349557 +SHA1: bcb9e51575a4ab436913d897e45060077027e4a2 +SHA256: 30e6be8b6fff168908168966daf4f298b4e50530ae3aa2c0269645ec1f65c119 +SHA512: 550e3b03919c9ad8e104a06bcd3b5693312b13318964324c61cecb7068d3594eac80909af006f426e8a54786f7558db2ce594bad1f1f6ecc350280ffaf6c2ecb +Description: Intel® oneAPI Base Toolkit + + +Package: intel-basekit-runtime +Architecture: amd64 +Version: 2022.1.1-119 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit-getting-started (>= 2022.1.1-119), intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing (>= 2022.0.0-59), intel-oneapi-onevpl (>= 2022.0.0-58), intel-oneapi-dev-utilities (>= 2021.5.1-924), intel-oneapi-dnnl (>= 2022.0.1-26) +Filename: pool/main/intel-basekit-runtime-2022.1.1-119_amd64.deb +Size: 1726 +MD5sum: 1ccb1dbf2fe53381e65d12c1c6cbf1bf +SHA1: 64f9fc09e091b13d194b4b7522c98282cf207f44 +SHA256: 683ad72d5c32c858e85c54b70408b94efc8736ca3aea561164cf4577c0701e89 +SHA512: 08c31744fea6d5fd0f42df4b4459f0b139e46e31d155986d312bce53dd8f55c414031319a5f5bc17597cde88d452485c25bd634fbbd96d5d0f9e4d8d8a0ae321 +Description: Intel® oneAPI Base Toolkit + + +Package: intel-basekit-runtime-2022.1.1 +Architecture: amd64 +Version: 2022.1.1-119 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit-getting-started (>= 2022.1.1-119), intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 , intel-oneapi-onevpl-2022.0.0 , intel-oneapi-dev-utilities-2021.5.1 , intel-oneapi-dnnl (>= 2022.0.1-26) +Filename: pool/main/intel-basekit-runtime-2022.1.1-2022.1.1-119_amd64.deb +Size: 1728 +MD5sum: 68cb8a09aecd2b903a513bdb95a5ff2c +SHA1: aee38ad180c04204cf67ed4feb124bb56409e8fb +SHA256: fc03e6fd16e5820afcc97150421c2e1e23b8ad65afb8afcc787c93142309c368 +SHA512: 2e8c04956763ef9c8e400dab814937ea95db540057b903cadd4367d7ff7dda3c435d8777d14b9cdd3568ffdb349aeb726be7b735a784e3bebb8a90a86d9f4f96 +Description: Intel® oneAPI Base Toolkit + + +Package: intel-basekit-runtime +Architecture: amd64 +Version: 2022.1.2-146 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit-getting-started (>= 2022.1.2-146), intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing (>= 2022.0.0-59), intel-oneapi-onevpl (>= 2022.0.0-58), intel-oneapi-dev-utilities (>= 2021.5.2-936), intel-oneapi-dnnl (>= 2022.0.2-43) +Filename: pool/main/intel-basekit-runtime-2022.1.2-146_amd64.deb +Size: 1728 +MD5sum: 5910cca870eb3e4d0005893993f164ed +SHA1: 3ea344cabdb5c2a1be783f3e3f1f545f3f95ccbd +SHA256: 50653f69e9d3b89215357694d792d69839bdd6dfd44eae2e5e90f2203f71283a +SHA512: cfdcaefe72d851ddf1bc60f41f6ad19a23772a53dd1a7b5b73042425accfd16848b16cba86414a9d5c4d93825ec0faf8e7c0e2f96e9cdca6ca4a0a746f863486 +Description: Intel® oneAPI Base Toolkit + + +Package: intel-basekit-runtime-2022.1.2 +Architecture: amd64 +Version: 2022.1.2-146 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit-getting-started (>= 2022.1.2-146), intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 , intel-oneapi-onevpl-2022.0.0 , intel-oneapi-dev-utilities-2021.5.2 , intel-oneapi-dnnl (>= 2022.0.2-43) +Filename: pool/main/intel-basekit-runtime-2022.1.2-2022.1.2-146_amd64.deb +Size: 1728 +MD5sum: 325d6b9b26f49aebd6cc582e8381b688 +SHA1: ac55cc5b230e5c725d8e9bb788c6ac4f5e620fe2 +SHA256: d3f1f09a71b31102809602325445126ecd9e148be432e2d7c41d372856003c8c +SHA512: deef2af181cc775347f8aaac8554c5fa3379e85a5539381fd7fc7e8aa730a35ac2a6d6f3e8948ad19d3ef9e64deb5212dda18ca23931dc620c6b8ea60d9ec600 +Description: Intel® oneAPI Base Toolkit + + +Package: intel-basekit-runtime-2022.2.0 +Architecture: amd64 +Version: 2022.2.0-262 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit-getting-started (>= 2022.2.0-262), intel-oneapi-common-vars (>= 2022.1.0-161), intel-oneapi-common-licensing-2022.1.0 , intel-oneapi-dev-utilities-2021.6.0 , intel-oneapi-onevpl-2022.1.0 , intel-oneapi-dnnl (>= 2022.1.0-132) +Filename: pool/main/intel-basekit-runtime-2022.2.0-2022.2.0-262_amd64.deb +Size: 1800 +MD5sum: 21e606bbff29f32afcd96f3455247cb4 +SHA1: 4e95622ccdda8f44170c92444e81c97bc7c75f4d +SHA256: df6b045380a35c7a1ce6f390ac409c88b1206ff3fa3ea49a419c1d2899796bef +SHA512: 18d5ca5c5e2a850573e98671d2ac9f933f3beeffef357214f542552f0cc821930fe6f1c4ab25cc9edc81a6386db3261fdf9b3f57ec7f9b8e852d231a3b9b7b11 +Description: Intel® oneAPI Base Toolkit + + +Package: intel-basekit-runtime +Architecture: amd64 +Version: 2022.2.0-262 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit-getting-started (>= 2022.2.0-262), intel-oneapi-common-vars (>= 2022.1.0-161), intel-oneapi-common-licensing (>= 2022.1.0-161), intel-oneapi-dev-utilities (>= 2021.6.0-989), intel-oneapi-onevpl (>= 2022.1.0-154), intel-oneapi-dnnl (>= 2022.1.0-132) +Filename: pool/main/intel-basekit-runtime-2022.2.0-262_amd64.deb +Size: 1800 +MD5sum: b0eb3d5930148c159519eed45364047b +SHA1: 97bc5b3b4fe13861f1e44826963d6fbe2cf8ff53 +SHA256: 002320b1fde1b515ed2725fcdfacc8c5a3ae19d298c0b97a45b4bdf818d485f3 +SHA512: 9f50d511f9373d6be258f8f0c3965845bfb9031492166de990033f42c8c2553699c6b17ff57a187e315b55b32aad0d2eebe4e1825e5f3fdf441e77fba5d3edab +Description: Intel® oneAPI Base Toolkit + + +Package: intel-basekit-runtime-2022.3.0 +Architecture: amd64 +Version: 2022.3.0-8767 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit-getting-started (>= 2022.3.0-8767), intel-oneapi-common-vars (>= 2022.2.0-8694), intel-oneapi-common-licensing-2022.2.0 , intel-oneapi-dev-utilities-2021.7.0 , intel-oneapi-onevpl-2022.2.0 , intel-oneapi-dnnl (>= 2022.2.0-8750) +Filename: pool/main/intel-basekit-runtime-2022.3.0-2022.3.0-8767_amd64.deb +Size: 1804 +MD5sum: 631af75c759181f122a3d3e70b35ddba +SHA1: ecc8c92c981a3351ad42ea89154b7424e88db5e2 +SHA256: 0eeb7fb896d24c0de17739e96b85afee31a65729e141a515197bef6306b0ddaa +SHA512: 289b86b995fab97190458c1965af20a18e2bb1a3e1dfbd2eb2097b45e8007fb78bc20a64002bd099506fc093deff9cc2c021b7f079ee9d9151b15fe74ba52b2c +Description: Intel® oneAPI Base Toolkit + + +Package: intel-basekit-runtime +Architecture: amd64 +Version: 2022.3.0-8767 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit-getting-started (>= 2022.3.0-8767), intel-oneapi-common-vars (>= 2022.2.0-8694), intel-oneapi-common-licensing (>= 2022.2.0-8694), intel-oneapi-dev-utilities (>= 2021.7.0-8698), intel-oneapi-onevpl (>= 2022.2.0-8703), intel-oneapi-dnnl (>= 2022.2.0-8750) +Filename: pool/main/intel-basekit-runtime-2022.3.0-8767_amd64.deb +Size: 1800 +MD5sum: 5f2cac18e015696f98944800b777df85 +SHA1: 1336174fe1466d7eee8c7493abed91d1a4cf226f +SHA256: 350d856324f117e19f713062d80d75f427501c7c605d7671b482b5aeec409b97 +SHA512: 666fa58057d4ec8672bd1092fe63a7d090c7305ecec5bb15d5169cfeb7cf59dc2c95576f4cdfc957827d8190f27ddcd9db866fa78d4c3510e22920bffb7d45bc +Description: Intel® oneAPI Base Toolkit + + +Package: intel-basekit-runtime +Architecture: amd64 +Version: 2022.3.1-17310 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit-getting-started (>= 2022.3.1-17310), intel-oneapi-common-vars (>= 2022.2.1-14969), intel-oneapi-common-licensing (>= 2022.2.1-14969), intel-oneapi-dev-utilities (>= 2021.7.1-14991), intel-oneapi-onevpl (>= 2022.2.5-17121), intel-oneapi-dnnl (>= 2022.2.1-16994) +Filename: pool/main/intel-basekit-runtime-2022.3.1-17310_amd64.deb +Size: 1808 +MD5sum: e73b6b59c83f32ccdec43eeb93df5e83 +SHA1: 78916ad9c206e22264c4051a043865f80288c791 +SHA256: 3cb45d2f1116132c6999dddd340fa493deae915eeb9e788af5dad7471261f8f3 +SHA512: 66e3a38b8f228e39b4babfc20e239e5a462bc844766ea1ed414f9be2325405ab9f2cb84641226e4966048b0dad9b9493135e04bd7f290128f40b3ce7f53b3440 +Description: Intel® oneAPI Base Toolkit + + +Package: intel-basekit-runtime-2022.3.1 +Architecture: amd64 +Version: 2022.3.1-17310 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit-getting-started (>= 2022.3.1-17310), intel-oneapi-common-vars (>= 2022.2.1-14969), intel-oneapi-common-licensing-2022.2.1 , intel-oneapi-dev-utilities-2021.7.1 , intel-oneapi-onevpl-2022.2.5 , intel-oneapi-dnnl (>= 2022.2.1-16994) +Filename: pool/main/intel-basekit-runtime-2022.3.1-2022.3.1-17310_amd64.deb +Size: 1804 +MD5sum: dd594fb9ecce722cc277014516f8f3bf +SHA1: fb8fd91606728078a13e38b864ccd6aff58a624c +SHA256: bcb7c88140954adf6122c990f4541ee85e9ae96fd71c1fe4a045ed85d2e0f537 +SHA512: 5c366b0f4e9aa244e00f46b35a5886583344ad0316596c2d6865fd2229c937f7bbfc1c81ebfa0b632c4c3ccc780c9ba5ef1419c62928553fa0b2c63adbba72b6 +Description: Intel® oneAPI Base Toolkit + + +Package: intel-basekit-runtime-2023.0.0 +Architecture: amd64 +Version: 2023.0.0-25537 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit-getting-started (>= 2023.0.0-25537), intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing-2023.0.0 , intel-oneapi-dev-utilities-2021.8.0 , intel-oneapi-onevpl-2023.0.0 , intel-oneapi-dnnl (>= 2023.0.0-25399) +Filename: pool/main/intel-basekit-runtime-2023.0.0-2023.0.0-25537_amd64.deb +Size: 1800 +MD5sum: 376c5a99624e730846c9f50820d1a796 +SHA1: f859ecf2cd8ca758483d68e0eeeb17c344a7a1a1 +SHA256: 9eb7b698936530a191e07976a4d6792c7ff29c02312a89182e8ab558e3734061 +SHA512: 46240126543bdfa19d375f27db13fafd9acf9cd28eade58bf00d9884398d34bdf44a80b14f198c6514f50c48007ba6d0f4592fe3a68de18bf22963cea4b49b5f +Description: Intel® oneAPI Base Toolkit + + +Package: intel-basekit-runtime +Architecture: amd64 +Version: 2023.0.0-25537 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit-getting-started (>= 2023.0.0-25537), intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing (>= 2023.0.0-25325), intel-oneapi-dev-utilities (>= 2021.8.0-25328), intel-oneapi-onevpl (>= 2023.0.0-25332), intel-oneapi-dnnl (>= 2023.0.0-25399) +Filename: pool/main/intel-basekit-runtime-2023.0.0-25537_amd64.deb +Size: 1800 +MD5sum: e9ed8fa7d36035acc431d74badea6d21 +SHA1: 2af3f8bac7518cfbb886dbec1dc75a2cc501222e +SHA256: b03750f2b5cca915c7ca1d636616251acadf14462a694fc3e798b0aa8cfaa055 +SHA512: c3062ad7bf7cadb6b7cd8248fad5d2da604a712fd139874d70aab0c51d6fd0955a3208614818f7d06aa11a04ee01efa2f054fbd5c9e01309b953186fe79dc8b3 +Description: Intel® oneAPI Base Toolkit + + +Package: intel-basekit-runtime-2023.1.0 +Architecture: amd64 +Version: 2023.1.0-46401 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit-getting-started (>= 2023.1.0-46401), intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing-2023.1.0 , intel-oneapi-dev-utilities-2021.9.0 , intel-oneapi-dnnl (>= 2023.1.0-46343) +Filename: pool/main/intel-basekit-runtime-2023.1.0-2023.1.0-46401_amd64.deb +Size: 1796 +MD5sum: d1e17174fbe66ae061c4f587b36e60f2 +SHA1: 9b9d41cc93f56ce89e2d8c32e68d9b8239b5dfde +SHA256: f1552159414c4d4cfe8cd62b4299eddf0986c3e3b04006ae29c8b6ddaf40e6d4 +SHA512: e8bc29f63a5134f3775e589fce167dadee92398c8375241c512cd9bb9e4523284ae1a6b30e4938fb238b9022088ff5186c23810a85c2585e4fcf50f56b053994 +Description: Intel® oneAPI Base Toolkit + + +Package: intel-basekit-runtime +Architecture: amd64 +Version: 2023.1.0-46401 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit-getting-started (>= 2023.1.0-46401), intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing (>= 2023.1.0-43473), intel-oneapi-dev-utilities (>= 2021.9.0-44447), intel-oneapi-dnnl (>= 2023.1.0-46343) +Filename: pool/main/intel-basekit-runtime-2023.1.0-46401_amd64.deb +Size: 1792 +MD5sum: c02f87a15b2e13f6d6b575d504839e85 +SHA1: 85b416fc34dd43bf80e6a292d8054a85c06ce97b +SHA256: e9d7cd508c78075e887eb17c45b0cb7ec0a60d255628aadfe734dc929b2063e5 +SHA512: 91b7ee225a35bb568bc0665710f2459e1b75552e1547d9690921307512aa59fa346043cce570d7d0766b60892241c0c6385e4920c48a80ef23a3e291e949b3ca +Description: Intel® oneAPI Base Toolkit + + +Package: intel-dlfdkit +Architecture: amd64 +Version: 2021.1.0-1920 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-dlfdkit-getting-started (>= 2021.1.0-1920), intel-oneapi-common-vars (>= 2021.1.1-60), intel-oneapi-common-licensing (>= 2021.1.1-60), intel-oneapi-dev-utilities (>= 2021.1.1-197), intel-oneapi-dnnl-devel (>= 2021.1.1-55), intel-oneapi-ccl-devel (>= 2021.1.1-54) +Filename: pool/main/intel-dlfdkit-2021.1.0-1920_amd64.deb +Size: 1932 +MD5sum: 0e4febdc54f0dfde8ede7435f92c536b +SHA1: d33bc83dc4ab31c29951fa1adb65096cfbf337cd +SHA256: 285dff94cbfb8c0ab4d944393c211b7575923a4c0c0e6b88a99958d1d25f1745 +SHA512: 0f4054729862c5943e39d8f4979f3fcf535d8fa898d6970ff710447f6c2cd6f2b4abbf5c67440f686c59fe98fcbfdf1e856adc6b5948b122c6621cc4a490ee37 +Description: Intel® oneAPI DL Framework Developer Toolkit + + +Package: intel-dlfdkit-2021.1.0 +Architecture: amd64 +Version: 2021.1.0-1920 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-dlfdkit-getting-started (>= 2021.1.0-1920), intel-oneapi-common-vars (>= 2021.1.1-60), intel-oneapi-common-licensing-2021.1.1 , intel-oneapi-dev-utilities-2021.1.1 , intel-oneapi-dnnl-devel (>= 2021.1.1-55), intel-oneapi-ccl-devel-2021.1.1 +Filename: pool/main/intel-dlfdkit-2021.1.0-2021.1.0-1920_amd64.deb +Size: 1940 +MD5sum: 214c89780ad6966a76be91faf8b28a13 +SHA1: c3a49ecde7c6f4637c19251ae1774c1a2da83883 +SHA256: 0ae4937e1f4efb36524ea48297787ee665b60fd7e6cc591a1c95afc61990a246 +SHA512: f807c8cf4d123a0604503363a15e745da141179aac57572c0b227fbfd8f0e4bb8ad51f71ddd5a2f45aaf999c333fd8cf151aae792f134c7e63519baf478515fb +Description: Intel® oneAPI DL Framework Developer Toolkit + + +Package: intel-dlfdkit +Architecture: amd64 +Version: 2021.2.0-1999 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-dlfdkit-getting-started (>= 2021.2.0-1999), intel-oneapi-common-vars (>= 2021.2.0-195), intel-oneapi-common-licensing (>= 2021.2.0-195), intel-oneapi-dev-utilities (>= 2021.2.0-493), intel-oneapi-ccl-devel (>= 2021.2.0-269), intel-oneapi-dnnl-devel (>= 2021.2.0-228) +Filename: pool/main/intel-dlfdkit-2021.2.0-1999_amd64.deb +Size: 1934 +MD5sum: 03476ec1f64b9020d47d4e797551f44a +SHA1: 4ecc1410c3956500263f812485364b7e5fae95b8 +SHA256: 4d10cb3cc7a4831d1b095d58926d944c67d60aa6089d3d104e1bfbb04bfd303f +SHA512: 118597f46ddc918cde95d51348e57f18c06a302b24fc85d5861dd561c8c109bca92c80793560b02310a3572d90ea86ad46c891d948125b7975d1555b6aa15f49 +Description: Intel® oneAPI DL Framework Developer Toolkit + + +Package: intel-dlfdkit-2021.2.0 +Architecture: amd64 +Version: 2021.2.0-1999 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-dlfdkit-getting-started (>= 2021.2.0-1999), intel-oneapi-common-vars (>= 2021.2.0-195), intel-oneapi-common-licensing-2021.2.0 , intel-oneapi-dev-utilities-2021.2.0 , intel-oneapi-ccl-devel-2021.2.0 , intel-oneapi-dnnl-devel (>= 2021.2.0-228) +Filename: pool/main/intel-dlfdkit-2021.2.0-2021.2.0-1999_amd64.deb +Size: 1932 +MD5sum: e7de114515edc8a0222ce4dd1b486e4f +SHA1: c923c15cd94dfc4cb9577d9b4349d71c6481a0d1 +SHA256: 46ebfdad9dda7e0133b4301a2a25e57483d8d5afddf9760825392fbe4458bb06 +SHA512: abd88e4b6d0e677b1b02fc303e78561343e2e73cc11f80e57f85e8e86ebd392ed46f7f4ee8146b23167df4cd198d0c9bf96a2e7b8048d3bbc37316b5fb2c0608 +Description: Intel® oneAPI DL Framework Developer Toolkit + + +Package: intel-dlfdkit-2021.3.0 +Architecture: amd64 +Version: 2021.3.0-2064 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-dlfdkit-getting-started (>= 2021.3.0-2064), intel-oneapi-common-vars (>= 2021.3.0-261), intel-oneapi-common-licensing-2021.3.0 , intel-oneapi-dev-utilities-2021.3.0 , intel-oneapi-dnnl-devel (>= 2021.3.0-344), intel-oneapi-ccl-devel-2021.3.0 +Filename: pool/main/intel-dlfdkit-2021.3.0-2021.3.0-2064_amd64.deb +Size: 1930 +MD5sum: 657c6389b3e3fc6612fe66269e6c15fc +SHA1: ba0366436ab301fc9fe678202a53bd8f905c27bc +SHA256: f01e5710ec2d42c7f2ead70ce255f2bc44d7d7a3b39f1498acf3edea9730f6a9 +SHA512: 0711ef91ba7458bca594b8bac29f8cd8ebc49ad3350e208b1086cdf9c2128d28e828c99ea5d0cafaba2a222f1edafc149764d40910e5f08c5f716d651477b3aa +Description: Intel® oneAPI DL Framework Developer Toolkit + + +Package: intel-dlfdkit +Architecture: amd64 +Version: 2021.3.0-2064 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-dlfdkit-getting-started (>= 2021.3.0-2064), intel-oneapi-common-vars (>= 2021.3.0-261), intel-oneapi-common-licensing (>= 2021.3.0-261), intel-oneapi-dev-utilities (>= 2021.3.0-691), intel-oneapi-dnnl-devel (>= 2021.3.0-344), intel-oneapi-ccl-devel (>= 2021.3.0-343) +Filename: pool/main/intel-dlfdkit-2021.3.0-2064_amd64.deb +Size: 1930 +MD5sum: 079d9b56645836e8e4ad9cf92192a0e6 +SHA1: cf33c4d16e9b19025bbc30650fd6519322022245 +SHA256: 8fb504be542bf7dfca164b36ea475e89f2585842a71ce636d64332f13be19054 +SHA512: 4db79f0e3e2755a563ed67e145dd9abf73215799d3b665a4cbc457c3015a2106a5ad33b80d4250f74269be4dbd6b44ca97f460aee53ecfdf8a7b5c730e03d4ae +Description: Intel® oneAPI DL Framework Developer Toolkit + + +Package: intel-dlfdkit-2021.4.0 +Architecture: amd64 +Version: 2021.4.0-2105 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-dlfdkit-getting-started (>= 2021.4.0-2105), intel-oneapi-common-vars (>= 2021.4.0-327), intel-oneapi-common-licensing-2021.4.0 , intel-oneapi-dev-utilities-2021.4.0 , intel-oneapi-dnnl-devel (>= 2021.4.0-467), intel-oneapi-ccl-devel-2021.4.0 +Filename: pool/main/intel-dlfdkit-2021.4.0-2021.4.0-2105_amd64.deb +Size: 1932 +MD5sum: 5768d3314b2e7e741657bbce6fff137b +SHA1: c1fe7898644fff47406ebd0aefbc3e3362b70b2c +SHA256: b98db9e9dbd32cfcc24dfc36a2b35eef572e3a21e6bbe6dce17fc14c78c26695 +SHA512: 645b2fedfa73a6a49c547caf0e00865e03af0749eacd0709eb46ee33c9186db35707cc761753fbefb4718aef31110e99de52e7625e8ab1030a42260c868777fd +Description: Intel® oneAPI DL Framework Developer Toolkit + + +Package: intel-dlfdkit +Architecture: amd64 +Version: 2021.4.0-2105 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-dlfdkit-getting-started (>= 2021.4.0-2105), intel-oneapi-common-vars (>= 2021.4.0-327), intel-oneapi-common-licensing (>= 2021.4.0-327), intel-oneapi-dev-utilities (>= 2021.4.0-847), intel-oneapi-dnnl-devel (>= 2021.4.0-467), intel-oneapi-ccl-devel (>= 2021.4.0-433) +Filename: pool/main/intel-dlfdkit-2021.4.0-2105_amd64.deb +Size: 1932 +MD5sum: 1610864bb4ad36632631831931c07e68 +SHA1: f0e41eabc6772f1858d02f2d643b65e8625ad950 +SHA256: b730b16758d99d0d5e4c965628aee3a8945522679e9554c32f78d790375d506f +SHA512: 9cbbaf82ec3006063a0f7385e6e2c452d22cadb431a3a9a7a6b33612ea8b37d3b2c9d518e5a7c05b86f7925d6f1da8b1d31cf17c07b32c5ee2034fc026a27d8c +Description: Intel® oneAPI DL Framework Developer Toolkit + + +Package: intel-dlfdkit-2022.1.1 +Architecture: amd64 +Version: 2022.1.1-69 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-dlfdkit-getting-started (>= 2022.1.1-69), intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 , intel-oneapi-ccl-devel-2021.5.0 , intel-oneapi-dev-utilities-2021.5.1 , intel-oneapi-dnnl-devel (>= 2022.0.1-26) +Filename: pool/main/intel-dlfdkit-2022.1.1-2022.1.1-69_amd64.deb +Size: 1940 +MD5sum: 68853392aafc9a556c251e5e0a9211d5 +SHA1: c877a5976c89e5f3a1fa4902ff6534e34763859e +SHA256: 6532868ef23613c10d4cdc587a5c578641017b70620b0cca370abc37396952e5 +SHA512: 92db186f5a07fedfe694ad5baf732e64ea463b7589922781c2d7159868d5c914f4d89fac055273d83f01c7c5e3981dc2ecba717fae69dac91864c4f7cdae8fe6 +Description: Intel® oneAPI DL Framework Developer Toolkit + + +Package: intel-dlfdkit +Architecture: amd64 +Version: 2022.1.1-69 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-dlfdkit-getting-started (>= 2022.1.1-69), intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing (>= 2022.0.0-59), intel-oneapi-ccl-devel (>= 2021.5.0-478), intel-oneapi-dev-utilities (>= 2021.5.1-924), intel-oneapi-dnnl-devel (>= 2022.0.1-26) +Filename: pool/main/intel-dlfdkit-2022.1.1-69_amd64.deb +Size: 1944 +MD5sum: 3b646df6087d2c99919a2e74d1b18225 +SHA1: 59d0ad5314d99702692feb2541426c62e3101cf5 +SHA256: 900062fefb3f1ad785eafe1af1d1c2f107eaf325147820e7dffa73fd53f6e246 +SHA512: e7c3a4a43271175c78b9c5b60e17f62a01a2e01e69a272a6f45d153ea3f1e61d05a6f0ae25f2c8f350f683190664974953b1aab386aa7c6069bd71bedf94eb64 +Description: Intel® oneAPI DL Framework Developer Toolkit + + +Package: intel-dlfdkit-2022.1.2 +Architecture: amd64 +Version: 2022.1.2-86 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-dlfdkit-getting-started (>= 2022.1.2-86), intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 , intel-oneapi-dev-utilities-2021.5.2 , intel-oneapi-dnnl-devel (>= 2022.0.2-43), intel-oneapi-ccl-devel-2021.5.1 +Filename: pool/main/intel-dlfdkit-2022.1.2-2022.1.2-86_amd64.deb +Size: 1940 +MD5sum: b2dd3e7c6e64b38cbcd3b73b08367d07 +SHA1: 155a1ff5680410272de327a94e712a64b76f3d93 +SHA256: dbbb6baedc01acf83836a544bcc6be00851decbbf782c695386c73b4db6f2775 +SHA512: b08d8d15c37c174110840343b1638cad68fbe1a45629a03cf1aef1d4b37c3c2ae3ce81016d6b68c5bad565621d1b17d0eae963858bcc1bf8ef61e5b8506a9712 +Description: Intel® oneAPI DL Framework Developer Toolkit + + +Package: intel-dlfdkit +Architecture: amd64 +Version: 2022.1.2-86 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-dlfdkit-getting-started (>= 2022.1.2-86), intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing (>= 2022.0.0-59), intel-oneapi-dev-utilities (>= 2021.5.2-936), intel-oneapi-dnnl-devel (>= 2022.0.2-43), intel-oneapi-ccl-devel (>= 2021.5.1-494) +Filename: pool/main/intel-dlfdkit-2022.1.2-86_amd64.deb +Size: 1948 +MD5sum: e60a5525b4911d5ff47922c54968da44 +SHA1: 170810b4b4c51b1aa22ed180308222f544a13d15 +SHA256: 0a900b801e9d5eb4785ec0aa8608578f4feeee8029f9061ad9252f72b21f62c8 +SHA512: 949165991aedc01b3c3c5a24cdfe458a4e4154879a2f34cdd1fe25f6990cb4360b46c58621e65741eb29fa73b77f374e3ecd01b95cf36a0c1bfd6a497cd82f58 +Description: Intel® oneAPI DL Framework Developer Toolkit + + +Package: intel-dlfdkit +Architecture: amd64 +Version: 2022.2.0-140 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-dlfdkit-getting-started (>= 2022.2.0-140), intel-oneapi-common-vars (>= 2022.1.0-161), intel-oneapi-common-licensing (>= 2022.1.0-161), intel-oneapi-dev-utilities (>= 2021.6.0-989), intel-oneapi-ccl-devel (>= 2021.6.0-568), intel-oneapi-dnnl-devel (>= 2022.1.0-132) +Filename: pool/main/intel-dlfdkit-2022.2.0-140_amd64.deb +Size: 2020 +MD5sum: 1f020d3aec8436f296f6a8d031baf19b +SHA1: 1299750bddef09a087dc8125c4410b393b1c3162 +SHA256: 5f70f5d4b9c81a9d9ce0df21e2b1896b030825b80c51c9f8f77aaaeb019675d2 +SHA512: a5bc7b7d8c2be50797571f637ea8f5755aa3bfb589cd1d548e4d188596c17050b5d865c5fa70acf2649702fc1f95baef5e3546b31846ffe23bc738efe13a85ca +Description: Intel® oneAPI DL Framework Developer Toolkit + + +Package: intel-dlfdkit-2022.2.0 +Architecture: amd64 +Version: 2022.2.0-140 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-dlfdkit-getting-started (>= 2022.2.0-140), intel-oneapi-common-vars (>= 2022.1.0-161), intel-oneapi-common-licensing-2022.1.0 , intel-oneapi-dev-utilities-2021.6.0 , intel-oneapi-ccl-devel-2021.6.0 , intel-oneapi-dnnl-devel (>= 2022.1.0-132) +Filename: pool/main/intel-dlfdkit-2022.2.0-2022.2.0-140_amd64.deb +Size: 2016 +MD5sum: e94b876ff207b032ea71d097cd2f7803 +SHA1: a161ab35d378cd93bdcf1fb95786c725f2cc6844 +SHA256: c928054150b114bb3ac4ee79c3db5916ee05c4dbc0c213d3d5e53ac8a4a251d8 +SHA512: 12f560d2aab39441e5001ecc9556225685adde1c541453d2c2e040f8b445660db07c0ed9a53fca75eaa77e8c9e0f5e610ac878bf83d5102d7bd51e58868cd58b +Description: Intel® oneAPI DL Framework Developer Toolkit + + +Package: intel-dlfdkit-2022.3.0 +Architecture: amd64 +Version: 2022.3.0-8753 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-dlfdkit-getting-started (>= 2022.3.0-8753), intel-oneapi-common-vars (>= 2022.2.0-8694), intel-oneapi-common-licensing-2022.2.0 , intel-oneapi-dev-utilities-2021.7.0 , intel-oneapi-ccl-devel-2021.7.0 , intel-oneapi-dnnl-devel (>= 2022.2.0-8750) +Filename: pool/main/intel-dlfdkit-2022.3.0-2022.3.0-8753_amd64.deb +Size: 2016 +MD5sum: 2ba17c06863394df461648093a23b60a +SHA1: 416dfa710b5e03b2beb292184d4fc4eca41afb39 +SHA256: 280351fce7cfa3332dfd338a1a7946154b9e2c159118da4e9fd7cf67ab3a6ada +SHA512: 192e08148dc0ff48aa1a0b0da2c8047cb3cee227393ef3b33a8ecb983fd3c06a6e38e1439f473e56eb9de3e8ecabaf754bd230596a11306aa9a4c2b66b15d65c +Description: Intel® oneAPI DL Framework Developer Toolkit + + +Package: intel-dlfdkit +Architecture: amd64 +Version: 2022.3.0-8753 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-dlfdkit-getting-started (>= 2022.3.0-8753), intel-oneapi-common-vars (>= 2022.2.0-8694), intel-oneapi-common-licensing (>= 2022.2.0-8694), intel-oneapi-dev-utilities (>= 2021.7.0-8698), intel-oneapi-ccl-devel (>= 2021.7.0-8733), intel-oneapi-dnnl-devel (>= 2022.2.0-8750) +Filename: pool/main/intel-dlfdkit-2022.3.0-8753_amd64.deb +Size: 2016 +MD5sum: 27f81d28e6ab40c8722b389e6e6a4cb1 +SHA1: 281044e9e49e7c28857a702f4044058b26267eb2 +SHA256: afaf9bdf299cd72124f40ca9056f0238e79d488cac1629ab1e4de26da6a18459 +SHA512: 5313d57931613b13dbc99767512c749275842fb31fc8d2405e410c419a9c794104e0786562861728ce0745f9d2dd56be8f943b7022a6e3c83b6645043741d452 +Description: Intel® oneAPI DL Framework Developer Toolkit + + +Package: intel-dlfdkit +Architecture: amd64 +Version: 2022.3.1-17050 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-dlfdkit-getting-started (>= 2022.3.1-17050), intel-oneapi-common-vars (>= 2022.2.1-14969), intel-oneapi-common-licensing (>= 2022.2.1-14969), intel-oneapi-dev-utilities (>= 2021.7.1-14991), intel-oneapi-ccl-devel (>= 2021.7.1-16948), intel-oneapi-dnnl-devel (>= 2022.2.1-16994) +Filename: pool/main/intel-dlfdkit-2022.3.1-17050_amd64.deb +Size: 2020 +MD5sum: 462d820126e3f0d3d57fab8d98f94c2e +SHA1: 6ca179ed01318df72ae3b7cf1476e2ac9bb63398 +SHA256: 8330187fdc18dab0cf7207b177142b5f77f35dd0fb4282b68a015c1aaae40e0e +SHA512: e5919c4db3df84e95e22124594dd5ed9bc638a717196e54bf4dc8d9592a70af679d74720d9336cd0c1088bc2d4e9c48dc21266debe2a464dee46b956d6eb5714 +Description: Intel® oneAPI DL Framework Developer Toolkit + + +Package: intel-dlfdkit-2022.3.1 +Architecture: amd64 +Version: 2022.3.1-17050 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-dlfdkit-getting-started (>= 2022.3.1-17050), intel-oneapi-common-vars (>= 2022.2.1-14969), intel-oneapi-common-licensing-2022.2.1 , intel-oneapi-dev-utilities-2021.7.1 , intel-oneapi-ccl-devel-2021.7.1 , intel-oneapi-dnnl-devel (>= 2022.2.1-16994) +Filename: pool/main/intel-dlfdkit-2022.3.1-2022.3.1-17050_amd64.deb +Size: 2020 +MD5sum: 8a7c05b6bb9e37e7085343de68e06812 +SHA1: bb7b3bc1d3b0b0ff7b2d488c024cd82a66d5e816 +SHA256: 0179e50754bc6d84e8c73fdb17f3643482b5749f65159f2ec0c3988d05a2bb18 +SHA512: 3c2853ea2cb8ee54dfd9ede22ae367d9833d1451027f4bc34de110f00b6428564112835caf7dc5b3f13622afd7e2487b05273433a0692fd131f39ead5bf36dee +Description: Intel® oneAPI DL Framework Developer Toolkit + + +Package: intel-dlfdkit-2023.0.0 +Architecture: amd64 +Version: 2023.0.0-25405 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-dlfdkit-getting-started (>= 2023.0.0-25405), intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing-2023.0.0 , intel-oneapi-dev-utilities-2021.8.0 , intel-oneapi-ccl-devel-2021.8.0 , intel-oneapi-dnnl-devel (>= 2023.0.0-25399) +Filename: pool/main/intel-dlfdkit-2023.0.0-2023.0.0-25405_amd64.deb +Size: 2016 +MD5sum: 6abb70e0e3dd27098fd32e2eab01f809 +SHA1: 0e214dc8216b26be27b43ccd42b10cb2ffb1db4d +SHA256: 9442bb93fe4463db44b4ed536eaa0e0b54d5e924b213cfc3a70541219dd70549 +SHA512: 64dd9b2bad4c671d62ca1d56edb4d61385b07825c7ae1aa847eb9d675482d6ed4fbbbf20c58b78e9de6beb11dda4e92ae1c1611c6f81b146932ddab118db027d +Description: Intel® oneAPI DL Framework Developer Toolkit + + +Package: intel-dlfdkit +Architecture: amd64 +Version: 2023.0.0-25405 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-dlfdkit-getting-started (>= 2023.0.0-25405), intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing (>= 2023.0.0-25325), intel-oneapi-dev-utilities (>= 2021.8.0-25328), intel-oneapi-ccl-devel (>= 2021.8.0-25371), intel-oneapi-dnnl-devel (>= 2023.0.0-25399) +Filename: pool/main/intel-dlfdkit-2023.0.0-25405_amd64.deb +Size: 2016 +MD5sum: a838f6077d40aa533846373d64af11a1 +SHA1: c64d091f9b7b53e4ff436121841a35b7497c2f43 +SHA256: d1f20094974ab7369bc5fe7774904c5aec998a813cba3ac02c21f7beda3c9102 +SHA512: 4eb6e57b13d9bcf0d9305ad018141e375c314f8959530a8d8e4ccef2df87d6bc4cf4a2c18dd1df957563c31b50ad6ab556d53608849f3590fdc81cbddf62501d +Description: Intel® oneAPI DL Framework Developer Toolkit + + +Package: intel-dlfdkit-2023.1.0 +Architecture: amd64 +Version: 2023.1.0-46364 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-dlfdkit-getting-started (>= 2023.1.0-46364), intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing-2023.1.0 , intel-oneapi-dev-utilities-2021.9.0 , intel-oneapi-ccl-devel-2021.9.0 , intel-oneapi-dnnl-devel (>= 2023.1.0-46343) +Filename: pool/main/intel-dlfdkit-2023.1.0-2023.1.0-46364_amd64.deb +Size: 2016 +MD5sum: 3b9efa4c2e314533fbc6afb497962400 +SHA1: c8991cb66567dd1581ebe773206797c565c1359c +SHA256: 601a2af6b0a5648b56d0a5d746e468a602eae786cbc150f18dace801e2407be6 +SHA512: bf43752f4d1d7cfd1f21d205bf52c9adfddecc98a457594d399d94f6765f9ba5529bb6e9bfeeba59a82d0abc60b91e36d2a3de0766c6a1c15067429aef7f684e +Description: Intel® oneAPI DL Framework Developer Toolkit + + +Package: intel-dlfdkit +Architecture: amd64 +Version: 2023.1.0-46364 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-dlfdkit-getting-started (>= 2023.1.0-46364), intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing (>= 2023.1.0-43473), intel-oneapi-dev-utilities (>= 2021.9.0-44447), intel-oneapi-ccl-devel (>= 2021.9.0-43543), intel-oneapi-dnnl-devel (>= 2023.1.0-46343) +Filename: pool/main/intel-dlfdkit-2023.1.0-46364_amd64.deb +Size: 2016 +MD5sum: 62ec13fd50288b67c00d01ca587a116f +SHA1: 311f6b83b70c443a0b730eccd129357851617ad7 +SHA256: f80714bf38638981bf478b62daa661f7b561dc2d56b639e10c81399822d98e6c +SHA512: 988e588bed49277b721285e7023e494cfaae42eb38b08050e1e2b352e4f3a25c09ad58edd1ab91f3b5063b3c0f3567ce2489f2c8dd312492092822046070d331 +Description: Intel® oneAPI DL Framework Developer Toolkit + + +Package: intel-dlfdkit-runtime +Architecture: amd64 +Version: 2021.1.0-1920 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-dlfdkit-getting-started (>= 2021.1.0-1920), intel-oneapi-common-vars (>= 2021.1.1-60), intel-oneapi-common-licensing (>= 2021.1.1-60), intel-oneapi-dev-utilities (>= 2021.1.1-197), intel-oneapi-dnnl (>= 2021.1.1-55) +Filename: pool/main/intel-dlfdkit-runtime-2021.1.0-1920_amd64.deb +Size: 1730 +MD5sum: d1af80a02fa1aff845f9a6830b4426c3 +SHA1: 393c2ce6d9a40d472df3ea535930ab7c87be1ff0 +SHA256: 0d8bc51dbf85b12742c657572008a64bf8793255f3f5598bf2da51b43d087383 +SHA512: 40f0c2dba394ce39588ce7b73496b74ac694e5b864acc9718ce9cf62ccbe17117bfe3f015ee8a707640cd6f7354ac41a6349c3aee4492a4496a9af36b7c8364a +Description: Intel® oneAPI DL Framework Developer Toolkit + + +Package: intel-dlfdkit-runtime-2021.1.0 +Architecture: amd64 +Version: 2021.1.0-1920 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-dlfdkit-getting-started (>= 2021.1.0-1920), intel-oneapi-common-vars (>= 2021.1.1-60), intel-oneapi-common-licensing-2021.1.1 , intel-oneapi-dev-utilities-2021.1.1 , intel-oneapi-dnnl (>= 2021.1.1-55) +Filename: pool/main/intel-dlfdkit-runtime-2021.1.0-2021.1.0-1920_amd64.deb +Size: 1726 +MD5sum: d0333df4a2b1f1dc03a632ac7f85b108 +SHA1: 8f07f3615030e1bb05c3d1a4f978c1bb78729734 +SHA256: 29d83e0888c88c6bfbe66902aec23bae7ce6532d075342255f11918f543e4d92 +SHA512: e34012d17fb5e813556ce09a1eb07d70b10340c5445128615f507132d631250918ebc1ec82d2d8627df3c0e6765339286d131f98a538df267dc59378372df898 +Description: Intel® oneAPI DL Framework Developer Toolkit + + +Package: intel-dlfdkit-runtime +Architecture: amd64 +Version: 2021.2.0-1999 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-dlfdkit-getting-started (>= 2021.2.0-1999), intel-oneapi-common-vars (>= 2021.2.0-195), intel-oneapi-common-licensing (>= 2021.2.0-195), intel-oneapi-dev-utilities (>= 2021.2.0-493), intel-oneapi-dnnl (>= 2021.2.0-228) +Filename: pool/main/intel-dlfdkit-runtime-2021.2.0-1999_amd64.deb +Size: 1726 +MD5sum: c04039dac1061d1eccb18af00f3a5aac +SHA1: 994ad01ad1f66604a285e6110f46ac34dc328344 +SHA256: 6f3d6dc0adc89967a5971f44cff884db2af52a2c7dd9f4c11c1ba0336c06a547 +SHA512: 6791467dd96914cdff42cf2795b7a2761c6a65f05dd2d4c0e0e92f5056eca976c559ff7bf9189676e9e66c704ddcd8c452ee2d564a52694139f423e29cba8cba +Description: Intel® oneAPI DL Framework Developer Toolkit + + +Package: intel-dlfdkit-runtime-2021.2.0 +Architecture: amd64 +Version: 2021.2.0-1999 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-dlfdkit-getting-started (>= 2021.2.0-1999), intel-oneapi-common-vars (>= 2021.2.0-195), intel-oneapi-common-licensing-2021.2.0 , intel-oneapi-dev-utilities-2021.2.0 , intel-oneapi-dnnl (>= 2021.2.0-228) +Filename: pool/main/intel-dlfdkit-runtime-2021.2.0-2021.2.0-1999_amd64.deb +Size: 1726 +MD5sum: fbdc851cd04ab0b40b51001f86d1c7a6 +SHA1: cf9507060f8d08a8b084ebd2a9348cc059714e57 +SHA256: 68aee4376980638165537760d9d6a692853aedd8b6a83bdbf93a6174b4e8b17a +SHA512: 31b818ec32788da0553a4376aea295d499ca6c704e3a38cb4fb265fa96f18528fa9e4cd1adae499a841e08ee99ae15ecfba46adbe67552b83a131d9fbdc6d34a +Description: Intel® oneAPI DL Framework Developer Toolkit + + +Package: intel-dlfdkit-runtime-2021.3.0 +Architecture: amd64 +Version: 2021.3.0-2064 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-dlfdkit-getting-started (>= 2021.3.0-2064), intel-oneapi-common-vars (>= 2021.3.0-261), intel-oneapi-common-licensing-2021.3.0 , intel-oneapi-dev-utilities-2021.3.0 , intel-oneapi-dnnl (>= 2021.3.0-344) +Filename: pool/main/intel-dlfdkit-runtime-2021.3.0-2021.3.0-2064_amd64.deb +Size: 1726 +MD5sum: 34c52d64595c795086e7c700d049df42 +SHA1: cbd7c8b7927045dca9b9d07bd716d65d5dd6ff56 +SHA256: e27b06e986329e35bac7cafd61ff712b59b21ff82233905a844ae9fa362423cd +SHA512: c955468c9fb4fea91061215672d9f1af22d21487c5204b06177bce4f5560b0fe5103f79394b1fa6d19d68f53809c49f0acdf6632240f98f098b2d62bfeed405f +Description: Intel® oneAPI DL Framework Developer Toolkit + + +Package: intel-dlfdkit-runtime +Architecture: amd64 +Version: 2021.3.0-2064 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-dlfdkit-getting-started (>= 2021.3.0-2064), intel-oneapi-common-vars (>= 2021.3.0-261), intel-oneapi-common-licensing (>= 2021.3.0-261), intel-oneapi-dev-utilities (>= 2021.3.0-691), intel-oneapi-dnnl (>= 2021.3.0-344) +Filename: pool/main/intel-dlfdkit-runtime-2021.3.0-2064_amd64.deb +Size: 1724 +MD5sum: 2c9f66ed43cbdd0b0174fa96cce6f8ca +SHA1: af01d888b27bfc4f59fbeb1c5589c6c7e684f565 +SHA256: aac1c391fc9fbb4f9e0e33ee8845fae518a63b9047be957240f50d358be2a67f +SHA512: 2a155578a8be3d147189e9b9a6f6be2314af754d93dd16649a44c1be29b6d4ad31a46274488a8f58b0fad17a229045e5c8407416e0d8a4b2667f2e03fa98f64c +Description: Intel® oneAPI DL Framework Developer Toolkit + + +Package: intel-dlfdkit-runtime-2021.4.0 +Architecture: amd64 +Version: 2021.4.0-2105 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-dlfdkit-getting-started (>= 2021.4.0-2105), intel-oneapi-common-vars (>= 2021.4.0-327), intel-oneapi-common-licensing-2021.4.0 , intel-oneapi-dev-utilities-2021.4.0 , intel-oneapi-dnnl (>= 2021.4.0-467) +Filename: pool/main/intel-dlfdkit-runtime-2021.4.0-2021.4.0-2105_amd64.deb +Size: 1726 +MD5sum: 56b12ab4f86ba545333f934de1265c11 +SHA1: 591dd41089095e5bc5b3ec7fcecbfcb784569c87 +SHA256: 473ba06ba12c1933a5acc4a8390d510789695a6d185742a36a81befc7c5798ab +SHA512: 1c37ddb922b4aab5e4495b445ae712dcb8bc0931efb43a6fba40699e138b05ea44893d2d95a1fe110edc0ece9b8b95c3373f022dd60345ec499ddb430a624d8d +Description: Intel® oneAPI DL Framework Developer Toolkit + + +Package: intel-dlfdkit-runtime +Architecture: amd64 +Version: 2021.4.0-2105 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-dlfdkit-getting-started (>= 2021.4.0-2105), intel-oneapi-common-vars (>= 2021.4.0-327), intel-oneapi-common-licensing (>= 2021.4.0-327), intel-oneapi-dev-utilities (>= 2021.4.0-847), intel-oneapi-dnnl (>= 2021.4.0-467) +Filename: pool/main/intel-dlfdkit-runtime-2021.4.0-2105_amd64.deb +Size: 1726 +MD5sum: 7bfa5a4702e6eb78cf941ec54e8faa7f +SHA1: 7b42bfa8b6728844c31922d584394b35304538e4 +SHA256: 24467d19417ab9cf7ceeb14846daf3c19979342696ff92c4d2aee260d5db52cd +SHA512: 1cd0b8c74574bef36b743aea9cf8348df34a13aae1cc2ea4caa49947fc316a7e84efc215eafd6408e5917cf47af337b1e36bccd09732d7fcb9897f7388633774 +Description: Intel® oneAPI DL Framework Developer Toolkit + + +Package: intel-dlfdkit-runtime-2022.1.1 +Architecture: amd64 +Version: 2022.1.1-69 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-dlfdkit-getting-started (>= 2022.1.1-69), intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 , intel-oneapi-dev-utilities-2021.5.1 , intel-oneapi-dnnl (>= 2022.0.1-26) +Filename: pool/main/intel-dlfdkit-runtime-2022.1.1-2022.1.1-69_amd64.deb +Size: 1734 +MD5sum: a8ec0e69b609d0525eae19075b4ad931 +SHA1: 10a7d2ed1052b20f83620f8f9b156d2b73421795 +SHA256: 035aa4953c4aa3bd2996aca19d45f31c48054de6fc99b1b23e1da78683d72703 +SHA512: 9fe4a1e6e791a550bdcd4b2a62482b6ff9bda7fd904b5594db60d2449988e1b0f61c0c0ecf34f21b6287a0aaf3945b1da362268544579bdbb798d297bec93b97 +Description: Intel® oneAPI DL Framework Developer Toolkit + + +Package: intel-dlfdkit-runtime +Architecture: amd64 +Version: 2022.1.1-69 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-dlfdkit-getting-started (>= 2022.1.1-69), intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing (>= 2022.0.0-59), intel-oneapi-dev-utilities (>= 2021.5.1-924), intel-oneapi-dnnl (>= 2022.0.1-26) +Filename: pool/main/intel-dlfdkit-runtime-2022.1.1-69_amd64.deb +Size: 1730 +MD5sum: 61687e859b2f4e9393ff5db9664033f0 +SHA1: 80b08a1b6b7461fd6c5398f305cf13ae6ede7d28 +SHA256: ed1c0674a1c04151878c0e8e643fb73b1deaecb5516d2d42056a82ce077ec427 +SHA512: 680854824079b6d997babaf9bd4473ab378915f7b23ad12bfcbc812e50e81752e5817c43b7dc19b290b37e392bd11a690cdeea567f78176ca12a981ee4ad8344 +Description: Intel® oneAPI DL Framework Developer Toolkit + + +Package: intel-dlfdkit-runtime-2022.1.2 +Architecture: amd64 +Version: 2022.1.2-86 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-dlfdkit-getting-started (>= 2022.1.2-86), intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 , intel-oneapi-dev-utilities-2021.5.2 , intel-oneapi-dnnl (>= 2022.0.2-43) +Filename: pool/main/intel-dlfdkit-runtime-2022.1.2-2022.1.2-86_amd64.deb +Size: 1736 +MD5sum: 84ba05bbb06bd2ca329d313c8439cec5 +SHA1: db32cc7c3d4bb6ec1acc348ba078877460926380 +SHA256: 31f61ef182fd230112351a16d550b41e6ffe40c8636d584f3b966d805a27aa03 +SHA512: 18fa97ac08703993659ca2c0ae9a0fea0cfc1ed8eab4eb568378874066109d9bffaa3d6f5fe824520c93e0ae83cf939207a52aad6d0aaae90da09bb61f486195 +Description: Intel® oneAPI DL Framework Developer Toolkit + + +Package: intel-dlfdkit-runtime +Architecture: amd64 +Version: 2022.1.2-86 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-dlfdkit-getting-started (>= 2022.1.2-86), intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing (>= 2022.0.0-59), intel-oneapi-dev-utilities (>= 2021.5.2-936), intel-oneapi-dnnl (>= 2022.0.2-43) +Filename: pool/main/intel-dlfdkit-runtime-2022.1.2-86_amd64.deb +Size: 1732 +MD5sum: 16b7238081ef5cf55649fe3f7787101d +SHA1: 623786f9a6432ff89a725056c4b70102d0ad953d +SHA256: e5189ee12433741a34cd2e46d66cf5c8a50fb1850a20989e415ef87346272018 +SHA512: d07e51ffc5b56d39ba77b3601d71cc7b5978acbcd039fa002cfe8d590a53d1120d2263c46e20cbd4e2a092e2ab53caabae86a8c42327694f683f247e4babe27f +Description: Intel® oneAPI DL Framework Developer Toolkit + + +Package: intel-dlfdkit-runtime +Architecture: amd64 +Version: 2022.2.0-140 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-dlfdkit-getting-started (>= 2022.2.0-140), intel-oneapi-common-vars (>= 2022.1.0-161), intel-oneapi-common-licensing (>= 2022.1.0-161), intel-oneapi-dev-utilities (>= 2021.6.0-989), intel-oneapi-dnnl (>= 2022.1.0-132) +Filename: pool/main/intel-dlfdkit-runtime-2022.2.0-140_amd64.deb +Size: 1808 +MD5sum: 4f5865e2269b2fcaefada6f55c9da092 +SHA1: 5c28976deed520b7b2d63a854b3456ff6297f03f +SHA256: 20203a4e75bccdcaccd56023fdfd7cdfa77215b468eeea191344947489e2bb9d +SHA512: a1e00471e413ca7c56db5c16340a621a98144f01971ec6423146f8cf3a4ace0c0d80ba583ef3a0d1f78c25553f727006876cd16f8d9aaa4342c42eefdaf63f7a +Description: Intel® oneAPI DL Framework Developer Toolkit + + +Package: intel-dlfdkit-runtime-2022.2.0 +Architecture: amd64 +Version: 2022.2.0-140 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-dlfdkit-getting-started (>= 2022.2.0-140), intel-oneapi-common-vars (>= 2022.1.0-161), intel-oneapi-common-licensing-2022.1.0 , intel-oneapi-dev-utilities-2021.6.0 , intel-oneapi-dnnl (>= 2022.1.0-132) +Filename: pool/main/intel-dlfdkit-runtime-2022.2.0-2022.2.0-140_amd64.deb +Size: 1808 +MD5sum: cf6c2d870411287adb5b056647180a67 +SHA1: bdddc59bcaa32c4be5ee13e8ecd3556f1dd8aa38 +SHA256: b16b5b4b0282c4a8e8dcdf156b8783155c1cfd11d7a2558d45977b5fa15f2879 +SHA512: 7849a152c4b4def412fe7992314ab55c54ebee9effd4a3a7f7fec3f1457b435f63c7cc7a9481a7ba6ab6c4384c50a17aa00fce6c6d915f0881cc09fbc5110fd4 +Description: Intel® oneAPI DL Framework Developer Toolkit + + +Package: intel-dlfdkit-runtime-2022.3.0 +Architecture: amd64 +Version: 2022.3.0-8753 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-dlfdkit-getting-started (>= 2022.3.0-8753), intel-oneapi-common-vars (>= 2022.2.0-8694), intel-oneapi-common-licensing-2022.2.0 , intel-oneapi-dev-utilities-2021.7.0 , intel-oneapi-dnnl (>= 2022.2.0-8750) +Filename: pool/main/intel-dlfdkit-runtime-2022.3.0-2022.3.0-8753_amd64.deb +Size: 1808 +MD5sum: 7e5477aedc6c98fbdfd4f5d67efbe172 +SHA1: 0ca4c8bed102b12a8e76ee6f29d4ac302ece6c2b +SHA256: 5ff4f4d284454bf61a7a6b42e8d584624f85d2b565d099af5c9ed8edfbae5d2d +SHA512: 89a2de9ed290ae24614c89315e59820b23e33b68d793c34784119aa8b3ecbd3505802bd29dfa77e4e7f1b958a4fc744141d0ef797b7170d945e03b424550f764 +Description: Intel® oneAPI DL Framework Developer Toolkit + + +Package: intel-dlfdkit-runtime +Architecture: amd64 +Version: 2022.3.0-8753 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-dlfdkit-getting-started (>= 2022.3.0-8753), intel-oneapi-common-vars (>= 2022.2.0-8694), intel-oneapi-common-licensing (>= 2022.2.0-8694), intel-oneapi-dev-utilities (>= 2021.7.0-8698), intel-oneapi-dnnl (>= 2022.2.0-8750) +Filename: pool/main/intel-dlfdkit-runtime-2022.3.0-8753_amd64.deb +Size: 1808 +MD5sum: 29b8192bdf0310668f05ce79d7e75841 +SHA1: af8107143a0c4610a8cea0c22f15812ad4d7539e +SHA256: 9f14e75029cf84f694600fb39d1abd3c2e1948c494a573410b2239b85cd1a023 +SHA512: 68bb8fa3f364000430c690fc73eeb3d070ae5e7e29a7f137c8f7b74aac10e6c0e4d5c9f84e49fc10cd37e1ab8287fdeaebe09a4431933b433a2126a62d6837b5 +Description: Intel® oneAPI DL Framework Developer Toolkit + + +Package: intel-dlfdkit-runtime +Architecture: amd64 +Version: 2022.3.1-17050 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-dlfdkit-getting-started (>= 2022.3.1-17050), intel-oneapi-common-vars (>= 2022.2.1-14969), intel-oneapi-common-licensing (>= 2022.2.1-14969), intel-oneapi-dev-utilities (>= 2021.7.1-14991), intel-oneapi-dnnl (>= 2022.2.1-16994) +Filename: pool/main/intel-dlfdkit-runtime-2022.3.1-17050_amd64.deb +Size: 1808 +MD5sum: 244d62fa5d33ee38190260fedc37e4cc +SHA1: 7fbe4a8f74557235b0a1bc9009b689d9c34eb16d +SHA256: cfa34504e4fa4baaa3b57ab9ed49f91dd63e7cb0b00d95d476b5d73d5c41716f +SHA512: e90c3396705b42cca64836807d1c5676e14472fcc56a0fcfd895631efb4bdf4d8212952e59c3d422a421c7596081cfbaea58f50d3633f4da21b3decd9b7571bb +Description: Intel® oneAPI DL Framework Developer Toolkit + + +Package: intel-dlfdkit-runtime-2022.3.1 +Architecture: amd64 +Version: 2022.3.1-17050 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-dlfdkit-getting-started (>= 2022.3.1-17050), intel-oneapi-common-vars (>= 2022.2.1-14969), intel-oneapi-common-licensing-2022.2.1 , intel-oneapi-dev-utilities-2021.7.1 , intel-oneapi-dnnl (>= 2022.2.1-16994) +Filename: pool/main/intel-dlfdkit-runtime-2022.3.1-2022.3.1-17050_amd64.deb +Size: 1812 +MD5sum: fb7f70381f5e1276b17d0c374d343b87 +SHA1: 57ac5ad909ce7851c08b2f97d326edaa0ad4c8ed +SHA256: 7068882ece6e107fa5933a4b745ced8e617dc22fec4e93a1b831f5ab64a67730 +SHA512: 23138e2c00bf2dc8815b799c23624ed1a9ef8cf1725e00a50c39c9b219484216c06146770a8c47cd00b9856a25209e4f47b496ebcaa068ae79b07c9bdaa3228f +Description: Intel® oneAPI DL Framework Developer Toolkit + + +Package: intel-dlfdkit-runtime-2023.0.0 +Architecture: amd64 +Version: 2023.0.0-25405 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-dlfdkit-getting-started (>= 2023.0.0-25405), intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing-2023.0.0 , intel-oneapi-dev-utilities-2021.8.0 , intel-oneapi-dnnl (>= 2023.0.0-25399) +Filename: pool/main/intel-dlfdkit-runtime-2023.0.0-2023.0.0-25405_amd64.deb +Size: 1808 +MD5sum: f5eaf3f11cf437d3f487eacbd874b94b +SHA1: c9938fc16d4df276eba4aad498929da609a78509 +SHA256: dd42fe5f833c60e6e73c513c715979e464fdca5a1458f3bc0259664673159bd5 +SHA512: bdd5f635248999255de62c211a496e739528388add661b42f2b5f443d5a4031ed7b407f4c3631cde4bf2ca6778aeabd1a14fe78714956de9785e2238ba62e8ef +Description: Intel® oneAPI DL Framework Developer Toolkit + + +Package: intel-dlfdkit-runtime +Architecture: amd64 +Version: 2023.0.0-25405 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-dlfdkit-getting-started (>= 2023.0.0-25405), intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing (>= 2023.0.0-25325), intel-oneapi-dev-utilities (>= 2021.8.0-25328), intel-oneapi-dnnl (>= 2023.0.0-25399) +Filename: pool/main/intel-dlfdkit-runtime-2023.0.0-25405_amd64.deb +Size: 1804 +MD5sum: 578411bffd3160273e3d89401cdc9799 +SHA1: 38ee8f5722566e8409c33572e6a4eca3b375db24 +SHA256: 8e57e590d3afe766dd46164e9f85a7c53f0a117f78b7e89ea65d381a6d79971d +SHA512: 83f031699c5c53d62a06d6f70b2a4de54f9108448ce5f6ae0d50dc022f49c81283e5a7e87d0fcdd48ca85753f9ecf0659474afdbb27a0354d0d97f5d25c595be +Description: Intel® oneAPI DL Framework Developer Toolkit + + +Package: intel-dlfdkit-runtime-2023.1.0 +Architecture: amd64 +Version: 2023.1.0-46364 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-dlfdkit-getting-started (>= 2023.1.0-46364), intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing-2023.1.0 , intel-oneapi-dev-utilities-2021.9.0 , intel-oneapi-dnnl (>= 2023.1.0-46343) +Filename: pool/main/intel-dlfdkit-runtime-2023.1.0-2023.1.0-46364_amd64.deb +Size: 1808 +MD5sum: 2b775afc11a9f7fb1aa0b3faf6724b97 +SHA1: 25fa8c0c9cea9b098e10020999c293b941b28a17 +SHA256: 77746a2c91a801fb87720192194d6c4e005b4eb47ab37b1e229a33f5316cccbe +SHA512: f5fcb88233ebff5a7c01f0babf00991d4e38e0b544e399878cee856c4e25223f91f29256164de76f949dac0964df29f7d5f74f36f5bca0f94b7b9a90b303def4 +Description: Intel® oneAPI DL Framework Developer Toolkit + + +Package: intel-dlfdkit-runtime +Architecture: amd64 +Version: 2023.1.0-46364 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-dlfdkit-getting-started (>= 2023.1.0-46364), intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing (>= 2023.1.0-43473), intel-oneapi-dev-utilities (>= 2021.9.0-44447), intel-oneapi-dnnl (>= 2023.1.0-46343) +Filename: pool/main/intel-dlfdkit-runtime-2023.1.0-46364_amd64.deb +Size: 1804 +MD5sum: 2b5523658e65c79a74bebe50d1414ff8 +SHA1: 716a3b378713fb057072941665c51f18eceeea94 +SHA256: 3256443cb916ac3a052c25110c95a3fc2d8b8605bab1a4f57606cb812539c82c +SHA512: 973916af88543cc538b4d7586055356f58883490a4d099b26481e95e10191c8059a20dc2e0a0163d2bd3560ea88fd74aced46152c59e08a4167d232e5cd9546a +Description: Intel® oneAPI DL Framework Developer Toolkit + + +Package: intel-dpcpp-cpp-compiler-2022.2.0 +Architecture: amd64 +Version: 2022.2.0-8772 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-2022.2.0 +Filename: pool/main/intel-dpcpp-cpp-compiler-2022.2.0-2022.2.0-8772_amd64.deb +Size: 1752 +MD5sum: 1a120c6bdad15be2817fa84759b4ca11 +SHA1: 621456e03b0b2b5963e1ccbc6fce0503b27b1174 +SHA256: c31b39d2a7c8d754bd6af863724c015401ce9760a0f1fedea7b57044cec48980 +SHA512: 7bb35b9d7f78ca61e4711239f8f7af9bf5dd99c80777ef2af52238c3f6be468bda1234ea40ea78b2567fa1e77f23ab800ff8098595e3e468a22bcce99149e29c +Description: Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic + + +Package: intel-dpcpp-cpp-compiler-2022.2.1 +Architecture: amd64 +Version: 2022.2.1-16991 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-2022.2.1 +Filename: pool/main/intel-dpcpp-cpp-compiler-2022.2.1-2022.2.1-16991_amd64.deb +Size: 1752 +MD5sum: 9089446dbb80d0f73b239c2fe440d2c9 +SHA1: a9eafe702042e4386fae80e246a9aee8362294a8 +SHA256: f554fe2156334902b47251ad188e23943ef34325f17e479ef69dc49672ca3eef +SHA512: 0a96579765b07c1448a73f5e3ede1935fcbe007cfd48c45fbe3432d453c5cdefdad8fab4d6253ca99591266442d88ec5ef1fde03373300ec4fa25f07dfa67140 +Description: Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic + + +Package: intel-dpcpp-cpp-compiler-2023.0.0 +Architecture: amd64 +Version: 2023.0.0-25393 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-2023.0.0 +Filename: pool/main/intel-dpcpp-cpp-compiler-2023.0.0-2023.0.0-25393_amd64.deb +Size: 1752 +MD5sum: 7bedc3d2073f2ea62d32e778ffc22bd9 +SHA1: e4b62981aa996f017539f917ee7ce05bddac23e8 +SHA256: 648fe1ac66108f99dbc522bd559d42c0a721eafd72c2319ec26063ddcde9127f +SHA512: 4ef91946ed9078aa082d00aed8561a289cce7e6de49b64fba15256ceb6028ad228012de65106dbb53d47625ec689a76564a2cb22813a3635ce1783a1c96a74e3 +Description: Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic + + +Package: intel-dpcpp-cpp-compiler-2023.1.0 +Architecture: amd64 +Version: 2023.1.0-46347 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-2023.1.0 +Filename: pool/main/intel-dpcpp-cpp-compiler-2023.1.0-2023.1.0-46347_amd64.deb +Size: 1752 +MD5sum: f60ec1eebd09fd240f92f6edd31cad06 +SHA1: 9ec9ab2b4dc0efd3be14c78892d059064aab02fa +SHA256: e3ec77a570896b287ed2e2408157363f5fde580d2e97f6851d88eebc474d2d34 +SHA512: 6e2fd2700d92daefa0a01e9da91d0b432b41cd76ad7b66074ac880e0f32d55b9417229bee5c7d39b090ea5975b85cb9489d2d1976e205401c9baffa77c179340 +Description: Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic + + +Package: intel-hpckit-2021.1.0 +Architecture: amd64 +Version: 2021.1.0-2684 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit-2021.1.0, intel-hpckit-getting-started (>= 2021.1.0-2684), intel-oneapi-common-vars (>= 2021.1.1-60), intel-oneapi-common-licensing-2021.1.1 , intel-oneapi-dev-utilities-2021.1.1 , intel-oneapi-mpi-devel-2021.1.1 , intel-oneapi-inspector (>= 2021.1.1-42), intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-2021.1.1 , intel-oneapi-compiler-fortran-2021.1.1 , intel-oneapi-clck-2021.1.1 , intel-oneapi-itac-2021.1.1 +Filename: pool/main/intel-hpckit-2021.1.0-2021.1.0-2684_amd64.deb +Size: 1970 +MD5sum: 310b177f60b410fa53871f37f1d07946 +SHA1: cab2e677f06bd0292013547d6fb76ca673a3ebf8 +SHA256: d3d38c79adf17a496aa555e1c662080e9a4d64465b873b7d599db31121595c3b +SHA512: 72eafa64b1c628cfff49a61db0b47a378419a54a216f818bb6691e042970e6be3d9b12360d0fe6e9fdf591e49868543f13c0b815c7c0dd6620188d9b15168813 +Description: Intel® oneAPI HPC Toolkit + + +Package: intel-hpckit +Architecture: amd64 +Version: 2021.1.0-2684 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit (>= 2021.1.0-2403), intel-hpckit-getting-started (>= 2021.1.0-2684), intel-oneapi-common-vars (>= 2021.1.1-60), intel-oneapi-common-licensing (>= 2021.1.1-60), intel-oneapi-dev-utilities (>= 2021.1.1-197), intel-oneapi-mpi-devel (>= 2021.1.1-76), intel-oneapi-inspector (>= 2021.1.1-42), intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic (>= 2021.1.1-189), intel-oneapi-compiler-fortran (>= 2021.1.1-189), intel-oneapi-clck (>= 2021.1.1-68), intel-oneapi-itac (>= 2021.1.1-42) +Filename: pool/main/intel-hpckit-2021.1.0-2684_amd64.deb +Size: 1990 +MD5sum: 34f016ea46f002efcac935d83b50b96b +SHA1: 15f1ab276d8d571e74a7c0b54b5e3818a3d4f93b +SHA256: c78ece69c060636549c377e86381f9e0df3e86d59551751ec650805d8f2acb05 +SHA512: c5af18a44ac57ef022101e5142c69901192e9429613ca84e2eb67a7d7f5cffc7732af2352367a6ff740a20584ee08e2740e078d5a6730eebdf73704ee49fb462 +Description: Intel® oneAPI HPC Toolkit + + +Package: intel-hpckit-2021.2.0 +Architecture: amd64 +Version: 2021.2.0-2997 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit-2021.2.0, intel-hpckit-getting-started (>= 2021.2.0-2997), intel-oneapi-common-vars (>= 2021.2.0-195), intel-oneapi-common-licensing-2021.2.0 , intel-oneapi-mpi-devel-2021.2.0 , intel-oneapi-dev-utilities-2021.2.0 , intel-oneapi-clck-2021.2.0 , intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-2021.2.0 , intel-oneapi-compiler-fortran-2021.2.0 , intel-oneapi-inspector (>= 2021.2.0-145), intel-oneapi-itac-2021.2.0 +Filename: pool/main/intel-hpckit-2021.2.0-2021.2.0-2997_amd64.deb +Size: 1966 +MD5sum: 938961fd0d1e1cd23cbced330ed7a26f +SHA1: ef599328ecd2bc35da1282f8c862a775a32ebcff +SHA256: 9dc2cc3c017b91096a27dd728b42fc6d366524c033ca82d37612b3deb7b14d70 +SHA512: b9194d21f167b0b7f9a939388527de18cb79c66a5218c5cb697216902f091090560504bd12a2d791a78d8739e89b4a237aa6895ad812c6f22f45b20ac79b2c21 +Description: Intel® oneAPI HPC Toolkit + + +Package: intel-hpckit +Architecture: amd64 +Version: 2021.2.0-2997 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit (>= 2021.2.0-2740), intel-hpckit-getting-started (>= 2021.2.0-2997), intel-oneapi-common-vars (>= 2021.2.0-195), intel-oneapi-common-licensing (>= 2021.2.0-195), intel-oneapi-mpi-devel (>= 2021.2.0-215), intel-oneapi-dev-utilities (>= 2021.2.0-493), intel-oneapi-clck (>= 2021.2.0-308), intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic (>= 2021.2.0-610), intel-oneapi-compiler-fortran (>= 2021.2.0-610), intel-oneapi-inspector (>= 2021.2.0-145), intel-oneapi-itac (>= 2021.2.0-152) +Filename: pool/main/intel-hpckit-2021.2.0-2997_amd64.deb +Size: 1988 +MD5sum: acc12ebe3a78534288c96e4d5e11d93a +SHA1: ce02f6566014663f710a2431b242ca83316a4304 +SHA256: 40e5eaf9a454945adf149607a69237d339beae9591c8c52b3722986991036892 +SHA512: 1dbab055210834ad9de1a66a301ca16595dcccb795335d664e883e534c8b4c5fe1ee785fa5b1da24bc2e62eb94cfab149cd8ec167ce86aeb943751a57b930ca4 +Description: Intel® oneAPI HPC Toolkit + + +Package: intel-hpckit-2021.3.0 +Architecture: amd64 +Version: 2021.3.0-3230 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit-2021.3.0, intel-hpckit-getting-started (>= 2021.3.0-3230), intel-oneapi-common-vars (>= 2021.3.0-261), intel-oneapi-common-licensing-2021.3.0 , intel-oneapi-inspector (>= 2021.3.0-217), intel-oneapi-dev-utilities-2021.3.0 , intel-oneapi-mpi-devel-2021.3.0 , intel-oneapi-itac-2021.3.0 , intel-oneapi-clck-2021.3.0 , intel-oneapi-compiler-fortran-2021.3.0 , intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-2021.3.0 +Filename: pool/main/intel-hpckit-2021.3.0-2021.3.0-3230_amd64.deb +Size: 1964 +MD5sum: 9e00dbaabbdd3c32b6f47177e4104f81 +SHA1: abcdffef9d4fbff331ec7d6b6203cfa1e427855c +SHA256: f1f9672930c19f4d3569794d66e7e1283e704ded1bbcd5c1e3ff7a76cc22d060 +SHA512: 21a5669cb91d401de0b0882a1d562bc69ea7d214eef1735c64f467adf0e4b01759da31e090cfc86c0b0c0f5eb876816ba2e18ccc5d8b4f2ca32b86d84400e9ae +Description: Intel® oneAPI HPC Toolkit + + +Package: intel-hpckit +Architecture: amd64 +Version: 2021.3.0-3230 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit (>= 2021.3.0-2885), intel-hpckit-getting-started (>= 2021.3.0-3230), intel-oneapi-common-vars (>= 2021.3.0-261), intel-oneapi-common-licensing (>= 2021.3.0-261), intel-oneapi-inspector (>= 2021.3.0-217), intel-oneapi-dev-utilities (>= 2021.3.0-691), intel-oneapi-mpi-devel (>= 2021.3.0-294), intel-oneapi-itac (>= 2021.3.0-223), intel-oneapi-clck (>= 2021.3.0-406), intel-oneapi-compiler-fortran (>= 2021.3.0-3350), intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic (>= 2021.3.0-3350) +Filename: pool/main/intel-hpckit-2021.3.0-3230_amd64.deb +Size: 1986 +MD5sum: 79287ea017ebdf1a334252e6f19ad8f6 +SHA1: 2d4111e2d697658f1addc5685b740287d03772aa +SHA256: 30c35241c49c786a903f85e5b35efad50cb9cb4f3e9a685f255903ae5530630e +SHA512: f08c7ec8e3981efeb0855643906d87f7d5fe2aa93f436d8ab735fa939e22ed83234c15af1731019a0063f0af6d9409f8e773bf9e2679d0897f95a92822eb2a60 +Description: Intel® oneAPI HPC Toolkit + + +Package: intel-hpckit-2021.4.0 +Architecture: amd64 +Version: 2021.4.0-3347 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit-2021.3.0, intel-hpckit-getting-started (>= 2021.4.0-3347), intel-oneapi-common-vars (>= 2021.4.0-327), intel-oneapi-common-licensing-2021.4.0 , intel-oneapi-dev-utilities-2021.4.0 , intel-oneapi-mpi-devel-2021.4.0 , intel-oneapi-compiler-fortran-2021.4.0 , intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-2021.4.0 , intel-oneapi-inspector (>= 2021.4.0-266), intel-oneapi-itac-2021.4.0 , intel-oneapi-clck-2021.4.0 , intel-oneapi-diagnostics-utility (>= 2021.4.0-84) +Filename: pool/main/intel-hpckit-2021.4.0-2021.4.0-3347_amd64.deb +Size: 1980 +MD5sum: 1f7b5557df20f6f9735e04c9d66c708f +SHA1: 0fd2924901c624b80bb3e9ad2db15eb9b371c8a8 +SHA256: 0698f9c3759cd25d69f76b2cbda8f6f11ba05847756f8194dac2cae8c89451bd +SHA512: df200dd5136c6281f8228dcbf2db02ce6bbaa0d08380542a04ddf125bef36e3f23abafbd1b249d0fbd1318372aa3f26696106e3510a3405e96e0f3eecb0aa8db +Description: Intel® oneAPI HPC Toolkit + + +Package: intel-hpckit +Architecture: amd64 +Version: 2021.4.0-3347 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit (>= 2021.3.0-2885), intel-hpckit-getting-started (>= 2021.4.0-3347), intel-oneapi-common-vars (>= 2021.4.0-327), intel-oneapi-common-licensing (>= 2021.4.0-327), intel-oneapi-dev-utilities (>= 2021.4.0-847), intel-oneapi-mpi-devel (>= 2021.4.0-441), intel-oneapi-compiler-fortran (>= 2021.4.0-3561), intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic (>= 2021.4.0-3561), intel-oneapi-inspector (>= 2021.4.0-266), intel-oneapi-itac (>= 2021.4.0-322), intel-oneapi-clck (>= 2021.4.0-509), intel-oneapi-diagnostics-utility (>= 2021.4.0-84) +Filename: pool/main/intel-hpckit-2021.4.0-3347_amd64.deb +Size: 1998 +MD5sum: bce652b1294ac7fe96ca441c1f3607b6 +SHA1: db16b9b75bf62a423884b5637f8c4fa4c66c2b99 +SHA256: 0ef839e6b4f2a285a75f87b23285031032474fcb52870baa5175d28a36b97b47 +SHA512: db4ea0cb1c84ffd078e3d09c55df4e03bf1933a051bec32c3ae3d2d136c11f3e1502e0d53280013c70710a7948f35ebd57c67e69961a546fcab66268ce2969e7 +Description: Intel® oneAPI HPC Toolkit + + +Package: intel-hpckit-2022.1.1 +Architecture: amd64 +Version: 2022.1.1-97 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit-2022.1.0, intel-hpckit-getting-started (>= 2022.1.1-97), intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 , intel-oneapi-inspector (>= 2022.0.0-56), intel-oneapi-mpi-devel-2021.5.0 , intel-oneapi-clck-2021.5.0 , intel-oneapi-itac-2021.5.0 , intel-oneapi-diagnostics-utility (>= 2022.0.0-58), intel-oneapi-dev-utilities-2021.5.1 , intel-oneapi-compiler-fortran-2022.0.1 , intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-2022.0.1 +Filename: pool/main/intel-hpckit-2022.1.1-2022.1.1-97_amd64.deb +Size: 1998 +MD5sum: 3a9ac58dfdace84bacd5ebf56202367e +SHA1: 6c01c3ce96e1d050556548f7c13f6471041cbb5b +SHA256: 02af4fe3601d7f3d9dbc0f4f265e295576fa6f3f32f281d68dbeec0980f6b154 +SHA512: 740af17e0ac2c5882e25e55607fef54ba686d09125feee7ddcfde9a198e05bc2941d1c773675ef411b45b76afae7b9f358b925978d4f16a97f020d78538cc76e +Description: Intel® oneAPI HPC Toolkit + + +Package: intel-hpckit +Architecture: amd64 +Version: 2022.1.1-97 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit (>= 2022.1.0-37), intel-hpckit-getting-started (>= 2022.1.1-97), intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing (>= 2022.0.0-59), intel-oneapi-inspector (>= 2022.0.0-56), intel-oneapi-mpi-devel (>= 2021.5.0-495), intel-oneapi-clck (>= 2021.5.0-560), intel-oneapi-itac (>= 2021.5.0-370), intel-oneapi-diagnostics-utility (>= 2022.0.0-58), intel-oneapi-dev-utilities (>= 2021.5.1-924), intel-oneapi-compiler-fortran (>= 2022.0.1-3633), intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic (>= 2022.0.1-3633) +Filename: pool/main/intel-hpckit-2022.1.1-97_amd64.deb +Size: 2016 +MD5sum: d3b113b163e829e39216db08b911b162 +SHA1: d69994ca62276e0ff68d42f533a4858689354e68 +SHA256: bc428140b860ad48aa589df25b5291e66db409f2aea116e88ba7af499069d0b2 +SHA512: be055251d303d94bbbcd42f0a5ce5f7ea52231ba446c3c916de251f7f0f4e9c917f1382212bd8c42c709beacd29d398bd1d1f206878cb5c8c6b3b1ae36906dde +Description: Intel® oneAPI HPC Toolkit + + +Package: intel-hpckit +Architecture: amd64 +Version: 2022.1.2-117 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit (>= 2022.1.2-141), intel-hpckit-getting-started (>= 2022.1.2-117), intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing (>= 2022.0.0-59), intel-oneapi-inspector (>= 2022.0.0-56), intel-oneapi-clck (>= 2021.5.0-560), intel-oneapi-itac (>= 2021.5.0-370), intel-oneapi-diagnostics-utility (>= 2022.0.0-58), intel-oneapi-dev-utilities (>= 2021.5.2-936), intel-oneapi-compiler-fortran (>= 2022.0.2-3658), intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic (>= 2022.0.2-3658), intel-oneapi-mpi-devel (>= 2021.5.1-515) +Filename: pool/main/intel-hpckit-2022.1.2-117_amd64.deb +Size: 2008 +MD5sum: cd22a12ae1a6f3f53d2f43b2e976f682 +SHA1: 6e45d4b18c3935482a3f7c1b78a4bb7f206b05f1 +SHA256: 86dd1552ce096169b74caecfdcb2c8be13d0e4a50637fb86067d1eb244abed06 +SHA512: 01d273aa7c5f309ef50b32bd32408404cdc2eb8c3072affc7f4ea5a9858a64eb699e0b9c5267c40b75a9aca8c05b135dc39c0b3f95cd3ddc8220dfa9359dd992 +Description: Intel® oneAPI HPC Toolkit + + +Package: intel-hpckit-2022.1.2 +Architecture: amd64 +Version: 2022.1.2-117 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit-2022.1.2, intel-hpckit-getting-started (>= 2022.1.2-117), intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 , intel-oneapi-inspector (>= 2022.0.0-56), intel-oneapi-clck-2021.5.0 , intel-oneapi-itac-2021.5.0 , intel-oneapi-diagnostics-utility (>= 2022.0.0-58), intel-oneapi-dev-utilities-2021.5.2 , intel-oneapi-compiler-fortran-2022.0.2 , intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-2022.0.2 , intel-oneapi-mpi-devel-2021.5.1 +Filename: pool/main/intel-hpckit-2022.1.2-2022.1.2-117_amd64.deb +Size: 1990 +MD5sum: 712c20b2d87ab5b416bf7d1f026d9a6c +SHA1: cb2e486fc009c4064f06ffa934c06243bc9e91d0 +SHA256: 720981b46f287640c1ccad90e9baf17dffe66bdd148428384adafa60ae9a3744 +SHA512: 41717d72d7233da503303b5fe8f49a16e931762ca5da97fa513b7a0bab06e2d2707fcb9f06456f11b0cf99fe94490f969dabdc09b390156d5b9586374f808157 +Description: Intel® oneAPI HPC Toolkit + + +Package: intel-hpckit +Architecture: amd64 +Version: 2022.2.0-191 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit (>= 2022.2.0), intel-hpckit-getting-started (>= 2022.2.0-191), intel-oneapi-common-vars (>= 2022.1.0-161), intel-oneapi-common-licensing (>= 2022.1.0-161), intel-oneapi-dev-utilities (>= 2021.6.0-989), intel-oneapi-inspector (>= 2022.1.0-123), intel-oneapi-itac (>= 2021.6.0-434), intel-oneapi-clck (>= 2021.6.0-650), intel-oneapi-diagnostics-utility (>= 2022.1.0-150), intel-oneapi-mpi-devel (>= 2021.6.0-602), intel-oneapi-compiler-fortran (>= 2022.1.0-3768), intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic (>= 2022.1.0-3768) +Filename: pool/main/intel-hpckit-2022.2.0-191_amd64.deb +Size: 2080 +MD5sum: 68c2e5df92c32af272e71bc58cb68fc0 +SHA1: 701f73c35f78b75b54b25b5e84dd4571d70703eb +SHA256: f746d135b84648aee579383890ba9d368a4c030082ca7c1f5c5b7f94e0a68f3b +SHA512: ba1591a3d69b20096aa155f67a36cf0bc3609599ae878736cf39c0031e4950259cec700f7e61242c5d888869c4d3f503ef744b2b77585ffa10c1b09be73eff94 +Description: Intel® oneAPI HPC Toolkit + + +Package: intel-hpckit-2022.2.0 +Architecture: amd64 +Version: 2022.2.0-191 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit-2022.2.0, intel-hpckit-getting-started (>= 2022.2.0-191), intel-oneapi-common-vars (>= 2022.1.0-161), intel-oneapi-common-licensing-2022.1.0 , intel-oneapi-dev-utilities-2021.6.0 , intel-oneapi-inspector (>= 2022.1.0-123), intel-oneapi-itac-2021.6.0 , intel-oneapi-clck-2021.6.0 , intel-oneapi-diagnostics-utility (>= 2022.1.0-150), intel-oneapi-mpi-devel-2021.6.0 , intel-oneapi-compiler-fortran-2022.1.0 , intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-2022.1.0 +Filename: pool/main/intel-hpckit-2022.2.0-2022.2.0-191_amd64.deb +Size: 2064 +MD5sum: 89576b40f34286fa3a951c233cb1c3a0 +SHA1: 85b335dab52a3d37086a7f0105281aa4c15e60fa +SHA256: 2f860bff151c3a1fd45be89ef983364b4617313f49bc38b599cfa93aaf79fa03 +SHA512: 2c20e58f5ff802087148ec5ad144639cbea620548b650ae4c1b97a8acb3c665d17a0ee4ca20304a491764f3d396710c2fcee8b39257e551b2ea24eb12e349e53 +Description: Intel® oneAPI HPC Toolkit + + +Package: intel-hpckit-2022.3.0 +Architecture: amd64 +Version: 2022.3.0-8751 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit-2022.3.0, intel-hpckit-getting-started (>= 2022.3.0-8751), intel-oneapi-common-vars (>= 2022.2.0-8694), intel-oneapi-common-licensing-2022.2.0 , intel-oneapi-dev-utilities-2021.7.0 , intel-oneapi-inspector (>= 2022.3.0-8706), intel-oneapi-itac-2021.7.0 , intel-oneapi-clck-2021.7.0 , intel-oneapi-diagnostics-utility (>= 2022.1.1-8702), intel-oneapi-mpi-devel-2021.7.0 , intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-2022.2.0 , intel-oneapi-compiler-fortran-2022.2.0 +Filename: pool/main/intel-hpckit-2022.3.0-2022.3.0-8751_amd64.deb +Size: 2068 +MD5sum: 77ced111631ca1372c3e714c6d97a15c +SHA1: 728e1180585be1800136febf6e8f4a0aacf7f2ce +SHA256: f957ea214c953e163552d5592ea9ca60536d8ad6a462c8ad9b8a74abdffbf233 +SHA512: 6a5f5e9853b4c09e515f41b301a4c796e5c1c21f6748ffbbe4259058d8c3480bf39e219b21d66b695d71a0a8a4bc72ed949b3bad36e529955848aa95bd469aa3 +Description: Intel® oneAPI HPC Toolkit + + +Package: intel-hpckit +Architecture: amd64 +Version: 2022.3.0-8751 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit (>= 2022.3.0), intel-hpckit-getting-started (>= 2022.3.0-8751), intel-oneapi-common-vars (>= 2022.2.0-8694), intel-oneapi-common-licensing (>= 2022.2.0-8694), intel-oneapi-dev-utilities (>= 2021.7.0-8698), intel-oneapi-inspector (>= 2022.3.0-8706), intel-oneapi-itac (>= 2021.7.0-8707), intel-oneapi-clck (>= 2021.7.0-8708), intel-oneapi-diagnostics-utility (>= 2022.1.1-8702), intel-oneapi-mpi-devel (>= 2021.7.0-8711), intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic (>= 2022.2.0-8734), intel-oneapi-compiler-fortran (>= 2022.2.0-8734) +Filename: pool/main/intel-hpckit-2022.3.0-8751_amd64.deb +Size: 2080 +MD5sum: fc103c0065ed9fc8c04e91a524ad71de +SHA1: abd6c2673a1bec2c5c8509a5f517a72969ac0d9c +SHA256: 5bc48e4e11b882c7f2a13b30eae48b21c2bc8679fd790ac556bcbe6b70a65d19 +SHA512: ac9b09f819121a5ba5da04a3751e30ce0eeb36f5cfa44ffaec4c73e2ede8cbf42368f6f87a372b0dfb3b003a95346121a5de30d103dcc5cdda761dda1f63dc7c +Description: Intel® oneAPI HPC Toolkit + + +Package: intel-hpckit +Architecture: amd64 +Version: 2022.3.1-16997 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit (>= 2022.3.1), intel-hpckit-getting-started (>= 2022.3.1-16997), intel-oneapi-common-vars (>= 2022.2.1-14969), intel-oneapi-common-licensing (>= 2022.2.1-14969), intel-oneapi-dev-utilities (>= 2021.7.1-14991), intel-oneapi-inspector (>= 2022.3.1-15318), intel-oneapi-itac (>= 2021.7.1-15324), intel-oneapi-clck (>= 2021.7.1-16156), intel-oneapi-diagnostics-utility (>= 2022.1.2-14995), intel-oneapi-mpi-devel (>= 2021.7.1-16815), intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic (>= 2022.2.1-16953), intel-oneapi-compiler-fortran (>= 2022.2.1-16953) +Filename: pool/main/intel-hpckit-2022.3.1-16997_amd64.deb +Size: 2092 +MD5sum: 7caec00ef1ef58e0057357724be5cb06 +SHA1: c10ef5e3796aef72089c820625606819a9a410af +SHA256: fcd9cf74c7dd8169610b383f5fde76e17a2d850e8c23066c7681063d794d1a1d +SHA512: b0833718481a7cef91ab45d32bca4557bc98ea82509fef9ac80f298467b2f9a2a309b063f73e0cbe01163cf70830a46ee78dbe3e774ce9a250f19c44a406acef +Description: Intel® oneAPI HPC Toolkit + + +Package: intel-hpckit-2022.3.1 +Architecture: amd64 +Version: 2022.3.1-16997 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit-2022.3.1, intel-hpckit-getting-started (>= 2022.3.1-16997), intel-oneapi-common-vars (>= 2022.2.1-14969), intel-oneapi-common-licensing-2022.2.1 , intel-oneapi-dev-utilities-2021.7.1 , intel-oneapi-inspector (>= 2022.3.1-15318), intel-oneapi-itac-2021.7.1 , intel-oneapi-clck-2021.7.1 , intel-oneapi-diagnostics-utility (>= 2022.1.2-14995), intel-oneapi-mpi-devel-2021.7.1 , intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-2022.2.1 , intel-oneapi-compiler-fortran-2022.2.1 +Filename: pool/main/intel-hpckit-2022.3.1-2022.3.1-16997_amd64.deb +Size: 2076 +MD5sum: 6b06275ee292832aaebe18c82a2a7fb6 +SHA1: b0d286c411c9a2e25c973668fd45cefdafd3a49d +SHA256: 530589552ffe1de51fa71fc6d82e428e49833182fff4a7f2cf5d093f510ace17 +SHA512: 02929756460da23e85b882a29ffc2cc1f3d0b719cb03cc0964e0378c8abd2ffdeac506a790eadf618bc616e7e9a19f2659a624e53b5717f41d0c4de83458028a +Description: Intel® oneAPI HPC Toolkit + + +Package: intel-hpckit-2023.0.0 +Architecture: amd64 +Version: 2023.0.0-25400 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit-2023.0.0, intel-hpckit-getting-started (>= 2023.0.0-25400), intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing-2023.0.0 , intel-oneapi-dev-utilities-2021.8.0 , intel-oneapi-inspector (>= 2023.0.0-25340), intel-oneapi-itac-2021.8.0 , intel-oneapi-clck-2021.7.2 , intel-oneapi-diagnostics-utility (>= 2022.2.0-25337), intel-oneapi-mpi-devel-2021.8.0 , intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-2023.0.0 , intel-oneapi-compiler-fortran-2023.0.0 +Filename: pool/main/intel-hpckit-2023.0.0-2023.0.0-25400_amd64.deb +Size: 2072 +MD5sum: 84da39a9f447c17efbc1aa6c56ea9808 +SHA1: 106bd7962baf653329e3388c59330b6dfcd8c13e +SHA256: ac422e553e7353868a599702fc5cbf9f57aa5678ef99b1e64c02619ebeb72925 +SHA512: b3f89ac861086be66faca643898ae1f840b65a5dd750f64364a6e71fc788f76f4ce230ae0dcb147593a785fc744edc3deec39390bf0e0f7130af9e0edb294671 +Description: Intel® oneAPI HPC Toolkit + + +Package: intel-hpckit +Architecture: amd64 +Version: 2023.0.0-25400 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit (>= 2023.0.0), intel-hpckit-getting-started (>= 2023.0.0-25400), intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing (>= 2023.0.0-25325), intel-oneapi-dev-utilities (>= 2021.8.0-25328), intel-oneapi-inspector (>= 2023.0.0-25340), intel-oneapi-itac (>= 2021.8.0-25341), intel-oneapi-clck (>= 2021.7.2-25333), intel-oneapi-diagnostics-utility (>= 2022.2.0-25337), intel-oneapi-mpi-devel (>= 2021.8.0-25329), intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic (>= 2023.0.0-25370), intel-oneapi-compiler-fortran (>= 2023.0.0-25370) +Filename: pool/main/intel-hpckit-2023.0.0-25400_amd64.deb +Size: 2080 +MD5sum: 2b436b281c7f587701b6e741242b3603 +SHA1: 0d3c7d52612a444aa25605cff4ad799c21d06d24 +SHA256: f3b79d13b0a8bf9f1b9681ad81ace6e2a0bcfbe0805b6916fb7aeb58a8d3b113 +SHA512: 988a00098763753ab0ebd8154f4f3295f6ea73b4ea54b2f836740e85632ccc429146a11809aa819127722beae861b6492ef03f985d4f4ca63e70a6d6fd0d729c +Description: Intel® oneAPI HPC Toolkit + + +Package: intel-hpckit-2023.1.0 +Architecture: amd64 +Version: 2023.1.0-46346 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit-2023.1.0, intel-hpckit-getting-started (>= 2023.1.0-46346), intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing-2023.1.0 , intel-oneapi-dev-utilities-2021.9.0 , intel-oneapi-inspector (>= 2023.1.0-43486), intel-oneapi-itac-2021.9.0 , intel-oneapi-clck-2021.7.3 , intel-oneapi-diagnostics-utility (>= 2022.3.0-43897), intel-oneapi-mpi-devel-2021.9.0 , intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-2023.1.0 , intel-oneapi-compiler-fortran-2023.1.0 +Filename: pool/main/intel-hpckit-2023.1.0-2023.1.0-46346_amd64.deb +Size: 2076 +MD5sum: 9e1733cf18b7841993f3776a3438f22d +SHA1: 94bb58bceb8fd918f4091faac75f8efc9016e3ee +SHA256: 43f657cf8b81813c85fecc1f180b5a12e570098772349942de007fbfe2602d51 +SHA512: 7d4a22db43219903a9fbe3eae6bff786eb789c8e12f77ec0069b443cbc44de8db4a9df4dc0d23afda19ee9f04d8e14d65f57f101f97df102078d07d120f8b028 +Description: Intel® oneAPI HPC Toolkit + + +Package: intel-hpckit +Architecture: amd64 +Version: 2023.1.0-46346 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit (>= 2023.1.0), intel-hpckit-getting-started (>= 2023.1.0-46346), intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing (>= 2023.1.0-43473), intel-oneapi-dev-utilities (>= 2021.9.0-44447), intel-oneapi-inspector (>= 2023.1.0-43486), intel-oneapi-itac (>= 2021.9.0-43491), intel-oneapi-clck (>= 2021.7.3-45658), intel-oneapi-diagnostics-utility (>= 2022.3.0-43897), intel-oneapi-mpi-devel (>= 2021.9.0-43482), intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic (>= 2023.1.0-46305), intel-oneapi-compiler-fortran (>= 2023.1.0-46305) +Filename: pool/main/intel-hpckit-2023.1.0-46346_amd64.deb +Size: 2092 +MD5sum: daa5c67950b8f8f7921244119084c225 +SHA1: 5139d0a681a70b67eceb1b45dba2d03d22554560 +SHA256: 805e817d421e79cb29b93f7899c67d789c78efd34319639bb6dd82a2c0ce59ef +SHA512: dacf75763b4fd603f3ea5273cb3f0d8efe0fd4a02957bcc7e7ffcdd4721ae98da4051c1cd87d830485d5acd3f1eccc858101e2392091a4a5a98eefeadbbb6034 +Description: Intel® oneAPI HPC Toolkit + + +Package: intel-hpckit-runtime-2021.1.0 +Architecture: amd64 +Version: 2021.1.0-2684 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit-runtime-2021.1.0, intel-hpckit-getting-started (>= 2021.1.0-2684), intel-oneapi-common-vars (>= 2021.1.1-60), intel-oneapi-common-licensing-2021.1.1 , intel-oneapi-dev-utilities-2021.1.1 , intel-oneapi-compiler-fortran-runtime-2021.1.1 , intel-oneapi-compiler-dpcpp-cpp-runtime-2021.1.1 +Filename: pool/main/intel-hpckit-runtime-2021.1.0-2021.1.0-2684_amd64.deb +Size: 1742 +MD5sum: 61c202b4dafbfba8859984162eab79ea +SHA1: e423795f29df4453f27735bb7d396c0762a7af15 +SHA256: 134a4f7f586f9e6e650210166c38ac91e35c76184fa1d8c9a10d8922489d3de5 +SHA512: 915bbb5c68deb8e684bf531c6211c8b9c051d8185349af3c519b6cd4bdb61a2efebe18e2d05cd2b1a86e994e425c5c3b343ac9f8b7ac8696bc6f3bd403dfee72 +Description: Intel® oneAPI HPC Toolkit + + +Package: intel-hpckit-runtime +Architecture: amd64 +Version: 2021.1.0-2684 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit (>= 2021.1.0-2403), intel-oneapi-common-vars (>= 2021.1.1-60), intel-oneapi-common-licensing (>= 2021.1.1-60), intel-oneapi-dev-utilities (>= 2021.1.1-197), intel-oneapi-compiler-fortran-runtime (>= 2021.1.1-189), intel-oneapi-compiler-dpcpp-cpp-runtime (>= 2021.1.1-189) +Filename: pool/main/intel-hpckit-runtime-2021.1.0-2684_amd64.deb +Size: 1734 +MD5sum: e6ec4f4b115a54a5be6dcf842b08fc9c +SHA1: e58f4fc787b1be52dc5b472172f50bef6de3fb5a +SHA256: fd5b0a1233f29c807a0dc79312b1f51730867d2a4f40ac673d0ce9840be9239c +SHA512: 2f9e4e98b607b1ae7682e7f09aa3e5db03f8ad09d21f6d78144baefe909c65c41edfca4bb2f8bfd00b2ebb2fb0b0dd4fb5462c2e7e36046ffa9b9d74d0fd761e +Description: Intel® oneAPI HPC Toolkit + + +Package: intel-hpckit-runtime-2021.2.0 +Architecture: amd64 +Version: 2021.2.0-2997 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit-runtime-2021.2.0, intel-hpckit-getting-started (>= 2021.2.0-2997), intel-oneapi-common-vars (>= 2021.2.0-195), intel-oneapi-common-licensing-2021.2.0 , intel-oneapi-dev-utilities-2021.2.0 , intel-oneapi-compiler-dpcpp-cpp-runtime-2021.2.0 , intel-oneapi-compiler-fortran-runtime-2021.2.0 +Filename: pool/main/intel-hpckit-runtime-2021.2.0-2021.2.0-2997_amd64.deb +Size: 1736 +MD5sum: 0c4d105ab6329e0fa8b084dd5c2842db +SHA1: 3781481d63edb8b3511e53b4d27334f69b22e1ac +SHA256: 770000c6a547e463daa1c63eb4e4bf6957b79b8b80c01559188eb975700eded4 +SHA512: 7af7b2d1affa84738329aa6a8e4e9f23ad6b57a92588052f7fd08c2f4fc9dba6bfa61c8356c1e7dad0491346fc8cadfb3e82dc90ab4d68150e8c033da718bb5d +Description: Intel® oneAPI HPC Toolkit + + +Package: intel-hpckit-runtime +Architecture: amd64 +Version: 2021.2.0-2997 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit (>= 2021.2.0-2740), intel-oneapi-common-vars (>= 2021.2.0-195), intel-oneapi-common-licensing (>= 2021.2.0-195), intel-oneapi-dev-utilities (>= 2021.2.0-493), intel-oneapi-compiler-dpcpp-cpp-runtime (>= 2021.2.0-610), intel-oneapi-compiler-fortran-runtime (>= 2021.2.0-610) +Filename: pool/main/intel-hpckit-runtime-2021.2.0-2997_amd64.deb +Size: 1728 +MD5sum: e95089ac65a8a953d283b7d3e1dbb911 +SHA1: 74ef7af23ab8e07fc19c0bd563d8b3c542790729 +SHA256: 9db02fcec664bf7c22d662468d72d304b0706b8b23fa588ddd064664e2778357 +SHA512: b32cff94736d6384ebc9c8510a2e726d671e30874b0b0023543c9a4af3cda033a3b49ea1ec7573639f90cb3096552dbd4a0b05a03fd537d861a902c4af5f7524 +Description: Intel® oneAPI HPC Toolkit + + +Package: intel-hpckit-runtime-2021.3.0 +Architecture: amd64 +Version: 2021.3.0-3230 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit-runtime-2021.3.0, intel-hpckit-getting-started (>= 2021.3.0-3230), intel-oneapi-common-vars (>= 2021.3.0-261), intel-oneapi-common-licensing-2021.3.0 , intel-oneapi-dev-utilities-2021.3.0 , intel-oneapi-compiler-dpcpp-cpp-runtime-2021.3.0 , intel-oneapi-compiler-fortran-runtime-2021.3.0 +Filename: pool/main/intel-hpckit-runtime-2021.3.0-2021.3.0-3230_amd64.deb +Size: 1736 +MD5sum: 12e4b4732cb2f8740a4fafd0287ddd0c +SHA1: 8013706c98332c15d78bf405d014a2a5748cc099 +SHA256: 5a5f72f2e23064800b994ca53b0e3be9f8977710a485dc11ca817b059d07b328 +SHA512: 6bac0a4c859421f80c1340b8444236a8bfb7d01920ab19643b76fce97f412eaadd5819aa47394ff9d5b40abe031bd62bc2655b7b085dfe3cde72591ee52b0181 +Description: Intel® oneAPI HPC Toolkit + + +Package: intel-hpckit-runtime +Architecture: amd64 +Version: 2021.3.0-3230 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit (>= 2021.3.0-2885), intel-oneapi-common-vars (>= 2021.3.0-261), intel-oneapi-common-licensing (>= 2021.3.0-261), intel-oneapi-dev-utilities (>= 2021.3.0-691), intel-oneapi-compiler-dpcpp-cpp-runtime (>= 2021.3.0-3350), intel-oneapi-compiler-fortran-runtime (>= 2021.3.0-3350) +Filename: pool/main/intel-hpckit-runtime-2021.3.0-3230_amd64.deb +Size: 1728 +MD5sum: 63038d941d1f7c9dd170adfd38ee5bec +SHA1: d0e7e6925a34dbbce5fa1ff903220b5a9ba72517 +SHA256: d9463f814b2e2eb2cb60094af999b61dc97fb26f90f27b66cf92e23056f2856f +SHA512: 877e64673820f252cdb1c427c1408c1949f59371040138687e7cf7f40a5b4ec86065b9ac8dc1833936f74ad3371669d0d0bdaf0b7c174a7f570fc17e834594f1 +Description: Intel® oneAPI HPC Toolkit + + +Package: intel-hpckit-runtime-2021.4.0 +Architecture: amd64 +Version: 2021.4.0-3347 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit-runtime-2021.3.0, intel-hpckit-getting-started (>= 2021.4.0-3347), intel-oneapi-common-vars (>= 2021.4.0-327), intel-oneapi-common-licensing-2021.4.0 , intel-oneapi-dev-utilities-2021.4.0 , intel-oneapi-compiler-dpcpp-cpp-runtime-2021.4.0 , intel-oneapi-compiler-fortran-runtime-2021.4.0 +Filename: pool/main/intel-hpckit-runtime-2021.4.0-2021.4.0-3347_amd64.deb +Size: 1736 +MD5sum: 4206ed078f49664ef5d6e13a62ddc505 +SHA1: a8a5d3016e67f2853df81893c04b4f1af7f2c588 +SHA256: 75ea3688240192e6a3e95e288a69c6b35fec275d960a74b8edcba278a12e0f32 +SHA512: 0090fe3c9d2bd579e4046e7030c6b411b005106c9db955fae4a7495edb7bcae8e8dae0b2f3520334c785965885f3ad3e437727df438f89bcdb5bf5086a0e1e92 +Description: Intel® oneAPI HPC Toolkit + + +Package: intel-hpckit-runtime +Architecture: amd64 +Version: 2021.4.0-3347 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit (>= 2021.3.0-2885), intel-oneapi-common-vars (>= 2021.4.0-327), intel-oneapi-common-licensing (>= 2021.4.0-327), intel-oneapi-dev-utilities (>= 2021.4.0-847), intel-oneapi-compiler-dpcpp-cpp-runtime (>= 2021.4.0-3561), intel-oneapi-compiler-fortran-runtime (>= 2021.4.0-3561) +Filename: pool/main/intel-hpckit-runtime-2021.4.0-3347_amd64.deb +Size: 1730 +MD5sum: 189a088442c45403f26d37afba1bbcd6 +SHA1: 21828a5582e114e5312e1b8b00a08c0e928111ba +SHA256: 41e9b4bc1889d9f1384963a2440f83382e93edaa102c976d5f4be712ad375e80 +SHA512: b5919087c2eeafd49118894aa61aa518443a4ec1d7803c6e7e93d88fd6ffbbc06e469b25782ca8ceb43ca4bddb9d45be57c9856194b098dd23ddaa4a2f49c3fd +Description: Intel® oneAPI HPC Toolkit + + +Package: intel-hpckit-runtime-2022.1.1 +Architecture: amd64 +Version: 2022.1.1-97 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit-runtime-2022.1.0, intel-hpckit-getting-started (>= 2022.1.1-97), intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 , intel-oneapi-dev-utilities-2021.5.1 , intel-oneapi-compiler-dpcpp-cpp-runtime-2022.0.1 , intel-oneapi-compiler-fortran-runtime-2022.0.1 +Filename: pool/main/intel-hpckit-runtime-2022.1.1-2022.1.1-97_amd64.deb +Size: 1744 +MD5sum: 5f750332eada86371f7f707b81375a9f +SHA1: 210457e288e5afd6189d583bb57e77792dcbba6c +SHA256: 843da02df7e9180cdc2a2049a0554db2f8086e80610b3dcc8d5091fc7c62955e +SHA512: 2d80ad03ff9b1d95e8b24815f07da624f3aac6035f9194db71dca30a8f26a7b87bd585cbe79431d1fbeb9308ae360a5bed3bb5176cea574f8f4842f48891424e +Description: Intel® oneAPI HPC Toolkit + + +Package: intel-hpckit-runtime +Architecture: amd64 +Version: 2022.1.1-97 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit (>= 2022.1.0-37), intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing (>= 2022.0.0-59), intel-oneapi-dev-utilities (>= 2021.5.1-924), intel-oneapi-compiler-dpcpp-cpp-runtime (>= 2022.0.1-3633), intel-oneapi-compiler-fortran-runtime (>= 2022.0.1-3633) +Filename: pool/main/intel-hpckit-runtime-2022.1.1-97_amd64.deb +Size: 1734 +MD5sum: e2591a1cd2f4c2fd7d6da851a215b79a +SHA1: d43f36c3fb136e79726f8c75fd94f5c19472d468 +SHA256: 4e70d5466d55b6510f26bf7c6e59bd6c61d23268eaa2144485f6fb68d7011664 +SHA512: 7fb2c7f87892daecb9e72546a48b53d7a2d24fe6251aa832468b08e3466c8914f66d92f7364e3d783f6a670e2f2968db0a992a7dbd1f04c649d3fd0ddc7807c4 +Description: Intel® oneAPI HPC Toolkit + + +Package: intel-hpckit-runtime +Architecture: amd64 +Version: 2022.1.2-117 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit (>= 2022.1.2-141), intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing (>= 2022.0.0-59), intel-oneapi-dev-utilities (>= 2021.5.2-936), intel-oneapi-compiler-dpcpp-cpp-runtime (>= 2022.0.2-3658), intel-oneapi-compiler-fortran-runtime (>= 2022.0.2-3658) +Filename: pool/main/intel-hpckit-runtime-2022.1.2-117_amd64.deb +Size: 1736 +MD5sum: 85f8b20f58f4d92dda91098236c9c493 +SHA1: 55e725118edb174e684ad7cec2cb31ddafa01f29 +SHA256: 884f7d2e9920e1eca92e5ae908845bbef39abf873aed631ef864ec2ecda97913 +SHA512: 97ccd1149007d058ca2015ede7b7a4fed5548ddf6a92b81915bf2035bf246b1415d0e0731fd0192f731efd1c024591b9236b3a5c8d09353dbe2e321e8ade969c +Description: Intel® oneAPI HPC Toolkit + + +Package: intel-hpckit-runtime-2022.1.2 +Architecture: amd64 +Version: 2022.1.2-117 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit-runtime-2022.1.2, intel-hpckit-getting-started (>= 2022.1.2-117), intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 , intel-oneapi-dev-utilities-2021.5.2 , intel-oneapi-compiler-dpcpp-cpp-runtime-2022.0.2 , intel-oneapi-compiler-fortran-runtime-2022.0.2 +Filename: pool/main/intel-hpckit-runtime-2022.1.2-2022.1.2-117_amd64.deb +Size: 1742 +MD5sum: d8cb70e08971542145fbedf4536d5d5c +SHA1: de3ca8e6aee35b50fe6aedcb5bf62ff3a5aab4f3 +SHA256: 98c594c8eb70951d4f23c6ebb71178fc33dd60894e8d90dfeb11dc19cb342ae1 +SHA512: 3073e9f0095a3905e1306217a38ce01278fa2e44b94e55e21b040a8ac28db5adac0837209245ca3eec8fb50ed51a3a07179d643d69d8908db998ffd43f160360 +Description: Intel® oneAPI HPC Toolkit + + +Package: intel-hpckit-runtime +Architecture: amd64 +Version: 2022.2.0-191 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit (>= 2022.2.0), intel-oneapi-common-vars (>= 2022.1.0-161), intel-oneapi-common-licensing (>= 2022.1.0-161), intel-oneapi-dev-utilities (>= 2021.6.0-989), intel-oneapi-compiler-dpcpp-cpp-runtime (>= 2022.1.0-3768), intel-oneapi-compiler-fortran-runtime (>= 2022.1.0-3768) +Filename: pool/main/intel-hpckit-runtime-2022.2.0-191_amd64.deb +Size: 1812 +MD5sum: 5e369c730d01a466c49bf956c3ec4388 +SHA1: b2983ba9f7666fee6ccf4d38dc640691b1d38e05 +SHA256: ffbdf58de00ed61c1fe76708ca884725e0880ff06febdf322bb3dc36549aee16 +SHA512: 5ad80752205c9eb5a62d7859759b1dfb33f7b29b11453791cb94105c350b089387cb1ad03acbcdcbee1d3d7bb145ca3583c2f1685071f068b43f017cdb6cd083 +Description: Intel® oneAPI HPC Toolkit + + +Package: intel-hpckit-runtime-2022.2.0 +Architecture: amd64 +Version: 2022.2.0-191 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit-runtime-2022.2.0, intel-hpckit-getting-started (>= 2022.2.0-191), intel-oneapi-common-vars (>= 2022.1.0-161), intel-oneapi-common-licensing-2022.1.0 , intel-oneapi-dev-utilities-2021.6.0 , intel-oneapi-compiler-dpcpp-cpp-runtime-2022.1.0 , intel-oneapi-compiler-fortran-runtime-2022.1.0 +Filename: pool/main/intel-hpckit-runtime-2022.2.0-2022.2.0-191_amd64.deb +Size: 1820 +MD5sum: 20b762fc64766808e838c40b1abc7603 +SHA1: c55a595593dcb5da4586b6069dfd1597c31bd33c +SHA256: 9c834475c2d1642a472dbd7cc3fcebb76a436b37206d329d42027351f418cb09 +SHA512: b909cf9a9a9a61dce8f1380dd84724d22192bbe3069dd35f41fabdd5a92f2b2c2eac9363f9719857c5b06471e30c6dcd5e6b3c8f25ac8a621490de8c2c7c4374 +Description: Intel® oneAPI HPC Toolkit + + +Package: intel-hpckit-runtime-2022.3.0 +Architecture: amd64 +Version: 2022.3.0-8751 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit-runtime-2022.3.0, intel-hpckit-getting-started (>= 2022.3.0-8751), intel-oneapi-common-vars (>= 2022.2.0-8694), intel-oneapi-common-licensing-2022.2.0 , intel-oneapi-dev-utilities-2021.7.0 , intel-oneapi-compiler-dpcpp-cpp-runtime-2022.2.0 , intel-oneapi-compiler-fortran-runtime-2022.2.0 +Filename: pool/main/intel-hpckit-runtime-2022.3.0-2022.3.0-8751_amd64.deb +Size: 1824 +MD5sum: f9e27539da7c98dd247dd1dc67c70e90 +SHA1: 612fa5918a4dbbdfbb48a08419c736e912ebe741 +SHA256: 89fe0e6e660609cfdd9c0a197c54b06ff060b6ff6fda5ec474fdcadac790c091 +SHA512: df48bb8cd959d651d0a283dc64aafe6e03d67b206b37e2d5e138afea0e1687d49a756260a04779db0ddeca8e50dbe0b13d0626a9ff026b35cd44fecdebdb5e45 +Description: Intel® oneAPI HPC Toolkit + + +Package: intel-hpckit-runtime +Architecture: amd64 +Version: 2022.3.0-8751 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit (>= 2022.3.0), intel-oneapi-common-vars (>= 2022.2.0-8694), intel-oneapi-common-licensing (>= 2022.2.0-8694), intel-oneapi-dev-utilities (>= 2021.7.0-8698), intel-oneapi-compiler-dpcpp-cpp-runtime (>= 2022.2.0-8734), intel-oneapi-compiler-fortran-runtime (>= 2022.2.0-8734) +Filename: pool/main/intel-hpckit-runtime-2022.3.0-8751_amd64.deb +Size: 1808 +MD5sum: 8653d8b8cbbb572e6661529160c70e8e +SHA1: e2afa3925cd9fd7347cbb8fe327ab4a3c14e5da8 +SHA256: b31460c8ce8c72a242670a489f9d91c6c47b31cd47945bdfe7d9858613a94ead +SHA512: d298bff0972d706f2c6e3276b3c42ff112b1cbe160782288700185afe0169a77dfb236a30eaedc5d114effc62c35a198d41d08172f7dd99416828c8c336fb101 +Description: Intel® oneAPI HPC Toolkit + + +Package: intel-hpckit-runtime +Architecture: amd64 +Version: 2022.3.1-16997 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit (>= 2022.3.1), intel-oneapi-common-vars (>= 2022.2.1-14969), intel-oneapi-common-licensing (>= 2022.2.1-14969), intel-oneapi-dev-utilities (>= 2021.7.1-14991), intel-oneapi-compiler-dpcpp-cpp-runtime (>= 2022.2.1-16953), intel-oneapi-compiler-fortran-runtime (>= 2022.2.1-16953) +Filename: pool/main/intel-hpckit-runtime-2022.3.1-16997_amd64.deb +Size: 1812 +MD5sum: 2bded206042422eebf83c301cb6074c9 +SHA1: 5b9db2fd91bd02996a9d9083e12a86930d3fce36 +SHA256: 1ca18e6a8763122dd96a4b0f54dc76c3b2cc62ba58928da8edd3bbb6ec90614d +SHA512: b9bbd745ee7b4f7acc5867571c387207b457a0abd826ebf1043d79b5ff28d2760b3c485c41216c4bdc24df670dd71759bafd9ac39a932147b8fcb4e8c1e629e6 +Description: Intel® oneAPI HPC Toolkit + + +Package: intel-hpckit-runtime-2022.3.1 +Architecture: amd64 +Version: 2022.3.1-16997 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit-runtime-2022.3.1, intel-hpckit-getting-started (>= 2022.3.1-16997), intel-oneapi-common-vars (>= 2022.2.1-14969), intel-oneapi-common-licensing-2022.2.1 , intel-oneapi-dev-utilities-2021.7.1 , intel-oneapi-compiler-dpcpp-cpp-runtime-2022.2.1 , intel-oneapi-compiler-fortran-runtime-2022.2.1 +Filename: pool/main/intel-hpckit-runtime-2022.3.1-2022.3.1-16997_amd64.deb +Size: 1824 +MD5sum: 022431aab04b7a8a81510547a0a89945 +SHA1: 3f9865707a188112f3a4b16c6e63b247d3aef4e9 +SHA256: 5732d603a0c9a569519c411c3bac15873f2771eef3aa0e5b627b974d211de437 +SHA512: c475e5bd454d19d79efbaa04a358368e4c39db2bf2090b129a2eaeb310e722f1063cdbfc57fce533d987e33518fa29f40ef32d1f275fd8084575951f51f7658d +Description: Intel® oneAPI HPC Toolkit + + +Package: intel-hpckit-runtime-2023.0.0 +Architecture: amd64 +Version: 2023.0.0-25400 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit-runtime-2023.0.0, intel-hpckit-getting-started (>= 2023.0.0-25400), intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing-2023.0.0 , intel-oneapi-dev-utilities-2021.8.0 , intel-oneapi-compiler-dpcpp-cpp-runtime-2023.0.0 , intel-oneapi-compiler-fortran-runtime-2023.0.0 +Filename: pool/main/intel-hpckit-runtime-2023.0.0-2023.0.0-25400_amd64.deb +Size: 1820 +MD5sum: ee076fb842ebfab9dd872d8c8a9d91af +SHA1: fefb3e809c40c055a7c1a7707416ad89f1a5a8c9 +SHA256: c52db2ccfc43fb441dffd8f8281e3421d3e85dceb955b07a258613db3b87e5bf +SHA512: 008bf9a7dc98cd5b90b3446a7845800b4aab3efa60271c07613ec602c0cfb9ab0875340cbbe8af1a148779bf1f7b405d6fe6b19513d48260546ea9f915bb4ff0 +Description: Intel® oneAPI HPC Toolkit + + +Package: intel-hpckit-runtime +Architecture: amd64 +Version: 2023.0.0-25400 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit (>= 2023.0.0), intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing (>= 2023.0.0-25325), intel-oneapi-dev-utilities (>= 2021.8.0-25328), intel-oneapi-compiler-dpcpp-cpp-runtime (>= 2023.0.0-25370), intel-oneapi-compiler-fortran-runtime (>= 2023.0.0-25370) +Filename: pool/main/intel-hpckit-runtime-2023.0.0-25400_amd64.deb +Size: 1808 +MD5sum: b2671f5cfaa6321d99e69ddbb60c5007 +SHA1: 77f6c24e312c155f60da4e8ee7ebe280e6779063 +SHA256: 3031bac7cc873ba14bc9d4fa1859c5fc79cdc0464d80adbc301b384962bbdb2c +SHA512: dd7251f01ede52fb6c5565f26778f17df49e3d2c8b6f1756d7229bed4971cd34f663b60b7bf11e303f24ad1f5135b1ff7e8c4d401802836d1fe0eb4df835bd54 +Description: Intel® oneAPI HPC Toolkit + + +Package: intel-hpckit-runtime-2023.1.0 +Architecture: amd64 +Version: 2023.1.0-46346 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit-runtime-2023.1.0, intel-hpckit-getting-started (>= 2023.1.0-46346), intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing-2023.1.0 , intel-oneapi-dev-utilities-2021.9.0 , intel-oneapi-compiler-dpcpp-cpp-runtime-2023.1.0 , intel-oneapi-compiler-fortran-runtime-2023.1.0 +Filename: pool/main/intel-hpckit-runtime-2023.1.0-2023.1.0-46346_amd64.deb +Size: 1820 +MD5sum: 4dfba38cc8e4dbcaa0f5e823199e0604 +SHA1: 205df57a2ae6ab43d583127d20feb24ee7e23902 +SHA256: 791ae96094aa4a0db957cb2f813db3e19fd2d2f665d225a83e25215e61d164d7 +SHA512: 6218a3932c7eea927e91b239d97333ff3953f5096e6a21896acd65a086f1f4f8d61591f05826bdda4111a7d8fcec882ffdac7be02a8b2cc8c8491cb798842843 +Description: Intel® oneAPI HPC Toolkit + + +Package: intel-hpckit-runtime +Architecture: amd64 +Version: 2023.1.0-46346 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit (>= 2023.1.0), intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing (>= 2023.1.0-43473), intel-oneapi-dev-utilities (>= 2021.9.0-44447), intel-oneapi-compiler-dpcpp-cpp-runtime (>= 2023.1.0-46305), intel-oneapi-compiler-fortran-runtime (>= 2023.1.0-46305) +Filename: pool/main/intel-hpckit-runtime-2023.1.0-46346_amd64.deb +Size: 1812 +MD5sum: e1210222bb299f0f2c8e98af84674720 +SHA1: 5271e5241f55e9de2b2ffa6251e6cc5885207156 +SHA256: 769257f4ef402591b701abec3ce277a41315d9c812fa372df48c008ca9967092 +SHA512: c760e5a88618a907cb8ff066abb2c2a01fb44620224b00d8924ccd5c592645b98d9ceb7557ea625cff006a145d81bc4309593fc630ff9f2512593aaf097ed35a +Description: Intel® oneAPI HPC Toolkit + + +Package: intel-iotkit-2021.1.0 +Architecture: amd64 +Version: 2021.1.0-2658 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit-2021.1.0, intel-iotkit-getting-started (>= 2021.1.0-2658), intel-oneapi-common-vars (>= 2021.1.1-60), intel-oneapi-common-licensing-2021.1.1 , intel-oneapi-eclipse-ide-2021.1.1 , intel-oneapi-iot-eclipse-plugins-2021.1.1 , intel-oneapi-dev-utilities-2021.1.1 , intel-oneapi-inspector (>= 2021.1.1-42), intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-2021.1.1 +Filename: pool/main/intel-iotkit-2021.1.0-2021.1.0-2658_amd64.deb +Size: 1960 +MD5sum: 7683fa248679baa7608f35b09350b912 +SHA1: 55a63cf09a9e66a2cf9dd2a0ff99f1b536d5f0a6 +SHA256: e789ee6dd326f1365a3f33f514c9f4196664ae575d250ba29bb7305a7e5f122e +SHA512: 378aa475a5c085639587438851c6f4307ee66c873333e66111bb3492476fd60d2ea7cb71a69caf5e5dda6e11b5a8ed301f4790a7ecdf4163ce0f708396a0961d +Description: Intel® oneAPI IoT Toolkit + + +Package: intel-iotkit +Architecture: amd64 +Version: 2021.1.0-2658 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit (>= 2021.1.0-2403), intel-iotkit-getting-started (>= 2021.1.0-2658), intel-oneapi-common-vars (>= 2021.1.1-60), intel-oneapi-common-licensing (>= 2021.1.1-60), intel-oneapi-eclipse-ide (>= 2021.1.1-52), intel-oneapi-iot-eclipse-plugins (>= 2021.1.1-69), intel-oneapi-dev-utilities (>= 2021.1.1-197), intel-oneapi-inspector (>= 2021.1.1-42), intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic (>= 2021.1.1-189) +Filename: pool/main/intel-iotkit-2021.1.0-2658_amd64.deb +Size: 1972 +MD5sum: 18321b5d4f1e208315d2271e5792d49d +SHA1: 0591e24cd01a038056cfbe8618bce4eee05efc2b +SHA256: 507ef37ab36df2b047f46f49f78115582440027f232a97979ca6e38afe364848 +SHA512: 37aa909401bc1dbb05c67449121bbe851a7c79598d6780c7db3513db70428f538a92a1b9890dca297513499fc817c4a66bf6159901ddba67d689ec73945df188 +Description: Intel® oneAPI IoT Toolkit + + +Package: intel-iotkit-2021.2.0 +Architecture: amd64 +Version: 2021.2.0-2742 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit-2021.2.0, intel-iotkit-getting-started (>= 2021.2.0-2742), intel-oneapi-common-vars (>= 2021.2.0-195), intel-oneapi-common-licensing-2021.2.0 , intel-oneapi-dev-utilities-2021.2.0 , intel-oneapi-eclipse-ide-2021.2.0 , intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-2021.2.0 , intel-oneapi-iot-eclipse-plugins-2021.2.0 , intel-oneapi-inspector (>= 2021.2.0-145) +Filename: pool/main/intel-iotkit-2021.2.0-2021.2.0-2742_amd64.deb +Size: 1954 +MD5sum: 2fa5f08c6bf3ad2025ad400d9226d1cb +SHA1: debf2ba66ce61e3504e97a7a3a8b85e4ed4eb8c1 +SHA256: be5590b0c5800095bdc227d5ffdf364f5ea16db02218ed1720d9e24d9c46890e +SHA512: 77aec8af93bf80ae677ac707b1f325e96dda7edd9273b9d12c4b0c837254d1e135660e3581ec8b44d0f6617e00fa6c00f2d1ccd9c7194610b9365159d61e94b9 +Description: Intel® oneAPI IoT Toolkit + + +Package: intel-iotkit +Architecture: amd64 +Version: 2021.2.0-2742 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit (>= 2021.2.0-2740), intel-iotkit-getting-started (>= 2021.2.0-2742), intel-oneapi-common-vars (>= 2021.2.0-195), intel-oneapi-common-licensing (>= 2021.2.0-195), intel-oneapi-dev-utilities (>= 2021.2.0-493), intel-oneapi-eclipse-ide (>= 2021.2.0-143), intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic (>= 2021.2.0-610), intel-oneapi-iot-eclipse-plugins (>= 2021.2.0-213), intel-oneapi-inspector (>= 2021.2.0-145) +Filename: pool/main/intel-iotkit-2021.2.0-2742_amd64.deb +Size: 1968 +MD5sum: 22903adb8e7dcbc92ea782365b3f2f7a +SHA1: d9af1c26702de3a0552c74c830ae203a46bc9b27 +SHA256: a464a5c8b24c8a1c94a7ea913f8a39f9e960d1e9586eb488be9dfb481703ce71 +SHA512: ef2da8428bdf74c8ea1a291aeca6c1cae7c4f2d397f6953be59c232cba01427baf9d804bba0930c2f97bda60e7f3ed5aebf78fa814b04c4611cf4972a2cdbdf9 +Description: Intel® oneAPI IoT Toolkit + + +Package: intel-iotkit-2021.3.0 +Architecture: amd64 +Version: 2021.3.0-2811 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit-2021.3.0, intel-iotkit-getting-started (>= 2021.3.0-2811), intel-oneapi-common-vars (>= 2021.3.0-261), intel-oneapi-common-licensing-2021.3.0 , intel-oneapi-inspector (>= 2021.3.0-217), intel-oneapi-dev-utilities-2021.3.0 , intel-oneapi-iot-eclipse-plugins-2021.3.0 , intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-2021.3.0 +Filename: pool/main/intel-iotkit-2021.3.0-2021.3.0-2811_amd64.deb +Size: 1946 +MD5sum: 9e4bb88d31b1d1a6f724b27ff8fdee47 +SHA1: 5118fa7e699efd20a1e27095f86145f918662265 +SHA256: 94ba112bae7e843975d505183009b317e1c0c7e4aa06f247b88fd86471ce3ac9 +SHA512: f69c7b3de10d0782259e0c52e0dfd94412299a91126e196377f10d7d8ca3ec8f1cad1d7d3ae8ca95193dc530d6d5a8887e3f5e9d397498450b125e33efe4443a +Description: Intel® oneAPI IoT Toolkit + + +Package: intel-iotkit +Architecture: amd64 +Version: 2021.3.0-2811 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit (>= 2021.3.0-2885), intel-iotkit-getting-started (>= 2021.3.0-2811), intel-oneapi-common-vars (>= 2021.3.0-261), intel-oneapi-common-licensing (>= 2021.3.0-261), intel-oneapi-inspector (>= 2021.3.0-217), intel-oneapi-dev-utilities (>= 2021.3.0-691), intel-oneapi-iot-eclipse-plugins (>= 2021.3.0-268), intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic (>= 2021.3.0-3350) +Filename: pool/main/intel-iotkit-2021.3.0-2811_amd64.deb +Size: 1956 +MD5sum: 395c4b51ed7e525ddb89f50bd53d9b8a +SHA1: 662c0048fec4ea09a010d7035fc3d23889ead232 +SHA256: 078f92c03da6b1003e502b5f5f4d67e96a2e009d93310a6403231cdad020b9cb +SHA512: 4f78552408ded2fe41719b79e0a8b9ec4b4c52991e458bef83eaebf858c6c85981e64ef41fd1366dfb45d4a6900bcde4236667a201bf1efcc15d930be634d65c +Description: Intel® oneAPI IoT Toolkit + + +Package: intel-iotkit-2021.4.0 +Architecture: amd64 +Version: 2021.4.0-2858 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit-2021.3.0, intel-iotkit-getting-started (>= 2021.4.0-2858), intel-oneapi-common-vars (>= 2021.4.0-327), intel-oneapi-common-licensing-2021.4.0 , intel-oneapi-dev-utilities-2021.4.0 , intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-2021.4.0 , intel-oneapi-inspector (>= 2021.4.0-266), intel-oneapi-iot-eclipse-plugins-2021.4.0 +Filename: pool/main/intel-iotkit-2021.4.0-2021.4.0-2858_amd64.deb +Size: 1948 +MD5sum: bf4318cf2d95e74161dc6ed2485f4de5 +SHA1: 3bf15a7282dd298c826a7b4fe5f15e495d0c8c20 +SHA256: b5a7796bf5484ba6aec8396776f77ff212d1f210c38351e0ed7bddc4a0506608 +SHA512: 43ee11d2359a72e20dd3283d856a72b80582754eabcf37a4b3a6ce30c2cdfa535c7cf877d8e8260ca72f800a8627f9852ee6313f9daaf92cee3543f661b3ef38 +Description: Intel® oneAPI IoT Toolkit + + +Package: intel-iotkit +Architecture: amd64 +Version: 2021.4.0-2858 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit (>= 2021.3.0-2885), intel-iotkit-getting-started (>= 2021.4.0-2858), intel-oneapi-common-vars (>= 2021.4.0-327), intel-oneapi-common-licensing (>= 2021.4.0-327), intel-oneapi-dev-utilities (>= 2021.4.0-847), intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic (>= 2021.4.0-3561), intel-oneapi-inspector (>= 2021.4.0-266), intel-oneapi-iot-eclipse-plugins (>= 2021.4.0-338) +Filename: pool/main/intel-iotkit-2021.4.0-2858_amd64.deb +Size: 1962 +MD5sum: d460d99e6096a0849422a96980305bed +SHA1: 2d0c00fd0eb28ccaa13bfba65a197cbbd97fa2f9 +SHA256: 054031468976fca12a79f65c370ad70373e5dc0c671d8885eedd3be4eae75721 +SHA512: 02f4f456383eb8c871c995faaa30a9c589c34a55c5c38e8f92af34817bd944f558d915b458186250e1c9b2fead8446a837665cd443cbddd9c18f3d46ce07bb4f +Description: Intel® oneAPI IoT Toolkit + + +Package: intel-iotkit-2022.1.1 +Architecture: amd64 +Version: 2022.1.1-84 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit-2022.1.0, intel-iotkit-getting-started (>= 2022.1.1-84), intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 , intel-oneapi-inspector (>= 2022.0.0-56), intel-oneapi-dev-utilities-2021.5.1 , intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-2022.0.1 +Filename: pool/main/intel-iotkit-2022.1.1-2022.1.1-84_amd64.deb +Size: 1948 +MD5sum: b3889f5e357fc6ba5a00e41247adc7ab +SHA1: 4bc26c359829dfb5be915c5d6b612f7d5465a229 +SHA256: a14feb49231a3428427604d56a50e6282c43dfee6036c623ee8e46480061cee3 +SHA512: 1a5936a7af2f9995770fe7467dcf4ab5dd54ed8a4f2a48735f663a44ee98797efb0b434ea26bccc6517c8070f61df7d4bc3b46b1a7727a32d887d935338d7742 +Description: Intel® oneAPI IoT Toolkit + + +Package: intel-iotkit +Architecture: amd64 +Version: 2022.1.1-84 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit (>= 2022.1.0-37), intel-iotkit-getting-started (>= 2022.1.1-84), intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing (>= 2022.0.0-59), intel-oneapi-inspector (>= 2022.0.0-56), intel-oneapi-dev-utilities (>= 2021.5.1-924), intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic (>= 2022.0.1-3633) +Filename: pool/main/intel-iotkit-2022.1.1-84_amd64.deb +Size: 1954 +MD5sum: 4685a4435909050631f252d53cd02e9c +SHA1: 5931221ae074eeea2a74b1da8ba7f2e417b58f06 +SHA256: 5003a8dcab1106f9a366325a1d886868d7be4bf7f0f8209d50487f8578d1f2a9 +SHA512: 6c7575b8f85fa48f6024b6f10477276b27a73e8fdc6114170cbf06e8e7a1552ce32784f5acf1578cb278c7f8744fa4d9ab775045821b4bf06a149d9abb51bf2d +Description: Intel® oneAPI IoT Toolkit + + +Package: intel-iotkit +Architecture: amd64 +Version: 2022.1.2-102 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit (>= 2022.1.2-141), intel-iotkit-getting-started (>= 2022.1.2-102), intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing (>= 2022.0.0-59), intel-oneapi-inspector (>= 2022.0.0-56), intel-oneapi-dev-utilities (>= 2021.5.2-936), intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic (>= 2022.0.2-3658) +Filename: pool/main/intel-iotkit-2022.1.2-102_amd64.deb +Size: 1954 +MD5sum: 5dffe2c16b719181b8c31817d92d28f7 +SHA1: 3edaac025f5fa6de82abe6ab1c280dae80ff84ea +SHA256: 7c02e3495bf38bae4f06a90de92170d7a2a2a23351650cb7029077e5d64464d2 +SHA512: e60d7d21011f792243719010eacecc8e866537e9464a789afccd13b8b9d4616eb4fee74f52a9c72ed375ccb68209fe496cecf4b14fad385674d682e53fd21794 +Description: Intel® oneAPI IoT Toolkit + + +Package: intel-iotkit-2022.1.2 +Architecture: amd64 +Version: 2022.1.2-102 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit-2022.1.2, intel-iotkit-getting-started (>= 2022.1.2-102), intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 , intel-oneapi-inspector (>= 2022.0.0-56), intel-oneapi-dev-utilities-2021.5.2 , intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-2022.0.2 +Filename: pool/main/intel-iotkit-2022.1.2-2022.1.2-102_amd64.deb +Size: 1948 +MD5sum: f0f0772b422439eb47a59cb62003b20b +SHA1: ac0e441b96e8a95181832cc805c93b2eef8164f3 +SHA256: c6f932a358bfb1189fc7af8dc847b045e0d66040db9a568beb33448026d4ee95 +SHA512: e91abe20ae44773cdaf2d6b686cc02253e21faf8e66cec0aa5465dbd63daf276221c3d082ccf40aaef5272a27d69817fddf00467dd6401e4fd8a1a109acd6eb2 +Description: Intel® oneAPI IoT Toolkit + + +Package: intel-iotkit +Architecture: amd64 +Version: 2022.2.0-165 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit (>= 2022.2.0), intel-iotkit-getting-started (>= 2022.2.0-165), intel-oneapi-common-vars (>= 2022.1.0-161), intel-oneapi-common-licensing (>= 2022.1.0-161), intel-oneapi-dev-utilities (>= 2021.6.0-989), intel-oneapi-inspector (>= 2022.1.0-123), intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic (>= 2022.1.0-3768) +Filename: pool/main/intel-iotkit-2022.2.0-165_amd64.deb +Size: 2028 +MD5sum: 127f504081ccbc546c5a798ddd5b31e0 +SHA1: 4be07d8051f46f6c6772de5110be212b772ccb43 +SHA256: 916fe4078240c4764b9871c0796eef52b1801582c4343048777d22b94741387b +SHA512: 340b72e93cbfd7babf08f4bf74a371e5bf04c20e0415ce92a395ed72fe9741ae81dbab9303e089a2cc260cc2c40b072ecd680fe43d03d8d609c009b11b48a7ae +Description: Intel® oneAPI IoT Toolkit + + +Package: intel-iotkit-2022.2.0 +Architecture: amd64 +Version: 2022.2.0-165 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit-2022.2.0, intel-iotkit-getting-started (>= 2022.2.0-165), intel-oneapi-common-vars (>= 2022.1.0-161), intel-oneapi-common-licensing-2022.1.0 , intel-oneapi-dev-utilities-2021.6.0 , intel-oneapi-inspector (>= 2022.1.0-123), intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-2022.1.0 +Filename: pool/main/intel-iotkit-2022.2.0-2022.2.0-165_amd64.deb +Size: 2024 +MD5sum: 9a120dcda742f8ad6871ffd72ff96c74 +SHA1: f3491372f62a5d5bfef62b436d9d2fa93804ab9e +SHA256: f4bc291a5fbb01424bac675cad53b2d720e812d2678f72dc24b073f0c961ba8a +SHA512: d7fb6a68922ade6b5ae9b6d5f0e45ca0faeeac01387bf1aed15b712dbc66f0e602adaff85da40036466153d5e5a50d8ac2771adf6847f68bbd0a2940db2d1b83 +Description: Intel® oneAPI IoT Toolkit + + +Package: intel-iotkit-2022.3.0 +Architecture: amd64 +Version: 2022.3.0-8747 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit-2022.3.0, intel-iotkit-getting-started (>= 2022.3.0-8747), intel-oneapi-common-vars (>= 2022.2.0-8694), intel-oneapi-common-licensing-2022.2.0 , intel-oneapi-dev-utilities-2021.7.0 , intel-oneapi-inspector (>= 2022.3.0-8706), intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-2022.2.0 +Filename: pool/main/intel-iotkit-2022.3.0-2022.3.0-8747_amd64.deb +Size: 2024 +MD5sum: f4b9912057a673e2772ad7a3c187da2c +SHA1: d899dc91cf9cac35c04622928f6ed309972df3c7 +SHA256: b7f014c00aef01ffbea73a264b3e1c2a90cd7cfdede80415159d86e0f5c04dd0 +SHA512: 3f45d141517c9a86e9cb19463752ad45e6d039a33001f8f7ed595ecc314de5034ad5bbb5d5a22e3743bd9ff9bd85a12c3deed963f9dbb61e2ad8fa57a2f42978 +Description: Intel® oneAPI IoT Toolkit + + +Package: intel-iotkit +Architecture: amd64 +Version: 2022.3.0-8747 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit (>= 2022.3.0), intel-iotkit-getting-started (>= 2022.3.0-8747), intel-oneapi-common-vars (>= 2022.2.0-8694), intel-oneapi-common-licensing (>= 2022.2.0-8694), intel-oneapi-dev-utilities (>= 2021.7.0-8698), intel-oneapi-inspector (>= 2022.3.0-8706), intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic (>= 2022.2.0-8734) +Filename: pool/main/intel-iotkit-2022.3.0-8747_amd64.deb +Size: 2024 +MD5sum: 44cfcbe4bdb9d048d9322664172aee85 +SHA1: 95cfb595d075df9bc7845cd7c4f89e682012ea15 +SHA256: c03779fee9b3c5887fd5ad1e8fb703e33456a091d9a02152599f3cd79d608923 +SHA512: d5479272d453e12f4dfa84ff1485dbbccde2c27ce8bab616c9229d369a6b7226e9cff36de4e89420a610a139bca2d64de504bc8d3d9a02576b0c2e52ee15dee0 +Description: Intel® oneAPI IoT Toolkit + + +Package: intel-iotkit +Architecture: amd64 +Version: 2022.3.1-16990 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit (>= 2022.3.1), intel-iotkit-getting-started (>= 2022.3.1-16990), intel-oneapi-common-vars (>= 2022.2.1-14969), intel-oneapi-common-licensing (>= 2022.2.1-14969), intel-oneapi-dev-utilities (>= 2021.7.1-14991), intel-oneapi-inspector (>= 2022.3.1-15318), intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic (>= 2022.2.1-16953) +Filename: pool/main/intel-iotkit-2022.3.1-16990_amd64.deb +Size: 2032 +MD5sum: 7f802e9073e19649231b8c2a84f0d920 +SHA1: 1f78f343032c766244773fc1d27ecf4f33b4ec76 +SHA256: acbd398df1927788b9add975b7802d5d0d75f3d04921d422bbb6721fe238c23a +SHA512: 74fdfb8ef6bfb105d1f6cae1c0fa3e71964e77c2411a0e9caf1336aae18f6e7c7a4d0af16f4aeefa7b914d7a2f928fb7bca0ba314180279569212f73cdef6114 +Description: Intel® oneAPI IoT Toolkit + + +Package: intel-iotkit-2022.3.1 +Architecture: amd64 +Version: 2022.3.1-16990 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit-2022.3.1, intel-iotkit-getting-started (>= 2022.3.1-16990), intel-oneapi-common-vars (>= 2022.2.1-14969), intel-oneapi-common-licensing-2022.2.1 , intel-oneapi-dev-utilities-2021.7.1 , intel-oneapi-inspector (>= 2022.3.1-15318), intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-2022.2.1 +Filename: pool/main/intel-iotkit-2022.3.1-2022.3.1-16990_amd64.deb +Size: 2028 +MD5sum: e9d8f3d4a3976c0c10ed4b71c10b9f3e +SHA1: c01e426b0c379e0b362f7f3fc087a954f063d918 +SHA256: 61ad6c7f88f594f90feb3497cc574b6cae9152735d6ce9802b6433cc1ffe47bc +SHA512: 111023eb0d2c475ae8fbbb2f4968703c3655b5c2440e0b2d0478a120c2d307a226834af8f8d43c1ce91ec50b816fce7649d8529122bd02822f103ba344d74a16 +Description: Intel® oneAPI IoT Toolkit + + +Package: intel-iotkit-2023.0.0 +Architecture: amd64 +Version: 2023.0.0-25397 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit-2023.0.0, intel-iotkit-getting-started (>= 2023.0.0-25397), intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing-2023.0.0 , intel-oneapi-dev-utilities-2021.8.0 , intel-oneapi-inspector (>= 2023.0.0-25340), intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-2023.0.0 +Filename: pool/main/intel-iotkit-2023.0.0-2023.0.0-25397_amd64.deb +Size: 2020 +MD5sum: 4d68e2923767d23060f30db957492a5c +SHA1: 722643f185c0d2c241116a30081294dd475faa04 +SHA256: 04e9f825db170304fee9b9cf466186ea1de36ae78294aa8401da6d1457f31b26 +SHA512: 372e24ee19512d9765ad90f6d65abf768673a3fcc2e28e4e81842fcdaa22dc60fb65d92687d3c02f48a4070e8436b5d6c018844f8deed33223c7b165abcccfdb +Description: Intel® oneAPI IoT Toolkit + + +Package: intel-iotkit +Architecture: amd64 +Version: 2023.0.0-25397 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit (>= 2023.0.0), intel-iotkit-getting-started (>= 2023.0.0-25397), intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing (>= 2023.0.0-25325), intel-oneapi-dev-utilities (>= 2021.8.0-25328), intel-oneapi-inspector (>= 2023.0.0-25340), intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic (>= 2023.0.0-25370) +Filename: pool/main/intel-iotkit-2023.0.0-25397_amd64.deb +Size: 2024 +MD5sum: aef09e28f44a4c03094e1d63d2a87b39 +SHA1: 2936f965042f871fd44a083d32440688c9ec6a78 +SHA256: 87e284071ab74813d7bb35d5469371d3ed5406573cdd1785d126170fcc930573 +SHA512: 92a4a9b88b60ba5b1dc44706b5d57622da708c53be5e4e25486768772a804d7723ebe8fbd4e7843a72926e08cc1b44e82411437e7c49e4fe9a20f5bcd2de7059 +Description: Intel® oneAPI IoT Toolkit + + +Package: intel-iotkit-2023.1.0 +Architecture: amd64 +Version: 2023.1.0-46344 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit-2023.1.0, intel-iotkit-getting-started (>= 2023.1.0-46344), intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing-2023.1.0 , intel-oneapi-dev-utilities-2021.9.0 , intel-oneapi-inspector (>= 2023.1.0-43486), intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-2023.1.0 +Filename: pool/main/intel-iotkit-2023.1.0-2023.1.0-46344_amd64.deb +Size: 2024 +MD5sum: 20a354ee829ac58d9352bded0b9ac6ec +SHA1: 26d08891fc68f7bcc6407942bdd8e43bd3622894 +SHA256: 1198dd413ba98201c20abc61e77c32cca017feb8f0fa8777ebd26bbdf9b19421 +SHA512: b1b5a49f1df093ebc825a8daa92f41a5772f5166a1f031a8c1b33d69e524868e2f3fb91a97ff3daf3bc256eda696f07b88f9f127f85a345cefb8ea6e2d368b5e +Description: Intel® oneAPI IoT Toolkit + + +Package: intel-iotkit +Architecture: amd64 +Version: 2023.1.0-46344 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit (>= 2023.1.0), intel-iotkit-getting-started (>= 2023.1.0-46344), intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing (>= 2023.1.0-43473), intel-oneapi-dev-utilities (>= 2021.9.0-44447), intel-oneapi-inspector (>= 2023.1.0-43486), intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic (>= 2023.1.0-46305) +Filename: pool/main/intel-iotkit-2023.1.0-46344_amd64.deb +Size: 2028 +MD5sum: 7f4a3b6abbdade64f75ccd10191d9326 +SHA1: c06e47ad6d6c138bdd7061fc3dbcfa51a0d5ba01 +SHA256: e3e0799ce855cfce8fbbc9a9e987a60cc5b681c0a50d00e89f0ccdf709a79d0e +SHA512: 20bf3045e5979066e0339a59c1abc0304b01468fcdda10f9fb4eaff77267fcf9afff7492cf4e89c5f2b82ee0bd5fc981a62754b03b87e59ca9bf7d43c8322f64 +Description: Intel® oneAPI IoT Toolkit + + +Package: intel-iotkit-runtime-2021.1.0 +Architecture: amd64 +Version: 2021.1.0-2658 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit-runtime-2021.1.0, intel-iotkit-getting-started (>= 2021.1.0-2658), intel-oneapi-common-vars (>= 2021.1.1-60), intel-oneapi-common-licensing-2021.1.1 , intel-oneapi-dev-utilities-2021.1.1 , intel-oneapi-compiler-dpcpp-cpp-runtime-2021.1.1 +Filename: pool/main/intel-iotkit-runtime-2021.1.0-2021.1.0-2658_amd64.deb +Size: 1732 +MD5sum: 5790f24a488174c6909f9c08d29aa261 +SHA1: c5cd0e71c20c3d9ef8ae349a1c8d8287010cf51b +SHA256: ffcef0c8397d4c9cd3ed75a461247b5501330d90f29b55946813cb01b2b780f9 +SHA512: e756e63a0b490622aa48e624cf6e9cf326b02285404a5cb62413c66e31505d0b23507fe25bc74cbadb52e3a18c9d06e088c1feda7ae2310e5f9956c7c2c38fcf +Description: Intel® oneAPI IoT Toolkit + + +Package: intel-iotkit-runtime +Architecture: amd64 +Version: 2021.1.0-2658 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit (>= 2021.1.0-2403), intel-oneapi-common-vars (>= 2021.1.1-60), intel-oneapi-common-licensing (>= 2021.1.1-60), intel-oneapi-dev-utilities (>= 2021.1.1-197), intel-oneapi-compiler-dpcpp-cpp-runtime (>= 2021.1.1-189) +Filename: pool/main/intel-iotkit-runtime-2021.1.0-2658_amd64.deb +Size: 1718 +MD5sum: 25006297a7b55245263f3f35216fa2dc +SHA1: 4d3e1f53d97807994890e18b490d4b38d0ed3cd4 +SHA256: abfa65950fc6f82746ffafbd594ae4d1f6a104af089f3b1130caaaeadff3b246 +SHA512: 2f95e0b6a621660f39eee98acc9dab54929fd4c935357b7f04a3922e05377ccafe5b20b03e33bb1d2e82ca7e0c22fd9559813712cc2c8fb34d557333bb1e8761 +Description: Intel® oneAPI IoT Toolkit + + +Package: intel-iotkit-runtime-2021.2.0 +Architecture: amd64 +Version: 2021.2.0-2742 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit-runtime-2021.2.0, intel-iotkit-getting-started (>= 2021.2.0-2742), intel-oneapi-common-vars (>= 2021.2.0-195), intel-oneapi-common-licensing-2021.2.0 , intel-oneapi-dev-utilities-2021.2.0 , intel-oneapi-compiler-dpcpp-cpp-runtime-2021.2.0 +Filename: pool/main/intel-iotkit-runtime-2021.2.0-2021.2.0-2742_amd64.deb +Size: 1724 +MD5sum: b6cb457725e0da306bd87f9c332d6a0f +SHA1: 2f502ad58b9274bc40c0652cc00c7c76175b9091 +SHA256: e9a272f83ee06fdd029c6e3737944a757dc469203a79659cd900b161efb60505 +SHA512: c08e5ec35f2e79a07d6407493285e14514b230e0bbdeba9e865c6087f3cc9ef5c32d3b91d56f131168b0e713fa73aca1827008455047959598daad62a7db0fdf +Description: Intel® oneAPI IoT Toolkit + + +Package: intel-iotkit-runtime +Architecture: amd64 +Version: 2021.2.0-2742 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit (>= 2021.2.0-2740), intel-oneapi-common-vars (>= 2021.2.0-195), intel-oneapi-common-licensing (>= 2021.2.0-195), intel-oneapi-dev-utilities (>= 2021.2.0-493), intel-oneapi-compiler-dpcpp-cpp-runtime (>= 2021.2.0-610) +Filename: pool/main/intel-iotkit-runtime-2021.2.0-2742_amd64.deb +Size: 1716 +MD5sum: 1bc12da64840e571c46b777954e41b7b +SHA1: 3fdd18a7c33c230500c1b6a2a702318f61e7c575 +SHA256: 9a0781e2c7adafa71c20c83f4906181f647e1b6b01f77b4bc690759397bee9b5 +SHA512: 2e670dd772aa79b12a5d534cadf28323e4f39c002ccb276d225e98a4ee38e8fbc6ebcb0f04c9bca7ba96e4555a01a2d852fa888f18474e67551655150e8f2cbe +Description: Intel® oneAPI IoT Toolkit + + +Package: intel-iotkit-runtime-2021.3.0 +Architecture: amd64 +Version: 2021.3.0-2811 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit-runtime-2021.3.0, intel-iotkit-getting-started (>= 2021.3.0-2811), intel-oneapi-common-vars (>= 2021.3.0-261), intel-oneapi-common-licensing-2021.3.0 , intel-oneapi-dev-utilities-2021.3.0 +Filename: pool/main/intel-iotkit-runtime-2021.3.0-2021.3.0-2811_amd64.deb +Size: 1712 +MD5sum: 6dbc88ff8b0cf29fb947b0c30e79d1da +SHA1: 4abce5903b468fb7f6f6f472a7a499d9632d1642 +SHA256: 726f3fba7a4898cc7e4acbfaa84e56cec22fcfda9bf5925bcb77cda960622945 +SHA512: b4be58892658f0cc2b0e2d3c3c3e4f80d10b6767bda069f9a69280c9a2605ecf44e34a35c50e6821656dcbd420f5212017a0a3609f11817a1627ce116ea7ac4d +Description: Intel® oneAPI IoT Toolkit + + +Package: intel-iotkit-runtime +Architecture: amd64 +Version: 2021.3.0-2811 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit (>= 2021.3.0-2885), intel-oneapi-common-vars (>= 2021.3.0-261), intel-oneapi-common-licensing (>= 2021.3.0-261), intel-oneapi-dev-utilities (>= 2021.3.0-691) +Filename: pool/main/intel-iotkit-runtime-2021.3.0-2811_amd64.deb +Size: 1700 +MD5sum: c95a1bf426bbb5549cbbb9c7bac3ea61 +SHA1: b627bec41860ce12ca31a4860a0ef0d5b7206c19 +SHA256: 2c64285c2bc780afc250ca21588b56ecf8660d3b6a92f8a610fe3785699cf7d8 +SHA512: 11ac7cb207ec211e24898318a35b174086536828a91f6b25dc3e760b7d275fdfa7ce48282ae013195e15848b9e45f60c5f61937ff3259fb5e7a5320755dddb8a +Description: Intel® oneAPI IoT Toolkit + + +Package: intel-iotkit-runtime-2021.4.0 +Architecture: amd64 +Version: 2021.4.0-2858 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit-runtime-2021.3.0, intel-iotkit-getting-started (>= 2021.4.0-2858), intel-oneapi-common-vars (>= 2021.4.0-327), intel-oneapi-common-licensing-2021.4.0 , intel-oneapi-dev-utilities-2021.4.0 +Filename: pool/main/intel-iotkit-runtime-2021.4.0-2021.4.0-2858_amd64.deb +Size: 1712 +MD5sum: 575eaf80c64ade40109ab07883c64008 +SHA1: 4f7fbceedeb07cfe0a25ea62d9f42f87f04754b4 +SHA256: cfc924a576619309889083f90e4c5aab63d52402083203cf317c4fa8b60df028 +SHA512: 5cea3a8c396d5b855b469469e9e3641911cbc6ac2b9346da56384437b6c587bd0e86051d91908cc4e3775e2e736e46ab05f16eb1edaad43cf36a52425fa2df45 +Description: Intel® oneAPI IoT Toolkit + + +Package: intel-iotkit-runtime +Architecture: amd64 +Version: 2021.4.0-2858 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit (>= 2021.3.0-2885), intel-oneapi-common-vars (>= 2021.4.0-327), intel-oneapi-common-licensing (>= 2021.4.0-327), intel-oneapi-dev-utilities (>= 2021.4.0-847) +Filename: pool/main/intel-iotkit-runtime-2021.4.0-2858_amd64.deb +Size: 1700 +MD5sum: 77eb5bb5d147acbcdd35f9b8973cccc7 +SHA1: 6526d0b593bc1ff6c045f3a209051341e674da0c +SHA256: 99945c74adcdd00200ad7eafd5b2e9103a4f804ec0494e338d51b5d5e16f1cf4 +SHA512: ab2485a356f0f3e56c9a58354d07ac5e32cfcd767cc236988acfe5fb7b0ad26d9ab23fba72e4dbedba346a1375291a76eb0c2ed4e1f8f2739bf386f43a15a3bc +Description: Intel® oneAPI IoT Toolkit + + +Package: intel-iotkit-runtime-2022.1.1 +Architecture: amd64 +Version: 2022.1.1-84 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit-runtime-2022.1.0, intel-iotkit-getting-started (>= 2022.1.1-84), intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 , intel-oneapi-dev-utilities-2021.5.1 +Filename: pool/main/intel-iotkit-runtime-2022.1.1-2022.1.1-84_amd64.deb +Size: 1718 +MD5sum: 45e279d4bc45a5db678f9ea75ce909f2 +SHA1: 56975f1e266c2ea57fb214bbbd89fc928276e543 +SHA256: ccc6934d17b8d29fa9ac42c2cbeb112b53e997c3f1d4856373141d9d6a496f73 +SHA512: 9b4ef21a278136f0842ea70bd6c127373ead4fc0175fd3d39e9b78bdca04432f1f4096b2fc0d47f2766c8ac38310f3424b6c14564bdc20d182fd099ee79e717a +Description: Intel® oneAPI IoT Toolkit + + +Package: intel-iotkit-runtime +Architecture: amd64 +Version: 2022.1.1-84 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit (>= 2022.1.0-37), intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing (>= 2022.0.0-59), intel-oneapi-dev-utilities (>= 2021.5.1-924) +Filename: pool/main/intel-iotkit-runtime-2022.1.1-84_amd64.deb +Size: 1704 +MD5sum: d5f0a6ada5b39873ed1ca611f38418af +SHA1: ea519d1a4a80b934fdf570bb2e6e313be355e4ac +SHA256: 03c4f6375ddc40473d033b080dc2cea3fb270b5a4cd9c16bb5d19a8913300dc7 +SHA512: 3eae8061a1d8903b9c3c9f63c206946d328d020151264670b06373c66805ca4b1abda66b3f58a5117e75095a17cd4f1fb68dd396940a2a9037a6b5522dabf634 +Description: Intel® oneAPI IoT Toolkit + + +Package: intel-iotkit-runtime +Architecture: amd64 +Version: 2022.1.2-102 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit (>= 2022.1.2-141), intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing (>= 2022.0.0-59), intel-oneapi-dev-utilities (>= 2021.5.2-936) +Filename: pool/main/intel-iotkit-runtime-2022.1.2-102_amd64.deb +Size: 1702 +MD5sum: 3db4e6fd1b219566fb82302ba3ce0211 +SHA1: 0a2b855692d88e0a4496c2b1ec2ca3a44e6baf8a +SHA256: 672f5c8faec8125a47c03e144ad7a2887332c4bc2c0b86b74a51fb2088c47c87 +SHA512: b771e3039ad93164e31077662b0fa33ed9ed3ed63423b03e585d24fbc23e8593e08bc9b245fe43800c580e75ee702d858a494ddca2dfddc6bcc9a4f7f2e01941 +Description: Intel® oneAPI IoT Toolkit + + +Package: intel-iotkit-runtime-2022.1.2 +Architecture: amd64 +Version: 2022.1.2-102 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit-runtime-2022.1.2, intel-iotkit-getting-started (>= 2022.1.2-102), intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 , intel-oneapi-dev-utilities-2021.5.2 +Filename: pool/main/intel-iotkit-runtime-2022.1.2-2022.1.2-102_amd64.deb +Size: 1716 +MD5sum: 46af6c04e19b10d96d7c259b92129e99 +SHA1: e2d6c00843d1113a2df5d4c6c9bee7d728f7a60f +SHA256: 01ac478c66e193f4675737cb5b96692077e5c9513373c9073fab9fa0c702195e +SHA512: 3b19d79ca6c9dcabc15553820f2e8632ac2ea4b7a6e7afc626c525b3bae18fc42b6baf34e96a69f445ac97cad28cc579231be7eca3ec6bf5f76221f7692bc990 +Description: Intel® oneAPI IoT Toolkit + + +Package: intel-iotkit-runtime +Architecture: amd64 +Version: 2022.2.0-165 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit (>= 2022.2.0), intel-oneapi-common-vars (>= 2022.1.0-161), intel-oneapi-common-licensing (>= 2022.1.0-161), intel-oneapi-dev-utilities (>= 2021.6.0-989) +Filename: pool/main/intel-iotkit-runtime-2022.2.0-165_amd64.deb +Size: 1780 +MD5sum: 3d675e4c909eeff1db2367e944adb42b +SHA1: c6527524d0642455606d9881d19ee60ab5e94534 +SHA256: 17615a4032cd3270b74d6b645848a8280c932794fbf4c55ab7d0fc4493817ccc +SHA512: 3ea248b090d4217b3bc3c77e80e9fe6574a82e82267599ef8bf70a0bd5e0f0edfa43553f6127fa93c8ecee3743d26eb52977e4af1f72ec96fab1373c7a70c493 +Description: Intel® oneAPI IoT Toolkit + + +Package: intel-iotkit-runtime-2022.2.0 +Architecture: amd64 +Version: 2022.2.0-165 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit-runtime-2022.2.0, intel-iotkit-getting-started (>= 2022.2.0-165), intel-oneapi-common-vars (>= 2022.1.0-161), intel-oneapi-common-licensing-2022.1.0 , intel-oneapi-dev-utilities-2021.6.0 +Filename: pool/main/intel-iotkit-runtime-2022.2.0-2022.2.0-165_amd64.deb +Size: 1792 +MD5sum: 25fa89881b1aff0b2c09cf6ac7bc84d6 +SHA1: 910b57235029d03256ebca6249fcbe1f14b82b0e +SHA256: 9a882f5e43482854947cd4807306ae509af909ab035e3ac15896b32ffd44286d +SHA512: 2c564d5274c057efd922faed1cff54c50001b7f4311262f222a7655c185b9b28a0a2da16321a37d64bb669766b3f231b1df1dbe20676b0952066c5a4fd1d00d4 +Description: Intel® oneAPI IoT Toolkit + + +Package: intel-iotkit-runtime-2022.3.0 +Architecture: amd64 +Version: 2022.3.0-8747 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit-runtime-2022.3.0, intel-iotkit-getting-started (>= 2022.3.0-8747), intel-oneapi-common-vars (>= 2022.2.0-8694), intel-oneapi-common-licensing-2022.2.0 , intel-oneapi-dev-utilities-2021.7.0 +Filename: pool/main/intel-iotkit-runtime-2022.3.0-2022.3.0-8747_amd64.deb +Size: 1796 +MD5sum: f98e629f0e9271124722dbdcc89f34b8 +SHA1: 305e88c8c2d4075b127a7a967c7be67d368d13bc +SHA256: dd31a832893fe0ad0a588915c9bb347eac5442af7aa4036366126297f49a605c +SHA512: bb9a9a06be650c40b869588ead09e4f69a299e12944f4c072587e8a014544371231061ca8d844614dff8b735a869426f1b59f79e7166667dd7263213e9bce2d4 +Description: Intel® oneAPI IoT Toolkit + + +Package: intel-iotkit-runtime +Architecture: amd64 +Version: 2022.3.0-8747 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit (>= 2022.3.0), intel-oneapi-common-vars (>= 2022.2.0-8694), intel-oneapi-common-licensing (>= 2022.2.0-8694), intel-oneapi-dev-utilities (>= 2021.7.0-8698) +Filename: pool/main/intel-iotkit-runtime-2022.3.0-8747_amd64.deb +Size: 1780 +MD5sum: cdbf020ca41c7afc83ab910818e312e4 +SHA1: 51836ada69dc707b50421224c857701f44ef499d +SHA256: f06acb52f9564b8e3dc29648a77c34d82f41ad9955e1071c2b751b2914da097c +SHA512: 352de1902ab330d0c958202518b08df828f09b1db94a8dd1d0e18e144a77c357e3662eb9b2311801267e60d743b76a32231d9f9864cdbc1fe696b096b325c274 +Description: Intel® oneAPI IoT Toolkit + + +Package: intel-iotkit-runtime +Architecture: amd64 +Version: 2022.3.1-16990 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit (>= 2022.3.1), intel-oneapi-common-vars (>= 2022.2.1-14969), intel-oneapi-common-licensing (>= 2022.2.1-14969), intel-oneapi-dev-utilities (>= 2021.7.1-14991) +Filename: pool/main/intel-iotkit-runtime-2022.3.1-16990_amd64.deb +Size: 1780 +MD5sum: 8882131641d73bfdc4197488e014267b +SHA1: 2fd692801cd2177bd9a9ddae781b78b1cf37fb66 +SHA256: 827183ada9cf017f59a13bd623111e435e40785ccb0925c210cada265f2a4eb6 +SHA512: 1c5627976fb4c2f32daf8a15bb94a48087b599d91c22e25a7bf8e9dbd3925167c38bdcb273a20d38516b5220761e72473725298d937fc88e96aecccd3aab27f6 +Description: Intel® oneAPI IoT Toolkit + + +Package: intel-iotkit-runtime-2022.3.1 +Architecture: amd64 +Version: 2022.3.1-16990 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit-runtime-2022.3.1, intel-iotkit-getting-started (>= 2022.3.1-16990), intel-oneapi-common-vars (>= 2022.2.1-14969), intel-oneapi-common-licensing-2022.2.1 , intel-oneapi-dev-utilities-2021.7.1 +Filename: pool/main/intel-iotkit-runtime-2022.3.1-2022.3.1-16990_amd64.deb +Size: 1796 +MD5sum: f3cfceb1118d0de8f4c18103647f0e33 +SHA1: 28404c47643277291e11e6de5f91a52bf4671efe +SHA256: a073654cd529e309ed4559da0e3a0fcfd9afc665b21a378575d538a829d878f2 +SHA512: b398d7753df432000441eacd4194b4011d7f9445843f52f215afc41632902546336edd7c1a7bb8f4e046ad3d15d34042ee6c3e00efd2c9399fc284d4880b12b4 +Description: Intel® oneAPI IoT Toolkit + + +Package: intel-iotkit-runtime-2023.0.0 +Architecture: amd64 +Version: 2023.0.0-25397 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit-runtime-2023.0.0, intel-iotkit-getting-started (>= 2023.0.0-25397), intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing-2023.0.0 , intel-oneapi-dev-utilities-2021.8.0 +Filename: pool/main/intel-iotkit-runtime-2023.0.0-2023.0.0-25397_amd64.deb +Size: 1792 +MD5sum: 5b19ebdc40a38556cf6426247d40120c +SHA1: e7f75bfb343c40071e9a4d1848afc411ca8af229 +SHA256: f18fff9ed641935ca2e977caca628066132ea8db25c0c2720706af15664066a2 +SHA512: 4fe5f84afc827ba6b852e47ef59a7abd87b2115ccaeb7c2998c20c82cb6faa85950fbb51f6f0100e00eccaf18e48dada0e9147e0e6922a93928e5d94aa1c07b7 +Description: Intel® oneAPI IoT Toolkit + + +Package: intel-iotkit-runtime +Architecture: amd64 +Version: 2023.0.0-25397 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit (>= 2023.0.0), intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing (>= 2023.0.0-25325), intel-oneapi-dev-utilities (>= 2021.8.0-25328) +Filename: pool/main/intel-iotkit-runtime-2023.0.0-25397_amd64.deb +Size: 1780 +MD5sum: d3124835a42e758d19379ed7f1daa4d2 +SHA1: 2114aa426c1a94531992756c5adb5d19e014bb5c +SHA256: e528cdccf59da00ab9ba60467d41e2eb6d65da9fca8804ae3e5231338d25abdc +SHA512: f91754693225cd9fc34eddb6a324e7d940a8c2e7cdc5ff6fbe59e5e28d776c4f76c09cdeb6fb3aaddf35c3917a7e43a48f212355225e3886be8e1057ddedee97 +Description: Intel® oneAPI IoT Toolkit + + +Package: intel-iotkit-runtime-2023.1.0 +Architecture: amd64 +Version: 2023.1.0-46344 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit-runtime-2023.1.0, intel-iotkit-getting-started (>= 2023.1.0-46344), intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing-2023.1.0 , intel-oneapi-dev-utilities-2021.9.0 +Filename: pool/main/intel-iotkit-runtime-2023.1.0-2023.1.0-46344_amd64.deb +Size: 1796 +MD5sum: 81ea4d937f96891d612fb264197451e6 +SHA1: 49df936ec89180c18a051b34b424f90049b8e0c2 +SHA256: 929bc8c84a7d5f50b6391664da0702ee2e77968e62af310cb8a27669b832415a +SHA512: bc4caf500f9ea44b07f7a7768b52413796020320cf972cf7d7cdf1ec93100e4634601889a52ca08adc18e6d6488fe94cb3b0640438d21dfe4e9938015df2995e +Description: Intel® oneAPI IoT Toolkit + + +Package: intel-iotkit-runtime +Architecture: amd64 +Version: 2023.1.0-46344 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit (>= 2023.1.0), intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing (>= 2023.1.0-43473), intel-oneapi-dev-utilities (>= 2021.9.0-44447) +Filename: pool/main/intel-iotkit-runtime-2023.1.0-46344_amd64.deb +Size: 1780 +MD5sum: 8433e2339a0a27d959b92d9351007b13 +SHA1: 7a9109f6d381d1831c379a2ae35670d5cd4bf9c0 +SHA256: 2dfa34e0a6065d08def4ad8622dfc211142f1122412c353b00fb2dd80114fca1 +SHA512: 3f7277ec8291083599eb4a28a667749d7529643c2c1fa2b7363a76057a5dac546a04ca6dee3d75d6be211bf2ac1f48a0a66609e3d3de3215dfbca48d0ab0191b +Description: Intel® oneAPI IoT Toolkit + + +Package: intel-oneapi-advisor +Architecture: amd64 +Version: 2021.1.1-43 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 936449 +Depends: intel-oneapi-common-vars (>= 2021.1.1-60), intel-oneapi-common-licensing-2021.1.1,intel-oneapi-common-vars,intel-oneapi-common-licensing +Filename: pool/main/intel-oneapi-advisor-2021.1.1-43_amd64.deb +Size: 205871092 +MD5sum: 8f1de235b334d45c994a0ce9848e126e +SHA1: 97c31e4f6e2b518d0008a441504e14a8bd78d401 +SHA256: 4b0188b128097c0f94e390c1f6131fc6768fefb125b1c9e148208462faf25676 +SHA512: 763047201b26e65e838baee90f675bd77c3ff3bcfe642d2d1e3a3e850366c009ad6d246615e5eafcb2b6d1a2dc2854e682e09509f403685224072321301c5dc9 +Description: Intel® Advisor + + +Package: intel-oneapi-advisor +Architecture: amd64 +Version: 2021.2.0-189 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 988612 +Depends: intel-oneapi-common-vars (>= 2021.2.0-195), intel-oneapi-common-licensing-2021.2.0 +Filename: pool/main/intel-oneapi-advisor-2021.2.0-189_amd64.deb +Size: 219928386 +MD5sum: d5bd73c558e280dae48328182fad6ff5 +SHA1: d4cce317eb3047fa6d954e541ba247ad1662e6aa +SHA256: 90750c5793e7b2eaebceb6f5b3dff4668ed1f694b0a962d7339a94c49dd90e21 +SHA512: c308e353fc2e5e35e996f3530cf4e8a5ed1157c493a838909162b2ce52c429d2436e22166c5a7dcbae8376ff57ba09d5dc9ede5c42ce02105d5292062f270ac2 +Description: Intel® Advisor + + +Package: intel-oneapi-advisor +Architecture: amd64 +Version: 2021.3.0-290 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 972843 +Depends: intel-oneapi-common-vars (>= 2021.3.0-261), intel-oneapi-common-licensing-2021.3.0 +Filename: pool/main/intel-oneapi-advisor-2021.3.0-290_amd64.deb +Size: 217087770 +MD5sum: b74ea80549f02f8072ebc164659d9a1a +SHA1: b9e7e3a9c99339106cd045317c2720531e094c50 +SHA256: b6585e1b2ef8e6473a8a8aa6a36c6fab484a539d0ff408f325b5b81c3adfa105 +SHA512: 073476d0129c50632a2a9becbad71b4910aa2592e2e2dd2d9e70b6b23696f497592725977145543197f859d911d5cb41463a267220d6d5188418863e2ad0319d +Description: Intel® Advisor + + +Package: intel-oneapi-advisor +Architecture: amd64 +Version: 2021.4.0-389 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 975352 +Depends: intel-oneapi-common-vars (>= 2021.4.0-327), intel-oneapi-common-licensing-2021.4.0 +Filename: pool/main/intel-oneapi-advisor-2021.4.0-389_amd64.deb +Size: 217672450 +MD5sum: 23ae13060376540dd3fe20b2f27b04f7 +SHA1: 19d2dc7f1f8e2282c5d81a4ba25d467bf27f7cee +SHA256: cd25561a2e50468761d796d9bc974a073b32fbb6f3fcb61c7bcc1f94dded5fa1 +SHA512: dea1ae5267292cd8e809fe274f7af0d00eac3015637b3ab681a3292b52ab4e44aa954219e7e9f0a26d31757451637d252d651ea6c500803ab95a0945d7175017 +Description: Intel® Advisor + + +Package: intel-oneapi-advisor +Architecture: amd64 +Version: 2022.0.0-92 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 979415 +Depends: intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-advisor-2022.0.0-92_amd64.deb +Size: 218808432 +MD5sum: 08a6c2d6266528096b728971ba7dd075 +SHA1: 92d53272f1f6f99df25ccf2144fe5c127950a0fe +SHA256: c561b2470a2cbcbe940904db7fbab80d627f20e6b966091a1dcc4c1ede64c581 +SHA512: 1954d4eae5f495e634557aa32592d3576bdcb75fad5db9aac21375eae4239f528e62f3ed94154abbad753375b1e724e7d6a2fc2d7e4f92be6407b8fd88920009 +Description: Intel® Advisor + + +Package: intel-oneapi-advisor +Architecture: amd64 +Version: 2022.1.0-171 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 991327 +Depends: intel-oneapi-common-vars (>= 2022.1.0-161), intel-oneapi-common-licensing-2022.1.0 +Filename: pool/main/intel-oneapi-advisor-2022.1.0-171_amd64.deb +Size: 222701310 +MD5sum: a55ba6a0d5580132a5311877d5009268 +SHA1: 2a9384e80719b237b7ce05ea255251db2367ef3b +SHA256: 09484eeef06a05d8d7a8a17e29d9e21fd13c62a71ff513f883f0b271bfc786bd +SHA512: 9940836686b98328454a9c44c5153b14b4e3fb306f29332a006b7ef2db474890028798472cbd245488e80b64c0aa22e6b3d8cc0f5e6e2e10fe34490ca06d75b9 +Description: Intel® Advisor + + +Package: intel-oneapi-advisor +Architecture: amd64 +Version: 2022.3.0-8704 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1006207 +Depends: intel-oneapi-common-vars (>= 2022.2.0-8694), intel-oneapi-common-licensing-2022.2.0 +Filename: pool/main/intel-oneapi-advisor-2022.3.0-8704_amd64.deb +Size: 226837570 +MD5sum: 1d57f190949d585bd13e34e8588e8a41 +SHA1: 533bd0a57951509dedf1532a1b967c7c2dc9e31d +SHA256: a6eb1177fdbebea1879ea8a48e195b504f675ec93d69f0a8c987e0a0cb1aaa6b +SHA512: 26e5ea6038f9d9ba33c83bab76a15cae3d9565a3707c931f936e9ecfbefe44b17815a31988118f15b339549202fb3fd3df74170d9ce42b1fd24f7785837f1040 +Description: Intel® Advisor + + +Package: intel-oneapi-advisor +Architecture: amd64 +Version: 2022.3.1-15323 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1008475 +Depends: intel-oneapi-common-vars (>= 2022.2.1-14969), intel-oneapi-common-licensing-2022.2.1 +Filename: pool/main/intel-oneapi-advisor-2022.3.1-15323_amd64.deb +Size: 227812510 +MD5sum: b54cbcb56e7ce373c5747f032f66f774 +SHA1: 753b1aab9b72d5de3722673ec59f0a5626b24fc7 +SHA256: 53bfe300f34e7f1a645e1688e30d93c51ae08f4e88df18714f83730b58b1fce1 +SHA512: 88c8db39fcc37bf9b44365352d52da3dfd88d4df7eb94b38332cea80456816d4ab4b459fc229bf046b396c6b5032b284d0799b0b4f94be1bbdee92c0c3da62a8 +Description: Intel® Advisor + + +Package: intel-oneapi-advisor +Architecture: amd64 +Version: 2023.0.0-25338 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 998103 +Depends: intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing-2023.0.0 +Filename: pool/main/intel-oneapi-advisor-2023.0.0-25338_amd64.deb +Size: 226807778 +MD5sum: 9b5598f4c2485a1e9566a547e7f50e5e +SHA1: 7c6b9c86711bec8eb2e24c3494d648c68c91716b +SHA256: e54ca225269f3b9ef37bc721908203062b6878a4421948e2294980e2f6867c2a +SHA512: aab22ad577a0a0062fd99c23d9f611263cabf20e3855960176f44e9315d14413526b48a5ec9c953eb0e57f25df0c1e94d7c32b485044485852577a4cd07fd211 +Description: Intel® Advisor + + +Package: intel-oneapi-advisor +Architecture: amd64 +Version: 2023.1.0-43480 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 997519 +Depends: intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing-2023.1.0 +Filename: pool/main/intel-oneapi-advisor-2023.1.0-43480_amd64.deb +Size: 227110626 +MD5sum: 531b96c137071fa72675506e3e6be4fb +SHA1: 9e9b2a411057b70684582abf4bbb37e03061fa26 +SHA256: 06c3115ee1dd01fb68b623ad2ed624b56ba5a6762cd315758150d00037c3018a +SHA512: 765ab5ee3407d89059de0631f063a8f4bb5be48959a378731914d9314e0606b586336a12eb99de6c98bcf5ecfe3fa9c333231409ca9fe109812ac982ceefc172 +Description: Intel® Advisor + + +Package: intel-oneapi-ccl-2021.1.1 +Architecture: amd64 +Version: 2021.1.1-54 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 9295 +Depends: intel-oneapi-mpi,intel-oneapi-common-vars,intel-oneapi-common-licensing,intel-oneapi-common-vars,intel-oneapi-common-licensing +Filename: pool/main/intel-oneapi-ccl-2021.1.1-2021.1.1-54_amd64.deb +Size: 1679832 +MD5sum: 8cae183761a32ab95300432b215282a9 +SHA1: 80dbd43689e4a7f195626ade5402e87898373990 +SHA256: 9864dca292807cd0b8f55db6888d1a4e19ed2e71197320122cb3eec77ccb66f3 +SHA512: 615052ae423ba33fed7486601f2ee0625e0828b5f162bfcc85fdd1b75e2a4eab027352234fbc93896d99d04ad614b43ca7e6fa2c2dfeb9f0ea3324360e36e127 +Description: Intel® oneAPI Collective Communications Library Runtime Environment + + +Package: intel-oneapi-ccl +Architecture: amd64 +Version: 2021.1.1-54 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ccl-2021.1.1 +Filename: pool/main/intel-oneapi-ccl-2021.1.1-54_amd64.deb +Size: 1660 +MD5sum: f1e3a2b40beef2d9d7bbe154563bd998 +SHA1: c03b792cbf3a40e83098a12bddc79d8f214e5b84 +SHA256: 03af3bedf87232707742c7246fd1c60363ab4a594402a98298665fc97bd470a6 +SHA512: 3b1520fad43ae642e7faca27a2b8979324835c45b6ef49d7d047516f19a18a50b34332d79209badf52e4e4915cd2ebf125b61d156f98b1a47036d719cacb996e +Description: Intel® oneAPI Collective Communications Library Runtime Environment + + +Package: intel-oneapi-ccl-2021.2.0 +Architecture: amd64 +Version: 2021.2.0-269 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 62627 +Depends: intel-oneapi-mpi-devel-2021.2.0, intel-oneapi-common-vars (>= 2021.2.0-195), intel-oneapi-common-licensing-2021.2.0 +Filename: pool/main/intel-oneapi-ccl-2021.2.0-2021.2.0-269_amd64.deb +Size: 6757642 +MD5sum: d5ab61d5e9f58463c1b85d24ff113ab0 +SHA1: ee68be88151119bc5d160cda5477634647d9829b +SHA256: fee93a213eee38ab76d483519886b20b5e2b88b62358406f9be741b6506486ed +SHA512: 0f641354ebeafea96dca282cbca264f88d74d24b4c92bf78d91946913da314068282ef1a2a88dcf90797f1ba26adc15d258b142c23588cba12c985019038d9a1 +Description: Intel® oneAPI Collective Communications Library Runtime Environment + + +Package: intel-oneapi-ccl +Architecture: amd64 +Version: 2021.2.0-269 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ccl-2021.2.0 +Filename: pool/main/intel-oneapi-ccl-2021.2.0-269_amd64.deb +Size: 1664 +MD5sum: 4c51b418b352412339bd35a0330ebe44 +SHA1: 5e9a31eba50053ddf187459924e19ef992035ce2 +SHA256: fc3c440cd26869e628dc5a3c325045a7984a230dfec4185966485a2a3f409eb7 +SHA512: b0fe7415856379c80acbb1ec848364d9f0830654a00db22657abd131012f11dc4bf73cb5382bfc53d201600eed8222d7b0fdd84590f6df319c1bb56bdaffb964 +Description: Intel® oneAPI Collective Communications Library Runtime Environment + + +Package: intel-oneapi-ccl-2021.3.0 +Architecture: amd64 +Version: 2021.3.0-343 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 20790 +Depends: intel-oneapi-mpi-devel-2021.3.0, intel-oneapi-common-vars (>= 2021.3.0-261), intel-oneapi-common-licensing-2021.3.0 +Filename: pool/main/intel-oneapi-ccl-2021.3.0-2021.3.0-343_amd64.deb +Size: 3427878 +MD5sum: 3d97947bafff3c211361330805c047e0 +SHA1: 0fef9b1aade9cc004591809f32c625a027b835ed +SHA256: 4a720ca8a7023ebf4c8d16ab24feff68ab1114ea7281c9df3d768f951cef987b +SHA512: 4bf0b894a12bda3e08e7b947f3455882a4071c19239fbe6601cf122ce5ec174d44fc3be83a4b135cceaa165de83ca71f945e5614b210d35b601b14736beb42fb +Description: Intel® oneAPI Collective Communications Library Runtime Environment + + +Package: intel-oneapi-ccl +Architecture: amd64 +Version: 2021.3.0-343 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ccl-2021.3.0 +Filename: pool/main/intel-oneapi-ccl-2021.3.0-343_amd64.deb +Size: 1664 +MD5sum: 0b5b714ae5167355a16e73d9da22828d +SHA1: 4a35ccd659ae46a3bc25c274c59a9477a5b2f7aa +SHA256: e7634ac2c3135fe464c9ae526e2b4793aa0e58033dfae6d5d66c386043f095c8 +SHA512: debda2bafcb0784491261141124183fb7ef3fafb26ca27320a53de13fef438b376e92986c628e0a91f43a4df852680bac44b7788405194ccad4a9afa469d61c6 +Description: Intel® oneAPI Collective Communications Library Runtime Environment + + +Package: intel-oneapi-ccl-2021.4.0 +Architecture: amd64 +Version: 2021.4.0-433 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 14068 +Depends: intel-oneapi-mpi-devel-2021.4.0, intel-oneapi-common-vars (>= 2021.4.0-327), intel-oneapi-common-licensing-2021.4.0 +Filename: pool/main/intel-oneapi-ccl-2021.4.0-2021.4.0-433_amd64.deb +Size: 2741004 +MD5sum: 45e33d80a67253ca47736870eb63d0b5 +SHA1: e7e447581338065141c82639a9cac75be986becd +SHA256: 85782320ad01759f089521de219cf6dab4223d91a5d9451a47e04f06a08a3573 +SHA512: 52113ddb20015fdbdf68fcbf5e4b04395ce57972b7ff549715bdafd05d2c9a7c751b2a0e9243103fd5d84b2209d0a9f1e25440270b78f8a1dbd181ddea8f230c +Description: Intel® oneAPI Collective Communications Library Runtime Environment + + +Package: intel-oneapi-ccl +Architecture: amd64 +Version: 2021.4.0-433 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ccl-2021.4.0 +Filename: pool/main/intel-oneapi-ccl-2021.4.0-433_amd64.deb +Size: 1664 +MD5sum: 5be2ea0f7c918d3b50a13c5f11b1ab00 +SHA1: e815e6c30840003f3e42a85e77909626d27fdbc9 +SHA256: 2ff871d1626646e8f7746b5a60fb76bb40ad22435edb089e7a4daaeac44b378a +SHA512: 970c4c9a6ca56598bcb8cf9091a4baa45cfe8fcbfe25f6a24cc911156339ade63dbaa60bd1e4d9482655e8259e3690965f50bc54a74d99cc528f6ccd99befed0 +Description: Intel® oneAPI Collective Communications Library Runtime Environment + + +Package: intel-oneapi-ccl-2021.5.0 +Architecture: amd64 +Version: 2021.5.0-478 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 9777 +Depends: intel-oneapi-mpi-devel-2021.5.0, intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-ccl-2021.5.0-2021.5.0-478_amd64.deb +Size: 2041786 +MD5sum: 45069de65677058c7b0395bdc84dc083 +SHA1: 292b0542735004c59dcb14e1211df09f01a22f51 +SHA256: 1cbbb94d923ba728b0a28ab6cbee4a6f0d3efdaeb372f5d4145c4235c43626a5 +SHA512: 2c7a15e72dfb430c0422558c63103b90263654f80ea2ab784e26e0c4ad81c6ddb51ffe7bfbafc05e4a7cc1565d4645202d766c9458afedee313633d09300770b +Description: Intel® oneAPI Collective Communications Library Runtime Environment + + +Package: intel-oneapi-ccl +Architecture: amd64 +Version: 2021.5.0-478 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ccl-2021.5.0 +Filename: pool/main/intel-oneapi-ccl-2021.5.0-478_amd64.deb +Size: 1664 +MD5sum: 1559fe1f095e60f68154b3b5806cb19e +SHA1: dffa1e85cc522ed9febdcf092dd3cc397405e48c +SHA256: 0bee56848e3133fd628f3843021a9d491fd45871fd5b244b7b889b7b929085b9 +SHA512: b227c49782713e31fcf807c4e14426c27966500e6e0ae37e9f2981e2fae09cbd4fd691b9fe17030d12671f35c8b41e943a6d851f3774846854fa32f825fe63c6 +Description: Intel® oneAPI Collective Communications Library Runtime Environment + + +Package: intel-oneapi-ccl-2021.5.1 +Architecture: amd64 +Version: 2021.5.1-494 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 9777 +Depends: intel-oneapi-mpi-devel-2021.5.1, intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-ccl-2021.5.1-2021.5.1-494_amd64.deb +Size: 2055792 +MD5sum: c9a115215a3405be32f08321410c817f +SHA1: a9e8aff03afaaf372d3a4402a5648642b1e2f073 +SHA256: c68b03cbe8f02603511c773125e18d73e48d8ad0c7cd7729d4e42f2691c46edc +SHA512: caad7d1af68a16c37ee4fd59435bc8fc2ca6186a1a9c7c3aa93271dd28f89d46c0df4d2c266cf456c61a0cea28e657d97135c4b5ee3fed388b559bbcb8f1289e +Description: Intel® oneAPI Collective Communications Library Runtime Environment + + +Package: intel-oneapi-ccl +Architecture: amd64 +Version: 2021.5.1-494 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ccl-2021.5.1 +Filename: pool/main/intel-oneapi-ccl-2021.5.1-494_amd64.deb +Size: 1662 +MD5sum: 75050b089133e77782249a68a1302977 +SHA1: bcd81cf3a9c485a340470b010c77d543dd0b5255 +SHA256: e48049e77c82d7fc863f9ab5626976a7afccbbab2d7c818c5738c3b46d27b30c +SHA512: fbf10f53a6eaff655ce6b5ef787ee4c9333bc4c726560c4c119ad26521e37e6265db9a2fb168392c234ce19a023686eff3e59c14ce6350fdcb3edae3aad221af +Description: Intel® oneAPI Collective Communications Library Runtime Environment + + +Package: intel-oneapi-ccl-2021.6.0 +Architecture: amd64 +Version: 2021.6.0-568 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 10680 +Depends: intel-oneapi-mpi-devel-2021.6.0, intel-oneapi-common-vars (>= 2022.1.0-161), intel-oneapi-common-licensing-2022.1.0 +Filename: pool/main/intel-oneapi-ccl-2021.6.0-2021.6.0-568_amd64.deb +Size: 2295532 +MD5sum: 951ae2aeb30b2119302c2101b8dafbd9 +SHA1: 35eeb52e806109eb84ad7221b7859958e94a5f92 +SHA256: d224c7026151c6d3c0830a9578b7ab904cc5c3c4ba1f491a26bbfacf58a7fa7a +SHA512: 3845dc86457fd3772ecc8dba5e530657b944793dd13164b682cfedb37636870b6a9aaa13312e0b0d22ee9578a61bf417fadef9bf0cb9b7434c1a13e3519d75d2 +Description: Intel® oneAPI Collective Communications Library Runtime Environment + + +Package: intel-oneapi-ccl +Architecture: amd64 +Version: 2021.6.0-568 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ccl-2021.6.0 +Filename: pool/main/intel-oneapi-ccl-2021.6.0-568_amd64.deb +Size: 1744 +MD5sum: 8261243e1c4ea8c28dd196dbbabc8f8b +SHA1: 981c42ea5788f56bfc8f2a9f09a0f0940e46ca25 +SHA256: a2598d6353a3afd45133fcacd5cfa283dd180a216163ee1711ce8335f6fedc36 +SHA512: 3b8e32554f69f0ae18b060b15ff83a1dbb4910b61b601243ffd8fd4caf5279ba38591de26a53b74b6a9ac4a71f8b1e7fd9c61eb7ea3ca5bda087001917468f6b +Description: Intel® oneAPI Collective Communications Library Runtime Environment + + +Package: intel-oneapi-ccl-2021.7.0 +Architecture: amd64 +Version: 2021.7.0-8733 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 10991 +Depends: intel-oneapi-mpi-devel-2021.7.0, intel-oneapi-common-vars (>= 2022.2.0-8694), intel-oneapi-common-licensing-2022.2.0 +Filename: pool/main/intel-oneapi-ccl-2021.7.0-2021.7.0-8733_amd64.deb +Size: 2246648 +MD5sum: 1ff90ecb2a16548ba6ee36fc378aefea +SHA1: fb60094b15f363ae9a794b000d3649fc6df04ed6 +SHA256: 2a993ffefddef93ff40af07bffc2003f4fc7e9b4d4aded51cfab2599a841c436 +SHA512: 950f46025c1f10cfdd3d5993206babfe5bb73b955d85e76961f52d4e9d3ec8b53f057afb838318a8af780c21ffa4eacd77d18b1098204440a4f8221de46cd523 +Description: Intel® oneAPI Collective Communications Library Runtime Environment + + +Package: intel-oneapi-ccl +Architecture: amd64 +Version: 2021.7.0-8733 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ccl-2021.7.0 +Filename: pool/main/intel-oneapi-ccl-2021.7.0-8733_amd64.deb +Size: 1744 +MD5sum: 3336081cd14f82db800208e2839b5132 +SHA1: eb682f327f92f820c28994043ff2c641e0caa8c7 +SHA256: 8d8b27f0123ea85351c5651afdceb324ac3352a324dbec15a04aa9261950dc28 +SHA512: 07b5fe3b4893d913124650123174129e9f029a242ab1e67af464f833ddad289bf10f0b4716216e5938314b306430e2b151c63b28abbba7a48828e16fa1021ada +Description: Intel® oneAPI Collective Communications Library Runtime Environment + + +Package: intel-oneapi-ccl +Architecture: amd64 +Version: 2021.7.1-16948 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ccl-2021.7.1 +Filename: pool/main/intel-oneapi-ccl-2021.7.1-16948_amd64.deb +Size: 1744 +MD5sum: 823627f25dc103c14a6d672a533e8b39 +SHA1: 9ff4f6f28ead28247432838f0beb8e476c47a6dc +SHA256: edd5d26d6feea987134eb80a1ffd6f9eb1ca5ad3b11825baae5518486e1e6f59 +SHA512: 1659e1b08113e65b57ba1f579305f1d0821b2e0978346e5ee6461214d217c78b6023f5c00cfe29274674be5be70163289202916c9ebeee9ba0b3bd4cef943c17 +Description: Intel® oneAPI Collective Communications Library Runtime Environment + + +Package: intel-oneapi-ccl-2021.7.1 +Architecture: amd64 +Version: 2021.7.1-16948 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 10991 +Depends: intel-oneapi-mpi-devel-2021.7.1, intel-oneapi-common-vars (>= 2022.2.1-14969), intel-oneapi-common-licensing-2022.2.1 +Filename: pool/main/intel-oneapi-ccl-2021.7.1-2021.7.1-16948_amd64.deb +Size: 2246980 +MD5sum: 1453a9ecc4d9a8d7392e38965492ccff +SHA1: 996200bd5492cda1c3bf4e39fb35cd6bdb6ac356 +SHA256: b3e937879576e7113d3cd7fac19af1f6cfca2caaa54422b713404805530f8811 +SHA512: 99b97acea7a37ac2b1bea71f53a40e24abc9ee50694a8929e24b7433fca37aba42a2eb6ec499088f0428dc66e143959850b167039e6560604c877ab897db37f4 +Description: Intel® oneAPI Collective Communications Library Runtime Environment + + +Package: intel-oneapi-ccl-2021.8.0 +Architecture: amd64 +Version: 2021.8.0-25371 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 13017 +Depends: intel-oneapi-mpi-devel-2021.8.0, intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing-2023.0.0 +Filename: pool/main/intel-oneapi-ccl-2021.8.0-2021.8.0-25371_amd64.deb +Size: 2521220 +MD5sum: 999a1241aa5eb8059df91f0cfd49db7c +SHA1: d86ed1486972c4ca90b4d9a0ed98457aace3d4d1 +SHA256: a4a022ceb878f12d42f96d53819869eab3c76ea3e142bf444c2e82cf9fcf0df0 +SHA512: eb07d04899af2b78878b8a6390dd5d49662ea9cbeb3134c299b07f8de2e80abe487c51add866f20b0f1dff98fe7323e2f227b841a5479305ca873799bd96c13e +Description: Intel® oneAPI Collective Communications Library Runtime Environment + + +Package: intel-oneapi-ccl +Architecture: amd64 +Version: 2021.8.0-25371 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ccl-2021.8.0 +Filename: pool/main/intel-oneapi-ccl-2021.8.0-25371_amd64.deb +Size: 1744 +MD5sum: 2388d4f05051b9182eda7747fdbc5e1c +SHA1: eb556079f84040661a5fb802cac3aa53f1c2b841 +SHA256: f23c6443da4b9ffab89a03dcd4aa664bc13f53f53244a656ec27f6fb12731aba +SHA512: 7c944cdae7ed17b5ff5fab489aa3854804c91af7f97f1d2a639d0dee54a550f22437b096f3c50b5660fcf950ad2df1249f261114c3b08c9e13f8bff446b0868f +Description: Intel® oneAPI Collective Communications Library Runtime Environment + + +Package: intel-oneapi-ccl-2021.9.0 +Architecture: amd64 +Version: 2021.9.0-43543 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 13886 +Depends: intel-oneapi-mpi-devel-2021.9.0, intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing-2023.1.0 +Filename: pool/main/intel-oneapi-ccl-2021.9.0-2021.9.0-43543_amd64.deb +Size: 2559468 +MD5sum: 05fd15c95ff7aab1d61e91ce10b8e745 +SHA1: 9b80db413ead0642e0ddca57bc5e506cc1a2b61a +SHA256: 153807818d0f67bf351acdcb30520e34d3b21e57d2feecb35bbffce741b220ab +SHA512: f10d3b973cfc32031b1a7bda2d60d7a424c5d8dfedea09eb6110d589d42dcd51747718164fe4bf8de2aba32cddeb934a6caee6382a7daa253ef6c420abe0af7e +Description: Intel® oneAPI Collective Communications Library Runtime Environment + + +Package: intel-oneapi-ccl +Architecture: amd64 +Version: 2021.9.0-43543 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ccl-2021.9.0 +Filename: pool/main/intel-oneapi-ccl-2021.9.0-43543_amd64.deb +Size: 1748 +MD5sum: 77f961a158e1e50c1a17c398b8753aad +SHA1: d1234907bf68179ba3803ba6ef34323a9a1c95b8 +SHA256: 76b70cd6bc6648219147a18d1935aab17ae1b5066ee0b2a77df07ddabb78c1ca +SHA512: bfa100355ae76e2f010215378da1f64e89aefa6dae3590dde494661d916d1919026e8b5660b5b4f5121f7adbf898347c358183b7cb2cc45162f849ec77012c53 +Description: Intel® oneAPI Collective Communications Library Runtime Environment + + +Package: intel-oneapi-ccl-devel-2021.1.1 +Architecture: amd64 +Version: 2021.1.1-54 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 24596 +Depends: intel-oneapi-ccl-2021.1.1, intel-oneapi-mpi-devel,intel-oneapi-common-vars,intel-oneapi-common-licensing,intel-oneapi-common-vars,intel-oneapi-common-licensing +Filename: pool/main/intel-oneapi-ccl-devel-2021.1.1-2021.1.1-54_amd64.deb +Size: 1733692 +MD5sum: 6a6e3872ea02e2a4e7edf8de0517b573 +SHA1: 8ac50fe775aa97f815aa18ad3155f131b2d693c4 +SHA256: a130a420f731509db61e7ca1dffce90d4b150e13a54cece489e725e2d45c160e +SHA512: 0f82959e3238389dc9f3a70dbe39de706a409ad33974cbd30c9b7aacd13b8aafd34806bd0eee4e44f2fb3b558ec1688562524043ae3940e50cd84e113b940b65 +Description: Intel® oneAPI Collective Communications Library + + +Package: intel-oneapi-ccl-devel +Architecture: amd64 +Version: 2021.1.1-54 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ccl-devel-2021.1.1 +Filename: pool/main/intel-oneapi-ccl-devel-2021.1.1-54_amd64.deb +Size: 1652 +MD5sum: 83b43201329f030c9e04162077a24adc +SHA1: 72cd7db6da22424e89db389ef83b961363b8905e +SHA256: 3719de49a905dea5673c1be0f3acfbc3e683e471470c2f639a7a845a0c13dfe3 +SHA512: aea04da411b6e81581ead82bf9c497b2c8948dbb44b9e8e49b22f2a5f4be37c67bcc917326c01055a015f1503f836087a99602d78fc5cc2566eff66c4da55e7f +Description: Intel® oneAPI Collective Communications Library + + +Package: intel-oneapi-ccl-devel-2021.2.0 +Architecture: amd64 +Version: 2021.2.0-269 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 133313 +Depends: intel-oneapi-ccl-2021.2.0, intel-oneapi-mpi-devel-2021.2.0, intel-oneapi-common-vars (>= 2021.2.0-195), intel-oneapi-common-licensing-2021.2.0 +Filename: pool/main/intel-oneapi-ccl-devel-2021.2.0-2021.2.0-269_amd64.deb +Size: 4175012 +MD5sum: ce10ce8116568623b82771e00ca91caf +SHA1: 4984848d689b2cdcd4a12495bd8834dfe34b7ea9 +SHA256: 82ef214a0fd0596261e48eca9375cd947c46c7b838b2add1074b979dd0ba2b0c +SHA512: 8595df03912d6c97867400b8058cf7f72c192cbc15a45dcff556f1a3fee29707cbf94605f20dc507f06f882c909a54b7d42d234cd02f46bcc6af71f196d7b4fc +Description: Intel® oneAPI Collective Communications Library + + +Package: intel-oneapi-ccl-devel +Architecture: amd64 +Version: 2021.2.0-269 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ccl-devel-2021.2.0 +Filename: pool/main/intel-oneapi-ccl-devel-2021.2.0-269_amd64.deb +Size: 1654 +MD5sum: 233ef2fa52cc689bce8ae9a789072efe +SHA1: 0ea495688084d8d1e4e91801892d94de386f5179 +SHA256: 97c6a693f81445ed95162d5a6236e2f0bd1fbaf406d86bbad7b416eca7fb67e3 +SHA512: a5012ff3c5712d26cdf16160b8c36c062704828448c00c3bb94b36b35ba402c427a506b0892c7a077e095e8ab96c39ab77f5e1b8c2f5ed347491cd73e25264f1 +Description: Intel® oneAPI Collective Communications Library + + +Package: intel-oneapi-ccl-devel-2021.3.0 +Architecture: amd64 +Version: 2021.3.0-343 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 53095 +Depends: intel-oneapi-ccl-2021.3.0, intel-oneapi-mpi-devel-2021.3.0, intel-oneapi-common-vars (>= 2021.3.0-261), intel-oneapi-common-licensing-2021.3.0 +Filename: pool/main/intel-oneapi-ccl-devel-2021.3.0-2021.3.0-343_amd64.deb +Size: 3224752 +MD5sum: 9d4e6cea21c756df969656401858219c +SHA1: 4a1245c6b3991ec6dfc5297fb9742f237cb5ca2f +SHA256: 45ec08535621fac54acf76242a40d325c920305d009070d0e697e5f7a5e27bb2 +SHA512: edae300f4e4485926c6912437c5066aa7e8ada861986a669b3355db3805cb025335d6067032a314b27228cb02ac33b35b3be8c9180b955e53cee15178d49eee6 +Description: Intel® oneAPI Collective Communications Library + + +Package: intel-oneapi-ccl-devel +Architecture: amd64 +Version: 2021.3.0-343 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ccl-devel-2021.3.0 +Filename: pool/main/intel-oneapi-ccl-devel-2021.3.0-343_amd64.deb +Size: 1654 +MD5sum: e966d9d8c8a318c8e70b92cf499cd612 +SHA1: ae47ec63dcada15de8ce3040f3b55ab9983071a9 +SHA256: 343733d5d522f73c5b638c3fe48ec591bb91f9229dfca9bd070f17166b7597e4 +SHA512: 36e03db24743d8e8590d7b27a7a083049d885ac16579e1dfd4808e08ad9da9ae53b2ba983c2bd3ded142b46dfc8737c22d83e792eb5fb34a125f96c7fa5fa84b +Description: Intel® oneAPI Collective Communications Library + + +Package: intel-oneapi-ccl-devel-2021.4.0 +Architecture: amd64 +Version: 2021.4.0-433 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 33707 +Depends: intel-oneapi-ccl-2021.4.0, intel-oneapi-mpi-devel-2021.4.0, intel-oneapi-common-vars (>= 2021.4.0-327), intel-oneapi-common-licensing-2021.4.0 +Filename: pool/main/intel-oneapi-ccl-devel-2021.4.0-2021.4.0-433_amd64.deb +Size: 2803248 +MD5sum: bb6c8fa5b4731d4e8ecfac0b2b1f5e2f +SHA1: 2aa8e8eb60b081e10dd3383e01e615df4cc2d8b5 +SHA256: 053b6b99041b0befb131eb95b989c1ee6d2cea0a53d0581f93acf8a435edd63b +SHA512: 020ab58d306cef655507c7a8b39a41dbe201ee3b8a41db4dfb0a2528793a8598c9fca954b2e3893ccdafcacc0488033559d4627c5b3d1d9e9c890ebb36f6f325 +Description: Intel® oneAPI Collective Communications Library + + +Package: intel-oneapi-ccl-devel +Architecture: amd64 +Version: 2021.4.0-433 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ccl-devel-2021.4.0 +Filename: pool/main/intel-oneapi-ccl-devel-2021.4.0-433_amd64.deb +Size: 1652 +MD5sum: ffa989daf2713dd5f71a156f144b9b52 +SHA1: a8024a10ae2b76c2e1a947a4c8537caaf5e3bb7e +SHA256: 1319c72801e5e74f75beeb087b27c2b82a69e0f210f6bd7c54bfb41626d2bf5d +SHA512: b9a8f78b1a5745c6fc91622788c7e68788171245c63afd10162ac5dd6e659a213fd58bc0cf1e73a85dcb9e24ed6c7b453350e7e71ebeaf0c463c805e01504abb +Description: Intel® oneAPI Collective Communications Library + + +Package: intel-oneapi-ccl-devel-2021.5.0 +Architecture: amd64 +Version: 2021.5.0-478 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 23234 +Depends: intel-oneapi-ccl-2021.5.0, intel-oneapi-mpi-devel-2021.5.0, intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-ccl-devel-2021.5.0-2021.5.0-478_amd64.deb +Size: 2222548 +MD5sum: 38b2b97f1d27012e11b42825d3df33c6 +SHA1: 7cfe91cd18af35fba537903c9b90df04257893ab +SHA256: 8d71e7a1ab38c4822b198d0bdf4a4c43ffa6b259b576053ac980f20af5adbeb1 +SHA512: f412cd4d9d87acf85b0cfe1a2a6b73db50c07bd50208cca8ddfc0bcd0ec5776c1659f8f12699dbf05ad34e26a2331b8117b2789bfd23c712ca00bf0bc6793901 +Description: Intel® oneAPI Collective Communications Library + + +Package: intel-oneapi-ccl-devel +Architecture: amd64 +Version: 2021.5.0-478 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ccl-devel-2021.5.0 +Filename: pool/main/intel-oneapi-ccl-devel-2021.5.0-478_amd64.deb +Size: 1652 +MD5sum: 62505482663a43300e10052e1478a268 +SHA1: 88f501225df27de016cb8451f0180a6d4a21956c +SHA256: e8cbf172af345f39545f7cf12a5a31a386d65cae49795d6340382c14d2af930e +SHA512: 2fc921edfe84f2640ee369a280f77dab0b2c3d6c2c7765e146c4e49c8573f2b4acbd100a23d7c067baa76d4cf359e752765fa4e5d0772c49b288d892d9473e0a +Description: Intel® oneAPI Collective Communications Library + + +Package: intel-oneapi-ccl-devel-2021.5.1 +Architecture: amd64 +Version: 2021.5.1-494 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 23234 +Depends: intel-oneapi-ccl-2021.5.1, intel-oneapi-mpi-devel-2021.5.1, intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-ccl-devel-2021.5.1-2021.5.1-494_amd64.deb +Size: 2220790 +MD5sum: c9b21d4e85b89ddc9d908701f0fe5c4d +SHA1: 165a8f0c9224936c8f21f2a06251b1cf7613adf8 +SHA256: 2bf53e14d04d775af1d3db3f39cfbdf0a37634fda316ae4a3169d07dc99f0485 +SHA512: 9c697c84a74996bfb7e99c3d24d03111a3aecd22c1c1c58e77760268812b415edca5bbaa09a220ff0f2027bbe81f47e10b6b560f65f5903025cd5abdbc3507c9 +Description: Intel® oneAPI Collective Communications Library + + +Package: intel-oneapi-ccl-devel +Architecture: amd64 +Version: 2021.5.1-494 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ccl-devel-2021.5.1 +Filename: pool/main/intel-oneapi-ccl-devel-2021.5.1-494_amd64.deb +Size: 1654 +MD5sum: 0b8dd02430f9f25771bbc3c8e76eefad +SHA1: 671d4f354b30d55890496ad336894de53f3a1a87 +SHA256: 540601087de538e0af631032effdfcabf964a03c2f49aadc38300e23a7d8fe09 +SHA512: d9267b0c86f31cf5b3b256ccd8adb812a2cb98f785ffb7a12959801de5aa7ea69c7fccb48a676301667dbab798898231345f349a3ff17bdca8dad48a6ec30b9b +Description: Intel® oneAPI Collective Communications Library + + +Package: intel-oneapi-ccl-devel-2021.6.0 +Architecture: amd64 +Version: 2021.6.0-568 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 25603 +Depends: intel-oneapi-ccl-2021.6.0, intel-oneapi-mpi-devel-2021.6.0, intel-oneapi-common-vars (>= 2022.1.0-161), intel-oneapi-common-licensing-2022.1.0 +Filename: pool/main/intel-oneapi-ccl-devel-2021.6.0-2021.6.0-568_amd64.deb +Size: 2419668 +MD5sum: 7cfdf5498081dff8453d828efcb5f263 +SHA1: 306dbe7405ea3c7d86703685a123c36f02a75229 +SHA256: eaa5d539f514453bb1ca12cdb33edebbda0ce7057f05b61b030c682ca28f51bf +SHA512: 62dd373874a977d1b4a20109a6d292e9d00764623e0b3ac7e980c31179a56d52af81c1a83232fcd5f86bcf35b7a975ebfdb60b9e192c7b6b3bbde637b27f2c90 +Description: Intel® oneAPI Collective Communications Library + + +Package: intel-oneapi-ccl-devel +Architecture: amd64 +Version: 2021.6.0-568 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ccl-devel-2021.6.0 +Filename: pool/main/intel-oneapi-ccl-devel-2021.6.0-568_amd64.deb +Size: 1736 +MD5sum: add98f2d0559515704bbf4247dbe5921 +SHA1: f0a78b764a6ed357544d16fc4d2850849c5a1d48 +SHA256: 4c6cc6a8675a8bcda3bdf1b463d6c69c175c6b2b1f5383e2085475bfa6feee94 +SHA512: 3f73b69339ad4fd8b5f63a8f4ff82b2f45bdb3b9e2f6f93904b7cf3d21f98b42f2eca37b7cf12ed0f6293a3a8fa92d4afb7b540dc1328783692650a49af46b1f +Description: Intel® oneAPI Collective Communications Library + + +Package: intel-oneapi-ccl-devel-2021.7.0 +Architecture: amd64 +Version: 2021.7.0-8733 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 27543 +Depends: intel-oneapi-ccl-2021.7.0, intel-oneapi-mpi-devel-2021.7.0, intel-oneapi-common-vars (>= 2022.2.0-8694), intel-oneapi-common-licensing-2022.2.0 +Filename: pool/main/intel-oneapi-ccl-devel-2021.7.0-2021.7.0-8733_amd64.deb +Size: 2466916 +MD5sum: d6d349a243c1632ba71f4dc2feaa2009 +SHA1: e649897dd98a1fa212493bac0f782b0c37237c5c +SHA256: 9ee5a98537a65978484a93d8a63bf36b8a659c641f488d5e4c65e12d3381b380 +SHA512: 7f0f392567090dc0e52c4e5b801cd80a8725e705e874567e8e5b1e76700b36948d842ed07b024468f47c06c48d9ddf6c76f149235d612fdbcb8f6177fed09e7a +Description: Intel® oneAPI Collective Communications Library + + +Package: intel-oneapi-ccl-devel +Architecture: amd64 +Version: 2021.7.0-8733 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ccl-devel-2021.7.0 +Filename: pool/main/intel-oneapi-ccl-devel-2021.7.0-8733_amd64.deb +Size: 1736 +MD5sum: d5c13194a7182dac73aff3d6b0e7137e +SHA1: 0cc63c716b9b09c43dbb7862ea0db9c716ccc3ad +SHA256: 0a099ed467d95747d3893766f8e82a4eb4897f504189d5eba2c0e472cfb8f578 +SHA512: 6929e345d64e57499469ca476c9c367696b35b4c693c9e4656cc0dc022cce7d43d07ce0fff2605afc3d8349c097920f43e3a412988513125c1aa82df12a6b7f9 +Description: Intel® oneAPI Collective Communications Library + + +Package: intel-oneapi-ccl-devel +Architecture: amd64 +Version: 2021.7.1-16948 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ccl-devel-2021.7.1 +Filename: pool/main/intel-oneapi-ccl-devel-2021.7.1-16948_amd64.deb +Size: 1736 +MD5sum: 00b7fdf0d28f2a6c09218d8a4bbcca40 +SHA1: a61bb82794b4af0fb98caab584b5ca31469c832f +SHA256: cc6f40593f82b7008f171298d74d6f9d4331e5598edbc3398ab3a7a4b77de8e4 +SHA512: a193e7de66fd39ec2a558df1f41107de844627f9c2c848549d8e70d27d6e39c2a169bfe6f9b66748cf4552eeec98cafa175568f045c561a19e7da31dacabe56c +Description: Intel® oneAPI Collective Communications Library + + +Package: intel-oneapi-ccl-devel-2021.7.1 +Architecture: amd64 +Version: 2021.7.1-16948 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 27543 +Depends: intel-oneapi-ccl-2021.7.1, intel-oneapi-mpi-devel-2021.7.1, intel-oneapi-common-vars (>= 2022.2.1-14969), intel-oneapi-common-licensing-2022.2.1 +Filename: pool/main/intel-oneapi-ccl-devel-2021.7.1-2021.7.1-16948_amd64.deb +Size: 2465252 +MD5sum: f2b912b08f0a53ed42b2231be5a1801d +SHA1: 773b2e7a6f124c6f4f05e4a0372381bbadd643eb +SHA256: a090fea0cdc911523abdfdbc4e9481ee643df22ac5f8b7ebd096f1a2b7d45010 +SHA512: 2aa88c94de83785f6c12b56a1f7006732c3d710a5eb9b8a5ce033de1ecfcfdd6f8da126746bf03737f6e547daccc5da1dcc6d0741202b49ee8b7c27528240bd9 +Description: Intel® oneAPI Collective Communications Library + + +Package: intel-oneapi-ccl-devel-2021.8.0 +Architecture: amd64 +Version: 2021.8.0-25371 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 31341 +Depends: intel-oneapi-ccl-2021.8.0, intel-oneapi-mpi-devel-2021.8.0, intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing-2023.0.0 +Filename: pool/main/intel-oneapi-ccl-devel-2021.8.0-2021.8.0-25371_amd64.deb +Size: 2706708 +MD5sum: b89efa10d3587fc4c1468ef5c490a404 +SHA1: 2222d5856857b0c1cef6d52f146ba08d23698a4d +SHA256: fed1c30ead5dee45c4c25305bbc3ebe36ba0ad022f0333ff203f8c400d0fc2ce +SHA512: 98b75188ecfb9efa808adf1eb6df050a1284e5ccad92fdf8cb66c1055e4536df8857a61045f06fecff7eb8966f62d31f449c218a621cbdd8ef7b4100651ab83c +Description: Intel® oneAPI Collective Communications Library + + +Package: intel-oneapi-ccl-devel +Architecture: amd64 +Version: 2021.8.0-25371 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ccl-devel-2021.8.0 +Filename: pool/main/intel-oneapi-ccl-devel-2021.8.0-25371_amd64.deb +Size: 1736 +MD5sum: b2a93932f4b6daeb8f2082ba04b6fa0f +SHA1: 709a63dfecd6135963c3a1d477d97edf60ebdd54 +SHA256: bc8cf336257230e19b6e9002762cfcdde09dc3077ac5c4b2bf7332c3c49223b3 +SHA512: 8ebc4f75ae506936aa32c55ad7bb19d3c7ffb837b899e79401ef8a92423176b02033acdf2cad741a82215fdb83042014ce96546ac0b42350a163539a0cbef08a +Description: Intel® oneAPI Collective Communications Library + + +Package: intel-oneapi-ccl-devel-2021.9.0 +Architecture: amd64 +Version: 2021.9.0-43543 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 31819 +Depends: intel-oneapi-ccl-2021.9.0, intel-oneapi-mpi-devel-2021.9.0, intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing-2023.1.0 +Filename: pool/main/intel-oneapi-ccl-devel-2021.9.0-2021.9.0-43543_amd64.deb +Size: 2756140 +MD5sum: c99b98f75d0ebeb1ba27b90afd91b943 +SHA1: 76f976b18726adde86596f47deb9f7aaf3ed2421 +SHA256: 4271cd383fc618633566340b7f8ae1fcf7882f208dffcf854d50c10f4389cf72 +SHA512: d8cda1ea368527f726fd1eb4520d8f694bb446ae3b1110fe4f24e098652f337d97eb7deb0f5fbc0a2e448d2ab090ddee96b203cc169d6093f5d557e92b95bbc3 +Description: Intel® oneAPI Collective Communications Library + + +Package: intel-oneapi-ccl-devel +Architecture: amd64 +Version: 2021.9.0-43543 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ccl-devel-2021.9.0 +Filename: pool/main/intel-oneapi-ccl-devel-2021.9.0-43543_amd64.deb +Size: 1736 +MD5sum: 48118bc7199bffdfed09a0c1638855c2 +SHA1: 67dc6f78c77d1bfbf5e13dfb4d1224112de3f330 +SHA256: 5a35e674e45f41c7fa1964be7580efeff84b89bcdacd006cd0beaf611954439b +SHA512: cd5cfa31a56408a830139fbc93a71df2d3428b244178eb6e9798a8b54982729fed2234e6fc989afaae1797ccc0fc96e05b5f339561b1ec8104318f643a234a81 +Description: Intel® oneAPI Collective Communications Library + + +Package: intel-oneapi-clck-2021.1.1 +Architecture: amd64 +Version: 2021.1.1-68 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 128459 +Depends: intel-oneapi-common-vars (>= 2021.1.1-60), intel-oneapi-common-licensing-2021.1.1,intel-oneapi-common-vars,intel-oneapi-common-licensing +Filename: pool/main/intel-oneapi-clck-2021.1.1-2021.1.1-68_amd64.deb +Size: 23152802 +MD5sum: 7f1e59ebc3c221f5810a0a0ee473157b +SHA1: 294257f9eab4f587408fec32204de07b4811e979 +SHA256: c8bbc4c3a0b6da669eb1c9a36b08fca74f635d22285c07a704a49bddb2082b62 +SHA512: 4854df02ab8b5aae6702746788e01d7a3ff543cb59c11efe1c409d9b5c55a553710187b7000dbf17d8347c05774bcab2c0d032ba7d539c22423ead6ec8b3da0c +Description: Intel® Cluster Checker + + +Package: intel-oneapi-clck +Architecture: amd64 +Version: 2021.1.1-68 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-clck-2021.1.1 +Filename: pool/main/intel-oneapi-clck-2021.1.1-68_amd64.deb +Size: 1638 +MD5sum: 5c34358ef73763ed9c74109d7f25bd41 +SHA1: 3f46882b71a6c19f88465f2cc45b5e7cc95f385a +SHA256: 6b700bba45338d9b0e24c1899212563580ebf7fd0c2b4cc87b0d491cb6a46ac6 +SHA512: 63fc42c146208e1c3b16f8e9d91326bff840eb0753bbf0621df6888628b8d4b3137c9d5abb19601b3025199143eeea1e865f7e9b47d60adfea5c01f59b9d8a62 +Description: Intel® Cluster Checker + + +Package: intel-oneapi-clck-2021.2.0 +Architecture: amd64 +Version: 2021.2.0-308 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 128876 +Depends: intel-oneapi-common-vars (>= 2021.2.0-195), intel-oneapi-common-licensing-2021.2.0 +Filename: pool/main/intel-oneapi-clck-2021.2.0-2021.2.0-308_amd64.deb +Size: 23186366 +MD5sum: 70433a2fc30bb3d867e7d5cdbbf62df0 +SHA1: 79db05818a75c9cf1c6fa5eb89e121e53f7825fc +SHA256: 9c83ebecfba3eb86c62cc8455789a9518b99073f3b4c475bde115e47476261af +SHA512: d0d31e9fd6bfe1edd4cb7605650ebccb9ce9c14f671e1549c7fda421dedf914bc834d3f0104f838d9266d38737a68e368f874e3620644737625587f353bfca0a +Description: Intel® Cluster Checker + + +Package: intel-oneapi-clck +Architecture: amd64 +Version: 2021.2.0-308 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-clck-2021.2.0 +Filename: pool/main/intel-oneapi-clck-2021.2.0-308_amd64.deb +Size: 1634 +MD5sum: 5a4c3dda20883570ac1061ba711a2c6e +SHA1: 8582f3350016d13b545c9ee6929382c495aa1597 +SHA256: f03fccc9c373c4736956b3cc64c2617baa4ed223cefbd6c0d3385a7d5ae5f7a5 +SHA512: 10c9ff209b26e010e842d19d82062a0873eff065bb0abadd2fadf20094625debed3ffd8e4a8c533a9e64493e6a95be2d8307ad95d704db6d9931fd8e4ff54377 +Description: Intel® Cluster Checker + + +Package: intel-oneapi-clck-2021.2.2 +Architecture: amd64 +Version: 2021.2.2-315 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 129227 +Depends: intel-oneapi-common-vars (>= 2021.2.0-195), intel-oneapi-common-licensing-2021.2.0 +Filename: pool/main/intel-oneapi-clck-2021.2.2-2021.2.2-315_amd64.deb +Size: 23235788 +MD5sum: 2cd751e37c1e8a21feb6b32b52b87096 +SHA1: 746ea60feac9cdd491e663cdd5a649820b1d129c +SHA256: c683ef164e73dc9bda406be31dd79cd33708382c7151aebb7a146e9f895df268 +SHA512: 3510fd284c44083f3173e6348817cd797027780fa0f9dbca7e4c0f90ec2965c13c5868c6f7df53eba30a62e8fea5b34e7f7f1abe20b51dc9c1af6ed674d734b0 +Description: Intel® Cluster Checker + + +Package: intel-oneapi-clck +Architecture: amd64 +Version: 2021.2.2-315 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-clck-2021.2.2 +Filename: pool/main/intel-oneapi-clck-2021.2.2-315_amd64.deb +Size: 1632 +MD5sum: af5cd53123b12c739b243baccd77cafd +SHA1: cecbbcad893aa3bb11ac6497b7562d4ed69e3cd1 +SHA256: 62965a9d5c3724005ca7f8039c6d741921dded6510e9b07eba25f6496f2e60a3 +SHA512: 4f3ed262b42870ff6d6b71fc45df758655761915017112aa6f39703d446cd18259cd9c4b62dfaaaace10e8dc5620b15a1630063a41e609279fd8c55c8bda4cb0 +Description: Intel® Cluster Checker + + +Package: intel-oneapi-clck-2021.3.0 +Architecture: amd64 +Version: 2021.3.0-406 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 134714 +Depends: intel-oneapi-common-vars (>= 2021.3.0-261), intel-oneapi-common-licensing-2021.3.0 +Filename: pool/main/intel-oneapi-clck-2021.3.0-2021.3.0-406_amd64.deb +Size: 23333676 +MD5sum: 282b89fa969c3fa9a54970dd12b974dc +SHA1: cba87279f0753f7a28cd1bc59af5d116e216b6e4 +SHA256: e7ac3cf993864edf4759bde6c73f17a3cecae9c6ce22d23d9186d3b3d14b5955 +SHA512: 08490c10e869a9083212ab24b98234256ca81f310d5f8e305cd78d9ac342a8fb0b2582d7a49ce533418cda0d727dcbcd64943d10a4075b90dd68a3c74c9dbbf5 +Description: Intel® Cluster Checker + + +Package: intel-oneapi-clck +Architecture: amd64 +Version: 2021.3.0-406 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-clck-2021.3.0 +Filename: pool/main/intel-oneapi-clck-2021.3.0-406_amd64.deb +Size: 1632 +MD5sum: 4531ba3fa0f3f4cf4fab44e96d0d426e +SHA1: ea15af85befd0ceee796fb1672bde6bcc404b5cc +SHA256: 19b7e34dfa676a7eb633e8f90770dd2f8981e7eb4505a5ab8460e906b52699ed +SHA512: 1efb7cae1e0f6a2278db1ae9975bbf68c9e5555601d893e7330dfff36d36b168ec9b021affdaf1edbbc30271bc3f6bacb690d5a812a508b6704e08030be17dd1 +Description: Intel® Cluster Checker + + +Package: intel-oneapi-clck-2021.4.0 +Architecture: amd64 +Version: 2021.4.0-509 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 127913 +Depends: intel-oneapi-common-vars (>= 2021.4.0-327), intel-oneapi-common-licensing-2021.4.0 +Filename: pool/main/intel-oneapi-clck-2021.4.0-2021.4.0-509_amd64.deb +Size: 23159158 +MD5sum: e9663eeeff18dbe54e82feb474008a60 +SHA1: 74058f31aa48099e8e00ffb936c646bf60c9937d +SHA256: dbe1845c100f9548082f29bb70b79a2256f5a44a09ca8248367ed175e5dd3da6 +SHA512: 02e68c07f38a99f86d66551fac6068824b9405a9d1270eb019935cd74516a060b1ee6139479f2dab3b28a4142086f312062787d71350f4016757865d7cf6d0a0 +Description: Intel® Cluster Checker + + +Package: intel-oneapi-clck +Architecture: amd64 +Version: 2021.4.0-509 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-clck-2021.4.0 +Filename: pool/main/intel-oneapi-clck-2021.4.0-509_amd64.deb +Size: 1632 +MD5sum: f570118ef5d21b3b138bfe30a294a675 +SHA1: eb18480e1d18b3942075d3545e0534a60e708a5d +SHA256: 2f71cd94fe50ac4c4dec9b2ac819e9233195ac2e115c43e2aa938793638a2e33 +SHA512: 08588de81f7eb94a0fe5d254637cdc9ad2afcd4718a2c82175af193739f43a2ba7cf23b53681ae0db747aacb1cc35753e6290f3af9aae087bbc42c2e97135a67 +Description: Intel® Cluster Checker + + +Package: intel-oneapi-clck-2021.5.0 +Architecture: amd64 +Version: 2021.5.0-560 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 129760 +Depends: intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-clck-2021.5.0-2021.5.0-560_amd64.deb +Size: 23380838 +MD5sum: 8ff099713b584007a8c6113443bd45de +SHA1: 018929c325a0fe8431045cca7e50abd4bce7c116 +SHA256: 14d5afce5b28921845434cca4314e8a622486dc7274f1a0f56994fc538c42591 +SHA512: 04024b7db5aae23f59544505d2a3e15e3befc52528c5adc14f855f5ec55610bf34cbf729ab3e5416870cb263ab3526ee911b45e9ef6572b45204230cce020452 +Description: Intel® Cluster Checker + + +Package: intel-oneapi-clck +Architecture: amd64 +Version: 2021.5.0-560 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-clck-2021.5.0 +Filename: pool/main/intel-oneapi-clck-2021.5.0-560_amd64.deb +Size: 1634 +MD5sum: 7b5d5df9ed8930bdb46f1830ff102403 +SHA1: a5ce7a1900e88a231fee67498a576cdb57770c37 +SHA256: 45c7081febaa0606e08f85d5a33bbc74db9b2782728014d13109da72d6532ac0 +SHA512: a9c9fbc848d2844295d85573db11b003b895be8805d502d5f900b6ff38c9f8064a43a38f6e4b88ff2840ba0b232bfd8f7091177e7267c2e645f9db99fdde78da +Description: Intel® Cluster Checker + + +Package: intel-oneapi-clck-2021.5.1 +Architecture: amd64 +Version: 2021.5.1-588 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 127935 +Depends: intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-clck-2021.5.1-2021.5.1-588_amd64.deb +Size: 23211636 +MD5sum: d12883eb36fca4b630673c2b175b01af +SHA1: a15fbe49426b78c97f88f868130c02d346f0645c +SHA256: f8438db17a7ec39005b9a294a680f6213c162ef40fbd6141513b47620d26c82e +SHA512: adb2c220aa4ce9736797889f6e3b23d371017d2de255497445befd93951e39708e1819b597f99c31913999561b5cb836b5d1f8623be832986617776f46c6a2b0 +Description: Intel® Cluster Checker + + +Package: intel-oneapi-clck +Architecture: amd64 +Version: 2021.5.1-588 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-clck-2021.5.1 +Filename: pool/main/intel-oneapi-clck-2021.5.1-588_amd64.deb +Size: 1634 +MD5sum: b0db15b2e67d6deae319afe94dfd22a5 +SHA1: fcf2da1d46e3e20ea8eab4ab31ab1e68fb9afc93 +SHA256: 3f89235cabe8be50b881d8e9ecda6b692dbe2788be702e1a43df915fdd2a2143 +SHA512: ba26c68d45b4550699e0971413c97b5065d2db1d45b3f0f0076e3177cee12ffc74c25a403e289463e1d40c4eb13fdc9f12fdfb6c7e9b6abb5a97a4961856463e +Description: Intel® Cluster Checker + + +Package: intel-oneapi-clck-2021.6.0 +Architecture: amd64 +Version: 2021.6.0-650 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 126536 +Depends: intel-oneapi-common-vars (>= 2022.1.0-161), intel-oneapi-common-licensing-2022.1.0 +Filename: pool/main/intel-oneapi-clck-2021.6.0-2021.6.0-650_amd64.deb +Size: 25348242 +MD5sum: 54df6c678ad435404cf592b947f34bc4 +SHA1: a820f0945b02a39dd618b720b8beeea1afd11b9d +SHA256: c214358b7d2469fa7569f4f20eafcbc4a59cd9a82ff3af08918733f47e22f084 +SHA512: 5c6d60ace9a6e52c36c51f086ed3b0bf70ad4c307129eaf4d50911f244b6b670d52654bd2f9f525cb1c8b3630ad50023915edf28adf8288d6ae5f8b01853fe97 +Description: Intel® Cluster Checker + + +Package: intel-oneapi-clck +Architecture: amd64 +Version: 2021.6.0-650 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-clck-2021.6.0 +Filename: pool/main/intel-oneapi-clck-2021.6.0-650_amd64.deb +Size: 1712 +MD5sum: 515967fcefbb194f69463ef07b452db1 +SHA1: 8dca81c98732832ffcc8f9157d3b35c2b88905a5 +SHA256: 0363d58b4f3b773ae60fa1b1f2eeae604bb60cbc30b5b49cd23530ae908e14df +SHA512: 933d92793084d0b2e73ecfda6750878b3441ca1d28c4730b94aac5db2829ec520fed254d6c689beff40bd795f7f517a9622cf0278a3a5b2cad3f40aa0aad63d4 +Description: Intel® Cluster Checker + + +Package: intel-oneapi-clck-2021.7.0 +Architecture: amd64 +Version: 2021.7.0-8708 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 127851 +Depends: intel-oneapi-common-vars (>= 2022.2.0-8694), intel-oneapi-common-licensing-2022.2.0 +Filename: pool/main/intel-oneapi-clck-2021.7.0-2021.7.0-8708_amd64.deb +Size: 25403518 +MD5sum: 6cbcf6c5c4d578bdbb765d434d12956b +SHA1: a8c91056a08ae92620cc3818df642b63043ffa6b +SHA256: 0802b746eafefde0ab06c48c3fada9d5d874f9bc10a9a2b8f58550073a41389a +SHA512: 5ca33e5b957dfcbf60997c5d0c0a3804f8c11f6241014b54d397205f394da745dff9a8d3235f3a64fe1456c792a9280a90d0078568a2b3b469077d9d8b105b24 +Description: Intel® Cluster Checker + + +Package: intel-oneapi-clck +Architecture: amd64 +Version: 2021.7.0-8708 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-clck-2021.7.0 +Filename: pool/main/intel-oneapi-clck-2021.7.0-8708_amd64.deb +Size: 1716 +MD5sum: 65a60856517fcfd59c89955ac49b2a2c +SHA1: a29f79a8c9cd3d58014e8caccc670b5c3889b837 +SHA256: 9a6ab69409248c070d83b90b40be86919df5cda94e8718be4316aec20903cc07 +SHA512: 1840ea19a00d002a3504c70cd3af394c73b3f423eb67b4dbcc41dbe345e8c07c398808d24eac0a14915c184c808d1f4793ce73a26a1796a29c3c066b6f3374c0 +Description: Intel® Cluster Checker + + +Package: intel-oneapi-clck +Architecture: amd64 +Version: 2021.7.1-16156 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-clck-2021.7.1 +Filename: pool/main/intel-oneapi-clck-2021.7.1-16156_amd64.deb +Size: 1720 +MD5sum: e703f388b963f6be1ade2b5f671ba73c +SHA1: 8fb70dd4847aa151c3e99055cbca5ba9290e1ed3 +SHA256: 86cbc77f43dbc7c0d6457bed925ab3e5c2339e0544155522e4be9f31d79f64d3 +SHA512: 07363854f5b426b7451802f9d11cced743dcb2541c4da9710e616c9f6340bdde0a7a8415b0ae97a546664ca6102403618c3811300fbe534b4b9814b93b939157 +Description: Intel® Cluster Checker + + +Package: intel-oneapi-clck-2021.7.1 +Architecture: amd64 +Version: 2021.7.1-16156 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 127851 +Depends: intel-oneapi-common-vars (>= 2022.2.1-14969), intel-oneapi-common-licensing-2022.2.1 +Filename: pool/main/intel-oneapi-clck-2021.7.1-2021.7.1-16156_amd64.deb +Size: 25379858 +MD5sum: 0b124619636258b8439dd5b12dfa5a63 +SHA1: e8ef698fed567c06b3ed610a4542330c1dd20019 +SHA256: c5e82b548ac336a9e47873ac1a88fdb7492bdef8b0bf9740e0dc5d4bf5947f09 +SHA512: 9edcea4367c4c83c483e529ec08950fd216e072af5a5ce6b37e57d870e99cdf2bdf6843bc2f84760b42428138223d8ab95140d082bc801f15e4985d180ab7a48 +Description: Intel® Cluster Checker + + +Package: intel-oneapi-clck-2021.7.2 +Architecture: amd64 +Version: 2021.7.2-25333 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 127851 +Depends: intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing-2023.0.0 +Filename: pool/main/intel-oneapi-clck-2021.7.2-2021.7.2-25333_amd64.deb +Size: 25387190 +MD5sum: 8e6efc636a6c797bf882787f7853e9e4 +SHA1: dd12d9d005ed1b2dd85371f83ce1afd53ed5e91d +SHA256: 910da3715e800474196953b8eb153eddf36b368745089b5f81fa21b258333da0 +SHA512: 4c1717169d89d3a6a34908eaf2a9d27ee90f0fa47477948df938a39fe3a74852448191ae11f7bf5042d523011e87296dbaa07cabb184a8b1c188e6eed02a8097 +Description: Intel® Cluster Checker + + +Package: intel-oneapi-clck +Architecture: amd64 +Version: 2021.7.2-25333 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-clck-2021.7.2 +Filename: pool/main/intel-oneapi-clck-2021.7.2-25333_amd64.deb +Size: 1716 +MD5sum: a704549fe2198aa8eb3eabbb39e6e49a +SHA1: 2e99f48fa141fb08cdfb86aaba16a615f711ed26 +SHA256: 2a5b5f6e29cbf0321005b7708d420ffc78cefbca0704f1b29d8670356a1c3c4f +SHA512: 3befef3353a88418c4a1ced351d9d707cc40a6718313e160aaf3045d6da9cb9ec9ebf0ee5d26f793e27c89956aeea29cd949f1709e2c9c1d004c0a9dfa8ec683 +Description: Intel® Cluster Checker + + +Package: intel-oneapi-clck-2021.7.3 +Architecture: amd64 +Version: 2021.7.3-29533 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 127810 +Depends: intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing-2023.0.0 +Filename: pool/main/intel-oneapi-clck-2021.7.3-2021.7.3-29533_amd64.deb +Size: 25358538 +MD5sum: 0c0c191e5ffb702efb4928a6d27f8d95 +SHA1: 12c97475dbbcc58b66195e6ee5c6cd6c9646cb0b +SHA256: a759ee56957b390ba915959ef405f66945c3a7dbf3c53a6f3e677fb9ea8554e5 +SHA512: 5e7c89a300405b69efcbbc860c77abb81aa9e5564cc042438c04a0c06fbc2e64d206a4cbc752b2663d840f7726bce94fe6470d3797c4bfde84a8b85003efc8c3 +Description: Intel® Cluster Checker + + +Package: intel-oneapi-clck-2021.7.3 +Architecture: amd64 +Version: 2021.7.3-45658 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 122202 +Depends: intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing-2023.1.0 +Filename: pool/main/intel-oneapi-clck-2021.7.3-2021.7.3-45658_amd64.deb +Size: 24497906 +MD5sum: 0f9cd4dc40a33b4296f1b9bc668c1717 +SHA1: f3af9b9480da382e1a4fae6560045e072949cc79 +SHA256: 045a5e1f1135cfef146f7b5211dcad3afd5608bef283c7f03a920bf686a86586 +SHA512: 36ef01f71280264a78cee5093c9763bf56837d94b336eba0ba29bd0a69ec942dcb31b38ce5a1beb0b2176628f6e0b192c8d0ca6258419f81708e506132615962 +Description: Intel® Cluster Checker + + +Package: intel-oneapi-clck +Architecture: amd64 +Version: 2021.7.3-29533 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-clck-2021.7.3 +Filename: pool/main/intel-oneapi-clck-2021.7.3-29533_amd64.deb +Size: 1716 +MD5sum: 8ffa0a29b5df0016483bccdcaeba1534 +SHA1: 9f6696b3d659581833e4ce2d3f73708b7ff261b6 +SHA256: 28bf72a0d742a33acf0672304cf70fc21bc4523955d0ad71f8376a48ace6d1d0 +SHA512: 5587cc00258fe3c92a21c695d1fea73e0d61789ae58e9b2e09d656756e2a1681f71c48d4a31582b42bc00592e3f0b3ef817e92d260f4e5272faae57e252bb2ae +Description: Intel® Cluster Checker + + +Package: intel-oneapi-clck +Architecture: amd64 +Version: 2021.7.3-45658 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-clck-2021.7.3 +Filename: pool/main/intel-oneapi-clck-2021.7.3-45658_amd64.deb +Size: 1720 +MD5sum: 08942ff7d49e5dc348d6fd1f3c9ea7f0 +SHA1: aef2618269fa444e55cae9edbe932b50e712df64 +SHA256: dad24e238f11bdf5aa44a066ecfd706ce072fc19af19d7df2c3c662daad4b3b7 +SHA512: fd775d30462355e6768741a5d8eb15d5299f88952f1f8e720df37d9a289f2dcae35efe0d08d7b4685c92f30853ea95b7ca2be73e8e6910fd67986d097064774a +Description: Intel® Cluster Checker + + +Package: intel-oneapi-compiler-dpcpp-cpp +Architecture: amd64 +Version: 2021.1.1-189 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Provides: intel-oneapi-dpcpp-cpp-compiler (= 2021.1.1-189) +Depends: intel-oneapi-compiler-dpcpp-cpp-2021.1.1 +Breaks: intel-oneapi-dpcpp-cpp-compiler (<< 2021.1.1-189) +Replaces: intel-oneapi-dpcpp-cpp-compiler (<< 2021.1.1-189) +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-2021.1.1-189_amd64.deb +Size: 1690 +MD5sum: 7ce9b3afda060943abaafb866944425c +SHA1: 0329fddcc24f5853ce554bdeb356032e8ec96fe7 +SHA256: f8d7b894f9d1f0ecebf56f21795a4b62037398972ec4c4b5380f41fcdd614419 +SHA512: c2563dbebb7a4291f3f76d20cd2c65696a1bcf1f97f5526ae298ae1e0906dae6b4f9e241aba107080d73c55ad4863d723d1847a9f8bccdc7b5adea5f1f3872da +Description: Intel® oneAPI DPC++/C++ Compiler + + +Package: intel-oneapi-compiler-dpcpp-cpp-2021.1.1 +Architecture: amd64 +Version: 2021.1.1-189 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-dpcpp-cpp-2021.1.1, intel-oneapi-libdpstd-devel-2021.1.1,intel-oneapi-common-vars,intel-oneapi-common-licensing +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-2021.1.1-2021.1.1-189_amd64.deb +Size: 1690 +MD5sum: 6f25b76abd6c2d35f0b01d645a6cab02 +SHA1: 57db0eac1d5f657bbebf5cfe70c56dd38df5e5c8 +SHA256: bf5b24febbf2328bf87ab4ee5d43f64400750c5068e20c21900112a99bbcb24e +SHA512: b0f7bcbbc2941c62fa13af4584f19e13072f2235ae378d0aacd5abf2d425cb8aa4431ad002ccce091851c15c5b47c15188722a651a3437e2dcdc3880b6bf457b +Description: Intel® oneAPI DPC++/C++ Compiler + + +Package: intel-oneapi-compiler-dpcpp-cpp-2021.1.2 +Architecture: amd64 +Version: 2021.1.2-266 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-dpcpp-cpp-2021.1.2, intel-oneapi-libdpstd-devel-2021.1.2,intel-oneapi-common-vars,intel-oneapi-common-licensing +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-2021.1.2-2021.1.2-266_amd64.deb +Size: 1684 +MD5sum: 5e67bf752215722dd4e5cc7ff8c84990 +SHA1: 46ecdc8e7935dbf451c6ed3e6eb1e5b36b1080b0 +SHA256: d0186bea8d3a4259b76d79b244e6ca3f63f0bc4afa89d976437d820e4537b94d +SHA512: b47848f21b609343e1ea5cbd892125904513ea4517a38dd596a9e56a7a8b7f4cae478feca5ffb9daf50058bcf0ef19b09002a28deee48a2ea7e7731199e99185 +Description: Intel® oneAPI DPC++/C++ Compiler + + +Package: intel-oneapi-compiler-dpcpp-cpp +Architecture: amd64 +Version: 2021.1.2-266 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Provides: intel-oneapi-dpcpp-cpp-compiler (= 2021.1.2-266) +Depends: intel-oneapi-compiler-dpcpp-cpp-2021.1.2 +Breaks: intel-oneapi-dpcpp-cpp-compiler (<< 2021.1.2-266) +Replaces: intel-oneapi-dpcpp-cpp-compiler (<< 2021.1.2-266) +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-2021.1.2-266_amd64.deb +Size: 1688 +MD5sum: 685cfb33f54d206bc460fa9cb66ec231 +SHA1: ceeb3f33bd0dfec499be48ead95f49e4d4597bed +SHA256: 2b59ff46f96a9a409cd59002b1511a19bddc5f60e9f723678612efa48504ca8a +SHA512: 5bc6c68f7e3c400a79bc60bf7361d23110dbf1a5f9774124347513c84771f13999c8307d954585757fe617eabac04d6647c25d9db911259fae1b7abc92b70427 +Description: Intel® oneAPI DPC++/C++ Compiler + + +Package: intel-oneapi-compiler-dpcpp-cpp-2021.2.0 +Architecture: amd64 +Version: 2021.2.0-610 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-dpcpp-cpp-2021.2.0, intel-oneapi-libdpstd-devel-2021.2.0, intel-oneapi-common-vars (>= 2021.2.0-195), intel-oneapi-common-licensing-2021.2.0 +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-2021.2.0-2021.2.0-610_amd64.deb +Size: 1698 +MD5sum: b40796014e0d28b3f13cff45c4f8e9f3 +SHA1: a62488404dce9d91a831f62129e5fce678b07679 +SHA256: a7bc72d6ad43d1e6d70eb4012e5e5c3d8ed6436ced2727fdb24521ff59829e39 +SHA512: 5566d2206efb1d445f1ae614380b4c82177018b59743b4748f92b95c210a32b5f1fd49c5a58bb1eb13d9d3e135eb3322f50eecf5f3388447ef9362e3be9c4804 +Description: Intel® oneAPI DPC++/C++ Compiler + + +Package: intel-oneapi-compiler-dpcpp-cpp +Architecture: amd64 +Version: 2021.2.0-610 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Provides: intel-oneapi-dpcpp-cpp-compiler (= 2021.2.0-610) +Depends: intel-oneapi-compiler-dpcpp-cpp-2021.2.0 +Breaks: intel-oneapi-dpcpp-cpp-compiler (<< 2021.2.0-610) +Replaces: intel-oneapi-dpcpp-cpp-compiler (<< 2021.2.0-610) +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-2021.2.0-610_amd64.deb +Size: 1690 +MD5sum: dd50a7f7a7cde2988667759f03a6bdfe +SHA1: 7d6b0270dc271ab8cc3282153154113457541631 +SHA256: 31650bbe303c14448d55c8b4bca1d397ac5c7bf7ad01a2195aafd20cb803272a +SHA512: 4228ff2b7f1602132b0c939aebf8dc44c044ea54e80497b478ec9589e49e2de5141cf4e9c77958f54d29960dbb887488734f581a7ddd2830c52016c7cd343e52 +Description: Intel® oneAPI DPC++/C++ Compiler + + +Package: intel-oneapi-compiler-dpcpp-cpp-2021.3.0 +Architecture: amd64 +Version: 2021.3.0-3350 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-dpcpp-cpp-2021.3.0, intel-oneapi-libdpstd-devel-2021.4.0, intel-oneapi-common-vars (>= 2021.3.0-261), intel-oneapi-common-licensing-2021.3.0 +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-2021.3.0-2021.3.0-3350_amd64.deb +Size: 1698 +MD5sum: a9f7e2cea275c1f088ba1e1318870868 +SHA1: bdbf24705bcb2c223156a78f3ba197a58ee8c282 +SHA256: c69058671c91fd3dd6ad4a42b0cf07ec2076441652ff6573c3b2354bb0c8345a +SHA512: ee3f4d1d2a4d655a746d7634d38545cf4e24daa649e63e4edfa96e326ff18846386ca4243e09e28addb33cdf215bd3e7201a254e0daa71b3c8e4090493c447a8 +Description: Intel® oneAPI DPC++/C++ Compiler + + +Package: intel-oneapi-compiler-dpcpp-cpp +Architecture: amd64 +Version: 2021.3.0-3350 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Provides: intel-oneapi-dpcpp-cpp-compiler (= 2021.3.0-3350) +Depends: intel-oneapi-compiler-dpcpp-cpp-2021.3.0 +Breaks: intel-oneapi-dpcpp-cpp-compiler (<< 2021.3.0-3350) +Replaces: intel-oneapi-dpcpp-cpp-compiler (<< 2021.3.0-3350) +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-2021.3.0-3350_amd64.deb +Size: 1692 +MD5sum: 18fa749fd8a755be19752887e4485948 +SHA1: b4c04fa674cd48b565696fc81551372426c20d6b +SHA256: a4ec39ed241371f5285b1024693e04e189d04af12ceabd0a39d4dae8a2a9d50f +SHA512: 2ae2695eb9d666319e1ead0781233f3e1df51f6bb1d29d25061cf4006058f025a066f51f8b6752ec6f5f9541890b9603f93a7c8885bdbb5841cea630f046f8bd +Description: Intel® oneAPI DPC++/C++ Compiler + + +Package: intel-oneapi-compiler-dpcpp-cpp-2021.4.0 +Architecture: amd64 +Version: 2021.4.0-3561 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-dpcpp-cpp-2021.4.0, intel-oneapi-libdpstd-devel-2021.5.0, intel-oneapi-common-vars (>= 2021.4.0-327), intel-oneapi-common-licensing-2021.4.0 +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-2021.4.0-2021.4.0-3561_amd64.deb +Size: 1700 +MD5sum: 78342e3937b193f29f32c58ae906615f +SHA1: be6f405f8758c1709abbdd1d228a092a83b5a236 +SHA256: 7329cbc0b9669b28698f1be64252c28e76a03cf624a95a5a61fc7b47b32a328b +SHA512: 3d943437aa7cc3cff99ded49789d4fcad6ad58cae1a1ff85cd55b1144e03a73a67ccea8926a153a6f1746ab4886f67b9f892f4425bdf69a35cf7031d86ba9215 +Description: Intel® oneAPI DPC++/C++ Compiler + + +Package: intel-oneapi-compiler-dpcpp-cpp +Architecture: amd64 +Version: 2021.4.0-3561 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Provides: intel-oneapi-dpcpp-cpp-compiler (= 2021.4.0-3561) +Depends: intel-oneapi-compiler-dpcpp-cpp-2021.4.0 +Breaks: intel-oneapi-dpcpp-cpp-compiler (<< 2021.4.0-3561) +Replaces: intel-oneapi-dpcpp-cpp-compiler (<< 2021.4.0-3561) +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-2021.4.0-3561_amd64.deb +Size: 1690 +MD5sum: 8332acaeb29f6c8dda6e1a73df8fcbfa +SHA1: b50b1d9e705db710eeab958de98937009532b2a4 +SHA256: d5f2d72501b982110c5a6d5e7f58abd613268fa313f17eae4557e4a7a75aca43 +SHA512: b627113675dea599a6f9c29e5b77143c20e47ce3dcd69d8bfbccdff49e77e8f0bf9fb6fe06ce9683b755426fac31d70873de465177f8403295fe00af778ca19c +Description: Intel® oneAPI DPC++/C++ Compiler + + +Package: intel-oneapi-compiler-dpcpp-cpp-2022.0.1 +Architecture: amd64 +Version: 2022.0.1-3633 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-dpcpp-cpp-2022.0.1, intel-oneapi-libdpstd-devel-2021.6.0, intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-2022.0.1-2022.0.1-3633_amd64.deb +Size: 1704 +MD5sum: 2ee6b0aecdc9f0cb137df9f90b1bfff3 +SHA1: 5cf9f085f1b666e42792d49469bf4d8029119cad +SHA256: 61b158091e21ce0022afb31d6d95e4ca5ed7c9307b366cc4f136a88e54705e8b +SHA512: bf164ba0dd0eeb45fd9eda0f3009315b4ff2aeba5180cf95b41e5b61d9a0282ba34b57d214df53fe0ce7a377ca48dcb06942288e6639d91700ad77a00c490f77 +Description: Intel® oneAPI DPC++/C++ Compiler + + +Package: intel-oneapi-compiler-dpcpp-cpp +Architecture: amd64 +Version: 2022.0.1-3633 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Provides: intel-oneapi-dpcpp-cpp-compiler (= 2022.0.1-3633) +Depends: intel-oneapi-compiler-dpcpp-cpp-2022.0.1 +Breaks: intel-oneapi-dpcpp-cpp-compiler (<< 2022.0.1-3633) +Replaces: intel-oneapi-dpcpp-cpp-compiler (<< 2022.0.1-3633) +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-2022.0.1-3633_amd64.deb +Size: 1690 +MD5sum: 146ab673f3f35bbac90b136d91f18fc8 +SHA1: 3504570105ac46ffaf4ed157aa4be78e205c81b5 +SHA256: 1ef579a28bb8a57c1f04dc8b761c260ca34ae8ade06575d627557572355f2a68 +SHA512: 29d3a1a340fa2aa479dbcdf3ad57207d49947e7c6faab2e01e0eb1212e8e5188d1430393a32dc7b2dd8fb2a4f9aa0a98fcda919b7be764e49054f4411fca50ae +Description: Intel® oneAPI DPC++/C++ Compiler + + +Package: intel-oneapi-compiler-dpcpp-cpp-2022.0.2 +Architecture: amd64 +Version: 2022.0.2-3658 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-dpcpp-cpp-2022.0.2, intel-oneapi-libdpstd-devel-2021.6.0, intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-2022.0.2-2022.0.2-3658_amd64.deb +Size: 1706 +MD5sum: 557198e0016d07f4ec809d49d8ccde5e +SHA1: 2c857e2d3abe7f8bdc98d8c6aa48d8fa93325590 +SHA256: dd3cf666210dd3e5d6e4f691c8e8741fcfda532a51e396ca9860e53a14ce9a11 +SHA512: a522ee8594ee3e8ca0d214da64750d8bb941e2653e6df2d53d9d5e3fcf5cad6a211787180d1ded48b2bd2107b1be7fce64f3c1284deffdf5f9c1460277a852d5 +Description: Intel® oneAPI DPC++/C++ Compiler + + +Package: intel-oneapi-compiler-dpcpp-cpp +Architecture: amd64 +Version: 2022.0.2-3658 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Provides: intel-oneapi-dpcpp-cpp-compiler (= 2022.0.2-3658) +Depends: intel-oneapi-compiler-dpcpp-cpp-2022.0.2 +Breaks: intel-oneapi-dpcpp-cpp-compiler (<< 2022.0.2-3658) +Replaces: intel-oneapi-dpcpp-cpp-compiler (<< 2022.0.2-3658) +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-2022.0.2-3658_amd64.deb +Size: 1690 +MD5sum: dd7fc22cea91c7a4026f9f5010e26166 +SHA1: e78bbf22b296e27cbec8c5c893fd448ac97eeb15 +SHA256: dae1595c6cb10df61649fa5f0dca5e6d32edb66d1b7d7474bbc8797473508bac +SHA512: ac663588dc44659c77e57f54a604009ff68c25b50550bda238949adb920b0ec05adbcbf5067199fafc81f7242682c9ca7b24c88fa23e21da162501dfc0b9b485 +Description: Intel® oneAPI DPC++/C++ Compiler + + +Package: intel-oneapi-compiler-dpcpp-cpp-2022.1.0 +Architecture: amd64 +Version: 2022.1.0-3768 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-dpcpp-cpp-2022.1.0, intel-oneapi-libdpstd-devel-2021.7.0, intel-oneapi-common-vars (>= 2022.1.0-161), intel-oneapi-common-licensing-2022.1.0 +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-2022.1.0-2022.1.0-3768_amd64.deb +Size: 1780 +MD5sum: d2543d8aa8fd97a6ffc246cb42d47ea2 +SHA1: 8ea66fcdb7bee55da97d6d6e9f1913bbdb7c7202 +SHA256: f21f641c75ade271f4ad31e8501aeada97f7ec583942dcfe4b41d6016bd2fd35 +SHA512: 8631f36bfeb409f726d69617a6fa126d8af704662cba20eef69d6bee7092a14da7614cfc0ffa076824a76c6fc4e6c1e448d1d6c4e156d831ebd702d7522dc318 +Description: Intel® oneAPI DPC++/C++ Compiler + + +Package: intel-oneapi-compiler-dpcpp-cpp +Architecture: amd64 +Version: 2022.1.0-3768 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Provides: intel-oneapi-dpcpp-cpp-compiler (= 2022.1.0-3768) +Depends: intel-oneapi-compiler-dpcpp-cpp-2022.1.0 +Breaks: intel-oneapi-dpcpp-cpp-compiler (<< 2022.1.0-3768) +Replaces: intel-oneapi-dpcpp-cpp-compiler (<< 2022.1.0-3768) +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-2022.1.0-3768_amd64.deb +Size: 1768 +MD5sum: b186c394f29d8cd2f856f6fc992b8e87 +SHA1: d61e06070879484cf5561063d8a9bdd76b39c023 +SHA256: 6ebd7d0a39a7cd4caf02716423cdbd2cd63ab3b5f9b5fcdae07776472b97fce4 +SHA512: 9788e8318f24e88812fe3f0da78bd20e4ada1175b5162a71aca5443b8e82c32aa84a39bb05d2dc5d629595864192751d18aac59a44c660090d084146374c7592 +Description: Intel® oneAPI DPC++/C++ Compiler + + +Package: intel-oneapi-compiler-dpcpp-cpp-2022.2.0 +Architecture: amd64 +Version: 2022.2.0-8734 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-dpcpp-cpp-2022.2.0, intel-oneapi-libdpstd-devel-2021.7.1, intel-oneapi-common-vars (>= 2022.2.0-8694), intel-oneapi-common-licensing-2022.2.0 +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-2022.2.0-2022.2.0-8734_amd64.deb +Size: 1780 +MD5sum: 23414ba3dbf79e130ce776287758bee7 +SHA1: c3ebf92cfdaef2c0a37dfd2dfdcd4464d4f39c2b +SHA256: c756cce057ddc82563086acfef2dfdc1ff79578fc8a92e3266984e00ddf32179 +SHA512: 0e50dbc7d15127b4279dcd6d86c933a637d3f528d083bddb041f9a006428873ad1bfe6e7eef73f8cbdc60646af35a94477aaec3fbd174af9de0f5e44e47c2090 +Description: Intel® oneAPI DPC++/C++ Compiler + + +Package: intel-oneapi-compiler-dpcpp-cpp +Architecture: amd64 +Version: 2022.2.0-8734 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Provides: intel-oneapi-dpcpp-cpp-compiler (= 2022.2.0-8734) +Depends: intel-oneapi-compiler-dpcpp-cpp-2022.2.0 +Breaks: intel-oneapi-dpcpp-cpp-compiler (<< 2022.2.0-8734) +Replaces: intel-oneapi-dpcpp-cpp-compiler (<< 2022.2.0-8734) +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-2022.2.0-8734_amd64.deb +Size: 1764 +MD5sum: bc5402e4619c040a9abeb5bbc8f2a35a +SHA1: 76275dc5bcc9a094fd21a2dc7ca4e4ee2ea0939a +SHA256: fbc5a3f10d596d982f65c583d439f68305abeedbecc9caa44c9cc7934960b5a5 +SHA512: 5d42ee8d2f28d2e5ab13bf31098e80cdf70be4d1584fb9d262c8404c12fb30fae0b4684fba0f0af1d539cc78db9b4b0fa30fb3d7a63ae8d15fa1167f351f1e12 +Description: Intel® oneAPI DPC++/C++ Compiler + + +Package: intel-oneapi-compiler-dpcpp-cpp +Architecture: amd64 +Version: 2022.2.1-16953 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Provides: intel-oneapi-dpcpp-cpp-compiler (= 2022.2.1-16953) +Depends: intel-oneapi-compiler-dpcpp-cpp-2022.2.1 +Breaks: intel-oneapi-dpcpp-cpp-compiler (<< 2022.2.1-16953) +Replaces: intel-oneapi-dpcpp-cpp-compiler (<< 2022.2.1-16953) +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-2022.2.1-16953_amd64.deb +Size: 1768 +MD5sum: f38d6c0e4b91b6cf58b97f1c284129b9 +SHA1: 84f4936725ebab4ff1a5e473c63fb73948ab38ae +SHA256: 9cdb077a98684e728025ba272c52c548404a8ed6a6cb37ef2d586d5c334a9059 +SHA512: 01f034b180595628439ea399a77b9189e9ea94440a3be065a5e2aaf6a21101f421592c8e0c970e6de85e66b8b07a8b09cd6846c0464bf17980f9ec5e7ca7f869 +Description: Intel® oneAPI DPC++/C++ Compiler + + +Package: intel-oneapi-compiler-dpcpp-cpp-2022.2.1 +Architecture: amd64 +Version: 2022.2.1-16953 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-dpcpp-cpp-2022.2.1, intel-oneapi-libdpstd-devel-2021.7.2, intel-oneapi-common-vars (>= 2022.2.1-14969), intel-oneapi-common-licensing-2022.2.1 +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-2022.2.1-2022.2.1-16953_amd64.deb +Size: 1780 +MD5sum: 3fadf375bf88889cc75c87cba4fd602f +SHA1: 4e240a1af4619fa2e3099f2a909068c78817dbdb +SHA256: c1eb9246c234aa5c98a09953e9336612e6035e5020363cdcc6050db23f3fa3da +SHA512: 6104a1bd00140f8b10d6fe57f4a40cfb64478dd649731f419773f5f193a48472d97701292b63e8438eaa5697f6422fc3253c5c5f01e14cdd2a2bc91ac2444a7e +Description: Intel® oneAPI DPC++/C++ Compiler + + +Package: intel-oneapi-compiler-dpcpp-cpp-2023.0.0 +Architecture: amd64 +Version: 2023.0.0-25370 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-dpcpp-cpp-2023.0.0, intel-oneapi-libdpstd-devel-2022.0.0, intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing-2023.0.0 +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-2023.0.0-2023.0.0-25370_amd64.deb +Size: 1776 +MD5sum: 9cc00bc99d1636d42b5b583b8c562e48 +SHA1: f99840410a65af71fa735becdb607acaf0b5d6cd +SHA256: 81a18fca09c78da5bb943fc55b42a5cf38a076e4495e655216611f7b75cbe66b +SHA512: 4c85a0cc9a8971db153bdeef85c4258ba0a71b276c797e6322bc7dc0829ec8c3062df142017c6dcd2e87c70e82c0430a1c40c5a04048ae1ef3e64b9f04492cf0 +Description: Intel® oneAPI DPC++/C++ Compiler + + +Package: intel-oneapi-compiler-dpcpp-cpp +Architecture: amd64 +Version: 2023.0.0-25370 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Provides: intel-oneapi-dpcpp-cpp-compiler (= 2023.0.0-25370) +Depends: intel-oneapi-compiler-dpcpp-cpp-2023.0.0 +Breaks: intel-oneapi-dpcpp-cpp-compiler (<< 2023.0.0-25370) +Replaces: intel-oneapi-dpcpp-cpp-compiler (<< 2023.0.0-25370) +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-2023.0.0-25370_amd64.deb +Size: 1768 +MD5sum: 30ad81c9ee8d3c7ba41d49daee55ea43 +SHA1: 6e7e8751f652ebd89d30b53230370cc330ef3c6d +SHA256: f8e12d31e6a564b76a25bde681c9fe8bd34f66de21bc6826d4cb18b07a6c6c62 +SHA512: 44f2c4ddebfb2ca456b9e5958c649103ec0c29be99b75d78aff8d1b26a7f6c0076b103a03ae05afb2a045c62c5b5b61398ca0d125787773ffbe3589752f12b12 +Description: Intel® oneAPI DPC++/C++ Compiler + + +Package: intel-oneapi-compiler-dpcpp-cpp-2023.1.0 +Architecture: amd64 +Version: 2023.1.0-46305 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-dpcpp-cpp-2023.1.0, intel-oneapi-libdpstd-devel-2022.1.0, intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing-2023.1.0 +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-2023.1.0-2023.1.0-46305_amd64.deb +Size: 1780 +MD5sum: d38df57d98cd3286e4e6b2a142c8a63f +SHA1: 36513f1f19eaf76207115b506b6d2cf0bdbd1bd2 +SHA256: f8c75298a5885773be07ed17afa4800a895450b9232b0d96eb9721297b18a319 +SHA512: 648a5b0bf8eec28176a499c08331530bde6a3614078b4f2de835296393e85b5e9c7c765baaf1f064062f6e6e89257ecd7e193f5422f0779874c58084ea478be8 +Description: Intel® oneAPI DPC++/C++ Compiler + + +Package: intel-oneapi-compiler-dpcpp-cpp +Architecture: amd64 +Version: 2023.1.0-46305 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Provides: intel-oneapi-dpcpp-cpp-compiler (= 2023.1.0-46305) +Depends: intel-oneapi-compiler-dpcpp-cpp-2023.1.0 +Breaks: intel-oneapi-dpcpp-cpp-compiler (<< 2023.1.0-46305) +Replaces: intel-oneapi-dpcpp-cpp-compiler (<< 2023.1.0-46305) +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-2023.1.0-46305_amd64.deb +Size: 1768 +MD5sum: d8b3ad68ee0130adc8d9378380f0e4e6 +SHA1: b438d7e17a3ce17cf91b8ea853dd13b1def2c07c +SHA256: cb1079a1ba57271fbca74a2d672bcacc6df3886b3b1b320fc325004cc898de41 +SHA512: 9cb4645cdaf71d86d92d83586a46fd944a95fd74deed66d2cd0067c57cc322407ca8c573b1fe5a6f665d28c53a6a6607aef56b8823279019b9684efc7c61e87b +Description: Intel® oneAPI DPC++/C++ Compiler + + +Package: intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic +Architecture: amd64 +Version: 2021.1.1-189 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Provides: intel-oneapi-dpcpp-cpp-compiler-pro (= 2021.1.1-189) +Depends: intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-2021.1.1 +Breaks: intel-oneapi-dpcpp-cpp-compiler-pro (<< 2021.1.1-189) +Replaces: intel-oneapi-dpcpp-cpp-compiler-pro (<< 2021.1.1-189) +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-2021.1.1-189_amd64.deb +Size: 1736 +MD5sum: 93fd6b3228db83347c14b432f5185268 +SHA1: 9005585b45723345f225d8486a181f0648dd2851 +SHA256: 667ecd4e563850c7647268e9bc2a4b39a832963efa3d2fb62d5f87a25c7d317f +SHA512: 2589644110bf1dbf6e8fdc55c9515434ecb4ba6df19ff5f4df01f52f106239819efc083a2f8b0c82cef893c51ae5a51384d2d807cd35db80707f19287d58c4a9 +Description: Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic 2021.1.1 for Linux* for Intel(R) 64 + + +Package: intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-2021.1.1 +Architecture: amd64 +Version: 2021.1.1-189 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 74165 +Depends: intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-runtime-2021.1.1, intel-oneapi-compiler-dpcpp-cpp-classic-fortran-shared-runtime-2021.1.1, intel-oneapi-dpcpp-cpp-2021.1.1, intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-common-2021.1.1,intel-oneapi-common-vars,intel-oneapi-common-licensing +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-2021.1.1-2021.1.1-189_amd64.deb +Size: 17504830 +MD5sum: 1740c4bf88deb5fb7bd1d8c4d453c85b +SHA1: 89b46cc7f4b9f258521f319ab365b44e6fa5ef0d +SHA256: 9f8c0005d05cc0a96b1ebc559fa65cf43d450039ef96f32d9d77ac78caee8f7d +SHA512: 14ff44efa644487c6acb0a8e5c29d7a97752498cd7b82a1b108f14b235c5285c0b3e1347b573297f08e7de8aaa197fc545eeca4480fdebafa755d3ac01b4810d +Description: Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic 2021.1.1 for Linux* for Intel(R) 64 + + +Package: intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-2021.1.2 +Architecture: amd64 +Version: 2021.1.2-266 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 74147 +Depends: intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-runtime-2021.1.2, intel-oneapi-compiler-dpcpp-cpp-classic-fortran-shared-runtime-2021.1.2, intel-oneapi-dpcpp-cpp-2021.1.2, intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-common-2021.1.2,intel-oneapi-common-vars,intel-oneapi-common-licensing +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-2021.1.2-2021.1.2-266_amd64.deb +Size: 17503510 +MD5sum: a2485b947c2e1f5eeddee4351678925d +SHA1: 1bcb30a593a3e02465cf89cc5471a38ecf28e0f3 +SHA256: 69c01fd15c9931eddf827725bff3297c9c4096da410fefa142c5370d4760b87e +SHA512: 6c4ddeffce17a20823cfe173f81b93c4a3369ca2e578b53b0dfd8478f92f2874b05f56139f91a7f48fa2c33c533a9c92ae42df1d7db0ee6476e8a8cd2d5a077a +Description: Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic 2021.1.2 for Linux* for Intel(R) 64 + + +Package: intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic +Architecture: amd64 +Version: 2021.1.2-266 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Provides: intel-oneapi-dpcpp-cpp-compiler-pro (= 2021.1.2-266) +Depends: intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-2021.1.2 +Breaks: intel-oneapi-dpcpp-cpp-compiler-pro (<< 2021.1.2-266) +Replaces: intel-oneapi-dpcpp-cpp-compiler-pro (<< 2021.1.2-266) +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-2021.1.2-266_amd64.deb +Size: 1730 +MD5sum: 98e3f6f1bbc44e56d70ea1c2dd26553a +SHA1: d6b4c209f56c47ce376ab42e27a1532b845e38c5 +SHA256: a82600e33d987889b7e500ccaf157197076cbcce5f5071d8acaef1cfdd7781a5 +SHA512: f82bd1d8eb0761cfd208e0a5c6ba1c00de8a7ab15501f77f298cab103bb33639f943797df61298316c78fd24f0efab4ecd5fe1481a64f1fa7f3776d6ec7228c5 +Description: Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic 2021.1.2 for Linux* for Intel(R) 64 + + +Package: intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-2021.2.0 +Architecture: amd64 +Version: 2021.2.0-610 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 74173 +Depends: intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-runtime-2021.2.0, intel-oneapi-compiler-dpcpp-cpp-classic-fortran-shared-runtime-2021.2.0, intel-oneapi-dpcpp-cpp-2021.2.0, intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-common-2021.2.0, intel-oneapi-common-vars (>= 2021.2.0-195), intel-oneapi-common-licensing-2021.2.0 +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-2021.2.0-2021.2.0-610_amd64.deb +Size: 17517366 +MD5sum: 2cbd484c99e14aeff3559157700858df +SHA1: 01db45eb2e2cb35b26feba94a913503a35b4d18a +SHA256: b6698762fdd2a40582234f8c72d92a31bb07d6d604bfbe4eb3296293df2785a6 +SHA512: 952931011cd2a185915552935f42290d3e6272c62523b2ffd5e60be7045dab3802789927bdfa468ede1d3a9ad17e61bf9f7457aad75b28057eb9324b64f2a4dd +Description: Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic 2021.2.0 for Linux* for Intel(R) 64 + + +Package: intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic +Architecture: amd64 +Version: 2021.2.0-610 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Provides: intel-oneapi-dpcpp-cpp-compiler-pro (= 2021.2.0-610) +Depends: intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-2021.2.0 +Breaks: intel-oneapi-dpcpp-cpp-compiler-pro (<< 2021.2.0-610) +Replaces: intel-oneapi-dpcpp-cpp-compiler-pro (<< 2021.2.0-610) +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-2021.2.0-610_amd64.deb +Size: 1728 +MD5sum: 1b4ddbcf42a044815ee520e255745a62 +SHA1: 1182fd6745faea2010aafc27157532c74824e633 +SHA256: 3b0f7705de1b16e8226f46514065bacb472e8177bbd3dd4925b3b295b9feaabb +SHA512: e2b1210ab38c01c3bc98eef66b0d236e6e5e6c14689abd5b7f180092e4d714ca7175a47b12b69c6ae524d7ab1e893eecf3282603d0736b4fc8fa765d9c6703cd +Description: Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic 2021.2.0 for Linux* for Intel(R) 64 + + +Package: intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-2021.3.0 +Architecture: amd64 +Version: 2021.3.0-3350 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 74232 +Depends: intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-runtime-2021.3.0, intel-oneapi-compiler-dpcpp-cpp-classic-fortran-shared-runtime-2021.3.0, intel-oneapi-dpcpp-cpp-2021.3.0, intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-common-2021.3.0, intel-oneapi-common-vars (>= 2021.3.0-261), intel-oneapi-common-licensing-2021.3.0 +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-2021.3.0-2021.3.0-3350_amd64.deb +Size: 17493194 +MD5sum: e84648bc7edea47518d4dcf3f98c160c +SHA1: 065c50899bd274d671105d818ec34115c6cfb299 +SHA256: 3a624cf059703c2e9beecf9cfc16082c44fa5c2c29ea362a5fba692f69d027e7 +SHA512: 5c908b52de83c0f5ee9add5ca525c864f0ddfba709d947765a3974fb2ade2126480045b70382c2a08e16fbf52e9887c0590e5c0cdac9e7ed9ed589241a9a4286 +Description: Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic 2021.3.0 for Linux* for Intel(R) 64 + + +Package: intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic +Architecture: amd64 +Version: 2021.3.0-3350 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Provides: intel-oneapi-dpcpp-cpp-compiler-pro (= 2021.3.0-3350) +Depends: intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-2021.3.0 +Breaks: intel-oneapi-dpcpp-cpp-compiler-pro (<< 2021.3.0-3350) +Replaces: intel-oneapi-dpcpp-cpp-compiler-pro (<< 2021.3.0-3350) +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-2021.3.0-3350_amd64.deb +Size: 1730 +MD5sum: 289209d28b87bb631ef9831d1993ceba +SHA1: 39f9c6308b1347c39dfd72c33907d44fbc8fe094 +SHA256: c6e6e51f45410f6aefdbe31915a4b5c1cafbf5b69d8ec308460d8df48d84a611 +SHA512: 707469795956c10b67ce709cd2adf6aaf987023769b1e3c07019a6990caebb4c860d3627f6824a035765b40a0ac9531466633dc32144891eb9afbb37bd661185 +Description: Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic 2021.3.0 for Linux* for Intel(R) 64 + + +Package: intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-2021.4.0 +Architecture: amd64 +Version: 2021.4.0-3561 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 74253 +Depends: intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-runtime-2021.4.0, intel-oneapi-compiler-dpcpp-cpp-classic-fortran-shared-runtime-2021.4.0, intel-oneapi-dpcpp-cpp-2021.4.0, intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-common-2021.4.0, intel-oneapi-common-vars (>= 2021.4.0-327), intel-oneapi-common-licensing-2021.4.0 +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-2021.4.0-2021.4.0-3561_amd64.deb +Size: 17511514 +MD5sum: 8fc9fb092434a85d152353a4ce1d935e +SHA1: b9260741ea2edc182442e65709b2d34f1dec55bb +SHA256: 76fc06d9749ba3b4cfba7079ce348e9af2c62a8d1d229899cfb998c4d39eb0f7 +SHA512: 42cf1f71070090ec63cb9c70536788cb5f22b45d8b9b08ddd7f028ca3c086df0b627d83b9cee2129b5e7366208cc8e9849e627defd57cc736f8ee0c688992809 +Description: Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic 2021.4.0 for Linux* for Intel(R) 64 + + +Package: intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic +Architecture: amd64 +Version: 2021.4.0-3561 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Provides: intel-oneapi-dpcpp-cpp-compiler-pro (= 2021.4.0-3561) +Depends: intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-2021.4.0 +Breaks: intel-oneapi-dpcpp-cpp-compiler-pro (<< 2021.4.0-3561) +Replaces: intel-oneapi-dpcpp-cpp-compiler-pro (<< 2021.4.0-3561) +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-2021.4.0-3561_amd64.deb +Size: 1732 +MD5sum: c8803eacb4fd9e10af5121bf8b67f525 +SHA1: eaf610ca50e1971be145e3020582f5322a95e4c6 +SHA256: b20c8e767fb1764f7e7f785152d1eab56cc48a71020448d854dd1cb78f8b7e8a +SHA512: c722809f88c7771f171c76e6787e43dbf19c09beb1bb2483a1fa9e3db0f4512866f84d6718e21bcaacd98f6a3722257d1a91f6ecdc92b855e01517cff22f741f +Description: Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic 2021.4.0 for Linux* for Intel(R) 64 + + +Package: intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-2022.0.1 +Architecture: amd64 +Version: 2022.0.1-3633 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 74645 +Depends: intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-runtime-2022.0.1, intel-oneapi-compiler-dpcpp-cpp-classic-fortran-shared-runtime-2022.0.1, intel-oneapi-dpcpp-cpp-2022.0.1, intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-common-2022.0.1, intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-2022.0.1-2022.0.1-3633_amd64.deb +Size: 17553290 +MD5sum: 7617c561f83c443f44da739443c67f79 +SHA1: 076c3c4e7ff7f1816f597dcbb24ef53b130de580 +SHA256: 056e15c882cab5d31bc77c702b7f87468951a59519cf736d2f531ed1f20204ac +SHA512: dff1c17267e6c78ccb7ce43d265f52d089a340a5a3f98f9d6d359422d34dc6509286cba22eea164aff6216fcf67dabf5827fbb48d2540399f61b220d5b226fc8 +Description: Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic 2022.0.1 for Linux* for Intel(R) 64 + + +Package: intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic +Architecture: amd64 +Version: 2022.0.1-3633 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Provides: intel-oneapi-dpcpp-cpp-compiler-pro (= 2022.0.1-3633) +Depends: intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-2022.0.1 +Breaks: intel-oneapi-dpcpp-cpp-compiler-pro (<< 2022.0.1-3633) +Replaces: intel-oneapi-dpcpp-cpp-compiler-pro (<< 2022.0.1-3633) +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-2022.0.1-3633_amd64.deb +Size: 1732 +MD5sum: a7dd4a80b9e88a46bdb2154912446a9d +SHA1: fc317cac5804a704353165098fa58a3175918f87 +SHA256: b0d9964f93f1cf98f384cda52fc24b73a38cb4dc9ed5ba0c1aca1be706a8f3e2 +SHA512: b01c3817b2631128e1766957fae524e8a395d5315485edefaae096cbc2211de409c69f54e059ee959d2acedadf2beebde00cd363a9f37a6ba43a7a54ed2aa652 +Description: Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic 2022.0.1 for Linux* for Intel(R) 64 + + +Package: intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-2022.0.2 +Architecture: amd64 +Version: 2022.0.2-3658 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 74645 +Depends: intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-runtime-2022.0.2, intel-oneapi-compiler-dpcpp-cpp-classic-fortran-shared-runtime-2022.0.2, intel-oneapi-dpcpp-cpp-2022.0.2, intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-common-2022.0.2, intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-2022.0.2-2022.0.2-3658_amd64.deb +Size: 17569034 +MD5sum: e2a6578a0303c87f3f76848e38aa42d1 +SHA1: e6ff7281c449614b81e208558e924a0c3d3f6f3b +SHA256: c6c5ed504714d5af9b1569f1783c0eb5f69724077bb0c5221d616774772f0c09 +SHA512: 08e9847a46418e38e72640242c4778ea637a5f2b5c1530d633e28e1310911d7aff78e7b2892aa77e54962c6dd0274391bb14520d77b27de893ad671f744be9bc +Description: Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic 2022.0.2 for Linux* for Intel(R) 64 + + +Package: intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic +Architecture: amd64 +Version: 2022.0.2-3658 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Provides: intel-oneapi-dpcpp-cpp-compiler-pro (= 2022.0.2-3658) +Depends: intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-2022.0.2 +Breaks: intel-oneapi-dpcpp-cpp-compiler-pro (<< 2022.0.2-3658) +Replaces: intel-oneapi-dpcpp-cpp-compiler-pro (<< 2022.0.2-3658) +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-2022.0.2-3658_amd64.deb +Size: 1732 +MD5sum: a83a3f6e26df4c5e6c0cfcbb45aaea8c +SHA1: fefcb2eca954d912d4259ae1ff8d49da2528516e +SHA256: a43d28e0a00c8e345970478df87d4fbe304bfe5736e87707a093642c325c10f1 +SHA512: 1ed4ead48c21a09723e770fcfdc1d9b553f3a328ec22430ff190fca5550c9b9c4c2184653b32c4d09ebc6612970d57b3ef9c46cbb711afc05204d4d290041065 +Description: Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic 2022.0.2 for Linux* for Intel(R) 64 + + +Package: intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-2022.1.0 +Architecture: amd64 +Version: 2022.1.0-3768 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 75166 +Depends: intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-runtime-2022.1.0, intel-oneapi-compiler-dpcpp-cpp-classic-fortran-shared-runtime-2022.1.0, intel-oneapi-dpcpp-cpp-2022.1.0, intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-common-2022.1.0, intel-oneapi-common-vars (>= 2022.1.0-161), intel-oneapi-common-licensing-2022.1.0 +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-2022.1.0-2022.1.0-3768_amd64.deb +Size: 17767648 +MD5sum: f854940f342e0b10fa04734e7e1f6082 +SHA1: 779356d10dda3cdd13c3c8a5ce45b2dba4b3dabb +SHA256: 0407cf12127f641f1e1b50e8e8e3c6c9cd27be40b849d697401fa8c140604c23 +SHA512: ffb7aec41b675ba7458a397ab603d546d6ee3538a13d45a621a044c1ef29641720fbe91d7ca24d3067a97fea764aff13f1675ed1dcbbf7b28bfe12a7355a0495 +Description: Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic 2022.1.0 for Linux* for Intel(R) 64 + + +Package: intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic +Architecture: amd64 +Version: 2022.1.0-3768 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Provides: intel-oneapi-dpcpp-cpp-compiler-pro (= 2022.1.0-3768) +Depends: intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-2022.1.0 +Breaks: intel-oneapi-dpcpp-cpp-compiler-pro (<< 2022.1.0-3768) +Replaces: intel-oneapi-dpcpp-cpp-compiler-pro (<< 2022.1.0-3768) +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-2022.1.0-3768_amd64.deb +Size: 1808 +MD5sum: 8899138f9fb9b7c1a77db63e86d52b3f +SHA1: a915e39af94c3d36d1f0bff2f259052f45378995 +SHA256: ba1a53e93fbd60fad4d17a0d38f14b8553775508e5400feffc95fbf0a3da562b +SHA512: 0a10415cbb3c8a5c9a73d3ab951ff91133e3d87552d51b0c4fbe8944f64849230f2d097a971daeb1028b1767a7771e162cc5dea2f6cbf96d4016b4f97c5bfbe7 +Description: Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic 2022.1.0 for Linux* for Intel(R) 64 + + +Package: intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-2022.2.0 +Architecture: amd64 +Version: 2022.2.0-8734 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 75314 +Depends: intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-runtime-2022.2.0, intel-oneapi-compiler-dpcpp-cpp-classic-fortran-shared-runtime-2022.2.0, intel-oneapi-dpcpp-cpp-2022.2.0, intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-common-2022.2.0, intel-oneapi-common-vars (>= 2022.2.0-8694), intel-oneapi-common-licensing-2022.2.0 +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-2022.2.0-2022.2.0-8734_amd64.deb +Size: 17795252 +MD5sum: 00f990a9f9017eaf46d19b67733f19c4 +SHA1: 90049897a49d42e534c2a8d4d224d86c4755bb88 +SHA256: 754d03784fa3a9b7bb79f409cc3de7ab7fd1595784395d04ddc59d229fdb4f72 +SHA512: ffbcb944b836a273ab746cbca30423d78b92b19db57a4ed294663d6efd9dbc6933eb1835277ed647fb6fa878f693a5a59cf6e4010e9ab75fce14b633de22df10 +Description: Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic 2022.2.0 for Linux* for Intel(R) 64 + + +Package: intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic +Architecture: amd64 +Version: 2022.2.0-8734 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Provides: intel-oneapi-dpcpp-cpp-compiler-pro (= 2022.2.0-8734) +Depends: intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-2022.2.0 +Breaks: intel-oneapi-dpcpp-cpp-compiler-pro (<< 2022.2.0-8734) +Replaces: intel-oneapi-dpcpp-cpp-compiler-pro (<< 2022.2.0-8734) +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-2022.2.0-8734_amd64.deb +Size: 1808 +MD5sum: f6b3bed75984ba2e8b5072801a1cb3e5 +SHA1: b39d958be3e94244fdee01923419366b31832e5a +SHA256: 17bbeecb27e1b0cac1b0e27c8e64ab079cd01064c53e545071c937cb7d859b85 +SHA512: 717b8a6e2dc2c4db5f11f1eab52dd6ef69d645e381b4c43500d80a87a73a0f9bef350395beca680ebe3b647457049472ff0cd144474c7a2dbfee350a6d9a7cfc +Description: Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic 2022.2.0 for Linux* for Intel(R) 64 + + +Package: intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic +Architecture: amd64 +Version: 2022.2.1-16953 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Provides: intel-oneapi-dpcpp-cpp-compiler-pro (= 2022.2.1-16953) +Depends: intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-2022.2.1 +Breaks: intel-oneapi-dpcpp-cpp-compiler-pro (<< 2022.2.1-16953) +Replaces: intel-oneapi-dpcpp-cpp-compiler-pro (<< 2022.2.1-16953) +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-2022.2.1-16953_amd64.deb +Size: 1812 +MD5sum: e4b4f1e79618c8a15a15ffebe7248c24 +SHA1: 726e2a267d4f8600dd52a0e664ed38447b453383 +SHA256: 95a0657528dfbfca26101d0b285e4c57591675dc5f5d01a240450ea4a95a5c15 +SHA512: 56b07f60978d3b9c9393483997410d09bff482ab1b9cd9bfa3d324385e378b4216511ced4568f2347602e1203dcd35ec217221c80c18c9e18f668fc6aff143d8 +Description: Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic 2022.2.1 for Linux* for Intel(R) 64 + + +Package: intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-2022.2.1 +Architecture: amd64 +Version: 2022.2.1-16953 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 75310 +Depends: intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-runtime-2022.2.1, intel-oneapi-compiler-dpcpp-cpp-classic-fortran-shared-runtime-2022.2.1, intel-oneapi-dpcpp-cpp-2022.2.1, intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-common-2022.2.1, intel-oneapi-common-vars (>= 2022.2.1-14969), intel-oneapi-common-licensing-2022.2.1 +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-2022.2.1-2022.2.1-16953_amd64.deb +Size: 17778760 +MD5sum: c81d1b2f0f358fa9848656b2e3e3ee0e +SHA1: 4cb8f07e9c85048d8a5420162b5b93b73b2268b8 +SHA256: f421fb706f94c5afa9aeda62035aae1ae772505f86e5c2b4d885c6a4638a4cd7 +SHA512: 7e7fc56e513180998b0960dda8634541f1b03ae5733905c63fd10f9986cb7cbc6a808c7cb1444fdebd541437c56f0b28d6cd2ab98965935a6dfeb21161b6d566 +Description: Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic 2022.2.1 for Linux* for Intel(R) 64 + + +Package: intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-2023.0.0 +Architecture: amd64 +Version: 2023.0.0-25370 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 76421 +Depends: intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-runtime-2023.0.0, intel-oneapi-compiler-dpcpp-cpp-classic-fortran-shared-runtime-2023.0.0, intel-oneapi-dpcpp-cpp-2023.0.0, intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-common-2023.0.0, intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing-2023.0.0 +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-2023.0.0-2023.0.0-25370_amd64.deb +Size: 17965400 +MD5sum: 167e725cc829b2e5cbae839d1d114b2b +SHA1: e0cfaddb8535edec61b7dd0e34bf470cc218b6a6 +SHA256: 073796db3c0452a08987dd9492f6abc80934c369d80e039bdeeaed39c387d46b +SHA512: 86d89cb92cd9115098bd23107dd42ec17a54d8fee2d585bc2f4b90e030338f1a390932b9f4911b440d0046723f5ec02fa2e941d289a5262fa22296d4efe9537a +Description: Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic 2023.0.0 for Linux* for Intel(R) 64 + + +Package: intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic +Architecture: amd64 +Version: 2023.0.0-25370 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Provides: intel-oneapi-dpcpp-cpp-compiler-pro (= 2023.0.0-25370) +Depends: intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-2023.0.0 +Breaks: intel-oneapi-dpcpp-cpp-compiler-pro (<< 2023.0.0-25370) +Replaces: intel-oneapi-dpcpp-cpp-compiler-pro (<< 2023.0.0-25370) +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-2023.0.0-25370_amd64.deb +Size: 1808 +MD5sum: 4d12232e9510b54b1b3eac8c83d31659 +SHA1: d6b1a758af0eb46d85012e65145df876f321b23c +SHA256: 7928a9aef5854d60424a9abc6669920f5c46dfd4c8381fcdc9e28bddcf507b8c +SHA512: 17d68da18263914118deb06078d8019a12084ee5b65298c492f791cd3906bf0d885a4671f2d587aa6b05527bae763026b641ae88b9fdf74541e31ec251685e7b +Description: Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic 2023.0.0 for Linux* for Intel(R) 64 + + +Package: intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-2023.1.0 +Architecture: amd64 +Version: 2023.1.0-46305 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 76621 +Depends: intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-runtime-2023.1.0, intel-oneapi-compiler-dpcpp-cpp-classic-fortran-shared-runtime-2023.1.0, intel-oneapi-dpcpp-cpp-2023.1.0, intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-common-2023.1.0, intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing-2023.1.0 +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-2023.1.0-2023.1.0-46305_amd64.deb +Size: 18010816 +MD5sum: 9e37a9751f8bba08711ba08498713956 +SHA1: 1e83ba1ae8d7516be074628c3815cbe4ceb248e1 +SHA256: 8a85a64359f8ea49d82a0a1e89d9a456d3447f917c5a0682d2f6b3d09c6fe48e +SHA512: 5f62b23a8263e8c1226bd681034f872fd27ec10fa87d0eab403c7a024809c2927d8df4d3192986eedb0ad5eee6297f912928fb2d7af3dcb1466ea4b499abf094 +Description: Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic 2023.1.0 for Linux* for Intel(R) 64 + + +Package: intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic +Architecture: amd64 +Version: 2023.1.0-46305 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Provides: intel-oneapi-dpcpp-cpp-compiler-pro (= 2023.1.0-46305) +Depends: intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-2023.1.0 +Breaks: intel-oneapi-dpcpp-cpp-compiler-pro (<< 2023.1.0-46305) +Replaces: intel-oneapi-dpcpp-cpp-compiler-pro (<< 2023.1.0-46305) +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-2023.1.0-46305_amd64.deb +Size: 1812 +MD5sum: 87427b2ced9081ec342d44cf5ca47ea1 +SHA1: 20c7068effe9dbf38971123efb3ee4fca5ddf8dc +SHA256: 7a1689b820bc2210197f576ba9a18428810e7084afabc447c4de416a5691aefc +SHA512: 35e056e19526bc57bad4def60d3368a08f526a62cfe6f613cee63cb12fe4889388a4e3ed9a848337ed3667eeafe2ba17c754141e2734dc2580c79b08920bb8be +Description: Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic 2023.1.0 for Linux* for Intel(R) 64 + + +Package: intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-runtime-2021.1.1 +Architecture: amd64 +Version: 2021.1.1-189 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 48 +Depends: intel-oneapi-compiler-dpcpp-cpp-classic-fortran-shared-runtime-2021.1.1, intel-oneapi-compiler-dpcpp-cpp-runtime-2021.1.1,intel-oneapi-common-vars,intel-oneapi-common-licensing +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-runtime-2021.1.1-2021.1.1-189_amd64.deb +Size: 14114 +MD5sum: 791da109b6d7164c2ef58176481c8bf8 +SHA1: 65b15c6877cf068308f567e2e69d8c007c6fe99e +SHA256: 24dc99b3fbc088adc37c0290bae1e0cb7b7704d57315f11217a97790de3aeaa4 +SHA512: 7626a6c953e8e3d66c67a882da95ee3ab90bb9d520c1c25ac5d84c070ff7fae12f47ea3f5b045162694640904a0f4d0b37409f289b2ed93c1d8ebaa822388cfb +Description: Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic 2021.1.1 for Linux* runtime package for Intel(R) 64 + + +Package: intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-runtime-2021.1.2 +Architecture: amd64 +Version: 2021.1.2-266 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 48 +Depends: intel-oneapi-compiler-dpcpp-cpp-classic-fortran-shared-runtime-2021.1.2, intel-oneapi-compiler-dpcpp-cpp-runtime-2021.1.2,intel-oneapi-common-vars,intel-oneapi-common-licensing +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-runtime-2021.1.2-2021.1.2-266_amd64.deb +Size: 14108 +MD5sum: 0d85c2825f55028c4e7273df8be5d762 +SHA1: 344588550b39dc0a50d26e2f7b5b1c58d4c527b7 +SHA256: 7d01c67bf1cfb1de5a78b3b5c5c7704e70a8057c313e79e35a97711f972cb132 +SHA512: 12ddb8058a48902806c724bf985b97e8ee7ecb010911aad6b42d0d0006fd132183bc5f7ec928e79b1cc556c21d09ac095502fd31fd3f778abf65fe243e8da608 +Description: Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic 2021.1.2 for Linux* runtime package for Intel(R) 64 + + +Package: intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-runtime-2021.2.0 +Architecture: amd64 +Version: 2021.2.0-610 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 48 +Depends: intel-oneapi-compiler-dpcpp-cpp-classic-fortran-shared-runtime-2021.2.0, intel-oneapi-compiler-dpcpp-cpp-runtime-2021.2.0, intel-oneapi-common-vars (>= 2021.2.0-195), intel-oneapi-common-licensing-2021.2.0 +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-runtime-2021.2.0-2021.2.0-610_amd64.deb +Size: 14128 +MD5sum: 0db6d59753690429372df0f7edf85f30 +SHA1: ca73fb84e8c63083df0b48f8f31944c208663123 +SHA256: cd32dc63cbfc806f4a7b3bf90ab33ae5a39e2d3f65a114a4c2180dde21887a6a +SHA512: 382e17144bb7da0dc0abfbdbf5546f18daf0bc2abc12b5f6dc319950517da78965d17026cae2a0e1ee200aebc32758c52b9ef1d8b3f46dc93885bbd537434c22 +Description: Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic 2021.2.0 for Linux* runtime package for Intel(R) 64 + + +Package: intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-runtime-2021.3.0 +Architecture: amd64 +Version: 2021.3.0-3350 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 48 +Depends: intel-oneapi-compiler-dpcpp-cpp-classic-fortran-shared-runtime-2021.3.0, intel-oneapi-compiler-dpcpp-cpp-runtime-2021.3.0, intel-oneapi-common-vars (>= 2021.3.0-261), intel-oneapi-common-licensing-2021.3.0 +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-runtime-2021.3.0-2021.3.0-3350_amd64.deb +Size: 14116 +MD5sum: ab4a45105880765edb635b1cf9acf220 +SHA1: d957f8a8b97bcb7f81acdc8b724a37fe7d3bf473 +SHA256: c805894c81e07e738762408870c0a854bda6da85de291d5d4a640f6b7d65f4ff +SHA512: 5cf4870b2d4c924d963d1db63a98ed24a41df8ea6c7409eb1bc2aa72f65177eadb0d3f549d97a484e0168fdafe9a361bc7e56eb30c20245e469081315e8e557a +Description: Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic 2021.3.0 for Linux* runtime package for Intel(R) 64 + + +Package: intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-runtime-2021.4.0 +Architecture: amd64 +Version: 2021.4.0-3561 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 48 +Depends: intel-oneapi-compiler-dpcpp-cpp-classic-fortran-shared-runtime-2021.4.0, intel-oneapi-compiler-dpcpp-cpp-runtime-2021.4.0, intel-oneapi-common-vars (>= 2021.4.0-327), intel-oneapi-common-licensing-2021.4.0 +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-runtime-2021.4.0-2021.4.0-3561_amd64.deb +Size: 14140 +MD5sum: 40a8b89faec1f05d2cb2088099e86b42 +SHA1: 99e5c1ee25051bcf146a87161d3526dffe926130 +SHA256: 051c5fe18944f067df41b0b067ff0cebf39ba2fbb27e8f752a211e23f5d64433 +SHA512: 7357b0e2b6dd90796c73645aeea69c41cf667711352710f137e5c9ae265d8bb776ec824b3ba158e0922727da081333ef44f259908c92449bae0326bb3c811187 +Description: Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic 2021.4.0 for Linux* runtime package for Intel(R) 64 + + +Package: intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-runtime-2022.0.1 +Architecture: amd64 +Version: 2022.0.1-3633 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 48 +Depends: intel-oneapi-compiler-dpcpp-cpp-classic-fortran-shared-runtime-2022.0.1, intel-oneapi-compiler-dpcpp-cpp-runtime-2022.0.1, intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-runtime-2022.0.1-2022.0.1-3633_amd64.deb +Size: 14140 +MD5sum: d80574847b85565a1150a818a024352f +SHA1: 5f9801468cf793dbb35094ea6ffb79129b5e3d26 +SHA256: 0547b787985e3df167a50f4c9d636528ab5978435cf9b1559c590b13b5d69cd8 +SHA512: 3ad66114b9efed60e5e8eed57fcc4c0c44b3088fe5ec4dd88ce83419b3c1a79ee7d23ded354acb750aa61ff98d751f441a68ed6848f65cc4795e0fe6382f5a5e +Description: Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic 2022.0.1 for Linux* runtime package for Intel(R) 64 + + +Package: intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-runtime-2022.0.2 +Architecture: amd64 +Version: 2022.0.2-3658 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 48 +Depends: intel-oneapi-compiler-dpcpp-cpp-classic-fortran-shared-runtime-2022.0.2, intel-oneapi-compiler-dpcpp-cpp-runtime-2022.0.2, intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-runtime-2022.0.2-2022.0.2-3658_amd64.deb +Size: 14126 +MD5sum: 1ee20054bf5df284858d22546d790cdf +SHA1: e089aa0068e54934ddae2a558e9c66239446968e +SHA256: d8acfd475dacdaabbe76551d2b04c72fd5149e04043a3e12038b5cabf0891a2f +SHA512: f09d4df1209edabb6f8a7e09af5ae1c941ebe5f2efd43df56a7422e212d31950d01245222f940c90c14a3dc47a6b9e18b880891e3acee3deb3f7878a1f582272 +Description: Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic 2022.0.2 for Linux* runtime package for Intel(R) 64 + + +Package: intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-runtime-2022.1.0 +Architecture: amd64 +Version: 2022.1.0-3768 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 49 +Depends: intel-oneapi-compiler-dpcpp-cpp-classic-fortran-shared-runtime-2022.1.0, intel-oneapi-compiler-dpcpp-cpp-runtime-2022.1.0, intel-oneapi-common-vars (>= 2022.1.0-161), intel-oneapi-common-licensing-2022.1.0 +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-runtime-2022.1.0-2022.1.0-3768_amd64.deb +Size: 14218 +MD5sum: 4ca7205398556411294dcdc34c0ffe10 +SHA1: f58f0e63a195b035a5a47362fd119fe36d76ad0c +SHA256: 70d05bfb37754c26e706ce5703b772671685660a386188be817ed81bb2e2a025 +SHA512: 466ff3234143042015b7e497b424f4b3a2e509a35c84a06a686da714545b294f5e94150c937a931f545ace80d454371f0043c63e6447f629292c63219f7d1045 +Description: Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic 2022.1.0 for Linux* runtime package for Intel(R) 64 + + +Package: intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-runtime-2022.2.0 +Architecture: amd64 +Version: 2022.2.0-8734 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 88 +Depends: intel-oneapi-compiler-dpcpp-cpp-classic-fortran-shared-runtime-2022.2.0, intel-oneapi-compiler-dpcpp-cpp-runtime-2022.2.0, intel-oneapi-common-vars (>= 2022.2.0-8694), intel-oneapi-common-licensing-2022.2.0 +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-runtime-2022.2.0-2022.2.0-8734_amd64.deb +Size: 14206 +MD5sum: 92e40468c9187853bce10cbc02998849 +SHA1: 93525c1b093a27bb96a262e874daab4e18a60578 +SHA256: c0c4e289aff02307cdf5737eeb30e04adb4477d6646b28638ee79a6956eab6bf +SHA512: 625e99c8d8bc0accc83b065eb4638398d1b7eed2eacad9bb16f6de5b9f15bc27d5463a57ab45cce61b3da9c404d82b4878055e5ca2d70ce7837de0f7a4d417b5 +Description: Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic 2022.2.0 for Linux* runtime package for Intel(R) 64 + + +Package: intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-runtime-2022.2.1 +Architecture: amd64 +Version: 2022.2.1-16953 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 88 +Depends: intel-oneapi-compiler-dpcpp-cpp-classic-fortran-shared-runtime-2022.2.1, intel-oneapi-compiler-dpcpp-cpp-runtime-2022.2.1, intel-oneapi-common-vars (>= 2022.2.1-14969), intel-oneapi-common-licensing-2022.2.1 +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-runtime-2022.2.1-2022.2.1-16953_amd64.deb +Size: 14206 +MD5sum: a98bebbfdb3f81978021bdb1de09b228 +SHA1: c3216e6ce62ea8eccb31d2700edaec07e34a398e +SHA256: eae2812a9b24cfa4c49d3f729de59f8abe8eda2f034f777f634a68d886b444ff +SHA512: 6b0797a7233d51f0935857a9c4a8a09b8798fbb3767ee150556508b46c1731b3e32c902c72f7a2a80ea3ce866438c208d9630c52d55898bf26601eee352a40fc +Description: Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic 2022.2.1 for Linux* runtime package for Intel(R) 64 + + +Package: intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-runtime-2023.0.0 +Architecture: amd64 +Version: 2023.0.0-25370 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 88 +Depends: intel-oneapi-compiler-dpcpp-cpp-classic-fortran-shared-runtime-2023.0.0, intel-oneapi-compiler-dpcpp-cpp-runtime-2023.0.0, intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing-2023.0.0 +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-runtime-2023.0.0-2023.0.0-25370_amd64.deb +Size: 14250 +MD5sum: ebd688374c313c3ef18ee1e10cf36841 +SHA1: 93287165e43cb3b6cee7905ab9861ca29e7dd160 +SHA256: b5e39e8d1b9b8e4d86cd51e32f79f1cef3fe786d78e071deb5ff6a25b5d106e6 +SHA512: a0ae57a01acd613a53ec89068c63589895924463a0a34d48c6997594d513418d22926b74a943bbb59a64b21e08b12c2a939598700ec973f95d4ced9f7fcc4210 +Description: Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic 2023.0.0 for Linux* runtime package for Intel(R) 64 + + +Package: intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-runtime-2023.1.0 +Architecture: amd64 +Version: 2023.1.0-46305 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 88 +Depends: intel-oneapi-compiler-dpcpp-cpp-classic-fortran-shared-runtime-2023.1.0, intel-oneapi-compiler-dpcpp-cpp-runtime-2023.1.0, intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing-2023.1.0 +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-runtime-2023.1.0-2023.1.0-46305_amd64.deb +Size: 14206 +MD5sum: c8e143b49eae226e85de76b1976039a9 +SHA1: db02f13e9b5f398d9607c985e87c55072e68e31d +SHA256: 2b12ab367bbf7e07d1f9da0b3ec6b3dd409703cb08802cd1e87b78192d90cf39 +SHA512: ee516097ba82b6250b380f47854a5c57fa32b71490dc77fcdf40013c6628eafe81bb74b165b8be531526a5619d49d4cd5e8efe77ee968fc57826276317292ee3 +Description: Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic 2023.1.0 for Linux* runtime package for Intel(R) 64 + + +Package: intel-oneapi-compiler-dpcpp-cpp-classic-fortran-shared-runtime-2021.1.1 +Architecture: amd64 +Version: 2021.1.1-189 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 318 +Depends: intel-oneapi-compiler-shared-runtime-2021.1.1,intel-oneapi-common-vars,intel-oneapi-common-licensing +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-classic-fortran-shared-runtime-2021.1.1-2021.1.1-189_amd64.deb +Size: 79542 +MD5sum: 44fdf1f0f9e56c3253eb7e8e9bb8ebd6 +SHA1: 0b59a28a1c4310b2ba3ae4b48bcf35cda6080403 +SHA256: 2a8c96945a90a0d2d75b3bfd34c69cdfdcdcc6c9cca7f9beb948b83f191aede3 +SHA512: cf66735c2ebe145dc2256cc1efef36a542af08987ff53186620dfbce704370a357f84e1dca0c5f78d34bc6a06fd63aca669b2036bfea15b9c56ad4649d654249 +Description: Intel(R) DPC++/C++ Pro / Fortran Compiler Runtime Shared Files + + +Package: intel-oneapi-compiler-dpcpp-cpp-classic-fortran-shared-runtime-2021.1.2 +Architecture: amd64 +Version: 2021.1.2-266 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 318 +Depends: intel-oneapi-compiler-shared-runtime-2021.1.2,intel-oneapi-common-vars,intel-oneapi-common-licensing +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-classic-fortran-shared-runtime-2021.1.2-2021.1.2-266_amd64.deb +Size: 79740 +MD5sum: 5674e6b7c784c1c7b6144949e1533615 +SHA1: 2f06ba17cc4d923b6d5100f38b8e4a22c9880c89 +SHA256: 3c9a570690b60b84c21ebf3324823812179f7c623e33722067ec47329622ffde +SHA512: 43cd962d4f92dbca4d2cae870be6778e2691eef3e01c8fb6eabb74066a174a1c507a54d3db5c5a4e17de549ef32f92d3819d2d21edd079ab8e624af4aaabd8e0 +Description: Intel(R) DPC++/C++ Pro / Fortran Compiler Runtime Shared Files + + +Package: intel-oneapi-compiler-dpcpp-cpp-classic-fortran-shared-runtime-2021.2.0 +Architecture: amd64 +Version: 2021.2.0-610 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 318 +Depends: intel-oneapi-compiler-shared-runtime-2021.2.0, intel-oneapi-common-vars (>= 2021.2.0-195), intel-oneapi-common-licensing-2021.2.0 +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-classic-fortran-shared-runtime-2021.2.0-2021.2.0-610_amd64.deb +Size: 79794 +MD5sum: 478b65467dbc48f40939a5499701aa97 +SHA1: 3907e3f0cb40bb27fa4d7b023090ad71a8edd404 +SHA256: 0af1a42f77ece189b33565c23d471fa10316cb0f09b99f185e8a70a827e20b36 +SHA512: fdff0434828b71a08838c428fd3b5e7b189ed9760b738463c13508e55562b1796ec16de21a8dec96369533fc621ba57cf7f0fd78934ab1a4da507acfd24d0201 +Description: Intel(R) DPC++/C++ Pro / Fortran Compiler Runtime Shared Files + + +Package: intel-oneapi-compiler-dpcpp-cpp-classic-fortran-shared-runtime-2021.3.0 +Architecture: amd64 +Version: 2021.3.0-3350 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 318 +Depends: intel-oneapi-compiler-shared-runtime-2021.3.0, intel-oneapi-common-vars (>= 2021.3.0-261), intel-oneapi-common-licensing-2021.3.0 +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-classic-fortran-shared-runtime-2021.3.0-2021.3.0-3350_amd64.deb +Size: 79750 +MD5sum: a9b666f04e973c215a63540fa77d75c6 +SHA1: 10f00545f09fb7a9478f52a25048e69082e4e83e +SHA256: 30a168fc9e2ae4d61b30899f6f950d40a4b7a05bbfec31927b50a92d42c35493 +SHA512: a345457524fadc239a76df4855f556fff94a3bbfd537c704b35bdd55189a72739e8f6ada517ea39efeb3af86484668cf74bf8cec1563cde28a1aa2049f46cb39 +Description: Intel(R) DPC++/C++ Pro / Fortran Compiler Runtime Shared Files + + +Package: intel-oneapi-compiler-dpcpp-cpp-classic-fortran-shared-runtime-2021.4.0 +Architecture: amd64 +Version: 2021.4.0-3561 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 318 +Depends: intel-oneapi-compiler-shared-runtime-2021.4.0, intel-oneapi-common-vars (>= 2021.4.0-327), intel-oneapi-common-licensing-2021.4.0 +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-classic-fortran-shared-runtime-2021.4.0-2021.4.0-3561_amd64.deb +Size: 79700 +MD5sum: 7db6a53c3142a59163d23d4adfa55c2d +SHA1: bd97fd370d1dd7794a6c88eacb6ad2a2f942ed24 +SHA256: d1b0e20d69f74ec1cef7073efb722f8da816148b4fe3c709ffbc7f8217db0cc5 +SHA512: 61fe32611e5ff58b058afc08a03978c86f4abdbf1e77216dd0caa6bbe1b9f432ac65d7ca55e5ba5f7f91f0602684daa222436e2307a49d233022a4f2ff6eeadc +Description: Intel(R) DPC++/C++ Pro / Fortran Compiler Runtime Shared Files + + +Package: intel-oneapi-compiler-dpcpp-cpp-classic-fortran-shared-runtime-2022.0.1 +Architecture: amd64 +Version: 2022.0.1-3633 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 318 +Depends: intel-oneapi-compiler-shared-runtime-2022.0.1, intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-classic-fortran-shared-runtime-2022.0.1-2022.0.1-3633_amd64.deb +Size: 79498 +MD5sum: 4e62249871f9ae753c54f6449c9bba1c +SHA1: c24a337e31999a8309764e88027acd699b4de591 +SHA256: 8ee6469370dc37a5f50e58dabc0d7dfb0d5cb8ab4bc21cc982b2323aeec7978a +SHA512: 8c8e6d161b5b9107d8a73870d07a658c1cd7b089a8f782904d147813bfcf7dedd8b0af54c4a0df3a2e50bb34cb5d9f36f2c26f742ef0ec1fa2e267025e57a935 +Description: Intel(R) DPC++/C++ Pro / Fortran Compiler Runtime Shared Files + + +Package: intel-oneapi-compiler-dpcpp-cpp-classic-fortran-shared-runtime-2022.0.2 +Architecture: amd64 +Version: 2022.0.2-3658 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 318 +Depends: intel-oneapi-compiler-shared-runtime-2022.0.2, intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-classic-fortran-shared-runtime-2022.0.2-2022.0.2-3658_amd64.deb +Size: 79654 +MD5sum: a8588b3ef6f5cd0b87bba2726316bec4 +SHA1: 116833967883666ff3e08dda0229e53271fabb02 +SHA256: 4386c6575c61507e574943cfb29e5b48d9dde1928d5f28c3e168eac0dcab0a57 +SHA512: 44817f80f2dfcbec13358f00aa7e1965b3e9bd48276d20b9b0fca7048957b4ecd0df20bbfb6a30ad5760df8ef4708f4a71c990fe08163e6154e2d9d92d0c1454 +Description: Intel(R) DPC++/C++ Pro / Fortran Compiler Runtime Shared Files + + +Package: intel-oneapi-compiler-dpcpp-cpp-classic-fortran-shared-runtime-2022.1.0 +Architecture: amd64 +Version: 2022.1.0-3768 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 318 +Depends: intel-oneapi-compiler-shared-runtime-2022.1.0, intel-oneapi-common-vars (>= 2022.1.0-161), intel-oneapi-common-licensing-2022.1.0 +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-classic-fortran-shared-runtime-2022.1.0-2022.1.0-3768_amd64.deb +Size: 79682 +MD5sum: fd76837868d126569c505ca7f152322a +SHA1: ccb36794e96df43889f999b2558184afe5dde0cb +SHA256: 77b7201b5fe991152528ec40d586114edef12bb79c1a1a8fbfd6bd23c2aba5e1 +SHA512: 708f8b3d8894abe37fd52bce1f5662552eb21217aef00d2bbfa480c21b8fd5d0574dbc688f5dfad1b63638f09a8e78eaf4ad935d50ba7a8a2a674aa72dda3e5e +Description: Intel(R) DPC++/C++ Pro / Fortran Compiler Runtime Shared Files + + +Package: intel-oneapi-compiler-dpcpp-cpp-classic-fortran-shared-runtime-2022.2.0 +Architecture: amd64 +Version: 2022.2.0-8734 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 358 +Depends: intel-oneapi-compiler-shared-runtime-2022.2.0, intel-oneapi-common-vars (>= 2022.2.0-8694), intel-oneapi-common-licensing-2022.2.0 +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-classic-fortran-shared-runtime-2022.2.0-2022.2.0-8734_amd64.deb +Size: 79814 +MD5sum: 2ab62b1fc833c5ae3a0a1ca5c4ec374c +SHA1: f53668a75c41dad25c7dccb89a1aa747b3c53d8a +SHA256: 44ce019c29f419b2a821b17ebd138d0915373b7dab21c46a18fdca5787357a67 +SHA512: 7e0efd4feffe64b1566f5847283c56b5dc785628bf9a00a61f1c01fd438f16b9d49a45ab7f9bf3f6e637a786a97d55f5bdf26ab7e0e6eef7ca802702ea89b4f5 +Description: Intel(R) DPC++/C++ Pro / Fortran Compiler Runtime Shared Files + + +Package: intel-oneapi-compiler-dpcpp-cpp-classic-fortran-shared-runtime-2022.2.1 +Architecture: amd64 +Version: 2022.2.1-16953 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 358 +Depends: intel-oneapi-compiler-shared-runtime-2022.2.1, intel-oneapi-common-vars (>= 2022.2.1-14969), intel-oneapi-common-licensing-2022.2.1 +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-classic-fortran-shared-runtime-2022.2.1-2022.2.1-16953_amd64.deb +Size: 79814 +MD5sum: 815aaa7c013b80892fb35e496e988c1f +SHA1: be52648ea753c67882a23228fa7005e99fdffb80 +SHA256: b6e71421603e678a20120ae9a714eae9ed7dacd0ead277139313364f869d7a99 +SHA512: 4bb534c43cecaf6981369e5c9ec724c3bffd70458dec7a26a9f355e93e0710f9719e82944d068f6340e85c78e20348d54f9eae8943a95fb5ad6c4b14b6baa04b +Description: Intel(R) DPC++/C++ Pro / Fortran Compiler Runtime Shared Files + + +Package: intel-oneapi-compiler-dpcpp-cpp-classic-fortran-shared-runtime-2023.0.0 +Architecture: amd64 +Version: 2023.0.0-25370 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 358 +Depends: intel-oneapi-compiler-shared-runtime-2023.0.0, intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing-2023.0.0 +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-classic-fortran-shared-runtime-2023.0.0-2023.0.0-25370_amd64.deb +Size: 79898 +MD5sum: 32ec2b3f74d8e01681f1e158cd66f70a +SHA1: a9b76c1f558d327dd37ba5f2eeac637094b5885d +SHA256: 21fb81767abbf198b1adadc06e8a2ae912fa4b9a3f121448b6c0576433618677 +SHA512: 5450b98c8461ae9fcb1efd90068127d98d2aee881875d3e72e641865b2a206a23d743f1db05c828e18d1a258dff9482a8d8fc560edd1caa43a7a97986ee52011 +Description: Intel(R) DPC++/C++ Pro / Fortran Compiler Runtime Shared Files + + +Package: intel-oneapi-compiler-dpcpp-cpp-classic-fortran-shared-runtime-2023.1.0 +Architecture: amd64 +Version: 2023.1.0-46305 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 358 +Depends: intel-oneapi-compiler-shared-runtime-2023.1.0, intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing-2023.1.0 +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-classic-fortran-shared-runtime-2023.1.0-2023.1.0-46305_amd64.deb +Size: 80122 +MD5sum: fe95a0e407c1cdb0db2da0238b722d45 +SHA1: f65454561d88a478736b2a56fe9bfd534350660d +SHA256: 354e65a469a9ab8e5c72684ff8c2dc5731356bc7be45012eff23e75302624edf +SHA512: 7f78d9a727dbad6caf2798f515e618475219684d45e9a0310d1ed4ceafe47b4d6f9486c2c9d5b580d383465282b61e777e11aae62103c323956e4a515973a3c3 +Description: Intel(R) DPC++/C++ Pro / Fortran Compiler Runtime Shared Files + + +Package: intel-oneapi-compiler-dpcpp-cpp-runtime +Architecture: amd64 +Version: 2021.1.1-189 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Provides: intel-oneapi-dpcpp-cpp-compiler-runtime (= 2021.1.1-189) +Depends: intel-oneapi-compiler-dpcpp-cpp-runtime-2021.1.1 +Breaks: intel-oneapi-dpcpp-cpp-compiler-runtime (<< 2021.1.1-189) +Replaces: intel-oneapi-dpcpp-cpp-compiler-runtime (<< 2021.1.1-189) +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-runtime-2021.1.1-189_amd64.deb +Size: 2816 +MD5sum: 2fd7c0b8f03f8c3dbf22c211a0bb940f +SHA1: 0ee43e2307beb61a75f0f073033994bffbcbdbcc +SHA256: c5b5d2845ccbb72a1115af73b238b44551fefda491f2064a981d44182856077b +SHA512: d25f20b1195ef449b7d1ed5d8689d6b177f315492441a8016a790d3c5a25d3bcd77671b6ee782b398168e6797738d08756fdd8ef954acd2da87168171dcf309b +Description: Intel® oneAPI DPC++/C++ Compiler 2021.1.1 for Linux* runtime package for Intel(R) 64 + + +Package: intel-oneapi-compiler-dpcpp-cpp-runtime-2021.1.1 +Architecture: amd64 +Version: 2021.1.1-189 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 520774 +Depends: intel-oneapi-compiler-shared-runtime-2021.1.1, intel-oneapi-tbb,intel-oneapi-common-vars,intel-oneapi-common-licensing +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-runtime-2021.1.1-2021.1.1-189_amd64.deb +Size: 108250686 +MD5sum: c8063b805fc66119dff3bb4452fbaa57 +SHA1: dc1f7434e666e4b6bf43588b530a714112c5bd7e +SHA256: ec4d9655ab8359e8e114a9c90769c26ebfa517e2512aefe558a857081621d556 +SHA512: ea307ccada157d2c57750c9d05dfb8f5aec51d141ac64994071ec6d0db887a11f2b5b8fb3a6234735de3cc858ad9a5591806bac8496f5140b4aacc7b7ee233fc +Description: Intel® oneAPI DPC++/C++ Compiler 2021.1.1 for Linux* runtime package for Intel(R) 64 + + +Package: intel-oneapi-compiler-dpcpp-cpp-runtime-2021.1.2 +Architecture: amd64 +Version: 2021.1.2-266 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 520768 +Depends: intel-oneapi-compiler-shared-runtime-2021.1.2, intel-oneapi-tbb,intel-oneapi-common-vars,intel-oneapi-common-licensing +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-runtime-2021.1.2-2021.1.2-266_amd64.deb +Size: 108063550 +MD5sum: d15faa3412c9531a82740c9ee48bc1aa +SHA1: b5c55f8138162c77f23bedab8f414ff1f03d6342 +SHA256: f76c6f91c6bd16e0efce7bb2e5f30bc056d61d9ad11620dfca8dff613f20d954 +SHA512: 4c4e3f3887d9ddb348b8366731a0bd194b85f96dce00abdf3fb44baaa5c524255cd29859fe82ce58ddc015c49345c67e1920e419581e0fadf33a64dd98a57926 +Description: Intel® oneAPI DPC++/C++ Compiler 2021.1.2 for Linux* runtime package for Intel(R) 64 + + +Package: intel-oneapi-compiler-dpcpp-cpp-runtime +Architecture: amd64 +Version: 2021.1.2-266 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Provides: intel-oneapi-dpcpp-cpp-compiler-runtime (= 2021.1.2-266) +Depends: intel-oneapi-compiler-dpcpp-cpp-runtime-2021.1.2 +Breaks: intel-oneapi-dpcpp-cpp-compiler-runtime (<< 2021.1.2-266) +Replaces: intel-oneapi-dpcpp-cpp-compiler-runtime (<< 2021.1.2-266) +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-runtime-2021.1.2-266_amd64.deb +Size: 2818 +MD5sum: 80eeb1c65d1fd0dc53529a766202b6da +SHA1: 58688ab58a3e8e5fae0f99bc694f0b1e8d2bb30c +SHA256: eb7971111eeee5d6be4688132fe45bebe05c0fe59c17a4bc6a3ad2d6b695d9eb +SHA512: fd1aa99e1ffb430011423eb3fc380598e2bca5c33c9b84c212943d545677af76ab182288cd937894c1f08837fd8833a3bff10d306d8be4b107cc3f4fdcb2a252 +Description: Intel® oneAPI DPC++/C++ Compiler 2021.1.2 for Linux* runtime package for Intel(R) 64 + + +Package: intel-oneapi-compiler-dpcpp-cpp-runtime-2021.2.0 +Architecture: amd64 +Version: 2021.2.0-610 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 556590 +Depends: intel-oneapi-compiler-shared-runtime-2021.2.0, intel-oneapi-tbb-2021.2.0, intel-oneapi-common-vars (>= 2021.2.0-195), intel-oneapi-common-licensing-2021.2.0 +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-runtime-2021.2.0-2021.2.0-610_amd64.deb +Size: 118005854 +MD5sum: 321ffe3ac6bf471c1b025e002f54bb64 +SHA1: b09c465cf735becc8781392437ee8f7c8349af4c +SHA256: 3588eacc7f16181793bc2fe91b7386d6affedc3b501fd830058772f0cc16a65b +SHA512: a277beeb571d6cd46bbf5d2c192cdb5e7e882fa2b2cc7c508222c97494d84d5abb5ebb7a16b8d76a7ac52bb7f550e301238183e78dc397a074abf683902212bd +Description: Intel® oneAPI DPC++/C++ Compiler 2021.2.0 for Linux* runtime package for Intel(R) 64 + + +Package: intel-oneapi-compiler-dpcpp-cpp-runtime +Architecture: amd64 +Version: 2021.2.0-610 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Provides: intel-oneapi-dpcpp-cpp-compiler-runtime (= 2021.2.0-610) +Depends: intel-oneapi-compiler-dpcpp-cpp-runtime-2021.2.0 +Breaks: intel-oneapi-dpcpp-cpp-compiler-runtime (<< 2021.2.0-610) +Replaces: intel-oneapi-dpcpp-cpp-compiler-runtime (<< 2021.2.0-610) +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-runtime-2021.2.0-610_amd64.deb +Size: 2818 +MD5sum: b17ebea3a6fbff8f1022e76d358beecc +SHA1: c2fb1127db498565f358117da4aa6e108b36283d +SHA256: 98bc9b15ee2df44252971b25ad7cc58b591750f066d0fec19fb6d70fc4d27780 +SHA512: 24ca5c001f6e06c2725a15144a1f0361f576eceff124f0a3501b3423fe26c93118d60231e887408fd64687b951017e560f25b5267afee97d20a0ae497dc4432c +Description: Intel® oneAPI DPC++/C++ Compiler 2021.2.0 for Linux* runtime package for Intel(R) 64 + + +Package: intel-oneapi-compiler-dpcpp-cpp-runtime-2021.3.0 +Architecture: amd64 +Version: 2021.3.0-3350 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 634362 +Depends: intel-oneapi-compiler-shared-runtime-2021.3.0, intel-oneapi-tbb-2021.3.0, intel-oneapi-common-vars (>= 2021.3.0-261), intel-oneapi-common-licensing-2021.3.0 +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-runtime-2021.3.0-2021.3.0-3350_amd64.deb +Size: 128794804 +MD5sum: 430d40a5729629cd5e144462a6d73c23 +SHA1: feac08e5b198d1a5bfd5455dfce4334bcb18f272 +SHA256: 2b86330d4588d2fb327294ed312bedb43bcaccec85399738ba0339a728f7e65d +SHA512: d9be936b69ba32c95b4666deefa34ae7403c4f7ef429b08e2bc99a9837329c56b79e583c160729ddd5dc38f27bf33b4ed05fa1747ad1bbfd179859bd7c10a87b +Description: Intel® oneAPI DPC++/C++ Compiler 2021.3.0 for Linux* runtime package for Intel(R) 64 + + +Package: intel-oneapi-compiler-dpcpp-cpp-runtime +Architecture: amd64 +Version: 2021.3.0-3350 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Provides: intel-oneapi-dpcpp-cpp-compiler-runtime (= 2021.3.0-3350) +Depends: intel-oneapi-compiler-dpcpp-cpp-runtime-2021.3.0 +Breaks: intel-oneapi-dpcpp-cpp-compiler-runtime (<< 2021.3.0-3350) +Replaces: intel-oneapi-dpcpp-cpp-compiler-runtime (<< 2021.3.0-3350) +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-runtime-2021.3.0-3350_amd64.deb +Size: 2818 +MD5sum: 6eb1fd5d2a69269534f398f33dd490e7 +SHA1: e6d95da7b426364377c9f6a737bfcacf9c206444 +SHA256: bfb73a84b3e03143fed4998b083c055919aaee03ca77089e8dd373b9c5341c5a +SHA512: 32e53af978cd5a9a52f6e114da6e3a70d0af4bda9d50947f53c0350bc0136ae6f722faa8e69ac32a2430e6219bf58ca29b91ed438c8522b45cdab29a06f7dca8 +Description: Intel® oneAPI DPC++/C++ Compiler 2021.3.0 for Linux* runtime package for Intel(R) 64 + + +Package: intel-oneapi-compiler-dpcpp-cpp-runtime-2021.4.0 +Architecture: amd64 +Version: 2021.4.0-3561 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 298292 +Depends: intel-oneapi-compiler-shared-runtime-2021.4.0, intel-oneapi-tbb-2021.4.0, intel-oneapi-common-vars (>= 2021.4.0-327), intel-oneapi-common-licensing-2021.4.0 +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-runtime-2021.4.0-2021.4.0-3561_amd64.deb +Size: 56222438 +MD5sum: 6773c284009f4d8c45752c9d0f15899a +SHA1: badb8868b674fbd738b64073351b30a19b6e562e +SHA256: 90c8cd4d919fe1ca1880b3ea27e23d6a313c0028ba8ae6670125ad86e44897f9 +SHA512: a055489205660c4be3598bd4d429a42d74aad9fd53efdcf8f16505da70b6c06a07b15702cdc44b099a739086525ef091a3fccd7839bda0ad7b16bb15eab2106a +Description: Intel® oneAPI DPC++/C++ Compiler 2021.4.0 for Linux* runtime package for Intel(R) 64 + + +Package: intel-oneapi-compiler-dpcpp-cpp-runtime +Architecture: amd64 +Version: 2021.4.0-3561 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Provides: intel-oneapi-dpcpp-cpp-compiler-runtime (= 2021.4.0-3561) +Depends: intel-oneapi-compiler-dpcpp-cpp-runtime-2021.4.0 +Breaks: intel-oneapi-dpcpp-cpp-compiler-runtime (<< 2021.4.0-3561) +Replaces: intel-oneapi-dpcpp-cpp-compiler-runtime (<< 2021.4.0-3561) +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-runtime-2021.4.0-3561_amd64.deb +Size: 2818 +MD5sum: ec388306c665ca57e3fa3a2fccaefb6a +SHA1: 4e0c80ca1951c1c67af2827b7b080b9ef89835d3 +SHA256: 609964b3fb7098db68ab8b930e20af4990f4f970cce3ec7c1f992b5477821e95 +SHA512: 501be6c74ec90bdf3b4609170dbdd100a29dc8ab861dd49bd05fc7832fe5f5537bdba98f30bd8b48127999a6bfdf90cfcc68dfba26afcdc28ac6e20ce68d285c +Description: Intel® oneAPI DPC++/C++ Compiler 2021.4.0 for Linux* runtime package for Intel(R) 64 + + +Package: intel-oneapi-compiler-dpcpp-cpp-runtime-2022.0.1 +Architecture: amd64 +Version: 2022.0.1-3633 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 119544 +Depends: intel-oneapi-compiler-shared-runtime-2022.0.1, intel-oneapi-tbb-2021.5.0, intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-runtime-2022.0.1-2022.0.1-3633_amd64.deb +Size: 25665976 +MD5sum: e8a53d1fd666132398e429fd81a29d75 +SHA1: 19fb04406c18c632f78380ba4a7b175b1630a3c3 +SHA256: aff44b05612e463bd1ea0ca079cd817fb5b236c0036ff4d388e368c7bf7b3a72 +SHA512: 9462e2aa8a501cba35cb840f7b18fd5806b8ed0620bb4854e312907e1ef136a1ecbaeedd423c7b8ba9616f88011bfe9db1d4d329a870d18c6f3dc057f62cf325 +Description: Intel® oneAPI DPC++/C++ Compiler 2022.0.1 for Linux* runtime package for Intel(R) 64 + + +Package: intel-oneapi-compiler-dpcpp-cpp-runtime +Architecture: amd64 +Version: 2022.0.1-3633 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Provides: intel-oneapi-dpcpp-cpp-compiler-runtime (= 2022.0.1-3633) +Depends: intel-oneapi-compiler-dpcpp-cpp-runtime-2022.0.1 +Breaks: intel-oneapi-dpcpp-cpp-compiler-runtime (<< 2022.0.1-3633) +Replaces: intel-oneapi-dpcpp-cpp-compiler-runtime (<< 2022.0.1-3633) +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-runtime-2022.0.1-3633_amd64.deb +Size: 1724 +MD5sum: 1a6777ecb862a5d1161292f93d758f2b +SHA1: ec4d9290ffe4b9e04d7cb9d858680be8e04bd6f1 +SHA256: b2c8d3c2426bde2fa795048c7562b87aa4bc60a742ad98e7d78aaf487171fe24 +SHA512: b0ed052f1e68a4884bc059c1f5c9d71434b4e84be68118af06e723c007e31907795904586d3150b77f61253c522a775b807da55d9d7eb6efb506e561af8585b7 +Description: Intel® oneAPI DPC++/C++ Compiler 2022.0.1 for Linux* runtime package for Intel(R) 64 + + +Package: intel-oneapi-compiler-dpcpp-cpp-runtime-2022.0.2 +Architecture: amd64 +Version: 2022.0.2-3658 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 119544 +Depends: intel-oneapi-compiler-shared-runtime-2022.0.2, intel-oneapi-tbb-2021.5.1, intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-runtime-2022.0.2-2022.0.2-3658_amd64.deb +Size: 25665298 +MD5sum: 8c8bde8306fd8c5b0acb8a0bb4645169 +SHA1: 304132fdf030c044ef1e147baac3a65e2f33099d +SHA256: 57bc3752fb2c9bffe0500f265547962a25e4fc29efb88e1736f1edebdedcd1b6 +SHA512: 3b5226e29c6f4a1a27383dea8515476eb3ab617d6d5cd9f83e102d98129e558d50450373ac8f2e684e4ec68cb8c3825a5c7672d888794b8bbbb8ce0da9ecdf16 +Description: Intel® oneAPI DPC++/C++ Compiler 2022.0.2 for Linux* runtime package for Intel(R) 64 + + +Package: intel-oneapi-compiler-dpcpp-cpp-runtime +Architecture: amd64 +Version: 2022.0.2-3658 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Provides: intel-oneapi-dpcpp-cpp-compiler-runtime (= 2022.0.2-3658) +Depends: intel-oneapi-compiler-dpcpp-cpp-runtime-2022.0.2 +Breaks: intel-oneapi-dpcpp-cpp-compiler-runtime (<< 2022.0.2-3658) +Replaces: intel-oneapi-dpcpp-cpp-compiler-runtime (<< 2022.0.2-3658) +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-runtime-2022.0.2-3658_amd64.deb +Size: 1724 +MD5sum: 36f2d2573e2c3525e6e217d9da7570fb +SHA1: 1b9c9158ccf5c7bd201b99945967bec368b8f087 +SHA256: 91828df967df6711364e79835295cc61bed8dd08d2d225bd270a03da0fa5820c +SHA512: 127cc4935311f6f52aa26a696aa7a760a7d5fb8e51a19e11599d6806b53ee579246983eedd6cc752e61f9f1453c88d51721c0d02240be509507f7a8942de26cf +Description: Intel® oneAPI DPC++/C++ Compiler 2022.0.2 for Linux* runtime package for Intel(R) 64 + + +Package: intel-oneapi-compiler-dpcpp-cpp-runtime-2022.1.0 +Architecture: amd64 +Version: 2022.1.0-3768 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 122614 +Depends: intel-oneapi-compiler-shared-runtime-2022.1.0, intel-oneapi-tbb-2021.6.0, intel-oneapi-common-vars (>= 2022.1.0-161), intel-oneapi-common-licensing-2022.1.0 +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-runtime-2022.1.0-2022.1.0-3768_amd64.deb +Size: 26706484 +MD5sum: 0787151056624b04262ec1d5cf6c2bd6 +SHA1: 458d11dd02fcac247f410e523271cc1e133a9073 +SHA256: 746d30e0794d0b60ab3d7cd31be9d7981b98c2b0305c238f1a9af5612a22b123 +SHA512: 87af347fa13ab2ed4b4bd8801a36380b2b7dbf6e30de920d937c2f9c1e902af51e71ba358f5ebf02aa8a01eaec3f856c0584a2e06d860f59fc6f533ad6e56ed1 +Description: Intel® oneAPI DPC++/C++ Compiler 2022.1.0 for Linux* runtime package for Intel(R) 64 + + +Package: intel-oneapi-compiler-dpcpp-cpp-runtime +Architecture: amd64 +Version: 2022.1.0-3768 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Provides: intel-oneapi-dpcpp-cpp-compiler-runtime (= 2022.1.0-3768) +Depends: intel-oneapi-compiler-dpcpp-cpp-runtime-2022.1.0 +Breaks: intel-oneapi-dpcpp-cpp-compiler-runtime (<< 2022.1.0-3768) +Replaces: intel-oneapi-dpcpp-cpp-compiler-runtime (<< 2022.1.0-3768) +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-runtime-2022.1.0-3768_amd64.deb +Size: 1800 +MD5sum: 7d48e5c24a10ec0ebb279419fb50632b +SHA1: eb53aaf9f2685d4f8af23f38950876962449f05a +SHA256: 4ce613892a34d62cfa2835033ddcfc9c68656cf22482b83cfc03f65a583586e8 +SHA512: 3ab81f4ecdfb22fe034e5ebe7e79fc5ab4f9325c19e1994044c09a17d4e615bd47c7c6da806ca9cef06beb88b1b97b8466c071eacc8c94227f32b7deaa4ccacd +Description: Intel® oneAPI DPC++/C++ Compiler 2022.1.0 for Linux* runtime package for Intel(R) 64 + + +Package: intel-oneapi-compiler-dpcpp-cpp-runtime-2022.2.0 +Architecture: amd64 +Version: 2022.2.0-8734 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 127446 +Depends: intel-oneapi-compiler-shared-runtime-2022.2.0, intel-oneapi-tbb-2021.7.0, intel-oneapi-common-vars (>= 2022.2.0-8694), intel-oneapi-common-licensing-2022.2.0 +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-runtime-2022.2.0-2022.2.0-8734_amd64.deb +Size: 28092396 +MD5sum: 216c0c30bb1694bdfdf22a1d822c4d21 +SHA1: f3f44f996c3cd9aa3785f9459d7a7e28aa228f1d +SHA256: 29554d2c850fac928fc6f2f74b20aee05bcae3b6a08d9a451f69aafd116ad892 +SHA512: 2b3e95e41e81a755ab6ea5a5d5e467adae42d68a7c28fca13f9d8f4e201e23e87f62d1edf319637e634714eb845665abba6cbe0b427dd58b8525faf9606bf71b +Description: Intel® oneAPI DPC++/C++ Compiler 2022.2.0 for Linux* runtime package for Intel(R) 64 + + +Package: intel-oneapi-compiler-dpcpp-cpp-runtime +Architecture: amd64 +Version: 2022.2.0-8734 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Provides: intel-oneapi-dpcpp-cpp-compiler-runtime (= 2022.2.0-8734) +Depends: intel-oneapi-compiler-dpcpp-cpp-runtime-2022.2.0 +Breaks: intel-oneapi-dpcpp-cpp-compiler-runtime (<< 2022.2.0-8734) +Replaces: intel-oneapi-dpcpp-cpp-compiler-runtime (<< 2022.2.0-8734) +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-runtime-2022.2.0-8734_amd64.deb +Size: 1800 +MD5sum: d9ff3988c2792bef6a85e1dd9b6337ab +SHA1: 76d61a4a8d8d6c8cf7b87177d677cb0d66c1ceef +SHA256: 9fd2338720142f1e0d097155166394a63f563f694adee746768c13bf98259a65 +SHA512: f5b303f703ee0ea6f4fe6d5a7b975560d917109306b941c87341048bf831fa3f540cba4cf6af20940b0574f39cd5fa0338c8eea6815443b219bad4d2d018b03f +Description: Intel® oneAPI DPC++/C++ Compiler 2022.2.0 for Linux* runtime package for Intel(R) 64 + + +Package: intel-oneapi-compiler-dpcpp-cpp-runtime +Architecture: amd64 +Version: 2022.2.1-16953 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Provides: intel-oneapi-dpcpp-cpp-compiler-runtime (= 2022.2.1-16953) +Depends: intel-oneapi-compiler-dpcpp-cpp-runtime-2022.2.1 +Breaks: intel-oneapi-dpcpp-cpp-compiler-runtime (<< 2022.2.1-16953) +Replaces: intel-oneapi-dpcpp-cpp-compiler-runtime (<< 2022.2.1-16953) +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-runtime-2022.2.1-16953_amd64.deb +Size: 1800 +MD5sum: 1af66682e709e5e1fafc546a68c4d8f6 +SHA1: b3d9a1595db5f19ae5d68048e719839e668c4586 +SHA256: 4b316569a1a8901a4058e717e87ec41396adc709023e0c3bb4abd7550d12d2c7 +SHA512: 7157f8fef2e5355034eaba0dc694d69cbdf4ac61e0a25de2b3bf31eb73c6060965e5172d6850448c988fa2eb05233ad60084ab057c87140e83613799f538617a +Description: Intel® oneAPI DPC++/C++ Compiler 2022.2.1 for Linux* runtime package for Intel(R) 64 + + +Package: intel-oneapi-compiler-dpcpp-cpp-runtime-2022.2.1 +Architecture: amd64 +Version: 2022.2.1-16953 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 127507 +Depends: intel-oneapi-compiler-shared-runtime-2022.2.1, intel-oneapi-tbb-2021.7.1, intel-oneapi-common-vars (>= 2022.2.1-14969), intel-oneapi-common-licensing-2022.2.1 +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-runtime-2022.2.1-2022.2.1-16953_amd64.deb +Size: 28111872 +MD5sum: 5b7682c399d6dedaa929fc158b5fe581 +SHA1: aa2b10fa64e390794c45f5f2c1e3b0e0e48d41dd +SHA256: e4f9c241ffef69aa2e1549178df6bc0d8257dfcd62d1794d1e95a29aa89793d3 +SHA512: b58e267451e88042048a009124a443dc075c4a0757984072d7b943a48e7d4be655ceed2450d111b195c0afbb690951b82e576a89c82e6add9c59fcc1521f0019 +Description: Intel® oneAPI DPC++/C++ Compiler 2022.2.1 for Linux* runtime package for Intel(R) 64 + + +Package: intel-oneapi-compiler-dpcpp-cpp-runtime-2023.0.0 +Architecture: amd64 +Version: 2023.0.0-25370 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 150778 +Depends: intel-oneapi-compiler-shared-runtime-2023.0.0, intel-oneapi-tbb-2021.8.0, intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing-2023.0.0 +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-runtime-2023.0.0-2023.0.0-25370_amd64.deb +Size: 31588912 +MD5sum: ca46a133c720a9fa40cd4f402286b27a +SHA1: f23b1835ff190c488695c09ef2bd7e6f1dc8d35c +SHA256: 63f63e8e1f02ce34baec35d4892b89a940a745a488fff8d1e04437ab079e7543 +SHA512: 6bb6a2422fff3d775b70fbb97cc54add236e34041fa1844c33164a608d16355e3b13498fe6f89f80441359cca7d55f01adbed5e5db73b00c86c532855e05c469 +Description: Intel® oneAPI DPC++/C++ Compiler 2023.0.0 for Linux* runtime package for Intel(R) 64 + + +Package: intel-oneapi-compiler-dpcpp-cpp-runtime +Architecture: amd64 +Version: 2023.0.0-25370 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Provides: intel-oneapi-dpcpp-cpp-compiler-runtime (= 2023.0.0-25370) +Depends: intel-oneapi-compiler-dpcpp-cpp-runtime-2023.0.0 +Breaks: intel-oneapi-dpcpp-cpp-compiler-runtime (<< 2023.0.0-25370) +Replaces: intel-oneapi-dpcpp-cpp-compiler-runtime (<< 2023.0.0-25370) +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-runtime-2023.0.0-25370_amd64.deb +Size: 1800 +MD5sum: a0ae9a69c4fac4c1e4212d751b9a3e12 +SHA1: 78c65a6a7219ed6c288bb671ec3a6b4cd9474d85 +SHA256: 854509c868672a7f093b1080b85d42b21ad758000e95c7d83ff2f50f68783e0b +SHA512: b7815054973f270cecc8211c5ce7222d5ee4ac009359124654c2925cf4a1a1e4495adf266df8c4a82eb01c1795ae25fed0d99f7ffb42737bf6eb8fc56c0927ff +Description: Intel® oneAPI DPC++/C++ Compiler 2023.0.0 for Linux* runtime package for Intel(R) 64 + + +Package: intel-oneapi-compiler-dpcpp-cpp-runtime-2023.1.0 +Architecture: amd64 +Version: 2023.1.0-46305 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 126552 +Depends: intel-oneapi-compiler-shared-runtime-2023.1.0, intel-oneapi-tbb-2021.9.0, intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing-2023.1.0 +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-runtime-2023.1.0-2023.1.0-46305_amd64.deb +Size: 25634492 +MD5sum: 4e03a221aac9491a6043541334443128 +SHA1: 70afa83aaad151a121cdd4471e279374ad23eee6 +SHA256: d0eec67fe7e3b36c8c5b1d07a17779f739fd2fd1881f6b1848169faffcb855c6 +SHA512: 74d8453d750e2008e6078f714717bf5c07b3b99b482cdbacc9b645d38443b98080136414661f86b30943966aaf286f185cb1cb4202bdf7a3604dae237ff21e27 +Description: Intel® oneAPI DPC++/C++ Compiler 2023.1.0 for Linux* runtime package for Intel(R) 64 + + +Package: intel-oneapi-compiler-dpcpp-cpp-runtime +Architecture: amd64 +Version: 2023.1.0-46305 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Provides: intel-oneapi-dpcpp-cpp-compiler-runtime (= 2023.1.0-46305) +Depends: intel-oneapi-compiler-dpcpp-cpp-runtime-2023.1.0 +Breaks: intel-oneapi-dpcpp-cpp-compiler-runtime (<< 2023.1.0-46305) +Replaces: intel-oneapi-dpcpp-cpp-compiler-runtime (<< 2023.1.0-46305) +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-runtime-2023.1.0-46305_amd64.deb +Size: 1800 +MD5sum: 3e779d2cede26ddcb6981dc47a28886e +SHA1: d20371d831ad6abba2977279a86836d432b5b593 +SHA256: a3f005a7722af96bb92202cf1e0f6a02fffcddd541ec7814559523e61ef16c2e +SHA512: 4bfc32f586f1a6037b0da57b62f05fe824d30f2cd62a1884984430befcb17bdaacb94822872a24a62631dda311355917833e1015cbd978cfc5916778e428badf +Description: Intel® oneAPI DPC++/C++ Compiler 2023.1.0 for Linux* runtime package for Intel(R) 64 + + +Package: intel-oneapi-compiler-fortran +Architecture: amd64 +Version: 2021.1.1-189 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Provides: intel-oneapi-ifort (= 2021.1.1-189) +Depends: intel-oneapi-compiler-fortran-2021.1.1 +Breaks: intel-oneapi-ifort (<< 2021.1.1-189) +Replaces: intel-oneapi-ifort (<< 2021.1.1-189) +Filename: pool/main/intel-oneapi-compiler-fortran-2021.1.1-189_amd64.deb +Size: 1712 +MD5sum: 93e16b16626d48ecf213e9ce8e2b576d +SHA1: 3c366f6dbed14df780e294b39e85598850b62d53 +SHA256: 7cf60940f94e0cb6cd9ad1f2268bb84463224a0afe973b415893e234560dbee0 +SHA512: 103e8449dcfe903b71d808f7f24fcfc294b50bbdc042b7a9a17120fb8187382dc259a80a7535cdb9145e0fa58088d7ba3132082869ea0beb5924a484fdd3a06f +Description: Intel® Fortran Compiler (Beta) & Intel® Fortran Compiler Classic 2021.1.1 for Linux* for Intel(R) 64 + + +Package: intel-oneapi-compiler-fortran-2021.1.1 +Architecture: amd64 +Version: 2021.1.1-189 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 129954 +Depends: intel-oneapi-compiler-shared-2021.1.1, intel-oneapi-compiler-fortran-common-2021.1.1, intel-oneapi-compiler-fortran-runtime-2021.1.1,intel-oneapi-common-vars,intel-oneapi-common-licensing +Filename: pool/main/intel-oneapi-compiler-fortran-2021.1.1-2021.1.1-189_amd64.deb +Size: 31875680 +MD5sum: 58e273db1b54d33a12c026f438bf7ab4 +SHA1: c1ce6df70c0a60875c8ef0dfd97ea38c4d709f6a +SHA256: 1265d39cef41dc1634cb1c52c5146b604f87f309a36c3c59b72973c6e371e59e +SHA512: 19168f3dd616ed5d2f75507454097bd7109858a133a0b39c5a2ef00154c44070a26dade82704bfcb2bbb21d59c7cfd2e42d2a485ef0cce67fdae1c10dfedda7d +Description: Intel® Fortran Compiler (Beta) & Intel® Fortran Compiler Classic 2021.1.1 for Linux* for Intel(R) 64 + + +Package: intel-oneapi-compiler-fortran-2021.1.2 +Architecture: amd64 +Version: 2021.1.2-266 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 129955 +Depends: intel-oneapi-compiler-shared-2021.1.2, intel-oneapi-compiler-fortran-common-2021.1.2, intel-oneapi-compiler-fortran-runtime-2021.1.2,intel-oneapi-common-vars,intel-oneapi-common-licensing +Filename: pool/main/intel-oneapi-compiler-fortran-2021.1.2-2021.1.2-266_amd64.deb +Size: 31897412 +MD5sum: e8e1193bbf7d7b6e3c9971abbd9dc5e0 +SHA1: c177bb26f9c10c1606910c4b5c73073d136c9ec1 +SHA256: adacf93a63075a570fc2e393e2de494a4c171a711d1b759ca8e19b5b5b24c71a +SHA512: b69c90b0ae12c79cddc5f937def95f88742ae3eb3f5dda3febad135f5db7f890385a29f886933181526594271854569b63f3cb1c9758f84d1d0a4e0f198a38f6 +Description: Intel® Fortran Compiler (Beta) & Intel® Fortran Compiler Classic 2021.1.2 for Linux* for Intel(R) 64 + + +Package: intel-oneapi-compiler-fortran +Architecture: amd64 +Version: 2021.1.2-266 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Provides: intel-oneapi-ifort (= 2021.1.2-266) +Depends: intel-oneapi-compiler-fortran-2021.1.2 +Breaks: intel-oneapi-ifort (<< 2021.1.2-266) +Replaces: intel-oneapi-ifort (<< 2021.1.2-266) +Filename: pool/main/intel-oneapi-compiler-fortran-2021.1.2-266_amd64.deb +Size: 1712 +MD5sum: f3b752ac7084a69ba2cee28196a84c80 +SHA1: fa9d522b07c442d069d3bd1ef68208534be21303 +SHA256: 7cc31016906e6b8479ace1a49e4184568a3c65864ab425e4e6594e3f020c4a24 +SHA512: 330bfa402b61fe5b213284adc90cc5a65601f393086e7dd2c87312711dcc0f78b58b63e90eb419e61df65df8cb31e55120180a89d6982ec8ea8f298739d86a40 +Description: Intel® Fortran Compiler (Beta) & Intel® Fortran Compiler Classic 2021.1.2 for Linux* for Intel(R) 64 + + +Package: intel-oneapi-compiler-fortran-2021.2.0 +Architecture: amd64 +Version: 2021.2.0-610 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 132345 +Depends: intel-oneapi-compiler-shared-2021.2.0, intel-oneapi-compiler-fortran-common-2021.2.0, intel-oneapi-compiler-fortran-runtime-2021.2.0, intel-oneapi-common-vars (>= 2021.2.0-195), intel-oneapi-common-licensing-2021.2.0 +Filename: pool/main/intel-oneapi-compiler-fortran-2021.2.0-2021.2.0-610_amd64.deb +Size: 32541430 +MD5sum: 39666be20e927f03c5b04e77693ca087 +SHA1: 006cc292e0a85ae5af5e1920925b3fdc525bf4dc +SHA256: 9fd08227fda9d5f46e0629c6cbd228793acf758d42bbb92556c546d7e873fc38 +SHA512: 49f5dab6aaea0634ba129aacebb86d36416bd339949a373737a4d5181e29cbdbb88b64d2153eafd0d4e9a566e224e4f143a864ee13385fb399658e4c22ad1b05 +Description: Intel® Fortran Compiler (Beta) & Intel® Fortran Compiler Classic 2021.2.0 for Linux* for Intel(R) 64 + + +Package: intel-oneapi-compiler-fortran +Architecture: amd64 +Version: 2021.2.0-610 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Provides: intel-oneapi-ifort (= 2021.2.0-610) +Depends: intel-oneapi-compiler-fortran-2021.2.0 +Breaks: intel-oneapi-ifort (<< 2021.2.0-610) +Replaces: intel-oneapi-ifort (<< 2021.2.0-610) +Filename: pool/main/intel-oneapi-compiler-fortran-2021.2.0-610_amd64.deb +Size: 1712 +MD5sum: e1229ff91b286c9804431108125e54ae +SHA1: 1e23ae4972c0c37cd7bb36b7276a9d38e5ceefa9 +SHA256: 2a8c14513e52a7a464f0a5854bfa2bb6c12a72d100904f928dc9a270ba208350 +SHA512: b0c0ffbb2b2cac6f0631182e68d34a14586ad24bb8a5e71efae5092679327cf114beaa90e312c55113a34d83456308830090c48e08c3f34094b9a82ebe12fbee +Description: Intel® Fortran Compiler (Beta) & Intel® Fortran Compiler Classic 2021.2.0 for Linux* for Intel(R) 64 + + +Package: intel-oneapi-compiler-fortran-2021.3.0 +Architecture: amd64 +Version: 2021.3.0-3350 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 134699 +Depends: intel-oneapi-compiler-shared-2021.3.0, intel-oneapi-compiler-fortran-common-2021.3.0, intel-oneapi-compiler-fortran-runtime-2021.3.0, intel-oneapi-common-vars (>= 2021.3.0-261), intel-oneapi-common-licensing-2021.3.0 +Filename: pool/main/intel-oneapi-compiler-fortran-2021.3.0-2021.3.0-3350_amd64.deb +Size: 33099100 +MD5sum: 8510edb5b0d1bb9fc800fa873e54effc +SHA1: 0b2de2bf4519c80868fd4b3b9b72e10614659950 +SHA256: c0b11b2ec29e7c1c0cd75262e1af6297ec0ef97fc57df0b885265b8db0560c37 +SHA512: 5b066f848c1846084a2d0998f0c7ece2ce4c8f9c80137872944b87d85b846a88a65ba830df4bca40d8a2f46a96e9c4cd14922389764aa2f58bf9709608895fbb +Description: Intel® Fortran Compiler (Beta) & Intel® Fortran Compiler Classic 2021.3.0 for Linux* for Intel(R) 64 + + +Package: intel-oneapi-compiler-fortran +Architecture: amd64 +Version: 2021.3.0-3350 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Provides: intel-oneapi-ifort (= 2021.3.0-3350) +Depends: intel-oneapi-compiler-fortran-2021.3.0 +Breaks: intel-oneapi-ifort (<< 2021.3.0-3350) +Replaces: intel-oneapi-ifort (<< 2021.3.0-3350) +Filename: pool/main/intel-oneapi-compiler-fortran-2021.3.0-3350_amd64.deb +Size: 1714 +MD5sum: e98f4f7ad816738c8d3cb0155d00e1ec +SHA1: 0b337d169a54b4d56befd1844fc8343bfbfa1e43 +SHA256: 78334ef66b15f50109ae2b5fb2ec7a54aa0d3e53652359b881b9b45a0bdc8d4b +SHA512: b21387c2ea1d54d82ef79aae02958c497503cd06f5f9dd35a556647638c91b366564a2db279e1b1a74be7b48e029e71dab06d0657ae9616adc16b59b04915736 +Description: Intel® Fortran Compiler (Beta) & Intel® Fortran Compiler Classic 2021.3.0 for Linux* for Intel(R) 64 + + +Package: intel-oneapi-compiler-fortran-2021.4.0 +Architecture: amd64 +Version: 2021.4.0-3561 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 136883 +Depends: intel-oneapi-compiler-shared-2021.4.0, intel-oneapi-compiler-fortran-common-2021.4.0, intel-oneapi-compiler-fortran-runtime-2021.4.0, intel-oneapi-common-vars (>= 2021.4.0-327), intel-oneapi-common-licensing-2021.4.0 +Filename: pool/main/intel-oneapi-compiler-fortran-2021.4.0-2021.4.0-3561_amd64.deb +Size: 33310382 +MD5sum: 7d3af30286b02e58d670a6e01401befb +SHA1: 0ae90dd532155fd47f16d56bb430a0ee474deb3e +SHA256: b7e8b32bb410c7a060de9570778ed4a9da500df7da4be93ef2684c7e501d966e +SHA512: 6d5dd844e50c231bff96ecea2038cadc93027e31b14d8f5dcb72195fb99a314b97cdd7468b82df90a1992f9aef386419559a1eac2cfdf4779dc6fe8b8ca3e136 +Description: Intel® Fortran Compiler (Beta) & Intel® Fortran Compiler Classic 2021.4.0 for Linux* for Intel(R) 64 + + +Package: intel-oneapi-compiler-fortran +Architecture: amd64 +Version: 2021.4.0-3561 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Provides: intel-oneapi-ifort (= 2021.4.0-3561) +Depends: intel-oneapi-compiler-fortran-2021.4.0 +Breaks: intel-oneapi-ifort (<< 2021.4.0-3561) +Replaces: intel-oneapi-ifort (<< 2021.4.0-3561) +Filename: pool/main/intel-oneapi-compiler-fortran-2021.4.0-3561_amd64.deb +Size: 1714 +MD5sum: da3c39b5994e743e66a1a44668c6941b +SHA1: 57f165e463d7f15fa8effbded9336dad955a7e6e +SHA256: 82490eabb5a4c93a20bb556dedf382d2a15d5066b90d820bf42f330a88f659ea +SHA512: 37055bfcbd4c1ba62225d94f93343aa81bd2380077d39aa5e67051e6f9bfd5d7a5c81d42a983690bfa93e825196208cf80efdf88695446e33ef1863d73884a85 +Description: Intel® Fortran Compiler (Beta) & Intel® Fortran Compiler Classic 2021.4.0 for Linux* for Intel(R) 64 + + +Package: intel-oneapi-compiler-fortran-2022.0.1 +Architecture: amd64 +Version: 2022.0.1-3633 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 134603 +Depends: intel-oneapi-compiler-shared-2022.0.1, intel-oneapi-compiler-fortran-common-2022.0.1, intel-oneapi-compiler-fortran-runtime-2022.0.1, intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-compiler-fortran-2022.0.1-2022.0.1-3633_amd64.deb +Size: 32802558 +MD5sum: 865fbd91fff351a5f059533b9ce28675 +SHA1: f720c3918a1aa2bc88a3111f6c115df6c6187739 +SHA256: a11113b1074e4fbb6cf8ceec85cf3413d23cab997df682fda58c50248cef98a8 +SHA512: 906ac370def34df9f1cbd22bc22314a22bf1639a0a6bfdb9ac3b58a50d486470a8419eb1e24758e26d98c5e2040a496de2f04220e122722b89cdf1ab8c8a0ca5 +Description: Intel® Fortran Compiler & Intel® Fortran Compiler Classic 2022.0.1 for Linux* for Intel(R) 64 + + +Package: intel-oneapi-compiler-fortran +Architecture: amd64 +Version: 2022.0.1-3633 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Provides: intel-oneapi-ifort (= 2022.0.1-3633) +Depends: intel-oneapi-compiler-fortran-2022.0.1 +Breaks: intel-oneapi-ifort (<< 2022.0.1-3633) +Replaces: intel-oneapi-ifort (<< 2022.0.1-3633) +Filename: pool/main/intel-oneapi-compiler-fortran-2022.0.1-3633_amd64.deb +Size: 1706 +MD5sum: 139cd85eb340c4c86350cf3a8c92948e +SHA1: d940ba921f49025bf0d8be5dfbdd3acb13c5da00 +SHA256: 8f71b36259dac76a8def38c657031df7e5805d254b5b14f41323df70f49dfda5 +SHA512: 642085e2db5d489d173a1fdbd05b618f4ad6deb033bcab18cd67e6c73cf8e0e777788f626c422b68865bc25cc747b5d1af034553577b28566f11c08e693b495c +Description: Intel® Fortran Compiler & Intel® Fortran Compiler Classic 2022.0.1 for Linux* for Intel(R) 64 + + +Package: intel-oneapi-compiler-fortran-2022.0.2 +Architecture: amd64 +Version: 2022.0.2-3658 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 134603 +Depends: intel-oneapi-compiler-shared-2022.0.2, intel-oneapi-compiler-fortran-common-2022.0.2, intel-oneapi-compiler-fortran-runtime-2022.0.2, intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-compiler-fortran-2022.0.2-2022.0.2-3658_amd64.deb +Size: 32802666 +MD5sum: f335922075623708753d4d977d4494e9 +SHA1: 8f5942ebc487a2ee292754ac0b774e7e94b8bc01 +SHA256: df843994e4414dc035a81eac7bde27a111d0d7fb27e9b3dd644426ccc83ef250 +SHA512: 81c57abe2603b48d8b140af70b1854712f9749c83175814b03ffef91b79ef22c4f036e40bdd222ce1baa7d95748c85f370ab3df7c7db03cefec006b11d1eaff1 +Description: Intel® Fortran Compiler & Intel® Fortran Compiler Classic 2022.0.2 for Linux* for Intel(R) 64 + + +Package: intel-oneapi-compiler-fortran +Architecture: amd64 +Version: 2022.0.2-3658 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Provides: intel-oneapi-ifort (= 2022.0.2-3658) +Depends: intel-oneapi-compiler-fortran-2022.0.2 +Breaks: intel-oneapi-ifort (<< 2022.0.2-3658) +Replaces: intel-oneapi-ifort (<< 2022.0.2-3658) +Filename: pool/main/intel-oneapi-compiler-fortran-2022.0.2-3658_amd64.deb +Size: 1706 +MD5sum: 3abd5a3be281d3694743c49863bd5508 +SHA1: 834fbded40a2fbafc7f0742903ec9e1717874e2c +SHA256: b0602b4f51bc6b15a92b1e76eab759672d242cc840170f3bbb4693728f343e20 +SHA512: 5065628472b924df68c57fc2d9412c9263cd180655e1953c32db54454ebabe50ccee55b88a6c9b8e09f6aa55e18df00aca0883ddcdc86648220d13c1bf1953ec +Description: Intel® Fortran Compiler & Intel® Fortran Compiler Classic 2022.0.2 for Linux* for Intel(R) 64 + + +Package: intel-oneapi-compiler-fortran-2022.1.0 +Architecture: amd64 +Version: 2022.1.0-3768 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 141110 +Depends: intel-oneapi-compiler-shared-2022.1.0, intel-oneapi-compiler-fortran-common-2022.1.0, intel-oneapi-compiler-fortran-runtime-2022.1.0, intel-oneapi-common-vars (>= 2022.1.0-161), intel-oneapi-common-licensing-2022.1.0 +Filename: pool/main/intel-oneapi-compiler-fortran-2022.1.0-2022.1.0-3768_amd64.deb +Size: 35097060 +MD5sum: 27834733e035f0a705d68902b30bee94 +SHA1: 8d238a097b3e356ce2927d979323afe86761ee62 +SHA256: e87ad5fb97bc6bacc8758c7ba70cf2232cdc5951806f23052e043a8542b0ef6b +SHA512: b255241c1419760ed33b96bca43103101081feb76404ce701027591737b45086f9b2682c23048946423b4e2e528fecb57fb35d5e6a8b45c8198442ac0f04f676 +Description: Intel® Fortran Compiler & Intel® Fortran Compiler Classic 2022.1.0 for Linux* for Intel(R) 64 + + +Package: intel-oneapi-compiler-fortran +Architecture: amd64 +Version: 2022.1.0-3768 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Provides: intel-oneapi-ifort (= 2022.1.0-3768) +Depends: intel-oneapi-compiler-fortran-2022.1.0 +Breaks: intel-oneapi-ifort (<< 2022.1.0-3768) +Replaces: intel-oneapi-ifort (<< 2022.1.0-3768) +Filename: pool/main/intel-oneapi-compiler-fortran-2022.1.0-3768_amd64.deb +Size: 1788 +MD5sum: 3ba263c11d44e8c96892302e25e67722 +SHA1: d5f4e1cfc6b8acf9e6021401679707ba86451a17 +SHA256: 4d94a116724744b3a809b6918edea09ab6806d4058c429d6209d3a6b4309184e +SHA512: 28b009f15f14e8d9cb3db702c322ca87cf8845d9388fbe5f86c8d663d39dde0a85eb2cbf703ac0e80cf36aefde629e7bf997786fd506b8582e74333c4262aaae +Description: Intel® Fortran Compiler & Intel® Fortran Compiler Classic 2022.1.0 for Linux* for Intel(R) 64 + + +Package: intel-oneapi-compiler-fortran-2022.2.0 +Architecture: amd64 +Version: 2022.2.0-8734 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 135292 +Depends: intel-oneapi-compiler-shared-2022.2.0, intel-oneapi-compiler-fortran-common-2022.2.0, intel-oneapi-compiler-fortran-runtime-2022.2.0, intel-oneapi-common-vars (>= 2022.2.0-8694), intel-oneapi-common-licensing-2022.2.0 +Filename: pool/main/intel-oneapi-compiler-fortran-2022.2.0-2022.2.0-8734_amd64.deb +Size: 33541812 +MD5sum: 8aaf4054ceba61a1eacc39a4f0532eca +SHA1: 1655f69b379ee73f68bf980f698b84f5ebfe098e +SHA256: eff4b69991fb2efb04ace4e8c17cf63ef5cbb0d0998f8e9962a2940ec39bc75b +SHA512: 0266f87dd1856d361035541ec50c99894971d1456536c7f0e41c8b30359e62a081c73d8ee1980a258e3af2bc957af2aeda16567050e4ab1bdecac2f4f22a3066 +Description: Intel® Fortran Compiler & Intel® Fortran Compiler Classic 2022.2.0 for Linux* for Intel(R) 64 + + +Package: intel-oneapi-compiler-fortran +Architecture: amd64 +Version: 2022.2.0-8734 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Provides: intel-oneapi-ifort (= 2022.2.0-8734) +Depends: intel-oneapi-compiler-fortran-2022.2.0 +Breaks: intel-oneapi-ifort (<< 2022.2.0-8734) +Replaces: intel-oneapi-ifort (<< 2022.2.0-8734) +Filename: pool/main/intel-oneapi-compiler-fortran-2022.2.0-8734_amd64.deb +Size: 1780 +MD5sum: b43ff98b0360394696563b0c078f415d +SHA1: fd9b348c4d83725ca8ff25c489474cc78ec1a1cd +SHA256: 48d671406c27de3c5d084a397224785437921a83431f0415f7f89e1bb38fac44 +SHA512: aceaab5f698c52c614b30c46049af01dc284d0d8e2378fad4c54eaacc47da9312f7b605f1d9dfe347c94474c9a9a381240933d0c7f70fb8f666081e82e7f2faa +Description: Intel® Fortran Compiler & Intel® Fortran Compiler Classic 2022.2.0 for Linux* for Intel(R) 64 + + +Package: intel-oneapi-compiler-fortran +Architecture: amd64 +Version: 2022.2.1-16953 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Provides: intel-oneapi-ifort (= 2022.2.1-16953) +Depends: intel-oneapi-compiler-fortran-2022.2.1 +Breaks: intel-oneapi-ifort (<< 2022.2.1-16953) +Replaces: intel-oneapi-ifort (<< 2022.2.1-16953) +Filename: pool/main/intel-oneapi-compiler-fortran-2022.2.1-16953_amd64.deb +Size: 1788 +MD5sum: 3fa61425827a76b4ef01fdb336ba8e8c +SHA1: abd3d960cf5be997ca317a915a5aea625ee3259f +SHA256: a576ef34a938bb6183782eb021938a135ab901e32e9055f9fc202f2bdef32aa4 +SHA512: 3eafee273f815b8238816b8f332c70621b0fb588da28baabdc16fe38b4967bf381e5029da0d4587c4b2e85f32a6582e9a41134345d2cb4ab3e5db669841f904d +Description: Intel® Fortran Compiler & Intel® Fortran Compiler Classic 2022.2.1 for Linux* for Intel(R) 64 + + +Package: intel-oneapi-compiler-fortran-2022.2.1 +Architecture: amd64 +Version: 2022.2.1-16953 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 135343 +Depends: intel-oneapi-compiler-shared-2022.2.1, intel-oneapi-compiler-fortran-common-2022.2.1, intel-oneapi-compiler-fortran-runtime-2022.2.1, intel-oneapi-common-vars (>= 2022.2.1-14969), intel-oneapi-common-licensing-2022.2.1 +Filename: pool/main/intel-oneapi-compiler-fortran-2022.2.1-2022.2.1-16953_amd64.deb +Size: 33542564 +MD5sum: 0a665babf440317a75dc04f228cb4aa8 +SHA1: 80ce349659ec9bfa705e85618e7ab157208cba7e +SHA256: d6d6e3b1e6cc0525ba52e9a95bf781de51c761059b24efed0ba909d38eb60350 +SHA512: ffc273fc124e76cfa60a707116fcf0988db0250a1f82cba7f209d981bd2acb962fc7a2ca1dcbb47e24847a5d500731bd670548ce77850042e506e9a3e5048a75 +Description: Intel® Fortran Compiler & Intel® Fortran Compiler Classic 2022.2.1 for Linux* for Intel(R) 64 + + +Package: intel-oneapi-compiler-fortran-2023.0.0 +Architecture: amd64 +Version: 2023.0.0-25370 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 153938 +Depends: intel-oneapi-compiler-shared-2023.0.0, intel-oneapi-compiler-fortran-common-2023.0.0, intel-oneapi-compiler-fortran-runtime-2023.0.0, intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing-2023.0.0 +Filename: pool/main/intel-oneapi-compiler-fortran-2023.0.0-2023.0.0-25370_amd64.deb +Size: 36586392 +MD5sum: de1c60e837a799be4b0d9afc1df86af4 +SHA1: 58c261b7bc59d3da869f3f5ef79d63ae942e8deb +SHA256: 86260591af48f75726f9b6ab898140070174e78cd0710089528e6a8e47a2bad4 +SHA512: 626a54c419583ee6cd4d43f63e3abbcfbd71fd2ff7c7d7381470613f3238e1f50f958b86fc9fa8523b7bc2ca3c3dfd66be1508ffb98cb9dec7e401441c5d0a8d +Description: Intel® Fortran Compiler & Intel® Fortran Compiler Classic 2023.0.0 for Linux* for Intel(R) 64 + + +Package: intel-oneapi-compiler-fortran +Architecture: amd64 +Version: 2023.0.0-25370 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Provides: intel-oneapi-ifort (= 2023.0.0-25370) +Depends: intel-oneapi-compiler-fortran-2023.0.0 +Breaks: intel-oneapi-ifort (<< 2023.0.0-25370) +Replaces: intel-oneapi-ifort (<< 2023.0.0-25370) +Filename: pool/main/intel-oneapi-compiler-fortran-2023.0.0-25370_amd64.deb +Size: 1788 +MD5sum: 1588b63d8ca4a384bde9ba021f85a506 +SHA1: 3c7a9d313dc23f21adb634158c492919ff5fc50e +SHA256: 29c0a4b20cc7032eee39e02302191d715b225eabf7699f4c6c2a70178b331631 +SHA512: f417b8101a7e0a6ff418d936355625f8dca4594427c9609bb7e91e161d22e62ce9840525fe21cc474218aaf116d15f447d5bd0ce4641f2ef3d60bc35b3a2fa7a +Description: Intel® Fortran Compiler & Intel® Fortran Compiler Classic 2023.0.0 for Linux* for Intel(R) 64 + + +Package: intel-oneapi-compiler-fortran-2023.1.0 +Architecture: amd64 +Version: 2023.1.0-46305 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 157756 +Depends: intel-oneapi-compiler-shared-2023.1.0, intel-oneapi-compiler-fortran-common-2023.1.0, intel-oneapi-compiler-fortran-runtime-2023.1.0, intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing-2023.1.0 +Filename: pool/main/intel-oneapi-compiler-fortran-2023.1.0-2023.1.0-46305_amd64.deb +Size: 36044956 +MD5sum: 0e01e3e6fa797bc2f42487eba4f999d4 +SHA1: ac19a179d85162961d8890a1c472bbe4e204f09c +SHA256: c8c73b7a88ed594c53a424dc3ed1dc497259da960dad5eb902982f5c31059e8d +SHA512: bd2d3b1413637d7207c5e149605dd0bbefda57360ebdeb3ef40dc62a52491bfcd0637e7a4c85a328a5159a20a7bf7b376a398b0b96273e59ec3a29aef91072e6 +Description: Intel® Fortran Compiler & Intel® Fortran Compiler Classic 2023.1.0 for Linux* for Intel(R) 64 + + +Package: intel-oneapi-compiler-fortran +Architecture: amd64 +Version: 2023.1.0-46305 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Provides: intel-oneapi-ifort (= 2023.1.0-46305) +Depends: intel-oneapi-compiler-fortran-2023.1.0 +Breaks: intel-oneapi-ifort (<< 2023.1.0-46305) +Replaces: intel-oneapi-ifort (<< 2023.1.0-46305) +Filename: pool/main/intel-oneapi-compiler-fortran-2023.1.0-46305_amd64.deb +Size: 1788 +MD5sum: 974e175bd2aacf3c7a1e9822b55b6c9e +SHA1: 51060dc716fcb77a3760d7a9dbcc2496bf1e876a +SHA256: f5bf161676fcfa3ac5be2816905eb0429abf1364b0a1300c029332714a46ee76 +SHA512: f038541d8a6ae043690041456b43eb560d16bdc5ab4b2e57423ea0dc623cf1f6274d1e29e1d8de4ee0084e70979b68fe6ce8ef974e5453d4b028087f5b513883 +Description: Intel® Fortran Compiler & Intel® Fortran Compiler Classic 2023.1.0 for Linux* for Intel(R) 64 + + +Package: intel-oneapi-compiler-fortran-runtime +Architecture: amd64 +Version: 2021.1.1-189 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Provides: intel-oneapi-ifort-runtime (= 2021.1.1-189) +Depends: intel-oneapi-compiler-fortran-runtime-2021.1.1 +Breaks: intel-oneapi-ifort-runtime (<< 2021.1.1-189) +Replaces: intel-oneapi-ifort-runtime (<< 2021.1.1-189) +Filename: pool/main/intel-oneapi-compiler-fortran-runtime-2021.1.1-189_amd64.deb +Size: 1732 +MD5sum: 16d525bcd8cbfb1eaf69a1cbf2f6cb63 +SHA1: a2d93c88aafdb1c87a06acd83dc78fe9d892f63e +SHA256: 45228e1f2536aac40d780b487d7118a58a55dc6ab1644ca6d9bd498791d96199 +SHA512: 86aa3e1a09654eb5367ba457c0ef2e3a52aa5c6207bb9e1b36fade153e75c917df0b2b3ee79453e76deac1da56503896a34ea3bf0416a075f32a1d025996b2b0 +Description: Intel® Fortran Compiler (Beta) & Intel® Fortran Compiler Classic 2021.1.1 for Linux* runtime package for Intel(R) 64 + + +Package: intel-oneapi-compiler-fortran-runtime-2021.1.1 +Architecture: amd64 +Version: 2021.1.1-189 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 3154 +Depends: intel-oneapi-mpi, intel-oneapi-compiler-shared-runtime-2021.1.1, intel-oneapi-compiler-dpcpp-cpp-classic-fortran-shared-runtime-2021.1.1,intel-oneapi-common-vars,intel-oneapi-common-licensing +Filename: pool/main/intel-oneapi-compiler-fortran-runtime-2021.1.1-2021.1.1-189_amd64.deb +Size: 576356 +MD5sum: 44de23f16ed9098b9d2b72e133310ce0 +SHA1: dc982072cbf40761725e3675b8d105c497bb86db +SHA256: b9e4be892b9d5faf47d94cb57e5786e6be94b8d96a9928fe3734ef81c765d9a1 +SHA512: 9fbcb7a7483b834d3a0349d7bc693678fddca95248da73c6ecf1790523f84b24a8d94428c3f10139c8fa1473877ce2e8c61bcfd90b80c497b90da1ba8369401e +Description: Intel® Fortran Compiler (Beta) & Intel® Fortran Compiler Classic 2021.1.1 for Linux* runtime package for Intel(R) 64 + + +Package: intel-oneapi-compiler-fortran-runtime-2021.1.2 +Architecture: amd64 +Version: 2021.1.2-266 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 3154 +Depends: intel-oneapi-mpi, intel-oneapi-compiler-shared-runtime-2021.1.2, intel-oneapi-compiler-dpcpp-cpp-classic-fortran-shared-runtime-2021.1.2,intel-oneapi-common-vars,intel-oneapi-common-licensing +Filename: pool/main/intel-oneapi-compiler-fortran-runtime-2021.1.2-2021.1.2-266_amd64.deb +Size: 577268 +MD5sum: f042dc328927ae5b4c96d2f7819e6d96 +SHA1: 0c289044620d7584d6839b0afc3428566c67908f +SHA256: f03fcb2a861ea586af59880a9499f7d92dd041a784802f6009232f4add8dbe85 +SHA512: d4f1cd245c6ec6193526ad4e8a8db11bb846aa30aa46baf770ae5cc6b2e29e830489df569ad2ea94847ae6d85f5461423133950cc3426243baa504461d6cb379 +Description: Intel® Fortran Compiler (Beta) & Intel® Fortran Compiler Classic 2021.1.2 for Linux* runtime package for Intel(R) 64 + + +Package: intel-oneapi-compiler-fortran-runtime +Architecture: amd64 +Version: 2021.1.2-266 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Provides: intel-oneapi-ifort-runtime (= 2021.1.2-266) +Depends: intel-oneapi-compiler-fortran-runtime-2021.1.2 +Breaks: intel-oneapi-ifort-runtime (<< 2021.1.2-266) +Replaces: intel-oneapi-ifort-runtime (<< 2021.1.2-266) +Filename: pool/main/intel-oneapi-compiler-fortran-runtime-2021.1.2-266_amd64.deb +Size: 1730 +MD5sum: 7a84496553213c5cad662d2eaaa869d8 +SHA1: 92c89d4b57fac2a3a4fe27330ed2606e9ee1f5aa +SHA256: 7f85c48643830be06d1de4301394082990e4e5efd2291b6b2732f93660153f80 +SHA512: a4671a87d56d975b4b0a66c848336426679e2f9eda9bc06fb34c789947ee477e67ad88668a472c2d9d6b048b0c6e639227621136920e8ed2e3b96a37941f9aec +Description: Intel® Fortran Compiler (Beta) & Intel® Fortran Compiler Classic 2021.1.2 for Linux* runtime package for Intel(R) 64 + + +Package: intel-oneapi-compiler-fortran-runtime-2021.2.0 +Architecture: amd64 +Version: 2021.2.0-610 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 3158 +Depends: intel-oneapi-mpi-2021.2.0, intel-oneapi-compiler-shared-runtime-2021.2.0, intel-oneapi-compiler-dpcpp-cpp-classic-fortran-shared-runtime-2021.2.0, intel-oneapi-common-vars (>= 2021.2.0-195), intel-oneapi-common-licensing-2021.2.0 +Filename: pool/main/intel-oneapi-compiler-fortran-runtime-2021.2.0-2021.2.0-610_amd64.deb +Size: 576890 +MD5sum: fbca038eaf15aa4f5f3baf3817ac12d5 +SHA1: 2f8ad8a56fa85e51792041f341ae89ad494e01cb +SHA256: 4da4af4e33c451eaf95441eec852d8352aaf7d4d6c7c8662de7da75e592e85ed +SHA512: 32392b0cbf895641dbdcbb14f20ef809f33390ca6b2981343f1c551353bac94978697593d5d1de4b114820ea0e3d4c8dc6be6b703f9021ba09ee4d5cf8e17e98 +Description: Intel® Fortran Compiler (Beta) & Intel® Fortran Compiler Classic 2021.2.0 for Linux* runtime package for Intel(R) 64 + + +Package: intel-oneapi-compiler-fortran-runtime +Architecture: amd64 +Version: 2021.2.0-610 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Provides: intel-oneapi-ifort-runtime (= 2021.2.0-610) +Depends: intel-oneapi-compiler-fortran-runtime-2021.2.0 +Breaks: intel-oneapi-ifort-runtime (<< 2021.2.0-610) +Replaces: intel-oneapi-ifort-runtime (<< 2021.2.0-610) +Filename: pool/main/intel-oneapi-compiler-fortran-runtime-2021.2.0-610_amd64.deb +Size: 1728 +MD5sum: 6e0ba0919dc4cb39dc955f259fddf012 +SHA1: d816919cfd372549e795144847f69e729a76712d +SHA256: 996be857da01a7560ef9a12df2c83431b2d7c8f37ef412bca182b310572073a2 +SHA512: f9fb713800b6dc735aae4ca7a02f5c427ab7c6e3db06250b396dffa560458bfdc46e4095f35fb245e3cd34eb1067760efccc92fa27c9b099d6eb9e9ce131f37e +Description: Intel® Fortran Compiler (Beta) & Intel® Fortran Compiler Classic 2021.2.0 for Linux* runtime package for Intel(R) 64 + + +Package: intel-oneapi-compiler-fortran-runtime-2021.3.0 +Architecture: amd64 +Version: 2021.3.0-3350 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 3162 +Depends: intel-oneapi-mpi-2021.3.0, intel-oneapi-compiler-shared-runtime-2021.3.0, intel-oneapi-compiler-dpcpp-cpp-classic-fortran-shared-runtime-2021.3.0, intel-oneapi-common-vars (>= 2021.3.0-261), intel-oneapi-common-licensing-2021.3.0 +Filename: pool/main/intel-oneapi-compiler-fortran-runtime-2021.3.0-2021.3.0-3350_amd64.deb +Size: 578028 +MD5sum: b2c8aa95b6fe80c4f883f81403ec7f0d +SHA1: c20848cb3bb5a4ce91b334dc399e68e29370497f +SHA256: 6d945b0c11e738238b1991279b27181bad681ea2171b31d97f4bd16d3868c75e +SHA512: 9a12178b0a013e5b3c3b80256ba244c71995585b26a48aa115fddd7a83a205e00006057296f5bd2ec96e12e227a20c3352ffdcbaaba52275fcb8a948e6ee4660 +Description: Intel® Fortran Compiler (Beta) & Intel® Fortran Compiler Classic 2021.3.0 for Linux* runtime package for Intel(R) 64 + + +Package: intel-oneapi-compiler-fortran-runtime +Architecture: amd64 +Version: 2021.3.0-3350 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Provides: intel-oneapi-ifort-runtime (= 2021.3.0-3350) +Depends: intel-oneapi-compiler-fortran-runtime-2021.3.0 +Breaks: intel-oneapi-ifort-runtime (<< 2021.3.0-3350) +Replaces: intel-oneapi-ifort-runtime (<< 2021.3.0-3350) +Filename: pool/main/intel-oneapi-compiler-fortran-runtime-2021.3.0-3350_amd64.deb +Size: 1730 +MD5sum: bc70ccf9e9bd696e4ed30c627b644cf2 +SHA1: 05e00cd3156b4ceed9876ce38cae85910ecaf09c +SHA256: 7f64e0433b287b5a21dce02c1d684c0507c3943f41925fff665bbd58b70b0a71 +SHA512: f67f18814cadb1b082478a7fdb58cc0ac94cc083ae8ff74f8edc3f0bc3b4c588b665bba221105d17696eb9df3448cc947b45d12f387dc8bbca518a1b73f87806 +Description: Intel® Fortran Compiler (Beta) & Intel® Fortran Compiler Classic 2021.3.0 for Linux* runtime package for Intel(R) 64 + + +Package: intel-oneapi-compiler-fortran-runtime-2021.4.0 +Architecture: amd64 +Version: 2021.4.0-3561 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 3072 +Depends: intel-oneapi-mpi-2021.4.0, intel-oneapi-compiler-shared-runtime-2021.4.0, intel-oneapi-compiler-dpcpp-cpp-classic-fortran-shared-runtime-2021.4.0, intel-oneapi-common-vars (>= 2021.4.0-327), intel-oneapi-common-licensing-2021.4.0 +Filename: pool/main/intel-oneapi-compiler-fortran-runtime-2021.4.0-2021.4.0-3561_amd64.deb +Size: 565976 +MD5sum: 27508b0a54cd53574ccb13c41521c910 +SHA1: 81e27501f17f0818e844afc3d407ef70b3498a1f +SHA256: 7864cac82badadd38565d97b586fb9f4aa7258b656ca209c16e34cd8b83f9094 +SHA512: 97e6e06fc0fe56a79818981d365f293dd42ca18f002fbba7bce72d3e691500bf633be1dfcb4fef613cb9b2a99935c7cbb0b923c3fa4749ac6e3cc93e586711b0 +Description: Intel® Fortran Compiler (Beta) & Intel® Fortran Compiler Classic 2021.4.0 for Linux* runtime package for Intel(R) 64 + + +Package: intel-oneapi-compiler-fortran-runtime +Architecture: amd64 +Version: 2021.4.0-3561 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Provides: intel-oneapi-ifort-runtime (= 2021.4.0-3561) +Depends: intel-oneapi-compiler-fortran-runtime-2021.4.0 +Breaks: intel-oneapi-ifort-runtime (<< 2021.4.0-3561) +Replaces: intel-oneapi-ifort-runtime (<< 2021.4.0-3561) +Filename: pool/main/intel-oneapi-compiler-fortran-runtime-2021.4.0-3561_amd64.deb +Size: 1728 +MD5sum: 30b5909a8c6e028a4d9d61324d9f9998 +SHA1: f023b02bae5048bda2ae81ebaecfe5a8a006618e +SHA256: 6af8cde8a4ecf06c4119dadd09e32198bb9d1708c34ce0690ccedc34935cb1dc +SHA512: d2cb1a5176323775601aa9271b10f991697a2bf97b9af867a5202de07d0caf4d2f009af6b0a7f94737a0dac0111f5861e78374c5174e4fe8e6b749cd4fa60db9 +Description: Intel® Fortran Compiler (Beta) & Intel® Fortran Compiler Classic 2021.4.0 for Linux* runtime package for Intel(R) 64 + + +Package: intel-oneapi-compiler-fortran-runtime-2022.0.1 +Architecture: amd64 +Version: 2022.0.1-3633 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 3080 +Depends: intel-oneapi-mpi-2021.5.0, intel-oneapi-compiler-shared-runtime-2022.0.1, intel-oneapi-compiler-dpcpp-cpp-classic-fortran-shared-runtime-2022.0.1, intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-compiler-fortran-runtime-2022.0.1-2022.0.1-3633_amd64.deb +Size: 568010 +MD5sum: f9532d667cae27dfd8a8fcafa5cb0f33 +SHA1: 17eb7693958b0ad2470107c4490d2acedc1deaa6 +SHA256: 031bd973267f699cad6be7aff09018458bdfe9d9fc1af8c1034a28a65d27a5e0 +SHA512: e8f2954ec0188e3d9a8239e94c015b215c707ee9f9a7caad79e047bd07b76ce37048bd253572707bf90957af38e7e5f4cecd6d321336ae74caa04951341c3405 +Description: Intel® Fortran Compiler & Intel® Fortran Compiler Classic 2022.0.1 for Linux* runtime package for Intel(R) 64 + + +Package: intel-oneapi-compiler-fortran-runtime +Architecture: amd64 +Version: 2022.0.1-3633 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Provides: intel-oneapi-ifort-runtime (= 2022.0.1-3633) +Depends: intel-oneapi-compiler-fortran-runtime-2022.0.1 +Breaks: intel-oneapi-ifort-runtime (<< 2022.0.1-3633) +Replaces: intel-oneapi-ifort-runtime (<< 2022.0.1-3633) +Filename: pool/main/intel-oneapi-compiler-fortran-runtime-2022.0.1-3633_amd64.deb +Size: 1722 +MD5sum: fe247169dafe5f75233860af6094cf54 +SHA1: 48029ce26f9dbf399a5028031657140673b0840c +SHA256: a0f80580d02502e4e65f08fee7b3017a135c0229f03fce1f2b1d193a443ac3d5 +SHA512: 6437fdfa2d9cdd4350a054680f755327b8038cb7b5eaccb659ad51334fc78f4f67eb71b224f76bbf08a3d86e68e358af939106bf8cd421a7f087092d51fc1d23 +Description: Intel® Fortran Compiler & Intel® Fortran Compiler Classic 2022.0.1 for Linux* runtime package for Intel(R) 64 + + +Package: intel-oneapi-compiler-fortran-runtime-2022.0.2 +Architecture: amd64 +Version: 2022.0.2-3658 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 3080 +Depends: intel-oneapi-mpi-2021.5.1, intel-oneapi-compiler-shared-runtime-2022.0.2, intel-oneapi-compiler-dpcpp-cpp-classic-fortran-shared-runtime-2022.0.2, intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-compiler-fortran-runtime-2022.0.2-2022.0.2-3658_amd64.deb +Size: 567982 +MD5sum: 9c2813d9e32b0f87f16bef7e1974157d +SHA1: f99a1750ac32895a5e38ed83d35483656308c2c0 +SHA256: 868a829dad84f1b21262a4004086c58a680c5c09317dea15fbff14ff3dfbd3cf +SHA512: ba873745ab6e4b51e629c53c3fd378d1cdf90aad638eeec01ae16b35c8fe3c6659dfe5965ac3aabbc7fd12a7709f179e6c1fd9e5c8a8ef0f235713e09521d2d0 +Description: Intel® Fortran Compiler & Intel® Fortran Compiler Classic 2022.0.2 for Linux* runtime package for Intel(R) 64 + + +Package: intel-oneapi-compiler-fortran-runtime +Architecture: amd64 +Version: 2022.0.2-3658 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Provides: intel-oneapi-ifort-runtime (= 2022.0.2-3658) +Depends: intel-oneapi-compiler-fortran-runtime-2022.0.2 +Breaks: intel-oneapi-ifort-runtime (<< 2022.0.2-3658) +Replaces: intel-oneapi-ifort-runtime (<< 2022.0.2-3658) +Filename: pool/main/intel-oneapi-compiler-fortran-runtime-2022.0.2-3658_amd64.deb +Size: 1722 +MD5sum: 6e6b4fc2d399061f93dd47b8ae94cfdc +SHA1: 1dca26898c91a8d68063b2b724307699f59bd236 +SHA256: b22cbc3beeec2bb4fc72448ad4f6ffb5aa42916a65bff7484c73a1148dee59a5 +SHA512: 7ccfdc29b47fd1437cc340489364c9829a3dfc7f06386d959602019f4824e7765fb8ac64fd2736dbf7d78df7c22bde833caa57a10457cc5a136ad3ea8824cc37 +Description: Intel® Fortran Compiler & Intel® Fortran Compiler Classic 2022.0.2 for Linux* runtime package for Intel(R) 64 + + +Package: intel-oneapi-compiler-fortran-runtime-2022.1.0 +Architecture: amd64 +Version: 2022.1.0-3768 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 3144 +Depends: intel-oneapi-mpi-2021.6.0, intel-oneapi-compiler-shared-runtime-2022.1.0, intel-oneapi-compiler-dpcpp-cpp-classic-fortran-shared-runtime-2022.1.0, intel-oneapi-common-vars (>= 2022.1.0-161), intel-oneapi-common-licensing-2022.1.0 +Filename: pool/main/intel-oneapi-compiler-fortran-runtime-2022.1.0-2022.1.0-3768_amd64.deb +Size: 569978 +MD5sum: 259f3e1ba1672067042e768b8f4882ef +SHA1: b01c15f22dba4061832ca0b3b947ecdeb43e3670 +SHA256: adf5082079e72ec8634fa363bb3fd0fb4f394e4f1f927949ed06a2f3f1661956 +SHA512: 626daa379dfbc6ba22352aa3fa4d9a77ad44b3b8731511fc61ffb57162b9c9ed1e44a205a96bf2d6739b9ebcb2949bfbc30219e932d71be4ee1cd4d42b5b6a8a +Description: Intel® Fortran Compiler & Intel® Fortran Compiler Classic 2022.1.0 for Linux* runtime package for Intel(R) 64 + + +Package: intel-oneapi-compiler-fortran-runtime +Architecture: amd64 +Version: 2022.1.0-3768 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Provides: intel-oneapi-ifort-runtime (= 2022.1.0-3768) +Depends: intel-oneapi-compiler-fortran-runtime-2022.1.0 +Breaks: intel-oneapi-ifort-runtime (<< 2022.1.0-3768) +Replaces: intel-oneapi-ifort-runtime (<< 2022.1.0-3768) +Filename: pool/main/intel-oneapi-compiler-fortran-runtime-2022.1.0-3768_amd64.deb +Size: 1800 +MD5sum: b363562d3039555a6a68f4eae61872f4 +SHA1: 24fd79a3d2a59ebefb54891931f6b90ad8445ad8 +SHA256: 45c79bc0eb26e871838d47632cc15c53f6ef13f9371aab71b815b87379aaa46a +SHA512: 8f65f10d149d07c8faefc3a3b9eaec99f14a9a5c12d9bfa5b32adb83325164e28194cf56b03c9bce20ea8450badeb73e990d9f0b381aadfedf633d20b54ff7c2 +Description: Intel® Fortran Compiler & Intel® Fortran Compiler Classic 2022.1.0 for Linux* runtime package for Intel(R) 64 + + +Package: intel-oneapi-compiler-fortran-runtime-2022.2.0 +Architecture: amd64 +Version: 2022.2.0-8734 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 2768 +Depends: intel-oneapi-mpi-2021.7.0, intel-oneapi-compiler-shared-runtime-2022.2.0, intel-oneapi-compiler-dpcpp-cpp-classic-fortran-shared-runtime-2022.2.0, intel-oneapi-common-vars (>= 2022.2.0-8694), intel-oneapi-common-licensing-2022.2.0 +Filename: pool/main/intel-oneapi-compiler-fortran-runtime-2022.2.0-2022.2.0-8734_amd64.deb +Size: 519850 +MD5sum: 6ff0cba56951cd48f87b1252768492e4 +SHA1: bf868b5894e0e1f167d38db14e2eb7dfa315250f +SHA256: 845f54e8cfb63e8e1f1a1935ab9f8f32a48b944f0337ab51bbe8d6dc517eb0b5 +SHA512: 40caa8a56d3439907cbb6007be0544b10d4f8230f831c83c99efa47100bba108293ca3a9904983bb7cfc798b3bd6fdbabf2736b6887b8b916ca8c8d950ec88df +Description: Intel® Fortran Compiler & Intel® Fortran Compiler Classic 2022.2.0 for Linux* runtime package for Intel(R) 64 + + +Package: intel-oneapi-compiler-fortran-runtime +Architecture: amd64 +Version: 2022.2.0-8734 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Provides: intel-oneapi-ifort-runtime (= 2022.2.0-8734) +Depends: intel-oneapi-compiler-fortran-runtime-2022.2.0 +Breaks: intel-oneapi-ifort-runtime (<< 2022.2.0-8734) +Replaces: intel-oneapi-ifort-runtime (<< 2022.2.0-8734) +Filename: pool/main/intel-oneapi-compiler-fortran-runtime-2022.2.0-8734_amd64.deb +Size: 1800 +MD5sum: 76140564e912738b4aa3c934d95e01ef +SHA1: bb5a6c3b78e6ea30e9bb21ed7dc10996b22535cc +SHA256: fd17414a0f1f8dae1515ac5b0aab9a51809ba5924eecd0d01e3559fff65d3dfd +SHA512: 3a3ceecf6cec079b95c3d2a3723a652f20a6aa3bf429eeac79cf77b681bbbc0395b4e8a43744c8e41802c8d64504d335699bac3bc0f1932eaaf9f7f2bd666cda +Description: Intel® Fortran Compiler & Intel® Fortran Compiler Classic 2022.2.0 for Linux* runtime package for Intel(R) 64 + + +Package: intel-oneapi-compiler-fortran-runtime +Architecture: amd64 +Version: 2022.2.1-16953 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Provides: intel-oneapi-ifort-runtime (= 2022.2.1-16953) +Depends: intel-oneapi-compiler-fortran-runtime-2022.2.1 +Breaks: intel-oneapi-ifort-runtime (<< 2022.2.1-16953) +Replaces: intel-oneapi-ifort-runtime (<< 2022.2.1-16953) +Filename: pool/main/intel-oneapi-compiler-fortran-runtime-2022.2.1-16953_amd64.deb +Size: 1800 +MD5sum: 2dfb73aa5facc937dac16e68842f8252 +SHA1: 942b248eee3b0ed6a4d4c281d231aa355220cc3d +SHA256: fa854287b331b4793e8225846d6ef1d514f19d2299c9e4b3e2e47f4be7e03014 +SHA512: 4d47154cb37bf1e9ab6efa79b2d664865c0b4bb229b16c8412a2db1a3b7cf56ba9179dd0c954543e0008ac0205fd5396e9da56b7093005f12b36f148b8f68a05 +Description: Intel® Fortran Compiler & Intel® Fortran Compiler Classic 2022.2.1 for Linux* runtime package for Intel(R) 64 + + +Package: intel-oneapi-compiler-fortran-runtime-2022.2.1 +Architecture: amd64 +Version: 2022.2.1-16953 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 2768 +Depends: intel-oneapi-mpi-2021.7.1, intel-oneapi-compiler-shared-runtime-2022.2.1, intel-oneapi-compiler-dpcpp-cpp-classic-fortran-shared-runtime-2022.2.1, intel-oneapi-common-vars (>= 2022.2.1-14969), intel-oneapi-common-licensing-2022.2.1 +Filename: pool/main/intel-oneapi-compiler-fortran-runtime-2022.2.1-2022.2.1-16953_amd64.deb +Size: 519610 +MD5sum: b13580acf7181393091bed417b9112cf +SHA1: 95c31c7927168e136befa38fe341ffbc624b8018 +SHA256: be971339ba5d597e60445b2b3629ee0c9aa34dc0a21eaf8011707ad8e3b97608 +SHA512: 64afeadfe730b7fe40d2585b4cdda98611d4f0ab13fc8f3620ab70d07d65cef8d1906efe4b582e74cbb3438e78c72e779b4f62514c8060aa665dd3421888f978 +Description: Intel® Fortran Compiler & Intel® Fortran Compiler Classic 2022.2.1 for Linux* runtime package for Intel(R) 64 + + +Package: intel-oneapi-compiler-fortran-runtime-2023.0.0 +Architecture: amd64 +Version: 2023.0.0-25370 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 2821 +Depends: intel-oneapi-mpi-2021.8.0, intel-oneapi-compiler-shared-runtime-2023.0.0, intel-oneapi-compiler-dpcpp-cpp-classic-fortran-shared-runtime-2023.0.0, intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing-2023.0.0 +Filename: pool/main/intel-oneapi-compiler-fortran-runtime-2023.0.0-2023.0.0-25370_amd64.deb +Size: 525206 +MD5sum: 298a0a35607f8e6a1baa0001e1b8a76e +SHA1: 4bd82bfefd1ff6290c432f7b7dbc7a087590ad74 +SHA256: 8c38115b6c132b0c012834e7f7b55c003daac81beaec1678bb19111b848efbfb +SHA512: a759e0d5b0dd65e030c1f07f95e6fdd81c2dc1e2691ba5daf2b752e1657337082d3379e032e8fec6b7cf72b1db98d7c69094e4676bad4a0a265ef1b635c1fe67 +Description: Intel® Fortran Compiler & Intel® Fortran Compiler Classic 2023.0.0 for Linux* runtime package for Intel(R) 64 + + +Package: intel-oneapi-compiler-fortran-runtime +Architecture: amd64 +Version: 2023.0.0-25370 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Provides: intel-oneapi-ifort-runtime (= 2023.0.0-25370) +Depends: intel-oneapi-compiler-fortran-runtime-2023.0.0 +Breaks: intel-oneapi-ifort-runtime (<< 2023.0.0-25370) +Replaces: intel-oneapi-ifort-runtime (<< 2023.0.0-25370) +Filename: pool/main/intel-oneapi-compiler-fortran-runtime-2023.0.0-25370_amd64.deb +Size: 1800 +MD5sum: 512cd44f96a45d08535e0c377b417383 +SHA1: 973d81e3c6b93eace9b1991d91051977f9935653 +SHA256: df5282db2ff27092fe6ed7574d77684fdd6ee82a14816cd8dcb072d3201e2460 +SHA512: 22d08e5e021ade5948e07bb3409081eb0abc5449af007dc7e3f72bb733a8e460d000f43324c89852563c7092608b7987c174638a2afd7c0a8a043d92fe8f0e27 +Description: Intel® Fortran Compiler & Intel® Fortran Compiler Classic 2023.0.0 for Linux* runtime package for Intel(R) 64 + + +Package: intel-oneapi-compiler-fortran-runtime-2023.1.0 +Architecture: amd64 +Version: 2023.1.0-46305 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 2838 +Depends: intel-oneapi-mpi-2021.9.0, intel-oneapi-compiler-shared-runtime-2023.1.0, intel-oneapi-compiler-dpcpp-cpp-classic-fortran-shared-runtime-2023.1.0, intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing-2023.1.0 +Filename: pool/main/intel-oneapi-compiler-fortran-runtime-2023.1.0-2023.1.0-46305_amd64.deb +Size: 528790 +MD5sum: 7961730d5b039bac99b5c87c4ad34834 +SHA1: f01b2fa7b8a56f1c90c65fb9b31d9e3afda11e0e +SHA256: bb137c02afd6c372e0734c424e2087c9509fbe2f154eee1f363e39368f794334 +SHA512: 33826a4e4d1cff7e935622782d8894e5a2593eff8c251b0cb77ad1f5570c60f7d9592f06c0ac2164710dc7e116f6e5682a381f3b93f7788834c946a613b319cd +Description: Intel® Fortran Compiler & Intel® Fortran Compiler Classic 2023.1.0 for Linux* runtime package for Intel(R) 64 + + +Package: intel-oneapi-compiler-fortran-runtime +Architecture: amd64 +Version: 2023.1.0-46305 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Provides: intel-oneapi-ifort-runtime (= 2023.1.0-46305) +Depends: intel-oneapi-compiler-fortran-runtime-2023.1.0 +Breaks: intel-oneapi-ifort-runtime (<< 2023.1.0-46305) +Replaces: intel-oneapi-ifort-runtime (<< 2023.1.0-46305) +Filename: pool/main/intel-oneapi-compiler-fortran-runtime-2023.1.0-46305_amd64.deb +Size: 1800 +MD5sum: 8dc461363452db0c959c73e20fa621c7 +SHA1: 91927bb2b91c04596dce524972ba8a817bf93d07 +SHA256: a80d6c6606653ad4e45dc34410b2fa4f60dc7c50041ba27b73981e7c2743c7cc +SHA512: 74ef28c5670798aa8810c899745e5d482580df562f78616d219f3e386f286e73f3a2daf917151873eb9c4064d1420f38cdb9389fb7288c2c3ed4fbccc5f79e08 +Description: Intel® Fortran Compiler & Intel® Fortran Compiler Classic 2023.1.0 for Linux* runtime package for Intel(R) 64 + + +Package: intel-oneapi-compiler-shared-2021.1.1 +Architecture: amd64 +Version: 2021.1.1-189 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 129865 +Depends: intel-oneapi-compiler-shared-common-2021.1.1, intel-oneapi-compiler-shared-runtime-2021.1.1,intel-oneapi-common-vars,intel-oneapi-common-licensing +Filename: pool/main/intel-oneapi-compiler-shared-2021.1.1-2021.1.1-189_amd64.deb +Size: 14743872 +MD5sum: 530a805037bade544f6253b69522d634 +SHA1: 206306616126933c682efc215c6cb89bd9701103 +SHA256: 9974c6a3c854b7ac90c670763051dfc4a271304184025e4a7e661e32446afb9e +SHA512: 16e89e8c56bc0a361903133f166d8d680b3547ae8ddd978a73ad75215144fe0f439f8490af9378b12953ad31d72de13e72f14c8d100cc5ae7ce16dd33f0aebd6 +Description: Intel(R) Compiler Shared Files + + +Package: intel-oneapi-compiler-shared-2021.1.2 +Architecture: amd64 +Version: 2021.1.2-266 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 129858 +Depends: intel-oneapi-compiler-shared-common-2021.1.2, intel-oneapi-compiler-shared-runtime-2021.1.2,intel-oneapi-common-vars,intel-oneapi-common-licensing +Filename: pool/main/intel-oneapi-compiler-shared-2021.1.2-2021.1.2-266_amd64.deb +Size: 14785914 +MD5sum: 4e982cd792164e4695190082135290cb +SHA1: 449ef9c32a9015dbdf72cc9c750cc6d41baed7a9 +SHA256: f3443b03b5a40bb744944fae1f18704a01e795249a117084c21c32617fac738a +SHA512: c0fe80d8856261bdabda7354ecf5f1faa8efd6dfac889bedb3af34ab94fb6f609ca70ac9199e1ed4f7e533345f60451a6250ffaf7be141d37dea78b57dabd2d3 +Description: Intel(R) Compiler Shared Files + + +Package: intel-oneapi-compiler-shared-2021.2.0 +Architecture: amd64 +Version: 2021.2.0-610 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 134876 +Depends: intel-oneapi-compiler-shared-common-2021.2.0, intel-oneapi-compiler-shared-runtime-2021.2.0, intel-oneapi-dpcpp-debugger-10.1.1, intel-oneapi-common-vars (>= 2021.2.0-195), intel-oneapi-common-licensing-2021.2.0 +Filename: pool/main/intel-oneapi-compiler-shared-2021.2.0-2021.2.0-610_amd64.deb +Size: 15510446 +MD5sum: 1792e5e13175d8a659384e75114ffab9 +SHA1: 1998df119270de2e61cd5af0dd3216eaea9d47e9 +SHA256: a491103d6a6e954bb02cbbcd7a90f0e68f968fda9a807a45167864e1d90588aa +SHA512: 0f7d315c6544445f048f74a560901ebc0b90a2b640c7ce1fdb15322233654420b3146b19cb6e3be885a4ead03fcb4e5e7f6eb20f52901dd4a6d47a89ac4ee751 +Description: Intel(R) Compiler Shared Files + + +Package: intel-oneapi-compiler-shared-2021.3.0 +Architecture: amd64 +Version: 2021.3.0-3350 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 136503 +Depends: intel-oneapi-compiler-shared-common-2021.3.0, intel-oneapi-compiler-shared-runtime-2021.3.0, intel-oneapi-dpcpp-debugger-10.1.2, intel-oneapi-common-vars (>= 2021.3.0-261), intel-oneapi-common-licensing-2021.3.0 +Filename: pool/main/intel-oneapi-compiler-shared-2021.3.0-2021.3.0-3350_amd64.deb +Size: 15646990 +MD5sum: 294821fc03353e74b175cee0d5f1ec1e +SHA1: d7a547879d865e87ab8b79268a5c7071c6eb2cc1 +SHA256: f8040bca642b69d82a1c9987b4b89ed455e8e574272965be6b8516a842242583 +SHA512: 10e819c94719b09871731777b0d0b2d9aa0c42f7bee98cd567cb9c31dce9d464f34f37629845ef5b9609bc327a1eadf17e818c29e8f8e165c8342766abc5f303 +Description: Intel(R) Compiler Shared Files + + +Package: intel-oneapi-compiler-shared-2021.4.0 +Architecture: amd64 +Version: 2021.4.0-3561 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 152786 +Depends: intel-oneapi-compiler-shared-common-2021.4.0, intel-oneapi-compiler-shared-runtime-2021.4.0, intel-oneapi-dpcpp-debugger-10.2.4, intel-oneapi-common-vars (>= 2021.4.0-327), intel-oneapi-common-licensing-2021.4.0 +Filename: pool/main/intel-oneapi-compiler-shared-2021.4.0-2021.4.0-3561_amd64.deb +Size: 16168008 +MD5sum: 56625689064768087110757b232d94fe +SHA1: 6d66e1a1937c0779fd1b46fad9b873daf1cdab4f +SHA256: 363e82e040fcfd685e959b03a8203c4f4705ca56f328bf1cddd879676411c198 +SHA512: 7e92a3ab2bbd25ec6136ca34267ecbf8c8e11d51e98d6ccdb5a941c1131d8ee927e4f11734297f438abcf36a2f22798b278582182713fc0dcc49cec277072201 +Description: Intel(R) Compiler Shared Files + + +Package: intel-oneapi-compiler-shared-2022.0.1 +Architecture: amd64 +Version: 2022.0.1-3633 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 151693 +Depends: intel-oneapi-compiler-shared-common-2022.0.1, intel-oneapi-compiler-shared-runtime-2022.0.1, intel-oneapi-dpcpp-debugger-2021.5.0, intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-compiler-shared-2022.0.1-2022.0.1-3633_amd64.deb +Size: 16024444 +MD5sum: b521ab225fbda9d1818a9db9747e802c +SHA1: fff42e3f4e96d5a303fb61374caf6c0ba1383341 +SHA256: 312dae8a966984f0fe59537b3dd9647a8d1300e46c9f5389f134728e524ca40d +SHA512: 62e1cf03aa4f509804e5fa7249714791b544228bc6c1f6dd6aadf6458badc7a22d771ca53f219904e03071698c09adac5ac05fece9891e0f5558ac672c5439e9 +Description: Intel(R) Compiler Shared Files + + +Package: intel-oneapi-compiler-shared-2022.0.2 +Architecture: amd64 +Version: 2022.0.2-3658 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 151693 +Depends: intel-oneapi-compiler-shared-common-2022.0.2, intel-oneapi-compiler-shared-runtime-2022.0.2, intel-oneapi-dpcpp-debugger-2021.5.0, intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-compiler-shared-2022.0.2-2022.0.2-3658_amd64.deb +Size: 16036910 +MD5sum: 3b0224bfbebc641e946c9d64c4344fba +SHA1: 885468ad13530dcff07d8635262889b4c49134e9 +SHA256: d5d69b04121ca0ffbde1b631dcd48d2b738b8c8ccaea3b069128d643a2dbc2cd +SHA512: d80388b3df264f2ec7ec9433586c84b1fc8342ce8b8935e634e4b82b20d12234fd4d6602ec3f743afcca219bc0dc4cebebbc1efe50cc5cf4f7b8896343ed1bf6 +Description: Intel(R) Compiler Shared Files + + +Package: intel-oneapi-compiler-shared-2022.1.0 +Architecture: amd64 +Version: 2022.1.0-3768 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 152628 +Depends: intel-oneapi-compiler-shared-common-2022.1.0, intel-oneapi-compiler-shared-runtime-2022.1.0, intel-oneapi-dpcpp-debugger-2021.6.0, intel-oneapi-common-vars (>= 2022.1.0-161), intel-oneapi-common-licensing-2022.1.0 +Filename: pool/main/intel-oneapi-compiler-shared-2022.1.0-2022.1.0-3768_amd64.deb +Size: 16743852 +MD5sum: 128b6c409d89730e1bde7197125e2205 +SHA1: a82cc4046cbf9fb2100e3b12be81437c7ba539dc +SHA256: 3185dc02473b3d3a34234dd82a17c285e43701455636f93be235b52c2ac6f2c6 +SHA512: 9005690c947f3180dbd8153161cc4ac2a70bf18b8c557acf2c06df5c71f7bbcbe6c0521cb30455f3867be71023354a561cf8e0e2bf8576d9edf2250a80b75bdf +Description: Intel(R) Compiler Shared Files + + +Package: intel-oneapi-compiler-shared-2022.2.0 +Architecture: amd64 +Version: 2022.2.0-8734 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 138840 +Depends: intel-oneapi-compiler-shared-common-2022.2.0, intel-oneapi-compiler-shared-runtime-2022.2.0, intel-oneapi-dpcpp-debugger-2021.7.0, intel-oneapi-common-vars (>= 2022.2.0-8694), intel-oneapi-common-licensing-2022.2.0 +Filename: pool/main/intel-oneapi-compiler-shared-2022.2.0-2022.2.0-8734_amd64.deb +Size: 15227968 +MD5sum: 2ed54ded4eca3771b6857a02e5bdaadd +SHA1: b09f5cd99deb72e9dc1e125c1e4b6e913a1f92cc +SHA256: a007fe99bd0fafc4be42ed922c21221414126d4a497bcf5b6d22cb4f9749b082 +SHA512: a571172868609298a23c26aace058a5b05656ee22f88893e5e6256503efeb6c8aa6d339654c7698e22337ad99cc707f7cc0e9ace08698fc7a348a357e7b0de6f +Description: Intel(R) Compiler Shared Files + + +Package: intel-oneapi-compiler-shared-2022.2.1 +Architecture: amd64 +Version: 2022.2.1-16953 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 138842 +Depends: intel-oneapi-compiler-shared-common-2022.2.1, intel-oneapi-compiler-shared-runtime-2022.2.1, intel-oneapi-dpcpp-debugger-2021.7.1, intel-oneapi-common-vars (>= 2022.2.1-14969), intel-oneapi-common-licensing-2022.2.1 +Filename: pool/main/intel-oneapi-compiler-shared-2022.2.1-2022.2.1-16953_amd64.deb +Size: 15255308 +MD5sum: 3f95d668dbdf9166da9cd7e2e4b52ffc +SHA1: 9faa97ee7b1518725157a30555902a0a1e4827f3 +SHA256: 106626b886bece6fc241b57405cdfba8250b66f41333bd2a154108432fa6a9e5 +SHA512: 5bbd9a6f7befc33d4f6dfacd7a65b3d77327821fe19a5a89b3560f3c3f43192acda17009f189172ac8e6090cd6d167b18b4f3decef43a0bc50443e597d77ee22 +Description: Intel(R) Compiler Shared Files + + +Package: intel-oneapi-compiler-shared-2023.0.0 +Architecture: amd64 +Version: 2023.0.0-25370 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 149865 +Depends: intel-oneapi-compiler-shared-common-2023.0.0, intel-oneapi-compiler-shared-runtime-2023.0.0, intel-oneapi-dpcpp-debugger-2023.0.0, intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing-2023.0.0 +Filename: pool/main/intel-oneapi-compiler-shared-2023.0.0-2023.0.0-25370_amd64.deb +Size: 16621744 +MD5sum: 026f8c8d7b2d28a57008485a11f09398 +SHA1: d89e57249e73a6150a6da6832d5dd51cf68f53ff +SHA256: 2fa8d9f8bdbada124da24f1d161b4b882f85f54bcc341149ea5a5d1e9dcc826d +SHA512: 38904663ab7e7ee0012e183a2e1a2ece8b9b10792b6dffb60831901d78d34b15797da44a7c756c7d23c0c2e1d0b2314dbc0e836e838b7b18acbc2ae5652ec3b6 +Description: Intel(R) Compiler Shared Files + + +Package: intel-oneapi-compiler-shared-2023.1.0 +Architecture: amd64 +Version: 2023.1.0-46305 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 152112 +Depends: intel-oneapi-compiler-shared-common-2023.1.0, intel-oneapi-compiler-shared-runtime-2023.1.0, intel-oneapi-dpcpp-debugger-2023.1.0, intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing-2023.1.0 +Filename: pool/main/intel-oneapi-compiler-shared-2023.1.0-2023.1.0-46305_amd64.deb +Size: 16715784 +MD5sum: cc933bb51affefaa4942ad8e63490f31 +SHA1: cb428924a953160605dfb88120c30824966725cb +SHA256: 014104b9721d7fca7bb2529ed810f27e9a73410698e9cc643ded7f909a7f17cf +SHA512: 8cf08a8637b4e1383d21d9178e926252323ab521d5afef7885d6774ecd3710fae642eaa48895e2f5f895f667f1337f6bcf2a4de1790ddea7ea21932a5b7f06fe +Description: Intel(R) Compiler Shared Files + + +Package: intel-oneapi-compiler-shared-runtime-2021.1.1 +Architecture: amd64 +Version: 2021.1.1-189 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 36083 +Depends: intel-oneapi-compiler-shared-common-runtime-2021.1.1, intel-oneapi-openmp-2021.1.1,intel-oneapi-common-vars,intel-oneapi-common-licensing +Filename: pool/main/intel-oneapi-compiler-shared-runtime-2021.1.1-2021.1.1-189_amd64.deb +Size: 5862632 +MD5sum: b78ecc2439d04c85c88ecc606fb16126 +SHA1: 7d5836f13122c4618f88f078b231f330c8b2d593 +SHA256: 8eeb18c323c23a3f27dbac53b3ee2c8ec4bace69ccd1a07bdd1575a6c77e6efa +SHA512: 3975bdbd19c032bce88f6fd59de4181a90bf734a37b2085bed58822a836c5f0ef6af2c6dcfa003622782549ce41d154e26b4e9e9310d14792c69a2029015c13d +Description: Intel(R) Compiler Shared Files runtime contents + + +Package: intel-oneapi-compiler-shared-runtime-2021.1.2 +Architecture: amd64 +Version: 2021.1.2-266 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 36083 +Depends: intel-oneapi-compiler-shared-common-runtime-2021.1.2, intel-oneapi-openmp-2021.1.2,intel-oneapi-common-vars,intel-oneapi-common-licensing +Filename: pool/main/intel-oneapi-compiler-shared-runtime-2021.1.2-2021.1.2-266_amd64.deb +Size: 5843456 +MD5sum: 36a63eb8473b9e6b6dc3e9037741c297 +SHA1: 0c1be7da7fb9aca35b15338b315651f96a6452d4 +SHA256: 397b8d26f8c5a1cc898977e27c2493454e6c35e9181f263adf9259a78e3e2e59 +SHA512: 6910745cf30950e7acc06ebcd7aa27bf245f3b864fd8fe695a11f70a2bfb412f43697f6729997310f7969b75c0c60d8daf8c8419e1652910af7288fc69804e5b +Description: Intel(R) Compiler Shared Files runtime contents + + +Package: intel-oneapi-compiler-shared-runtime-2021.2.0 +Architecture: amd64 +Version: 2021.2.0-610 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 36083 +Depends: intel-oneapi-compiler-shared-common-runtime-2021.2.0, intel-oneapi-openmp-2021.2.0, intel-oneapi-common-vars (>= 2021.2.0-195), intel-oneapi-common-licensing-2021.2.0 +Filename: pool/main/intel-oneapi-compiler-shared-runtime-2021.2.0-2021.2.0-610_amd64.deb +Size: 5852000 +MD5sum: dc6ca178ae31db00c11115d10a045c2b +SHA1: 2036026051abb6acf1a39d47b4ecae2feaa664b1 +SHA256: 248c0d1736ba22647a3d194ba9f3ab56e9f5fb8aa6b6e4294744be552503371f +SHA512: da5cdf0718f64cc4e90311de277fe88dbf197521585d1f6977e7bb6940582b140749d1903770acde7f6410c14738a1f79276b5d255083df4459e5107b508ac50 +Description: Intel(R) Compiler Shared Files runtime contents + + +Package: intel-oneapi-compiler-shared-runtime-2021.3.0 +Architecture: amd64 +Version: 2021.3.0-3350 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 36004 +Depends: intel-oneapi-compiler-shared-common-runtime-2021.3.0, intel-oneapi-openmp-2021.3.0, intel-oneapi-common-vars (>= 2021.3.0-261), intel-oneapi-common-licensing-2021.3.0 +Filename: pool/main/intel-oneapi-compiler-shared-runtime-2021.3.0-2021.3.0-3350_amd64.deb +Size: 5851472 +MD5sum: 6e0a39c05d1687cbe75530f983395931 +SHA1: 65ac08dc5d5232bdca810dacde0a1313ff709477 +SHA256: 2e62fed75d36ddc0799927553133a37efe514bb22eee04130a87692a00f3ce89 +SHA512: 1a180fb1ad8218870430a226fbd9fd87cd118bc2b8813781cebe4281b4b2881e39b29c1297099e6564c0447ea1119f0c700e014f3a9adebf8f0772736cb3e46c +Description: Intel(R) Compiler Shared Files runtime contents + + +Package: intel-oneapi-compiler-shared-runtime-2021.4.0 +Architecture: amd64 +Version: 2021.4.0-3561 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 406812 +Depends: intel-oneapi-openmp-2021.4.0, intel-oneapi-common-vars (>= 2021.4.0-327), intel-oneapi-common-licensing-2021.4.0 +Filename: pool/main/intel-oneapi-compiler-shared-runtime-2021.4.0-2021.4.0-3561_amd64.deb +Size: 77013618 +MD5sum: 6ffb3a1b953f9d31068ed8ed64ede590 +SHA1: b2acd9377dae0a81f1f23c0e0388b79cce747ec1 +SHA256: 3cce80730ba28ad73986e9b55c49f58139e21f078005eceb0fe89200fecb48b2 +SHA512: fb79f1373cd927f969a8f3653a78cf5755e2d4805cc85d89f65b3cc715579de574c06574f3083d0bc14d033b363ab2f5c6354dca654536460966837c40e7e7d8 +Description: Intel(R) Compiler Shared Files runtime contents + + +Package: intel-oneapi-compiler-shared-runtime-2022.0.1 +Architecture: amd64 +Version: 2022.0.1-3633 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 550040 +Depends: intel-oneapi-openmp-2022.0.1, intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-compiler-shared-runtime-2022.0.1-2022.0.1-3633_amd64.deb +Size: 107789436 +MD5sum: 7e485f97f993136b55bcf9349b535e05 +SHA1: 1c747160a9b65c9e35344545a753fcad64bf219e +SHA256: e8db249b8d6940e3e64e170601af6f4fd54aafb5f79fdd9c0936942eae1c3a0e +SHA512: 083365a8f4bab7b771f00acb0e621e0f2c31cea9b46fad6c2de056a86441405009fef003e969a648723112a1153364dba65d006d8560b91ae87307eed762c19d +Description: Intel(R) Compiler Shared Files runtime contents + + +Package: intel-oneapi-compiler-shared-runtime-2022.0.2 +Architecture: amd64 +Version: 2022.0.2-3658 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 550040 +Depends: intel-oneapi-openmp-2022.0.2, intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-compiler-shared-runtime-2022.0.2-2022.0.2-3658_amd64.deb +Size: 107832976 +MD5sum: 3efcdef2d4ace64d7284c809a20d0cc4 +SHA1: bee4ea0cf125dcc9488eac76685bbe8f7360a78e +SHA256: 843ab2b12a16ab5ac2af0498474f5f97c0016f36af278d9f908ed615e3ba693d +SHA512: d4989ad64c28aaa114da8fe175307a557603e6f8b0ac65803c613c4872026103bd7f1cc9a31d04d3fd741f9de37726c3dc280974c024bb252523cb076affbeab +Description: Intel(R) Compiler Shared Files runtime contents + + +Package: intel-oneapi-compiler-shared-runtime-2022.1.0 +Architecture: amd64 +Version: 2022.1.0-3768 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 562442 +Depends: intel-oneapi-openmp-2022.1.0, intel-oneapi-common-vars (>= 2022.1.0-161), intel-oneapi-common-licensing-2022.1.0 +Filename: pool/main/intel-oneapi-compiler-shared-runtime-2022.1.0-2022.1.0-3768_amd64.deb +Size: 113731758 +MD5sum: ca89d4c2e50e9aa441fcefd804b47123 +SHA1: 28b902f16c4a96559ee93619b5af7e5acf0265d9 +SHA256: c748adc3bac2f0f4c3419f0b1e5bdc34d1508832819deeef68336c290a2fd2be +SHA512: bb2c09f457a9cf65905e3749c0842b7a27716f71e0a6f129e85bb5d7243ab750c38c0bf40d104bfaae92a7d3f109f4cb1fb4e6032ace91e772e4bc91635ec803 +Description: Intel(R) Compiler Shared Files runtime contents + + +Package: intel-oneapi-compiler-shared-runtime-2022.2.0 +Architecture: amd64 +Version: 2022.2.0-8734 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 633535 +Depends: intel-oneapi-openmp-2022.2.0, intel-oneapi-common-vars (>= 2022.2.0-8694), intel-oneapi-common-licensing-2022.2.0 +Filename: pool/main/intel-oneapi-compiler-shared-runtime-2022.2.0-2022.2.0-8734_amd64.deb +Size: 124582294 +MD5sum: 666d37f7424c82c665d5db01fcad648a +SHA1: 7c5686c25a0e8862a319b23c799eb06e827f1717 +SHA256: d84a394bac0f9e82a7d33d167b0d38d1af345ee727370cc1f5cd5791fc5bb1ae +SHA512: a3ae9811b80d59bc7734623abdc99d48b3293f67fec71af36a37b36f323f01a79e18f5515c56da45d4e4e029b02968adb725efc4f1ce769d56222b5596e98e88 +Description: Intel(R) Compiler Shared Files runtime contents + + +Package: intel-oneapi-compiler-shared-runtime-2022.2.1 +Architecture: amd64 +Version: 2022.2.1-16953 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 633592 +Depends: intel-oneapi-openmp-2022.2.1, intel-oneapi-common-vars (>= 2022.2.1-14969), intel-oneapi-common-licensing-2022.2.1 +Filename: pool/main/intel-oneapi-compiler-shared-runtime-2022.2.1-2022.2.1-16953_amd64.deb +Size: 124631430 +MD5sum: fc001202846945eb2e1e249ddc7507ba +SHA1: 51b29f3ec4e65dfc948fb97c9f89cc3712b9d38a +SHA256: 008c6c515b8c34d4938850b13bc31b37853f1148064e0e41ed6cf7907afe57ee +SHA512: fbe25986b42c29a7ee513ed4871b4c3cf0b6f210b75fe23eb9058bae6c0e5364b3597fea52a5f5dc988b1b5a2aad64ab1cb5d76431ecf8c9ecad4b7afcc1cda5 +Description: Intel(R) Compiler Shared Files runtime contents + + +Package: intel-oneapi-compiler-shared-runtime-2023.0.0 +Architecture: amd64 +Version: 2023.0.0-25370 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 808562 +Depends: intel-oneapi-openmp-2023.0.0, intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing-2023.0.0 +Filename: pool/main/intel-oneapi-compiler-shared-runtime-2023.0.0-2023.0.0-25370_amd64.deb +Size: 144138822 +MD5sum: a67f450364dc70fc0f84e0d6fc42277d +SHA1: 7a9f1b6b1d760796d4c053338d35769c4bc889f7 +SHA256: 39c8f307c67129ef8d466561f39bbed3445548fc9bba48aabe58314cbcf0ae91 +SHA512: 76ca56372f78de164be6d02a57470420fe8adfb26c5bf5617b9d93ef944c8e1ad1d795c08c5dbf245fa5f4d35cf35255a5c550caf658ff971249b61ec92a94c9 +Description: Intel(R) Compiler Shared Files runtime contents + + +Package: intel-oneapi-compiler-shared-runtime-2023.1.0 +Architecture: amd64 +Version: 2023.1.0-46305 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 652947 +Depends: intel-oneapi-openmp-2023.1.0, intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing-2023.1.0 +Filename: pool/main/intel-oneapi-compiler-shared-runtime-2023.1.0-2023.1.0-46305_amd64.deb +Size: 111610166 +MD5sum: 26a1dbca1d4e4b094cdb9bc3e6849763 +SHA1: 5b2bd5b0c95cb9753da26de611dd58bd0b554ac4 +SHA256: fa3f4c23f527f1ced767fef56c022e252daedd08fab752ec653985f178d509b6 +SHA512: 2ed401243d115705fc380297d95b1bfd12542f54248a8da1f4eb521d720ae7dfc6886a7064a7e656ae749051ac6a0bb2b7ee51b26374e9a65a0e79c4f44244ae +Description: Intel(R) Compiler Shared Files runtime contents + + +Package: intel-oneapi-condaindex +Architecture: amd64 +Version: 2021.1.1-58 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 25449 +Depends: intel-oneapi-common-vars,intel-oneapi-common-licensing +Filename: pool/main/intel-oneapi-condaindex-2021.1.1-58_amd64.deb +Size: 25567220 +MD5sum: 43b070ef4c291cdb185fa20b166cb2b4 +SHA1: 6600009fbd2a4511b593fd19a0ebd196c54ba2d3 +SHA256: e9ada0f738ae4bf8d63db70436766ef8e023e2c362d7f064f12fe7d4a17931e5 +SHA512: 93f0a1487c8dd39400084e500a32f4f5f5d8ab2a714ff5f499e8d77824dc1fb471c6ed4860177dcc7b14ebc8b9968d554b5b324eae1811a5918c70f567aa711b +Description: oneAPI Common Install components + + +Package: intel-oneapi-condaindex +Architecture: amd64 +Version: 2021.2.0-94 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 25449 +Filename: pool/main/intel-oneapi-condaindex-2021.2.0-94_amd64.deb +Size: 25567196 +MD5sum: df1ea1d963b8dfcd4b3fa25181f75598 +SHA1: a2bfe2985c18da6d27c6ba660a1b6d5ff814b579 +SHA256: 6ef412eef9e4b6e4919e4edea97d05ddd68b2830b5ff08ae0534346490d5ee5d +SHA512: 65f4c7eb6ae29352f6671df4a307d4a62b7fe7df817b9525a9b37a46705a70d3eecd8c5efcdc4121401c82a77faa4a5455a14b2f744039071556070a261b27bb +Description: oneAPI Common Install components + + +Package: intel-oneapi-condaindex +Architecture: amd64 +Version: 2021.3.0-159 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 2249 +Filename: pool/main/intel-oneapi-condaindex-2021.3.0-159_amd64.deb +Size: 674844 +MD5sum: 913b2af9bed1e954821b72710a5dd684 +SHA1: 314ca71b55deb201a8da74884dd1f557d4a68b35 +SHA256: ef2625a46cac5bdf6de50e4d45de28deaf82f637531528a6717016fe6d52a7ed +SHA512: 730e02ebec15cb6819f5422ad1b91512b7ade1c3d0ab92f6cd4cdc25bdc492b2f6708edcf58a71dec42d50b06fe764fc28d10912be011e64da3c5822171432a0 +Description: oneAPI Common Install components + + +Package: intel-oneapi-condaindex +Architecture: amd64 +Version: 2021.4.0-207 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 2249 +Filename: pool/main/intel-oneapi-condaindex-2021.4.0-207_amd64.deb +Size: 675218 +MD5sum: 63eddf3686ba234b24c441552e6e0eeb +SHA1: dfc73087870320ff453353177585f9eac8de24c4 +SHA256: 1febde9ddf2f067eeec559de852b5917d760e81d72be7415e697e2da2e8fc973 +SHA512: c8b8ac992d47fcf599a2b37521414e9d76a50ce96ff0d624888b5a9abc180e1457c800257fb03f6216befc3c923d3d06b2269a033cda18aa249f9b993a099678 +Description: oneAPI Common Install components + + +Package: intel-oneapi-condaindex +Architecture: amd64 +Version: 2022.0.0-74 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 2253 +Filename: pool/main/intel-oneapi-condaindex-2022.0.0-74_amd64.deb +Size: 675516 +MD5sum: 7ea3b9ebb34db8ca1128a37f047bde43 +SHA1: 36c995446e6689bb11d80832addd6dbabc0307ee +SHA256: 70da5256d2389f47ee7ba58b3e7dc8b8de59c2acae0c7e51fb7d5ef0fdabe13f +SHA512: 001190e3a29656427e01b8e8b4fb545809bc0bb7bb1cc33c7e0a7a24ee8546172b93ee7361fb60b3b93ab94a1b2b46b92d7f7ab26965b4d4d86e6c6d30f0cbe5 +Description: oneAPI Common Install components + + +Package: intel-oneapi-condaindex +Architecture: amd64 +Version: 2022.1.0-155 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 2253 +Filename: pool/main/intel-oneapi-condaindex-2022.1.0-155_amd64.deb +Size: 676094 +MD5sum: f6c606696d4fd706a18f78adecc1b64b +SHA1: 28c04a7e4e385abfcae700671b100c3c5eb3ac35 +SHA256: ff0e9ced18332684605746672984a4eff2fe772163dfd3d2a3365d3630608ea3 +SHA512: a96c872396d83cd2cfa7794ac5cb0d465a1462e802a9710cd17c9f2a76c3d164fafb6cfac2d4863ab414af2dfde8aad4c0a8fc2e8b09c16ac541b9160048b8a8 +Description: oneAPI Common Install components + + +Package: intel-oneapi-condaindex +Architecture: amd64 +Version: 2022.2.0-8695 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 2277 +Filename: pool/main/intel-oneapi-condaindex-2022.2.0-8695_amd64.deb +Size: 675918 +MD5sum: f650c5e443592ab9b575a46d9e28d1d5 +SHA1: e7f90d56598b0ec611936b7c7b1c72e43eab9fc5 +SHA256: 38fa9b8063308422b26d8c04a68c850dfb89628f56132bcd6a75fe17dedf2926 +SHA512: f8bbf832cafe706fb67be3fd7cb5895017391c00d13dc3c0ac9e4d51e8b857969c96ee517ab4ef7511c64c1c423300f83d2b90df45e817146ac1bc5ba95ebe51 +Description: oneAPI Common Install components + + +Package: intel-oneapi-condaindex +Architecture: amd64 +Version: 2022.2.1-14970 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 2277 +Filename: pool/main/intel-oneapi-condaindex-2022.2.1-14970_amd64.deb +Size: 675766 +MD5sum: 92c9b96181dfcf369e38850a08e67b21 +SHA1: 1865bbed2cf3ead00e7419b6d38cb6877216c52d +SHA256: c2cb22f224498f147220fbf04161cb28defba7227974fc1a83af583a0ac22824 +SHA512: 04557e24e9689cb9dd8845feb59079480c42353436550e3f8e7b968c94463a20f1a22452d81d3297b22c0c70557fb1d7803689fbf04ad4ad0507ad1aa9c15721 +Description: oneAPI Common Install components + + +Package: intel-oneapi-condaindex +Architecture: amd64 +Version: 2023.0.0-25326 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 2277 +Filename: pool/main/intel-oneapi-condaindex-2023.0.0-25326_amd64.deb +Size: 675834 +MD5sum: d33b8fd2307d504c92341f67902374c4 +SHA1: d8b327b3483fa402e4fff56b682f4ab5f58fc471 +SHA256: b1b079fc595d8ad224a8e67f15b04ca2c430e93fa6e5f79cc48910ff71f99c52 +SHA512: fdfec273c66093102ab2113b94a8bf079aa64e4c0a25280973990e66af83a0adf58379a4aab0f26cdbe372eec7709e19eff0e4d8dc85b360a37c3cf930101922 +Description: oneAPI Common Install components + + +Package: intel-oneapi-condaindex +Architecture: amd64 +Version: 2023.1.0-43291 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 2277 +Filename: pool/main/intel-oneapi-condaindex-2023.1.0-43291_amd64.deb +Size: 675822 +MD5sum: 3b128483ffcf15b05467b59385745e63 +SHA1: 2e46bda51a7506da7964959c84da6517b7d942af +SHA256: 944bd9b207fe31b7b6cf353e0644cda128eeeb1fa7d970e3f3405d1ddb59332c +SHA512: 9bc92d7a0d486d20dbf458f6b32a11019d84d804d3bed48465460720dae610b194082752d3c9a6af67517ff21bb656221ff71ca5a3c8cce5ecee7c82413dc690 +Description: oneAPI Common Install components + + +Package: intel-oneapi-daal +Architecture: amd64 +Version: 2021.1.1-79 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-dal-2021.1.1 +Filename: pool/main/intel-oneapi-daal-2021.1.1-79_amd64.deb +Size: 2390 +MD5sum: 7ebd141e8f412af9ff11cd13ab9f3af1 +SHA1: 823284df89b131c90ca8c6a516391fd75524461c +SHA256: 403d5bcf8ef72426b84e84787f727e3ff99434a4e930b6a991c55b5b2ed287e3 +SHA512: 6a3eee6d2877f912861dc694bf86fd444004393ddae47e33d9c4c6b56c0d747cfd4d941a24bfab3a57d89d56c849ab1088af5196d94921da354ed89114048aaf +Description: Intel® oneAPI Data Analytics Library + + +Package: intel-oneapi-daal +Architecture: amd64 +Version: 2021.2.0-358 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-dal-2021.2.0 +Filename: pool/main/intel-oneapi-daal-2021.2.0-358_amd64.deb +Size: 2394 +MD5sum: b0427becede9b3a82a7148655d2429fd +SHA1: 10f0ed21155f9fa3385ad7097e479ce32bbc6c13 +SHA256: d547bd6f7c2e4517709f7ed8e4e6a33a10a8a91a7ac706049a35efcbea80c949 +SHA512: 7f5af22b749e1672cc9e2de5f24113997f98ed6646f6a79da4806aab1a791a821ec80597a60aff3ab46b221590c9a18c6a1cc087c2c0978eb3a9288f2d193a76 +Description: Intel® oneAPI Data Analytics Library + + +Package: intel-oneapi-daal +Architecture: amd64 +Version: 2021.3.0-557 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-dal-2021.3.0 +Filename: pool/main/intel-oneapi-daal-2021.3.0-557_amd64.deb +Size: 2392 +MD5sum: 119fdfcf2a821b19b1a198f416a04081 +SHA1: 81e995eb08b719a1c0ed49a77cff44e3089368d9 +SHA256: 43774752088af283cff0f0db533a286a98560a4856105e435574ef3fd4da8072 +SHA512: da79f86feb25d19f5a4498f1af3109eb0098a8c7b6ac92f698d1c71020620536b91db9506d5b77a3e518ebdbc6af46dd925a72a6dc42c4d735ef46f48d223460 +Description: Intel® oneAPI Data Analytics Library + + +Package: intel-oneapi-daal +Architecture: amd64 +Version: 2021.4.0-729 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-dal-2021.4.0 +Filename: pool/main/intel-oneapi-daal-2021.4.0-729_amd64.deb +Size: 2398 +MD5sum: 7e4b82b190a71b1fc5bf7413f4b511a5 +SHA1: 3f62aff38cf3ef6110f0dbb292a2fe2095138a7a +SHA256: 74862b757ad2131e7b721c4b76d80321d4cee82bd3ed50937d8d237ff02aaf9a +SHA512: 65fb6915aa86f12c41e75aa429402ee8361ecda00285e3fefd59559c4abe3a7aac75ffa3056f95537833134e23618967ca0a282b68bf33a491b0bff6d9c00a23 +Description: Intel® oneAPI Data Analytics Library + + +Package: intel-oneapi-daal +Architecture: amd64 +Version: 2021.5.1-803 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-dal-2021.5.1 +Filename: pool/main/intel-oneapi-daal-2021.5.1-803_amd64.deb +Size: 2178 +MD5sum: 050dcd5697a2cecebd2579e45440587c +SHA1: 96b8632c898461bca7a2275d447c6d82258be8f1 +SHA256: 895cfefdd8a9ff1112dc3b45021dcdfedfc35df47d95f001a58988c1abdca64a +SHA512: afbd22b0d65be49464be78d07fd8dc13e0ae42b2891f976c6f9ccfefd37f0ded98043c4e75bcc1a6306cb1ea42395bdfa8e5d2d11ee20f6406e7012d175570f8 +Description: Intel® oneAPI Data Analytics Library + + +Package: intel-oneapi-daal +Architecture: amd64 +Version: 2021.5.3-832 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-dal-2021.5.3 +Filename: pool/main/intel-oneapi-daal-2021.5.3-832_amd64.deb +Size: 2176 +MD5sum: f8a73d20904862a93b0e8951e7752a4c +SHA1: 18f399f243b94ec8a94e470f085838d7a84a6982 +SHA256: d7a2905ba029ffa9211af8812a3241785639ab320f20b272bfbc6420b239f873 +SHA512: 7d52c5d6a7295095b6286503c18a1e79e310c850c9644c657d1c2ab07e74a2b7afbc56b6f566719ba86e6e52bbdb45136c16337039a98d199feb91169b8afc4e +Description: Intel® oneAPI Data Analytics Library + + +Package: intel-oneapi-daal-devel +Architecture: amd64 +Version: 2021.1.1-79 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-dal-devel-2021.1.1 +Filename: pool/main/intel-oneapi-daal-devel-2021.1.1-79_amd64.deb +Size: 1858 +MD5sum: 8108cc27dd45a8aca3f203e1c7ae19ef +SHA1: 630b455d5d773cd9dcfe163452ab404051ccfa0a +SHA256: 898145917aa80e9640b00a2c94d1f9465c0035a375a1f58b5b92df088de4839f +SHA512: 1284e314b184605c2c2879efd27de0329198be4472261ce0e2f5d21e55f6354bc44824e36e028373e7b8480190cab9cce4f155aa17211c808d046daec836ae68 +Description: Intel® oneAPI Data Analytics Library Development Package + + +Package: intel-oneapi-daal-devel +Architecture: amd64 +Version: 2021.2.0-358 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-dal-devel-2021.2.0 +Filename: pool/main/intel-oneapi-daal-devel-2021.2.0-358_amd64.deb +Size: 1866 +MD5sum: 9529d9b98b5e1165f9e3fef11d931ef5 +SHA1: c9d21f8b1b02ba90d4da5b12f0e9d3623231c6de +SHA256: 0b82e4e6f9e2ac0b7d0a7cbe18d94141d026c97ee34dd19ba1c0ed0a758e299a +SHA512: 7f86a2887bf8570926a3cae6e28554e72204c353edefd6c9ce1fcfac8e34f8b30de6b1a82449907c13065396f16a97662e2bb6fcdb1d9d62f5a9014bd24532aa +Description: Intel® oneAPI Data Analytics Library Development Package + + +Package: intel-oneapi-daal-devel +Architecture: amd64 +Version: 2021.3.0-557 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-dal-devel-2021.3.0 +Filename: pool/main/intel-oneapi-daal-devel-2021.3.0-557_amd64.deb +Size: 1858 +MD5sum: 77ba70423643959d1bb8f455a5e9cb5e +SHA1: 1b9750bc2cbf04f6983ad4bde365356477478c98 +SHA256: 16f398524b85add32e7560aab2887c81c7e8f1edd171c42b3640fe328f276f6f +SHA512: 988495f018e04f5376e0dd07e3c8dec489e61f6779fc4828889cc9584b86a455663aecb626e125ee20b857faa3cf8173369bc68dfe5532e1364f7e61aac5fbed +Description: Intel® oneAPI Data Analytics Library Development Package + + +Package: intel-oneapi-daal-devel +Architecture: amd64 +Version: 2021.4.0-729 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-dal-devel-2021.4.0 +Filename: pool/main/intel-oneapi-daal-devel-2021.4.0-729_amd64.deb +Size: 2270 +MD5sum: 42633f13e08bc400285fe7a9e199b55a +SHA1: f21c7252a0573e94917ef47554242e7b6202842f +SHA256: bd550875194032922e2fb969f97fad0475a27e4cb043b22ca8e9bb198cba813d +SHA512: 7a28bc886eccaad5b572c6e8cef3336dae6dccabd9431d3120c5cdb2747f11b39c65b9daf22602aea5f4291d37f26670ecf2b5380b4cbcb14bbe541f9b2796f1 +Description: Intel® oneAPI Data Analytics Library Development Package + + +Package: intel-oneapi-daal-devel +Architecture: amd64 +Version: 2021.5.1-803 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-dal-devel-2021.5.1 +Filename: pool/main/intel-oneapi-daal-devel-2021.5.1-803_amd64.deb +Size: 2270 +MD5sum: c7de981d2a9f982505d890d3f1d13dcd +SHA1: b13e4cfbf37e9e130d2e2af67e07400100679222 +SHA256: 8d521b5b4cd45f7f062c27784337b44a84f48c8920c43e01c4e70da66ab60de6 +SHA512: 7257414e99762342c3c942ba4f35d657962aad17d1edb70b614709a06aea62cec24412204e1385bf06fb551364784112d8c70fc87bceb90c2384542f203a98b4 +Description: Intel® oneAPI Data Analytics Library Development Package + + +Package: intel-oneapi-daal-devel +Architecture: amd64 +Version: 2021.5.3-832 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-dal-devel-2021.5.3 +Filename: pool/main/intel-oneapi-daal-devel-2021.5.3-832_amd64.deb +Size: 2270 +MD5sum: 513c3b87e969be0c13cbb8ddba0a62c6 +SHA1: 1e467577956f468b683d2884f4fe08d4e69c3e4b +SHA256: 7b3cc715701bb4c383c5cfbed1c6b41f8285aa55d10bc7eda1b7c88964e4aa23 +SHA512: 5110d20ec6f5fb554415ff3fd4efcdff267ded333b0f5bba14b3218847085b3fc5707138c89c4d47f6bd427d4f52833718032ca9d457ae8d14ff264cae811582 +Description: Intel® oneAPI Data Analytics Library Development Package + + +Package: intel-oneapi-dal-2021.1.1 +Architecture: amd64 +Version: 2021.1.1-79 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 668249 +Depends: intel-oneapi-dal-common-2021.1.1, intel-oneapi-tbb, intel-oneapi-condaindex, intel-oneapi-compiler-dpcpp-cpp-runtime,intel-oneapi-common-vars,intel-oneapi-common-licensing +Filename: pool/main/intel-oneapi-dal-2021.1.1-2021.1.1-79_amd64.deb +Size: 71491616 +MD5sum: 8a9ade1f6a00e7775b19f189c22baede +SHA1: 05a7af103fab129220055b14da6df8df7088e0d1 +SHA256: 90fcd3160bcffe469cd6e97aa55b5e97016b5fb2422690c26cc7607a2c252740 +SHA512: 4e8c6a93a91b4ef3fe2c01f2ea742e7277dd85a40b00974c6e00e4765f3848bce55f56cf6b52f75a3a6c48f510cf09285c98e8fae7549fbdee4fc5bb4d1b2bcb +Description: Intel® oneAPI Data Analytics Library + + +Package: intel-oneapi-dal +Architecture: amd64 +Version: 2021.1.1-79 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-dal-2021.1.1 +Filename: pool/main/intel-oneapi-dal-2021.1.1-79_amd64.deb +Size: 2390 +MD5sum: d78c07544ec7a323d5105db6bfebf080 +SHA1: 496bd3f4dc9ed2230a352d2de970236b244642d2 +SHA256: d84426f0485f1ac21a6c1829610639f65ec396727a3950f23d241ec0b53b0c58 +SHA512: 75f399b61d680cbf7f702858a70c19df8f8c9f054270c4aa31b649f43f88c5a0396ad5909b3dda796e52aca92bc98b13d0c7c8eaee863ad79a3c80286e09daa3 +Description: Intel® oneAPI Data Analytics Library + + +Package: intel-oneapi-dal-2021.2.0 +Architecture: amd64 +Version: 2021.2.0-358 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 793108 +Depends: intel-oneapi-dal-common-2021.2.0, intel-oneapi-tbb-2021.2.0, intel-oneapi-condaindex (>= 2021.2.0-94), intel-oneapi-compiler-dpcpp-cpp-runtime-2021.2.0, intel-oneapi-common-vars (>= 2021.2.0-195), intel-oneapi-common-licensing-2021.2.0 +Filename: pool/main/intel-oneapi-dal-2021.2.0-2021.2.0-358_amd64.deb +Size: 76854748 +MD5sum: 69f76edcdbb634c028cdd3d8fd38771f +SHA1: dd21440c7ef60a2573b3613661a2559707e20b0f +SHA256: b6c1b57da6b181a5524c59e0ef7a6a98371a3d46270ae3e8ac89b001a3e9d041 +SHA512: 8acf480251e1dab5f185ac79efcc205af3d31e3ae18bface6c01221a04cd3d7046efafc64b8c3f20b74fdaf58badfc66d5589537043ea98c7dc6a067a5a3f6d3 +Description: Intel® oneAPI Data Analytics Library + + +Package: intel-oneapi-dal +Architecture: amd64 +Version: 2021.2.0-358 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-dal-2021.2.0 +Filename: pool/main/intel-oneapi-dal-2021.2.0-358_amd64.deb +Size: 2392 +MD5sum: 8fe12bbeee1d31be83e6010029dc2d08 +SHA1: dcc82edcc1a54159eb978ea6aee3827f146fa6b4 +SHA256: 0760afddadf2bda4dcb9d9a6a94c272f37247a0f606cc1b7c285c03c01e1e27b +SHA512: 6e667aa23c94389a2624d36bfc3b9b18456e04953c478bb92a21686a422a84173fd086ee9219bcca6c95c4cdb07a9fdeca1c85a2168eb07cf151abf27583e4c7 +Description: Intel® oneAPI Data Analytics Library + + +Package: intel-oneapi-dal-2021.3.0 +Architecture: amd64 +Version: 2021.3.0-557 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 716098 +Depends: intel-oneapi-dal-common-2021.3.0, intel-oneapi-tbb-2021.3.0, intel-oneapi-condaindex (>= 2021.3.0-159), intel-oneapi-compiler-dpcpp-cpp-runtime-2021.3.0, intel-oneapi-common-vars (>= 2021.3.0-261), intel-oneapi-common-licensing-2021.3.0 +Filename: pool/main/intel-oneapi-dal-2021.3.0-2021.3.0-557_amd64.deb +Size: 75988190 +MD5sum: bb1f0b515b8dc85ebe526667b907c82a +SHA1: f911e21ab168ee27ab4f9d9907588f0da07aa572 +SHA256: ce21fafee52678315ae22f3b09aac08f801030ead45794a651ef912e9510cb40 +SHA512: 8b2fb419174bdeb8f6ab9e7abc34c3eb39a9ff5c4c5be5475fb994f242de3b067f03c778ec555ea9dd796fd6a1b96c43fa833d3ea88a1457cd37d3764ed4c8d3 +Description: Intel® oneAPI Data Analytics Library + + +Package: intel-oneapi-dal +Architecture: amd64 +Version: 2021.3.0-557 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-dal-2021.3.0 +Filename: pool/main/intel-oneapi-dal-2021.3.0-557_amd64.deb +Size: 2392 +MD5sum: abf68ba025f206af4248bb5ee8bb1eab +SHA1: 2069b83744eaa89d01f2cba03c3e45215abf4bff +SHA256: 18d11e81a221eb63f640827ffaa049adf0d1c7f32a2c16012f1740987c32e648 +SHA512: 367152f06b8772f75199052f25d4e3339403fb2a01a3b42699ff3ac741b8dccae09813b8f4992246912d8423f4f6cef6c551de8b70f3438a16ec68fcf2601a91 +Description: Intel® oneAPI Data Analytics Library + + +Package: intel-oneapi-dal-2021.4.0 +Architecture: amd64 +Version: 2021.4.0-729 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 723909 +Depends: intel-oneapi-dal-common-2021.4.0, intel-oneapi-tbb-2021.4.0, intel-oneapi-condaindex (>= 2021.4.0-207), intel-oneapi-compiler-dpcpp-cpp-runtime-2021.4.0, intel-oneapi-common-vars (>= 2021.4.0-327), intel-oneapi-common-licensing-2021.4.0 +Filename: pool/main/intel-oneapi-dal-2021.4.0-2021.4.0-729_amd64.deb +Size: 75806770 +MD5sum: 7041db59c607db6a005c02220ca42c52 +SHA1: 685a2353ab29b69b6dfb823d694de2eb923eddc6 +SHA256: a83ccd6d0b3d8ac0153e8075e22f17d2dbee19a5bd0d2cf051c09803af94df34 +SHA512: 3ddd7c0990e7db497ce33f267a4e0f055c7745087c1489d211da2257d0a66c5c9f764ffb628a4e2f5748036b898784c12fff0d3b0e147bfcf966fd98b055218e +Description: Intel® oneAPI Data Analytics Library + + +Package: intel-oneapi-dal +Architecture: amd64 +Version: 2021.4.0-729 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-dal-2021.4.0 +Filename: pool/main/intel-oneapi-dal-2021.4.0-729_amd64.deb +Size: 2390 +MD5sum: 1221460687a6b1d60e445816f2b19e12 +SHA1: 1e34467738b5c39e703f77bd21d4f7449fcf6fb6 +SHA256: 63d0ceb6529b2915e8f1fbe9ccfc7b429ea23b14f19ccc80463687b9a81cfc3f +SHA512: 3cdceb16af4a0f4ea56aaaace0d6a9d331d1fede13281829c12b676586dc7c3277d14b5e917168b39045cd94f37d92902199bf0becba17346327cc1b0c65c591 +Description: Intel® oneAPI Data Analytics Library + + +Package: intel-oneapi-dal-2021.5.1 +Architecture: amd64 +Version: 2021.5.1-803 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 692945 +Depends: intel-oneapi-dal-common-2021.5.1, intel-oneapi-tbb-2021.5.0, intel-oneapi-condaindex (>= 2022.0.0-74), intel-oneapi-compiler-dpcpp-cpp-runtime-2022.0.1, intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-dal-2021.5.1-2021.5.1-803_amd64.deb +Size: 66641446 +MD5sum: 8939de1818518c1f10fd7112de12c6ef +SHA1: 29a4c197f51442341c207ab9cfd18e2b566dea60 +SHA256: 0da79eba2cc7f90a8342c6cc5f8109b98c193d9001c69c6528683b9b97344d2f +SHA512: a760ae29e4b771403b19c6a2a9ff36f4e9741c368430e033f0103acbe0ff4c05ef9e694bc59741c22fad41f49e1c95d612fbbd250b2200b3bff384ebc773737c +Description: Intel® oneAPI Data Analytics Library + + +Package: intel-oneapi-dal +Architecture: amd64 +Version: 2021.5.1-803 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-dal-2021.5.1 +Filename: pool/main/intel-oneapi-dal-2021.5.1-803_amd64.deb +Size: 2178 +MD5sum: 91278be45b8422046d9964cf1e84bf83 +SHA1: b27a0106aa3f7f10164e280bac45b8119398a241 +SHA256: 08212a297fe5d02fbbb851981662bcad8ea8c1b384b9a49c46ce0f928d0010f6 +SHA512: 40ad7bfb1d71bc85f75583de2968ba03baf0e2b16d3762a3f0ea636b5eb4b643a5b2e03c7b07054147f1e0296ea4d21f12c2de4a14ae6b35aee1ae39907be7bd +Description: Intel® oneAPI Data Analytics Library + + +Package: intel-oneapi-dal-2021.5.3 +Architecture: amd64 +Version: 2021.5.3-832 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 692945 +Depends: intel-oneapi-dal-common-2021.5.3, intel-oneapi-tbb-2021.5.1, intel-oneapi-condaindex (>= 2022.0.0-74), intel-oneapi-compiler-dpcpp-cpp-runtime-2022.0.2, intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-dal-2021.5.3-2021.5.3-832_amd64.deb +Size: 66621462 +MD5sum: 5573631e7a48a2f2d2ee1cc009358e9a +SHA1: 0f0f6d2955e0af991e56b4526796292129fbdbbb +SHA256: f7c24275db961cd5d10e02c8e9d9ee46d6d87311d5b73ae2dfe4f809c1578e05 +SHA512: 31f6ef9bc2ea8a2ea43b29c691ab62f7b87dacab2f8ae1e34e3ad8f28f3438bf688a7b9f8390594cffbd54c589a072e432838445d7dec802e5bbc6a7e5539da9 +Description: Intel® oneAPI Data Analytics Library + + +Package: intel-oneapi-dal +Architecture: amd64 +Version: 2021.5.3-832 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-dal-2021.5.3 +Filename: pool/main/intel-oneapi-dal-2021.5.3-832_amd64.deb +Size: 2182 +MD5sum: 25c455e0b17e8ea4760584f850539af1 +SHA1: 142b1aa88ea234b7e9202dde9d1ec891cd217631 +SHA256: a9d2f8922019ed20f253f9239692e354783375cebdac111509486d9242c636f9 +SHA512: 5ac269ecb6b4b72586ffbea8d3e95de4711b8658a2925d12362b127b2c3efcbab82ace8abef3c97bab351b741b483318fee671f744985bcd49e9b831c14015f4 +Description: Intel® oneAPI Data Analytics Library + + +Package: intel-oneapi-dal-2021.6.0 +Architecture: amd64 +Version: 2021.6.0-915 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 773064 +Depends: intel-oneapi-dal-common-2021.6.0, intel-oneapi-tbb-2021.6.0, intel-oneapi-condaindex (>= 2022.1.0-155), intel-oneapi-compiler-dpcpp-cpp-runtime-2022.1.0, intel-oneapi-common-vars (>= 2022.1.0-161), intel-oneapi-common-licensing-2022.1.0 +Filename: pool/main/intel-oneapi-dal-2021.6.0-2021.6.0-915_amd64.deb +Size: 70621474 +MD5sum: bb8ae2b2193d918e28c497ad0e4842c5 +SHA1: ea783de53811bc5223c69221282a6329a8f10d70 +SHA256: e53eecf391dfebcf81e3001e2792793eb4ab31ca314c772444062b85d1a3f0a6 +SHA512: 7f9d75ef0f9907d3e6d45b1f95e7da713b45f240e93cd57d12019d5350a900aeb28025510d8e16bc3218e96b6ff307e2eb1bf93461253cd2dc1a775c29a56698 +Description: Intel® oneAPI Data Analytics Library + + +Package: intel-oneapi-dal +Architecture: amd64 +Version: 2021.6.0-915 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-dal-2021.6.0 +Filename: pool/main/intel-oneapi-dal-2021.6.0-915_amd64.deb +Size: 2544 +MD5sum: 2044d8e8dd1fc4f6608fb5488b3b86db +SHA1: 9697dd805947dda74a5aab8769f181887dfb40bc +SHA256: 5ef008af20d0c7375940f6df4a0502255484203a7d1606f77285decc316815c8 +SHA512: a62fc69d24c0eacc83f19dfac6d3cc7c8dd3e83aac14784aab1ade6b39018dbce8754ee73645630cbc77025c4d92f9c10817884242047fce899e818a43d49448 +Description: Intel® oneAPI Data Analytics Library + + +Package: intel-oneapi-dal-2021.7.0 +Architecture: amd64 +Version: 2021.7.0-8746 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 773099 +Depends: intel-oneapi-dal-common-2021.7.0, intel-oneapi-tbb-2021.7.0, intel-oneapi-condaindex (>= 2022.2.0-8695), intel-oneapi-compiler-dpcpp-cpp-runtime-2022.2.0, intel-oneapi-common-vars (>= 2022.2.0-8694), intel-oneapi-common-licensing-2022.2.0 +Filename: pool/main/intel-oneapi-dal-2021.7.0-2021.7.0-8746_amd64.deb +Size: 70614478 +MD5sum: 5b6d7d1151e9811d6193c29c051a4feb +SHA1: 2e1df100966a25dd432ce3101843fcab60962d25 +SHA256: ece4817be4c579e047750ba3c0d13de9af8aa230c6d6093f648ec4d633cb2191 +SHA512: cd0770178d01de1e3b0ff729249b4dac1c4eec30475c904a3ad5bb7eaa4bcc46bb12990697077e7a904155cadae164e3e906f3debe995728ea1074f3a6534046 +Description: Intel® oneAPI Data Analytics Library + + +Package: intel-oneapi-dal +Architecture: amd64 +Version: 2021.7.0-8746 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-dal-2021.7.0 +Filename: pool/main/intel-oneapi-dal-2021.7.0-8746_amd64.deb +Size: 2548 +MD5sum: 5e6415c8b7dbdf228467e27f2fd53be7 +SHA1: c1b1f239288e11d2add2adabb5562b4c3cb87ca5 +SHA256: 58c8c211c51e43246716fd901fb397963ee9021e08b20a37180b64f764c4ab5c +SHA512: 8db249a01534a05cc913c90cb755b0091ffa0b494b899853938303cccd959e2964d1c5c0408528915810ae08e811dd242753f0393b26efd61c59db28f7cf7a6b +Description: Intel® oneAPI Data Analytics Library + + +Package: intel-oneapi-dal +Architecture: amd64 +Version: 2021.7.1-16996 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-dal-2021.7.1 +Filename: pool/main/intel-oneapi-dal-2021.7.1-16996_amd64.deb +Size: 2544 +MD5sum: 96697ebf40a264e5a73d4ba4fd26c7a4 +SHA1: 5fec2d70cbf177ceb1ceaaefe2fcb58b316590e3 +SHA256: 5bdfba6cbef2d4b54e0602aac0dad02895851ce7d949ea53508885c1f46f76c7 +SHA512: d825949ba7997484c73881f028bb68991f20898e9713a4207f31b9d93db167c3f950887cf4f82b8336016888cd74ee3e72dc7da03ba96e54857d3f7d73e00beb +Description: Intel® oneAPI Data Analytics Library + + +Package: intel-oneapi-dal-2021.7.1 +Architecture: amd64 +Version: 2021.7.1-16996 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 774456 +Depends: intel-oneapi-dal-common-2021.7.1, intel-oneapi-tbb-2021.7.1, intel-oneapi-condaindex (>= 2022.2.1-14970), intel-oneapi-compiler-dpcpp-cpp-runtime-2022.2.1, intel-oneapi-common-vars (>= 2022.2.1-14969), intel-oneapi-common-licensing-2022.2.1 +Filename: pool/main/intel-oneapi-dal-2021.7.1-2021.7.1-16996_amd64.deb +Size: 69899570 +MD5sum: f4225761861aff723c75d55fe34b3f72 +SHA1: 4d75207db8afeeabe296352db1548eff9c066f5a +SHA256: 25267273af6156aa613f9e8bd31a434eb820f5d64a2f8e22964e97550f4d80c5 +SHA512: 20a6c2679cbccd56bba4366c177c31ea9f3e368cc485f290a3d2aae7d4ff20faaf2d6fcf12c66b94f809e5e429956fb29e9303faaf4f3301d858e4aa3af2d346 +Description: Intel® oneAPI Data Analytics Library + + +Package: intel-oneapi-dal-2023.0.0 +Architecture: amd64 +Version: 2023.0.0-25395 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 636363 +Depends: intel-oneapi-dal-common-2023.0.0, intel-oneapi-tbb-2021.8.0, intel-oneapi-condaindex (>= 2023.0.0-25326), intel-oneapi-compiler-dpcpp-cpp-runtime-2023.0.0, intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing-2023.0.0 +Filename: pool/main/intel-oneapi-dal-2023.0.0-2023.0.0-25395_amd64.deb +Size: 65575058 +MD5sum: a5a359b1f98132b232d67e81592f9088 +SHA1: c1270ec792a78a0ff5ae6e47fe6785c709eeb635 +SHA256: 5c60fd10142bf8030a371da57ded1281b1cc27f1a450dfdcaf2b9cd19d838ebd +SHA512: 38a8d823c6d6918ab1006a917dfa02401004faa1faf94c7199cac27a03ee5b330e8f03b936ef3dfc7be7482aeb291591d38dd16b979eb73909b7a8e02384bddd +Description: Intel® oneAPI Data Analytics Library + + +Package: intel-oneapi-dal +Architecture: amd64 +Version: 2023.0.0-25395 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-dal-2023.0.0 +Filename: pool/main/intel-oneapi-dal-2023.0.0-25395_amd64.deb +Size: 2544 +MD5sum: b7884303eb1b503886cbaf472ef6bfbf +SHA1: 18a3ed63113f1049cbc6f8891b696026e1afe63a +SHA256: d6f33ac7db87d82ebc0e1ed29a809c07e2748ef0606c638f4833b001b2e15829 +SHA512: 8844d0342f99236213dfa75b1a0151b1e0740057b06c1d3b6ab1ec5408e75b689b5cd88fa383ba1bbe35b44e1e6885c81f8f5bb7fc9a619109a9d90d5d036e8b +Description: Intel® oneAPI Data Analytics Library + + +Package: intel-oneapi-dal-2023.1.0 +Architecture: amd64 +Version: 2023.1.0-46349 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 474773 +Depends: intel-oneapi-dal-common-2023.1.0, intel-oneapi-tbb-2021.9.0, intel-oneapi-condaindex (>= 2023.1.0-43291), intel-oneapi-compiler-dpcpp-cpp-runtime-2023.1.0, intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing-2023.1.0 +Filename: pool/main/intel-oneapi-dal-2023.1.0-2023.1.0-46349_amd64.deb +Size: 49857046 +MD5sum: e842ecf9e91b51a1500d8b8bab17044c +SHA1: 64e40a138a0787315d3a2a085207d103f507b45e +SHA256: 1c7c79398aad2010590ac092087bd8430232cf79bd859b8f3a5ac08bf8b1e9f9 +SHA512: ae593beade8b9100cc1bd249ff48014bc6fc28064869f999af1f283b8f6f6eaefc2369fd78d3f3ffc728016e957559e2e571f188d4c4460539d5a57047591ebf +Description: Intel® oneAPI Data Analytics Library + + +Package: intel-oneapi-dal +Architecture: amd64 +Version: 2023.1.0-46349 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-dal-2023.1.0 +Filename: pool/main/intel-oneapi-dal-2023.1.0-46349_amd64.deb +Size: 2548 +MD5sum: d28c99bd45ae55f4b6ea7a9505ea65bc +SHA1: 08bea70b22cc5c849fc04bb1545af70a62027afa +SHA256: 0d49f1714f768bd22ae0d9b7a91d5f515b8e6252280c81a0b0bbc62293e0f8ea +SHA512: 3cb24effecdad3988e49551f7fb512a1322e3320c55e27d26ead1fc784f864ea058eb0fd95d9f5749f5719761e2ff1b7921acf4983d0d4df362f3aadb335ccf2 +Description: Intel® oneAPI Data Analytics Library + + +Package: intel-oneapi-dal-daal4py-2021.3.0 +Architecture: amd64 +Version: 2021.3.0-557 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 27881 +Depends: intel-oneapi-condaindex (>= 2021.3.0-159), intel-oneapi-common-vars (>= 2021.3.0-261), intel-oneapi-common-licensing-2021.3.0 +Filename: pool/main/intel-oneapi-dal-daal4py-2021.3.0-2021.3.0-557_amd64.deb +Size: 28000150 +MD5sum: 640504ff07ddb5149e9f5609ab961ea5 +SHA1: a1a75606dd2fce83f85b962dd22204103c450905 +SHA256: d3c812ccd76f7c22ee6a261b168056434f2da3971a066e11d8b51e8c2032a9d1 +SHA512: 32fa40fdac70038c3d29b605bfda6b420e2377bf6b9c5fa0949dcbe29def20da4b26f9b42186a5f91e448085618bec803e1b335f3d2124562c55edf60616f446 +Description: Intel® oneAPI Data Analytics Library daal4py Package + + +Package: intel-oneapi-dal-daal4py-2021.4.0 +Architecture: amd64 +Version: 2021.4.0-729 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 39160 +Depends: intel-oneapi-condaindex (>= 2021.4.0-207), intel-oneapi-common-vars (>= 2021.4.0-327), intel-oneapi-common-licensing-2021.4.0 +Filename: pool/main/intel-oneapi-dal-daal4py-2021.4.0-2021.4.0-729_amd64.deb +Size: 39320162 +MD5sum: c815185028799ff0d74fee65ea243769 +SHA1: 5bf261b4cbc594d71558f1177bca7bf9674c9dbf +SHA256: ebb7917cafdb36cbd6035dab62336fa4112ddf5f8c63768cb7a44ea6105e8294 +SHA512: 2088c77a96f0d6bc986c38bdc961dbcd70ff36b9f6d16867e85ccd54566fa69c7f91265d71539e5e0ffe348a1c70b2f627277cf98ca84321d31e2ef6f5dfc6e9 +Description: Intel® oneAPI Data Analytics Library daal4py Package + + +Package: intel-oneapi-dal-daal4py-2021.5.1 +Architecture: amd64 +Version: 2021.5.1-803 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 49842 +Depends: intel-oneapi-condaindex (>= 2022.0.0-74), intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-dal-daal4py-2021.5.1-2021.5.1-803_amd64.deb +Size: 49475686 +MD5sum: 628f1a3738f9fa402b4400b8c0296ff7 +SHA1: 517e5c238fb14cd73a318a8318f95312d07ba8e5 +SHA256: 20da35b16fde0694c784c06ffe582946224ba313f85895ff7d8c20fd734feb66 +SHA512: 76958595ff19922c94fef77b82894198e60de51665da000d7ebc02180da680750ac637b294ab1d94e0e28c2378f111e5c1ece51c8b11f1e06c8d8b2685389e07 +Description: Intel® oneAPI Data Analytics Library daal4py Package + + +Package: intel-oneapi-dal-daal4py-2021.5.3 +Architecture: amd64 +Version: 2021.5.3-832 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 49785 +Depends: intel-oneapi-condaindex (>= 2022.0.0-74), intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-dal-daal4py-2021.5.3-2021.5.3-832_amd64.deb +Size: 49414574 +MD5sum: c31022dcfeefa364636b3301bf3b41d7 +SHA1: 76979788ccada3fa0f7d8df4d251b8bca6dfe605 +SHA256: aacf8973e8ac105e1bf6de3e0e5ac9081ccf907fe77148f00301b24131692d6d +SHA512: e981e131d98b7bc46223965250e2e174fbe51c9d5498d35091f8e916d4e436792078fa9a3f8a07a58770a683fc18566437c930e8f5284b233d862fd21715023a +Description: Intel® oneAPI Data Analytics Library daal4py Package + + +Package: intel-oneapi-dal-daal4py-2021.6.0 +Architecture: amd64 +Version: 2021.6.0-915 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 57348 +Depends: intel-oneapi-condaindex (>= 2022.1.0-155), intel-oneapi-common-vars (>= 2022.1.0-161), intel-oneapi-common-licensing-2022.1.0 +Filename: pool/main/intel-oneapi-dal-daal4py-2021.6.0-2021.6.0-915_amd64.deb +Size: 56827572 +MD5sum: 5929873c01623643da8456f15f390428 +SHA1: 9b6ad975c939693ff3ef58a5bd51bb68bb60a648 +SHA256: 064e5b747cbf6dbd88e3ba718d336d31d7178b8595ac7d2726f030759384b6f9 +SHA512: 761e8234f01f3ac3957f46bdb745e44108134a72827a28ebb95d727557e9d39a6c016c091d8354df47c1df3149f09290c4d71f0da1a03094ebd3805011e86d7f +Description: Intel® oneAPI Data Analytics Library daal4py Package + + +Package: intel-oneapi-dal-daal4py-2021.7.0 +Architecture: amd64 +Version: 2021.7.0-8746 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 57198 +Depends: intel-oneapi-condaindex (>= 2022.2.0-8695), intel-oneapi-common-vars (>= 2022.2.0-8694), intel-oneapi-common-licensing-2022.2.0 +Filename: pool/main/intel-oneapi-dal-daal4py-2021.7.0-2021.7.0-8746_amd64.deb +Size: 56625028 +MD5sum: 0745401e3304d4054b1d6708a99f68c8 +SHA1: 46e7c97fa5de66ce30c4b56cccacda0237cfbb46 +SHA256: 37d42a3b16b203570c32c372d81d3286e6cf5f4daf7d949baf3b625b0af0cfcd +SHA512: f171b4aecb01160e441b73327f455fa8e70acd015bd610d27301b929adad763847b9c411b5ffdb985828751f3cc3c36818c07e8fdad8dac543e456c30b6ee070 +Description: Intel® oneAPI Data Analytics Library daal4py Package + + +Package: intel-oneapi-dal-daal4py-2021.7.1 +Architecture: amd64 +Version: 2021.7.1-16996 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 57646 +Depends: intel-oneapi-condaindex (>= 2022.2.1-14970), intel-oneapi-common-vars (>= 2022.2.1-14969), intel-oneapi-common-licensing-2022.2.1 +Filename: pool/main/intel-oneapi-dal-daal4py-2021.7.1-2021.7.1-16996_amd64.deb +Size: 57076832 +MD5sum: 375c5494b3c9960d45491fdc62e012b6 +SHA1: f5e379d5c30109e3bc76b41c68f0d1a0e488e466 +SHA256: 06e5b8e53db0e653e5bb9a15926632ae67238bc904371118e2c762d7e151ff7c +SHA512: aab20a9d6b4f03d0e4d9bd0fad6afdf189e7b13488ad9c160b663956e2fc069c991db21beeef44556ec6218cfa06414b37268a268a994ac4bb0467682f29d83e +Description: Intel® oneAPI Data Analytics Library daal4py Package + + +Package: intel-oneapi-dal-daal4py-2023.0.0 +Architecture: amd64 +Version: 2023.0.0-25395 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 34988 +Depends: intel-oneapi-condaindex (>= 2023.0.0-25326), intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing-2023.0.0 +Filename: pool/main/intel-oneapi-dal-daal4py-2023.0.0-2023.0.0-25395_amd64.deb +Size: 35756460 +MD5sum: e65f1cf0b0c3045a89d771775d89a138 +SHA1: 96d516ddbb01eaa9d3797a34a8a4daee70c3a2b2 +SHA256: de4fdfe444c91d05ab6f1818986a8f79824fd15dd2d2c44c2879097ca44ce8e9 +SHA512: a04645dfd24f369695a97e4f45511d4e94da0ae05a21d81a122f3e6ba1bfb97a2ce2f2a3c9935f9bceb32059f6da48ad65a6b26c1ad51d1b8498bc6542b60b3f +Description: Intel® oneAPI Data Analytics Library daal4py Package + + +Package: intel-oneapi-dal-daal4py-2023.1.0 +Architecture: amd64 +Version: 2023.1.0-46349 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 39431 +Depends: intel-oneapi-condaindex (>= 2023.1.0-43291), intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing-2023.1.0 +Filename: pool/main/intel-oneapi-dal-daal4py-2023.1.0-2023.1.0-46349_amd64.deb +Size: 40242636 +MD5sum: 137c2f9d87f8cddfa2f631116cfad820 +SHA1: 80e575a1dc15d48b7f13febf59e5026b77e75586 +SHA256: ef04ef5b2e0357c0f72c05055af64715a87b464685f9899ac4fe9d794ac55113 +SHA512: 453580bf4145ef596efc5aaa40e95366404dbdca9eb870338e86904738ea4665f769a0d3a22f675f6b22e265bde941c1c8f9bfa2b9b96134888bb4720dc7c6d9 +Description: Intel® oneAPI Data Analytics Library daal4py Package + + +Package: intel-oneapi-dal-devel-2021.1.1 +Architecture: amd64 +Version: 2021.1.1-79 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1619424 +Depends: intel-oneapi-dal-2021.1.1, intel-oneapi-tbb-devel, intel-oneapi-dal-common-devel-2021.1.1, intel-oneapi-condaindex,intel-oneapi-common-vars,intel-oneapi-common-licensing +Filename: pool/main/intel-oneapi-dal-devel-2021.1.1-2021.1.1-79_amd64.deb +Size: 103787848 +MD5sum: d1ae74e3b02996fe93a79b8b6d177c75 +SHA1: a7569d4d7214f77afb4f7e8c92c824d28a9b8ebc +SHA256: a20e9b4b745ac2ee9dd76d6622239e0b7563523a1ba34cbef5dfcee2e42c1ecd +SHA512: f46583247c9d876396790caac50ef9d287dc9629b9bca7a8a6159864a265358775d246d3b3e979bf4e61b60ce0f23e1229dfc2b96591239b3c92fcdda3f32051 +Description: Intel® oneAPI Data Analytics Library Development Package + + +Package: intel-oneapi-dal-devel +Architecture: amd64 +Version: 2021.1.1-79 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-dal-devel-2021.1.1 +Filename: pool/main/intel-oneapi-dal-devel-2021.1.1-79_amd64.deb +Size: 1858 +MD5sum: 9e6560d13b7a97bfe85ff7c7bae054b2 +SHA1: 3ba1e11be73c50ff87af1ac41f64c8fff642c58f +SHA256: 836afac2d4d218c7597a8a2a51725835c9aa992df074b95d037f2f3ab5cf9fb5 +SHA512: a76382a1a3162c653e3ee798ee885b880a8fc3a5269cbbcf94e7c16ccf15f0de9a5fb69480192677b0c18c9332de07ce8623c940c4b6bed70707fb73bd40cfda +Description: Intel® oneAPI Data Analytics Library Development Package + + +Package: intel-oneapi-dal-devel-2021.2.0 +Architecture: amd64 +Version: 2021.2.0-358 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1709376 +Depends: intel-oneapi-dal-2021.2.0, intel-oneapi-tbb-devel-2021.2.0, intel-oneapi-dal-common-devel-2021.2.0, intel-oneapi-condaindex (>= 2021.2.0-94), intel-oneapi-common-vars (>= 2021.2.0-195), intel-oneapi-common-licensing-2021.2.0 +Filename: pool/main/intel-oneapi-dal-devel-2021.2.0-2021.2.0-358_amd64.deb +Size: 106852616 +MD5sum: 758b882f0565c3dcf929a41390b79e35 +SHA1: bff48abf35d18dbe211ee8e8b79dc3b7ff725fff +SHA256: 027e601553cc69bc96fd547f8de119c638ec2a94f2b06e1ad529f245d8094237 +SHA512: 45b809dc307201deea973eb1d0ed170d6ef8f5587a881bf69c355c3db6591124c27be21a13f95400ea4204023885581f07ce42c01e710d8e4c2eab575ac1961d +Description: Intel® oneAPI Data Analytics Library Development Package + + +Package: intel-oneapi-dal-devel +Architecture: amd64 +Version: 2021.2.0-358 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-dal-devel-2021.2.0 +Filename: pool/main/intel-oneapi-dal-devel-2021.2.0-358_amd64.deb +Size: 1858 +MD5sum: 24737ee4f361b4607230cc0cb8890b11 +SHA1: 63e6595172c7f024c1ddf601bfbae66091e882eb +SHA256: 3ccda1245f93d5c3d2f70638d9da7b85d5d790a7a6cc8c89b1ca2fa2c00fb401 +SHA512: ab77eae44be64a152ccaae18a972add3f0f466d03c97fe7b1d3dba0d44edff02778941390bcde3b1a9135ac4e2deb7bae41aa61d3e025f4d18621321d700104c +Description: Intel® oneAPI Data Analytics Library Development Package + + +Package: intel-oneapi-dal-devel-2021.3.0 +Architecture: amd64 +Version: 2021.3.0-557 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1846820 +Depends: intel-oneapi-dal-2021.3.0, intel-oneapi-tbb-devel-2021.3.0, intel-oneapi-dal-common-devel-2021.3.0, intel-oneapi-condaindex (>= 2021.3.0-159), intel-oneapi-common-vars (>= 2021.3.0-261), intel-oneapi-common-licensing-2021.3.0 +Filename: pool/main/intel-oneapi-dal-devel-2021.3.0-2021.3.0-557_amd64.deb +Size: 112378300 +MD5sum: 8210161389b2eead7a65584f53064d3f +SHA1: 6a67d9b5a772105e8e890b50234f45f1ad28273f +SHA256: 2537eda9b339653b424a1e1c6b8298c48b90daf8e63d94b1c5724cb134c1aec6 +SHA512: db21237b56219702357320d977d1c959e5c355edde3606fedba301cbdbabb06e4fca95ddad42d8ec1d34b0d73ef038cdf6841c2c3e22ae41ae242fb564da4a55 +Description: Intel® oneAPI Data Analytics Library Development Package + + +Package: intel-oneapi-dal-devel +Architecture: amd64 +Version: 2021.3.0-557 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-dal-devel-2021.3.0 +Filename: pool/main/intel-oneapi-dal-devel-2021.3.0-557_amd64.deb +Size: 1856 +MD5sum: b24e0e5b5e78bdc00b6a040b1ad5e21d +SHA1: e4665a00876dd3176e282e5cb7cfa20c9b954a0f +SHA256: 911f2dadaa5a8a929a398a601c7104653f13b5514f597584ea1b44cc1d86fa7b +SHA512: c9bce7b23f37defe7a1313831620684bdc06025c3db840ef1f3159039af4d051358c8d03d1f03dad7faa1427417ef5b23f976a0c42f4c7f56fffca068eb36511 +Description: Intel® oneAPI Data Analytics Library Development Package + + +Package: intel-oneapi-dal-devel-2021.4.0 +Architecture: amd64 +Version: 2021.4.0-729 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1583174 +Depends: intel-oneapi-dal-2021.4.0, intel-oneapi-tbb-devel-2021.4.0, intel-oneapi-dal-common-devel-2021.4.0, intel-oneapi-condaindex (>= 2021.4.0-207), intel-oneapi-common-vars (>= 2021.4.0-327), intel-oneapi-common-licensing-2021.4.0 +Filename: pool/main/intel-oneapi-dal-devel-2021.4.0-2021.4.0-729_amd64.deb +Size: 106630842 +MD5sum: 96414761241dc4effecdf44067d5028a +SHA1: e303d35dc5256ded58d03f7ff072831c184815a7 +SHA256: 560b7eb8b9db884b7ef79da8f3b32842bd0fe7468ab0392b331351b41d450b1a +SHA512: bf3db3e3e07282b556e3e99a3cef9a5482a2039e03c71e7b3aaadb4c5732bc7e8b36629baefeaaa44f78fcee5fe66d087d16bf2e4fad27222fbdf2feaaa25040 +Description: Intel® oneAPI Data Analytics Library Development Package + + +Package: intel-oneapi-dal-devel +Architecture: amd64 +Version: 2021.4.0-729 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-dal-devel-2021.4.0 +Filename: pool/main/intel-oneapi-dal-devel-2021.4.0-729_amd64.deb +Size: 2266 +MD5sum: a50617a77b511ea3a65b2311efad2216 +SHA1: 178f17f4798b7d9d49b7041a8aaa186647135140 +SHA256: c142cc062e106e3f1829c67c1991c3decb831a06feb1a7dcf7dc0a2262db1e6d +SHA512: 173d7e8bdc0d16e84c8e2ec6c75587f87e20d1f6f259bf6479deabab52d70062f3fc3f4e976a00f660bf2327e904c3a9cc45dd2d359ff64093235031f4c87c49 +Description: Intel® oneAPI Data Analytics Library Development Package + + +Package: intel-oneapi-dal-devel-2021.5.1 +Architecture: amd64 +Version: 2021.5.1-803 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1501201 +Depends: intel-oneapi-dal-2021.5.1, intel-oneapi-tbb-devel-2021.5.0, intel-oneapi-dal-common-devel-2021.5.1, intel-oneapi-condaindex (>= 2022.0.0-74), intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-dal-devel-2021.5.1-2021.5.1-803_amd64.deb +Size: 101076194 +MD5sum: 4c12c264204a195d4dd38ac817cb8eb4 +SHA1: 73c0d8fee968313f14ec729679c9dd747f4cfea3 +SHA256: db375f3dd4fa4acc099dcde1ebd79c1956eebe89b8319d3a4ced2661a4dc0649 +SHA512: 7b90abaebd8ee3746fb7de8d692d0337ef6fba39838d580f5ec784ebc62f8b812e460ad8f0a2be9cfc7b205856dda4226623e5ff62433c1965255e39eb51937c +Description: Intel® oneAPI Data Analytics Library Development Package + + +Package: intel-oneapi-dal-devel +Architecture: amd64 +Version: 2021.5.1-803 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-dal-devel-2021.5.1 +Filename: pool/main/intel-oneapi-dal-devel-2021.5.1-803_amd64.deb +Size: 2268 +MD5sum: 14eac72fa9009a7f3bdec5b7a23e8b62 +SHA1: 99da5f294c415e817d6114073102b8d1c7d16272 +SHA256: 846be7351365f1efa72f7bbc1ac190b722fc410915702f454c3764257e2d05c7 +SHA512: e68309e39024500a4721cd8e7a1bc5506ba3076dd8718e55748176bdf2c50d3eee72be4c17efa006a2016b417ebb639102e2ede16db7a51fe474039f71164564 +Description: Intel® oneAPI Data Analytics Library Development Package + + +Package: intel-oneapi-dal-devel-2021.5.3 +Architecture: amd64 +Version: 2021.5.3-832 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1501201 +Depends: intel-oneapi-dal-2021.5.3, intel-oneapi-tbb-devel-2021.5.1, intel-oneapi-dal-common-devel-2021.5.3, intel-oneapi-condaindex (>= 2022.0.0-74), intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-dal-devel-2021.5.3-2021.5.3-832_amd64.deb +Size: 101060782 +MD5sum: d78947c4701eb2e72f250f32e5f04423 +SHA1: f580c8db591e7a486c53f82ac1a0f47f98eeb486 +SHA256: 2e2bbf47b6505a2581bfc5d051d16275bd31865b2b09b3d9b40a9d3e04ffe880 +SHA512: 76af01d164729c11d55f513c77eca8e6f94ab6470c807ba7178a7bf84610f892e201ab944e0d86529a3c9f6b9697ed291e9d5e14167c16a979126bd251b6c11d +Description: Intel® oneAPI Data Analytics Library Development Package + + +Package: intel-oneapi-dal-devel +Architecture: amd64 +Version: 2021.5.3-832 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-dal-devel-2021.5.3 +Filename: pool/main/intel-oneapi-dal-devel-2021.5.3-832_amd64.deb +Size: 2264 +MD5sum: 9c4e12ad67838e21286edfa30bfbd457 +SHA1: a91cbcd0f8a828d2da9a67259a96311635d0c008 +SHA256: d32b3d17f4dd10208ddd07b172a5a5b50dfea03fff5822a28aec0e169f2e2948 +SHA512: 0b294ac78021cf5ed655466ba3f0009c39e6750b60c642e358845f6102cf3e2d6b07a89b01d32e11a47b2240c68b49a384b35b9d0020c9b44a24829d3e667c57 +Description: Intel® oneAPI Data Analytics Library Development Package + + +Package: intel-oneapi-dal-devel-2021.6.0 +Architecture: amd64 +Version: 2021.6.0-915 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1530482 +Depends: intel-oneapi-dal-2021.6.0, intel-oneapi-tbb-devel-2021.6.0, intel-oneapi-dal-common-devel-2021.6.0, intel-oneapi-condaindex (>= 2022.1.0-155), intel-oneapi-common-vars (>= 2022.1.0-161), intel-oneapi-common-licensing-2022.1.0 +Filename: pool/main/intel-oneapi-dal-devel-2021.6.0-2021.6.0-915_amd64.deb +Size: 105433934 +MD5sum: 980a8d1929b11b3b2fb688cb958bb287 +SHA1: 6de16f82da6d1100a424f9c6d683dec92b0bb635 +SHA256: 154d34597db9c8558a62b312e7357ce68cdb6f4732265f081b19f3f0fef1f8ed +SHA512: 343baf582b210db0247ffe176a0a5b139ad5d9fb1e5ac1bd8cd4898f5e28f25fcc4ef578cd91f4691f671ebeb637d2862046e88d57951234ec5f53329bed472f +Description: Intel® oneAPI Data Analytics Library Development Package + + +Package: intel-oneapi-dal-devel +Architecture: amd64 +Version: 2021.6.0-915 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-dal-devel-2021.6.0 +Filename: pool/main/intel-oneapi-dal-devel-2021.6.0-915_amd64.deb +Size: 2672 +MD5sum: 7a2f226d2d8fa468075cbafbec589672 +SHA1: f8b4811b835cabd5caf8a28fb808101067b95d64 +SHA256: 52b6d14f66770ec40861a2f2bc0e17d8911dbc370014e4d320be049d5eb544b5 +SHA512: 99e5917fcb1c244d3b7f54e3df496b1ecda1a456ff33ea068f3c5bad0115cba8e2f92baf1a1f543260e67de1ead358c3c881774310d7b5deea087e9fcf7cf51c +Description: Intel® oneAPI Data Analytics Library Development Package + + +Package: intel-oneapi-dal-devel-2021.7.0 +Architecture: amd64 +Version: 2021.7.0-8746 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1530529 +Depends: intel-oneapi-dal-2021.7.0, intel-oneapi-tbb-devel-2021.7.0, intel-oneapi-dal-common-devel-2021.7.0, intel-oneapi-condaindex (>= 2022.2.0-8695), intel-oneapi-common-vars (>= 2022.2.0-8694), intel-oneapi-common-licensing-2022.2.0 +Filename: pool/main/intel-oneapi-dal-devel-2021.7.0-2021.7.0-8746_amd64.deb +Size: 105433334 +MD5sum: e42291f393e842c516796ac947c69988 +SHA1: 264b66e5219c93be7450b56699cbcba68eb49eb3 +SHA256: 4750e7ba08abf46cc1bbed0a0b0f41460de6d28026a83db95702d59c9b4aabf5 +SHA512: a6c11d896c2467cfdd69ab7784d4e1dbc7c9d7b96e2b8df7587794e09ea6a58537f088e869a0dde7d27e829daf1319c3f8d78af2f6a642b1ac80a984a775a2d6 +Description: Intel® oneAPI Data Analytics Library Development Package + + +Package: intel-oneapi-dal-devel +Architecture: amd64 +Version: 2021.7.0-8746 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-dal-devel-2021.7.0 +Filename: pool/main/intel-oneapi-dal-devel-2021.7.0-8746_amd64.deb +Size: 2672 +MD5sum: 35734c6191681f3b106b90eed86d7f0d +SHA1: 951debd6eebea794aeff0d59c830c4dc8f170397 +SHA256: dcd4050282efdf47027f5756dbd1b9fe54778df36bdbd731e9deca2ac2be2d7c +SHA512: 293c26457cbf72219b295e846992b4ef77342025a3051b291d04a1c19520123a9fb570c5173ca20237d3b848391236d0bba15953a724a8135ba814731b86d20e +Description: Intel® oneAPI Data Analytics Library Development Package + + +Package: intel-oneapi-dal-devel +Architecture: amd64 +Version: 2021.7.1-16996 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-dal-devel-2021.7.1 +Filename: pool/main/intel-oneapi-dal-devel-2021.7.1-16996_amd64.deb +Size: 2672 +MD5sum: 87ca09b3b2c7184269c087b9893a195c +SHA1: 039d6413b973fd262f48df04995f47c80dbccc3b +SHA256: 07558d01458bdeb89625de4d934f19eb79fd7403261d54615f7b8b3198f1f7a1 +SHA512: 3136042ad2b827fa6cbe044b08bfa65965caaa6529ba41131334776b06a6a769daf2d171d37f4339ef326e462216b4a95e8ed69cfcf5aa236bd18ef4c5877d65 +Description: Intel® oneAPI Data Analytics Library Development Package + + +Package: intel-oneapi-dal-devel-2021.7.1 +Architecture: amd64 +Version: 2021.7.1-16996 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1472242 +Depends: intel-oneapi-dal-2021.7.1, intel-oneapi-tbb-devel-2021.7.1, intel-oneapi-dal-common-devel-2021.7.1, intel-oneapi-condaindex (>= 2022.2.1-14970), intel-oneapi-common-vars (>= 2022.2.1-14969), intel-oneapi-common-licensing-2022.2.1 +Filename: pool/main/intel-oneapi-dal-devel-2021.7.1-2021.7.1-16996_amd64.deb +Size: 99758482 +MD5sum: b023f6fb8d77f70f802df89245c6b9ae +SHA1: 93ed102d6e9001f6fb38a9b51a348013e30ca457 +SHA256: a4d799e3a506941d2cf851111e47290400cb584a0bfa342f138c3d05bf2a77b5 +SHA512: 3156840db01a22ab45514e2f759aeae3df89400a06af3b427a3ed76a150471bb6eb9501ad89b263680717065884fdc403536628cba77b3d1bae7adac98473ee7 +Description: Intel® oneAPI Data Analytics Library Development Package + + +Package: intel-oneapi-dal-devel-2023.0.0 +Architecture: amd64 +Version: 2023.0.0-25395 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1230234 +Depends: intel-oneapi-dal-2023.0.0, intel-oneapi-tbb-devel-2021.8.0, intel-oneapi-dal-common-devel-2023.0.0, intel-oneapi-condaindex (>= 2023.0.0-25326), intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing-2023.0.0 +Filename: pool/main/intel-oneapi-dal-devel-2023.0.0-2023.0.0-25395_amd64.deb +Size: 80163282 +MD5sum: 636e63b1a003162e87d968132ae22960 +SHA1: 3a2cea7c6743ae6eddba03533a2c0b01b4dc50aa +SHA256: cdefa731b17c8bfe9f69ba61161004d33650273bdd8ef2fc784eb206abf51d4d +SHA512: 8f102e26260de8991654422253baca623c59059812cd238d50804526fb8cf89b6a5f8c28a48561ceb50f05026dd31ade988810905df6eb42678b43d1ae354551 +Description: Intel® oneAPI Data Analytics Library Development Package + + +Package: intel-oneapi-dal-devel +Architecture: amd64 +Version: 2023.0.0-25395 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-dal-devel-2023.0.0 +Filename: pool/main/intel-oneapi-dal-devel-2023.0.0-25395_amd64.deb +Size: 2672 +MD5sum: d190a3f64566434bdcc0895ae1ab65c0 +SHA1: 849c85b603fdc9ac1d8def46766944730c4077dd +SHA256: 2337223e50017b0968387ad44a96f8ccd79a76b437e6f4476ba385d6e24b55f6 +SHA512: eb22f30b1a23bc237abd68d00c7fe184911e008d7a071d45b600de998111695b4a8de19a1a19af3c86d75ca8f2fad2485b34abea35a530e2a96dde98c694f374 +Description: Intel® oneAPI Data Analytics Library Development Package + + +Package: intel-oneapi-dal-devel-2023.1.0 +Architecture: amd64 +Version: 2023.1.0-46349 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 983465 +Depends: intel-oneapi-dal-2023.1.0, intel-oneapi-tbb-devel-2021.9.0, intel-oneapi-dal-common-devel-2023.1.0, intel-oneapi-condaindex (>= 2023.1.0-43291), intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing-2023.1.0 +Filename: pool/main/intel-oneapi-dal-devel-2023.1.0-2023.1.0-46349_amd64.deb +Size: 67321642 +MD5sum: cf1d1e66c714e874a41bf61204f169bc +SHA1: 1b30f6b68153943823b1e7ac5df8821a9616c0f5 +SHA256: 202b28dc9cba1d978d3dd296b66fb2de266adb53f8c1aaeead3dd70d713756d6 +SHA512: e8ab767d19e08de288157a6205fef39233c606465dc2b67d455c0b9b2ce5a4921216299f8ddd9e4442fa834213f11d3ef2eccc5edda957b19790d016564a44f6 +Description: Intel® oneAPI Data Analytics Library Development Package + + +Package: intel-oneapi-dal-devel +Architecture: amd64 +Version: 2023.1.0-46349 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-dal-devel-2023.1.0 +Filename: pool/main/intel-oneapi-dal-devel-2023.1.0-46349_amd64.deb +Size: 2672 +MD5sum: ac67982efb5871c0ce7a4afd38890250 +SHA1: 210e59770d2ebd4505e295b90c14a994bfa06e2c +SHA256: c0cffe5c69ba466ec2682a7d33c9cc5b4f6a214d72c1173ed6540c46d0f88ef4 +SHA512: bea81c89a69392718e3e6ec8e09972e1b30659f9622f505f0afc3f469e3cf6db7590054934fcc96fbce31a82fa1a2b878b06631c45022b1e916ab4f799bafe14 +Description: Intel® oneAPI Data Analytics Library Development Package + + +Package: intel-oneapi-dal-scikit-learn-intelex-2021.3.0 +Architecture: amd64 +Version: 2021.3.0-557 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 80 +Depends: intel-oneapi-condaindex (>= 2021.3.0-159), intel-oneapi-common-vars (>= 2021.3.0-261), intel-oneapi-common-licensing-2021.3.0 +Filename: pool/main/intel-oneapi-dal-scikit-learn-intelex-2021.3.0-2021.3.0-557_amd64.deb +Size: 76760 +MD5sum: ff1b055b4f5cefc97a1f085f1281e5b1 +SHA1: d0a2cf78fc867a1dce64146a6f4e7d100a9349be +SHA256: 86557c4e59db889c7b9f2beff6c9b58b8ac733699ab9c36add4e0141ad2b5d5b +SHA512: 0dfec02cd1fa3e5d025405b573a8815de02a32cb3e5ff06d4c8a8cdea67a9a2b0bbb451eaf67f0d73904d22bebb7df1ea19900c9d853bc916ab1351d93d7e434 +Description: Intel® oneAPI Data Analytics Library scikit-learn-intelex Package + + +Package: intel-oneapi-dal-scikit-learn-intelex-2021.4.0 +Architecture: amd64 +Version: 2021.4.0-729 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 122 +Depends: intel-oneapi-condaindex (>= 2021.4.0-207), intel-oneapi-common-vars (>= 2021.4.0-327), intel-oneapi-common-licensing-2021.4.0 +Filename: pool/main/intel-oneapi-dal-scikit-learn-intelex-2021.4.0-2021.4.0-729_amd64.deb +Size: 115770 +MD5sum: 2fc4fa30bd9ad4537dfe4be41299906a +SHA1: cd857aadac84a35a24a9d7d3576f5945791dec2d +SHA256: 49dc80c1ef54229e070066857a94c59a361f8d81d36e670beedac65866ad49f7 +SHA512: 01446e799bd4e485cf52732a5f81617b34986d7b6dbe888fb0e7f2013d36967002a82ccd2f56100eff47eff22ea6ef27367eea21a60b03348372bcf9140b1622 +Description: Intel® oneAPI Data Analytics Library scikit-learn-intelex Package + + +Package: intel-oneapi-dal-scikit-learn-intelex-2021.5.1 +Architecture: amd64 +Version: 2021.5.1-803 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 123 +Depends: intel-oneapi-condaindex (>= 2022.0.0-74), intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-dal-scikit-learn-intelex-2021.5.1-2021.5.1-803_amd64.deb +Size: 116420 +MD5sum: 12c8d7f08ebcccc7691c5b2d96fdfad7 +SHA1: 1a5bcef12d1fcf2566469c8f483c8c37d17eae1c +SHA256: 757c132534363486a932247bdde1385c299ef64644018cb16acdc25cd58d11ec +SHA512: 1f8108b5eec2007bc09d52558ae966146e85a722a9a496bda7871a3f5c87f78dfb999484206d7992f5644463d03cf69145eed8996b853663d1e1af78b200eb6a +Description: Intel® oneAPI Data Analytics Library scikit-learn-intelex Package + + +Package: intel-oneapi-dal-scikit-learn-intelex-2021.5.3 +Architecture: amd64 +Version: 2021.5.3-832 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 123 +Depends: intel-oneapi-condaindex (>= 2022.0.0-74), intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-dal-scikit-learn-intelex-2021.5.3-2021.5.3-832_amd64.deb +Size: 116088 +MD5sum: 913ccb4838ed307ae330b270f70032fe +SHA1: bfb5ab6881543c4d5b74a24aacc81123fe10f5b8 +SHA256: 3451c49fd3f3569dab08d8892989e819251953298dbd1f771c9858e5b9a6dda0 +SHA512: b283bc7cb998a383f7b8136650fbad90bb2743e9f73bca304fcf55c9f693784f8f473cb0e9c166d59ac59f77edbcc3e7d05dd1978ba957f8c85139c10fc485e2 +Description: Intel® oneAPI Data Analytics Library scikit-learn-intelex Package + + +Package: intel-oneapi-dal-scikit-learn-intelex-2021.6.0 +Architecture: amd64 +Version: 2021.6.0-915 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 137 +Depends: intel-oneapi-condaindex (>= 2022.1.0-155), intel-oneapi-common-vars (>= 2022.1.0-161), intel-oneapi-common-licensing-2022.1.0 +Filename: pool/main/intel-oneapi-dal-scikit-learn-intelex-2021.6.0-2021.6.0-915_amd64.deb +Size: 135838 +MD5sum: 62d82c19a24a463aa72c56d11e54097c +SHA1: cf9bb12867f250057ee22e24e388aba1c9ff15be +SHA256: 7827f21d50858987da988786223add0ff4d2f29a900ee0f2a7f12675dcab8365 +SHA512: 446fa4493aca090f8e1673ad1b76d4cbc9f536fc7ca48d06299ceea6d5d047ee20c7f5b3d4e338b5781c476ddda4169361be3b872bbe56f83cb0945e5839a58a +Description: Intel® oneAPI Data Analytics Library scikit-learn-intelex Package + + +Package: intel-oneapi-dal-scikit-learn-intelex-2021.7.0 +Architecture: amd64 +Version: 2021.7.0-8746 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 161 +Depends: intel-oneapi-condaindex (>= 2022.2.0-8695), intel-oneapi-common-vars (>= 2022.2.0-8694), intel-oneapi-common-licensing-2022.2.0 +Filename: pool/main/intel-oneapi-dal-scikit-learn-intelex-2021.7.0-2021.7.0-8746_amd64.deb +Size: 136038 +MD5sum: fc78476286826ac4b3ae5029c10271a2 +SHA1: e60ee11250cd8accf986b9c98935e6a388d51f19 +SHA256: bdf57d523903e0ba1f245fe0f5f1ef357460c602e27e45ffb7ff272dde1525fc +SHA512: 704ef0d50db1ea71c639f3e3d93f4fdf57abb4b7db285999cbff441385b20c186d79430aac7b40fa1d30230c6ed9dbaded558d459cd29471f6a0ec0e13c6cc3e +Description: Intel® oneAPI Data Analytics Library scikit-learn-intelex Package + + +Package: intel-oneapi-dal-scikit-learn-intelex-2021.7.1 +Architecture: amd64 +Version: 2021.7.1-16996 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 165 +Depends: intel-oneapi-condaindex (>= 2022.2.1-14970), intel-oneapi-common-vars (>= 2022.2.1-14969), intel-oneapi-common-licensing-2022.2.1 +Filename: pool/main/intel-oneapi-dal-scikit-learn-intelex-2021.7.1-2021.7.1-16996_amd64.deb +Size: 138466 +MD5sum: 773e45b82ccd287c6afdfb2376648421 +SHA1: d76c21d4f667e68aa4cdc0b4f7dc104b6359249a +SHA256: b6c37333a6ec40c92d8aea812378bd1b93c8b03a08c845f425c225a461e524ab +SHA512: 5d2eb80b04a5275f29d262038a79bb32b883c863cf7ca901ebdef64d5e413733a769e1e6d21a69d54b78fac08caef928dd660630310dc001473d316f1ec29960 +Description: Intel® oneAPI Data Analytics Library scikit-learn-intelex Package + + +Package: intel-oneapi-dal-scikit-learn-intelex-2023.0.0 +Architecture: amd64 +Version: 2023.0.0-25395 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 165 +Depends: intel-oneapi-condaindex (>= 2023.0.0-25326), intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing-2023.0.0 +Filename: pool/main/intel-oneapi-dal-scikit-learn-intelex-2023.0.0-2023.0.0-25395_amd64.deb +Size: 141546 +MD5sum: cd1c4a5a2f556634366df10da347a282 +SHA1: c123eee4f38f8f088352604ffed5352b88feb5c0 +SHA256: c32974d14adb3871cd6f08989d425e53f1e14108f3142f470406f414bfd62ee7 +SHA512: 92787243ef77c27d8683e67cc698d1f04d17363dd80565a28d9eb410b24335bd308744d7707831581e7462b1841ac5d4c65b3c8b6fbe7d4841195cbef803e5b7 +Description: Intel® oneAPI Data Analytics Library scikit-learn-intelex Package + + +Package: intel-oneapi-dal-scikit-learn-intelex-2023.1.0 +Architecture: amd64 +Version: 2023.1.0-46349 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 202 +Depends: intel-oneapi-condaindex (>= 2023.1.0-43291), intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing-2023.1.0 +Filename: pool/main/intel-oneapi-dal-scikit-learn-intelex-2023.1.0-2023.1.0-46349_amd64.deb +Size: 178758 +MD5sum: 6d9041880e4d76bc931a538d4e87a02f +SHA1: 7ff362722bb9f04ae83a301309a9d94642ead4b5 +SHA256: b5b749e93e9677d71420e4be36d60c3c00e345719909978c4db1fae23eff96b3 +SHA512: 1eb686c9d3c8376258b5d790bdeeea2ab40676bd3981442aa282a245c1986d8dd3567e1c83dd8d5a43d63568636a1ba5093c51cdd53f00182199085fb0683acf +Description: Intel® oneAPI Data Analytics Library scikit-learn-intelex Package + + +Package: intel-oneapi-dev-utilities +Architecture: amd64 +Version: 2021.1.1-197 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-dev-utilities-2021.1.1 +Filename: pool/main/intel-oneapi-dev-utilities-2021.1.1-197_amd64.deb +Size: 2294 +MD5sum: 6340a4111fae9f23fe6f7709fdf2347c +SHA1: a150beef0ed15f78f9acf9e25b9dfa95edfd21b2 +SHA256: 89eff4817ff2cb317704f32cf54776c8183cb3a569e3679bd4aee9a9232e88c3 +SHA512: 8000214a991811e3deb1cd1fa05670df66de5e83989e581fa2bc86ee23b556d4a38d109c0dfce32d1d16870f1ac79dcf41de323fad9d3bb405f886cba40f5a6a +Description: Dev Utilities + + +Package: intel-oneapi-dev-utilities-2021.1.1 +Architecture: amd64 +Version: 2021.1.1-197 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 19155 +Depends: intel-oneapi-dev-utilities-eclipse-cfg (>= 2021.1.1-197),intel-oneapi-common-vars,intel-oneapi-common-licensing +Filename: pool/main/intel-oneapi-dev-utilities-2021.1.1-2021.1.1-197_amd64.deb +Size: 12354678 +MD5sum: c02acf7b563cf042ed3486e527d93b91 +SHA1: 5103cce2c9b4796ecfdd532a3334a0ef82021f7a +SHA256: 536bd05f57fbc129168d224b0f61ea64489f9e5bca7eace05958fbdc21ce4034 +SHA512: 796041e6b2cd12732ab12d3e8572a4b51c4284b90d5d7bb91370be8e5fe08532a704325478ca53098a1315885b8594de67694d9f49699ba3d298cbfd698ccfbf +Description: Dev Utilities + + +Package: intel-oneapi-dev-utilities-2021.2.0 +Architecture: amd64 +Version: 2021.2.0-493 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 19341 +Depends: intel-oneapi-dev-utilities-eclipse-cfg (>= 2021.2.0-493), intel-oneapi-common-vars (>= 2021.2.0-195), intel-oneapi-common-licensing-2021.2.0 +Filename: pool/main/intel-oneapi-dev-utilities-2021.2.0-2021.2.0-493_amd64.deb +Size: 12541184 +MD5sum: cf8f639405e54ae0b755cfec678b0167 +SHA1: 406e6b7ed9c76790d5da4c4cdd7955004a941621 +SHA256: 04c65df18a134478da7ff7ce4cd1caa0a0d7fac53aa39219b9b136450fffd72c +SHA512: 9edb1ad238c47f7584af883384506dcfb3e86ee8f22a8b185296f99071069b0c6bc0e32284735624c3f75f87a48827b93aa9acac1af205df68f053500f19d6ca +Description: Dev Utilities + + +Package: intel-oneapi-dev-utilities +Architecture: amd64 +Version: 2021.2.0-493 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-dev-utilities-2021.2.0 +Filename: pool/main/intel-oneapi-dev-utilities-2021.2.0-493_amd64.deb +Size: 2290 +MD5sum: b030b8b29e34ab9a3fef559c6539dec5 +SHA1: c5eda647da37b2cfc049e44b758ddd35157fa52d +SHA256: ec3bd2102eae1081d814e6dbf33b378e0f59b2330edf4b0bfd2ff9787a0c840e +SHA512: ec831d63be0d63f458bdaad708552e9b421504851b3cd8d7557fd14ebcd79465ece37d9fedabb3c4e2c55a1afe2d89fd567c8d4e3d04233cdfa1b96e0ac92735 +Description: Dev Utilities + + +Package: intel-oneapi-dev-utilities-2021.3.0 +Architecture: amd64 +Version: 2021.3.0-691 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 18632 +Depends: intel-oneapi-dev-utilities-eclipse-cfg (>= 2021.3.0-691), intel-oneapi-common-vars (>= 2021.3.0-261), intel-oneapi-common-licensing-2021.3.0 +Filename: pool/main/intel-oneapi-dev-utilities-2021.3.0-2021.3.0-691_amd64.deb +Size: 12203166 +MD5sum: dbdb9a51a7bc7e6a0783d39f2aa93578 +SHA1: 0eb3876f3bb4171f32eb6f7ff4ce1f96c8e90650 +SHA256: 988b32ae613d2eb36462654a9b470e885134b318d6905e5b57c624f4d2c10c10 +SHA512: 08a9e56da06febd7358dfa9e933756618f0f003b31625561a15a7482d00fd992069507a5aec8ddc7a27dd63481f31bc27ed4824e5e31650d0d3b7b4f9201b9d7 +Description: Dev Utilities + + +Package: intel-oneapi-dev-utilities +Architecture: amd64 +Version: 2021.3.0-691 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-dev-utilities-2021.3.0 +Filename: pool/main/intel-oneapi-dev-utilities-2021.3.0-691_amd64.deb +Size: 2290 +MD5sum: c4823379a19276891265bf37145299f2 +SHA1: c2268e1415633edbb51369cb2b9baed51dae6fd6 +SHA256: a06b304306be9a4abe2619be987b23b21f9c433d9565e880e409323fc6967e70 +SHA512: e6281af120a3b849bd76335cde0a7a77573665f1f5b69b5f8ae44dae297aca30ae7ce09dcdeae45879274b661f5f8251f870067f375114510f8e5357eccf8836 +Description: Dev Utilities + + +Package: intel-oneapi-dev-utilities-2021.4.0 +Architecture: amd64 +Version: 2021.4.0-847 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 18891 +Depends: intel-oneapi-dev-utilities-eclipse-cfg (>= 2021.4.0-847), intel-oneapi-common-vars (>= 2021.4.0-327), intel-oneapi-common-licensing-2021.4.0 +Filename: pool/main/intel-oneapi-dev-utilities-2021.4.0-2021.4.0-847_amd64.deb +Size: 12431816 +MD5sum: b06d8a2ad89bf756ae0738813384f7d0 +SHA1: ee31157758fbababcfd21aabda4fc8a5323813f1 +SHA256: 4526a0ccf5729398c23a5feae0625d68e4b96ae139ba0918edb931cd34a58ff4 +SHA512: 17980c9305002a09f702eaa02c1c3069ef3a3e93bbfb4b7cecdd096d4f3c6614c4433d8ba9df7f964fb0a012c48e6d91e98ead667ea544af04c41cb4e34bc89d +Description: Dev Utilities + + +Package: intel-oneapi-dev-utilities +Architecture: amd64 +Version: 2021.4.0-847 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-dev-utilities-2021.4.0 +Filename: pool/main/intel-oneapi-dev-utilities-2021.4.0-847_amd64.deb +Size: 2296 +MD5sum: 7c3f1ac85a9fdea3a73c46e5680ea325 +SHA1: 727902a0aeee5da4027d8ae8c4091989fda1323d +SHA256: 81d19407cd04aa92c67a42fd5287b5f923c472ad516ac602d8e81af67cccea64 +SHA512: 6ad848918c1e129f14776d8e2d241a4ea4f841858b1e07446dd941c370951b4d0528462cfdb822753e4936e9475959eb9ccf136c7865a1dd50121cde68df0255 +Description: Dev Utilities + + +Package: intel-oneapi-dev-utilities-2021.5.1 +Architecture: amd64 +Version: 2021.5.1-924 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 19295 +Depends: intel-oneapi-dev-utilities-eclipse-cfg (>= 2021.5.1-924), intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-dev-utilities-2021.5.1-2021.5.1-924_amd64.deb +Size: 12845822 +MD5sum: 27a27b31b60fdca389288cdb25df2d08 +SHA1: d921f22e6c30d0dfd9963502616aba484d555629 +SHA256: 1e0d5734a54bb4a663ca23a8926fceaea2aafa5a7d99eac6645a41bc99aa9e0c +SHA512: 8ea6a4609030c91b5c5e620b137db4f75da3454693124d91c4902a394097c29b40086fc4bf44fc2fba0da8cd951dd1234bc4200d26abb79283cee068e33d78c0 +Description: Dev Utilities + + +Package: intel-oneapi-dev-utilities +Architecture: amd64 +Version: 2021.5.1-924 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-dev-utilities-2021.5.1 +Filename: pool/main/intel-oneapi-dev-utilities-2021.5.1-924_amd64.deb +Size: 2192 +MD5sum: c5dd10ad0227da3fd2e8fd51719828e9 +SHA1: c20324e24ea3b9d6389046f9f2b91149832d567a +SHA256: 4daa128a218226e0e0bf4f84c4cbadd6019e37a2c6cb0f16d945933907bccb98 +SHA512: 4263f1d1e70f396d9d501e126425020147f694bdc5df67f61315158296a2843b3ef9f36293ca9160566933c9df13ad2036194ff12a2fe2f7561fc8cca7a9afa4 +Description: Dev Utilities + + +Package: intel-oneapi-dev-utilities-2021.5.2 +Architecture: amd64 +Version: 2021.5.2-936 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 19289 +Depends: intel-oneapi-dev-utilities-eclipse-cfg (>= 2021.5.2-936), intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-dev-utilities-2021.5.2-2021.5.2-936_amd64.deb +Size: 12839018 +MD5sum: ecba058ee2b33b2db8ecc1b91a064a1d +SHA1: 7ca4c001f185031a25f7a1872e1b7e2bc4757320 +SHA256: 1b2e425aab0933fb4e716fb0e45a3700efbdc15690a9001901437a24c9ad58a1 +SHA512: e7cdef0d597260d5baa2c3f273fb275d0d9141c41360e1228dc836bd6ca09deeeeea6d4a4a5dfb3ee7951f23f4da9d11d09a5203ea6a0a86a6f9e481a7e2ffaf +Description: Dev Utilities + + +Package: intel-oneapi-dev-utilities +Architecture: amd64 +Version: 2021.5.2-936 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-dev-utilities-2021.5.2 +Filename: pool/main/intel-oneapi-dev-utilities-2021.5.2-936_amd64.deb +Size: 2190 +MD5sum: ff63fb7bf69941be8896b705c5b2d6ed +SHA1: 47d72181bf903b2fc08920373f889d33a6d165f8 +SHA256: 66442c61a1062cd45547b69899396da28a0d9c88d24d34358aefac8b91410736 +SHA512: 678fef7ef5aa103287804ce59d5cefd997ef1a49a8bf6b82e92af1dbb0f59fdc0745c995e2f669608fcb0ed40f1cdf30cc5010bdb5a9b428504631e9e98b2945 +Description: Dev Utilities + + +Package: intel-oneapi-dev-utilities-2021.6.0 +Architecture: amd64 +Version: 2021.6.0-989 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 16928 +Depends: intel-oneapi-dev-utilities-eclipse-cfg (>= 2021.6.0-989), intel-oneapi-common-vars (>= 2022.1.0-161), intel-oneapi-common-licensing-2022.1.0 +Filename: pool/main/intel-oneapi-dev-utilities-2021.6.0-2021.6.0-989_amd64.deb +Size: 10543922 +MD5sum: 85ac5369d19fa3800c4b0cc869fbedd8 +SHA1: 87265c768fed51d1f77bbbaea7ec4d314e33b413 +SHA256: 4efe2d3556804ce77818014227e86b62e34000f511f9ea8774e064956eac2bf1 +SHA512: 3d2cf582d8a3dc2248b56f3bec190ece9393e0da70f5c649a9ca2c3e34d726af6e4ada127b7841304edfbbd75372993c9e93659765950a19b4e0f7d24dd9c209 +Description: Dev Utilities + + +Package: intel-oneapi-dev-utilities +Architecture: amd64 +Version: 2021.6.0-989 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-dev-utilities-2021.6.0 +Filename: pool/main/intel-oneapi-dev-utilities-2021.6.0-989_amd64.deb +Size: 2260 +MD5sum: 1c23120cc75847a246442d17d0e67a8b +SHA1: 8434c56072d1f10b349c4beff56830fe037d941b +SHA256: d3d7715d8547c15a0978b5b93642faef47c08c8579cbb0a925dcbffc0bcb964f +SHA512: 30ac68154fed98e3e83d8ac3ab49ef0829aec09b12fcc319132daf303b3372dfc124cffdd40f8fb6bb4d166b464b310832d9456f0c70b7dc2a27b4de992451ad +Description: Dev Utilities + + +Package: intel-oneapi-dev-utilities-2021.7.0 +Architecture: amd64 +Version: 2021.7.0-8698 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 17147 +Depends: intel-oneapi-dev-utilities-eclipse-cfg (>= 2021.7.0-8698), intel-oneapi-common-vars (>= 2022.2.0-8694), intel-oneapi-common-licensing-2022.2.0 +Filename: pool/main/intel-oneapi-dev-utilities-2021.7.0-2021.7.0-8698_amd64.deb +Size: 10834122 +MD5sum: e9405114220431f930dc313166b59675 +SHA1: 68662532033b2909f381fd920c0f41521c4cb899 +SHA256: aabc0b7d66c32cd6298e6d50cb289f4067da93a485c040808f63e7813f46565c +SHA512: 91d520b87c5b108e4f1f9d9c3d1cec370cfa129cfcd6fd0e0efa5c40aa53cb01441f252e53108261f2002089e6662e2e8b93dd773a62f69fc64ff748dc2e0de4 +Description: Dev Utilities + + +Package: intel-oneapi-dev-utilities +Architecture: amd64 +Version: 2021.7.0-8698 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-dev-utilities-2021.7.0 +Filename: pool/main/intel-oneapi-dev-utilities-2021.7.0-8698_amd64.deb +Size: 2256 +MD5sum: f4ab74f1330446f9616f55b51f5a0eed +SHA1: a4671104ad2c891d384c98e5ac451e82dc1b9665 +SHA256: 285b76080126da56637cebdff64cea18ca0e97b91d0731494ca886358b45d5b8 +SHA512: 0b8a1984d768d45789bbc617df6c23fe5ab6bd9d34661748ac21d5d1bd5293015e8b0a0374fcafcf7b663ccab7b72585d6ad99ecb7aef44c5247af43a8730550 +Description: Dev Utilities + + +Package: intel-oneapi-dev-utilities +Architecture: amd64 +Version: 2021.7.1-14991 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-dev-utilities-2021.7.1 +Filename: pool/main/intel-oneapi-dev-utilities-2021.7.1-14991_amd64.deb +Size: 2260 +MD5sum: 628361768e30129f7901f3ff97b522ac +SHA1: 6e44d901a226e1c17197f37ed84b4cccd7febc32 +SHA256: 7eb60aacbfb2673cd8de4998faf329d5f21dd2cd15d55ea3c036beb8559538d1 +SHA512: 8ab743d14e8f234702997e1ced003770c9007147d6bc101bc45ae65286e5ef919b712118fedc78cc204963057c38dd4bcbb6496dbed7e9ac834ad11afcf78d55 +Description: Dev Utilities + + +Package: intel-oneapi-dev-utilities-2021.7.1 +Architecture: amd64 +Version: 2021.7.1-14991 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 17840 +Depends: intel-oneapi-dev-utilities-eclipse-cfg (>= 2021.7.1-14991), intel-oneapi-common-vars (>= 2022.2.1-14969), intel-oneapi-common-licensing-2022.2.1 +Filename: pool/main/intel-oneapi-dev-utilities-2021.7.1-2021.7.1-14991_amd64.deb +Size: 11067858 +MD5sum: b35d4c14320e7248ea9c64c2203d3e89 +SHA1: 5463a3f232489e4bf69aff950f586e9b38c195a2 +SHA256: 9619779fa30d742880ddc46ba2f496078f756bb88654cb11efa7435bab6214f0 +SHA512: a500f1936740456d69ee9b146c4bdabed90c720f5b77022af22c6d8a2aeb2aeaa721f78eaf73fce5d3ef60223483d999f88d8a80d55f2c2da9ffdace21d7f8f8 +Description: Dev Utilities + + +Package: intel-oneapi-dev-utilities-2021.8.0 +Architecture: amd64 +Version: 2021.8.0-25328 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 18135 +Depends: intel-oneapi-dev-utilities-eclipse-cfg (>= 2021.8.0-25328), intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing-2023.0.0 +Filename: pool/main/intel-oneapi-dev-utilities-2021.8.0-2021.8.0-25328_amd64.deb +Size: 11366230 +MD5sum: 7d35030b2dc7d1ca158719bf8259b38b +SHA1: 6bac0f75d7cd8596e7407cc6df144bd8b21d4fd2 +SHA256: df8513238bb753f9d169ffc7967784478ea10a2ab3cb26246c66a0d51d96d33f +SHA512: 7444f4ac8e22e42493dfeed6480178edce2b7ecb140363bb7dadd06c7c9a8c83137f8147223a69e5bbb4b7f38abc4bfda26fa6f4ee24d702251ac0603cc34b3b +Description: Dev Utilities + + +Package: intel-oneapi-dev-utilities +Architecture: amd64 +Version: 2021.8.0-25328 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-dev-utilities-2021.8.0 +Filename: pool/main/intel-oneapi-dev-utilities-2021.8.0-25328_amd64.deb +Size: 2260 +MD5sum: 292a4dbf23be2765fe6a8637f82fbc34 +SHA1: dbb82f9c0f99a0086ff36cc740ff15a8d9e2eacc +SHA256: c6b065c372ebcc42e5857011a843afc9e5188f6284f1a51213c412b19b205f5b +SHA512: 5abd813bf33d014eff96e7a7ec833bd25d9ac3345674a9ad54bf9c1aa517b04a3e36bed68eb5b7f290960cd3494fd78c6cae240b84407757f220ea628cecc2c3 +Description: Dev Utilities + + +Package: intel-oneapi-dev-utilities-2021.9.0 +Architecture: amd64 +Version: 2021.9.0-44447 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 18135 +Depends: intel-oneapi-dev-utilities-eclipse-cfg (>= 2021.9.0-44447), intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing-2023.1.0 +Filename: pool/main/intel-oneapi-dev-utilities-2021.9.0-2021.9.0-44447_amd64.deb +Size: 11368618 +MD5sum: 480adfb2737be345141f4554420c627b +SHA1: 8111b4185c23b1bf3c671f908175c0f1b3864842 +SHA256: 2d34f9d4f746b2b6468ed033628ffbe7838bf1d0bafcc3650d13d5740b10157f +SHA512: a02ac3967eb5865eadd7a411e85d44e64684fbb11e5925387c55ccb934631de3f8383fefbd25298dc080e171268cc40a123cfd9fa5d1963eb9819b19bb0cbfbe +Description: Dev Utilities + + +Package: intel-oneapi-dev-utilities +Architecture: amd64 +Version: 2021.9.0-44447 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-dev-utilities-2021.9.0 +Filename: pool/main/intel-oneapi-dev-utilities-2021.9.0-44447_amd64.deb +Size: 2264 +MD5sum: b02a120622cec58a0ffd46d9896024e4 +SHA1: 0a372e4436168d46d6ad839b67f60fcee0f864a4 +SHA256: d85818a49d269d0fd6d4a46373bad69002676406df3eb953c24dfcac94523e5d +SHA512: e62c53616a7a57f5707be85146f37d4a1406faa5d3d3698f2bbe0f3fd5e0a2d3de6376905153aa70f57a02605274d7af6036dfddcc4a3c3ab8fbcd755f926112 +Description: Dev Utilities + + +Package: intel-oneapi-diagnostics-utility +Architecture: amd64 +Version: 2021.4.0-84 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 10533 +Depends: intel-oneapi-common-vars (>= 2021.4.0-327), intel-oneapi-common-licensing-2021.4.0 +Filename: pool/main/intel-oneapi-diagnostics-utility-2021.4.0-84_amd64.deb +Size: 527142 +MD5sum: d1a7919df2e2892d03d00101f86c82d0 +SHA1: 6d323e81dd790cc6a69544d8f6b7df16ba1d655a +SHA256: b8b2f832daa85fe3835151632fb91b06a50449a6905bed843d41e1b37f983445 +SHA512: 821ae6c5a2c73b90607033cc8446ea3f0a8b454f5a3fc1c79bb7e863c124ec1d1a931b5bfebe17939fbfd65992acaed10759e279cb442255829781746d2184d4 +Description: Diagnostics Utility for Intel® oneAPI Toolkits + + +Package: intel-oneapi-diagnostics-utility +Architecture: amd64 +Version: 2022.0.0-58 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 3017 +Depends: intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-diagnostics-utility-2022.0.0-58_amd64.deb +Size: 364202 +MD5sum: 900a61a16790c13d0f0a58d0de986bb2 +SHA1: a00b537039f8baead27c373203dc4564b0a0b5b9 +SHA256: 91adfcf2cb36b6d1b5d63762446d3b709f33e873379a6aebfcfb08bcd2b55da7 +SHA512: 3189bf050a259deed49ed40406aa8aa17b02fb493bab9758ceabdf7f706609daadfe9cdd60dc21590de1f8104a7ca8543cf8141503fed8cb3927f96fc06be01c +Description: Diagnostics Utility for Intel® oneAPI Toolkits + + +Package: intel-oneapi-diagnostics-utility +Architecture: amd64 +Version: 2022.1.0-150 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1144 +Depends: intel-oneapi-common-vars (>= 2022.1.0-161), intel-oneapi-common-licensing-2022.1.0 +Filename: pool/main/intel-oneapi-diagnostics-utility-2022.1.0-150_amd64.deb +Size: 205394 +MD5sum: 8c82516f8f090a54337f03b7bf53f28d +SHA1: 2cde336e61bfebe36444f600253643b917870b3b +SHA256: 4e86d89ea2fdbacfc7dc4cd8effce93459f49f5e31bd5b39b2b5bd808b602e04 +SHA512: 21ddfafd61605d35c9f6e80f929a953940a0977e9f75bff8592fee6ece8841a6f8b8e4d0410cf674b23acd9874b0d505efa3644e23f339e1777c4fa99c1e4513 +Description: Diagnostics Utility for Intel® oneAPI Toolkits + + +Package: intel-oneapi-diagnostics-utility +Architecture: amd64 +Version: 2022.1.1-8702 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1214 +Depends: intel-oneapi-common-vars (>= 2022.2.0-8694), intel-oneapi-common-licensing-2022.2.0 +Filename: pool/main/intel-oneapi-diagnostics-utility-2022.1.1-8702_amd64.deb +Size: 205558 +MD5sum: f9025566b355bce97a5a2971a1a29c2e +SHA1: 85a4afa99c22a648cb109bda1ae5b07e698c074a +SHA256: 8fc83a6e3bf8e69a9cf47ec7601e5d88cce157b925fba762628ea750cf22a64f +SHA512: 738df393aa618efa54358de3f6d0e46cf181bf8cabb069c6f52d6b126efcb76626218ad0317cbeb33a337868519358a75fc9e4a86367b3afd7ff80b0dab39ba1 +Description: Diagnostics Utility for Intel® oneAPI Toolkits + + +Package: intel-oneapi-diagnostics-utility +Architecture: amd64 +Version: 2022.1.2-14995 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1214 +Depends: intel-oneapi-common-vars (>= 2022.2.1-14969), intel-oneapi-common-licensing-2022.2.1 +Filename: pool/main/intel-oneapi-diagnostics-utility-2022.1.2-14995_amd64.deb +Size: 205570 +MD5sum: 45e1cb83bfdb359ba59b18ea48e9549a +SHA1: d7d3aff537a396da49d3e29148ebc9acacaea18f +SHA256: c0e8ef76fbeac0acbaea4a6bd6e5e193c8b9eec7769d2224f731c579a20a6a2b +SHA512: 9bd8943092af0fb7189b4004674c02e3fb9d4f53159d0467fc9b70a7a1f3fff9541216b62fd178cdd79d2792f144a1bf9d0a9ca4775970928c193670d08de770 +Description: Diagnostics Utility for Intel® oneAPI Toolkits + + +Package: intel-oneapi-diagnostics-utility +Architecture: amd64 +Version: 2022.2.0-25337 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1173 +Depends: intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing-2023.0.0 +Filename: pool/main/intel-oneapi-diagnostics-utility-2022.2.0-25337_amd64.deb +Size: 203178 +MD5sum: cdc7f89827ab835acd654cf347bb8315 +SHA1: 1632cefe6b6918c3e770c01d54c2b857091de8d9 +SHA256: af3db36251753bc8e5a31fb19f04b5e71288c360aaef84e7cbb74828a9b60ef5 +SHA512: 4527b869b548b8b0641ad991e7b10e29770156b188f8001981fc3c6cc35284dc8f9f83988f0b82c7770f46108864fa7dce3bc6a78ea4a095bbe481daeec3d60b +Description: Diagnostics Utility for Intel® oneAPI Toolkits + + +Package: intel-oneapi-diagnostics-utility +Architecture: amd64 +Version: 2022.3.0-43897 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1173 +Depends: intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing-2023.1.0 +Filename: pool/main/intel-oneapi-diagnostics-utility-2022.3.0-43897_amd64.deb +Size: 203254 +MD5sum: d5d170b6ddc4f5babce38624c9742ba8 +SHA1: 5bae352ddde15f31420bf27b73fbc0b814309e7d +SHA256: 0dcb568c586269c34acf055a2531eda75b1e79beaeca2587f3a87daf5167a86f +SHA512: 24777f4cff6abd59dbe2b697ce3845121f9f2dc79a58318468696fe71f0e78fa258d02807bf12fa29bbafc6f836774c2af5cb6d53980291a1eed546dfcf131c3 +Description: Diagnostics Utility for Intel® oneAPI Toolkits + + +Package: intel-oneapi-dnnl +Architecture: amd64 +Version: 2021.1.1-55 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 353456 +Depends: intel-oneapi-tbb, intel-oneapi-compiler-dpcpp-cpp-runtime,intel-oneapi-common-vars,intel-oneapi-common-licensing +Filename: pool/main/intel-oneapi-dnnl-2021.1.1-55_amd64.deb +Size: 37750290 +MD5sum: d4d7434f552b926e697a5a5c5cf37d88 +SHA1: 0ceb66938b7446e52ed3dd218eabdf64b7e926ff +SHA256: b0b15818b1f6d6475ff1797569ed7e22552f0ff6732aa1be96ac20ff05679251 +SHA512: eddbf1b4c9bcebaca34b6adf2945acdba8920ab01fb2aac0fc8aabee839ccfafa0ec31c45f436e6f9dd052951e698ee759e6d1c9ec9d91bf7ec9141e1e447b96 +Description: Intel® oneAPI Deep Neural Network Library + + +Package: intel-oneapi-dnnl +Architecture: amd64 +Version: 2021.2.0-228 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 443068 +Depends: intel-oneapi-tbb-2021.2.0, intel-oneapi-compiler-dpcpp-cpp-runtime-2021.2.0, intel-oneapi-common-vars (>= 2021.2.0-195), intel-oneapi-common-licensing-2021.2.0 +Filename: pool/main/intel-oneapi-dnnl-2021.2.0-228_amd64.deb +Size: 46227244 +MD5sum: 8a27ee5a183820c2226d9db16411da73 +SHA1: 429e054f11af4279748937853293965f14d7ab25 +SHA256: 75bcec9b89e37d98a9af759d3d5fd03425881ac5b980c6dd3d57ed40e96d61a0 +SHA512: aeb6cb6fe3ca285f2419dc4d2348fbca3cc85a89d91fe52d1dbd4ffff1f37f86c1bc9c00b4d3cf5d96d3053e7b4ae94edf50e0850cfcfc881042aa426f74867a +Description: Intel® oneAPI Deep Neural Network Library + + +Package: intel-oneapi-dnnl +Architecture: amd64 +Version: 2021.3.0-344 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 513159 +Depends: intel-oneapi-tbb-2021.3.0, intel-oneapi-compiler-dpcpp-cpp-runtime-2021.3.0, intel-oneapi-common-vars (>= 2021.3.0-261), intel-oneapi-common-licensing-2021.3.0 +Filename: pool/main/intel-oneapi-dnnl-2021.3.0-344_amd64.deb +Size: 51015110 +MD5sum: 868bf36523b0ec87640e86290226a745 +SHA1: d61f78ce65f82e6192e78484018c10b08740eddc +SHA256: fb5bb0a48b991caf03bd7888e958867ba0e252ed4c10412cc55970fcc5030e4a +SHA512: bb2a7ef2389ee069442148e7edce43afe3bb4c87d080d39f776abcabc092e73f8d28437e5a3a0180d105b0c301ad6b2f6225c1fba0c992f45303b00978a32548 +Description: Intel® oneAPI Deep Neural Network Library + + +Package: intel-oneapi-dnnl +Architecture: amd64 +Version: 2021.4.0-467 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 395025 +Depends: intel-oneapi-tbb-2021.4.0, intel-oneapi-compiler-dpcpp-cpp-runtime-2021.4.0, intel-oneapi-common-vars (>= 2021.4.0-327), intel-oneapi-common-licensing-2021.4.0 +Filename: pool/main/intel-oneapi-dnnl-2021.4.0-467_amd64.deb +Size: 43968532 +MD5sum: e8926d3a77769282918df20db74b914d +SHA1: 5fa9cec9647e984b9350a9b94ef842170f799305 +SHA256: fbfe4ec6ef05ed1198610295690f3c9115f9d79a1f004bea80173547b8e879a3 +SHA512: 991b592d90c2b1e5283589c4c89bc76b31798ebc852c233aa5998d94c51a482005ab59d478015075ef6add2be3c97795d5069bcade6b4d366961b2b6cb9486d5 +Description: Intel® oneAPI Deep Neural Network Library + + +Package: intel-oneapi-dnnl +Architecture: amd64 +Version: 2022.0.1-26 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 263471 +Depends: intel-oneapi-tbb-2021.5.0, intel-oneapi-compiler-dpcpp-cpp-runtime-2022.0.1, intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-dnnl-2022.0.1-26_amd64.deb +Size: 34592052 +MD5sum: 3d349415052ae686511fb3dbfe5ba1a2 +SHA1: 6d086d00832e455fde50b6a17d670dadb0498f80 +SHA256: 5c77cd07626d6943a6c6de2f7008b28f68276712cb1296871afde03cb20c82cd +SHA512: d82617ed9b27c122df7dc3630bde88ed31ba8a456515f23ad6de6ecacb660d7c40660cc452cdd8c541774aa444db229c876390bda4bb70f3e7f16a7a2b84bd67 +Description: Intel® oneAPI Deep Neural Network Library + + +Package: intel-oneapi-dnnl +Architecture: amd64 +Version: 2022.0.2-43 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 263471 +Depends: intel-oneapi-tbb-2021.5.1, intel-oneapi-compiler-dpcpp-cpp-runtime-2022.0.2, intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-dnnl-2022.0.2-43_amd64.deb +Size: 34575208 +MD5sum: 8e44f77fd0fc7692ef18050302544b95 +SHA1: 8aa987e6d88954e5de74f97464c0576cf4a0efdc +SHA256: a7d855bfad11f23c399bace8bb420c76ebbff9b7d7da89a81739b0d98d727fd3 +SHA512: c04bea0cac5706997e53ef993c141325344e54ee0f065210b4dc9fd78f1e88df967ebe575309ce18b2e67fceba5a877d7ad303bbf1738a6775576a631a63e932 +Description: Intel® oneAPI Deep Neural Network Library + + +Package: intel-oneapi-dnnl +Architecture: amd64 +Version: 2022.1.0-132 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 154133 +Depends: intel-oneapi-tbb-2021.6.0, intel-oneapi-compiler-dpcpp-cpp-runtime-2022.1.0, intel-oneapi-common-vars (>= 2022.1.0-161), intel-oneapi-common-licensing-2022.1.0 +Filename: pool/main/intel-oneapi-dnnl-2022.1.0-132_amd64.deb +Size: 23948770 +MD5sum: f73ac75393fc856b82eaf68440465d9f +SHA1: e2355e6586a4f070fc80c77895134f0eefeab14b +SHA256: 21b2d93e74428814cae8f4050d8f4967fc9346bf5dca456d54e47d34605dca8f +SHA512: d6754dbab73daa594a29d1c3fc8e6758a3f44a41dce0361d6f1e9d9b88c97d2733991616787b21c64f0252ee87e895a66586f9187fb2abaacf8e132c7d547841 +Description: Intel® oneAPI Deep Neural Network Library + + +Package: intel-oneapi-dnnl +Architecture: amd64 +Version: 2022.2.0-8750 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 154207 +Depends: intel-oneapi-tbb-2021.7.0, intel-oneapi-compiler-dpcpp-cpp-runtime-2022.2.0, intel-oneapi-common-vars (>= 2022.2.0-8694), intel-oneapi-common-licensing-2022.2.0 +Filename: pool/main/intel-oneapi-dnnl-2022.2.0-8750_amd64.deb +Size: 23943230 +MD5sum: a992f8c67dc1c5f8796ea1576a5c7532 +SHA1: f80872071ebf4cb43e83855fae55184980d84abd +SHA256: dda2c717d71053a46c0776992dbfca0aa7c120c390f25144ebf64f168690bfad +SHA512: b2688372c81685d32706e39b457d3cfd789f507256c5866707743aa61359b1ea540a3ef492e7c4abe621a5c6abaea17e53741e5382bc0c5305e14231a66a583c +Description: Intel® oneAPI Deep Neural Network Library + + +Package: intel-oneapi-dnnl +Architecture: amd64 +Version: 2022.2.1-16994 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 154207 +Depends: intel-oneapi-tbb-2021.7.1, intel-oneapi-compiler-dpcpp-cpp-runtime-2022.2.1, intel-oneapi-common-vars (>= 2022.2.1-14969), intel-oneapi-common-licensing-2022.2.1 +Filename: pool/main/intel-oneapi-dnnl-2022.2.1-16994_amd64.deb +Size: 23946870 +MD5sum: 44e50e5918ba38b082fb22aca1630919 +SHA1: 0ba9a6a043f071e64d2f9e4f8f4244a87a77f589 +SHA256: bf78723342baa78132fcffe5e1574637532133fd150cb1b766e5e1152ec37454 +SHA512: f7b20ce9c31a7890b83d2341e0e12543393d56cd36a8f22cfdaa3fc4da9f534da399b84116ba34dd4495f51c7c8703c74ca36701a00823577609d1c07f83a215 +Description: Intel® oneAPI Deep Neural Network Library + + +Package: intel-oneapi-dnnl +Architecture: amd64 +Version: 2023.0.0-25399 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 230780 +Depends: intel-oneapi-tbb-2021.8.0, intel-oneapi-compiler-dpcpp-cpp-runtime-2023.0.0, intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing-2023.0.0 +Filename: pool/main/intel-oneapi-dnnl-2023.0.0-25399_amd64.deb +Size: 28661710 +MD5sum: 567ee44f127322c7d75680efbae52824 +SHA1: 2b5b049e1e9e1e00b9d2d8943c4777b024c3a20a +SHA256: 616f9fac7c702aa12fa032a80bcbda9988c3029300cbe0b7c71f7049885551dc +SHA512: 0488736609d328aef93fbde5d0cbc04915662bde3ac7e9c8eac38869dad42d27a23db4dfd1b49c06428c538f57f92623ae80a61f32926d8116c0f292ea83025b +Description: Intel® oneAPI Deep Neural Network Library + + +Package: intel-oneapi-dnnl +Architecture: amd64 +Version: 2023.1.0-46343 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 266697 +Depends: intel-oneapi-tbb-2021.9.0, intel-oneapi-compiler-dpcpp-cpp-runtime-2023.1.0, intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing-2023.1.0 +Filename: pool/main/intel-oneapi-dnnl-2023.1.0-46343_amd64.deb +Size: 33146094 +MD5sum: 53230ea63ef82ad6ea283366b40b04de +SHA1: dcbfffcdd5e20effaf2175cc2e2daddedba8d296 +SHA256: e60916a5849ba8faacd46f9633cdd6e9623fc45828696afe5d8308b7a6fcd96e +SHA512: 44d3c38c1eb2dad10c700aab1125e597d24272d1851ad3c0f352d9531652622ccf3feee7adf442fc824a59d0d5305109fd4cd1c76e08e787cf0c87b31497fb80 +Description: Intel® oneAPI Deep Neural Network Library + + +Package: intel-oneapi-dnnl-devel +Architecture: amd64 +Version: 2021.1.1-55 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 5217 +Depends: intel-oneapi-dnnl (= 2021.1.1-55),intel-oneapi-common-vars,intel-oneapi-common-licensing +Filename: pool/main/intel-oneapi-dnnl-devel-2021.1.1-55_amd64.deb +Size: 140490 +MD5sum: 521813cea76bde049c6616ffeb4d0b7e +SHA1: 0f248951581764656d06bde51462cf4fabba51e1 +SHA256: 5104d31ee4124e2f20e1bd932adff0c115e0a385f111b0cb09055a9e1d8f6e46 +SHA512: 237a7763d5653c91e9d9eacfcac6e7b0ad9bcfcd2acb9f842e3d731f6945b2a42d39a7a5703d497650749f6bf090adb3ca4619504d5745a3456d3fe60ca36076 +Description: Intel® oneAPI Deep Neural Network Library Development Package + + +Package: intel-oneapi-dnnl-devel +Architecture: amd64 +Version: 2021.2.0-228 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 5360 +Depends: intel-oneapi-dnnl (= 2021.2.0-228), intel-oneapi-common-vars (>= 2021.2.0-195), intel-oneapi-common-licensing-2021.2.0 +Filename: pool/main/intel-oneapi-dnnl-devel-2021.2.0-228_amd64.deb +Size: 143274 +MD5sum: a608745f818af0eb9df5b8f40e7e5a92 +SHA1: 2c162ec002c8b6866a81ce4816c8064c848e7e4b +SHA256: 633b9f7d94be60a8c2c22620d22034ad87038e17a9aea5e180ec2721e81d139d +SHA512: d5d56f8731eb173f6cc61c9fd02dab199a81105d389c581a6fbfc5cf7de24b78a3a57a6fd09dcc147f0696662d859b2ef6a9fedfc4a51bc5c4cee94c571b8ae8 +Description: Intel® oneAPI Deep Neural Network Library Development Package + + +Package: intel-oneapi-dnnl-devel +Architecture: amd64 +Version: 2021.3.0-344 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 5376 +Depends: intel-oneapi-dnnl (= 2021.3.0-344), intel-oneapi-tbb-devel-2021.3.0, intel-oneapi-common-vars (>= 2021.3.0-261), intel-oneapi-common-licensing-2021.3.0 +Filename: pool/main/intel-oneapi-dnnl-devel-2021.3.0-344_amd64.deb +Size: 143940 +MD5sum: 03c63c4b1d652fc056b002e5d7ca3c37 +SHA1: 29dbfd2ae72cab809f702e0209fd8f043f3a36ca +SHA256: 119598c967ac1a488907143dab48a31137570916953ffb48c384f7e7119a9264 +SHA512: a2e13eee67a2bba9f8a9c45331f95f9b4d5ad6ba4d38eb2c5d8e46cd174dd7254f7594f96b4414d6920f1f9028bb5dbe011b794bd3ffd6cd5f1897937999955c +Description: Intel® oneAPI Deep Neural Network Library Development Package + + +Package: intel-oneapi-dnnl-devel +Architecture: amd64 +Version: 2021.4.0-467 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 5546 +Depends: intel-oneapi-dnnl (= 2021.4.0-467), intel-oneapi-tbb-devel-2021.4.0, intel-oneapi-common-vars (>= 2021.4.0-327), intel-oneapi-common-licensing-2021.4.0 +Filename: pool/main/intel-oneapi-dnnl-devel-2021.4.0-467_amd64.deb +Size: 147192 +MD5sum: 60971453dffac9f0d71a3ff5ad4f52e3 +SHA1: 7553cd5ecea1275241d690140c983f3a1e0a7081 +SHA256: 151e77c465e90d7af5cfbe1d331a7ab29844c0a0db6229489d81c56dc9696b56 +SHA512: b57e85a2253e430eb9856cfe61f08c924d8c6625e64bce51c160b0f8fa04b59ced45f545983adf26f5dea174f0710995848da6c76c72814f832536660a53cea8 +Description: Intel® oneAPI Deep Neural Network Library Development Package + + +Package: intel-oneapi-dnnl-devel +Architecture: amd64 +Version: 2022.0.1-26 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 5399 +Depends: intel-oneapi-dnnl (= 2022.0.1-26), intel-oneapi-tbb-devel-2021.5.0, intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-dnnl-devel-2022.0.1-26_amd64.deb +Size: 143780 +MD5sum: d7f620b52811e8ca70d6d7672e3012d4 +SHA1: 3022faf80ddd4936589dc948c23f065044819bd5 +SHA256: 9c4bb0f05d6e5113632634380fcca8bbcf565701072eda45f606c256e7b0b8b5 +SHA512: 6580baff6506b34e8bef6de723950854ba3df5a8989718af37d38fc1c09787aadef9839886333785592a942ebe275834a3ccc96cef119655d05f02491509e887 +Description: Intel® oneAPI Deep Neural Network Library Development Package + + +Package: intel-oneapi-dnnl-devel +Architecture: amd64 +Version: 2022.0.2-43 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 5399 +Depends: intel-oneapi-dnnl (= 2022.0.2-43), intel-oneapi-tbb-devel-2021.5.1, intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-dnnl-devel-2022.0.2-43_amd64.deb +Size: 143716 +MD5sum: 56b72ec9edc395558563dac98325a7e8 +SHA1: 22433b4eb9965e93e5e6a337e74318835f068684 +SHA256: 1b8360e0e2cc8807634c27fcb2c53fa243feec7e97029037fbc0f5c65ac76932 +SHA512: 4ab8dbe5d569b9a46186b6125b85e2b8d06ec98705726235f2e9f5542a05f0e152bd5010212d6b6b18bed215d9bf919c97506ec01537096c2d6254a5b95ea684 +Description: Intel® oneAPI Deep Neural Network Library Development Package + + +Package: intel-oneapi-dnnl-devel +Architecture: amd64 +Version: 2022.1.0-132 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 5826 +Depends: intel-oneapi-dnnl (= 2022.1.0-132), intel-oneapi-tbb-devel-2021.6.0, intel-oneapi-common-vars (>= 2022.1.0-161), intel-oneapi-common-licensing-2022.1.0 +Filename: pool/main/intel-oneapi-dnnl-devel-2022.1.0-132_amd64.deb +Size: 205936 +MD5sum: 7109a3107c9d5364185ce13f67f45666 +SHA1: 53772779ca756f875ff537ba1f5bc52bc9bc9090 +SHA256: 0f9cb9f28f60b05e9a26cf9769be8781407c390c8aa56a63378c027449a2cf56 +SHA512: 857886ad88661839c25e2b3cedbc85970f1b4b7742404b02447eb53a6f8e96a92b956920c2ffee9716ebfa5159c0ee0e22897cad4f2d622e9edfcc73009c2493 +Description: Intel® oneAPI Deep Neural Network Library Development Package + + +Package: intel-oneapi-dnnl-devel +Architecture: amd64 +Version: 2022.2.0-8750 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 5928 +Depends: intel-oneapi-dnnl (= 2022.2.0-8750), intel-oneapi-tbb-devel-2021.7.0, intel-oneapi-common-vars (>= 2022.2.0-8694), intel-oneapi-common-licensing-2022.2.0 +Filename: pool/main/intel-oneapi-dnnl-devel-2022.2.0-8750_amd64.deb +Size: 205020 +MD5sum: b1125cbdce04a46c84cc5c07f05ca58d +SHA1: c11217957d7704f8fb529a75316b578b18741727 +SHA256: d497469ce5b05d17a00d0dba2c76376c4a56307c63dfb2d6ac48b60a9505d92c +SHA512: b1e4b63091d166d5839e192827ec5e16c38083ce4624cc581d9089df841a3d9036a66f7ba5f5af03fcbf9b0733f707ef04a87951f2bdb0c69d5955b0ab772505 +Description: Intel® oneAPI Deep Neural Network Library Development Package + + +Package: intel-oneapi-dnnl-devel +Architecture: amd64 +Version: 2022.2.1-16994 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 5928 +Depends: intel-oneapi-dnnl (= 2022.2.1-16994), intel-oneapi-tbb-devel-2021.7.1, intel-oneapi-common-vars (>= 2022.2.1-14969), intel-oneapi-common-licensing-2022.2.1 +Filename: pool/main/intel-oneapi-dnnl-devel-2022.2.1-16994_amd64.deb +Size: 205772 +MD5sum: 7f57388f2cacd0a1de9294082a36aed3 +SHA1: 0a1270ebf3d6f3a785c67ae948cba5ab28caf806 +SHA256: cd8b0a2cb7282f7af9e62bb58caf91b8603e4169ee01533a289069498f815d3c +SHA512: 83095f440f69ecaed89b49f49655b6947f6b331471c3bea14edeada510e2cf8fb32c917b5b0cb47d9b54e6a77cc73a88ac0735e927bc6cd799b347cc4d82bc7f +Description: Intel® oneAPI Deep Neural Network Library Development Package + + +Package: intel-oneapi-dnnl-devel +Architecture: amd64 +Version: 2023.0.0-25399 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 5690 +Depends: intel-oneapi-dnnl (= 2023.0.0-25399), intel-oneapi-tbb-devel-2021.8.0, intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing-2023.0.0 +Filename: pool/main/intel-oneapi-dnnl-devel-2023.0.0-25399_amd64.deb +Size: 203728 +MD5sum: 0ba7ac1681e1207bb501c1214a8804d1 +SHA1: a0bf7c1fe8f6e90be176a1afc80beca3895f081e +SHA256: 6ab85bea0c202b2a31972ebf4eeda89d72403cac293f06617c397b9b7d123979 +SHA512: bbac4da7dd5c790c22ebb577e870c71b9630d087b55119e8a87962d58bf0f8ecd477565e7c9bdbe8f2eea44f3b9b7633d00199e4b5a2dbdcc1ae0149b1c4615e +Description: Intel® oneAPI Deep Neural Network Library Development Package + + +Package: intel-oneapi-dnnl-devel +Architecture: amd64 +Version: 2023.1.0-46343 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 6171 +Depends: intel-oneapi-dnnl (= 2023.1.0-46343), intel-oneapi-tbb-devel-2021.9.0, intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing-2023.1.0 +Filename: pool/main/intel-oneapi-dnnl-devel-2023.1.0-46343_amd64.deb +Size: 220684 +MD5sum: f75fcd445edb4290c27f383c7ddb147c +SHA1: 03b809c64a4383760ee19029a282bedc7db251da +SHA256: 5a014e468825ad12b674b88a8b549e6a607bf8a8caf2e100e525e41ac9302db6 +SHA512: be3ca34f8b361f1b9b176dc68d5db90cd2a3b46e30f4862eeaa4f1d85f87af7effb591ec89a3064154b73d8713034e7ec37e2f7d567741558b0434eff462770f +Description: Intel® oneAPI Deep Neural Network Library Development Package + + +Package: intel-oneapi-dpcpp-cpp-2021.1.1 +Architecture: amd64 +Version: 2021.1.1-189 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1688625 +Depends: intel-oneapi-compiler-dpcpp-cpp-common-2021.1.1, intel-oneapi-compiler-dpcpp-cpp-runtime-2021.1.1, intel-oneapi-compiler-shared-2021.1.1, intel-oneapi-tbb-devel, intel-oneapi-dev-utilities,intel-oneapi-common-vars,intel-oneapi-common-licensing +Filename: pool/main/intel-oneapi-dpcpp-cpp-2021.1.1-2021.1.1-189_amd64.deb +Size: 422830830 +MD5sum: feb27b3df9d438c136f55ab551b7742e +SHA1: 6dd257b1f9c58fac4cc14ca8037a2af22262bf37 +SHA256: 0d8cba5f8b3095a004af5d5f93c9a44c7b0299f637421644d99c45c49641e98d +SHA512: 5e6ecd7fdcd019524cf3755dec1b50a4bd08b9c06e95d080cdb7e663c4a013eded2ae779fc266466884a791ef8a888a34fb4592144872ff11f638307f60343ad +Description: Intel® oneAPI DPC++/C++ Compiler 2021.1.1 for Linux* for Intel(R) 64 + + +Package: intel-oneapi-dpcpp-cpp-2021.1.2 +Architecture: amd64 +Version: 2021.1.2-266 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1688625 +Depends: intel-oneapi-compiler-dpcpp-cpp-common-2021.1.2, intel-oneapi-compiler-dpcpp-cpp-runtime-2021.1.2, intel-oneapi-compiler-shared-2021.1.2, intel-oneapi-tbb-devel, intel-oneapi-dev-utilities,intel-oneapi-common-vars,intel-oneapi-common-licensing +Filename: pool/main/intel-oneapi-dpcpp-cpp-2021.1.2-2021.1.2-266_amd64.deb +Size: 422842538 +MD5sum: bbf3ad0e8d54a5b30afdecbfc3ea5c79 +SHA1: 8beb81678c3301e5c6cfc45ce53ae58980e73d9f +SHA256: 6b2ab1f5f840b1e6e3391d8d25cfb1ea9abe78f0c9cb5e85ad112f11b63634ad +SHA512: c2ee3f57229fb886e0499faec93223239c50002dd9f195fd492e209358999a9c353275499f254bc094692685732a0ae301f44d78c3a273cdf600cee5e4bab33b +Description: Intel® oneAPI DPC++/C++ Compiler 2021.1.2 for Linux* for Intel(R) 64 + + +Package: intel-oneapi-dpcpp-cpp-2021.2.0 +Architecture: amd64 +Version: 2021.2.0-610 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1715546 +Depends: intel-oneapi-compiler-dpcpp-cpp-common-2021.2.0, intel-oneapi-compiler-dpcpp-cpp-runtime-2021.2.0, intel-oneapi-compiler-shared-2021.2.0, intel-oneapi-tbb-devel-2021.2.0, intel-oneapi-dev-utilities-2021.2.0, intel-oneapi-common-vars (>= 2021.2.0-195), intel-oneapi-common-licensing-2021.2.0 +Filename: pool/main/intel-oneapi-dpcpp-cpp-2021.2.0-2021.2.0-610_amd64.deb +Size: 421929184 +MD5sum: 9bbfde9a5e6d18038fa518a5289e1e09 +SHA1: c7769cc98cccdc04602ee0c9b920b41e4f8e9063 +SHA256: 730273ae28c0623fb3720c27c6681e90191bc51d8b3f6ab6713ee5afe6779a5f +SHA512: 0c39328241fb0281afc92eea2e305ae2c9ddc63cd342a21dc06084d7a1a0db039d528735ffb710e119c190b0ebdc94df73ba274a4701ceab362036a769e1f535 +Description: Intel® oneAPI DPC++/C++ Compiler 2021.2.0 for Linux* for Intel(R) 64 + + +Package: intel-oneapi-dpcpp-cpp-2021.3.0 +Architecture: amd64 +Version: 2021.3.0-3350 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1274620 +Depends: intel-oneapi-compiler-dpcpp-cpp-common-2021.3.0, intel-oneapi-compiler-dpcpp-cpp-runtime-2021.3.0, intel-oneapi-compiler-shared-2021.3.0, intel-oneapi-tbb-devel-2021.3.0, intel-oneapi-dev-utilities-2021.3.0, intel-oneapi-common-vars (>= 2021.3.0-261), intel-oneapi-common-licensing-2021.3.0 +Filename: pool/main/intel-oneapi-dpcpp-cpp-2021.3.0-2021.3.0-3350_amd64.deb +Size: 398740700 +MD5sum: b04792ea19679887f8c5338d05060957 +SHA1: b13e43e1fb07a0fa31b108ecbe51e53be303687c +SHA256: d2aaac60e8c3d6ca126beea6c71e9fe190a7027a6c642c0877fbba1ad007b246 +SHA512: 92435190c7629a9eaaa2e7f1748c34e5bde9ac034c45a2088f187be79630e3a183884fa539b0c11d2fa36edde24f9dd4e4c63001aeb78177edd9df5496070757 +Description: Intel® oneAPI DPC++/C++ Compiler 2021.3.0 for Linux* for Intel(R) 64 + + +Package: intel-oneapi-dpcpp-cpp-2021.4.0 +Architecture: amd64 +Version: 2021.4.0-3561 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1348536 +Depends: intel-oneapi-compiler-dpcpp-cpp-common-2021.4.0, intel-oneapi-compiler-dpcpp-cpp-runtime-2021.4.0, intel-oneapi-compiler-shared-2021.4.0, intel-oneapi-tbb-devel-2021.4.0, intel-oneapi-dev-utilities-2021.4.0, intel-oneapi-common-vars (>= 2021.4.0-327), intel-oneapi-common-licensing-2021.4.0 +Filename: pool/main/intel-oneapi-dpcpp-cpp-2021.4.0-2021.4.0-3561_amd64.deb +Size: 408028188 +MD5sum: f16efaf0ac9187e690494529f1b4797e +SHA1: 6bf19193a144b6cba83194425acd1d61b0790c0b +SHA256: 128e24bce87e14334bcc56cb7978d62a0076ba9a7733e299bd6432560bee4b61 +SHA512: 72fb4971d02dde0f38a08bee1eeb6dbe90773d72bbcec034de322da66da350b86c25524e8cda448f8890b83024b3273ad191edaef113d0448400ba9191efd809 +Description: Intel® oneAPI DPC++/C++ Compiler 2021.4.0 for Linux* for Intel(R) 64 + + +Package: intel-oneapi-dpcpp-cpp-2022.0.1 +Architecture: amd64 +Version: 2022.0.1-3633 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1665690 +Depends: intel-oneapi-compiler-dpcpp-cpp-common-2022.0.1, intel-oneapi-compiler-dpcpp-cpp-runtime-2022.0.1, intel-oneapi-compiler-shared-2022.0.1, intel-oneapi-tbb-devel-2021.5.0, intel-oneapi-dev-utilities-2021.5.1, intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-dpcpp-cpp-2022.0.1-2022.0.1-3633_amd64.deb +Size: 470267586 +MD5sum: 038d6852b840b22faaf29b48e2e77f70 +SHA1: 97f82330a9192f9c354dc3558d8bb5c197d479ab +SHA256: f1ef5a4728815e38a7b993dd4c5d5fd67a68321575bafb78928d6436ab30bba9 +SHA512: 34de3b60d9fd069afd0f3f5d705a8a608e38586aa891702b2d0d769531d2028a213277a0785bb875013c09d09ba34077014a495376fc5e69fe632b2635d4929f +Description: Intel® oneAPI DPC++/C++ Compiler 2022.0.1 for Linux* for Intel(R) 64 + + +Package: intel-oneapi-dpcpp-cpp-2022.0.2 +Architecture: amd64 +Version: 2022.0.2-3658 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1665690 +Depends: intel-oneapi-compiler-dpcpp-cpp-common-2022.0.2, intel-oneapi-compiler-dpcpp-cpp-runtime-2022.0.2, intel-oneapi-compiler-shared-2022.0.2, intel-oneapi-tbb-devel-2021.5.1, intel-oneapi-dev-utilities-2021.5.2, intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-dpcpp-cpp-2022.0.2-2022.0.2-3658_amd64.deb +Size: 470302858 +MD5sum: eddfbe00669a8deb3d3aa1aa9757a71d +SHA1: 4008bc62275955e2bf890ffdb98f21a8d091b60d +SHA256: c9274339477eb7de0379c360245f9b9174edd0c1c3b25a72e7ee6d970debba57 +SHA512: 513a3d089ee677942b53a0711a02f10a135f483e7c496b30eca406e13bc3977de6dd70d72d28161f1acd10fda445757c16cb48b099d3ad0c4e43535139600d35 +Description: Intel® oneAPI DPC++/C++ Compiler 2022.0.2 for Linux* for Intel(R) 64 + + +Package: intel-oneapi-dpcpp-cpp-2022.1.0 +Architecture: amd64 +Version: 2022.1.0-3768 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1776108 +Depends: intel-oneapi-compiler-dpcpp-cpp-common-2022.1.0, intel-oneapi-compiler-dpcpp-cpp-runtime-2022.1.0, intel-oneapi-compiler-shared-2022.1.0, intel-oneapi-tbb-devel-2021.6.0, intel-oneapi-dev-utilities-2021.6.0, intel-oneapi-common-vars (>= 2022.1.0-161), intel-oneapi-common-licensing-2022.1.0 +Filename: pool/main/intel-oneapi-dpcpp-cpp-2022.1.0-2022.1.0-3768_amd64.deb +Size: 501633166 +MD5sum: f3d7e81f221d26824107ba79e8933570 +SHA1: 743cdb9bd92e3a0b79ea8cf50ec41ef5463f32e9 +SHA256: c525c416c61cac9aa4e22fec78be95b88d33bca13360d0444c22da52eb8dd318 +SHA512: 6dc152e11a791ef7f05a31b381336a8fc5a7584be0501d0c46440923f4c187c7ad4e03384f935ac7e4dd68f545299beb64acb0579883696e975e0dec80eef58b +Description: Intel® oneAPI DPC++/C++ Compiler 2022.1.0 for Linux* for Intel(R) 64 + + +Package: intel-oneapi-dpcpp-cpp-2022.2.0 +Architecture: amd64 +Version: 2022.2.0-8734 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1840936 +Depends: intel-oneapi-compiler-dpcpp-cpp-common-2022.2.0, intel-oneapi-compiler-dpcpp-cpp-runtime-2022.2.0, intel-oneapi-compiler-shared-2022.2.0, intel-oneapi-tbb-devel-2021.7.0, intel-oneapi-dev-utilities-2021.7.0, intel-oneapi-common-vars (>= 2022.2.0-8694), intel-oneapi-common-licensing-2022.2.0 +Filename: pool/main/intel-oneapi-dpcpp-cpp-2022.2.0-2022.2.0-8734_amd64.deb +Size: 429581826 +MD5sum: 7b5903b396aa3627c9b6f770f2d6895d +SHA1: 68db12add08c2d86b97bae15ab0b255529a67df5 +SHA256: 4fed7e33fe32f93d8d0f27e64d6fe0f0af141de4747067dc5a3e665a01babe33 +SHA512: 170d39f7cc031ab58f9b2398a81693eef8b035b4d3d7058a7d06429c443b5a37d92c1685a1fcb60fe9e2e6c2b7c31a4b4c47ab1530a040c2782f8cedb485c9af +Description: Intel® oneAPI DPC++/C++ Compiler 2022.2.0 for Linux* for Intel(R) 64 + + +Package: intel-oneapi-dpcpp-cpp-2022.2.1 +Architecture: amd64 +Version: 2022.2.1-16953 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1867064 +Depends: intel-oneapi-compiler-dpcpp-cpp-common-2022.2.1, intel-oneapi-compiler-dpcpp-cpp-runtime-2022.2.1, intel-oneapi-compiler-shared-2022.2.1, intel-oneapi-tbb-devel-2021.7.1, intel-oneapi-dev-utilities-2021.7.1, intel-oneapi-common-vars (>= 2022.2.1-14969), intel-oneapi-common-licensing-2022.2.1 +Filename: pool/main/intel-oneapi-dpcpp-cpp-2022.2.1-2022.2.1-16953_amd64.deb +Size: 435039734 +MD5sum: 181e54335a6e3844b1ca6b54cd6a6ddc +SHA1: 66927bd5cdf4a01ec3c5a142a8c610c588b68272 +SHA256: 7346f7230e437992932841c9f2d01ce4e3b5a9c5c31a56b658330eee6ce4dba7 +SHA512: 08fd02e48b749b0f6a8a2a795284a8c6370fdfcf19e5e7325e9072e501fb669d7cba58f74250f7d22f57559a64da7a278ad3e581245a073ed31d6bad61f6ed4d +Description: Intel® oneAPI DPC++/C++ Compiler 2022.2.1 for Linux* for Intel(R) 64 + + +Package: intel-oneapi-dpcpp-cpp-2023.0.0 +Architecture: amd64 +Version: 2023.0.0-25370 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 2335882 +Depends: intel-oneapi-compiler-dpcpp-cpp-common-2023.0.0, intel-oneapi-compiler-dpcpp-cpp-runtime-2023.0.0, intel-oneapi-compiler-shared-2023.0.0, intel-oneapi-tbb-devel-2021.8.0, intel-oneapi-dev-utilities-2021.8.0, intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing-2023.0.0 +Filename: pool/main/intel-oneapi-dpcpp-cpp-2023.0.0-2023.0.0-25370_amd64.deb +Size: 487616866 +MD5sum: 52da43994a8f102439891a428583843a +SHA1: 6bae99103b53f4974e86fd7dc60d12284e5d0cf2 +SHA256: 2aa3f782f8c5ea1920d7fbabd7758b95b110764c53418f73d3c156164d84f44a +SHA512: 85d7439118981d271667e669972377869e43845c873802a8ad10d4459091d7a182b8595a111a75b473533139dc982db8fa7fa7178442127fcb6784839981609b +Description: Intel® oneAPI DPC++/C++ Compiler 2023.0.0 for Linux* for Intel(R) 64 + + +Package: intel-oneapi-dpcpp-cpp-2023.1.0 +Architecture: amd64 +Version: 2023.1.0-46305 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 2526593 +Depends: intel-oneapi-compiler-dpcpp-cpp-common-2023.1.0, intel-oneapi-compiler-dpcpp-cpp-runtime-2023.1.0, intel-oneapi-compiler-shared-2023.1.0, intel-oneapi-tbb-devel-2021.9.0, intel-oneapi-dev-utilities-2021.9.0, g++, intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing-2023.1.0 +Filename: pool/main/intel-oneapi-dpcpp-cpp-2023.1.0-2023.1.0-46305_amd64.deb +Size: 525371214 +MD5sum: 4aa5ecbfb8836e54e43171e5a49f1cfa +SHA1: e9e49c6b1c57446a2ef5e81eff0f05a50b6ff3da +SHA256: 5acd0dc9fc540355bc19317be5d79686f2acb90ac28486dd0717c423e4c94326 +SHA512: 83fc6e0ec15e716e4b51bb3056aa434a59c6ca87035401a14465aac32971f51bc9c6595682e65fd1af8dcd18eaa5ae76d04d8e92b8a24cabf0af330c29e5d509 +Description: Intel® oneAPI DPC++/C++ Compiler 2023.1.0 for Linux* for Intel(R) 64 + + +Package: intel-oneapi-dpcpp-ct-2021.1.1 +Architecture: amd64 +Version: 2021.1.1-59 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 48279 +Depends: intel-oneapi-dpcpp-ct-eclipse-cfg (>= 2021.1.1-59),intel-oneapi-common-vars,intel-oneapi-common-licensing +Filename: pool/main/intel-oneapi-dpcpp-ct-2021.1.1-2021.1.1-59_amd64.deb +Size: 9470426 +MD5sum: e6af8ab0bf530779d518c5bb02d7f2d1 +SHA1: f96ba664c207af54c6114ea77a91849d2b7a918a +SHA256: d0fd85a5ce6066395cfad99fe5e00903896426db527394982b6382e70d314e77 +SHA512: e6a1ff8035189ff7f8c98f93be1eb9ddc6693a95985b569f348d2f9fd96ff5345d237118133a011947bfdaf4c634ce724031540560d921661512321a3ead7a31 +Description: Intel® DPC++ Compatibility Tool + + +Package: intel-oneapi-dpcpp-ct +Architecture: amd64 +Version: 2021.1.1-59 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-dpcpp-ct-2021.1.1 +Filename: pool/main/intel-oneapi-dpcpp-ct-2021.1.1-59_amd64.deb +Size: 2308 +MD5sum: 19dbd47e0d8ef665d84d95598eb96e0a +SHA1: 4bbdd186ea98991ee4420ef8923e07dc4d43ee75 +SHA256: 1ea4a8a6bf3de07623c6f431ce6f7bf86a70af9e5a64d048f6c86b4ad6de8b72 +SHA512: d7bdabf2f379ac4ec5617422f013bbcc8b526fea13a7ecb16f5f8935c068a43795eacaeb5f2d8f76be84ad51bfd7572af639241f25468b438eb6f0ff381ea85a +Description: Intel® DPC++ Compatibility Tool + + +Package: intel-oneapi-dpcpp-ct-2021.2.0 +Architecture: amd64 +Version: 2021.2.0-222 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 50202 +Depends: intel-oneapi-dpcpp-ct-eclipse-cfg (>= 2021.2.0-222), intel-oneapi-common-vars (>= 2021.2.0-195), intel-oneapi-common-licensing-2021.2.0 +Filename: pool/main/intel-oneapi-dpcpp-ct-2021.2.0-2021.2.0-222_amd64.deb +Size: 9814458 +MD5sum: 3606add3c64a06b7cb3d11717d87422d +SHA1: 5fcb1f28f0dd5f615d66797c60086c4117a72e53 +SHA256: edf7174964e76c2311823242e1abf468df022f3a5bcb9457ba793e65f7602250 +SHA512: 76e85e26fe7392c82bee57f180ea2eaba6cd038dd8a60695d9de27402a496f449fb631575812256539262984fef8635426ec5be3d3ddec14f31d6ef5c7f3aaad +Description: Intel® DPC++ Compatibility Tool + + +Package: intel-oneapi-dpcpp-ct +Architecture: amd64 +Version: 2021.2.0-222 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-dpcpp-ct-2021.2.0 +Filename: pool/main/intel-oneapi-dpcpp-ct-2021.2.0-222_amd64.deb +Size: 2306 +MD5sum: 97251566a2ddc8719d92052b597adb08 +SHA1: 1f2b851ec9d3a61134a7b6580a5c061b6570ba35 +SHA256: 8d749b3725fe05059e9a10b65d07a9378896f27bc2ee917a6618433f91acdbfb +SHA512: 568a620d1dc136d9e3d0b76e5a61b61cf5891a7548abf00a754e064df131af354d458c4f1237ca5f0f5e568832f04957d65b7ff3a403fceecba50e346068145e +Description: Intel® DPC++ Compatibility Tool + + +Package: intel-oneapi-dpcpp-ct-2021.3.0 +Architecture: amd64 +Version: 2021.3.0-308 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 61915 +Depends: intel-oneapi-dpcpp-ct-eclipse-cfg (>= 2021.3.0-308), intel-oneapi-common-vars (>= 2021.3.0-261), intel-oneapi-common-licensing-2021.3.0 +Filename: pool/main/intel-oneapi-dpcpp-ct-2021.3.0-2021.3.0-308_amd64.deb +Size: 11519638 +MD5sum: c871f674cf396b505c6bfcd1d47aa0cd +SHA1: 36984e5ac0f8557eb57717669c15f58725ccf529 +SHA256: fae839f43a428aa1d09dec070ddc451b77cecd5ce5e3854f94371b1479867fb1 +SHA512: 28007cc575c5254cd72d59b84aa028e0656ee4af8358b02f06457f0f3affcbf8fe812c3e758108230fdaada1305481a959a4dc68a4f96d8becd8a75470f37663 +Description: Intel® DPC++ Compatibility Tool + + +Package: intel-oneapi-dpcpp-ct +Architecture: amd64 +Version: 2021.3.0-308 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-dpcpp-ct-2021.3.0 +Filename: pool/main/intel-oneapi-dpcpp-ct-2021.3.0-308_amd64.deb +Size: 2306 +MD5sum: 08e9434bd3c27cc1a0103334212f2cea +SHA1: a56de18ab08cd0123413aca32cea10d1cb647d01 +SHA256: 6c4547359734d0bb3f4799ba970e0c26495e704ba72c036fb1f5b2d894cb0fa1 +SHA512: 1716260bfb2f0a54f3e69a50f24436842c0cbe6610e31969a887d8d4fc2ec0a10d3f71aaf2a49a9f6395e4e1875f67dc6d6d9fb55f9feba9b1d1d57f96428355 +Description: Intel® DPC++ Compatibility Tool + + +Package: intel-oneapi-dpcpp-ct-2021.4.0 +Architecture: amd64 +Version: 2021.4.0-402 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 63237 +Depends: intel-oneapi-dpcpp-ct-eclipse-cfg (>= 2021.4.0-402), intel-oneapi-common-vars (>= 2021.4.0-327), intel-oneapi-common-licensing-2021.4.0 +Filename: pool/main/intel-oneapi-dpcpp-ct-2021.4.0-2021.4.0-402_amd64.deb +Size: 11729294 +MD5sum: f1cefefa5ab53490f09c7ed855874487 +SHA1: deb731a50412d192ebb8b9a343a4f5d651295518 +SHA256: 4133bb6255611b01a68250362602ee1c3bb24d9abc8ee0717bb05380bc9c7a18 +SHA512: 5e19ef695dcba03aa2b6fe8e9784f7af0250c02429bca8560106bf7cef72b97768fedcc184c047d875525e32d170388559fda9f92b71101b45ba885e6bf8cd96 +Description: Intel® DPC++ Compatibility Tool + + +Package: intel-oneapi-dpcpp-ct +Architecture: amd64 +Version: 2021.4.0-402 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-dpcpp-ct-2021.4.0 +Filename: pool/main/intel-oneapi-dpcpp-ct-2021.4.0-402_amd64.deb +Size: 2308 +MD5sum: 3718fafa55a9bfd0dc02167c786933b8 +SHA1: dc2493701852e9c62859a091ca23357945eef5ed +SHA256: b24481f9eb9ab1bd69bafda521addad31d96436517d1f19c25a871d908f91af6 +SHA512: ba5d6d42fbab90b228d57c1ca081a69b120ac28d0d99beb39a92de4b89bfcfc30ec32e66e1a525a4299d4cbe3be53a10f10fd4207b78d57390640582693e26f7 +Description: Intel® DPC++ Compatibility Tool + + +Package: intel-oneapi-dpcpp-ct-2022.0.0 +Architecture: amd64 +Version: 2022.0.0-96 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 76622 +Depends: intel-oneapi-dpcpp-ct-eclipse-cfg (>= 2022.0.0-96), intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-dpcpp-ct-2022.0.0-2022.0.0-96_amd64.deb +Size: 12504108 +MD5sum: b22b21847025b2ee87b1b8d58c676774 +SHA1: 3dd65bcd2f8e784e2d6ecda49dd03841e90669f4 +SHA256: 3574b3fca83124ce57a184f27699f03744ecde619d3ee91c29b6411a0a3b0e14 +SHA512: 43a069f1cf7eb44a913df6080a7ac8f892d5f9caf3e5d20a13a203beb8a6f3abc99d86d8141f1f75db1b91f459f01dfb1838b3330e7a32fed753a58f6d15c60b +Description: Intel® DPC++ Compatibility Tool + + +Package: intel-oneapi-dpcpp-ct +Architecture: amd64 +Version: 2022.0.0-96 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-dpcpp-ct-2022.0.0 +Filename: pool/main/intel-oneapi-dpcpp-ct-2022.0.0-96_amd64.deb +Size: 2204 +MD5sum: d9f8fec3b6a74e9be527e1a4e15eaa5b +SHA1: 9e0d3f7822f1c8c6f456580b12fa3d04e24a9106 +SHA256: ebb630c5d02af7e31d73b911f877bcc89c83b7f6b18d855f4261ca58489559b7 +SHA512: dde85fe0496c53bce99dcf9f40ff71b7843bc7d47b0e0744af981209243597b78a4ae88c31f5d80aa9c8b1d8b178ac82c2a3da92f746cb0f74774046deb33815 +Description: Intel® DPC++ Compatibility Tool + + +Package: intel-oneapi-dpcpp-ct +Architecture: amd64 +Version: 2022.1.0-172 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-dpcpp-ct-2022.1.0 +Filename: pool/main/intel-oneapi-dpcpp-ct-2022.1.0-172_amd64.deb +Size: 2272 +MD5sum: 2764cf33924a6b70511383689c6e6639 +SHA1: 564489f15fdc4b869a3c68aefec8fa219b34ecb3 +SHA256: 9a9f4b9ae72d1cf23a9b12452012c4f52923df63c698eb78295089c0ef570dbc +SHA512: 75dc7c8e63d3493a111d9d01f6c7dbe0f463f7228e69efbf3fbc800894eeac2834c6a4b4f84b2282e8da4959879e5f76c7da9fd69f82cc8f9031c0aad64602e0 +Description: Intel® DPC++ Compatibility Tool + + +Package: intel-oneapi-dpcpp-ct-2022.1.0 +Architecture: amd64 +Version: 2022.1.0-172 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 78138 +Depends: intel-oneapi-dpcpp-ct-eclipse-cfg (>= 2022.1.0-172), intel-oneapi-common-vars (>= 2022.1.0-161), intel-oneapi-common-licensing-2022.1.0 +Filename: pool/main/intel-oneapi-dpcpp-ct-2022.1.0-2022.1.0-172_amd64.deb +Size: 12695398 +MD5sum: e52e03379ac0c49ff7270532f14781a4 +SHA1: 838233c6fb35a7116644255176bd16e5ea42708e +SHA256: df6998ea28a885dceb4445b8f331d08c0fd68c9e5d85b98dba83278bde42bdb9 +SHA512: 3d086f404f10361b182601ff5eafcdf5fd8887c6ff5f5f41e48f7ece3a107479b4dfc4d7f4a72a15b9db81b9e6bbeb5d25b5c624080aec47fb8c31f821e6593c +Description: Intel® DPC++ Compatibility Tool + + +Package: intel-oneapi-dpcpp-ct-2022.2.0 +Architecture: amd64 +Version: 2022.2.0-8701 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 119496 +Depends: intel-oneapi-dpcpp-ct-eclipse-cfg (>= 2022.2.0-8701), intel-oneapi-common-vars (>= 2022.2.0-8694), intel-oneapi-common-licensing-2022.2.0 +Filename: pool/main/intel-oneapi-dpcpp-ct-2022.2.0-2022.2.0-8701_amd64.deb +Size: 24497026 +MD5sum: 4ca0fa930833794c68d78f621de545a4 +SHA1: 503b4c3b859cb75d35ab513c08753444591a6ea4 +SHA256: 399b7ae89b49bc6e937a5e2b64b0cf7b24d945c5b75fdf3eb5eda02d0f29e161 +SHA512: c6cd6195158745729a5d8e3d980a0b4cfc7f0577f23bb6d6339f7339ead1fde295e5f14c4b53a403793157748bb4145fb68e13ee19e3a296049683fd025c3c71 +Description: Intel® DPC++ Compatibility Tool + + +Package: intel-oneapi-dpcpp-ct +Architecture: amd64 +Version: 2022.2.0-8701 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-dpcpp-ct-2022.2.0 +Filename: pool/main/intel-oneapi-dpcpp-ct-2022.2.0-8701_amd64.deb +Size: 2268 +MD5sum: 129f275c3dfc427c806773bb99bb2350 +SHA1: cfa8099f07f6ab346a5511cdf0124c535a8fba2e +SHA256: e17d7259606af8de01cfc688f3cc91ae8cb26b1260103648260b0a5202bc3bc2 +SHA512: af60aa5fdb50004f5102b29ea2b8322a875b8b6d0a60edc542c2f40a34ea7f3122fa6dafd09f18f763affeb7671cc18812c8872e5acac75d35aca7e2b8dbf58f +Description: Intel® DPC++ Compatibility Tool + + +Package: intel-oneapi-dpcpp-ct +Architecture: amd64 +Version: 2022.2.1-14994 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-dpcpp-ct-2022.2.1 +Filename: pool/main/intel-oneapi-dpcpp-ct-2022.2.1-14994_amd64.deb +Size: 2272 +MD5sum: 11a21853be789bf1c764e56d9c282e06 +SHA1: 4274d8085a81c10a448a0747dc77d5c27301898f +SHA256: 3f4af73f0c7b3296c9212d3bcb6c2dc10adbb1df86a1d3cfc76341da72074e4a +SHA512: b08ae5af7a10bf9e6f1a61b8763c332bdff356c8f9e0da6b27a37ba766b7efc017f65e6be7ac64bd04ef8bb8f8e297f5d8d97d55c7339972bb73726f89a4cadf +Description: Intel® DPC++ Compatibility Tool + + +Package: intel-oneapi-dpcpp-ct-2022.2.1 +Architecture: amd64 +Version: 2022.2.1-14994 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 63171 +Depends: intel-oneapi-dpcpp-ct-eclipse-cfg (>= 2022.2.1-14994), intel-oneapi-common-vars (>= 2022.2.1-14969), intel-oneapi-common-licensing-2022.2.1 +Filename: pool/main/intel-oneapi-dpcpp-ct-2022.2.1-2022.2.1-14994_amd64.deb +Size: 12652134 +MD5sum: d86db5f08ffa89ed9f8ff0254193c153 +SHA1: d623d0c899f543389d5caae65122e57023a17a04 +SHA256: c6897da336f5ae839ad9656977622d5e7aff4cf7a0fbc89d850b5877d17871ec +SHA512: b58be08ff22bb301bc11b1c43546ce4afaee4f1e029ee99e148224abf039d9df91cab93decbb9053bc74118c95d3cfaafa71f59ccc94445b12e60f6104088f95 +Description: Intel® DPC++ Compatibility Tool + + +Package: intel-oneapi-dpcpp-ct-2023.0.0 +Architecture: amd64 +Version: 2023.0.0-25483 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 148486 +Depends: intel-oneapi-dpcpp-ct-eclipse-cfg (>= 2023.0.0-25483), intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing-2023.0.0 +Filename: pool/main/intel-oneapi-dpcpp-ct-2023.0.0-2023.0.0-25483_amd64.deb +Size: 28470266 +MD5sum: 9a7767805604c59bb62b24dd25252dc7 +SHA1: 0566127d9e846b4ecc9c6774502b80e7a9c2c35f +SHA256: b10d895143588727a1d63541588104a944e78764f23fd21d8254158965924d6e +SHA512: 35307ac5c7b1ed321bd83830367ccb6399b99c2659820c724ed52d2ac4d09786ae03d7491c87f97dfffd4d7c7b769edbe8175a08b1f82d941c8500185176d202 +Description: Intel® DPC++ Compatibility Tool + + +Package: intel-oneapi-dpcpp-ct +Architecture: amd64 +Version: 2023.0.0-25483 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-dpcpp-ct-2023.0.0 +Filename: pool/main/intel-oneapi-dpcpp-ct-2023.0.0-25483_amd64.deb +Size: 2276 +MD5sum: 5204776bf042485ef15eb49e3e0619d4 +SHA1: b926f6f40fde29fb30fd4c03dff4a6e294627375 +SHA256: 146c7172b4070bb4787ad6852d27c1e124372c03388352709b54e4cf33f55f65 +SHA512: ed0cb135843e69d80e4141e46759d2e97ae4e0be5f623c01685d9db91de80b3f673fd0660d9323bf3a0684668ceacadc9dac4ad24c8ba5b372941e06d610c169 +Description: Intel® DPC++ Compatibility Tool + + +Package: intel-oneapi-dpcpp-ct-2023.1.0 +Architecture: amd64 +Version: 2023.1.0-44450 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 168415 +Depends: intel-oneapi-dpcpp-ct-eclipse-cfg (>= 2023.1.0-44450), intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing-2023.1.0 +Filename: pool/main/intel-oneapi-dpcpp-ct-2023.1.0-2023.1.0-44450_amd64.deb +Size: 30577690 +MD5sum: a2078032f30e8efef31560322eaa8faf +SHA1: 160310314316f03b0b61abf44ad7214012ae7394 +SHA256: 062a8186d07999286875f13de68b7516c10ed4466c408b03558b318e2cffa291 +SHA512: 60939c8bd9b6248e245580fc7c06eb998c9544206fa8550f392c9712244900246c12eaa00036c5f194644f2968c6ea38d38cdb67c36e48a564cefd35dd429b05 +Description: Intel® DPC++ Compatibility Tool + + +Package: intel-oneapi-dpcpp-ct +Architecture: amd64 +Version: 2023.1.0-44450 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-dpcpp-ct-2023.1.0 +Filename: pool/main/intel-oneapi-dpcpp-ct-2023.1.0-44450_amd64.deb +Size: 2272 +MD5sum: 235fecc56acfe5d0fcb64068a791777f +SHA1: 1eb236fbc48a760483e9064d2146af746d3f5be7 +SHA256: fd66a3ae7ceb89dbd38d07b9428549f796e5d058275310162fe6da8b49dd06fa +SHA512: 5e1512591b35f1c042b58c6c6ffedaf80a374e8bece0d91505a6c265f6fbd5d5e8a8c4bfff23e911a472f0cbb8b39bef776339c7d101a5bb370f201169171192 +Description: Intel® DPC++ Compatibility Tool + + +Package: intel-oneapi-dpcpp-debugger-10.0.0 +Architecture: amd64 +Version: 10.0.0-2219 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 214773 +Depends: intel-oneapi-compiler-dpcpp-cpp, intel-oneapi-dpcpp-debugger-eclipse-cfg (>= 10.0.0-2219),intel-oneapi-common-vars,intel-oneapi-common-licensing +Filename: pool/main/intel-oneapi-dpcpp-debugger-10.0.0-10.0.0-2219_amd64.deb +Size: 116526438 +MD5sum: 47a7c7d2d15bb775fc0c8917ebf2272d +SHA1: a1e81fe098e8b2d3f89d4e138381205726a6d258 +SHA256: 7b27208a435f6e6f59ddd8afc406b31f7b5cb3d3e2fcd62c59a1c2d4f0d3443d +SHA512: 43c363bf8d11703533220438861fedd656333cb0ca4ba3be03c46186ec8979b97db9764fa772ffb57385895f3c3602273593d6c10cee235e7d0af90864b60a96 +Description: Intel® Distribution for GDB* + + +Package: intel-oneapi-dpcpp-debugger +Architecture: amd64 +Version: 10.0.0-2219 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-dpcpp-debugger-10.0.0 +Filename: pool/main/intel-oneapi-dpcpp-debugger-10.0.0-2219_amd64.deb +Size: 2318 +MD5sum: 6c2bc6a21f688ca1a6b362f4f70f4a22 +SHA1: a18e0f90c9c60e906465d646defef70c6ae57448 +SHA256: 9941efb8f4d1121d7c321b09d5713b45f3bc38db19013b8609289546e12efb91 +SHA512: 38e6027ebe05864afef5b3909ca655f2da272ee918bf0efd777cad37f3a11c0bb7980ba52f17569260861d5e5a09f86a58b50a5e3eae75a304fccbd9828330b7 +Description: Intel® Distribution for GDB* + + +Package: intel-oneapi-dpcpp-debugger-10.1.1 +Architecture: amd64 +Version: 10.1.1-80 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 236410 +Depends: intel-oneapi-dpcpp-debugger-eclipse-cfg (>= 10.1.1-80), intel-oneapi-common-vars (>= 2021.2.0-195), intel-oneapi-common-licensing-2021.2.0 +Filename: pool/main/intel-oneapi-dpcpp-debugger-10.1.1-10.1.1-80_amd64.deb +Size: 123710818 +MD5sum: 6a7a1c6e3e3bfcd12d595d60832a0e50 +SHA1: 0c00001f705a73b0a7f638d9b5c92c0c9c24b4a7 +SHA256: cbd18e772db0c9a781b2f340f1cdc06a29c8cc8499772be99f75fa67eba58bf3 +SHA512: 3719c60368c29a46c7de0a65abb93e311aa0eac3cb1af74e8018ed43446e7c0e9884e7964531b632eb61ff707839fe9187a13163c7b9f3c2313884cd7f4b5140 +Description: Intel® Distribution for GDB* + + +Package: intel-oneapi-dpcpp-debugger +Architecture: amd64 +Version: 10.1.1-80 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-dpcpp-debugger-10.1.1 +Filename: pool/main/intel-oneapi-dpcpp-debugger-10.1.1-80_amd64.deb +Size: 2306 +MD5sum: 258f01726c351002d2c321b9f2598002 +SHA1: 7cacb8dd34831251aa1b06a8e92fdb5fe4c159b5 +SHA256: ce5614aea208aa48626cefecc192a5ff3250197352c80f0a5a31ebc17e747585 +SHA512: f4b9adfd0a0a97ec75c5b99de733c8b445c268a08c97cd64f43b1676a0a13b2e7145e1295d5459424ad96e3594cd6ed586ca07881511b0cb2b10f8fc9c6e1bc8 +Description: Intel® Distribution for GDB* + + +Package: intel-oneapi-dpcpp-debugger-10.1.2 +Architecture: amd64 +Version: 10.1.2-225 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 239206 +Depends: intel-oneapi-dpcpp-debugger-eclipse-cfg (>= 10.1.2-225), intel-oneapi-common-vars (>= 2021.3.0-261), intel-oneapi-common-licensing-2021.3.0 +Filename: pool/main/intel-oneapi-dpcpp-debugger-10.1.2-10.1.2-225_amd64.deb +Size: 125942288 +MD5sum: 49c81449cb924628b76d4bcbb1ee8e75 +SHA1: 160e6ac2f1a69516d19c58a06cd5f096f62df268 +SHA256: 4f84f7a39f72aa1c04b3d932f8d2f33fb0fff83b06ae62ef2f83eb57564aea6b +SHA512: fcc164c20036b10b4f3785f20f9bd7195c4713ab1dab18270ec4f4309a6b242c45d73b167e0544e513dfd5e13c7da1de933479185d0ebdee435f2df388626213 +Description: Intel® Distribution for GDB* + + +Package: intel-oneapi-dpcpp-debugger +Architecture: amd64 +Version: 10.1.2-225 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-dpcpp-debugger-10.1.2 +Filename: pool/main/intel-oneapi-dpcpp-debugger-10.1.2-225_amd64.deb +Size: 2304 +MD5sum: 23acf0620758de718e77796847b705eb +SHA1: 747dc3da1fd77c54a63a8330f4790cfdc3e65a92 +SHA256: 666fdf53a93eca28c23eea8d4759ae48dfff28e049bb0928a3f6004f6ed16726 +SHA512: 1fda5f800652fbe75a71155a6570fffba46330f9e8f79a932fbbe312315ec3a89d0a585224ba72d52304f89883b50a2fb1bcaabe94ed320aee5c2079e17cc2e1 +Description: Intel® Distribution for GDB* + + +Package: intel-oneapi-dpcpp-debugger-10.2.4 +Architecture: amd64 +Version: 10.2.4-56 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 411853 +Depends: intel-oneapi-dpcpp-debugger-eclipse-cfg (>= 10.2.4-56), intel-oneapi-common-vars (>= 2021.4.0-327), intel-oneapi-common-licensing-2021.4.0 +Filename: pool/main/intel-oneapi-dpcpp-debugger-10.2.4-10.2.4-56_amd64.deb +Size: 166207502 +MD5sum: b8256547154863b3c74c4ce3e7b6d13b +SHA1: 2d0f8c7ec1f68d346c5dfe84c4f4d1d56b623fd1 +SHA256: 206caf50338892dbc57cd21d23912575553210ce57691983eff43f6d80b4bace +SHA512: 3fccf3795afbe5e91b45707a0c25097c91c4151fedc225476728fba95dd5d414f209c02971172cebba6258b54255de8bee2e5f44473d543142a847e94ecf7350 +Description: Intel® Distribution for GDB* + + +Package: intel-oneapi-dpcpp-debugger +Architecture: amd64 +Version: 10.2.4-56 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-dpcpp-debugger-10.2.4 +Filename: pool/main/intel-oneapi-dpcpp-debugger-10.2.4-56_amd64.deb +Size: 2308 +MD5sum: ea3fc76b7ae48491ee745c687d80f3d4 +SHA1: 8a5a330bf417019185d73d2dfb55c2873b4cdd24 +SHA256: 60f362374be909a1cb1c4b3dffcb8a41b8fced1b4ebd52aae4b7f9f27ed6606d +SHA512: c1dea2d5daefe6ca8d692d3ec03272be2cd368809c1e9efac0b78cd28c9a71903bba59d3321aa4a23e47e4f43f32c9a10bde5ffcfca67184de67f5afc762abac +Description: Intel® Distribution for GDB* + + +Package: intel-oneapi-dpcpp-debugger +Architecture: amd64 +Version: 2021.5.0-109 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-dpcpp-debugger-2021.5.0 +Filename: pool/main/intel-oneapi-dpcpp-debugger-2021.5.0-109_amd64.deb +Size: 2192 +MD5sum: 91b2dc0f504c7e58f409db606a89b83d +SHA1: 7d25e93eaaad98415a9dfbbdb882a8bb53e02ba3 +SHA256: 2c482d55735cd1c45c2ec16004ebe081991dd3ea475660a12162aa2d003b739f +SHA512: ccabea353fee10e7ed4b6730ee96f0bc9948096d8cd015346a25dbe6309c9fbf1a2f49b88c104a89de0084546774258ce68875c20d9d320262b9b15c59a93531 +Description: Intel® Distribution for GDB* + + +Package: intel-oneapi-dpcpp-debugger-2021.5.0 +Architecture: amd64 +Version: 2021.5.0-109 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 412398 +Depends: intel-oneapi-dpcpp-debugger-eclipse-cfg (>= 2021.5.0-109), intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-dpcpp-debugger-2021.5.0-2021.5.0-109_amd64.deb +Size: 166688678 +MD5sum: 4f60441159488c95ae400c975532c2ee +SHA1: 1d9450ac5a92c5f7e367d7d30a0d7fc9c25ba20d +SHA256: 6f2ecac68db88f98b70b9a830737714e451cabed4b127a886ed576f4013cca0b +SHA512: 7dbc2c225ffc9d74a9c3495184096fa38fece242eaff4bc29731217d9f624855aff9ee03a5f9677aac8ee05e37ab73be63eb36406fbfc705d6c45606e5562202 +Description: Intel® Distribution for GDB* + + +Package: intel-oneapi-dpcpp-debugger +Architecture: amd64 +Version: 2021.6.0-178 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-dpcpp-debugger-2021.6.0 +Filename: pool/main/intel-oneapi-dpcpp-debugger-2021.6.0-178_amd64.deb +Size: 2248 +MD5sum: 6dcb79050a82d4e721e7f95b208a9db4 +SHA1: 1097fe3b68ddc4f672ef4fe6aa0db7d83c8d6668 +SHA256: 2e332cc6d320ebc62f94ae91e73104e7ae8274ec4588af8f701b9f7a42d5be1f +SHA512: a7190529c70e00f00b5a35e627adf2f578c4a66ff0f660e56c1e30da0e80354de9b4c74b79631980412259fc9bb8b4deb411940487a5f39be1b466f72ab48de0 +Description: Intel® Distribution for GDB* + + +Package: intel-oneapi-dpcpp-debugger-2021.6.0 +Architecture: amd64 +Version: 2021.6.0-178 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 445269 +Depends: intel-oneapi-dpcpp-debugger-eclipse-cfg (>= 2021.6.0-178), intel-oneapi-common-vars (>= 2022.1.0-161), intel-oneapi-common-licensing-2022.1.0 +Filename: pool/main/intel-oneapi-dpcpp-debugger-2021.6.0-2021.6.0-178_amd64.deb +Size: 172113470 +MD5sum: dfbe84a171d954a9038e2298dfa2c9d1 +SHA1: 31cc37fcfa3165e10dbf4d25882577d927461a84 +SHA256: aba62716b81c21d431abbeda55d28db9326cbfbe13dd633c4df4655da62b85d4 +SHA512: c5ab4f7662f5caacb8f393d6155b2a4535a7a34d121377e73c9b6a252d0439acb2ec96669ec2bd962698a21aecc4bd1e9c583fa742ec4fe630402313225a7e8f +Description: Intel® Distribution for GDB* + + +Package: intel-oneapi-dpcpp-debugger-2021.7.0 +Architecture: amd64 +Version: 2021.7.0-8700 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 458531 +Depends: intel-oneapi-dpcpp-debugger-eclipse-cfg (>= 2021.7.0-8700), intel-oneapi-common-vars (>= 2022.2.0-8694), intel-oneapi-common-licensing-2022.2.0 +Filename: pool/main/intel-oneapi-dpcpp-debugger-2021.7.0-2021.7.0-8700_amd64.deb +Size: 176569854 +MD5sum: 473343149355d5958f62ccdd141fc0c6 +SHA1: 9567f26d8773ed86a8602b8f8c94755bb967ee93 +SHA256: df3ce9cdf2b08a2f5d778c12e0d36cb06568cef48d20d3f2c2a0637db67189d1 +SHA512: 81a0690ba39be9e0282be61b2bee21c42cd2eca9f6793a679ff4d761abc4f89c13f1d68961695e0994698ae0e9cfbcccd390081d4ffed8ccfbbb3f55a152fe8b +Description: Intel® Distribution for GDB* + + +Package: intel-oneapi-dpcpp-debugger +Architecture: amd64 +Version: 2021.7.0-8700 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-dpcpp-debugger-2021.7.0 +Filename: pool/main/intel-oneapi-dpcpp-debugger-2021.7.0-8700_amd64.deb +Size: 2252 +MD5sum: b88fb73f17b9f0647b753048219f34eb +SHA1: 3b993684261a00479dea7b98ba6ba4c7c265edc2 +SHA256: 0ecc915a2589ae628497fa52f90e141f88a85bd4e404658e264dcf06a9b810f2 +SHA512: bc5fe92ac350b53fa98d11d40280301f6794152a08507d08525b658faf9097f006efbb61093ef7b6bf4f76793237b8c9c61381a68cf7c508d1f32b11667249d5 +Description: Intel® Distribution for GDB* + + +Package: intel-oneapi-dpcpp-debugger +Architecture: amd64 +Version: 2021.7.1-14993 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-dpcpp-debugger-2021.7.1 +Filename: pool/main/intel-oneapi-dpcpp-debugger-2021.7.1-14993_amd64.deb +Size: 2252 +MD5sum: ee5fdde235e43bf712bd2ac04950c565 +SHA1: e75a30cd6bf2eb2791dda100c78b5c0074e612ed +SHA256: c5385060cd490dc4bcf83339f63b584be217c90614766e6dceed1d05ffdb37fb +SHA512: 65d2036622c16c0cacfe19596af3be9194e6ff86f5253687d96be0cc6059a94f36eecfe16f93ce32a24deec71a94255ef3da5d274022407c8be780c13a6db28e +Description: Intel® Distribution for GDB* + + +Package: intel-oneapi-dpcpp-debugger-2021.7.1 +Architecture: amd64 +Version: 2021.7.1-14993 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 317487 +Depends: intel-oneapi-dpcpp-debugger-eclipse-cfg (>= 2021.7.1-14993), intel-oneapi-common-vars (>= 2022.2.1-14969), intel-oneapi-common-licensing-2022.2.1 +Filename: pool/main/intel-oneapi-dpcpp-debugger-2021.7.1-2021.7.1-14993_amd64.deb +Size: 190472830 +MD5sum: 9899afadd3a22a785ff20db43ed8339d +SHA1: 3c82178e94c30d0d4a8faa469ed4f6fbc48251dd +SHA256: 54da9d1a2164c5975593d1b487245f5fccf8609489bc702f70036f3d14386729 +SHA512: a74edb1d6d7eb8d99cc127b819efd582a203efd051ce48854c1ceaa3e3432cc614cb32686d689d3a2b8f14636c8948f46b4cd1392617408cc588351110f1102b +Description: Intel® Distribution for GDB* + + +Package: intel-oneapi-dpcpp-debugger-2023.0.0 +Architecture: amd64 +Version: 2023.0.0-25336 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 345657 +Depends: intel-oneapi-dpcpp-debugger-eclipse-cfg (>= 2023.0.0-25336), intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing-2023.0.0 +Filename: pool/main/intel-oneapi-dpcpp-debugger-2023.0.0-2023.0.0-25336_amd64.deb +Size: 195848138 +MD5sum: 0ed32e5fa9545edda66fa2877449d8bd +SHA1: 52b5888508d118c77138a24078a3178662c69e42 +SHA256: c34634a9e0eb157ff4e20b4a34df2b42329c9cb0dea447b7cdae45a47b133a19 +SHA512: cdee5f07481def7fe91adbf57459ee70642f8e31906bfd349bbc676ca6eddeebf183af4d16757a76baf51c33d29d85bb39e027dd0df2d58408b0527797b1e655 +Description: Intel® Distribution for GDB* + + +Package: intel-oneapi-dpcpp-debugger +Architecture: amd64 +Version: 2023.0.0-25336 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-dpcpp-debugger-2023.0.0 +Filename: pool/main/intel-oneapi-dpcpp-debugger-2023.0.0-25336_amd64.deb +Size: 2256 +MD5sum: df7a25a1ba6f3da01c5e942550d6ef19 +SHA1: b9c7fa5f3842412585b726dc57fdd466fb6b28f0 +SHA256: 02aed9530e08eb754abfb25d6bcb923167bff48b2faaa456d00f3a1b314d00fb +SHA512: 4954ccf4808427cfc9219c7abe71dff8c00a751955955509bc3ff0261943edc31bf6c0ee35b6b6bedb4d987a6e41ed657a1d56d34c59ed5d438947d3c0a7af4c +Description: Intel® Distribution for GDB* + + +Package: intel-oneapi-dpcpp-debugger-2023.1.0 +Architecture: amd64 +Version: 2023.1.0-43513 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 348956 +Depends: intel-oneapi-dpcpp-debugger-eclipse-cfg (>= 2023.1.0-43513), intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing-2023.1.0 +Filename: pool/main/intel-oneapi-dpcpp-debugger-2023.1.0-2023.1.0-43513_amd64.deb +Size: 198944466 +MD5sum: 18f038d35d5f19aac4c17aa8895def2b +SHA1: 77ffad43756ea89c4928f823c408ab0ccb868151 +SHA256: 910daada72c1754f3784906a105788f9de226c84b0147c38c63ce4345ab5455e +SHA512: 046f268d7a66db1b272d80cafb33cf1d8be39f30f897292332ddc1fb2b1ef758483740ce89516fcf26c0a77c3f6330b28baf1e72c673dab0c2cf31a7cbb4a750 +Description: Intel® Distribution for GDB* + + +Package: intel-oneapi-dpcpp-debugger +Architecture: amd64 +Version: 2023.1.0-43513 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-dpcpp-debugger-2023.1.0 +Filename: pool/main/intel-oneapi-dpcpp-debugger-2023.1.0-43513_amd64.deb +Size: 2252 +MD5sum: be6083b36dc330a4bb18dc093eecc374 +SHA1: c69ff0470d9aae345b857083eb5be8234d8c77c6 +SHA256: 7e4587bd3068e59f0d7de0b72475e788d483fa2b378d48251086a71d2cee6a4d +SHA512: b25158fae4a8988ae85e924b833787c91208475fee9133b5e584e234695cf980afe50c19b0917efaeac8def3ef205eb9e81c44bd0e3c48480d88532d386b8a55 +Description: Intel® Distribution for GDB* + + +Package: intel-oneapi-eclipse-ide-2021.1.1 +Architecture: amd64 +Version: 2021.1.1-52 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 549181 +Depends: intel-oneapi-common-vars,intel-oneapi-common-licensing +Filename: pool/main/intel-oneapi-eclipse-ide-2021.1.1-2021.1.1-52_amd64.deb +Size: 374671968 +MD5sum: f00b308503238073efd0a6937804b48d +SHA1: 2b4efed4ead4fce63dcb77ff5cf118d3e135b1e3 +SHA256: 534adf5a7bed5a2eb47d7d63e9940ecb6b0386a7efa54db9b372dd905e8deabb +SHA512: 7060ba986c8821c46f4cb76146fd0c167ccc15724b3c7af2bf32ab1d9db24446e2b9a50774e4d6fc14eed2ac3f26d04f0a88010ffab8d1c1f9076b14f32589ba +Description: Eclipse* IDE + + +Package: intel-oneapi-eclipse-ide +Architecture: amd64 +Version: 2021.1.1-52 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-eclipse-ide-2021.1.1 +Filename: pool/main/intel-oneapi-eclipse-ide-2021.1.1-52_amd64.deb +Size: 2330 +MD5sum: e06f04083e64b33327b266250faf64f4 +SHA1: 9aad96e68a0fd170c0c3a1d2c9750bc8c3a496ec +SHA256: 02fe7ed0ee13af9ea1d439928d7268d5e210480163b280a74c6e3903abdb206e +SHA512: c41a19f25b74c7de46ebd7e871268168036dbceaa6b721faec45066157a63572ff9d5de8ef3b76b92fbed7e11394af154aac83eb16f4787af21ee18bf08e3451 +Description: Eclipse* IDE + + +Package: intel-oneapi-eclipse-ide +Architecture: amd64 +Version: 2021.2.0-143 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-eclipse-ide-2021.2.0 +Filename: pool/main/intel-oneapi-eclipse-ide-2021.2.0-143_amd64.deb +Size: 2332 +MD5sum: 4a40fc9da21fd4ef5f05b233dc55d377 +SHA1: 2e63a70ca36270873c95a18080fc824d1898f096 +SHA256: b1e7dfd05d5e7d7af60573279064a668b81168dc72e80419e3675b5ac42cdba9 +SHA512: d3dce7e93bda3b8b528a224a7c6e1744869b7bae0419f2acf5dd23c3d0eac7048bbd9d4595138d071deea8a4608932851ec49f6baf9eda326ef7fe219a268129 +Description: Eclipse* IDE + + +Package: intel-oneapi-eclipse-ide-2021.2.0 +Architecture: amd64 +Version: 2021.2.0-143 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 553745 +Depends: intel-oneapi-common-vars (>= 2021.2.0-195), intel-oneapi-common-licensing-2021.2.0 +Filename: pool/main/intel-oneapi-eclipse-ide-2021.2.0-2021.2.0-143_amd64.deb +Size: 375612138 +MD5sum: 210d9cdf58a5a43e0e7c61b35f3736c8 +SHA1: 6b83d5a6107b35478a9db70c9c8fda66c03f1241 +SHA256: 1b7f2dcc1e625d7a878401801ea7d894352861e0d8faddc6701a9d5a47215dcd +SHA512: 18243cf1e57b558c08bc6174b960d149a14ace8b75696eac573c63d25e474478952ad92b422d380965f202f268369a7e82df0a256e9b2734c7508bc54e223ed8 +Description: Eclipse* IDE + + +Package: intel-oneapi-embree-3.12.0 +Architecture: amd64 +Version: 3.12.0-91 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 271765 +Provides: intel-oneapi-embree +Depends: intel-oneapi-rkcommon,intel-oneapi-common-vars,intel-oneapi-common-licensing,intel-oneapi-common-vars,intel-oneapi-common-licensing +Filename: pool/main/intel-oneapi-embree-3.12.0-3.12.0-91_amd64.deb +Size: 35469024 +MD5sum: 536b694f9b71e80d5faf5e487fd788b5 +SHA1: a24380694929844ba98d1cec6069e6ffa2f86bef +SHA256: 7a37a811f0af09465364f0f127a55d45ccfe53b06b60e8a61ee6619af98f1f72 +SHA512: 20cfa10c41a59b1b283b4b9ddb92957c0bac37ffc3c22126e00b9290ac7e85cb863ea72920f825a34cb970a6e8429a33c9cd1d948bd39a778d658c57c1cbd273 +Description: Intel® Embree + + +Package: intel-oneapi-embree +Architecture: amd64 +Version: 3.12.0-91 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Provides: intel-oneapi-embree +Depends: intel-oneapi-embree-3.12.0 +Filename: pool/main/intel-oneapi-embree-3.12.0-91_amd64.deb +Size: 2304 +MD5sum: efc36c0fe43de38ea54f678ccd3a17fa +SHA1: 21e231233011e0b8a64d86b2f368b5d90ae537f1 +SHA256: 4560b621f74d501cfd2867b01442e2a7ed79d13c36dca2e6c87438a893268571 +SHA512: 3f41ec46452fbca12fcbfc4e762027d2324080bd4cd201cfb95b4ada2508da6c8d6a0e9ed2bd650cfb28fe57af8c8ba7745ebab19bf53bf95c6fa792fec36556 +Description: Intel® Embree + + +Package: intel-oneapi-embree +Architecture: amd64 +Version: 3.12.2-123 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Provides: intel-oneapi-embree +Depends: intel-oneapi-embree-3.12.2 +Filename: pool/main/intel-oneapi-embree-3.12.2-123_amd64.deb +Size: 2296 +MD5sum: d685dc7f257e197d95a04637b18053e0 +SHA1: 9ddee67d28163509559fa4203cffb71c1c9f6e7d +SHA256: 88b87b18f2deb48da8e7d37e239efec87c4c3e9e7ec415fbbbb896d4f219654d +SHA512: 9235ec6c98e44baeff23eef89ef5e8ee09037590a6f009a1a10768a25fb3cd061aa0788a07c1bbc890f88a88cb7e5c498abf4ca22c48194faa5b544a143300a3 +Description: Intel® Embree + + +Package: intel-oneapi-embree-3.12.2 +Architecture: amd64 +Version: 3.12.2-123 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 276958 +Provides: intel-oneapi-embree +Depends: intel-oneapi-rkcommon-1.6.0, intel-oneapi-common-vars (>= 2021.2.0-195), intel-oneapi-common-licensing-2021.2.0 +Filename: pool/main/intel-oneapi-embree-3.12.2-3.12.2-123_amd64.deb +Size: 36136624 +MD5sum: 046656bd64b89783a2158b90361b506b +SHA1: ce094fe8f985038a3a1cd2c7132bd31ed985bdb3 +SHA256: 2a0102e518d9f5d7a62d351244cd6df4b85298e6a7326f9fbee3453a5ea04c6a +SHA512: c1b626f838560ec3fb38903cd88ffb0195512d36228f7a7995d0f05f1f4d2eb2dd16318d808ba3f5db8517011446dbdeac89eb65df6fc131309f14e190ba691d +Description: Intel® Embree + + +Package: intel-oneapi-embree +Architecture: amd64 +Version: 3.13.0-257 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Provides: intel-oneapi-embree +Depends: intel-oneapi-embree-3.13.0 +Filename: pool/main/intel-oneapi-embree-3.13.0-257_amd64.deb +Size: 1634 +MD5sum: 2d106a5f890762f25d7071eb0fafba50 +SHA1: 6c9fff3f5529d10c671cb3ba6891c3f0300c691a +SHA256: 93cadf0e375057b633d3654b3b32bf2ab542af02289991759d327e48b2566ce5 +SHA512: fb8893469409de052d22f901b7a0cb572fa147cff0d72c37093cac9d588d678563fc590d0811ed5d413e4da04af7bc6eb2d02fe6d0a842216e9393ba815df059 +Description: Intel® Embree + + +Package: intel-oneapi-embree-3.13.0 +Architecture: amd64 +Version: 3.13.0-257 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 278951 +Provides: intel-oneapi-embree +Depends: intel-oneapi-rkcommon-1.6.1, intel-oneapi-common-vars (>= 2021.3.0-261), intel-oneapi-common-licensing-2021.3.0 +Filename: pool/main/intel-oneapi-embree-3.13.0-3.13.0-257_amd64.deb +Size: 36652200 +MD5sum: 72914736c772f33a50c607310161a705 +SHA1: a078188abf0c2e792e012aee903d38a9ad94b0fd +SHA256: 328ac6f4f2978b01e7e5c625a38079cff1e13345ef46661e580ddc1494035b68 +SHA512: 6ba575555b316e894fbac464d8e04a85ecb9c429ae79e8af0a7070a5e056d1f79b1c714cafe0b5dd06b8b9256bac7a67014a83afecc5c993235dc7d345574b48 +Description: Intel® Embree + + +Package: intel-oneapi-embree +Architecture: amd64 +Version: 3.13.1-297 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Provides: intel-oneapi-embree +Depends: intel-oneapi-embree-3.13.1 +Filename: pool/main/intel-oneapi-embree-3.13.1-297_amd64.deb +Size: 1634 +MD5sum: 5a9ad7eb7e723d8f004a9c76d778fd04 +SHA1: 68129c8905bd0d2422e298ebb348103599579087 +SHA256: 0bc65cc61a0a798f40cdb7619ddd382a2d39385cf07c80bd7119a6690473f830 +SHA512: 9ae3ef156cee795e84ac0c991977de11d133c201d6364e74a9af9203a6c24b39dc73ea31ccb1789c04c46a7be8fa27c5be94904b1985c253cfe5aacea77256bf +Description: Intel® Embree + + +Package: intel-oneapi-embree-3.13.1 +Architecture: amd64 +Version: 3.13.1-297 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 278947 +Provides: intel-oneapi-embree +Depends: intel-oneapi-rkcommon-1.7.0, intel-oneapi-common-vars (>= 2021.4.0-327), intel-oneapi-common-licensing-2021.4.0 +Filename: pool/main/intel-oneapi-embree-3.13.1-3.13.1-297_amd64.deb +Size: 36654222 +MD5sum: 1b405849db8bd804f6c781336204cb60 +SHA1: b1505b98083265292c7f1f61048771e159bd49c7 +SHA256: 902472a8742685c52d393a4ef230a515f495350f004add2ee7302b33c08bc91c +SHA512: fabe0eee15dac039d99823d443797b9b575d3654eeb4b4d67f0eb0a356e7d7568d80cf1016414da6b0bb4faa33f6b39adf72ec1b4af69fe13198f45ed0a2f9a9 +Description: Intel® Embree + + +Package: intel-oneapi-embree-3.13.2 +Architecture: amd64 +Version: 3.13.2-73 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 286992 +Provides: intel-oneapi-embree +Depends: intel-oneapi-rkcommon-1.8.0, intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-embree-3.13.2-3.13.2-73_amd64.deb +Size: 37290940 +MD5sum: dcca58a1624ecfda938b196ad87a3548 +SHA1: 851f370ae23eaa50e95f84bd6c782197ffb636a2 +SHA256: e0e713652185d01f5e2e25751b9afee9fef60f8478e76272fa94a1937306b742 +SHA512: 21f8590a0c06f37c15206906240fcde8985141084533ec9a888687185e511f6a91b9cc49fbaf009d78aed26bba29d69548f52fe92d57599d65d5f0d138032b35 +Description: Intel® Embree + + +Package: intel-oneapi-embree +Architecture: amd64 +Version: 3.13.2-73 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Provides: intel-oneapi-embree +Depends: intel-oneapi-embree-3.13.2 +Filename: pool/main/intel-oneapi-embree-3.13.2-73_amd64.deb +Size: 1630 +MD5sum: 5acadb1beebf8cb16fca403e6373e250 +SHA1: a47fbc8bfb7548f3ebc6a8d560282be34eebafcf +SHA256: 1dc9bfbcb0be53baf45d2d1943a72a030ff207097c05be806cb98a3e954ea880 +SHA512: 7208893e93aec4797ef254f8acab6a75c655ce246fd50a4fbb68b492dbc12394f699ddbbdc0493e86e42640903860130e60676b67ad9c60ea49bf4b73a1787b6 +Description: Intel® Embree + + +Package: intel-oneapi-embree-3.13.3 +Architecture: amd64 +Version: 3.13.3-360 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 287131 +Provides: intel-oneapi-embree +Depends: intel-oneapi-rkcommon-1.9.0, intel-oneapi-common-vars (>= 2022.1.0-161), intel-oneapi-common-licensing-2022.1.0 +Filename: pool/main/intel-oneapi-embree-3.13.3-3.13.3-360_amd64.deb +Size: 43732458 +MD5sum: 0ef49279cec953e31e3463d0d73c9c28 +SHA1: 31d300e5b379a6df7a301ec18c1a5f21e09cc42c +SHA256: e39ce0701636d3f84c6c3ba46e9d2991e9835ec18f522610b19010a7735bf174 +SHA512: b217b7197252454a611a47486546c629ff36aa7384c75d6f73b19ee7f35140d8edbc0cefb5418bb3c57da7ba241e4e812bad4d7399a902e15623c251566215e7 +Description: Intel® Embree + + +Package: intel-oneapi-embree +Architecture: amd64 +Version: 3.13.3-360 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Provides: intel-oneapi-embree +Depends: intel-oneapi-embree-3.13.3 +Filename: pool/main/intel-oneapi-embree-3.13.3-360_amd64.deb +Size: 1712 +MD5sum: 1f3015c57b465145251a8a90ca1c4917 +SHA1: 7a1c03c2903358b3d91defe65c60936edc8648fd +SHA256: 7c5ddbdfbdc7a31acbc3e1ea9b15519e4415c48c9f7ac7fca0cd0a38c398222f +SHA512: 1ce78dc57f9e4038d5b226366bf0e9bb2293581e765fe6859f1d08dfb48fc118e424fd3f728051e4122627ead4e9fecf105a3c904da67df729e5d9e1d4d3bf4f +Description: Intel® Embree + + +Package: intel-oneapi-embree-3.13.4 +Architecture: amd64 +Version: 3.13.4-8730 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 287584 +Provides: intel-oneapi-embree +Depends: intel-oneapi-rkcommon-1.10.0, intel-oneapi-common-vars (>= 2022.2.0-8694), intel-oneapi-common-licensing-2022.2.0 +Filename: pool/main/intel-oneapi-embree-3.13.4-3.13.4-8730_amd64.deb +Size: 43686994 +MD5sum: b375a52e6d1e923aa922cb586a0310d2 +SHA1: a9fb618769aaa5c0e6bc14a52c468aa27397fe6e +SHA256: c37c54a8ae25690d6639cdf95737e249ceecaec850f6af410cb63139f8e9651e +SHA512: 212dc1685da57a04a2c7768d27f5900805c8226b292beeb8065f498d10dce3c15eca280e19137d275e47867ab8c019c340a56c663e64eed9e56d67be6c2c1fab +Description: Intel® Embree + + +Package: intel-oneapi-embree +Architecture: amd64 +Version: 3.13.4-8730 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Provides: intel-oneapi-embree +Depends: intel-oneapi-embree-3.13.4 +Filename: pool/main/intel-oneapi-embree-3.13.4-8730_amd64.deb +Size: 1712 +MD5sum: 87023425eeac3a739391ee36b4f0af1c +SHA1: 255311ffc413236086939fd0fd922d5df2cac79f +SHA256: d3d0c280fe6556c74bd70e0684ec069947ff7782e812673c1e856824e34d8a38 +SHA512: f6c16f33cc97daafee596e231a15e43d91eeebfb5bffd479afcde70c8d8b695301dc3af2d773483ed791b31bada129ada9f6ea9770e0d7ff12998c803ee70e0d +Description: Intel® Embree + + +Package: intel-oneapi-embree +Architecture: amd64 +Version: 3.13.5-21152 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Provides: intel-oneapi-embree +Depends: intel-oneapi-embree-3.13.5 +Filename: pool/main/intel-oneapi-embree-3.13.5-21152_amd64.deb +Size: 1716 +MD5sum: e86d3d3bb85fcff51d8878a464cdd66a +SHA1: 01ae71168e7981f4820010f8f66d6e4890c5d09a +SHA256: ca9b41db8cbbb787ef3a274098f3165477ae35a1ec615b48499be3dfef00f3a2 +SHA512: 7b94b76a189d4ad59acd8e298898a104f097d2ed7fef030ca879dc581f988cb73e2faedf0bbf03e8e914c83df43a4bb1f2983c6567171fda54408cf540f9a58b +Description: Intel® Embree + + +Package: intel-oneapi-embree +Architecture: amd64 +Version: 3.13.5-25372 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Provides: intel-oneapi-embree +Depends: intel-oneapi-embree-3.13.5 +Filename: pool/main/intel-oneapi-embree-3.13.5-25372_amd64.deb +Size: 1712 +MD5sum: dadb3523416b6e0c262341c3cb810512 +SHA1: 4d4bb632e76491562ece81ab9ac75d973b0f58ae +SHA256: cdad6180161fb8094b157031a7c30dc6e87e86082218391f5f3be9fd2ea1658f +SHA512: 1c510e8788787767b29217b5a6cab716997404e06ce87458ea5ac1c2fdfe7a913bc8aaecb7a40ee38c46d3815ecb60cb314a8841771a17bacd614a8191ecab91 +Description: Intel® Embree + + +Package: intel-oneapi-embree-3.13.5 +Architecture: amd64 +Version: 3.13.5-21152 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 287581 +Provides: intel-oneapi-embree +Depends: intel-oneapi-rkcommon-1.10.0, intel-oneapi-common-vars (>= 2022.2.1-14969), intel-oneapi-common-licensing-2022.2.1 +Filename: pool/main/intel-oneapi-embree-3.13.5-3.13.5-21152_amd64.deb +Size: 43755530 +MD5sum: aba3207d7a9b3a2e3c681f8c39763afb +SHA1: 932a8fd42967095117178581608f423dc6400f8e +SHA256: 3879b09a492c4e7f6f8c92fbc0b0d4cf484685457113ddee22768e475e714c52 +SHA512: d75545d8fdf8002b127809fc3227e5c366ad1f0af18aeb7715864aadb946a0a3c74889af597bfa0627dc85d18444f0b47367d292b5ca5e548809de671b558450 +Description: Intel® Embree + + +Package: intel-oneapi-embree-3.13.5 +Architecture: amd64 +Version: 3.13.5-25372 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 287581 +Provides: intel-oneapi-embree +Depends: intel-oneapi-rkcommon-1.10.0, intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing-2023.0.0 +Filename: pool/main/intel-oneapi-embree-3.13.5-3.13.5-25372_amd64.deb +Size: 43757422 +MD5sum: 3bac3f8b8f9c0889bee853d616b411fd +SHA1: fd088969e1476242b41fd2ee45b8bed4e0622315 +SHA256: 8bc2ab112daaf3ebfcd558581ac023724ed71ddf98a417283a36c05fa5c31ce0 +SHA512: 70d2e17bf9c5fb1f3ebe15f04f978db3ab277890a2c3ef2d16d8ac4d1302cd40c762be804039e1e2c3b84f66743893572f6e8213e7ef84d9cabfb747aa47da77 +Description: Intel® Embree + + +Package: intel-oneapi-embree-4.0.1 +Architecture: amd64 +Version: 4.0.1-46734 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 295817 +Provides: intel-oneapi-embree +Depends: intel-oneapi-rkcommon-1.11.0, intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing-2023.1.0 +Filename: pool/main/intel-oneapi-embree-4.0.1-4.0.1-46734_amd64.deb +Size: 41266566 +MD5sum: 63069ff91711349cfc7a40860353c7f8 +SHA1: 289c27e7dde67a6bb7fc0416284238b9ee1bd564 +SHA256: ae366ab9f2042d5f42868ba830dd3114ed12970a7d678c30e310a83d9e95d263 +SHA512: aa921822475b0724f0986adb36a6b351fcb44c55c4127dde53db1eec507775eecf2476cdc1c79afa19cc3adaf839ccdbb331573f41d46386cc4aa789c9c43922 +Description: Intel® Embree + + +Package: intel-oneapi-embree +Architecture: amd64 +Version: 4.0.1-46734 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Provides: intel-oneapi-embree +Depends: intel-oneapi-embree-4.0.1 +Filename: pool/main/intel-oneapi-embree-4.0.1-46734_amd64.deb +Size: 1712 +MD5sum: c536337f356358bfacaef362d66e5d23 +SHA1: eb52740663a194c1e6b9c7de247aeab7513abbde +SHA256: 94713b40e2269f97f1cc2edb8e176d1bf626ca7f317032ff1329c07a3fb8436b +SHA512: 99d87dd9f57ec7f994914c6c6734cbf1f2862ac8e854379cd8f5be68e69cfd5034dfcc32e2ff52eb5e78c1f3de29bf6ec3c3802006ea64808de41c382a4d947f +Description: Intel® Embree + + +Package: intel-oneapi-ilit +Architecture: amd64 +Version: 1.0.0-204 +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 4642 +Depends: intel-oneapi-condaindex,intel-oneapi-common-vars,intel-oneapi-common-licensing,intel-oneapi-common-vars,intel-oneapi-common-licensing +Filename: pool/main/intel-oneapi-ilit-1.0.0-204_amd64.deb +Size: 4721718 +MD5sum: 3fa3f88c5acb5be35919be8d7b57e5a1 +SHA1: 6ed55626ef7197c951cc494b798a887f4255d930 +SHA256: 8bd93d7c34f93abfad04e8f460a7d6565969d6fe0042a8eaa287c0002e00ab86 +SHA512: d70e8634dfc1a475d2a3a295b6454cc0d76a5f2bf4843d0753a0824f5dd49a6c81be3758a0fee2048aec3e065c79c109a6c7024c6697ec4f1f1b2eca116c363a +Description: Intel(R) Low Precision Optimization Tool + + +Package: intel-oneapi-ilit +Architecture: amd64 +Version: 1.0.0-319 +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 38677 +Depends: intel-oneapi-condaindex (>= 2021.2.0-94), intel-oneapi-common-vars (>= 2021.2.0-195), intel-oneapi-common-licensing-2021.2.0 +Filename: pool/main/intel-oneapi-ilit-1.0.0-319_amd64.deb +Size: 39556790 +MD5sum: 08db68baf29210e2f025344add1c535e +SHA1: 9a9433bc77a341136f118f9fbd7139c5b1b02103 +SHA256: a93999383d8810432ca02a6d5c3c764e8e77a6d0199ffcbdfb3b128561ea825e +SHA512: 37396730150d7e4c9f459b3e54b433035f061ebce0777c3fdef727c97b21b5c48017ae8fd9b6114d3bceca5f568d488d8f0a625e19e836b3476011d5ace14769 +Description: Intel® Low Precision Optimization Tool + + +Package: intel-oneapi-inspector +Architecture: amd64 +Version: 2021.1.1-42 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 295368 +Depends: intel-oneapi-common-vars (>= 2021.1.1-60), intel-oneapi-common-licensing-2021.1.1,intel-oneapi-common-vars,intel-oneapi-common-licensing +Filename: pool/main/intel-oneapi-inspector-2021.1.1-42_amd64.deb +Size: 69697926 +MD5sum: 2ffea87bfebbf4fc0b7e871e9f7d83f3 +SHA1: e74e1510e24f4885aefbc46d17f14275497bcdd8 +SHA256: 9346d9a9e662580d51bb8dbcd3bc760041ce2179acf49d011c9cbe091a03dd0c +SHA512: 887749288821247ab92a5ecb5f13c128277d5e6407392aac12ec358fe86a1c513aca5bf96c7d930a98a8a4f2ecb97357911dfeb15ffc002c52698c4dd95155ba +Description: Intel® Inspector + + +Package: intel-oneapi-inspector +Architecture: amd64 +Version: 2021.2.0-145 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 290308 +Depends: intel-oneapi-common-vars (>= 2021.2.0-195), intel-oneapi-common-licensing-2021.2.0 +Filename: pool/main/intel-oneapi-inspector-2021.2.0-145_amd64.deb +Size: 68858132 +MD5sum: 17d3cb7eb55836b38fe670e93f1760e0 +SHA1: 45e481f8303cb1d336e7f9a1f5688eb1b64f677b +SHA256: 4227ec980307160aaa62066afe69db2e58ee8bc456382966e79a3f1e694fc10c +SHA512: f41e2f3bc6b8e1f13da2b285abfdcab3f5b5227076af2f8ca22ee47665ba39e5e5233e5a1e78b3beea70d0a8101b03cb2b59e6e4ee947db5ff1f01e03653a79d +Description: Intel® Inspector + + +Package: intel-oneapi-inspector +Architecture: amd64 +Version: 2021.3.0-217 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 313484 +Depends: intel-oneapi-common-vars (>= 2021.3.0-261), intel-oneapi-common-licensing-2021.3.0 +Filename: pool/main/intel-oneapi-inspector-2021.3.0-217_amd64.deb +Size: 72384392 +MD5sum: f588aef7796648e05dc725db56524cc2 +SHA1: 874e63aa4c7f3c8fd10ec1d0d7f85da7116f0fd1 +SHA256: e8cedc3f78237517536e9364bda68999404fc305d8e9a6a534cd5443d71478f9 +SHA512: c04e1082acc23da200252ab2b5ae8e775dda6a52b65c9adb9913ffead439e4de22f834cdfcd6bb0b56b94f3b7eaf6788c517a5897dbc012da4fa01c778acf12b +Description: Intel® Inspector + + +Package: intel-oneapi-inspector +Architecture: amd64 +Version: 2021.4.0-266 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 296857 +Depends: intel-oneapi-common-vars (>= 2021.4.0-327), intel-oneapi-common-licensing-2021.4.0 +Filename: pool/main/intel-oneapi-inspector-2021.4.0-266_amd64.deb +Size: 69702202 +MD5sum: e405f269d7da8ba36d506ac49969e39b +SHA1: 3d62fe9e48bf7ed0301e4246ba6fc6d5696dcaa6 +SHA256: 7ed1023330df18d90aa248c6ed94583667bc71dba0f9daa8eede96c50879ac89 +SHA512: 050cc8103b75146607ab3b8d92891cc3f227051fb9e2bbdaa3a0d0f0ec67e6faf983d8c267cb58362d06bac338999669d3bcd148a73b186b631eceed2d49368e +Description: Intel® Inspector + + +Package: intel-oneapi-inspector +Architecture: amd64 +Version: 2022.0.0-56 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 319300 +Depends: intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-inspector-2022.0.0-56_amd64.deb +Size: 73069218 +MD5sum: 5da378b97383796bb125974cf19a8807 +SHA1: bed547af982eccf6befac726ed85fcc11fbfec9a +SHA256: 5586d59ed8992deade4d3026ea087bd575775e7d4761e2c00be7ba289bda5d07 +SHA512: bb5cf340a232aa3150033ba19d6f3600aed512c9cf1e4826e80a259888cc1eb96db71aa3213d4ff72c1253904d68fdb62ba06d2334a8a10acec9a37e3b315587 +Description: Intel® Inspector + + +Package: intel-oneapi-inspector +Architecture: amd64 +Version: 2022.1.0-123 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 342984 +Depends: intel-oneapi-common-vars (>= 2022.1.0-161), intel-oneapi-common-licensing-2022.1.0 +Filename: pool/main/intel-oneapi-inspector-2022.1.0-123_amd64.deb +Size: 77608964 +MD5sum: 8223683346b8ee2d6992cef350f1af8b +SHA1: b2819acbaa10289f8d519f7f08b4b6a8dae40fa2 +SHA256: 0a268b872d52b7a6851ac80b876b92173be0f0b01d0ee27517ee6b58195e6418 +SHA512: f3879a33e2e513ec58ef930a23b69e04dafd776e6a9aa3a988e4c97ca238ed46cbe3f10dc143280fb027417eb9cd690f4fa3f08361ac7794ba14fc7cec12652f +Description: Intel® Inspector + + +Package: intel-oneapi-inspector +Architecture: amd64 +Version: 2022.3.0-8706 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 344866 +Depends: intel-oneapi-common-vars (>= 2022.2.0-8694), intel-oneapi-common-licensing-2022.2.0 +Filename: pool/main/intel-oneapi-inspector-2022.3.0-8706_amd64.deb +Size: 78250420 +MD5sum: 4f70887cfc960a8a8148bb9a977e963d +SHA1: 29dfe0dc3d5a97acd02e1e1dc6284d192a767ede +SHA256: 5f45d943f0ef3c24d3b72b5bad2a571edf3c23417f0013325ff335940fb45833 +SHA512: d34c6de8de7f00c802de53e9aca2d406d8d6067bf5c176499b08909fea88c8c3da80c80a9aea8b0a740127d6c135931be714ade0783b6a0ff807b8ec8d7ae96e +Description: Intel® Inspector + + +Package: intel-oneapi-inspector +Architecture: amd64 +Version: 2022.3.1-15318 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 344849 +Depends: intel-oneapi-common-vars (>= 2022.2.1-14969), intel-oneapi-common-licensing-2022.2.1 +Filename: pool/main/intel-oneapi-inspector-2022.3.1-15318_amd64.deb +Size: 78235752 +MD5sum: 9078b96f6536b0e990abdef7369d143d +SHA1: 201c62099fc1e575c01eb39d941a2f84b7e83efb +SHA256: 35589769574d72708a57aa0102dad5d5f496e87174e3ca96775895292af0531c +SHA512: 68f207be4a289396296b78e289832ec7f2d31e8364fcadd8a52240ab93ba90ff746aae2353a7c5bdf9b4aea3f7c2c06bcf438094c774dec48d879247884f3085 +Description: Intel® Inspector + + +Package: intel-oneapi-inspector +Architecture: amd64 +Version: 2023.0.0-25340 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 345392 +Depends: intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing-2023.0.0 +Filename: pool/main/intel-oneapi-inspector-2023.0.0-25340_amd64.deb +Size: 78318984 +MD5sum: 9a5fdd8c89bcf92b4192df5f1041186d +SHA1: 7e1f52749a6a82d16d72b4731c00a81d406f1061 +SHA256: d83a693222783f2694f9c86b192b310c8c77b48d7abbed78e28135b2c7841b41 +SHA512: 7bebdc7b47d9d4e9ff8309a333b9e09fd4710eaba1388d559aa1dafb3b790f8dd224ab6280fc693a59fb1ce9b879ef63f4d52dde23c2fe8db0b84c7a63e332c2 +Description: Intel® Inspector + + +Package: intel-oneapi-inspector +Architecture: amd64 +Version: 2023.1.0-43486 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 345649 +Depends: intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing-2023.1.0 +Filename: pool/main/intel-oneapi-inspector-2023.1.0-43486_amd64.deb +Size: 78399532 +MD5sum: 1ef5a2343beaae3638b8281e09c254fd +SHA1: 3c2b86e6c8c5b21c674d9818a6d04b65af027d96 +SHA256: aec50dd18e3b13092ab1616c4dd41fc7830a9a12b1f3cefee56713e192d6bc83 +SHA512: 846a070d8aa67db67bf3dbb05f00cb98f4cb5fe28e16ac0de777a2412138231e20e08c8862229356523d218f6d409a5c1a4bfee02ec6dc21fcca27e240d8240b +Description: Intel® Inspector + + +Package: intel-oneapi-intelfpgadpcpp-a10gx-s10sx-quartus-part1-2021.1.1 +Architecture: amd64 +Version: 2021.1.1 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 7192532 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-a10gx-s10sx-quartus-part1_2021.1.1_amd64.deb +Size: 2364168944 +MD5sum: a12834bb1f92b6ffeed67a25935ae554 +SHA1: 57668ba4fc9d8107be7332eaeb507297e02d730c +SHA256: b08653578da6ae3420050cf34d436c993ad6d52648da2fd30b9275e1e32d0aab +SHA512: bd549aa03e0e5236f226831751d15bafa3a78168afb2ccceb8f396909c0cf63399f466c1612b331ff7633c1654c0a9693308a4b0a3c047a55c15d7c689ea3c3f +Description: Intel® FPGA Add-on supporting the Intel® FPGA Programmable Acceleration Cards (PAC): Intel® FPGA PAC D5005, Intel® PAC® with Arria® 10 GX FPGA: Quartus Prime Pro, Part 1 + + +Package: intel-oneapi-intelfpgadpcpp-a10gx-s10sx-quartus-part1-2021.2.0 +Architecture: amd64 +Version: 2021.2.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-a10gx-s10sx-quartus-part1_2021.2.0_amd64.deb +Size: 2364147550 +MD5sum: f978bd9af096e4a2f42bd56108a36212 +SHA1: b18b918c74b8733a875e7cc97519a7e3d8d970cb +SHA256: 4ab109d79cefe233fa80871f28a563b784cc033de7e9bc3b8784aba7afc3cbd4 +SHA512: 5bc9c3ec19ad901c40d4152aaeba89a288e1030902886686283872b107b1b8219940345be7401441cfe699d1af8009a2cf81edfaead56c5cbec0816ce2f733e4 +Description: Intel® FPGA Add-on supporting the Intel® FPGA Programmable Acceleration Cards (PAC): Intel® FPGA PAC D5005, Intel® PAC® with Arria® 10 GX FPGA: Quartus Prime Pro, Part 1 + + +Package: intel-oneapi-intelfpgadpcpp-a10gx-s10sx-quartus-part1-2021.3.0 +Architecture: amd64 +Version: 2021.3.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-a10gx-s10sx-quartus-part1_2021.3.0_amd64.deb +Size: 2364157388 +MD5sum: 23508923709053149bc8600c9117185a +SHA1: 5098a96531a8b2172fccb88d618d9505d9ca3017 +SHA256: 2953ba41b2468be658cdf87d02b799fdc04239c8538d34daf8f2defd62ab89b9 +SHA512: 9fd171dc986114f8b216e616881d98f70fc5d27c616dbd75e1b0f9c7681bec4a4f1ea726ed84a113d2b8fc91ef0e7504f7e3013d2741d14a8f12e376c42d08c2 +Description: Intel® FPGA Add-on using Intel® Quartus® Prime Pro 19.2 software supporting the Intel® FPGA Programmable Acceleration Cards (PAC): Intel® FPGA PAC® D5005, Intel® PAC® with Intel® Arria® 10 GX FPGA: Quartus® Prime Pro, Part 1 + + +Package: intel-oneapi-intelfpgadpcpp-a10gx-s10sx-quartus-part1-2021.4.0 +Architecture: amd64 +Version: 2021.4.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-a10gx-s10sx-quartus-part1_2021.4.0_amd64.deb +Size: 2364174574 +MD5sum: 35d984dfba38e6a94fa362d0c1c70229 +SHA1: 09e8584266678d43a75cabe5829d3214bc4b1ec8 +SHA256: 19dd1092c573fb2060fc5fdeda8a486e1ad2663ecf0b5781ac7a5ae0994d6d70 +SHA512: 4babcdb347b64a466bbdbc2b9ec03a0f783881a29aee558d12a63d0779fc598e03983d64fb662b183de21e9c8c9cb72a8177b382bb3e9dd36bda665c73215224 +Description: Intel® FPGA Add-on using Intel® Quartus® Prime Pro 19.2 software supporting the Intel® FPGA Programmable Acceleration Cards (PAC): Intel® FPGA PAC® D5005, Intel® PAC® with Intel® Arria® 10 GX FPGA: Quartus® Prime Pro, Part 1 + + +Package: intel-oneapi-intelfpgadpcpp-a10gx-s10sx-quartus-part1-2022.1.0 +Architecture: amd64 +Version: 2022.1.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-a10gx-s10sx-quartus-part1_2022.1.0_amd64.deb +Size: 2364157372 +MD5sum: bfca01c2e8079baa83a8f0a9ce8f72fa +SHA1: 142c186e497eca667042e6020045c8e09d037f3f +SHA256: e83db676bec528b4e65e5bf4f50fc2c122166cf2303361dbd363a4795ee99543 +SHA512: bdbe12fd530a808c7562531067328ad94bde2d149ea090ae13d931c861f190ea5db9afccc6049835d1225d11a9b117ba8951cf883a23c291ee4327b37d8e24fd +Description: Intel® FPGA Add-on using Intel® Quartus® Prime Pro 19.2 software supporting the Intel® FPGA Programmable Acceleration Cards (PAC): Intel® FPGA PAC® D5005, Intel® PAC® with Intel® Arria® 10 GX FPGA: Quartus® Prime Pro, Part 1 + + +Package: intel-oneapi-intelfpgadpcpp-a10gx-s10sx-quartus-part2-2021.1.1 +Architecture: amd64 +Version: 2021.1.1 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 5486800 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-a10gx-s10sx-quartus-part2_2021.1.1_amd64.deb +Size: 4560192204 +MD5sum: 2fc2f53aa3a10ed13f7f62c238c6c460 +SHA1: 104acbe67337f9cb9df1359c18a4f64af6d93c43 +SHA256: 19270f56e5e4fa9fecb1f6df35463cb13c3a654411d0c2762348a0f1959b396c +SHA512: 8bc1c8b9560376831ec6866cce22344b0fd7ace39ce407e78620804ce878e99062d60603d64e31c090400d6ab1049e29ce8ce4785141722a793bbe65ff1de989 +Description: Intel® FPGA Add-on supporting the Intel® FPGA Programmable Acceleration Cards (PAC): Intel® FPGA PAC D5005, Intel® PAC® with Arria® 10 GX FPGA: Quartus Prime Pro, Part 2 + + +Package: intel-oneapi-intelfpgadpcpp-a10gx-s10sx-quartus-part2-2021.2.0 +Architecture: amd64 +Version: 2021.2.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-a10gx-s10sx-quartus-part2_2021.2.0_amd64.deb +Size: 4560207904 +MD5sum: 31087969940b2a5959b03f4a8cad685b +SHA1: bff36ef2a6552413afca393fd710dbc507c9ccaa +SHA256: dca64585dbe498cbde14fdab75365f97824efcf99a9dc07888bdababe6a9e82f +SHA512: 57817432db084f4caf10c0345be0294a63289539c1b5a350e7a53e025b117874a8d09bdd46c7134b496bce6d6bb418829107741b675cddfbd912595bf9be70bf +Description: Intel® FPGA Add-on supporting the Intel® FPGA Programmable Acceleration Cards (PAC): Intel® FPGA PAC D5005, Intel® PAC® with Arria® 10 GX FPGA: Quartus Prime Pro, Part 2 + + +Package: intel-oneapi-intelfpgadpcpp-a10gx-s10sx-quartus-part2-2021.3.0 +Architecture: amd64 +Version: 2021.3.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-a10gx-s10sx-quartus-part2_2021.3.0_amd64.deb +Size: 4560208336 +MD5sum: ed68d03e1724f815387a0d22a285240f +SHA1: 347a155dcd595035b23bb62c6c00f61e733cf321 +SHA256: c3109d4a4eacb464cac1b88a25cecee76ee943f4dafbd4ec4ee5b7e7423b598b +SHA512: 5ab5f51e943ce2328734aaa740afc88d82a75ed58f84429e441a89ab1152b93562bd0efb40123405c9dbab1ffd34ab878e2da54dbff33f68e9694a7a6ff4300b +Description: Intel® FPGA Add-on using Intel® Quartus® Prime Pro 19.2 software supporting the Intel® FPGA Programmable Acceleration Cards (PAC): Intel® FPGA PAC® D5005, Intel® PAC® with Intel® Arria® 10 GX FPGA: Quartus® Prime Pro, Part 2 + + +Package: intel-oneapi-intelfpgadpcpp-a10gx-s10sx-quartus-part2-2021.4.0 +Architecture: amd64 +Version: 2021.4.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-a10gx-s10sx-quartus-part2_2021.4.0_amd64.deb +Size: 4560208828 +MD5sum: a413372b10ed60837e032dc623fb9aae +SHA1: 31f8483bc838c6e9988d578595b42049233d3459 +SHA256: f3539549242cb88a4a725b354c30697233886283007d2a6629830f7c85d0c6a8 +SHA512: 20f5e396f0a98b97e9d0b17139f965eb7e47c7d2e445d1767a07789f775b2378ab5cccb9906e31c8789108cc4ff83d25c60650a33cfbe40e2dac425f17ea0248 +Description: Intel® FPGA Add-on using Intel® Quartus® Prime Pro 19.2 software supporting the Intel® FPGA Programmable Acceleration Cards (PAC): Intel® FPGA PAC® D5005, Intel® PAC® with Intel® Arria® 10 GX FPGA: Quartus® Prime Pro, Part 2 + + +Package: intel-oneapi-intelfpgadpcpp-a10gx-s10sx-quartus-part2-2022.1.0 +Architecture: amd64 +Version: 2022.1.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-a10gx-s10sx-quartus-part2_2022.1.0_amd64.deb +Size: 4560207084 +MD5sum: 9a183b680fceda6063e7ce37a7d956c0 +SHA1: ba179d29e4d91dd8b78680508510150f475f9ada +SHA256: 364e49b149c42d79e9123f383b61acbca3527cc3713daa870df8cc6dfda23ce3 +SHA512: 7d05fa1498c279170234e9ebda0d98384a4fbe0ba7df89926b24d38c911edba8c6a6d29b65de60b8594f9a7fc5cd53661ef2839280e3afc96dad63a0dc620c89 +Description: Intel® FPGA Add-on using Intel® Quartus® Prime Pro 19.2 software supporting the Intel® FPGA Programmable Acceleration Cards (PAC): Intel® FPGA PAC® D5005, Intel® PAC® with Intel® Arria® 10 GX FPGA: Quartus® Prime Pro, Part 2 + + +Package: intel-oneapi-intelfpgadpcpp-a10gx-s10sx-quartus-part3-2021.1.1 +Architecture: amd64 +Version: 2021.1.1 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 7415312 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-a10gx-s10sx-quartus-part3_2021.1.1_amd64.deb +Size: 4701816882 +MD5sum: ccd5ac678a47d615a53e695144366dde +SHA1: 3533182eea2e7cf9b2c1641950474fbc5d66378c +SHA256: 52102bade770e9805ea0aed64daee7adaa88bc349f0614fb0d27305dcbf5bd76 +SHA512: af18365a8252da89251b6c53dec8be0dd21e26bc4881fa76cf5be2a4ed92051576f9563dc201d70d9768b0ff64e3e6523fccb88c429650985c142e11bc00ecac +Description: Intel® FPGA Add-on supporting the Intel® FPGA Programmable Acceleration Cards (PAC): Intel® FPGA PAC D5005, Intel® PAC® with Arria® 10 GX FPGA: Quartus Prime Pro, Part 3 + + +Package: intel-oneapi-intelfpgadpcpp-a10gx-s10sx-quartus-part3-2021.2.0 +Architecture: amd64 +Version: 2021.2.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-a10gx-s10sx-quartus-part3_2021.2.0_amd64.deb +Size: 4701794520 +MD5sum: 4022e6e648baa99a4d13618004f10ce4 +SHA1: 999f366e6851394578a604a26ab33b85109b5dce +SHA256: bb60202ca0a028014badb91fd47d421dfb2d04cbaa04934566e4410c4ff56639 +SHA512: 7765a345b4eb81811c1a0f5f6c40283571bb9d0a22a2a8f6bdd5e3f00c49974f628cf3a9f50a4b346aa3317df1a462793e587f6b7d5807cddfc4c879d4ffa58f +Description: Intel® FPGA Add-on supporting the Intel® FPGA Programmable Acceleration Cards (PAC): Intel® FPGA PAC D5005, Intel® PAC® with Arria® 10 GX FPGA: Quartus Prime Pro, Part 3 + + +Package: intel-oneapi-intelfpgadpcpp-a10gx-s10sx-quartus-part3-2021.3.0 +Architecture: amd64 +Version: 2021.3.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-a10gx-s10sx-quartus-part3_2021.3.0_amd64.deb +Size: 4701795948 +MD5sum: 73d15a1ebed77bcbadd5ba80a8d8c8f7 +SHA1: 5cff4808f0cac0e3c1280ac407300d042abba034 +SHA256: cbb403acbb32fe761b14627ff4ed05ce9b578adace8c4d0ad7af790b68e3bf03 +SHA512: c57ad10cce89f5de8b76143b812159330c59850b4da80014e7086db5c35563dfdcc8a555b5f8d18bb1b46940a36b3f285fa6f2461aaaaa380f8abbb07bf52524 +Description: Intel® FPGA Add-on using Intel® Quartus® Prime Pro 19.2 software supporting the Intel® FPGA Programmable Acceleration Cards (PAC): Intel® FPGA PAC® D5005, Intel® PAC® with Intel® Arria® 10 GX FPGA: Quartus® Prime Pro, Part 3 + + +Package: intel-oneapi-intelfpgadpcpp-a10gx-s10sx-quartus-part3-2021.4.0 +Architecture: amd64 +Version: 2021.4.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-a10gx-s10sx-quartus-part3_2021.4.0_amd64.deb +Size: 4701797034 +MD5sum: c44677608bd9b538a2d2c9286271dd4e +SHA1: 55eeecd4e360db170384d10238677691a7ab24a3 +SHA256: 6ad86432fb750e3f8d0da1666df249b710a3b0a7a2ec2957cfe218ee873aa705 +SHA512: b227fb746f612d8ed384c1cc64bb725316d12dc77e3a36c6b35545b56602054a78c0676b57c65d04124e623d21a32241cd4ca27874e1626eec69c92b4e98cbd9 +Description: Intel® FPGA Add-on using Intel® Quartus® Prime Pro 19.2 software supporting the Intel® FPGA Programmable Acceleration Cards (PAC): Intel® FPGA PAC® D5005, Intel® PAC® with Intel® Arria® 10 GX FPGA: Quartus® Prime Pro, Part 3 + + +Package: intel-oneapi-intelfpgadpcpp-a10gx-s10sx-quartus-part3-2022.1.0 +Architecture: amd64 +Version: 2022.1.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-a10gx-s10sx-quartus-part3_2022.1.0_amd64.deb +Size: 4701796022 +MD5sum: 1e6aaaaeb8c09c5164a67ea07d6e2128 +SHA1: 172e9173d874d517e11333dc13964c2320490959 +SHA256: 64f1856eaaa5ed4f55d494411abc52505592f87ad6c4a83ab14f3c33e8c83172 +SHA512: 045598134a4c06ec082b82a26735385583b9cd8d815f2c650ee860c90cac90f0578365e5d4fad6dab9d684ee450bff8b1f3f18539ff121f9d0e09e797b441a9e +Description: Intel® FPGA Add-on using Intel® Quartus® Prime Pro 19.2 software supporting the Intel® FPGA Programmable Acceleration Cards (PAC): Intel® FPGA PAC® D5005, Intel® PAC® with Intel® Arria® 10 GX FPGA: Quartus® Prime Pro, Part 3 + + +Package: intel-oneapi-intelfpgadpcpp-a10gx-s10sx-quartus-part4-2021.1.1 +Architecture: amd64 +Version: 2021.1.1 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 8720296 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-a10gx-s10sx-quartus-part4_2021.1.1_amd64.deb +Size: 7308668662 +MD5sum: 96818b841fc35d1c262d204d6b6ea9c1 +SHA1: a21d110f5e58f9d9c591673a0e6a14f180424432 +SHA256: 36bc0385ee0b83ac61c041ef9cde6bfcea61cc5fb7b1c36bbe6e05ccd8e2b76c +SHA512: ae6d4b281764861b6a83ced683b2fe7ce4536021a869ff5737466c68bc7776b7c6278f17408062ab4da97041145def4b26d5d7f0e3f097587597a9c44a492422 +Description: Intel® FPGA Add-on supporting the Intel® FPGA Programmable Acceleration Cards (PAC): Intel® FPGA PAC D5005, Intel® PAC® with Arria® 10 GX FPGA: Quartus Prime Pro, Part 4 + + +Package: intel-oneapi-intelfpgadpcpp-a10gx-s10sx-quartus-part4-2021.2.0 +Architecture: amd64 +Version: 2021.2.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-a10gx-s10sx-quartus-part4_2021.2.0_amd64.deb +Size: 7308702270 +MD5sum: 2c9c293d4347156b992fc6135575b41c +SHA1: b2ea36d61fc019a104dc0c53dfd9e22bb3c3607b +SHA256: 6fdd41ef29c7b0b11f00ef64576e3b16198119646cc08f09f8e834598f9587e7 +SHA512: bd01a047a8b6fc00375193389f03476b1ea8b9ffb922531694d58b8c6edc1b47e4698e4928d9bfa5d7fe432db49c77282976265ea83fb5394c7f80ae45d28f8c +Description: Intel® FPGA Add-on supporting the Intel® FPGA Programmable Acceleration Cards (PAC): Intel® FPGA PAC D5005, Intel® PAC® with Arria® 10 GX FPGA: Quartus Prime Pro, Part 4 + + +Package: intel-oneapi-intelfpgadpcpp-a10gx-s10sx-quartus-part4-2021.3.0 +Architecture: amd64 +Version: 2021.3.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-a10gx-s10sx-quartus-part4_2021.3.0_amd64.deb +Size: 7308702800 +MD5sum: 669ffae4239716f78ddc9cdd0da9ef42 +SHA1: 0524384e6a58e3925116cdbf3f8264c139c83e9b +SHA256: 1019ee4af18e2a8d975d9ec7e967f3d6e99b3549e0702a73f35fb375fdb8f5ce +SHA512: 9bb924d32f016eceac2a4b71f448806ddd5be21b96e755e83e6c0f396057f7b12b902c9e7a1d4975d88ad3631ddba8fa10d227d2de0de87a9d0cd53db2c2c6a4 +Description: Intel® FPGA Add-on using Intel® Quartus® Prime Pro 19.2 software supporting the Intel® FPGA Programmable Acceleration Cards (PAC): Intel® FPGA PAC® D5005, Intel® PAC® with Intel® Arria® 10 GX FPGA: Quartus® Prime Pro, Part 4 + + +Package: intel-oneapi-intelfpgadpcpp-a10gx-s10sx-quartus-part4-2021.4.0 +Architecture: amd64 +Version: 2021.4.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-a10gx-s10sx-quartus-part4_2021.4.0_amd64.deb +Size: 7308702236 +MD5sum: af4ced680399f1b5e183757adc4c9232 +SHA1: 31668e84cd4c3b468751b6b02a1fcff45337a5fa +SHA256: 30ec0882817aacfe3952dee3dad8ac7f6a2374c74e64a6a517d3eef5e4db0b9e +SHA512: 6749df9499d0096bd966e8c8b4aa67f0840146cbd4604c66119ef3995e453f5fc59c8565f5777a1c30854fc474e96a612de49bb39d66e777c86230b52c9df466 +Description: Intel® FPGA Add-on using Intel® Quartus® Prime Pro 19.2 software supporting the Intel® FPGA Programmable Acceleration Cards (PAC): Intel® FPGA PAC® D5005, Intel® PAC® with Intel® Arria® 10 GX FPGA: Quartus® Prime Pro, Part 4 + + +Package: intel-oneapi-intelfpgadpcpp-a10gx-s10sx-quartus-part4-2022.1.0 +Architecture: amd64 +Version: 2022.1.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-a10gx-s10sx-quartus-part4_2022.1.0_amd64.deb +Size: 7308702204 +MD5sum: 31e6b28429450db6b7803f757ae4205b +SHA1: d69803da1be45df07c6f19e174c31a397d50c094 +SHA256: 885a9e3d373c6cfe3f439c915cd539b23e92ecd7f8900c6fbd872a598cdf1c9c +SHA512: 1bfe31a06098bc97564f0d4959b16039c61e199a8c92c5da13de4f16bef54b1549d3546af422b329ed6f17b36e88b584deafb445b4a0f63d4b495d40972efeaf +Description: Intel® FPGA Add-on using Intel® Quartus® Prime Pro 19.2 software supporting the Intel® FPGA Programmable Acceleration Cards (PAC): Intel® FPGA PAC® D5005, Intel® PAC® with Intel® Arria® 10 GX FPGA: Quartus® Prime Pro, Part 4 + + +Package: intel-oneapi-intelfpgadpcpp-a10gx-s10sx-quartus-2021.2.0 +Architecture: amd64 +Version: 2021.2.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 2223040 +Depends: intel-basekit, intel-oneapi-intelfpgadpcpp-a10gx-s10sx-quartus-part1-2021.2.0, intel-oneapi-intelfpgadpcpp-a10gx-s10sx-quartus-part2-2021.2.0, intel-oneapi-intelfpgadpcpp-a10gx-s10sx-quartus-part3-2021.2.0, intel-oneapi-intelfpgadpcpp-a10gx-s10sx-quartus-part4-2021.2.0, python-jsonschema, python3-opae.pacsign +Filename: pool/main/intel-oneapi-intelfpgadpcpp-a10gx-s10sx-quartus_2021.2.0_amd64.deb +Size: 1176135412 +MD5sum: 84b629c4a8dc0f57a959419f5703a966 +SHA1: df018abf8cbb08244c5c64b112f7ea6e8b8d4761 +SHA256: 6e661323bbff6bdfc24f97fdf6919d853faf351e71610d6dc95a0b5c00142e58 +SHA512: 510c0900d7f08f58f95208051adc302bd7439d486fce0e4d936a19a7bf6112ddff833f9bfbfc3c41fd62ba528df465c08da334d8b2a432934a26a06264b613a2 +Description: Intel® FPGA Add-on supporting the Intel® FPGA Programmable Acceleration Cards (PAC): Intel® FPGA PAC D5005, Intel® PAC® with Arria® 10 GX FPGA: Quartus Prime Pro + + +Package: intel-oneapi-intelfpgadpcpp-a10gx-s10sx-quartus-2021.3.0 +Architecture: amd64 +Version: 2021.3.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 2263468 +Depends: intel-basekit, intel-oneapi-intelfpgadpcpp-a10gx-s10sx-quartus-part1-2021.3.0, intel-oneapi-intelfpgadpcpp-a10gx-s10sx-quartus-part2-2021.3.0, intel-oneapi-intelfpgadpcpp-a10gx-s10sx-quartus-part3-2021.3.0, intel-oneapi-intelfpgadpcpp-a10gx-s10sx-quartus-part4-2021.3.0, python-jsonschema, python3-opae.pacsign +Filename: pool/main/intel-oneapi-intelfpgadpcpp-a10gx-s10sx-quartus_2021.3.0_amd64.deb +Size: 1216008566 +MD5sum: 7d9226478fa2ada5e501b6cd1c94e078 +SHA1: 8418b24ff827fb6984f0f8603da27dd6ee678131 +SHA256: 6cc766da0dd8bb4c5472bc10092554e3df06d8aceb8a23455bb0ce0cebb2b420 +SHA512: 13251fc6d07c3a492156d15c9121eebc76818d0abffad60ab078790bc8417208e446d9ca9f00132256839c1e639a788559b86029be4b7af67347eaa233bcd4e5 +Description: Intel® FPGA Add-on using Intel® Quartus® Prime Pro 19.2 software supporting the Intel® FPGA Programmable Acceleration Cards (PAC): Intel® FPGA PAC® D5005, Intel® PAC® with Intel® Arria® 10 GX FPGA: Quartus® Prime Pro + + +Package: intel-oneapi-intelfpgadpcpp-a10gx-s10sx-quartus-2021.4.0 +Architecture: amd64 +Version: 2021.4.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 2262436 +Depends: intel-basekit, intel-oneapi-intelfpgadpcpp-a10gx-s10sx-quartus-part1-2021.4.0, intel-oneapi-intelfpgadpcpp-a10gx-s10sx-quartus-part2-2021.4.0, intel-oneapi-intelfpgadpcpp-a10gx-s10sx-quartus-part3-2021.4.0, intel-oneapi-intelfpgadpcpp-a10gx-s10sx-quartus-part4-2021.4.0, python-jsonschema, python3-opae.pacsign +Filename: pool/main/intel-oneapi-intelfpgadpcpp-a10gx-s10sx-quartus_2021.4.0_amd64.deb +Size: 1215768322 +MD5sum: 482d7935dd46c6cf5d9a465e9efac90c +SHA1: dd284e43829a50c3431c37c57d1ab679dad24484 +SHA256: c2e722dbe912bb6a7c5a27384fde49da05bd5088685e983b6f24a5f9ed607fda +SHA512: 75a3812232480ab9a68a54f6e77f3fb0039de3f32f04c0a95729ae67e73d609a2cec4f2a71c0437aa6b4c4a836d4c8457fbd8789df738a55f7a54d852fc7926a +Description: Intel® FPGA Add-on using Intel® Quartus® Prime Pro 19.2 software supporting the Intel® FPGA Programmable Acceleration Cards (PAC): Intel® FPGA PAC® D5005, Intel® PAC® with Intel® Arria® 10 GX FPGA: Quartus® Prime Pro + + +Package: intel-oneapi-intelfpgadpcpp-a10gx-s10sx-quartus-2022.1.0 +Architecture: amd64 +Version: 2022.1.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 2261880 +Depends: intel-basekit, intel-oneapi-intelfpgadpcpp-a10gx-s10sx-quartus-part1-2022.1.0, intel-oneapi-intelfpgadpcpp-a10gx-s10sx-quartus-part2-2022.1.0, intel-oneapi-intelfpgadpcpp-a10gx-s10sx-quartus-part3-2022.1.0, intel-oneapi-intelfpgadpcpp-a10gx-s10sx-quartus-part4-2022.1.0, python-jsonschema, python3-opae.pacsign +Filename: pool/main/intel-oneapi-intelfpgadpcpp-a10gx-s10sx-quartus_2022.1.0_amd64.deb +Size: 1215619694 +MD5sum: 9d0d416ac68c76492a815e0dffbbffdf +SHA1: 6c29df9df314a1480656c9541511536d35510c7d +SHA256: 21fa7a977df389bb69449ac53de75eceb8069a6558a11f003d42d5d081e08bb5 +SHA512: 4eb4f89933a9b6842831ffe69ac489605dc6d27ce9a633fefbde640c822f84eede8315631f5240b5a22abac21d9553b92521bc82597c6defebd1401780f3abb9 +Description: Intel® FPGA Add-on using Intel® Quartus® Prime Pro 19.2 software supporting the Intel® FPGA Programmable Acceleration Cards (PAC): Intel® FPGA PAC® D5005, Intel® PAC® with Intel® Arria® 10 GX FPGA: Quartus® Prime Pro + + +Package: intel-oneapi-intelfpgadpcpp-a10gx-s10sx-quartus +Architecture: amd64 +Version: 2022.1.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-intelfpgadpcpp-a10gx-s10sx-quartus-2022.1.0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-a10gx-s10sx-quartus_amd64.deb +Size: 1836 +MD5sum: d4b74994a72f880d59471061ed96a588 +SHA1: 1849a2d14fe057e6a3c71a16dba071edb7e7acfd +SHA256: 223fc21c37e704f3ba4040d65164cb20c42b3f6c004e336cfc2e3c90d69da5ee +SHA512: f34654f9664ec8a730ddf9a143b4cdaeacda9fdc8aaf1feb091028ff949dac2bf4b3bbf4e89e36fa6b9f8b37b2cccfc7f07668d57d1a21e74b62470dda5e6a7e +Description: Intel® FPGA Add-on using Intel® Quartus® Prime Pro 19.2 software supporting the Intel® FPGA Programmable Acceleration Cards (PAC): Intel® FPGA PAC® D5005, Intel® PAC® with Intel® Arria® 10 GX FPGA: Quartus® Prime Pro + + +Package: intel-oneapi-intelfpgadpcpp-a10gx-s10sx-2021.1.1 +Architecture: amd64 +Version: 2021.1.1 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 2226724 +Depends: intel-basekit, python-jsonschema, python3-opae.pac-sign, intel-oneapi-intelfpgadpcpp-a10gx-s10sx-quartus-part1-2021.1.1, intel-oneapi-intelfpgadpcpp-a10gx-s10sx-quartus-part2-2021.1.1, intel-oneapi-intelfpgadpcpp-a10gx-s10sx-quartus-part3-2021.1.1, intel-oneapi-intelfpgadpcpp-a10gx-s10sx-quartus-part4-2021.1.1 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-a10gx-s10sx_2021.1.1_ubuntu18.04_amd64.deb +Size: 1179978120 +MD5sum: ed7028ab0e68c25fc2dcb1fa14a2125f +SHA1: f04284b7a596371e4a8f3e6bf1d4c92776878bd2 +SHA256: 9797fa66cdee4a82a19f95d33d03a55867a5b5c36269e6b448b308fe5bd4d85c +SHA512: 1756d37b573354df8de2fb8b71e80568b6c202e93d83dfb588553cacefeef450db43e9c778c360111f328392bcb970cbc1d8e643bbb7625b00c9a697629be637 +Description: Intel® FPGA Add-on supporting the Intel® FPGA Programmable Acceleration Cards (PAC): Intel® FPGA PAC D5005, Intel® PAC® with Arria® 10 GX FPGA + + +Package: intel-oneapi-intelfpgadpcpp-a10gx-s10sx +Architecture: amd64 +Version: 2021.1.1 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-intelfpgadpcpp-a10gx-s10sx-2021.1.1 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-a10gx-s10sx_ubuntu18.04_amd64.deb +Size: 1656 +MD5sum: c3cb9bea755d288fc6221abf8db0b82b +SHA1: 2813363eb7c5cabe1b183529206e61d27195e09c +SHA256: 0ab3c30f1eb0b79d97d6a48b11b10ab018b9274c59bc81ad877dcd8c2985dbe6 +SHA512: 126fd244c6431d924e861ee2ac216fa76d0916e3f22f4c2c3a9a999a7fb6463637f529d63165c796e18dd281c5dd4f42a1933468eacda7ad1edb532795180d13 +Description: Intel® FPGA Add-on supporting the Intel® FPGA Programmable Acceleration Cards (PAC): Intel® FPGA PAC D5005, Intel® PAC® with Arria® 10 GX FPGA + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus19.4-part1-2021.1.1 +Architecture: amd64 +Version: 2021.1.1 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 15428456 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus19.4-part1_2021.1.1_amd64.deb +Size: 7482375568 +MD5sum: 2ca45b38c6624ca8e4934935cf676ccc +SHA1: a5c0a740e68d872e8c0ddf1fa10d1b5ca1a9452c +SHA256: db010586164999dcb559c3108cade61691c311965b59cd139ee339c0f97116c2 +SHA512: c40e45a94f3ee7eb73f42b412fd6d9a0c7efdf84138a438d12c473a002f71432629561a9c15b33648918c0af5faafd0b923002d5b53f20b670bb6eddf67b57df +Description: Intel® FPGA Add-on supporting custom platforms with Quartus Prime Pro 19.4, Part 1 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus19.4-part1-2021.2.0 +Architecture: amd64 +Version: 2021.2.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus19.4-part1_2021.2.0_amd64.deb +Size: 7482458830 +MD5sum: 7469a761fe7795a7e8a046493c64f0fd +SHA1: febc583dadb443cde638951e8bd4c5f10d62194d +SHA256: 83adfca157d388576515950f55c79f85c15f98afcb406c1765f4ad13794bf1fe +SHA512: ad748653fad640f73c2f090c08310744fb7e1861d5fb47ed4af5332aa7d22c2a3bf15eb164855ca5705f9ae93bab44e26a8298d9494d584b7475cb41d63d44be +Description: Intel® FPGA Add-on supporting custom platforms with Quartus Prime Pro 19.4, Part 1 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus19.4-part1-2021.3.0 +Architecture: amd64 +Version: 2021.3.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus19.4-part1_2021.3.0_amd64.deb +Size: 7482420102 +MD5sum: c634de12bedc4789859d79192f85b03d +SHA1: dff3d0b138c404a2bca1ef1e9f7b1ea76e971053 +SHA256: dae562ad8cf4c8311ffe318de0d279f466235e0d604ec82aaeaf47def34be076 +SHA512: bbc5214866fdf8a2ed2e389298dccbfa1eec3e91b97b26983f0aaf1a1b38ced5436df80039bf7ae86621f303f5ba90703bf33aa41a77cae4daa053438c9610cb +Description: Intel® FPGA Add-on supporting custom platforms using Intel® Quartus® Prime Pro 19.4 software, Part 1 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus19.4-part2-2021.1.1 +Architecture: amd64 +Version: 2021.1.1 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 6272484 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus19.4-part2_2021.1.1_amd64.deb +Size: 5801248532 +MD5sum: cd8d651e1da251c0bafe50c07dcf0fc2 +SHA1: 6e11b501b236a4b5469681cb092cb41c4c069051 +SHA256: b7f5510491cae2fedd4db7b000818f1bd50f4e9a505a5d8bd2ae2b1e7b3276be +SHA512: 6b24a26de384bf7a7aebc0bfd21810b0e80890254e225fedddbbf527e40750ab7aeed740183632772081c96a4018f65bf53dd8cb0f8ae811a5db3cbd0d101f82 +Description: Intel® FPGA Add-on supporting custom platforms with Quartus Prime Pro 19.4, Part 2 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus19.4-part2-2021.2.0 +Architecture: amd64 +Version: 2021.2.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus19.4-part2_2021.2.0_amd64.deb +Size: 5801238024 +MD5sum: 4df95b6cc53e3f2c3b09faa900a63fe3 +SHA1: ca5de090c99a47e61f1f8e2063beab7f1f79eb91 +SHA256: 90477771882bdfcc6fa9001267b01cc18343c8840ff2d9f0cc59fdbd472cd587 +SHA512: e7c32717ac4f7601ccc643e46080e34bf103624fe362a8271f246409cd9a3594e8fd671eddf9d0aa0b3ef63473bad37d7015015ede80f3a994051f4328dbfb5a +Description: Intel® FPGA Add-on supporting custom platforms with Quartus Prime Pro 19.4, Part 2 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus19.4-part2-2021.3.0 +Architecture: amd64 +Version: 2021.3.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus19.4-part2_2021.3.0_amd64.deb +Size: 5801239484 +MD5sum: a855b1498437314761fa0b68d906ec71 +SHA1: d008bb0987c9c24133563e8b86d32e744d0b7277 +SHA256: 988076cdb55718f80c5d6ec23f7b659c82c2099973ed1a8a7dc30f63608f64cf +SHA512: 21d7981bd7e8500347ef73d5a44e04836dd7311c5d2f4c5e0b5e7c82ea78010c681b207ebffc9cac4493844cdd7fbb926bdf40a627fd136bf51c78bd77dfe9a9 +Description: Intel® FPGA Add-on supporting custom platforms using Intel® Quartus® Prime Pro 19.4 software, Part 2 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus19.4-part3-2021.1.1 +Architecture: amd64 +Version: 2021.1.1 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 12152288 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus19.4-part3_2021.1.1_amd64.deb +Size: 9940476534 +MD5sum: 945a5dff59bf6cb65e825d3075095ce9 +SHA1: 015483b6ba8814aef35ff77c5d38f3f8ecd8584d +SHA256: 09df0e1b0a962fac5751473bfde41a4b4e19cb91d1e85df17eb578148cda6103 +SHA512: 2da339d10394446742cab2c50a646d92ae36e4938f7a674ece7b0dd4c7fde3b90d1417c38587a3ea0b79faa61b57c2baa5dca118978d39fc043133d7d3a17ce3 +Description: Intel® FPGA Add-on supporting custom platforms with Quartus Prime Pro 19.4, Part 3 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus19.4-part3-2021.2.0 +Architecture: amd64 +Version: 2021.2.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus19.4-part3_2021.2.0_amd64.deb +Size: 9940516266 +MD5sum: 01da820c9a38ca9283b76243ef862f65 +SHA1: 489fdc097b700612df87ebaeddb45b0d779dc75f +SHA256: 6d06472f0e3235e59e8aa2b0e603a8a04b1b26bd0683db5b506b046a43838f9e +SHA512: 212561d63551714a44a3b5d1d60409b72882cf0f260783375f27e529e3edbdb88b42413563198f1b32821aa58813a4be9ce9a9edb5d3f13b29064c141535b2c5 +Description: Intel® FPGA Add-on supporting custom platforms with Quartus Prime Pro 19.4, Part 3 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus19.4-part3-2021.3.0 +Architecture: amd64 +Version: 2021.3.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus19.4-part3_2021.3.0_amd64.deb +Size: 9940515320 +MD5sum: ea72c090aace722d5f4d77991c3d47a3 +SHA1: 7701d8b9526a4276614c837f29ae10f72a2e6fc9 +SHA256: 8964eaa63e32d9aa8a5776c623d756a32d5ec6e2b0b2876d7204415075a578f4 +SHA512: b004c835172a42d01f575854520fe1efcde497dc4220fc25e9dc8c4b26b9fbee035f8233d0ff4d851edb9d65e05c23fdca040eef6520d0893fd630e2e696f7e0 +Description: Intel® FPGA Add-on supporting custom platforms using Intel® Quartus® Prime Pro 19.4 software, Part 3 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus19.4-part4-2021.1.1 +Architecture: amd64 +Version: 2021.1.1 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 13724324 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus19.4-part4_2021.1.1_amd64.deb +Size: 7898119394 +MD5sum: 6a2596dd1ae84eb1987fb3f3934848ca +SHA1: 7135097cabf2822c13e9b5c509db0bd00dd02cc6 +SHA256: 9dea57045e39f02c5cff500fb0a03700713ca24e119b729860395e3aaf17e6f1 +SHA512: f505a95e5ad9c1d11e33d529464d74e723730eea7abbe0b5ae57248d78ece4c8d2f0a9abe9e831927c391b07f00a755812832e60bf1d18a395866453783435b4 +Description: Intel® FPGA Add-on supporting custom platforms with Quartus Prime Pro 19.4, Part 4 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus19.4-part4-2021.2.0 +Architecture: amd64 +Version: 2021.2.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus19.4-part4_2021.2.0_amd64.deb +Size: 7898115460 +MD5sum: b9918bfb35827c226de813439df95489 +SHA1: 3fec944fbe982b15e8204eca9a75acdd7b8e3d01 +SHA256: 46f340a6ebf882cab91355090f1783637081efe98e8514254f4800eb60214232 +SHA512: 8ec345db054951fa17092fa67673c27a430692ba22dbf7397fa8a717bff4d481073260dbf6f210aa965704dc7c0d4f9be496c3f4f2e72d3efe8478a6b3c3540f +Description: Intel® FPGA Add-on supporting custom platforms with Quartus Prime Pro 19.4, Part 4 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus19.4-part4-2021.3.0 +Architecture: amd64 +Version: 2021.3.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus19.4-part4_2021.3.0_amd64.deb +Size: 7898115276 +MD5sum: 9545853e5e6f80c748dcc89029416ddb +SHA1: 6f4ff1923ddf1638125494035367bb28bf3d8661 +SHA256: 33bd5c7f6d43cf8ce54bb359a8ae60518f145853f591dae7b4d11c19ec1e0262 +SHA512: ec245214e39bbe6d27f72998eca7e0a212af2367ee770d13497ef89a7ba8c69a17fe8e42de303554c047e82437b47413994ccef6908f949767002ea4ab526079 +Description: Intel® FPGA Add-on supporting custom platforms using Intel® Quartus® Prime Pro 19.4 software, Part 4 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus19.4-part5-2021.1.1 +Architecture: amd64 +Version: 2021.1.1 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 12458024 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus19.4-part5_2021.1.1_amd64.deb +Size: 6739690986 +MD5sum: c98b6ad6c7a0e6b6813385a75ce4bf55 +SHA1: d017ccab764609eeec6d8202424b8c30fe6b3208 +SHA256: 51f3539ce5b1168b4fa9aa302c903acc28ef06569d4fba6929794fd272fcbff2 +SHA512: 9261bc9ba09dc051bb218b2fe76808ce7a1976ef9e5ac2895afea07f5ed035a3295bf604247f3e9d30df5c947750a11bd6b76a909e0d93c1a728ca90b1dd4aaa +Description: Intel® FPGA Add-on supporting custom platforms with Quartus Prime Pro 19.4, Part 5 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus19.4-part5-2021.2.0 +Architecture: amd64 +Version: 2021.2.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus19.4-part5_2021.2.0_amd64.deb +Size: 6739659278 +MD5sum: a404f4763a8f0ce74090a26ff9bcb6d4 +SHA1: 6ffd8428e40d3d56d404ec4ac429a6682f058732 +SHA256: f61a88e5f54d3bb0029021d09b956ec310810ae36fe8d32398f2863c6a1be4f4 +SHA512: 247b4ac4ea1714fecb772f9aae917b15c652ab09b4e016ed1ba81e95f62a7e729fa3651056c8d8971130ebe93fe279dc284a2667625da250cfde8168b430b30e +Description: Intel® FPGA Add-on supporting custom platforms with Quartus Prime Pro 19.4, Part 5 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus19.4-part5-2021.3.0 +Architecture: amd64 +Version: 2021.3.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus19.4-part5_2021.3.0_amd64.deb +Size: 6739658450 +MD5sum: 60c1af2d5e7ba322c2afe5fff1b25ea6 +SHA1: 6a70ca98f33e7ea2675c08f6ee293b1641a8a12a +SHA256: 4a0444c47c8deee0c298e0b23ec699dda0a944623229b7d8b9e12164ab318863 +SHA512: 40fbab5de256fe3f26c472e3821fd6d11e12cb0b28a5b81cde8d9d5eb0cb2ce6c2e93894b560f5e8fa0b89d513450ce3f1b890d94c02c8d80d1f820edf43864a +Description: Intel® FPGA Add-on supporting custom platforms using Intel® Quartus® Prime Pro 19.4 software, Part 5 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus19.4-2021.1.1 +Architecture: amd64 +Version: 2021.1.1 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 76 +Depends: intel-basekit, python-jsonschema, intel-oneapi-intelfpgadpcpp-custom-platforms-quartus19.4-part1-2021.1.1, intel-oneapi-intelfpgadpcpp-custom-platforms-quartus19.4-part2-2021.1.1, intel-oneapi-intelfpgadpcpp-custom-platforms-quartus19.4-part3-2021.1.1, intel-oneapi-intelfpgadpcpp-custom-platforms-quartus19.4-part4-2021.1.1, intel-oneapi-intelfpgadpcpp-custom-platforms-quartus19.4-part5-2021.1.1 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus19.4_2021.1.1_ubuntu18.04_amd64.deb +Size: 6320 +MD5sum: 0ce02fec68b3139fae01b8dd52029ce4 +SHA1: b5f44426ba00dbfb31a834bfc3daa0dd578e9524 +SHA256: cc908d3ece00d85878549c2db109b8f83aea5abe23a265d8cf7746c3de08317c +SHA512: b33ad0432e63165cba1f620cac89ffd231bbf0938421a043d3ff17e663187bdedea93abdf02850dc60f79aa3695d0f2467fe9d06a6b36c226c6bf7bc108fdb07 +Description: Intel® FPGA Add-on supporting custom platforms with Quartus Prime Pro 19.4 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus19.4-2021.2.0 +Architecture: amd64 +Version: 2021.2.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit, intel-oneapi-intelfpgadpcpp-custom-platforms-quartus19.4-part1-2021.2.0, intel-oneapi-intelfpgadpcpp-custom-platforms-quartus19.4-part2-2021.2.0, intel-oneapi-intelfpgadpcpp-custom-platforms-quartus19.4-part3-2021.2.0, intel-oneapi-intelfpgadpcpp-custom-platforms-quartus19.4-part4-2021.2.0, intel-oneapi-intelfpgadpcpp-custom-platforms-quartus19.4-part5-2021.2.0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus19.4_2021.2.0_amd64.deb +Size: 372408 +MD5sum: 348841142e0a066d6eb4f67da8d3755d +SHA1: 3f28e81e26d829558f7fde97684423d408fa6176 +SHA256: 17109846bd98d59eb7d4fc7289c5c191f81b3fa3fd564acfc6ba2d2421cac46a +SHA512: 613fad1d08aeed4241c739c9ee72c74b03b96520c250527d3f66211b30a605297ec4e647578482a07066c23e5b572b469026cd05d15515fb05a892699838607d +Description: Intel® FPGA Add-on supporting custom platforms with Quartus Prime Pro 19.4 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus19.4-2021.3.0 +Architecture: amd64 +Version: 2021.3.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1700 +Depends: intel-basekit, intel-oneapi-intelfpgadpcpp-custom-platforms-quartus19.4-part1-2021.3.0, intel-oneapi-intelfpgadpcpp-custom-platforms-quartus19.4-part2-2021.3.0, intel-oneapi-intelfpgadpcpp-custom-platforms-quartus19.4-part3-2021.3.0, intel-oneapi-intelfpgadpcpp-custom-platforms-quartus19.4-part4-2021.3.0, intel-oneapi-intelfpgadpcpp-custom-platforms-quartus19.4-part5-2021.3.0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus19.4_2021.3.0_amd64.deb +Size: 362646 +MD5sum: fb9657b3825d5e0514b629c47c58be09 +SHA1: 926a00ad0006339c10715a30ca18db6f23786a8f +SHA256: 5052363e8e41bb60e5b48c9ca588aec551ef427a3e19cda01c78b63fe29d23c3 +SHA512: 3c526c28b85bdeeb6090c3f707a6dd164d8be89b7b7dbc4f83364704053b009dbcfc48c3be00301469f77d87903a304280075adb8289ab3265b64d6132803dfe +Description: Intel® FPGA Add-on supporting custom platforms using Intel® Quartus® Prime Pro 19.4 software + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus19.4 +Architecture: amd64 +Version: 2021.3.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus19.4-2021.3.0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus19.4_amd64.deb +Size: 1780 +MD5sum: 4cd3e4900bf594d2d3d510b7aed6562a +SHA1: f1334808e0cad2231bdf744fd207a5cab6371cd8 +SHA256: 68b5c7a8ba3c3725cf98dfa417a572f82176b6418990b829f0abc5a680aa2cba +SHA512: b03f254fb4ccf4ff06987df73f20009397eae214326061e989de17c970db8f520d848bac77a5f436b76fc9d68342bae5dba22ba0d337da7e0c3d0babc8f81ad2 +Description: Intel® FPGA Add-on supporting custom platforms using Intel® Quartus® Prime Pro 19.4 software + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus19.4 +Architecture: amd64 +Version: 2021.1.1 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus19.4-2021.1.1 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus19.4_ubuntu18.04_amd64.deb +Size: 1634 +MD5sum: 4b4019c81cc2737fa1ed27d750a8bea2 +SHA1: c6599eea0657f693c5f98ca4c5c5359209a42205 +SHA256: 4d340e5c77b9cd30d9d8d745d467ea99303f3ce1d33fa6005f712b406810df01 +SHA512: 2dea5bde77881a08b5f1dcfec4be4f2c28f35ef3d65916d45f9a9efcc62001aeeef57d7f73dc310915b96d8181ba9729916de29aa62be82c47092f1c6065f65f +Description: Intel® FPGA Add-on supporting custom platforms with Quartus Prime Pro 19.4 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.2-part1-2021.1.1 +Architecture: amd64 +Version: 2021.1.1 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 16473024 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.2-part1_2021.1.1_amd64.deb +Size: 7710477408 +MD5sum: ea84f81659a4017771781b9350f57582 +SHA1: 3b13dd6e54b4e835a6dd340f56a02dced4fa6a27 +SHA256: c1fc84b8aa49d35b5a35bf15e8e433452e5088e6491f712a981296c3d15ee1eb +SHA512: a1aa30f16e9b2007dde9001319b0ed74c562cb8597250d9e364d621135eb881bb640eb2eb42abd85dcd057c6d2ba1978391f49c0f3bee71f146e0b5bdc8b2cf3 +Description: Intel® FPGA Add-on supporting custom platforms with Quartus Prime Pro 20.2, Part 1 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.2-part1-2021.2.0 +Architecture: amd64 +Version: 2021.2.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.2-part1_2021.2.0_amd64.deb +Size: 7710589792 +MD5sum: 42b5ff23d255fff981c1b024c3ef6b89 +SHA1: fabaaff4784270171628474f9b2e266add70befa +SHA256: 3c62a03b0f76c50d5129a54e830c84405115fe4720602096981edefa11719462 +SHA512: 37e56979ed4df0486c85111f9bd8e3293db19b6649e51f128750c71f61edb01066598a9d0db6417f49d631a7ee4f28eca0a7fa3a9f7b3cbdd48c7ada7eb9606e +Description: Intel® FPGA Add-on supporting custom platforms with Quartus Prime Pro 20.2, Part 1 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.2-part1-2021.3.0 +Architecture: amd64 +Version: 2021.3.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.2-part1_2021.3.0_amd64.deb +Size: 7710484386 +MD5sum: 7498e6e789f42c020cec6afad4960071 +SHA1: bd0fef335536af0b56d43aab150f34359d02b918 +SHA256: c0c6df14eed6283c662b5512de7a5f30bc87826f50182d5d9803b7d71f770a4b +SHA512: 68500529fa3f33bf3793e1dd29a90a87cbd5846fa741697f8990a12825042aeec9243ace0d1a860cd30c4636b9cc165b3bad99fee633c8618ad84054745a1c9a +Description: Intel® FPGA Add-on supporting custom platforms using Intel® Quartus® Prime Pro 20.2 software, Part 1 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.2-part2-2021.1.1 +Architecture: amd64 +Version: 2021.1.1 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 5983200 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.2-part2_2021.1.1_amd64.deb +Size: 5662143320 +MD5sum: c29c7aff4f3bcfe17045f3b458d8df35 +SHA1: 91299463016511d5aa88d5d6cea0320d2eaa35de +SHA256: 61cd1bc5f655c931d5ce0b6acb49e6c1469c90302ae71b9d31cc0b7a8c9fa208 +SHA512: 6ad3a2726cb0bbf28ed7c2510e2917034af1350ea4b2334e03e5d277652a2d3d5620d8192778dce9f71f898aa41e97a2870698377ee171283caf2555c35148a7 +Description: Intel® FPGA Add-on supporting custom platforms with Quartus Prime Pro 20.2, Part 2 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.2-part2-2021.2.0 +Architecture: amd64 +Version: 2021.2.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.2-part2_2021.2.0_amd64.deb +Size: 5662144376 +MD5sum: 768f47e9184507a451dbda5763540152 +SHA1: 0bc3b459c91cf9ef145ac8890f65bc14f4f2da9e +SHA256: 69a71cccc6889785184c6ebb7d8d11e8023f2731714d3b5d4b49da75e8d24037 +SHA512: ac77c8ad309f001690d3253bf99a6735c83836ecdecce67992650229140570c8885853f9250fa445dd1ef1a2c2d9f9739102fa0690c7738800bd0d27dd90f2a4 +Description: Intel® FPGA Add-on supporting custom platforms with Quartus Prime Pro 20.2, Part 2 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.2-part2-2021.3.0 +Architecture: amd64 +Version: 2021.3.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.2-part2_2021.3.0_amd64.deb +Size: 5662144240 +MD5sum: 89eb2c34d38e38ade089777cbe8b266f +SHA1: 3df3824a7964680d3f38a190194164a20627f803 +SHA256: 7fd8ffaed2a2dcc2954f4da4a975dd7beae453de6d64efa4d233f822e7fe8a02 +SHA512: 7b223ab7aef416e5b1ff52c75cbff4092ca288bbaf2153001354d247b17387e582cf18c2ce2edbeb0d3eb5eeeede36946974ff5fa58d6440c8c1f794c95495a4 +Description: Intel® FPGA Add-on supporting custom platforms using Intel® Quartus® Prime Pro 20.2 software, Part 2 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.2-part3-2021.1.1 +Architecture: amd64 +Version: 2021.1.1 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 12123764 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.2-part3_2021.1.1_amd64.deb +Size: 9865257924 +MD5sum: 6679fbbf288e36301baef8302955b5ea +SHA1: db419a1938c7006d1aecf59504afa7174ee805e5 +SHA256: a96030e4a6bfaa147bc90493f271babed193a189d71a186e555418d9f5a35caa +SHA512: 3ca5ea8074b3485752a97b4f3396d752b922765022170fe3f2704511e1797646751b04ceee930e8caab8dfd557f0a805cb7eb289a227d2b7314a856938e8170b +Description: Intel® FPGA Add-on supporting custom platforms with Quartus Prime Pro 20.2, Part 3 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.2-part3-2021.2.0 +Architecture: amd64 +Version: 2021.2.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.2-part3_2021.2.0_amd64.deb +Size: 9865261174 +MD5sum: 08fa56e02e9f6710c4abfc9fc37ba370 +SHA1: 0d5a3a4c20aac41581b1fcbf9670c9eb4859a7d7 +SHA256: 0615a85bf2574a239e6ede45ce65f0eb2aca8f24fd9c4c0748ecd637b3636ff1 +SHA512: 414568dce8d403d8daf76114931990c3daad7f6ea07e1da574c5f496baac7542f149a0eebc32c2f857dc6afa0429642da7e4620acc32a73cb4a0cf54d7b97d16 +Description: Intel® FPGA Add-on supporting custom platforms with Quartus Prime Pro 20.2, Part 3 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.2-part3-2021.3.0 +Architecture: amd64 +Version: 2021.3.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.2-part3_2021.3.0_amd64.deb +Size: 9865260624 +MD5sum: a825f97f066ada14db6021e316200fd9 +SHA1: 64ddc87fa5459bc366f949a667df9a0ecdf52827 +SHA256: 0749d46b3f20abf118df394b8b0b958c29c66335cd9842c77b34f7b445a89a82 +SHA512: 662b783ecad3c22124689a855da9b56a3d871c5dd2911523e1669d46ccd62a58f69d84ce9d5704fb7cfcb277116f2dae59d978c296fc8498a07f83dfca625506 +Description: Intel® FPGA Add-on supporting custom platforms using Intel® Quartus® Prime Pro 20.2 software, Part 3 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.2-part4-2021.1.1 +Architecture: amd64 +Version: 2021.1.1 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 14336220 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.2-part4_2021.1.1_amd64.deb +Size: 8367170580 +MD5sum: 243d89b82b36b9f916f6a74c65daa084 +SHA1: d8e46644f989abef9c60bb91ec433774733ba8ab +SHA256: 909e2b56b1cb6b4e07540affb793ab8afcd80f0a31ec698c1df0a57031578ffd +SHA512: 9d2746b2e22e2009da10db7b5e79b9eb838fb4d372231ddcd9515fd5b71f92143904d16c96cf6ed475534694f0a5bf7c96f2808459193590d33d567e5c29651a +Description: Intel® FPGA Add-on supporting custom platforms with Quartus Prime Pro 20.2, Part 4 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.2-part4-2021.2.0 +Architecture: amd64 +Version: 2021.2.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.2-part4_2021.2.0_amd64.deb +Size: 8367147438 +MD5sum: 669ebfc63f990e322b0c9f0ec8a0c7ee +SHA1: 3c48bbe8d28b65b1ca8ff57da8fa5dca2b4e0ba2 +SHA256: c5834e9cb57eecf940733cf4b3bdb06085af24a0a7677e98e8232abe6f559a50 +SHA512: 842ae0c6c0eae851b5328b799a43db19a87ba8958621aa691bdba2c8d5406fe2f1c788b8e0127efc146042b3191dd0bc3620c9f52686960c938b2c2f133cd142 +Description: Intel® FPGA Add-on supporting custom platforms with Quartus Prime Pro 20.2, Part 4 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.2-part4-2021.3.0 +Architecture: amd64 +Version: 2021.3.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.2-part4_2021.3.0_amd64.deb +Size: 8367146864 +MD5sum: e4f32b9976f2757a873ab94a8c49f09f +SHA1: 37d28147b241e840913a23800dbfd0c156eae171 +SHA256: 141f77e712d06bcfedb202ff6c77b572e0345b57d58d060808cc421abf5975cb +SHA512: 50ffc965806e3b41976e5df9d52ed3bfa1783c095c8f9c18e989e328b3b6017ff49c0a78312f4757a47045b38dfd6797e20cbb309817478be042ba49ab58b4b1 +Description: Intel® FPGA Add-on supporting custom platforms using Intel® Quartus® Prime Pro 20.2 software, Part 4 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.2-part5-2021.1.1 +Architecture: amd64 +Version: 2021.1.1 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 16021076 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.2-part5_2021.1.1_amd64.deb +Size: 8482398100 +MD5sum: 9034f23ef3874f73e73a99d9fa63cc7a +SHA1: 1b3b804c86645315a09ea6afee154fd336447604 +SHA256: 5f39e89e0fb951d0e9c70e7fd923308762035657f7572e6b4ceb2b3b50ea8d7b +SHA512: 933fcce2ecbffdf9b20e5bdf8d241760caf93cebf26f92ef0823575d458aa3bb3cc4badff3c5b959ecd4cc8b28cde9c9cd05556682f3570ad741c9fa8844cfe3 +Description: Intel® FPGA Add-on supporting custom platforms with Quartus Prime Pro 20.2, Part 5 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.2-part5-2021.2.0 +Architecture: amd64 +Version: 2021.2.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.2-part5_2021.2.0_amd64.deb +Size: 8482391730 +MD5sum: 8b3689198743f037d6f99f56e0fec96e +SHA1: b087fbd43689a84a2fc59ecf245f775e1030ade3 +SHA256: 0f1ebfa50ecb6b7bcbd3cd050d55e189bf9e01bce35e9dfe6094cf9356babb90 +SHA512: 88656c70ac7e2cfb3f48f44fc207a089fe2e530c2d55979162116bb6cfed426e472d152ead53b3f8aa2d149727103483f4b3aa3392c2677be3cbe316fae23738 +Description: Intel® FPGA Add-on supporting custom platforms with Quartus Prime Pro 20.2, Part 5 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.2-part5-2021.3.0 +Architecture: amd64 +Version: 2021.3.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.2-part5_2021.3.0_amd64.deb +Size: 8482391676 +MD5sum: a96423a1da6aa6bc8ec952158cdd5548 +SHA1: 2e75917d5975ccb2de79b88ea7dac09c4ffd5ff9 +SHA256: f8247f077ec044d927b215c6cedd4b3d7477e421411adc50eb2405fea4b60a8d +SHA512: 040713477de5dbb111392bed3cbe242314fb42f394ff733e2e06369d6d880c537bb05620c3d006515c6dda285fcee643be7508a2a9cd6c93cbb852a4ba888b3a +Description: Intel® FPGA Add-on supporting custom platforms using Intel® Quartus® Prime Pro 20.2 software, Part 5 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.2-2021.1.1 +Architecture: amd64 +Version: 2021.1.1 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 76 +Depends: intel-basekit, python-jsonschema, intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.2-part1-2021.1.1, intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.2-part2-2021.1.1, intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.2-part3-2021.1.1, intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.2-part4-2021.1.1, intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.2-part5-2021.1.1 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.2_2021.1.1_ubuntu18.04_amd64.deb +Size: 6328 +MD5sum: 9037ac8327301973bfa4bb922d3beeee +SHA1: b3a198f5dd8aa4051bcd5b861072a218c9ce0ebc +SHA256: 7f5b017e8c41177cee1af61758c9e8cf882c0e32d0d28e3e781a2737c2e05358 +SHA512: b972b35ca7d7a03761449b702aa4c9a5030c8ae102a17d9b079f421a98a71ec3d4fc06455c7d17aa5be35bb94653b575a11222c4ad0730ed5c825173ce94ff9d +Description: Intel® FPGA Add-on supporting custom platforms with Quartus Prime Pro 20.2 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.2-2021.2.0 +Architecture: amd64 +Version: 2021.2.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1728 +Depends: intel-basekit, intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.2-part1-2021.2.0, intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.2-part2-2021.2.0, intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.2-part3-2021.2.0, intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.2-part4-2021.2.0, intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.2-part5-2021.2.0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.2_2021.2.0_amd64.deb +Size: 400152 +MD5sum: 4657c94b181b9637dd697760d071e541 +SHA1: a43a4ce36fb2ea7db9ab5df5f62640626ee66e44 +SHA256: ee0e598bdabaff9766a978d7c1142a8367f4907e71e67f45a89e3f533a30e2f3 +SHA512: e5cb6f14f393c9a130fadaafb8e2565fbcf1016d3d2167433816cc1240476cdfb32cf6debaa790ef1fdec8792f493c759d6c89e1a7411c5e464504fa1773d3b0 +Description: Intel® FPGA Add-on supporting custom platforms with Quartus Prime Pro 20.2 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.2-2021.3.0 +Architecture: amd64 +Version: 2021.3.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1776 +Depends: intel-basekit, intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.2-part1-2021.3.0, intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.2-part2-2021.3.0, intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.2-part3-2021.3.0, intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.2-part4-2021.3.0, intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.2-part5-2021.3.0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.2_2021.3.0_amd64.deb +Size: 389466 +MD5sum: 7a38b9208f7c44548146eedcba9f799b +SHA1: 1e68b8ba6bddf8dba8bfe382705b19d9e5e6cad7 +SHA256: 0ce0f40c385e2da82f2da52d66408cc361d693025cce12cae4fb986ed007ee11 +SHA512: ccf18f4020c2315807a30c2585642446c358ca374ec452d37da8c89cd7ea1919084eeb1926f13fb8285aca5ee81ac0e02d9ecee396d76e0d22b2a10be62c5aec +Description: Intel® FPGA Add-on supporting custom platforms using Intel® Quartus® Prime Pro 20.2 software + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.2 +Architecture: amd64 +Version: 2021.3.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.2-2021.3.0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.2_amd64.deb +Size: 1776 +MD5sum: 0a6ea3b5abcaa183dd9c1beed3cb60c8 +SHA1: 65d43d1910d6ba0472842cc352dc680ae8890254 +SHA256: 1c3f1d90f557941822762b6164ad603d05c402d9099b23277ad0e195b58f3928 +SHA512: fb102833fd71200427807db7ae4da25f343b15f62662a4e965014d0a9c1050bca43926637ad9df6890ee667de3812b77763f99c8174bcf0a57a7c237835ce57d +Description: Intel® FPGA Add-on supporting custom platforms using Intel® Quartus® Prime Pro 20.2 software + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.2 +Architecture: amd64 +Version: 2021.1.1 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.2-2021.1.1 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.2_ubuntu18.04_amd64.deb +Size: 1634 +MD5sum: b817bee6596dac898884b87995a451e3 +SHA1: dd1d0716c0b05934c14283e1f9be40678817ead1 +SHA256: 0187566946b19e3f439e26fb51e60e3c44c96f6938591cb358a45f0761fab23e +SHA512: 2a30e23a2a5589c88629e4adfb8485d31e603fc53f1527b717e04b73a0a2b4927dae1543f1fa97833bbe337feb07bd69461001980384dd8cde6dd197e4bb76b4 +Description: Intel® FPGA Add-on supporting custom platforms with Quartus Prime Pro 20.2 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.3-part1-2021.1.1 +Architecture: amd64 +Version: 2021.1.1 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 15009688 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.3-part1_2021.1.1_amd64.deb +Size: 6938093632 +MD5sum: 853b134202eb10bc654b402969e7270f +SHA1: 827e1bac0582b2158ce57c7942caa13be66c5cec +SHA256: e3240ba98c25a8f629f595446f0d2b1ab68c269d3a0c74efb07348ba1d55a1ee +SHA512: a37e8f15a17b888a447193526644175168599b4b299f212339f60b4514604ab51b36e5ab8fa4c0b64d57647dbc365b60a287d4f5c086d9a2e73e4e15a5a79a89 +Description: Intel® FPGA Add-on supporting custom platforms with Quartus Prime Pro 20.3, Part 1 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.3-part1-2021.2.0 +Architecture: amd64 +Version: 2021.2.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.3-part1_2021.2.0_amd64.deb +Size: 6938115926 +MD5sum: ff541212fa88a54ffe56b0c8449eb233 +SHA1: e8148109d73f70040de693d3f463cd86ef006150 +SHA256: 92041220b0736b55f5e8cbf5a0fd1a5a44a484d66666fa1a96c2cd4c0a69bae8 +SHA512: 5c3752a67e49db03a013d6203b8e1b5d279154bbd15c48698d4258934bbcefa6707140dc6b3da47d63476c80a660834693587aaaa572bb363c6660d34f3012d7 +Description: Intel® FPGA Add-on supporting custom platforms with Quartus Prime Pro 20.3, Part 1 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.3-part1-2021.3.0 +Architecture: amd64 +Version: 2021.3.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.3-part1_2021.3.0_amd64.deb +Size: 6938120254 +MD5sum: d6b5dbf8b75bbdaee3a42acc23347f38 +SHA1: f525e0da864091303cfc7c5f5f9b9685fca0b919 +SHA256: 6d3d9c4526b2f2e2bb623ad4e06e81733e129d870b6dc9a3d0934189eb24a7bd +SHA512: f0b5f14150cc3be22a547e8fcdea0252a42c13b1c9525958014e0d2881226c5251b3fd566c8620bddfeacc0d37b07d60b55ea0ac5cddd9ee926a795ab9598b9d +Description: Intel® FPGA Add-on supporting custom platforms using Intel® Quartus® Prime Pro 20.3 software, Part 1 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.3-part2-2021.1.1 +Architecture: amd64 +Version: 2021.1.1 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 6044560 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.3-part2_2021.1.1_amd64.deb +Size: 5707520448 +MD5sum: 459aaf418ea5765e1776d204460a1a14 +SHA1: 526ba628b0e1572df3b70732bd7eb7013bed2fbb +SHA256: 593d77ce14e07388b36d2a743347f77523e38a7fb4ec8a5bd4d495bca6d02f04 +SHA512: fde742f1e0071d26935fb2fff4c9ebcdecbd5528ec4b243967acbc12ecc0aeb15136006f3453f1ad80c0262342dea700853f6d65f04ab7342fc36b4147ef58b0 +Description: Intel® FPGA Add-on supporting custom platforms with Quartus Prime Pro 20.3, Part 2 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.3-part2-2021.2.0 +Architecture: amd64 +Version: 2021.2.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.3-part2_2021.2.0_amd64.deb +Size: 5707524138 +MD5sum: d01c59dd1c61f505f550e9d3ef563d68 +SHA1: 07d1391620db938a237939ef710d257b036f5680 +SHA256: dde064fc4f5c3b7d4ce584e539205b752a814b012ad7a6a4d57765d7c1e55058 +SHA512: 63416e7bcfa68cbc755fd6d3dc63f50a90ba07b535fc26bc971cf3c8658f5dc8f6b969d8d637de866e5126415c80607fa8255d218d11da738fa581f842044d7e +Description: Intel® FPGA Add-on supporting custom platforms with Quartus Prime Pro 20.3, Part 2 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.3-part2-2021.3.0 +Architecture: amd64 +Version: 2021.3.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.3-part2_2021.3.0_amd64.deb +Size: 5707523854 +MD5sum: 5428f2b66148103f8012c36b14e0ea4c +SHA1: e2bf906e584553d87e1e1e2a2483a1b8e1c536b1 +SHA256: d2c41890e042001b8c35d173bcf6586b64f92bd56a2eca22b07ca15d3459dda3 +SHA512: a83568b9a5449222d0b77733870456481b0f0e15b20ee34ac83db308b47f36240978598704c1d690be61acefe70adb389fe0e775c8b83bc209ed234e9d09c5d8 +Description: Intel® FPGA Add-on supporting custom platforms using Intel® Quartus® Prime Pro 20.3 software, Part 2 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.3-part3-2021.1.1 +Architecture: amd64 +Version: 2021.1.1 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 12143400 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.3-part3_2021.1.1_amd64.deb +Size: 9867464472 +MD5sum: 9c2cc8af2d864ef83e67837e5cbf6291 +SHA1: 9f249d6ec23701e3dd9cab8c10cba39f9b303ecc +SHA256: d1a952c90f7fda93c29543b9e4f1f4bfbd753f07cbb59c927d84ea0684892c6d +SHA512: c55c152d0edbe9bedfb1eded0c708a816f83a5611daec263330742f6e149a88816918f7acfc5fceb9d7a13322e177fa482bfda4f97bb1ae98e3193604a8e086b +Description: Intel® FPGA Add-on supporting custom platforms with Quartus Prime Pro 20.3, Part 3 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.3-part3-2021.2.0 +Architecture: amd64 +Version: 2021.2.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.3-part3_2021.2.0_amd64.deb +Size: 9867462334 +MD5sum: d1c1ca84aa6316c82cfa770f33decc74 +SHA1: 0939e512b5c089cf0e3755b8c0d83627f0fb6536 +SHA256: 8c50d6cdbb1c3c01671f1e8e26c6c47d8338fbefd2ce25eb3a1458ec44e44e67 +SHA512: 05d54d2e9b9c5cc1549e980854b24ba4b4818fdcc1198163d5b40b32db2d35762a5159668028449eb490bd5880ed461f58b6996ab3658b0af095ac5a379bbd72 +Description: Intel® FPGA Add-on supporting custom platforms with Quartus Prime Pro 20.3, Part 3 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.3-part3-2021.3.0 +Architecture: amd64 +Version: 2021.3.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.3-part3_2021.3.0_amd64.deb +Size: 9867462032 +MD5sum: e455c32b292879ebef27808513c552b1 +SHA1: 6d52a4d80ab87bc704072e30dfdb3229359d442f +SHA256: 6a0c783584351659eb2d740317523998b5b2d4c81eeee4fea1cd4c867427f7f8 +SHA512: daf5e57909cebcd5c8584eb4fbf044e7007b596f21cee0bb85f12fc8d210c4fca430da2f80a472dcf47911d016a7820680f979bfc343fcf68164b03766fa85fb +Description: Intel® FPGA Add-on supporting custom platforms using Intel® Quartus® Prime Pro 20.3 software, Part 3 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.3-part4-2021.1.1 +Architecture: amd64 +Version: 2021.1.1 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 13873884 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.3-part4_2021.1.1_amd64.deb +Size: 8287723040 +MD5sum: 4e4e7cfd44adfa4bed253a5dacd04cc6 +SHA1: 4f450c21e07ee41a3ac075ec50322d8886e43d32 +SHA256: 1243b1b533992c1d81876219d629c7ae668599c943cd1915b9d0fb901e08d098 +SHA512: 633e5f458a44163d4f8752d7978636b24370f4f46637a4a0a705f424f2757f5ca776d95f72b22399bc862ba1cd4bffcf4f637a7f6a23c2e6c61419e5fbf4abb3 +Description: Intel® FPGA Add-on supporting custom platforms with Quartus Prime Pro 20.3, Part 4 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.3-part4-2021.2.0 +Architecture: amd64 +Version: 2021.2.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.3-part4_2021.2.0_amd64.deb +Size: 8287780496 +MD5sum: 567aa66c7499fdf6f150a0c54be98a1c +SHA1: 92c757f72b185a39dac5d5d373bb24482ed1c10e +SHA256: c4e03761ba2913ad452cf9522ea46b3c127c17d87de94a5cd09120d40e85304e +SHA512: a0927cf5b32a25cf46c3ea8336deabfeaf47394ccd7470285c63978127c1268b5af129b8389b52a3057b013428c742394397927b0773d99a7a288e4e98e38bbf +Description: Intel® FPGA Add-on supporting custom platforms with Quartus Prime Pro 20.3, Part 4 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.3-part4-2021.3.0 +Architecture: amd64 +Version: 2021.3.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.3-part4_2021.3.0_amd64.deb +Size: 8287781196 +MD5sum: f3201cd175a901b4b317ff8a7af0f9c1 +SHA1: 46065b8698080429862db61fe60c090e8e5643ca +SHA256: 5591ef64f6503213eb96de69eb2768d5832ab4e6d1ef2d70198640182b92e776 +SHA512: aa04fb36b4409ff74687bcac3a0b2424e214fa2866e08e4a46b141a984e399eaa2ee3557411485c04d0c34421a0f1d912425873ee2e423c43f588a9767e06057 +Description: Intel® FPGA Add-on supporting custom platforms using Intel® Quartus® Prime Pro 20.3 software, Part 4 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.3-part5-2021.1.1 +Architecture: amd64 +Version: 2021.1.1 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 15594424 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.3-part5_2021.1.1_amd64.deb +Size: 8411828314 +MD5sum: 93608d13de86bbeab8f9504bc110af60 +SHA1: 4925321683c4bcc0893fb517761b200cbe7694d0 +SHA256: 6de715c90de607ed28c547f412cb1ff605ea1eb415a7e89ac8bab52509f8d2ee +SHA512: 801b2608e72b481460c327a6daba633a2c46c2f2727b1df5e939e58765579ddfc031a86cb91d16ff6634fcaa04e8d29b46973aa5fd60761920fd7485d55d90c9 +Description: Intel® FPGA Add-on supporting custom platforms with Quartus Prime Pro 20.3, Part 5 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.3-part5-2021.2.0 +Architecture: amd64 +Version: 2021.2.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.3-part5_2021.2.0_amd64.deb +Size: 8411850286 +MD5sum: 02cbcbf24c34850e8badf0dfe7e4ee89 +SHA1: 31fc2489b6e13db896daec45a99ac06823837ab6 +SHA256: 5def0a3419b11b9281a693b32b5b9caa18028dbeda3b53c6e8b4d35ae33246f2 +SHA512: 33912502a902ccec54cdc48d727a493543a064c13f718de241139a287f5de5e6d51ce38747ac9e27eea24e274625a0d3a33f2fcea6d14e46a1abde6046e46355 +Description: Intel® FPGA Add-on supporting custom platforms with Quartus Prime Pro 20.3, Part 5 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.3-part5-2021.3.0 +Architecture: amd64 +Version: 2021.3.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.3-part5_2021.3.0_amd64.deb +Size: 8411850494 +MD5sum: a2ccac5cec3e67010e04560ea6c41d52 +SHA1: ca417a05cee7dfed0a285f0d6222b38fdcfe3958 +SHA256: 66e72f4b6d9c035fbff0cfc7713e505a43250bf0e540828042b7a27edd19a3ed +SHA512: bb7dd6a3db08204d2e681ae7a834c3239cbf348ab94ab489c59d460581c1c54c2d85b5f68acdfbf59cead826451e810403fc7df68e3727daca9042582eb253d9 +Description: Intel® FPGA Add-on supporting custom platforms using Intel® Quartus® Prime Pro 20.3 software, Part 5 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.3-2021.1.1 +Architecture: amd64 +Version: 2021.1.1 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 76 +Depends: intel-basekit, python-jsonschema, intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.3-part1-2021.1.1, intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.3-part2-2021.1.1, intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.3-part3-2021.1.1, intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.3-part4-2021.1.1, intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.3-part5-2021.1.1 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.3_2021.1.1_ubuntu18.04_amd64.deb +Size: 6322 +MD5sum: 5f29d60a51f12d72e12955c12de84411 +SHA1: 706804c6a661c4571ea8dcfccb8fa8cc8f7e7bb9 +SHA256: 8729ede2009e52ed5e828e6c607cd4b8f19783538287830486882bc800d3d715 +SHA512: be3c1537cee0351eb0b1f20f5a0e463c546618125671afa8566d0f3de177f9f5d7ea88a0adc3a2303e1e98837b2076729a0eb15f4bcc8e9d108f68cb2cf06561 +Description: Intel® FPGA Add-on supporting custom platforms with Quartus Prime Pro 20.3 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.3-2021.2.0 +Architecture: amd64 +Version: 2021.2.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1708 +Depends: intel-basekit, intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.3-part1-2021.2.0, intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.3-part2-2021.2.0, intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.3-part3-2021.2.0, intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.3-part4-2021.2.0, intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.3-part5-2021.2.0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.3_2021.2.0_amd64.deb +Size: 374364 +MD5sum: 2540287e23c00107ab2194fb6708f227 +SHA1: 49ca863f4a587b405062650da2a611dd78f6d2e9 +SHA256: 60ee98172666e156457aaf945c4170aa368c01d74dc0ba34b5478765c0c89ef7 +SHA512: 5de0f3eee4c12bfe6cfc7d0bd2e5556c75b462cccd9b6ce6fa4734d5b7cdb28058de644ec2309a6d0c0ad50bdfa9cf8abe3d1726428067746afd38299ff1bd40 +Description: Intel® FPGA Add-on supporting custom platforms with Quartus Prime Pro 20.3 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.3-2021.3.0 +Architecture: amd64 +Version: 2021.3.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1756 +Depends: intel-basekit, intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.3-part1-2021.3.0, intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.3-part2-2021.3.0, intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.3-part3-2021.3.0, intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.3-part4-2021.3.0, intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.3-part5-2021.3.0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.3_2021.3.0_amd64.deb +Size: 378882 +MD5sum: 483cf99c526b1dad7f3d62e9c6328d38 +SHA1: ac44ac653a1bf8ff91dbf5014f44e4232c02db92 +SHA256: 611ac9828137ea32283630326282d39a475aa53a615c662a12feb9a9ff965fa6 +SHA512: 765a54d66650a81fba9e626416c27de3da65e947129ed24d59f38043a728ed44c4fee659594f4e026626a9214ef6af9df9b7aef065a60db36e8051dc9367b5e8 +Description: Intel® FPGA Add-on supporting custom platforms using Intel® Quartus® Prime Pro 20.3 software + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.3 +Architecture: amd64 +Version: 2021.3.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.3-2021.3.0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.3_amd64.deb +Size: 1776 +MD5sum: 75a86501838447af11691cf23c12fbd2 +SHA1: 0f5a1fc47be7a33e54ae90c42c7765b497afa1b1 +SHA256: d83c5e959ff80c03f9e1350d019c8e39619a77b64f79562f10abe1b3354f60e1 +SHA512: 3fff1d079371f82a6516622da478b38ee118e5b6e3f496792bce742b963b9dc3ee48bd6be5f357d468f5f1674326393133216f343bd6a51a48d2237a20f73459 +Description: Intel® FPGA Add-on supporting custom platforms using Intel® Quartus® Prime Pro 20.3 software + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.3 +Architecture: amd64 +Version: 2021.1.1 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.3-2021.1.1 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.3_ubuntu18.04_amd64.deb +Size: 1636 +MD5sum: ac828760a5afe2e9be7f03ccfa6b30cf +SHA1: d069d2e56eb1e6d44f3072841995e608415aae25 +SHA256: e03ccb5cac683cf6a89f7d00ada299cd43cc93fbbadca6d0d78843e600ca25c7 +SHA512: 166e11432a4e84b850fe13a383abe3410110091645c4c7723ecb33510097bc3e7e744d13d0aef9745b79137b91643a025aae6cb9dfbd925a7ca776db26af8955 +Description: Intel® FPGA Add-on supporting custom platforms with Quartus Prime Pro 20.3 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.4-part10-2021.2.0 +Architecture: amd64 +Version: 2021.2.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.4-part10_2021.2.0_amd64.deb +Size: 6493978416 +MD5sum: cd83e8c4a06d31ba436db88cc09ba69a +SHA1: 6c3a2b248947b486fdd3dcc1984525cf8ecf58e5 +SHA256: d91f5904f658cb8c21cba6bb3076c35a185a8c25003aaf3b37377b23acf8cd84 +SHA512: a930eadee4a36b55bd784e3a4b2635c9b61d19cd6af9d36237ae336787b7bc3bdc16fd161874c59875859f1e0800faa44153088927c615d018ddf1409ec9ba49 +Description: Intel® FPGA Add-on supporting custom platforms with Quartus Prime Pro 20.4, Part 10 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.4-part10-2021.3.0 +Architecture: amd64 +Version: 2021.3.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.4-part10_2021.3.0_amd64.deb +Size: 6493978920 +MD5sum: 6f4a7d73391c8d82d5911bc2af41a872 +SHA1: 2c2e6c4a42aa5ccc7a44e725ebf26e178e20b30e +SHA256: 948e764b969ce013e59ea97f550f0a636a8c16ca5062dd2c40ab591472f748ee +SHA512: ce9a8ab0df019cb90da78ff1e1cf775696fac865a26ed37166da6f741daf12197b71a3070418e1b476bc095548c4cf5e11b68388ef01b07b98439ba20953f293 +Description: Intel® FPGA Add-on supporting custom platforms using Intel® Quartus® Prime Pro 20.4 software, Part 10 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.4-part10-2022.1.0 +Architecture: amd64 +Version: 2022.1.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.4-part10_2022.1.0_amd64.deb +Size: 7051864418 +MD5sum: b56143770682238bbb85f9f7faa7d598 +SHA1: 6f998abad453afe700a66ae497696be46e19c828 +SHA256: 957a85dab5e5934c8e6e59ce60f3d677d6b59f96885d09a4fb99051afa781b0f +SHA512: 513c5bd790ca6435dcc09b92d59d882c17faf708fe990c4e8ebbd69deaeafd5641466d6798d46e3b3b894757662a0be2526bec434d1016b267293c791199053a +Description: Intel® FPGA Add-on supporting custom platforms using Intel® Quartus® Prime Pro 20.4 software, Part 10 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.4-part1-2021.2.0 +Architecture: amd64 +Version: 2021.2.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.4-part1_2021.2.0_amd64.deb +Size: 3133711200 +MD5sum: 5564a19c403b2b8266a309eb309978d4 +SHA1: e2ba5ceeb5fe2695fca2a3804d774937cebe7f3f +SHA256: a5747bef093038471270dfc544195360014c93e170a023ec46313510d0af1a70 +SHA512: 75064948fd8c21986d5a2bca0bf5131ff33e553664b0a157656afe76b816096f3f203bbc7756bc9e235e81ce24f65c5fe4acd2ac2cd9fe1208c93e2a98042c43 +Description: Intel® FPGA Add-on supporting custom platforms with Quartus Prime Pro 20.4, Part 1 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.4-part1-2021.3.0 +Architecture: amd64 +Version: 2021.3.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.4-part1_2021.3.0_amd64.deb +Size: 3133728500 +MD5sum: 871a19fafa4f2a432b3fc3fb96f4c78d +SHA1: 194e12464151ebcd46c6e81242c809e5c11be16b +SHA256: c8c7dfe9a96e2f9feffb207ace3369aa8498a3ba1be3d44c88d350e2535c9a74 +SHA512: 218533e01317c5e17de8df4d78905f0a591503288e48472b21f121adb2a71f7d720619128d0ee914b87276049e7f73e212899b1b17f1e3b8d7f0af903c3a9bd3 +Description: Intel® FPGA Add-on supporting custom platforms using Intel® Quartus® Prime Pro 20.4 software, Part 1 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.4-part1-2022.1.0 +Architecture: amd64 +Version: 2022.1.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.4-part1_2022.1.0_amd64.deb +Size: 3133748092 +MD5sum: 3fb61d31e69824e0d778373b7761e60a +SHA1: 9ed70014ee935ded294999b15336b2bcd7f2ef3f +SHA256: 677ef2426eaf75075f650bddaab80c6e33a627fdf93eea2825e33174cac5d96d +SHA512: 2a23bef6864ab8cf6209853b5605d56fffc9e2bb6d64029d57d9a2fdffb0ed6abebd7a546e9c78e3f7a36404c42c34fe4dbe8696ef3361acafa1bf818543452c +Description: Intel® FPGA Add-on supporting custom platforms using Intel® Quartus® Prime Pro 20.4 software, Part 1 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.4-part2-2021.2.0 +Architecture: amd64 +Version: 2021.2.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.4-part2_2021.2.0_amd64.deb +Size: 9088754764 +MD5sum: 04ee25166647151975184b4f219a8dfc +SHA1: 151f47e3b52bb0f8d26a7914146fdf3a3116a49a +SHA256: d720758d7ec64e695731959016a6fd7de3af48da6f5b883d7b10b89f9f640d9f +SHA512: 3e26aa8bfaae226f3e94551fe2bdc26f93ffe6f908329a16e6b948ed1524a1b242792f53697eac8cc8ce9caa6b69e034eff678ef3b077b1652acd63c429d49e3 +Description: Intel® FPGA Add-on supporting custom platforms with Quartus Prime Pro 20.4, Part 2 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.4-part2-2021.3.0 +Architecture: amd64 +Version: 2021.3.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.4-part2_2021.3.0_amd64.deb +Size: 5709423268 +MD5sum: c0c67c9c11d08ad6046adf0287568337 +SHA1: 132f7d7fea0b51380df30b78a27f1f7d30674a64 +SHA256: 3f23cd6a594c5af01d2591979c7708681dea2a8a1bc1ddb98783fda9ca6f7caa +SHA512: a6966b9e70828b4125e069ba51f3ba705faa99b4e05c6fd727fa2a7f0390aeb0a5ec6aef75e4175258e2e060f75cef036abdcd328f34ef4baee1d457756c9561 +Description: Intel® FPGA Add-on supporting custom platforms using Intel® Quartus® Prime Pro 20.4 software, Part 2 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.4-part2-2022.1.0 +Architecture: amd64 +Version: 2022.1.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.4-part2_2022.1.0_amd64.deb +Size: 5709423166 +MD5sum: 53385096259a648bdb4ec3f914ea03c6 +SHA1: 7b70f1af990109360e35641f7c45adba928bdf5f +SHA256: 401d60bf7e6d44f349f2767fdc6de4a5c3a0f29d14e5e310a6833f9f1cbf96c1 +SHA512: 6e073296927b9d1c944437aae383ef51f9441a26a6a8b120a50350ceff83001ac849de0bc5eb123e783f12b8818ee02d2a6f1f6cc1c481ac47da858bea00d3fa +Description: Intel® FPGA Add-on supporting custom platforms using Intel® Quartus® Prime Pro 20.4 software, Part 2 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.4-part3-2021.2.0 +Architecture: amd64 +Version: 2021.2.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.4-part3_2021.2.0_amd64.deb +Size: 9867459950 +MD5sum: 3b9741f27c4cae5787027a5bfcf8cc57 +SHA1: 4fc2bae4403ece2011f211643d0cc5dab1cbaa50 +SHA256: c88d60327f80972ab45b5f35c249f639d665ba823b100baec9740a2db260f71e +SHA512: 99e8b18e54a9190ac432a0ed5734907ab22f540499618884dfb150075540ae62ba6eb1a6593e25c5073601baab22c320e1cb2f5ab9d324fa1d17b784cd3b6f58 +Description: Intel® FPGA Add-on supporting custom platforms with Quartus Prime Pro 20.4, Part 3 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.4-part3-2021.3.0 +Architecture: amd64 +Version: 2021.3.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.4-part3_2021.3.0_amd64.deb +Size: 9867459330 +MD5sum: 517a964102b3cbf4704eeeaf16d1e3b0 +SHA1: 9a6b546e5b952a8eec754be85da91dca8415c848 +SHA256: 5106c579948027313f4bf495091080e3ea8c322335c59477b24d13b80176cdcf +SHA512: 435ace7cfd464ea16a6b1a9be5df5a1dea9a22c31894621af5a1930f827d383a3661a4ce31d85c2376ab00f6d122b36bdb518065c49dd952138974049165d42a +Description: Intel® FPGA Add-on supporting custom platforms using Intel® Quartus® Prime Pro 20.4 software, Part 3 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.4-part3-2022.1.0 +Architecture: amd64 +Version: 2022.1.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.4-part3_2022.1.0_amd64.deb +Size: 9867459750 +MD5sum: e22eb146a83f4a02e0c2b5dd97dedaf8 +SHA1: 08408ce6dd3c670eb2bd47b480a3c21cd894a895 +SHA256: d513a812f30f9bec82d1e84a752290c656adc9b363b9d55855c0a1b069ba1cf4 +SHA512: 00ae8537865152bf2d0bf6e74d41b6b8197042d1cb96cbd498f8da5b5adbaa81d04a3e0efc7e88d97db061d4efa19d9abe0982fc4e937e804097e988727adf67 +Description: Intel® FPGA Add-on supporting custom platforms using Intel® Quartus® Prime Pro 20.4 software, Part 3 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.4-part4-2021.2.0 +Architecture: amd64 +Version: 2021.2.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.4-part4_2021.2.0_amd64.deb +Size: 8288841946 +MD5sum: aaf9e3a5a67c5ee457242b0b9f39a317 +SHA1: 32570cb7e26e743cca6a9b634a516b8af169ad9b +SHA256: 847d29a795d84b7d18437268bbabc72a0d811573f3c85008f37fef176004d870 +SHA512: b57b5095ada8f0708968effbb57b7fb00ffe26cfb810d3a59ce6fafa82475d098c8e3731055d6b7620c7a63ff3de2eea9e3f4e397d253a9802b398bac8ed5473 +Description: Intel® FPGA Add-on supporting custom platforms with Quartus Prime Pro 20.4, Part 4 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.4-part4-2021.3.0 +Architecture: amd64 +Version: 2021.3.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.4-part4_2021.3.0_amd64.deb +Size: 8288842674 +MD5sum: 3209134b858f5e757a6097809df829de +SHA1: 63ec1cc2dc54e4938141bfd659ddfe935ee7dc66 +SHA256: 54c40c519525fd2e77c3062cff6cc1e5aca52e48d3f07c1c236d250050ab3d7a +SHA512: 887db7e19c58c8537589f13c0c4d56a343e97e70618bfd2985560970b107c63d7d7423c94ff502044df837bb8403557b80f60fd004204025729413d9a19e7ca9 +Description: Intel® FPGA Add-on supporting custom platforms using Intel® Quartus® Prime Pro 20.4 software, Part 4 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.4-part4-2022.1.0 +Architecture: amd64 +Version: 2022.1.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.4-part4_2022.1.0_amd64.deb +Size: 8288839448 +MD5sum: 4757e3c8bf5e50cd3ccd65f87d460ae4 +SHA1: 313afb5f5ba6e322f44350cfd843419b6acbc675 +SHA256: 5a142cdc527f6c08d2fe3effda7522f6d1c07bd05724844f608ebee1709ce3c7 +SHA512: b063454910e1a90aedf31ef76351076b337f68f7bf444d57930ba5570176f02730002153183525e6532819aa7a71e3b23de6a79c9e9fa2da11d2fb5a45978235 +Description: Intel® FPGA Add-on supporting custom platforms using Intel® Quartus® Prime Pro 20.4 software, Part 4 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.4-part5-2021.2.0 +Architecture: amd64 +Version: 2021.2.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.4-part5_2021.2.0_amd64.deb +Size: 8412690074 +MD5sum: 9ac511fb2e04f1ba27f7b32e33d60121 +SHA1: 0307bf2af8633f6ff5614c6c25330fb2cdbac509 +SHA256: e33feda640a19a56f5340ec38074f2f2c5a05bc8c790e3b6b106f943529e80c8 +SHA512: 78840c379b16cecb617cd6dead76d18ecccf8a16faa6bb2aaa6dcc44f3fe4048e7382269d582b11693c63aa4ba56eaaee792dacc16d46a87223488e362361d43 +Description: Intel® FPGA Add-on supporting custom platforms with Quartus Prime Pro 20.4, Part 5 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.4-part5-2021.3.0 +Architecture: amd64 +Version: 2021.3.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.4-part5_2021.3.0_amd64.deb +Size: 8412690504 +MD5sum: c8af8cbc7a3399d17264246decfeffc3 +SHA1: 748fa7b61d032f7f1dabc67a3e5380b4050271fb +SHA256: 9482256e975e84c010913d8d9b41672374fc334d2b11d6128001d556cf10e593 +SHA512: bb693f19ed5d8d9782cd40fc89420fbf4b55fbcd8ef3acb6fe23e8af0cc52908a14aa73efb62362ebe0544841ab2f9496f067c36c8c618f8c6bdce362fc12826 +Description: Intel® FPGA Add-on supporting custom platforms using Intel® Quartus® Prime Pro 20.4 software, Part 5 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.4-part5-2022.1.0 +Architecture: amd64 +Version: 2022.1.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.4-part5_2022.1.0_amd64.deb +Size: 8412691218 +MD5sum: d9f7ee34a7f94ab81f541df54646c2ae +SHA1: 5b79cae1ca6c148a40fbe1898be74cf0ff6b5fd2 +SHA256: 970bf58d68147614b9fca7f20c9c5db527ab1043a53ed96443a1a4de23d3c768 +SHA512: 3aad79a5e8b59b878c573dbf3d08c6843e637e257be67663a7f0ef7eb68116178e51c097ee4e90216a0cd4611e16617e45e494fbb0ef70cf59012a1f2b3268d5 +Description: Intel® FPGA Add-on supporting custom platforms using Intel® Quartus® Prime Pro 20.4 software, Part 5 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.4-part6-2021.2.0 +Architecture: amd64 +Version: 2021.2.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.4-part6_2021.2.0_amd64.deb +Size: 7650746302 +MD5sum: 06690478bcb8286fcf3e3c73ee1ca4d1 +SHA1: c6827fe208d52286571f7d5576b2fad7502e51a9 +SHA256: 81c2177a999ece80997e23368004b5ee36d946d442ff676742fdf89edd1376e6 +SHA512: 1a7c95f59d7b108dcc71f721b9859c21179ba5f34b50574730c97b62b9fb8c8cf2674d42a72440b5554c09334891cf80ece44123d04735177a13ca86dbd71543 +Description: Intel® FPGA Add-on supporting custom platforms with Quartus Prime Pro 20.4, Part 6 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.4-part6-2021.3.0 +Architecture: amd64 +Version: 2021.3.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.4-part6_2021.3.0_amd64.deb +Size: 7459001834 +MD5sum: 55a1c519d0db2557124290ac7b6befb9 +SHA1: 8b1cb44181890e7b42a8abf6c1d1ef0faf5cde0e +SHA256: 2a542e03d7da1403ece66e4dc4f19b61e1dcbc783b18fc50cea507c0d31dc50b +SHA512: 1f8ec3efa44c67f3f2526b3fe1519befd9d015e83d538a65e9b2ff7b8f2eebc93ef7729c235e4932665a99579c1a06b103a97a4e6b3ef1bf19c9411a741460e0 +Description: Intel® FPGA Add-on supporting custom platforms using Intel® Quartus® Prime Pro 20.4 software, Part 6 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.4-part6-2022.1.0 +Architecture: amd64 +Version: 2022.1.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.4-part6_2022.1.0_amd64.deb +Size: 7459001850 +MD5sum: f11a285e5fefb89ede3b81ab1a563d2f +SHA1: 05268e53b02bca855b8442a32540ee6a1ab4f39e +SHA256: c52f5a845111bb5457727d7393266abfda463595c339bcd2624eb9d561cff8d3 +SHA512: 281d7c8f08c7e83f8959f2f9845e8774a88829a05c7e98a03fdd38657d9d6b64a3020ffc8415af98070dc067b6cdc1fc98060e63518b6c2f101520681e3df818 +Description: Intel® FPGA Add-on supporting custom platforms using Intel® Quartus® Prime Pro 20.4 software, Part 6 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.4-part7-2021.2.0 +Architecture: amd64 +Version: 2021.2.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.4-part7_2021.2.0_amd64.deb +Size: 3338001938 +MD5sum: 0c6006ec0e2282e538be31522236b98d +SHA1: 9d200731cbded3ce105a25aa2581e0b7ddbb6915 +SHA256: a6cfdb3804db24465928d5f68ef51af0d10632dfd189104cc9cfc710cc03ef73 +SHA512: d930157d53aaef4173a9587c0947d50d041dbadf8a4eb8403e6049086c99ec28e3e43347c7d96195d448e5fc7d28a45de4dfc2c5a3f8b822e60c24fe2f1bd0de +Description: Intel® FPGA Add-on supporting custom platforms with Quartus Prime Pro 20.4, Part 7 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.4-part7-2021.3.0 +Architecture: amd64 +Version: 2021.3.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.4-part7_2021.3.0_amd64.deb +Size: 3338001808 +MD5sum: 883de6f06943197b6904e98d45ab2328 +SHA1: 41744c38426c38d1a4aefc7fa2580dfe7b97cb82 +SHA256: 9dce9d0476b626212899c4634c4b142a88ca5f65b00dbe0eb72ede76c393bef9 +SHA512: a602f8149b7365bcf803c8b21316adac54c22187b427c7977aaadfd61d96a1197804f1add020585b0fd1caf5b582a69856f7547b077d1e7527bd6fcd59dc9556 +Description: Intel® FPGA Add-on supporting custom platforms using Intel® Quartus® Prime Pro 20.4 software, Part 7 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.4-part7-2022.1.0 +Architecture: amd64 +Version: 2022.1.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.4-part7_2022.1.0_amd64.deb +Size: 3338002220 +MD5sum: e0d777a65e1016c6ce00a108f4f205a9 +SHA1: 203f9423bccacb33ec683c23a238f7f5fa4d33af +SHA256: ed25bcbf7f4981e8d354a6f3f7a607ccc322dc8b49f093de48a11cea5f3b104a +SHA512: db235363135a07258fce883ed3e8b15f0058761e7f1db5cff2cacd5b8777ad40468d6bb2b1c0c0ee4836d6db18960178c1c5367056f45d43f0ac9a3e92dfc8c0 +Description: Intel® FPGA Add-on supporting custom platforms using Intel® Quartus® Prime Pro 20.4 software, Part 7 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.4-part8-2021.2.0 +Architecture: amd64 +Version: 2021.2.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.4-part8_2021.2.0_amd64.deb +Size: 2402028766 +MD5sum: 4fa2745d74bba940575cb48413ea924f +SHA1: ebb0356b1b62a3fad01f84cb374252281f4dc2f5 +SHA256: 1ebee44aef172aa06301057bc3f82aa455a446da020ffeb4b0621e56a5c081ca +SHA512: 535dd32080c71f411c0ae905b6ec821add03537aa8e3bfc10610293c5421132c21e8b6e172c6c68e67ad044fb530c521b303f96dec5ae1e5ea55796f2c696f40 +Description: Intel® FPGA Add-on supporting custom platforms with Quartus Prime Pro 20.4, Part 8 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.4-part8-2021.3.0 +Architecture: amd64 +Version: 2021.3.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.4-part8_2021.3.0_amd64.deb +Size: 2402029224 +MD5sum: dc90298653befdf437e7d3d958ce16d6 +SHA1: 12686e1c4eaf04b671cbbc7ebfbdf36170db6992 +SHA256: 1e73361f56607beaaf994ea3d7770441110054503daa62e621706db52f4f880b +SHA512: 9b4d894227493a98a8f99c9802e2975cc91079aa22389014ede9f48fe6897effe33996618e6a60e62cdfc652f66544d5ea4d165c9c19ca6aca879836fe86acf0 +Description: Intel® FPGA Add-on supporting custom platforms using Intel® Quartus® Prime Pro 20.4 software, Part 8 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.4-part8-2022.1.0 +Architecture: amd64 +Version: 2022.1.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.4-part8_2022.1.0_amd64.deb +Size: 2402028648 +MD5sum: 12a3ac8e0c988263dc2a58b530d0bc0d +SHA1: 28fdb600ea5078c4bde0e68308b2b4ecd384e27a +SHA256: 5e71fe3e9050ac264944b7142ff9eca9d33574f3ba155a052996c8f603bd9ef8 +SHA512: b0863d2ef8ce54633288292261356062d5e43618e160d16c339c975bc27eb6f20e0b8d7c8f6ef92bec57bed68bda671f62fe27488c870812e664932c141301bc +Description: Intel® FPGA Add-on supporting custom platforms using Intel® Quartus® Prime Pro 20.4 software, Part 8 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.4-part9-2021.2.0 +Architecture: amd64 +Version: 2021.2.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.4-part9_2021.2.0_amd64.deb +Size: 9505884398 +MD5sum: 34d37d5fc31831687bef728eaafab8f6 +SHA1: 0e6bba2dabea08961314f9b4613c5b210f75f395 +SHA256: b795136584ae3617630fa8508f6d065b295e0e1af91b8eada4a59e36ed5d7395 +SHA512: 7b0f8c02c86a9e78a195db629018233753f0fe5b76e2fc51b49389b19c5c2524b165ec26b5b2ed0bd70975b8b10f9236848c739b3928b782ad6974fdd93dabf9 +Description: Intel® FPGA Add-on supporting custom platforms with Quartus Prime Pro 20.4, Part 9 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.4-part9-2021.3.0 +Architecture: amd64 +Version: 2021.3.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.4-part9_2021.3.0_amd64.deb +Size: 9505884246 +MD5sum: 0347781114914506fa85640b94e90655 +SHA1: 218a3e4bf8cc7a0b0477e5ac4ad8daa5a01f76d7 +SHA256: b279592c587982390c5e172d4a140bc6b02b12501e6cc095a82c24d940707716 +SHA512: e8e99b5497e8de500e5946e438ca889b153c475928d904b4b2b01be339d531f625aea7278b519b7cb166f48baf3ec858ff3b612a77554be4c7e515902b9a545a +Description: Intel® FPGA Add-on supporting custom platforms using Intel® Quartus® Prime Pro 20.4 software, Part 9 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.4-part9-2022.1.0 +Architecture: amd64 +Version: 2022.1.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.4-part9_2022.1.0_amd64.deb +Size: 8947995550 +MD5sum: 300fcdd64ec960a99d1b6636bc22e829 +SHA1: e66cb0e1e2ea33bc265243b3355389c442fc56d7 +SHA256: f20247e1e35eab1016538a5848fd94f79b691e7af206a773ba3b5f03b4ecb693 +SHA512: 1c729a65d49b0f487deb49380f13d054c70b5300ae0065ecefdd9af0f70e71259d5494fd7620c91cb03c5d5e52ebd8e8b4b485c22e243f7c3fa8687bda67c2f5 +Description: Intel® FPGA Add-on supporting custom platforms using Intel® Quartus® Prime Pro 20.4 software, Part 9 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.4-2021.2.0 +Architecture: amd64 +Version: 2021.2.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1708 +Depends: intel-basekit, intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.4-part1-2021.2.0, intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.4-part2-2021.2.0, intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.4-part3-2021.2.0, intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.4-part4-2021.2.0, intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.4-part5-2021.2.0,intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.4-part6-2021.2.0,intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.4-part7-2021.2.0,intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.4-part8-2021.2.0,intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.4-part9-2021.2.0,intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.4-part10-2021.2.0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.4_2021.2.0_amd64.deb +Size: 375242 +MD5sum: cad8dcf00883e12ac994ee359e290027 +SHA1: cf2cb08dc14d1f4df1a6f8c67fefac0f7cad7ed3 +SHA256: aef02089e01750bd6efc4c3fbba3077f9c9e65b7f1c68cd1e32014c32a4dec1f +SHA512: 49991a00a6c3be156ed637e4be5ce967b3267ba091c1ef2d676812e59988887a3de4eb185b276138ceccca3fe1aa0f65b4b88f46b1cc5d5ed78cba72e2478aa8 +Description: Intel® FPGA Add-on supporting custom platforms with Quartus Prime Pro 20.4 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.4-2021.3.0 +Architecture: amd64 +Version: 2021.3.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1756 +Depends: intel-basekit, intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.4-part1-2021.3.0, intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.4-part2-2021.3.0, intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.4-part3-2021.3.0, intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.4-part4-2021.3.0, intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.4-part5-2021.3.0,intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.4-part6-2021.3.0,intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.4-part7-2021.3.0,intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.4-part8-2021.3.0,intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.4-part9-2021.3.0,intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.4-part10-2021.3.0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.4_2021.3.0_amd64.deb +Size: 388838 +MD5sum: 838aca1959c0c658d813a800401bc1bf +SHA1: a23e19c33e646f3811a06b66f7422c5accb88724 +SHA256: 395c72f6317787fbaa07b19f7a5707f6c873b372cef3dbc4f30692d3c08778c9 +SHA512: 49bdfd1669e579f7731f3408e809ce92b0a4c0ed4dc85bbcbd838c97a8b5d783145be4f00da7874df8d38eaa033665e293c7f93f2ab10d425471adbe839043f3 +Description: Intel® FPGA Add-on supporting custom platforms using Intel® Quartus® Prime Pro 20.4 software + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.4-2022.1.0 +Architecture: amd64 +Version: 2022.1.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1756 +Depends: intel-basekit, intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.4-part1-2022.1.0, intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.4-part2-2022.1.0, intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.4-part3-2022.1.0, intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.4-part4-2022.1.0, intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.4-part5-2022.1.0,intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.4-part6-2022.1.0,intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.4-part7-2022.1.0,intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.4-part8-2022.1.0,intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.4-part9-2022.1.0,intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.4-part10-2022.1.0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.4_2022.1.0_amd64.deb +Size: 395464 +MD5sum: 463bdf68c9d107b8fbf35ddcde4f3c66 +SHA1: e004f02efac04e1450c9a6f6a0fd33b24ca95e83 +SHA256: 5eb6bf99c484cc5f3a490824ca4100ee3e1b5e8a86f036c2ce986457debcd2f7 +SHA512: a6df859aea1edea9d313b3508b5fb01a36a9b1393b61efb60df20b30ca4930feffc448eef833557460ed5d744893b182afd5fbb09c52bf83632890b7781af324 +Description: Intel® FPGA Add-on supporting custom platforms using Intel® Quartus® Prime Pro 20.4 software + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.4 +Architecture: amd64 +Version: 2022.1.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.4-2022.1.0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus20.4_amd64.deb +Size: 1778 +MD5sum: 55ff396e6ea15d55cae260b0ca17c3d2 +SHA1: 7dd10e4b356fa03219ff38c29c8909b9422afce4 +SHA256: fc4b23a58710f84f91fd25bea4acbaf2f509de51b5b355b891e9b0d80b838ebc +SHA512: 9b34424d046005acdc257d53c62122b18cd474f1f4a55ea754bf9318512c2ac35c2bc704e3657c77ac89e0e1175dbf40bb23efdafa289f8971d0ba4e4706f11b +Description: Intel® FPGA Add-on supporting custom platforms using Intel® Quartus® Prime Pro 20.4 software + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.1-part10-2021.3.0 +Architecture: amd64 +Version: 2021.3.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.1-part10_2021.3.0_amd64.deb +Size: 4645785054 +MD5sum: 49d8bbeb530e9b942282d2090eec3738 +SHA1: 0ac0e917665569894010d4a2fcd4a704004ecbb1 +SHA256: 35fea1bf1a2c40248a334cc75a52cfd907187d50f902eb7410ed6981ba1d2efd +SHA512: 5c8a20e067073c3e78b0a1420c83615f418cb8c26fa4f42275aa28d7f114c10e307069beee0be2ee51f66f96c69292c8ee14120803989019aca4cc1937a81708 +Description: Intel® FPGA Add-on supporting custom platforms using Intel® Quartus® Prime Pro 21.1 software, Part 10 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.1-part10-2022.1.0 +Architecture: amd64 +Version: 2022.1.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.1-part10_2022.1.0_amd64.deb +Size: 5066562772 +MD5sum: c95ff490a171a810f692b24d7665c070 +SHA1: f920c2368e95fa3a7e208eb3692f3da08f8dee3b +SHA256: 0dde4aa05de0c6116d2eb823445ad8d9c7305a43ae3ed0a79f8fcb1774914065 +SHA512: 9cd03a20cd6d0359cc31cea41ce37edfd32b8517466e8a13a01bc8b4aea95a454c46eb642a269502cedda39f760b3f8a45b69a70597e95d583991207b6cfa735 +Description: Intel® FPGA Add-on supporting custom platforms using Intel® Quartus® Prime Pro 21.1 software, Part 10 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.1-part11-2021.3.0 +Architecture: amd64 +Version: 2021.3.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.1-part11_2021.3.0_amd64.deb +Size: 8691593398 +MD5sum: d6af51b155e81fd9a02c200d2db2fad0 +SHA1: 10a2b2e0bc1c9020175739e8286980a157031349 +SHA256: 7c84b41102e5e9032d93859344ca2bc2c93a1a8eff06af015dfa946c04a9d52c +SHA512: bccf9e42e82129b4e0d3d151856dfb5517fe921602e8b0e2755a889abda2e7dcd06d03c908afffefd1389459e27d49fcbfed36c23fa5fea90c94ac6ead41f6ca +Description: Intel® FPGA Add-on supporting custom platforms using Intel® Quartus® Prime Pro 21.1 software, Part 11 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.1-part11-2022.1.0 +Architecture: amd64 +Version: 2022.1.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.1-part11_2022.1.0_amd64.deb +Size: 8691593426 +MD5sum: a916e25e6c916c0b53f3791f0b22dbb3 +SHA1: f18673716eaa2ede8f9594d4e2d46270444db71c +SHA256: c8b151b9afa5bed6518e1eaa19fccc027c42fbf2d5ab0623c1dfca76e62935bc +SHA512: 086b2f4c3ed126b198cc858e87632820bb8835e7c08ab1348c4e91786daefd8a41bd147f1923998bb55cd917d0a82ddb372d46a0a2b112ac0a318d5aaf6107cb +Description: Intel® FPGA Add-on supporting custom platforms using Intel® Quartus® Prime Pro 21.1 software, Part 11 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.1-part1-2021.3.0 +Architecture: amd64 +Version: 2021.3.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.1-part1_2021.3.0_amd64.deb +Size: 3249276208 +MD5sum: 215669b8083c668f30892e0bab0ec9db +SHA1: 31fc5a7af76e8676e03adb9e62cbc6aa2c1a8531 +SHA256: bfad5d03da09499f08651bda651dec926c4de2bcb5c574f76030536a5f341d86 +SHA512: b95d6e99904a07a3c9e6dab8058827385b43910553e5dd0110f538c9bcddf7083678347664554601d921d9dd90229735c0a776aca5b3f07ff9597ebf9f195c36 +Description: Intel® FPGA Add-on supporting custom platforms using Intel® Quartus® Prime Pro 21.1 software, Part 1 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.1-part1-2022.1.0 +Architecture: amd64 +Version: 2022.1.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.1-part1_2022.1.0_amd64.deb +Size: 3249255088 +MD5sum: 88a04998efb202b91167e3b714ce9096 +SHA1: 08a4d969c10b2900df6a1f027c5f0e93377e4693 +SHA256: 810f1cddf39aa37ec45a36bfd978e3bb74fe720b794947641961c3aa4b749bad +SHA512: 8e3cd9ed9a655f3f29d5f0fbc3b5b54f67e18d5a664df26e3cea6e0b3b50dbd78cd3192c2e31027ba13dbf6da194e6757baec56344562f91940d47bdc3dcd8d4 +Description: Intel® FPGA Add-on supporting custom platforms using Intel® Quartus® Prime Pro 21.1 software, Part 1 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.1-part2-2021.3.0 +Architecture: amd64 +Version: 2021.3.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.1-part2_2021.3.0_amd64.deb +Size: 5920400698 +MD5sum: 731aad5f972fe70a073906cc5cd9f092 +SHA1: 9dd5cabaaadd053c84694b633357f9cf57bc37a3 +SHA256: 659c77ed33eb361ec68640b2aa458c7f3a2954088be0080df6003966b455a2a8 +SHA512: cfeb69c11d3e3c7283a167e00480467ff516a2010476c81fedc992afcbcd143a419789599264393db2e5bbedd142bf69bf21f0de695e817766b7ac4035f54485 +Description: Intel® FPGA Add-on supporting custom platforms using Intel® Quartus® Prime Pro 21.1 software, Part 2 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.1-part2-2022.1.0 +Architecture: amd64 +Version: 2022.1.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.1-part2_2022.1.0_amd64.deb +Size: 5920405490 +MD5sum: 7aae8d1045abc173f9eb0f52224ffddb +SHA1: ed37721a6d8c769fc6ee11e738408f9d9dbe89cb +SHA256: 2947c9e09209c359e6d69feca22f0d7a589bc498aebbb2674ff616082da0dd44 +SHA512: 0969f8f57838f68aeec911d8fd2cb5471284e687e75fb777f754aec3aed560c15f78640a14d23ccbe7747994367af19fda073a218ce061480926985c3a309fb1 +Description: Intel® FPGA Add-on supporting custom platforms using Intel® Quartus® Prime Pro 21.1 software, Part 2 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.1-part3-2021.3.0 +Architecture: amd64 +Version: 2021.3.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.1-part3_2021.3.0_amd64.deb +Size: 9867135218 +MD5sum: c4f2bb48ede8d5197cb4cb1190979225 +SHA1: fc4efb93aa7eba22cfa1f3770b83856dde6ad7b4 +SHA256: c02c0612ed94670ff675e7a16a7bfcfbb7866b86057cdda1937afca242ad6bf6 +SHA512: 4833d6ff5f2b4484f36ed7cb48674999dacb9d90cc7a8db3c306cd5eefa7fb8e218eb3f715b339c578518b71f749022b9f78634360e63c34038a6dc6b09f118a +Description: Intel® FPGA Add-on supporting custom platforms using Intel® Quartus® Prime Pro 21.1 software, Part 3 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.1-part3-2022.1.0 +Architecture: amd64 +Version: 2022.1.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.1-part3_2022.1.0_amd64.deb +Size: 9867163364 +MD5sum: 061b655258cbb7a953f3689182c902b8 +SHA1: 48d9606ea921c96023b0ea8f0e8f17425a57ff88 +SHA256: bac5c8d9d503f9b29ee5d4d27200896c11bbeaa8b8059cceda288a82f9956792 +SHA512: d7ad097cd4a69949c5a1b22c0cd5cce15a2490f5657fa40c87c568807044ca398334a6f537fee5ef792a439357f3a1f973237ebddb2cb21f2e1e01fe87dab576 +Description: Intel® FPGA Add-on supporting custom platforms using Intel® Quartus® Prime Pro 21.1 software, Part 3 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.1-part4-2021.3.0 +Architecture: amd64 +Version: 2021.3.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.1-part4_2021.3.0_amd64.deb +Size: 8297029086 +MD5sum: 76e14df3ca1fd82a61c88957b1aa68c3 +SHA1: 319f2a01c4d71004aa3d63397389af653f54e86c +SHA256: a87be8f3db7650f9bf1505d509e695ccb2aaad4dc76d497d2ad09a67c28b1a1b +SHA512: c8f8e83e24a11d37397e67bbd5c8cf1687df5b119c1f9b1a896f50741b92eb53be44f5b8a57d556729eb10c6c3428f1885ad46e19380ab7ade475041e7b19bc3 +Description: Intel® FPGA Add-on supporting custom platforms using Intel® Quartus® Prime Pro 21.1 software, Part 4 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.1-part4-2022.1.0 +Architecture: amd64 +Version: 2022.1.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.1-part4_2022.1.0_amd64.deb +Size: 8297025480 +MD5sum: 3f87c4d779f178cceb01ab7f9cac1693 +SHA1: 1f9001e3b2267f588d463555a707ac70e30eb02c +SHA256: ee0264633ad007cd98b5ea1349c457079e5eed9b673f20bd63845171361d233b +SHA512: cfef405f427c03265d24291f3b23964596f18758f88830d1e4f15e98bea15d57173e137b201d82918b8e50c269ad4176d7ee5758b27bdcd6405143dfbb78ac30 +Description: Intel® FPGA Add-on supporting custom platforms using Intel® Quartus® Prime Pro 21.1 software, Part 4 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.1-part5-2021.3.0 +Architecture: amd64 +Version: 2021.3.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.1-part5_2021.3.0_amd64.deb +Size: 6379212642 +MD5sum: 87c25714264aec1bc73f4b5424bae967 +SHA1: c3d139793218c615177f46653ff6a858324e2c76 +SHA256: f1df9daddab233679192e3c958cf4105b1ceae6ca05ecdf5dc06f4182189faa2 +SHA512: b740d10d568bf138a39ee47bf9867cdb9dc6d54bbe1fcc6a0e54e13f5ad2520bd7ab7545494bcbfec2907e3526de335e9a580f372320124e8eae97702492ba53 +Description: Intel® FPGA Add-on supporting custom platforms using Intel® Quartus® Prime Pro 21.1 software, Part 5 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.1-part5-2022.1.0 +Architecture: amd64 +Version: 2022.1.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.1-part5_2022.1.0_amd64.deb +Size: 6379223554 +MD5sum: 95f33b1279fb7471046998295143610d +SHA1: 50b7675ce1919ca8be72e2518cee4ad1b846a319 +SHA256: 0dacb8ebddaf431876f0b619a464928494894a0b580dec77acfc6083f208c029 +SHA512: 039281f6768f1b2d092810b7fef321fa06b694768d2cd6adc96e965ed5a10564de7ac52d7057cf2c49adcca46b925a674086da7db58a02914f0bac7aa215f344 +Description: Intel® FPGA Add-on supporting custom platforms using Intel® Quartus® Prime Pro 21.1 software, Part 5 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.1-part6-2021.3.0 +Architecture: amd64 +Version: 2021.3.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.1-part6_2021.3.0_amd64.deb +Size: 2274533952 +MD5sum: b2ee26a8104af22db2ff1203a3a22ee2 +SHA1: 9edbfac5141f50412ee893d5798cc89b3af24596 +SHA256: 15ce1d6e81fa19002b5f9e1965aada07165aee8f7bbea5e016f59e001dda5407 +SHA512: f5d9a46e1a4c5c1c95d77fc9ed054d90116d36fa67f77400b5dcec21afe7f524ad50cddc2dcf202d5a8f4fffffddeb719c17cfac76a5eff48f8fb13469fdf41b +Description: Intel® FPGA Add-on supporting custom platforms using Intel® Quartus® Prime Pro 21.1 software, Part 6 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.1-part6-2022.1.0 +Architecture: amd64 +Version: 2022.1.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.1-part6_2022.1.0_amd64.deb +Size: 2274534398 +MD5sum: d6bf1e1f530ca8f82abf8a62f05f0f4e +SHA1: 915e9dec4a30a5a192d5dd8942f9a603fb3ea43f +SHA256: 29abe190b465adcc6144f719dd169b67ac0d9b1266fb28a4098698b7f3ae1200 +SHA512: b7d815b72e65d2aa1536d3c19c890ac5ec4eb8ae9cedd42ce0714ae8a1f04096105ed510bac6962171ac02f0080cf318bb0fd51be856e3d389be4132c9a0fc7e +Description: Intel® FPGA Add-on supporting custom platforms using Intel® Quartus® Prime Pro 21.1 software, Part 6 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.1-part7-2021.3.0 +Architecture: amd64 +Version: 2021.3.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.1-part7_2021.3.0_amd64.deb +Size: 2152763746 +MD5sum: f70e04470ccfb064f43f1073166b27a9 +SHA1: 0c82d4307933bed48cc54d2a60078e2791021c95 +SHA256: f76395f74d48eedb5d5b787fc66ee3548d72075bb238e896721098cb54469c1e +SHA512: f3b7c368b2e6dc47b2bc04e0bc8fa619e678f25f5c9619fbedc1bd43054e877a79efe030aa631a4dbf681823ca27c68e530fd2baea7008de224cf5cf7f65955e +Description: Intel® FPGA Add-on supporting custom platforms using Intel® Quartus® Prime Pro 21.1 software, Part 7 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.1-part7-2022.1.0 +Architecture: amd64 +Version: 2022.1.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.1-part7_2022.1.0_amd64.deb +Size: 2152763470 +MD5sum: 3fca4dd7a9af563ae197150b623fd383 +SHA1: d989ae074d6b566017133bcdae737d2cbed0e06c +SHA256: 11b7cff6261af74ac4115fb1651c7c04ecc522de334b8c50210a66f81c67cf92 +SHA512: bd8a8abfb2af6d71632c3eb3c65ca45a9ffade0ee36a6b72673eb9fceb0ba9cb1aa2b87105c7707197bc6debd9094cb265be3d598599ed17854f8006e893755d +Description: Intel® FPGA Add-on supporting custom platforms using Intel® Quartus® Prime Pro 21.1 software, Part 7 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.1-part8-2021.3.0 +Architecture: amd64 +Version: 2021.3.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.1-part8_2021.3.0_amd64.deb +Size: 7941265488 +MD5sum: b3553808f5641ec024d7c022ce727581 +SHA1: 3ffa28923f42737cb48a59d82c9851a3df9f75de +SHA256: 6f2c05f3115bf96bc35dd4ee385ef992307770482472643f9ae863a084c81dcf +SHA512: 7f926533fbfa92c06d3f339b28dda0b23c6e2719d451cb6b51d4787c470b7f1a116ab16f75b6101d857c6a6a27c6213af6155ca9755130dd2dc2c9fa96098f1a +Description: Intel® FPGA Add-on supporting custom platforms using Intel® Quartus® Prime Pro 21.1 software, Part 8 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.1-part8-2022.1.0 +Architecture: amd64 +Version: 2022.1.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.1-part8_2022.1.0_amd64.deb +Size: 7941265090 +MD5sum: 914b3fc632972f50925d0551776701f2 +SHA1: 44c1e548db5478eb6a0912473eed3423ddda0dcc +SHA256: e5d38b18455c4268658eb8448317cd89fff52940ee4e24b770f5497c2f3b818c +SHA512: ebad817081b9e803041fcaf2b0e58125934004181cf75d357934fe5dd9cdf40b94f8368d5dd8fbdab9f7e0c78ac377bf06d105f6dfb48497ee73ef0663e244ed +Description: Intel® FPGA Add-on supporting custom platforms using Intel® Quartus® Prime Pro 21.1 software, Part 8 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.1-part9-2021.3.0 +Architecture: amd64 +Version: 2021.3.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.1-part9_2021.3.0_amd64.deb +Size: 8200476468 +MD5sum: 82fb280249a0539858c5ebbd17f1e58c +SHA1: 1091e5ea01421640db05bf024b54e351add10774 +SHA256: d26760462ed6c94f5c8fa7dcdcebc5891fdefcb8a6844c2b7d9f76f97e422f9b +SHA512: fa314bda00b32febfd148209d00fadc1178184224ed6caa8e8c2b1fbc317cd3b5fe097f78bf07a103fb3217dd7c209bf6fd4711a51d10896240b79f1efc072fd +Description: Intel® FPGA Add-on supporting custom platforms using Intel® Quartus® Prime Pro 21.1 software, Part 9 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.1-part9-2022.1.0 +Architecture: amd64 +Version: 2022.1.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.1-part9_2022.1.0_amd64.deb +Size: 7779682830 +MD5sum: e1a426a6de2325f51dd014c9b6c1962d +SHA1: 4ceb25e844359284db6e8a270a194af3344723ec +SHA256: dbc3c8896d66f0dfb3fe01b94a1fc1f5ae656c33969f65ea05383e2c6455ef21 +SHA512: 98e6392c94d5211c269dacc123b34edecdbab07a0b20ce3aa332267c40cceff571ef0be58b39f9d41f60b1692ae928b33eb80a7ecde047563841e689787d1ee3 +Description: Intel® FPGA Add-on supporting custom platforms using Intel® Quartus® Prime Pro 21.1 software, Part 9 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.1-2021.3.0 +Architecture: amd64 +Version: 2021.3.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1792 +Depends: intel-basekit, intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.1-part1-2021.3.0, intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.1-part2-2021.3.0, intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.1-part3-2021.3.0, intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.1-part4-2021.3.0, intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.1-part5-2021.3.0,intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.1-part6-2021.3.0,intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.1-part7-2021.3.0,intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.1-part8-2021.3.0,intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.1-part9-2021.3.0,intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.1-part10-2021.3.0,intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.1-part11-2021.3.0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.1_2021.3.0_amd64.deb +Size: 377504 +MD5sum: e6368643bf6131cd2af612b873dcd7b0 +SHA1: 8cca69fb98637607f719e40ec234bc636d0f4105 +SHA256: eb1d3056cade3cbf9ace9258068c844cd3750e49d475f9b22688f7684101dab7 +SHA512: 1748153ea1eadd01cca0c124e9325837f8f556fdc59db752e4d29d05e69772fb4193bbd9d2f25d21fd62496659460c35428a0d4bda219ee8ebd637aa5a765b11 +Description: Intel® FPGA Add-on supporting custom platforms using Intel® Quartus® Prime Pro 21.1 software + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.1-2022.1.0 +Architecture: amd64 +Version: 2022.1.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1792 +Depends: intel-basekit, intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.1-part1-2022.1.0, intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.1-part2-2022.1.0, intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.1-part3-2022.1.0, intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.1-part4-2022.1.0, intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.1-part5-2022.1.0,intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.1-part6-2022.1.0,intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.1-part7-2022.1.0,intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.1-part8-2022.1.0,intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.1-part9-2022.1.0,intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.1-part10-2022.1.0,intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.1-part11-2022.1.0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.1_2022.1.0_amd64.deb +Size: 384772 +MD5sum: c91936bb5cb47442d23d729f826ec2ae +SHA1: d94cce5273a4976246897df05214755b5290b155 +SHA256: c55056dda6f503e7a279c40ffbba348fcd46e83ad89d6b1ce6745b375284856a +SHA512: 10fc79cffb545cad634abc883b564c29c5bf9867e3c0707ec68b233d8165655c4f745864ba95ab25a1082e9b26b44432290b56564618530847f241a2fd2e4fa5 +Description: Intel® FPGA Add-on supporting custom platforms using Intel® Quartus® Prime Pro 21.1 software + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.1 +Architecture: amd64 +Version: 2022.1.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.1-2022.1.0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.1_amd64.deb +Size: 1776 +MD5sum: 67706cfa3e779c284e3912145dbbeba2 +SHA1: ecdd85250a50d0314dfce4d5564dcd2931a5927e +SHA256: 58a37f6b8d81d0d6e7b58b514f93c854964a1c237b10e2cb18e74d1483c35755 +SHA512: 534667304376a87a6e512e42beefc288df4b939e96c335bc9b70828e6e5e480144dbed25afd85fd01b5be08d6f1bf200b6cd3e256d77e7f6a937d3cb1bb061c9 +Description: Intel® FPGA Add-on supporting custom platforms using Intel® Quartus® Prime Pro 21.1 software + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.2-part10-2021.4.0 +Architecture: amd64 +Version: 2021.4.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.2-part10_2021.4.0_amd64.deb +Size: 4683623814 +MD5sum: 10f90abf49152e35eb7d7fec6a575a90 +SHA1: 042aa3f2c42f7768071817876f82f1577f9ecdee +SHA256: 3c15bac746e1b999b79cd1c235a9fe3f22587543ce9bccb2b33cffd39a434ecf +SHA512: 7cd6855139599ec8fadf1c41f7d53fcea6cbb4a556447c1b51897024acf872d6a203ce5b7d3962464271d01abf159c6b40fe27ac41bc7c6710f9442d89350f97 +Description: Intel® FPGA Add-on supporting custom platforms using Intel® Quartus® Prime Pro 21.2 software, Part 10 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.2-part11-2021.4.0 +Architecture: amd64 +Version: 2021.4.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.2-part11_2021.4.0_amd64.deb +Size: 9353860236 +MD5sum: a49e7825f6919b1d90de8dc32a307b6b +SHA1: 3684b9c47e1394c5a12a475c7d052ef642f76dca +SHA256: 9cda68bf2f1d4a2c9aeeec29d5ac5fa44604268a12b7ed943acae0af30371376 +SHA512: f6f6890ddb2b24e2d94ced618aa7ee57a2b61faef74160a8993c94574fc2a565b66c5b2501db91d1876dae32d400996118d9f55cc5f677458bad90779d8872c8 +Description: Intel® FPGA Add-on supporting custom platforms using Intel® Quartus® Prime Pro 21.2 software, Part 11 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.2-part1-2021.4.0 +Architecture: amd64 +Version: 2021.4.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.2-part1_2021.4.0_amd64.deb +Size: 3307396294 +MD5sum: 9c9706b8138f75402a75068fb0d98652 +SHA1: cd671ffb71c0e236ae676348408924dd87caad36 +SHA256: a3883a399fa4b6d22e86534ca7f6808f8f74458ff01c153938d63ad816556b8c +SHA512: 5d4e92d20ac10227834abec5a2260e29ade7c9f7bca96673a760cdeb7bf293bba14f2c5ee22e28c65a04eb2c550704f1f7222ebcc08517d65d7e88c8a0f87631 +Description: Intel® FPGA Add-on supporting custom platforms using Intel® Quartus® Prime Pro 21.2 software, Part 1 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.2-part2-2021.4.0 +Architecture: amd64 +Version: 2021.4.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.2-part2_2021.4.0_amd64.deb +Size: 5929218176 +MD5sum: b0960b1c118382cde3d07f64ae72c3d7 +SHA1: d415a5d31a993b6f0467cee3af03ac60a167bb49 +SHA256: d0598df332cd3ba525d4419c2c779f30978e49aeb314468ff6b7ae73c86eef1c +SHA512: 13a2fee50805359d08ad5ef8135eaf769cc60a1e74417d8a3c70d5dd7a40e51facf781ea65610529c7d0cf96b7fdfc08e31c1ed9bed5ca7df4fa3de12438cb17 +Description: Intel® FPGA Add-on supporting custom platforms using Intel® Quartus® Prime Pro 21.2 software, Part 2 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.2-part3-2021.4.0 +Architecture: amd64 +Version: 2021.4.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.2-part3_2021.4.0_amd64.deb +Size: 9867145804 +MD5sum: 213cf612bde11937e7423b3bebcf7aca +SHA1: c90dbd1b49ca808948febfee3a702a72168ab639 +SHA256: 8f261339275f0dc9bfd32208d9a52737373c9b414383e99fa0983e598a7b7d2b +SHA512: 510c8ddd1c362a916e970521122c280de60d219c061717e288a08e60daa1e78339bede554d7f7774d7aba23e818ce22311335b63b6636f59b9c65c4b5dccd969 +Description: Intel® FPGA Add-on supporting custom platforms using Intel® Quartus® Prime Pro 21.2 software, Part 3 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.2-part4-2021.4.0 +Architecture: amd64 +Version: 2021.4.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.2-part4_2021.4.0_amd64.deb +Size: 8296698748 +MD5sum: d981f872d8cfc9c417c3611e90df2f85 +SHA1: fd1267ba15ca1db60f6042192531247cdb728519 +SHA256: 21906f761652b79820d1372f644cc1f59b61cc532152a17546af6dd09734544f +SHA512: ce20ac81c0033503b500cc715524eff27f4642e2d60f338ddb4013aa14daf649c1039e394dfe5c4300639e141bc6410d8dfd637e1366739e956cec001babed47 +Description: Intel® FPGA Add-on supporting custom platforms using Intel® Quartus® Prime Pro 21.2 software, Part 4 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.2-part5-2021.4.0 +Architecture: amd64 +Version: 2021.4.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.2-part5_2021.4.0_amd64.deb +Size: 6382147730 +MD5sum: a98ebecdbfbcb4b51da720f974e8cb30 +SHA1: 891264781640169592ad1d7d3c9aea2158c7d0ee +SHA256: eb178796d432473f24125c84aacd3113984510044546201484ad0d808b98972d +SHA512: 5a702efa924113366f7c06817814e1b3bcc84ab6d8918cb029efc25420f11c398e0a9a403e0f0f70812fc2f4cd42a285fdf42f74e07cb407b04b984202077796 +Description: Intel® FPGA Add-on supporting custom platforms using Intel® Quartus® Prime Pro 21.2 software, Part 5 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.2-part6-2021.4.0 +Architecture: amd64 +Version: 2021.4.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.2-part6_2021.4.0_amd64.deb +Size: 2274623690 +MD5sum: edfd7ea753debdd97ea86f72461ceef2 +SHA1: 1b434beca33fbe46e7daa5c69d5fb5d853f88209 +SHA256: b65848332cfb6818a86052ccc70c0808850bc34ad64f7f82c31a27ac79457418 +SHA512: a6958e29e7beb5d18111c2d89dce2ac2ee7fabbacbe52e95183504cd2f660905b7a3923edfcbff76d022925e0f4efc3c24b55f27885a573318d620e56b1aec2f +Description: Intel® FPGA Add-on supporting custom platforms using Intel® Quartus® Prime Pro 21.2 software, Part 6 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.2-part7-2021.4.0 +Architecture: amd64 +Version: 2021.4.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.2-part7_2021.4.0_amd64.deb +Size: 2151629256 +MD5sum: 4200a67ef072cc8febfcf1a015816e99 +SHA1: 923f5afa20f9426e623da337116b24e0c0e32440 +SHA256: 109dd0dcad69003cd4cf947bf5263bdb65f29fbdf5b84ac15fd2e9c9f9f0cbd5 +SHA512: 43c848f746f2e0f7fa56ebd548570ee819b68c9ad468cdd15ff4e3e0227d70a3f58e5bada668a40ca51369f92a1beee426a29741236896d4442c2aa70ca13be4 +Description: Intel® FPGA Add-on supporting custom platforms using Intel® Quartus® Prime Pro 21.2 software, Part 7 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.2-part8-2021.4.0 +Architecture: amd64 +Version: 2021.4.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.2-part8_2021.4.0_amd64.deb +Size: 9330697082 +MD5sum: ef05648abe50f8ee464b49712c5b3f94 +SHA1: 15298da68ce8effc68ebe7621bff5c9f26a2dbca +SHA256: cd68ecac55e7a12f491d30284f732cabc92331daac095020f39e262f90873d00 +SHA512: e28e5cb121ef19d41e9a4b8178745b8318f45b1996047ea5c87f8e4dc400c7f45c00e120dfa93377af9178a0e04d645eb4ec9e139f67bb26c3518a81586eff4d +Description: Intel® FPGA Add-on supporting custom platforms using Intel® Quartus® Prime Pro 21.2 software, Part 8 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.2-part9-2021.4.0 +Architecture: amd64 +Version: 2021.4.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.2-part9_2021.4.0_amd64.deb +Size: 8139223248 +MD5sum: ad9a7e6a00ee2ad91e69f0374433471b +SHA1: 0bc79f4cdcf0dc0c08b3614edb7e02cd6b30ad0f +SHA256: 2713d38dcf95d1dece48572bca0a114ae4436bc82d049b6c0545dd3bd1827943 +SHA512: 32f97295b591cfe1a07e0eedd1ccd9a0e5bd3361da37273db404f44a29d114745b37d79f4c918c2b70a73e1db9c6cf42ed4ac5ec3d277a9ba4956628eb2296b2 +Description: Intel® FPGA Add-on supporting custom platforms using Intel® Quartus® Prime Pro 21.2 software, Part 9 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.2-2021.4.0 +Architecture: amd64 +Version: 2021.4.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1832 +Depends: intel-basekit, intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.2-part1-2021.4.0, intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.2-part2-2021.4.0, intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.2-part3-2021.4.0, intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.2-part4-2021.4.0, intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.2-part5-2021.4.0,intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.2-part6-2021.4.0,intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.2-part7-2021.4.0,intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.2-part8-2021.4.0,intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.2-part9-2021.4.0,intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.2-part10-2021.4.0,intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.2-part11-2021.4.0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.2_2021.4.0_amd64.deb +Size: 394336 +MD5sum: 8a55ad6924e69ab5c45b2a8cb4996f0f +SHA1: d50d1ec093e93b3650ef7e83eeb3d87abd2d7ec6 +SHA256: 705820a889e76e31d48ada392be950cd267f6af6d6eb7088bd34763c41652d0d +SHA512: fb96d5e9cb0b92e4ac20f6ff541a11308eae01c1009edf13467881fe38906aa34ad8c9cbae2717135768306f0490e7a35e720a13a8da9ff809df4a15745eb40a +Description: Intel® FPGA Add-on supporting custom platforms using Intel® Quartus® Prime Pro 21.2 software + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.2 +Architecture: amd64 +Version: 2021.4.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.2-2021.4.0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.2_amd64.deb +Size: 1782 +MD5sum: 9b29c91b2544bbba3006860b332a04fe +SHA1: a9334596f20ce54cd5561d11e849e259458158a3 +SHA256: 7a278c58932788cbf81f33a0b6a32c5064706ae5510624b9f0c34337ae9e186d +SHA512: 85d8441f088142ab31d81daee3c15c619765b46188f3f17403a9d944a88ae2fde5f61192b2caf4682986490a207cfcef770f809632ec47b6e9b776fb2d1c3255 +Description: Intel® FPGA Add-on supporting custom platforms using Intel® Quartus® Prime Pro 21.2 software + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.3-part10-2022.1.0 +Architecture: amd64 +Version: 2022.1.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.3-part10_2022.1.0_amd64.deb +Size: 3973117988 +MD5sum: a45369314e59dc9afa5c724615313271 +SHA1: 53925f9404231123ac8f93596731d77ee032766e +SHA256: 4aed1e40de57a8a40e2b7cda3fbb1c177c0a95e3cf39e4bed94cf88ad7b9ce16 +SHA512: 273ac1b257c76f7ed611a49e3c5ea6a9d856576df24fae0e16a54a03e2571df2d94d69bff14ebdff4a326aefb6ce22be773d4be2e26580f7289b85188a18ea7a +Description: Intel® FPGA Add-on supporting custom platforms using Intel® Quartus® Prime Pro 21.3 software, Part 10 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.3-part11-2022.1.0 +Architecture: amd64 +Version: 2022.1.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.3-part11_2022.1.0_amd64.deb +Size: 4027112352 +MD5sum: ee459d60415faf181fbe2bbbf12eb00d +SHA1: cef46d8ccea06bf2d585c8a39f4905878f04d26f +SHA256: 0b559368588120a88014e879f0101f4d7ba5b6843663947856f8505b64b32eb9 +SHA512: 8407b1d9c3b52d00c96a81238e9f06f3ac032cfd28acbbe67b84300270ce406e8475d94385460570787a98fcb0e081cd03a0da0b10e1a0231764a23c6d6b8a36 +Description: Intel® FPGA Add-on supporting custom platforms using Intel® Quartus® Prime Pro 21.3 software, Part 11 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.3-part1-2022.1.0 +Architecture: amd64 +Version: 2022.1.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.3-part1_2022.1.0_amd64.deb +Size: 3755092780 +MD5sum: c0bd97db78358167ce27c9c192bd4ec4 +SHA1: b0805e5d1a64776e8d564ea46a4e05d5df4a93d5 +SHA256: 3d595e1928fb98e0ff46f335f59b116720e57af420beeaf70457b9ab424e7364 +SHA512: 7e064b122659fcb6605c3b22e269fe64628762e35eeeb65dd8dcb7e2f82ea775f58bfdfadf651a898542d415f8d5a6fb20fab9498555be36d2c24e260e6ce158 +Description: Intel® FPGA Add-on supporting custom platforms using Intel® Quartus® Prime Pro 21.3 software, Part 1 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.3-part2-2022.1.0 +Architecture: amd64 +Version: 2022.1.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.3-part2_2022.1.0_amd64.deb +Size: 6095344334 +MD5sum: b2e8564b31f1c56362922780c7705b67 +SHA1: 39b1dcc531098e8470deb0d41fa017ecce8f6982 +SHA256: f0b9a84f6713eaf93a22f08cc9e43770735be5aca66de09ab41f14b317ff8367 +SHA512: 6398ddbadc20067a879b6256d361d9969e1b253e1a5bd93f9d64ffd786828c8c250b97a35613cde34bcb84d7e1befc075513f2b71eb6e78a1e18a491423857c0 +Description: Intel® FPGA Add-on supporting custom platforms using Intel® Quartus® Prime Pro 21.3 software, Part 2 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.3-part3-2022.1.0 +Architecture: amd64 +Version: 2022.1.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.3-part3_2022.1.0_amd64.deb +Size: 9863548062 +MD5sum: 62777d56394dc4dfcba8ba1e9e606094 +SHA1: c52a2df7670e730136f7f650a30f741acceeee23 +SHA256: 3b76c6b08c5fc10811177fab069a0738c0ac1cd1d9869e0340471c11eeb48a30 +SHA512: ace87b08f20c93f329696be502950e9774af5f6da0ff0c48fa6f46755af49c69a5b7944dec4c1d29168d0fa9da18b9b7b26cdbb0a1cf8cb117075641ff954bcb +Description: Intel® FPGA Add-on supporting custom platforms using Intel® Quartus® Prime Pro 21.3 software, Part 3 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.3-part4-2022.1.0 +Architecture: amd64 +Version: 2022.1.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.3-part4_2022.1.0_amd64.deb +Size: 8228071654 +MD5sum: c617cbefd23dd8cf7d3b59e0cb800727 +SHA1: 60a84fe11cd18929f20d7a1079a459f0c90d9a5f +SHA256: 97da1ab98bf53fabe4def8b23372fab1a545e1e5ca0569608d1209ca76de2caa +SHA512: b126cad320bed1b2358b169d39b172ed337a45a418899ee7f0f48ebf1664e20d8f2ca375106a20cbf7afe17fc23af0a68bf04a74674341e3b691e9c741902c7a +Description: Intel® FPGA Add-on supporting custom platforms using Intel® Quartus® Prime Pro 21.3 software, Part 4 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.3-part5-2022.1.0 +Architecture: amd64 +Version: 2022.1.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.3-part5_2022.1.0_amd64.deb +Size: 6428194140 +MD5sum: e7a3d2a0f58c4656ec12f9e355926536 +SHA1: 8c7d13a1c754be3be22b5422d5f27066d6777495 +SHA256: 6be1bd2054fc47d98f27981203a4bb966c8bf14d13de650a6f3a6dc7de28b21f +SHA512: aa339acc97f894c1cdfac3321c86327aec20913f4e4e05ffaf489fd6911909cfa67e6de4046c4ed7b58fe5ac9b8060a8b9dc0f70cf0e30e34d103ceac9333c22 +Description: Intel® FPGA Add-on supporting custom platforms using Intel® Quartus® Prime Pro 21.3 software, Part 5 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.3-part6-2022.1.0 +Architecture: amd64 +Version: 2022.1.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.3-part6_2022.1.0_amd64.deb +Size: 7250561628 +MD5sum: f4da4ac9679745dd0f161c2212f70656 +SHA1: c3067fbfd998fb6cc8e59af306d06532932941c4 +SHA256: 5477d45a8f738a4d2789a01f6daad26be71214196a4f409902b8e4911593f6c7 +SHA512: 20b1773c7bd44538de1fadaaaea9b3c310676e5b2c9e460856442f1f4c666fdc430fc8965feb9a0f4845243b06fff91fa71311087a45bd1662974ca100bf81d9 +Description: Intel® FPGA Add-on supporting custom platforms using Intel® Quartus® Prime Pro 21.3 software, Part 6 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.3-part7-2022.1.0 +Architecture: amd64 +Version: 2022.1.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.3-part7_2022.1.0_amd64.deb +Size: 3354921574 +MD5sum: ec9e455fef4800587386e97e7dfe445a +SHA1: 2f47c07df56866bc80dff6ad900aeafb483c348d +SHA256: 756c43a9142f78c16caef305412e54f775566b0c289fefe6fcebbfc5737f317a +SHA512: e29b00df905e8aec1e1752c2e15ba414559112683e732e5e016ecb52d4e8d3fbd58697e14b5dbd59eec4b62cd7fd3a698160523e6749318009d3a7ac5912dfa0 +Description: Intel® FPGA Add-on supporting custom platforms using Intel® Quartus® Prime Pro 21.3 software, Part 7 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.3-part8-2022.1.0 +Architecture: amd64 +Version: 2022.1.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.3-part8_2022.1.0_amd64.deb +Size: 2352955288 +MD5sum: 148d2d28db699db52364d351d5ca9ca7 +SHA1: 34c63ee8cb6b209aab593623ae851d2e9091b3e9 +SHA256: 3243410ce098eec01701cd497ca10b1920590e2ccb11fe24c6206e5ff5a5f34e +SHA512: b6dbabfe403eabd99bc4f92a7629b7aa73ea535110a2bf4e906345330d3ef6e83263835f35115ea58ae1c9c1a3bb51e9480225f6e06cf97f04d26a823e89223c +Description: Intel® FPGA Add-on supporting custom platforms using Intel® Quartus® Prime Pro 21.3 software, Part 8 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.3-part9-2022.1.0 +Architecture: amd64 +Version: 2022.1.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.3-part9_2022.1.0_amd64.deb +Size: 9820290660 +MD5sum: 2a55568229cf48badaf62b8c4a9acc78 +SHA1: 59052997db393074074e36cdae0e73ad9ce5aebc +SHA256: 5687b08eb4177b8c42dad1d68fa9a89ffeeb80a7ba6b04d2059a4769d62b002b +SHA512: 0c382ce589458ee26730633bed4db116f50471c7190976eaad20f1d61ab93f21a18c2383e8555cd65ed76517390df55f81d9e277d0aee1152d4da00850314ddb +Description: Intel® FPGA Add-on supporting custom platforms using Intel® Quartus® Prime Pro 21.3 software, Part 9 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.3-2022.1.0 +Architecture: amd64 +Version: 2022.1.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1800 +Depends: intel-basekit, intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.3-part1-2022.1.0, intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.3-part2-2022.1.0, intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.3-part3-2022.1.0, intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.3-part4-2022.1.0, intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.3-part5-2022.1.0,intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.3-part6-2022.1.0,intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.3-part7-2022.1.0,intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.3-part8-2022.1.0,intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.3-part9-2022.1.0,intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.3-part10-2022.1.0,intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.3-part11-2022.1.0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.3_2022.1.0_amd64.deb +Size: 386672 +MD5sum: 0c34720871489e95e8752edd87c73ba1 +SHA1: 0b36144673a0ec6d2a02b968b4cdaeb28f4ee54c +SHA256: 6bf62c390bbf6527cf751af197c5ba40325ec399068f5a82aa2f0acfa713b846 +SHA512: f7774e1900e0af695264d518f5772bd5951218c4a9cf1458f86d7d4a29be715244178eb14838e55f5cbe79a3e4b4af71ef2e9e77c669249c9de0136281e87422 +Description: Intel® FPGA Add-on supporting custom platforms using Intel® Quartus® Prime Pro 21.3 software + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.3 +Architecture: amd64 +Version: 2022.1.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.3-2022.1.0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.3_amd64.deb +Size: 1776 +MD5sum: 5d199de23653afa2bc50641a95ee8b46 +SHA1: 7a37d83a30bf34a8682bae22e6e5a037ae2d1609 +SHA256: e7d0f48bad26847960b6c436adcbe295b285aed8d79041dd7d603391b5b983c4 +SHA512: 139c1177c092c57413f4abe916790b18037003e977b6f5e679d93d6b182ae8ad4693536fb18ab027c270b82adb746d905db510d2baceeb3f439e15eee316c523 +Description: Intel® FPGA Add-on supporting custom platforms using Intel® Quartus® Prime Pro 21.3 software + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.4-part10-2022.2.0 +Architecture: amd64 +Version: 2022.2.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.4-part10_2022.2.0_amd64.deb +Size: 3984307882 +MD5sum: 4b9b9ed779cfda55c50cddaabe2fcad4 +SHA1: 54d99304b9a0421d8d41bb605de847d2698066ef +SHA256: 3c7c3ad7256f24f42be1a84d8d9212128b92ed72d101f16ca0cb3c2f83b4b073 +SHA512: 0e39b88061002cfecafd30d20b2903f6bb794dfd9a19c96167fc8612af59a01233310011c09d6cfda3ef62585fc9bbc00a305d114f4b1ff69f7c4b2193994884 +Description: Intel® FPGA Add-on supporting custom platforms using Intel® Quartus® Prime Pro 21.4 software, Part 10 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.4-part11-2022.2.0 +Architecture: amd64 +Version: 2022.2.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.4-part11_2022.2.0_amd64.deb +Size: 4027431436 +MD5sum: cc14612c1dd26483e7eef2b8f6a3bed9 +SHA1: 476fab9b394f0a6506a115d2c4e5f43874740a6a +SHA256: e3ed44c14e911f2d2c69f484fb99f87c4950135a17b0cf1636bfb1741461e5bc +SHA512: fed5cde1adff03a03b2dad4743169982e586bc441a4aab80110a5eb8ff8c0df8c6f92175169b4d58deda5318b9938088df760b151648f49abd9f4550452c4f0b +Description: Intel® FPGA Add-on supporting custom platforms using Intel® Quartus® Prime Pro 21.4 software, Part 11 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.4-part1-2022.2.0 +Architecture: amd64 +Version: 2022.2.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.4-part1_2022.2.0_amd64.deb +Size: 3818996446 +MD5sum: 39ece85e58d04679a8de0a8876918c7f +SHA1: dba9a7e76244adcbd9f5b11e2756a617c9c3227a +SHA256: f8969617d8f8354f94fcf98a66f133e06085c0afef3774a785b275e8c2560d3f +SHA512: d3ecf4129155d14bf1ed6493123b395e03c99d2af52dcab75eb473a0e0ee5f3927f20b94891f969315ef06e188cd372384fc2c8aa6354b201ebe9094760f1778 +Description: Intel® FPGA Add-on supporting custom platforms using Intel® Quartus® Prime Pro 21.4 software, Part 1 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.4-part2-2022.2.0 +Architecture: amd64 +Version: 2022.2.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.4-part2_2022.2.0_amd64.deb +Size: 6321490528 +MD5sum: 5ab3667f165a294c71a512359fc2f92f +SHA1: 59af74eb48ee49082f5c1072143860841b1d6a7f +SHA256: 5fd458bbd80b0bd5c54d2212517b9b84e4f069c86d89ded18bcce8c051738b56 +SHA512: 088b4058f9d8b1466a4a14f59d6c102119e4f5bcef0ea55969290eae293d7dba8325b85b7788624bc5e6ed53b659a75c3b97a5117208441ec488d8417be804b2 +Description: Intel® FPGA Add-on supporting custom platforms using Intel® Quartus® Prime Pro 21.4 software, Part 2 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.4-part3-2022.2.0 +Architecture: amd64 +Version: 2022.2.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.4-part3_2022.2.0_amd64.deb +Size: 9863556414 +MD5sum: 8258d560b63b1056b6cf9f217313083f +SHA1: 41ef73b5a9e2586c84b7899cf360528c9000e410 +SHA256: 8d6ca9e2665754715c74fda649832ba5e9d2fd27ad6644d119ad623c8974c17c +SHA512: 5f760c26d232e60bf93d4764247d3cb4b9ecb9497925539b501c799343195e2d84e93b6a5e7f846c74b66b94fc197cc207c69ff9ac6853d10941bd0f9f8ebec3 +Description: Intel® FPGA Add-on supporting custom platforms using Intel® Quartus® Prime Pro 21.4 software, Part 3 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.4-part4-2022.2.0 +Architecture: amd64 +Version: 2022.2.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.4-part4_2022.2.0_amd64.deb +Size: 8231526492 +MD5sum: 84a5cd7f67e66785ec12b895b4ee2991 +SHA1: fea913b46bf38cd9d8841ca36c66a72c88837312 +SHA256: 2c82303ae7437cb4fad44d00573d8de50714360f9d4f4538ed447b3bcf455160 +SHA512: e0963988205ae84673f0fb974c9c8be7ac3fda8ca542680b2c3434d427b7424e6c8d882bc12c5106b2dc0155704ea7ae7b0a98044ccb7eb9d07169d688b1d2c7 +Description: Intel® FPGA Add-on supporting custom platforms using Intel® Quartus® Prime Pro 21.4 software, Part 4 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.4-part5-2022.2.0 +Architecture: amd64 +Version: 2022.2.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.4-part5_2022.2.0_amd64.deb +Size: 6426475528 +MD5sum: 82193746df09fc30b515df0ccb5bc0a1 +SHA1: e41d9069f10c92c4eab275d66965254708577541 +SHA256: 2e677dad2c78e1236cd9951515f615fda379c870bccd428aab637f6664861910 +SHA512: 6ec1c2a07d37c0e8282e947e2092063fc89b63f876d32b9e82b967dc03ab72d6dbfb882688f9be69e8fb6c4a75608be98b4d13abf9fbff2a757dd34d35ff5cc5 +Description: Intel® FPGA Add-on supporting custom platforms using Intel® Quartus® Prime Pro 21.4 software, Part 5 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.4-part6-2022.2.0 +Architecture: amd64 +Version: 2022.2.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.4-part6_2022.2.0_amd64.deb +Size: 7275740242 +MD5sum: 5a63b59852aed28cefd7eb6987a04198 +SHA1: a2d141ad224d5e7fbceec44f83b5576c8c75ad3f +SHA256: d004200b5b341bde621e88525e3e5540e275f9d653caafee033fdde7e6e9c8b0 +SHA512: 3af1412c05d3a17e92fcc46b812f7a2e3ac3cc2b099670868cd1d8596af6a029ca42de4f883a1487cebaa12ba576065033269d5e9f8101befb2aacbd0a45e657 +Description: Intel® FPGA Add-on supporting custom platforms using Intel® Quartus® Prime Pro 21.4 software, Part 6 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.4-part7-2022.2.0 +Architecture: amd64 +Version: 2022.2.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.4-part7_2022.2.0_amd64.deb +Size: 3354436870 +MD5sum: 9164c9f9b3c67ddee4dad20af61266cd +SHA1: 7995a30667130de06de73d0b3f0ea6d443564883 +SHA256: 2393dc281683fb613d473ae4747966e3ba9634fdeb5ec3a47af2a071b7f44983 +SHA512: 3d88af55b31afb63a0de676434ba795b8d1044fb34edfc3a09041e0621509c043a7368e8c84152ea18793e00109742dc0edda1cf9f55150706a26f340795c083 +Description: Intel® FPGA Add-on supporting custom platforms using Intel® Quartus® Prime Pro 21.4 software, Part 7 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.4-part8-2022.2.0 +Architecture: amd64 +Version: 2022.2.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.4-part8_2022.2.0_amd64.deb +Size: 2353243492 +MD5sum: a890154dcc2378ea4f07c5f25fca2e4d +SHA1: 9e53e232ea1cbb7106f4af39314da6fa33bddef7 +SHA256: e7eba25f82892967f93c47f47462a2fea2ee7814d1d1aeda4921bbf58a25eed1 +SHA512: a65476773bd27da207f9a150af7f6f2791ac7addf68e9d92981836903eaa82d7f13ffb27ede3686154499d6a88434d88f1f694ad71af99e955667878d7ab6eb2 +Description: Intel® FPGA Add-on supporting custom platforms using Intel® Quartus® Prime Pro 21.4 software, Part 8 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.4-part9-2022.2.0 +Architecture: amd64 +Version: 2022.2.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.4-part9_2022.2.0_amd64.deb +Size: 9818649834 +MD5sum: 4a70d5ac582ca7ac93131aa59800683a +SHA1: a00c54b3ef7b12e4617052a224c8ef6f9d622076 +SHA256: bdad2a08753676738074a769b50d5f8d030192b72d34ee4be34225f3ecdb50a8 +SHA512: 6fc4a63ae914344a9d94ed246a2ab28bbc1a876dce42aed0e720f8d6828ac8e834b8b395376980f9833a9fca1bef01b6b72dfc0362a02c85eaad1522df25d338 +Description: Intel® FPGA Add-on supporting custom platforms using Intel® Quartus® Prime Pro 21.4 software, Part 9 + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.4-2022.2.0 +Architecture: amd64 +Version: 2022.2.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 88 +Depends: intel-basekit, intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.4-part1-2022.2.0, intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.4-part2-2022.2.0, intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.4-part3-2022.2.0, intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.4-part4-2022.2.0, intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.4-part5-2022.2.0,intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.4-part6-2022.2.0,intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.4-part7-2022.2.0,intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.4-part8-2022.2.0,intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.4-part9-2022.2.0,intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.4-part10-2022.2.0,intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.4-part11-2022.2.0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.4_2022.2.0_amd64.deb +Size: 7136 +MD5sum: 00323ebd2fe040191893a3fe9e253d83 +SHA1: 64b77f3ad61a1a7fd6b91cf5fd7ec5e9e02d1807 +SHA256: 42e6bc248e02dc446dc280eed63caf91e431867238ccd230660bc2913fcfd1fb +SHA512: f313312f9125413e31af37518e92661dc5f57569f8cad244bf49143ae704c675c297c8020b29725b3d755a098e9ea8166e437353abf92d83e6a67ed1b77111d2 +Description: Intel® FPGA Add-on supporting custom platforms using Intel® Quartus® Prime Pro 21.4 software + + +Package: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.4 +Architecture: amd64 +Version: 2022.2.0 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.4-2022.2.0 +Filename: pool/main/intel-oneapi-intelfpgadpcpp-custom-platforms-quartus21.4_amd64.deb +Size: 1780 +MD5sum: 3ecc89a9f58769453edabef04d64863c +SHA1: 0d5de9da5c0fb29568713ad85d54991c00ead8b8 +SHA256: fd38ec9c3d88d3ad366fde412cc9024e0cf73ab35fcd334060b9d0771d80a7c0 +SHA512: 2a0314c3ae0ec51f36a997e9d35b49a9d2531ecc38dacd95bd0c95a601396cd96fa274f1b330b3c8aabe57533bc4e709e7dfc0f82a2a3824695516d8ed12f4c2 +Description: Intel® FPGA Add-on supporting custom platforms using Intel® Quartus® Prime Pro 21.4 software + + +Package: intel-oneapi-ipp-2021.1.1 +Architecture: amd64 +Version: 2021.1.1-47 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 392497 +Depends: intel-oneapi-ipp-common-2021.1.1, intel-oneapi-tbb, intel-oneapi-openmp, intel-oneapi-condaindex,intel-oneapi-common-vars,intel-oneapi-common-licensing +Filename: pool/main/intel-oneapi-ipp-2021.1.1-2021.1.1-47_amd64.deb +Size: 62828424 +MD5sum: eefe50116e47a3c916b9baa739fb6984 +SHA1: 85b437caca8664c14365541dcb7b6077c6209fdb +SHA256: c2f9294649dababe73477b61eb939d4d4668402f1b17ed9794dff634a727436d +SHA512: 1094c0001829018752f13c29729837d9811d649d3ea7fdb9bbe0f83d690833c7f899e69dfffc62014062f291fa7492d82459016e303d9d509a99a99b12688f88 +Description: Intel® Integrated Performance Primitives + + +Package: intel-oneapi-ipp +Architecture: amd64 +Version: 2021.1.1-47 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ipp-2021.1.1 +Filename: pool/main/intel-oneapi-ipp-2021.1.1-47_amd64.deb +Size: 2392 +MD5sum: cb7cbf9fa91c063b6081b8e75254c5eb +SHA1: 341dc3ab38cdf790ad61d0aeef6c5a7d6146361f +SHA256: a549dc5dd77642627fffda6bd2f97b1b9a1fadb40291e75b917f737dbfedc127 +SHA512: 90afae70c7062a2fa1db55b60db1a040e0d0e7c33e9ff8b92af8696034147ee14ccd6494b0a6525a57551c268fed8b753f78aa8170bc3dab016b25f527cf4241 +Description: Intel® Integrated Performance Primitives + + +Package: intel-oneapi-ipp-2021.2.0 +Architecture: amd64 +Version: 2021.2.0-233 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 487803 +Depends: intel-oneapi-ipp-common-2021.2.0, intel-oneapi-tbb-2021.2.0, intel-oneapi-openmp-2021.2.0, intel-oneapi-condaindex (>= 2021.2.0-94), intel-oneapi-common-vars (>= 2021.2.0-195), intel-oneapi-common-licensing-2021.2.0 +Filename: pool/main/intel-oneapi-ipp-2021.2.0-2021.2.0-233_amd64.deb +Size: 81333828 +MD5sum: 6c42c467f635496d98c82e1de43886bd +SHA1: 26af469537384623892baa8d4a6c9101949590fb +SHA256: 522f1157415876eae349d1ed8da67901d3be3d83c37820f7377a91ea470262e3 +SHA512: 68a5cace7803d867f46d68743f4a3fb52599ca09f93f6af84f997bfe242edb1040a451573fb439248611c2aff32425580afa3f9415f4bdc4c66280fa167da20e +Description: Intel® Integrated Performance Primitives + + +Package: intel-oneapi-ipp +Architecture: amd64 +Version: 2021.2.0-233 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ipp-2021.2.0 +Filename: pool/main/intel-oneapi-ipp-2021.2.0-233_amd64.deb +Size: 2392 +MD5sum: 868476c853fa89ec5395c6a752cdef0b +SHA1: 4bd148255ed595ee3f35345b7a00ce119ed528b3 +SHA256: ff3d970bc050e68209001adaea5f6f061f6a8cf8096b4556a637ae520dfb9634 +SHA512: 353dee9eb41531ebba6f50f018666e9dada13b7de103ce5ff9385dcabbd3f0bf823848250e26394374fb29a1127ae213a4769429a9d1ed53ec900146816d48d0 +Description: Intel® Integrated Performance Primitives + + +Package: intel-oneapi-ipp-2021.3.0 +Architecture: amd64 +Version: 2021.3.0-333 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 488906 +Depends: intel-oneapi-ipp-common-2021.3.0, intel-oneapi-tbb-2021.3.0, intel-oneapi-openmp-2021.3.0, intel-oneapi-condaindex (>= 2021.3.0-159), intel-oneapi-common-vars (>= 2021.3.0-261), intel-oneapi-common-licensing-2021.3.0 +Filename: pool/main/intel-oneapi-ipp-2021.3.0-2021.3.0-333_amd64.deb +Size: 81526368 +MD5sum: 2c278c2359b7e27717ac59f901bf8d80 +SHA1: b22275cde39849e23c1b4895f591b68fa0406fe2 +SHA256: 56f2e69cc8ee729f031ecde1e604093f7fcd13cf1fd87887cbe0db067fda3d09 +SHA512: f56af134c34d1e374692e84a63c533cebfe054313ec592d81c6c90b8a74c369a7704f78b65c81e7ef2be9f117dbe6cc7a1eaf3adc4d6aab214bb8bad0a02407c +Description: Intel® Integrated Performance Primitives + + +Package: intel-oneapi-ipp +Architecture: amd64 +Version: 2021.3.0-333 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ipp-2021.3.0 +Filename: pool/main/intel-oneapi-ipp-2021.3.0-333_amd64.deb +Size: 2392 +MD5sum: ca73680aa5aa78e135522d2194844d27 +SHA1: ea1935a8e76a912be521f27baa8b4be62d3895ac +SHA256: f0545b2741b00250056807ce63964a506ae11cd9ebebeec102fef79f3d126758 +SHA512: 040d6fbbfd7cfbf1a6dec381caebaababa9e2222378c16f3147be1e9b7ee13922db3eef02b87863635d78b9bedb065b29f92db159e2eeeddbb33b6d767c1b71e +Description: Intel® Integrated Performance Primitives + + +Package: intel-oneapi-ipp-2021.4.0 +Architecture: amd64 +Version: 2021.4.0-459 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 498465 +Depends: intel-oneapi-ipp-common-2021.4.0, intel-oneapi-tbb-2021.4.0, intel-oneapi-openmp-2021.4.0, intel-oneapi-condaindex (>= 2021.4.0-207), intel-oneapi-common-vars (>= 2021.4.0-327), intel-oneapi-common-licensing-2021.4.0 +Filename: pool/main/intel-oneapi-ipp-2021.4.0-2021.4.0-459_amd64.deb +Size: 83127208 +MD5sum: 549c3e6b739af7b62180ac48a655f424 +SHA1: c921e00970c637eda675cea50b666983b9c0be41 +SHA256: f6f5f23737d4dc899c174eb2bd416fa4758249e536601ab841c6ab8f53a50840 +SHA512: 5a1346ec93cfdac25e1f6032cb93792c05e245bd99cbc88cac42b398b0f3712b1336ab0ab5bba2a2c279de52c5417331f3f654839c84e1264e08f424baabb518 +Description: Intel® Integrated Performance Primitives + + +Package: intel-oneapi-ipp +Architecture: amd64 +Version: 2021.4.0-459 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ipp-2021.4.0 +Filename: pool/main/intel-oneapi-ipp-2021.4.0-459_amd64.deb +Size: 2392 +MD5sum: 344db13d526b299997b6058a21a8b71f +SHA1: ff417ca4702e8788b8c1317023c87114f826b433 +SHA256: 0d3738062b20a16d456c66ee249054d6dae940e4e10fd10d20035dab32f41394 +SHA512: 81f613ed26182646f4baeab1d86c5fdbdb31cdc085d6e9ee80adc48b5a8bb535ecd51ba66c899f2cdc36a28e4c79b8e10a1e90c2b853304a7fa8cb8e9efea94b +Description: Intel® Integrated Performance Primitives + + +Package: intel-oneapi-ipp-2021.5.1 +Architecture: amd64 +Version: 2021.5.1-522 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 499111 +Depends: intel-oneapi-ipp-common-2021.5.1, intel-oneapi-tbb-2021.5.0, intel-oneapi-openmp-2022.0.1, intel-oneapi-condaindex (>= 2022.0.0-74), intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-ipp-2021.5.1-2021.5.1-522_amd64.deb +Size: 83196318 +MD5sum: 0527bcfaea20dedf2ef719c9d983e6be +SHA1: ec8a7e5483333a664f5e3d7704e1072d8011cdfa +SHA256: ff3ba0a5cdf57d3fc7052cc796e8d05be2fdb1bc94e8cb466a0b0b0930bb7e6a +SHA512: 687f36c60ba0831646c32c8878dfd9f12a07d3e7127b7100f43e4cdc6d4fc7ada0fe977d4a11bad7147df99bc7c45fbac0916091f55646381789ee7c451a49c9 +Description: Intel® Integrated Performance Primitives + + +Package: intel-oneapi-ipp +Architecture: amd64 +Version: 2021.5.1-522 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ipp-2021.5.1 +Filename: pool/main/intel-oneapi-ipp-2021.5.1-522_amd64.deb +Size: 2176 +MD5sum: 818f4389fddad8ab6a742fb5be572866 +SHA1: 0f428a94b5461576e92cf78a2be9f872f27dd450 +SHA256: 8c28ea405ed8cf650087be39250b694e49aab6a8eaf94b50507fe75f46c7ebb7 +SHA512: 53f6414fc61cf3c87266e866381d687a897622ed8e1ebf6ae0e6f5bdd8e6a093176e24c9eb8bc72a169749322d9b7268459d1fc1d3a6ebba88136cbc4cf708e3 +Description: Intel® Integrated Performance Primitives + + +Package: intel-oneapi-ipp-2021.5.2 +Architecture: amd64 +Version: 2021.5.2-544 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 499111 +Depends: intel-oneapi-ipp-common-2021.5.2, intel-oneapi-tbb-2021.5.1, intel-oneapi-openmp-2022.0.2, intel-oneapi-condaindex (>= 2022.0.0-74), intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-ipp-2021.5.2-2021.5.2-544_amd64.deb +Size: 83198324 +MD5sum: a73fbd472470683a19b685fd1cb3737f +SHA1: f1b4bfd51c864e9b6c3ef0a9d5d78c8f4db011fa +SHA256: 19020402a758e73c53791d0b56669b3b37663ea5ce5a53de91b929e0c60c40fb +SHA512: 189e14c05452b7343375c5aadef2d488ed2b280c1801381551746a348679870b2320ac868c7b8826f58c3a6be5509b5e95c6b0354a3877481fe73063e486dd35 +Description: Intel® Integrated Performance Primitives + + +Package: intel-oneapi-ipp +Architecture: amd64 +Version: 2021.5.2-544 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ipp-2021.5.2 +Filename: pool/main/intel-oneapi-ipp-2021.5.2-544_amd64.deb +Size: 2176 +MD5sum: 7983bb72eb121373f50809e260bb1825 +SHA1: 56242aa3dc951856b91c606e26a4045c68f31c0f +SHA256: 409d476303400e9243e8954eab8907d71b983ed29298610a60772f161b106f3f +SHA512: 1bfcf0d4b0403a204d4c2f49378d19db9d1b4e461056d5517b733f38ac83ec66e9ec5b2aea21aecb99b080451feadc984c196d4fb5f45344dca7b5867918c3fc +Description: Intel® Integrated Performance Primitives + + +Package: intel-oneapi-ipp-2021.6.0 +Architecture: amd64 +Version: 2021.6.0-626 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 499411 +Depends: intel-oneapi-ipp-common-2021.6.0, intel-oneapi-tbb-2021.6.0, intel-oneapi-openmp-2022.1.0, intel-oneapi-condaindex (>= 2022.1.0-155), intel-oneapi-common-vars (>= 2022.1.0-161), intel-oneapi-common-licensing-2022.1.0 +Filename: pool/main/intel-oneapi-ipp-2021.6.0-2021.6.0-626_amd64.deb +Size: 85215426 +MD5sum: c4f2c204318aa0b88c478044f9088e4b +SHA1: 1d2a250b1a4c9178c6cb7bc2cd6df7154616ac9a +SHA256: abb9f14df006db5684f3b54a2a664adfaf10ca90320d97443104ffcc9e3c650f +SHA512: d4bfee752ca2d96b2875fb7d30bc0e9b2986deb9bb133dddec55d77ae1ec03322c59e1a069f4d02cce4318ec1bb17136583a48d89b520730616aa7f73a22eede +Description: Intel® Integrated Performance Primitives + + +Package: intel-oneapi-ipp +Architecture: amd64 +Version: 2021.6.0-626 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ipp-2021.6.0 +Filename: pool/main/intel-oneapi-ipp-2021.6.0-626_amd64.deb +Size: 2544 +MD5sum: ffc9fc66af92cfdaa015d03eb9a219df +SHA1: cc72884aff8b1244dcf411bb25eb46dddcad92e0 +SHA256: 33c0b345538d3d242fc2dcdc6e08893306c0cb7852133dbf9c9b76ebe9161312 +SHA512: fb96799f264a6e2ec587126a7482bc80df6775e274eb724385e2b1e2cced8dc63665b10e702ab06378f00e7b3371c990f0ed01d62d54fe18aefd88f43e22745e +Description: Intel® Integrated Performance Primitives + + +Package: intel-oneapi-ipp-2021.6.1 +Architecture: amd64 +Version: 2021.6.1-8749 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 499454 +Depends: intel-oneapi-ipp-common-2021.6.1, intel-oneapi-tbb-2021.7.0, intel-oneapi-openmp-2022.2.0, intel-oneapi-condaindex (>= 2022.2.0-8695), intel-oneapi-common-vars (>= 2022.2.0-8694), intel-oneapi-common-licensing-2022.2.0 +Filename: pool/main/intel-oneapi-ipp-2021.6.1-2021.6.1-8749_amd64.deb +Size: 85216946 +MD5sum: 2ca379be490fdf7c45e9caca34be41ff +SHA1: d5f3db8dfbbfb8b11c3e186fb94d655d317ec2ae +SHA256: 9304e9339de89cf3148107ac786ea41ad1dc44f4a00d9577c771573ed2ca4743 +SHA512: ed7d874460514fc551deae0aca615925189a53a6c1776c093bab7d533098fd50fc9f32296745a637af30e52ea536b2b3c0ad9cdb1b80fe6a153e5e127daabb67 +Description: Intel® Integrated Performance Primitives + + +Package: intel-oneapi-ipp +Architecture: amd64 +Version: 2021.6.1-8749 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ipp-2021.6.1 +Filename: pool/main/intel-oneapi-ipp-2021.6.1-8749_amd64.deb +Size: 2544 +MD5sum: 1c6d11d79674d969bc6d886e1a4a0cd3 +SHA1: 1ec453b7bf4e97c8667bd9572a0fd65bc766fefc +SHA256: 945e0c4140ac300efc3683108abc066c7a06541fb6e3b1212788f716b3d3f9e9 +SHA512: 42aa6f4fee4b19b73ec22df2fed39ee77e234b715656e285292d84c9bf279bdd15e7c398cd9ec63690dc949c4958410c0b1cdbc0162e81ddb0d30a74bb5fe931 +Description: Intel® Integrated Performance Primitives + + +Package: intel-oneapi-ipp +Architecture: amd64 +Version: 2021.6.2-16995 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ipp-2021.6.2 +Filename: pool/main/intel-oneapi-ipp-2021.6.2-16995_amd64.deb +Size: 2548 +MD5sum: 26616953209d3cbca1af01701aee82e8 +SHA1: e7f9aa5b056659f1f5570e4c6b60fbda25efdea9 +SHA256: 058782c19fb36b2225f09f22d1cb00419e622126dc40dd2bbd8130adbccb2db3 +SHA512: 861e45d084eef3370c392841da1844f62e0a23f9d4c7d81ddfe8fc64ffb4693bcfefe01c4e3d55a5897761281fa21a7f981c3981cad3cd6b347af6e2e954b688 +Description: Intel® Integrated Performance Primitives + + +Package: intel-oneapi-ipp-2021.6.2 +Architecture: amd64 +Version: 2021.6.2-16995 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 499454 +Depends: intel-oneapi-ipp-common-2021.6.2, intel-oneapi-tbb-2021.7.1, intel-oneapi-openmp-2022.2.1, intel-oneapi-condaindex (>= 2022.2.1-14970), intel-oneapi-common-vars (>= 2022.2.1-14969), intel-oneapi-common-licensing-2022.2.1 +Filename: pool/main/intel-oneapi-ipp-2021.6.2-2021.6.2-16995_amd64.deb +Size: 85217982 +MD5sum: 769ca362a0f4e0052484f575cdd76235 +SHA1: 212c314ea446121be396c47545ccddd52df0a972 +SHA256: a94890a85c78f512889ae641181f74594a9918879f88c43ef19634fb95fa92c7 +SHA512: eb8c53bf5029a0510a78f9145ce491f2c82e39eda83a8e09fd903462e1aab8a4bd1a3ce09c2b3aba48682230d044e36c18c0041aa2fb80d1046d9113077d5d89 +Description: Intel® Integrated Performance Primitives + + +Package: intel-oneapi-ipp-2021.7.0 +Architecture: amd64 +Version: 2021.7.0-25396 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 498550 +Depends: intel-oneapi-ipp-common-2021.7.0, intel-oneapi-tbb-2021.8.0, intel-oneapi-openmp-2023.0.0, intel-oneapi-condaindex (>= 2023.0.0-25326), intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing-2023.0.0 +Filename: pool/main/intel-oneapi-ipp-2021.7.0-2021.7.0-25396_amd64.deb +Size: 82703342 +MD5sum: 818ae8beaa6b586c95e1a60c6c44fa6f +SHA1: 3eaf226072eab04c4686e9c2ee2238f81103fc80 +SHA256: c6f30709c98a16e879edb824f384ab6ad5723a3b6cf111fc1a6b4fc07a5060e1 +SHA512: ed5b11a0694665f2357eb3aea630a63cb36d13f4739e8fc80e5f1d87ae25b50933513320dd3f3ee7b8fbc79674d89c3138823d1f7da7b80c9650f53ee9c74cc3 +Description: Intel® Integrated Performance Primitives + + +Package: intel-oneapi-ipp +Architecture: amd64 +Version: 2021.7.0-25396 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ipp-2021.7.0 +Filename: pool/main/intel-oneapi-ipp-2021.7.0-25396_amd64.deb +Size: 2544 +MD5sum: 3187ebe53b30385d02d3553f7a08a718 +SHA1: bd655b473e4d590be47b3a4fa38c7ad127fc7985 +SHA256: e7b058fc836077a6806198d5472c27c878f1526abcd80b27855760a26b61fbbc +SHA512: 3633070d435ba91516a68cebc460c069455d6f04bdbd8c23decd77ce50d473a4e586fd5205038542634b174fec93d85ab470959eafc72345d96eaa186bff4525 +Description: Intel® Integrated Performance Primitives + + +Package: intel-oneapi-ipp-2021.8.0 +Architecture: amd64 +Version: 2021.8.0-46345 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 498938 +Depends: intel-oneapi-ipp-common-2021.8.0, intel-oneapi-tbb-2021.9.0, intel-oneapi-openmp-2023.1.0, intel-oneapi-condaindex (>= 2023.1.0-43291), intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing-2023.1.0 +Filename: pool/main/intel-oneapi-ipp-2021.8.0-2021.8.0-46345_amd64.deb +Size: 85150426 +MD5sum: 012845d62f3de8cc62d6f5c31f114263 +SHA1: 8bf850bdc40330ed24ce56f46a04d1beaab0b6cf +SHA256: 2e7e6bdf92b650bcb56e5f72224289531b35de870e16b46b2000ee1276185186 +SHA512: 45881ba57d00c010ba94721cc448023ef90ea57fb47d5c8197a24f4ff9d025a6a15062d0b9a169aeb3d0d303b22029fdd1d496651d3f78bd32810e3d9fa2ecd9 +Description: Intel® Integrated Performance Primitives + + +Package: intel-oneapi-ipp +Architecture: amd64 +Version: 2021.8.0-46345 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ipp-2021.8.0 +Filename: pool/main/intel-oneapi-ipp-2021.8.0-46345_amd64.deb +Size: 2544 +MD5sum: ec52263eefd642bb8a90ab83ce6b420b +SHA1: b0029616a504cd2b300d591e330e83024f183ece +SHA256: 4891376b781c07d3e3558969e5d73f848111e62829a6966a614382b5cbd53ddf +SHA512: 1560056f2de2fbf7bc628d82a1dd5b111d200ba93bf0bacafc9951cb29a499f4c391fdd22ebeff695345a748e2ae77499714d4ef8c4db12a24b11296c2c21fe8 +Description: Intel® Integrated Performance Primitives + + +Package: intel-oneapi-ipp-devel-2021.1.1 +Architecture: amd64 +Version: 2021.1.1-47 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1156530 +Depends: intel-oneapi-ipp-2021.1.1, intel-oneapi-ipp-common-devel-2021.1.1, intel-oneapi-condaindex,intel-oneapi-common-vars,intel-oneapi-common-licensing +Filename: pool/main/intel-oneapi-ipp-devel-2021.1.1-2021.1.1-47_amd64.deb +Size: 140429078 +MD5sum: 65b4ad861d7986c9334b4ed46403a8cf +SHA1: 0a6c44979d96109e07e88276c3f81f2a74d7e384 +SHA256: 91c47017e7d71bb576d3d0a01bdce934f055d152e25c058f24e1c08e43075a80 +SHA512: b74906132d59bf90a7d8341688222ef01e9e34e920e5b39eaa1f844ab1ea883d2df9de7d4ee01b66399e05ce5deb3d1fc87c6f8535d8d624c54740bf1164556d +Description: Intel® Integrated Performance Primitives Development Package + + +Package: intel-oneapi-ipp-devel +Architecture: amd64 +Version: 2021.1.1-47 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ipp-devel-2021.1.1 +Filename: pool/main/intel-oneapi-ipp-devel-2021.1.1-47_amd64.deb +Size: 1854 +MD5sum: be4ed17ef68c85ad3c112c8d9df518c9 +SHA1: 669963e8ecc862901234c6d0c517ac0c83aa8493 +SHA256: 45c47dc33bd3583d573ca09f7d0117aee16436a1d9f7cb11178ca7e7aa125567 +SHA512: 1918fe7ed41a1b80886e0bc72e7fae207d48dc13f6187624804a141da5488e1da2aa11acb34732fae5356a9df93077c8ca92911d9ef0eb2000642509c9a3858e +Description: Intel® Integrated Performance Primitives Development Package + + +Package: intel-oneapi-ipp-devel-2021.2.0 +Architecture: amd64 +Version: 2021.2.0-233 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1051692 +Depends: intel-oneapi-ipp-2021.2.0, intel-oneapi-ipp-common-devel-2021.2.0, intel-oneapi-condaindex (>= 2021.2.0-94), intel-oneapi-common-vars (>= 2021.2.0-195), intel-oneapi-common-licensing-2021.2.0 +Filename: pool/main/intel-oneapi-ipp-devel-2021.2.0-2021.2.0-233_amd64.deb +Size: 118996092 +MD5sum: bad53bf5560bbcfe0843342b875c901f +SHA1: 77437e3a5530d4141df590ef302a668b643a860c +SHA256: ce7196166a50998401b2c5db591ad191230d5f8ca9e10ec5bb327b48380b2eb6 +SHA512: ff67657840e92c17eadd1801a03503d0a6562308f969d561aca1baa88b87aa97d39cfcd3e51d05a665691817caeded220874951d4ca292d437b515ea61213a6b +Description: Intel® Integrated Performance Primitives Development Package + + +Package: intel-oneapi-ipp-devel +Architecture: amd64 +Version: 2021.2.0-233 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ipp-devel-2021.2.0 +Filename: pool/main/intel-oneapi-ipp-devel-2021.2.0-233_amd64.deb +Size: 1854 +MD5sum: ce287f7fb2e62f9ce44f1ebe33602e19 +SHA1: 0e8f9b1eb9fcc6ffc4e90c67e8196553b58de328 +SHA256: e876a64bc2ee34bcc9bfefede970b78bbea98822126df953b856cce080b8ad30 +SHA512: b411948ff84ffc0ef3488c3f40d0062f1f529534ef64b1562f6bad30672e05dc8af85691df75a1e865f8246aa535bb49445ae8bb96b9e4b938bb1538145b0fa7 +Description: Intel® Integrated Performance Primitives Development Package + + +Package: intel-oneapi-ipp-devel-2021.3.0 +Architecture: amd64 +Version: 2021.3.0-333 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1094373 +Depends: intel-oneapi-ipp-2021.3.0, intel-oneapi-ipp-common-devel-2021.3.0, intel-oneapi-condaindex (>= 2021.3.0-159), intel-oneapi-common-vars (>= 2021.3.0-261), intel-oneapi-common-licensing-2021.3.0 +Filename: pool/main/intel-oneapi-ipp-devel-2021.3.0-2021.3.0-333_amd64.deb +Size: 126494030 +MD5sum: 87b0e82c8061709f8ce17dd47624d67c +SHA1: bd9a0e022435b11e0c1e1501dae447cef7d02fd1 +SHA256: 26e677b85a80e6c32eec6fc648c245773abedc6d3a04467f5a45ef096d2c54d4 +SHA512: 71b297a01740345ff9650c7ead1f985c85c540185377c30260b479b50c017fca4fe82d4fdf01bc220a1ff4229eec9025eb4f9ee1294e74f9582bd1ee6445e1dc +Description: Intel® Integrated Performance Primitives Development Package + + +Package: intel-oneapi-ipp-devel +Architecture: amd64 +Version: 2021.3.0-333 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ipp-devel-2021.3.0 +Filename: pool/main/intel-oneapi-ipp-devel-2021.3.0-333_amd64.deb +Size: 1854 +MD5sum: 291195acbfaeefdf18aa2eca8da798b9 +SHA1: d6d2f4d5c612ee3f2763bdf0049144906cdeba3d +SHA256: eda490f4c2098876dd0cd9625e2a3df21fffd6e4c820ee8fa8aeeaa02f504062 +SHA512: 494d17f4e2f6b799b94cea4cde0f4fa396cf80e6ec7b7803a9785b84fb8d7638b2f4e698924c6c8e3fd56a2cbe0f6a08e80ad4e53a12d4e75d77578d05fe19a6 +Description: Intel® Integrated Performance Primitives Development Package + + +Package: intel-oneapi-ipp-devel-2021.4.0 +Architecture: amd64 +Version: 2021.4.0-459 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1099270 +Depends: intel-oneapi-ipp-2021.4.0, intel-oneapi-ipp-common-devel-2021.4.0, intel-oneapi-condaindex (>= 2021.4.0-207), intel-oneapi-common-vars (>= 2021.4.0-327), intel-oneapi-common-licensing-2021.4.0 +Filename: pool/main/intel-oneapi-ipp-devel-2021.4.0-2021.4.0-459_amd64.deb +Size: 126598754 +MD5sum: 79c45d79dea8c98dce929df1b125d2bd +SHA1: 30ad56d6c0cf5d4aedb7bdc8b5da1b9ed4091d64 +SHA256: 8b6eb4e0e064ae63c827569d37b1bde4915e89d64c76a8664516e7d0e7e4547d +SHA512: 218e64f4332b0881c40e21da187d6dc4f91cdaabfcfd697e089f8f49b5e9b41d2a884781fe80d0a3db4377262db4647223edc05e06b4a9b58360c5613081fd36 +Description: Intel® Integrated Performance Primitives Development Package + + +Package: intel-oneapi-ipp-devel +Architecture: amd64 +Version: 2021.4.0-459 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ipp-devel-2021.4.0 +Filename: pool/main/intel-oneapi-ipp-devel-2021.4.0-459_amd64.deb +Size: 1854 +MD5sum: e6b27990a809cdd740c7470d3a72d9d6 +SHA1: 1ade4d2e7115278a92cbc28fc1b4412922fb4f76 +SHA256: 2dbd4f2591ddfd2594459e3ec41467da6a25aa899c2f59d89daab11e4e8f2018 +SHA512: 76801e62c30fb8150db17767066e9e4b681b5e7c8cebf16aa3879bee057a3dcbb2c4bb0cfc1e95bdb478c4ddbfad22d419e73f893008462cc6cdfe13f625ce86 +Description: Intel® Integrated Performance Primitives Development Package + + +Package: intel-oneapi-ipp-devel-2021.5.1 +Architecture: amd64 +Version: 2021.5.1-522 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1101010 +Depends: intel-oneapi-ipp-2021.5.1, intel-oneapi-ipp-common-devel-2021.5.1, intel-oneapi-condaindex (>= 2022.0.0-74), intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-ipp-devel-2021.5.1-2021.5.1-522_amd64.deb +Size: 127326156 +MD5sum: b69ed2ab05b2d6e4cecf4e8094937c35 +SHA1: d16c9c5d21ba38de48c7301774f03bb85f0c33d9 +SHA256: b092c359c786777d2be4c2988f149b378dd993026794b8f20c3d20ecb77aea95 +SHA512: 747f63f84f8a186dac16bff6c0353724b3ec8c26eeda9a0670e6ca1d4ba4d9000f7deeb1441767abb0504904c44c42ed9aed1d5d50aae2894bcf39236e3e34bf +Description: Intel® Integrated Performance Primitives Development Package + + +Package: intel-oneapi-ipp-devel +Architecture: amd64 +Version: 2021.5.1-522 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ipp-devel-2021.5.1 +Filename: pool/main/intel-oneapi-ipp-devel-2021.5.1-522_amd64.deb +Size: 1854 +MD5sum: 0098cd727e3f8164f73a6625cd35ef88 +SHA1: 0dfde7b691f5fef8e5dc9a7bbe6713ca3d32ef47 +SHA256: 7a49525a9537d728096eecc614e5928ea82b971da7480b1e49464cbab237f98d +SHA512: 1a0807e9d7fa00721bd1d610286b65673b0eee6e899b7d2e6881a840058f0812002733273d7396da2e7d9a2d4509ba64c3ace6437c7356a0a44ccf1bb4c7b0ec +Description: Intel® Integrated Performance Primitives Development Package + + +Package: intel-oneapi-ipp-devel-2021.5.2 +Architecture: amd64 +Version: 2021.5.2-544 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1101010 +Depends: intel-oneapi-ipp-2021.5.2, intel-oneapi-ipp-common-devel-2021.5.2, intel-oneapi-condaindex (>= 2022.0.0-74), intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-ipp-devel-2021.5.2-2021.5.2-544_amd64.deb +Size: 127335848 +MD5sum: d7bf97bd795c30482b5ef421a2ec3f90 +SHA1: 40b75aa19c4c7aabb774f1095714482e65aedad3 +SHA256: bfba9918763d6fa4412d9d6672caf0470ed5e46e7b7540b28602ad903a8fb922 +SHA512: c02de0fbd4046310c448d2572057ed62eb472e04d7e1f2d29c206aac052ec1720bd2c6340dc23d63ed36e168ab84d346b87a296fb2bf99987f20749974be1a66 +Description: Intel® Integrated Performance Primitives Development Package + + +Package: intel-oneapi-ipp-devel +Architecture: amd64 +Version: 2021.5.2-544 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ipp-devel-2021.5.2 +Filename: pool/main/intel-oneapi-ipp-devel-2021.5.2-544_amd64.deb +Size: 1854 +MD5sum: c32d34c30071149ca645cf0c425003ff +SHA1: c2dc85612689af4fbe2a447069858186c5a2b161 +SHA256: e7e17535e1285d66b949e7691a51a1cc5ca5da2bd432d8a08da799058ef1787d +SHA512: 4e305669853dca65a314ecb08ed48bf8ba39b7b5689756eaba64bf8159bc8eba523af884653ce8d2f2a21bb63ebbb40678265d6374ff49e54ba7812d05a60236 +Description: Intel® Integrated Performance Primitives Development Package + + +Package: intel-oneapi-ipp-devel-2021.6.0 +Architecture: amd64 +Version: 2021.6.0-626 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1101270 +Depends: intel-oneapi-ipp-2021.6.0, intel-oneapi-ipp-common-devel-2021.6.0, intel-oneapi-condaindex (>= 2022.1.0-155), intel-oneapi-common-vars (>= 2022.1.0-161), intel-oneapi-common-licensing-2022.1.0 +Filename: pool/main/intel-oneapi-ipp-devel-2021.6.0-2021.6.0-626_amd64.deb +Size: 129076706 +MD5sum: abd63b36d31970b4ad913a632e1f30ca +SHA1: 2df0f65c0cf725e9ed2ee3b193e8583abd0b195a +SHA256: e7bbff3f04f6e7e9618c71aa6291a14198391abdbad25927119dc9c0127ea3aa +SHA512: b3b738d3bce53fe742e6aeba5d5110c008e6e83cc0b430f99e775543a14c8078fbf1895ba33122fc4fcb0f4f8780cc04f02c89dda817e0541e2032081ff7c834 +Description: Intel® Integrated Performance Primitives Development Package + + +Package: intel-oneapi-ipp-devel +Architecture: amd64 +Version: 2021.6.0-626 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ipp-devel-2021.6.0 +Filename: pool/main/intel-oneapi-ipp-devel-2021.6.0-626_amd64.deb +Size: 2312 +MD5sum: 90e337eba2dae0a220597c7c45fd31a8 +SHA1: 61ce12100b196ee60b7c8c56eeee21302fc1e282 +SHA256: 93361e701632ffa28674d32ac7f5861cf2d92593867aba7934f6eb5dcc88dcb8 +SHA512: dafe8344c7f2fe4d40fdce544e8eb1131d1ddff3bdd32afb4f9b114080635f080a35ada53184c64978d77a22319fd7be212be8bf05e0225d8ef5022cd03c58c8 +Description: Intel® Integrated Performance Primitives Development Package + + +Package: intel-oneapi-ipp-devel-2021.6.1 +Architecture: amd64 +Version: 2021.6.1-8749 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1101341 +Depends: intel-oneapi-ipp-2021.6.1, intel-oneapi-ipp-common-devel-2021.6.1, intel-oneapi-condaindex (>= 2022.2.0-8695), intel-oneapi-common-vars (>= 2022.2.0-8694), intel-oneapi-common-licensing-2022.2.0 +Filename: pool/main/intel-oneapi-ipp-devel-2021.6.1-2021.6.1-8749_amd64.deb +Size: 129087494 +MD5sum: 2e1505f2df7eca206764cf8ca6c0968b +SHA1: 08d3c6744eedfe0f663aba818b468f1fe2c57977 +SHA256: 45f4f25ecbf852815df418c3e283ed1dfff24db09be09ae7e1b72f0901104493 +SHA512: 32c08f68ae4195f9c2be8e26ac5230b39856cdefa3097fa4b2e92c425ea4d094994f7e10c2281c27645ce195244481856fefc1edb41b5808f91467bda168eb73 +Description: Intel® Integrated Performance Primitives Development Package + + +Package: intel-oneapi-ipp-devel +Architecture: amd64 +Version: 2021.6.1-8749 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ipp-devel-2021.6.1 +Filename: pool/main/intel-oneapi-ipp-devel-2021.6.1-8749_amd64.deb +Size: 2312 +MD5sum: edc8c5e626de7aecd6bdebed04819357 +SHA1: 369d191f05dd4282c62c9dd0bc881829d4a68f04 +SHA256: affdc4e1d268c0e9873ba6f7d51de70864ec2eede7ce25408145fc8cf785f463 +SHA512: 567a8f363a02e2969855f84410b6a6380f26f0f1dc347dbff661701378ecc93b6dbd2762f0cda693220634bbc64f5135e6fb7d85b0d744a3e9d963657d23a8ab +Description: Intel® Integrated Performance Primitives Development Package + + +Package: intel-oneapi-ipp-devel +Architecture: amd64 +Version: 2021.6.2-16995 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ipp-devel-2021.6.2 +Filename: pool/main/intel-oneapi-ipp-devel-2021.6.2-16995_amd64.deb +Size: 2312 +MD5sum: 77ca9ee29bd889512ccbf33d9a320048 +SHA1: f1f987a1a3b4efa70fb11b2dfc9a9e50f9c7be6f +SHA256: ede9ea732f8e6833ea207d559249f55800f96a340f22f8ac8386e47c3335a9b7 +SHA512: 26c16ad3edce03e5b412507b0053b183abd64fb3929c75d3d4df99d0c4cea245c82df338d58817f47f0456fa87151c6f7907095d8ccda3e7bc6c76a6850a7844 +Description: Intel® Integrated Performance Primitives Development Package + + +Package: intel-oneapi-ipp-devel-2021.6.2 +Architecture: amd64 +Version: 2021.6.2-16995 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1101341 +Depends: intel-oneapi-ipp-2021.6.2, intel-oneapi-ipp-common-devel-2021.6.2, intel-oneapi-condaindex (>= 2022.2.1-14970), intel-oneapi-common-vars (>= 2022.2.1-14969), intel-oneapi-common-licensing-2022.2.1 +Filename: pool/main/intel-oneapi-ipp-devel-2021.6.2-2021.6.2-16995_amd64.deb +Size: 129105314 +MD5sum: 198564f11d69172a71226da842a26773 +SHA1: 518b4e3d4a26af27df53c55d21928ab5ec23d8db +SHA256: 55418b283af13d5b8de1493140c92d5ad32e0f14ed44e14fb62cac8c43918a9d +SHA512: d3dbb482fa73c96ad812aa88f5ea52129f12e55111d242687b8e6f01160c138f60aeb52f3c920c307580d0bc616f8308f9b2560f5764405a241101571c1163b4 +Description: Intel® Integrated Performance Primitives Development Package + + +Package: intel-oneapi-ipp-devel-2021.7.0 +Architecture: amd64 +Version: 2021.7.0-25396 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1099845 +Depends: intel-oneapi-ipp-2021.7.0, intel-oneapi-ipp-common-devel-2021.7.0, intel-oneapi-condaindex (>= 2023.0.0-25326), intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing-2023.0.0 +Filename: pool/main/intel-oneapi-ipp-devel-2021.7.0-2021.7.0-25396_amd64.deb +Size: 127493094 +MD5sum: 9b5dac23d272eadf7868247743abe15d +SHA1: cd03d28f9bb48f78aa0aa8eab6776983ef6127e2 +SHA256: 70a6fc980ad128f95ae735d4c9f00e4e39f3e1828730017ddd0faeb219b9230e +SHA512: 40b2d02dfc4f224721b1f2f3ef56c928b71dc3d947726ff4c524f3d0a50ce9d26dc4e5c99547367bf14c25b55c21f77f9f81f4fcfba8a208dd4b34595f0588b5 +Description: Intel® Integrated Performance Primitives Development Package + + +Package: intel-oneapi-ipp-devel +Architecture: amd64 +Version: 2021.7.0-25396 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ipp-devel-2021.7.0 +Filename: pool/main/intel-oneapi-ipp-devel-2021.7.0-25396_amd64.deb +Size: 2312 +MD5sum: 0b7205520ba299427668f1629fa75200 +SHA1: b2a98d1ab3d69784a4bbb6cb29f5eed2fe2b5dca +SHA256: b1086ec086abfdf7b031b09efd5294987014f4d0974fbf1b684d31b9faa9503b +SHA512: 9642f35e5e8db411ee986cf6335db17a1c8a68393d7e8871880bd0dafd722fc60a06a4b0a869c481e2dbc993fe47deb851c0b5273a3a83fe5e47c871cf83ecc7 +Description: Intel® Integrated Performance Primitives Development Package + + +Package: intel-oneapi-ipp-devel-2021.8.0 +Architecture: amd64 +Version: 2021.8.0-46345 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1102758 +Depends: intel-oneapi-ipp-2021.8.0, intel-oneapi-ipp-common-devel-2021.8.0, intel-oneapi-condaindex (>= 2023.1.0-43291), intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing-2023.1.0 +Filename: pool/main/intel-oneapi-ipp-devel-2021.8.0-2021.8.0-46345_amd64.deb +Size: 129421698 +MD5sum: 9f7792af459e773070fc6bd035afa253 +SHA1: 1b671c5af8925d1a83ad7ade7ba94b582f9f714e +SHA256: 0651c32a8875ffad2c627aae8c120366b51ae5bf62aa3fb3ac478e635aeeb871 +SHA512: 8f3534a9ee4abd7fe902a7b49b8ad07bc2a6ccfe499b6a7fe641f20a419af8c1a9a2616143c22ac612b8228af74efbbf6b3ab7d68f224e3b92b59e530c8ca678 +Description: Intel® Integrated Performance Primitives Development Package + + +Package: intel-oneapi-ipp-devel +Architecture: amd64 +Version: 2021.8.0-46345 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ipp-devel-2021.8.0 +Filename: pool/main/intel-oneapi-ipp-devel-2021.8.0-46345_amd64.deb +Size: 2312 +MD5sum: e63303e5972034f15ec12bf560dc1912 +SHA1: b3b92d4ea31e9f908307970f1162fa2046428921 +SHA256: 78c462c4fb7a6a24503fd76b5c440f91e6cf9a552c08b98464aef213613afc1d +SHA512: 4b10c3e4e92d4d6b7966f396a7de6d335a07fa899686ff04a5692c6377338a60fd0b48117ddf1fa0b5e50cc48f9d6b25745a77bcb9bd31a2da1f998bd90af998 +Description: Intel® Integrated Performance Primitives Development Package + + +Package: intel-oneapi-ipp-devel-32bit-2021.1.1 +Architecture: amd64 +Version: 2021.1.1-47 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 584412 +Depends: intel-oneapi-ipp-32bit-2021.1.1, intel-oneapi-ipp-common-devel-2021.1.1, intel-oneapi-condaindex,intel-oneapi-common-vars,intel-oneapi-common-licensing +Filename: pool/main/intel-oneapi-ipp-devel-32bit-2021.1.1-2021.1.1-47_amd64.deb +Size: 74884476 +MD5sum: a3ceec8a9704d8488a7f99a2654f3f5e +SHA1: 813e4f1ea1ac87f915417f6f3fa374702ea02110 +SHA256: 9d58e7af9f95c95dc2eebeb95e1a5dee3f66a7aa23d59d606e26870e47b9670c +SHA512: c5f3f7c6bdbf774c73818be0dc27caf61b897b23b2c09d5c11e2cbdbe2bf2eebdf28472ea683f4a184bb380aba43150fb249cdbc10eee79e7b374615a75ce9ca +Description: Intel® Integrated Performance Primitives Development Package for IA-32 + + +Package: intel-oneapi-ipp-devel-32bit +Architecture: amd64 +Version: 2021.1.1-47 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ipp-devel-32bit-2021.1.1 +Filename: pool/main/intel-oneapi-ipp-devel-32bit-2021.1.1-47_amd64.deb +Size: 1870 +MD5sum: 0cdbe3e770d46f78b97d6f70af1c308e +SHA1: ddc20e753afb064119b8c1738c72cb05a87fb625 +SHA256: 66461c6150908056f153a21720d8fd2b1c27961af2ee0e314b418456fd0b2fc4 +SHA512: 3884c536562ac0136685b8ccb67dfb99ab7f3994ab4ae0d9061e72887ea59741e3d56580783cdcd1c09c2d95fd14cee7de503d093161d1e9a42d03bf00c70012 +Description: Intel® Integrated Performance Primitives Development Package for IA-32 + + +Package: intel-oneapi-ipp-devel-32bit-2021.2.0 +Architecture: amd64 +Version: 2021.2.0-233 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 546728 +Depends: intel-oneapi-ipp-32bit-2021.2.0, intel-oneapi-ipp-common-devel-2021.2.0, intel-oneapi-condaindex (>= 2021.2.0-94), intel-oneapi-common-vars (>= 2021.2.0-195), intel-oneapi-common-licensing-2021.2.0 +Filename: pool/main/intel-oneapi-ipp-devel-32bit-2021.2.0-2021.2.0-233_amd64.deb +Size: 66500610 +MD5sum: ab05cc2410fcb517f53f83029b4be1e9 +SHA1: b3a330cd29da34acf2df05a55b9e25305aae2a2f +SHA256: c5c00a96f9cf743c289d472cca2b78101ee8238cab01de664f6662597022f8c0 +SHA512: 5863a33a90e05f58e95623e71ee759b33c4d26d5def4d53e5661e0aeeedef23da4fbd2331c673f97d34083b1ec4850c3bf15c47a1d8314c027b0ebd5a14e8f3a +Description: Intel® Integrated Performance Primitives Development Package for IA-32 + + +Package: intel-oneapi-ipp-devel-32bit +Architecture: amd64 +Version: 2021.2.0-233 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ipp-devel-32bit-2021.2.0 +Filename: pool/main/intel-oneapi-ipp-devel-32bit-2021.2.0-233_amd64.deb +Size: 1866 +MD5sum: 23c0ec0145116c51fd1fc2b9a88f4b41 +SHA1: 8d24e86239e1332a9a1e5a2b8bb123be400c4933 +SHA256: 7c20ec19b9965d1dba46af5bbd15d7236f88c002e5ad693eab6c49d3c66bdad1 +SHA512: a302ef26fd039d69f858a83a556457de942218d75786ad83c96185228e472d57828861e4e6392a3c0c4c54d6de65ab9c636eb1db35c833649d67e4d2ad8aa65a +Description: Intel® Integrated Performance Primitives Development Package for IA-32 + + +Package: intel-oneapi-ipp-devel-32bit-2021.3.0 +Architecture: amd64 +Version: 2021.3.0-333 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 588657 +Depends: intel-oneapi-ipp-32bit-2021.3.0, intel-oneapi-ipp-common-devel-2021.3.0, intel-oneapi-condaindex (>= 2021.3.0-159), intel-oneapi-common-vars (>= 2021.3.0-261), intel-oneapi-common-licensing-2021.3.0 +Filename: pool/main/intel-oneapi-ipp-devel-32bit-2021.3.0-2021.3.0-333_amd64.deb +Size: 72323858 +MD5sum: 1998ba7b8303458a948ac6b53ea9344c +SHA1: 645512676bd2405a1a5a65caa3171e711e8c8c32 +SHA256: 8cf3ea2ecce7c2f8d5d5442ea2db7678b359714ec9d978325f9bcb272b263fc5 +SHA512: 3ab0512d17dae0ee288bc9a06da8c8b0f74bff745dc6ce981dd4f1ba5f616a3d972232897d3f19c9ae82856bd395ee9e164ba435515228177c29980970cdf2ba +Description: Intel® Integrated Performance Primitives Development Package for IA-32 + + +Package: intel-oneapi-ipp-devel-32bit +Architecture: amd64 +Version: 2021.3.0-333 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ipp-devel-32bit-2021.3.0 +Filename: pool/main/intel-oneapi-ipp-devel-32bit-2021.3.0-333_amd64.deb +Size: 1864 +MD5sum: 93f4f87b1bbd60f06be44d15ed457250 +SHA1: 55216d64e4c63bf109ac75c96c9d22ad5f09ca0b +SHA256: d0bb54f67064cd1da5f4b8d22659f4cfb8e062993a38e980d2cdd30255fd9af6 +SHA512: 584af2e320cebaace25eb79b63f7b06c4ad1e5e53c81b943eb8d7610600dab4a51975c223f4cfd99ce431b163f9d8cdc0f8e6c164ae4dc37cab90c88f849ff82 +Description: Intel® Integrated Performance Primitives Development Package for IA-32 + + +Package: intel-oneapi-ipp-devel-32bit-2021.4.0 +Architecture: amd64 +Version: 2021.4.0-459 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 589297 +Depends: intel-oneapi-ipp-32bit-2021.4.0, intel-oneapi-ipp-common-devel-2021.4.0, intel-oneapi-condaindex (>= 2021.4.0-207), intel-oneapi-common-vars (>= 2021.4.0-327), intel-oneapi-common-licensing-2021.4.0 +Filename: pool/main/intel-oneapi-ipp-devel-32bit-2021.4.0-2021.4.0-459_amd64.deb +Size: 72388932 +MD5sum: efa4be1a7842396c25de1dcafcea9db6 +SHA1: c1b5170d7ef1ad9773d79eb22616f092af01e9ae +SHA256: d55293b4f95ac034d5096f6a26b9a067d6b4625b9550d3634536911d47ce6038 +SHA512: 51b83ff66f1813189dd701300c20e75949a3dde1aa377f47a6327f0221c037343bffe5184e6e3ec48d465162373c17f72e3c3cdb076548636a6795dfe0d8aff3 +Description: Intel® Integrated Performance Primitives Development Package for IA-32 + + +Package: intel-oneapi-ipp-devel-32bit +Architecture: amd64 +Version: 2021.4.0-459 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ipp-devel-32bit-2021.4.0 +Filename: pool/main/intel-oneapi-ipp-devel-32bit-2021.4.0-459_amd64.deb +Size: 1866 +MD5sum: 0a3abf1c5b6df132063ed29f23bc7b68 +SHA1: 30ae6fc2d1f0fbfdbba71ae63efb1f6fe709c3d8 +SHA256: 25e60c185f8929cec6d05dc2760aeed0807ad442e662a42f894a4272d03c5215 +SHA512: 79456e1a0d3edd0b98913f1d7545f12e5184eb81427fde0b7ba446377a85a607cc7bd18e2fbd8f78f48203dbb5289e1e6ac2496b0df38e91bc1b4d26188ad657 +Description: Intel® Integrated Performance Primitives Development Package for IA-32 + + +Package: intel-oneapi-ipp-devel-32bit-2021.5.1 +Architecture: amd64 +Version: 2021.5.1-522 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 590262 +Depends: intel-oneapi-ipp-32bit-2021.5.1, intel-oneapi-ipp-common-devel-2021.5.1, intel-oneapi-condaindex (>= 2022.0.0-74), intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-ipp-devel-32bit-2021.5.1-2021.5.1-522_amd64.deb +Size: 72732996 +MD5sum: f7c33f3277c96dce4256eb934382d590 +SHA1: 73bd70656d00a0dac79173685aefa1d0ab356957 +SHA256: 4b6b9b0d8b15f18b133588e03191c7cfd37b40c01bc59c8d3f82ad7b8a95f0f6 +SHA512: d5acaf274ccac34fc029ffa85c0cb044175fb7179b04b6e3c2b2654914834d4ce85dbdd3f55205646fbb35b1f57ddab080b59bfed47568ba9b7c55d2fe1819c1 +Description: Intel® Integrated Performance Primitives Development Package for IA-32 + + +Package: intel-oneapi-ipp-devel-32bit +Architecture: amd64 +Version: 2021.5.1-522 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ipp-devel-32bit-2021.5.1 +Filename: pool/main/intel-oneapi-ipp-devel-32bit-2021.5.1-522_amd64.deb +Size: 1866 +MD5sum: ebd93a75fc26ac29c89829ca2320f2ab +SHA1: 3f83d1d6164ab0deac851f95ae5064ed8bb8ec34 +SHA256: 9fa3fa3944d64576f9f2dce6eb6ab24acb3444b592911893fae40233daba340d +SHA512: 36486502abafc51c5a0c9d9f0fb11d9e03e301f259332c9cdc655920449bd65e820f2239ffbf5068d335c4631eba6717ebda76977eeafd649ad40ba58e2844f2 +Description: Intel® Integrated Performance Primitives Development Package for IA-32 + + +Package: intel-oneapi-ipp-devel-32bit-2021.5.2 +Architecture: amd64 +Version: 2021.5.2-544 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 590262 +Depends: intel-oneapi-ipp-32bit-2021.5.2, intel-oneapi-ipp-common-devel-2021.5.2, intel-oneapi-condaindex (>= 2022.0.0-74), intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-ipp-devel-32bit-2021.5.2-2021.5.2-544_amd64.deb +Size: 72711204 +MD5sum: 234958ec3c09f63290247d3e1fafa77c +SHA1: 4ec569f44ade27cb822318701e37dacfc6752ebc +SHA256: 0195d347ab69278c158e18c6800a98a0197bb8ffd220cbf915d82320382b955b +SHA512: 2d0cc174ae75f75cf6b655fe3a972b3bf6dd3e4f7a22c6c0d8b16e0617706186d527c9bd78e1287c6d845d55438e83b7169a0cb121cf052c9dec8629c348bb77 +Description: Intel® Integrated Performance Primitives Development Package for IA-32 + + +Package: intel-oneapi-ipp-devel-32bit +Architecture: amd64 +Version: 2021.5.2-544 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ipp-devel-32bit-2021.5.2 +Filename: pool/main/intel-oneapi-ipp-devel-32bit-2021.5.2-544_amd64.deb +Size: 1864 +MD5sum: 43d70a14b3005e0c1e17e632fcfd6770 +SHA1: f8d01eeebf862c78d8b3207cc26390c6fb5fc000 +SHA256: 2d686c5a924a474ffa8732ba5c4444a4667b04c6bf4d16e1840f9b8bbaae55a1 +SHA512: 82907a4ce41760b83a58d88ccdbd4b3333a0071fc6e76e8454d4b81f4c312ba07c1a558491e01de42023e80592ba245fa6a42938846deb35c311204cb4e7f770 +Description: Intel® Integrated Performance Primitives Development Package for IA-32 + + +Package: intel-oneapi-ipp-devel-32bit-2021.6.0 +Architecture: amd64 +Version: 2021.6.0-626 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 590290 +Depends: intel-oneapi-ipp-32bit-2021.6.0, intel-oneapi-ipp-common-devel-2021.6.0, intel-oneapi-condaindex (>= 2022.1.0-155), intel-oneapi-common-vars (>= 2022.1.0-161), intel-oneapi-common-licensing-2022.1.0 +Filename: pool/main/intel-oneapi-ipp-devel-32bit-2021.6.0-2021.6.0-626_amd64.deb +Size: 74535186 +MD5sum: 0bb881aeeffbf9c5187337c87150a107 +SHA1: 65e6f515e07145a307dba5b5b053e7ff6d6ddcf4 +SHA256: ce88a9bba2eca2e431068926b37a1ff28ffc557a0a3f14cfae526a2f227749e3 +SHA512: e3c1399dfc49d87ccbee4516ec9e85d06cbafc87010734b982a14b6f6fcb3a43b550c9e6d64f946ed066a2c328ca615c878100e729e2561f33876171a3fd283c +Description: Intel® Integrated Performance Primitives Development Package for IA-32 + + +Package: intel-oneapi-ipp-devel-32bit +Architecture: amd64 +Version: 2021.6.0-626 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ipp-devel-32bit-2021.6.0 +Filename: pool/main/intel-oneapi-ipp-devel-32bit-2021.6.0-626_amd64.deb +Size: 2320 +MD5sum: 81b30bdf5acfe623f9f2f105db259b4d +SHA1: 94929f97260a7492fa2c58660c3ce764bf301dd1 +SHA256: 6ed96d5f9a492491f353dc489bac6b28933555b2137efc4ee56fedec3a359f86 +SHA512: 66978a479aeb64f9b08f753d24a86d39cdd6e89d561a5f0d79648bdc2a7d0c286cdd0374526c10c492ee4148493c55f004a212d09408cfbd9c46a533de56b2c2 +Description: Intel® Integrated Performance Primitives Development Package for IA-32 + + +Package: intel-oneapi-ipp-devel-32bit-2021.6.1 +Architecture: amd64 +Version: 2021.6.1-8749 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 590360 +Depends: intel-oneapi-ipp-32bit-2021.6.1, intel-oneapi-ipp-common-devel-2021.6.1, intel-oneapi-condaindex (>= 2022.2.0-8695), intel-oneapi-common-vars (>= 2022.2.0-8694), intel-oneapi-common-licensing-2022.2.0 +Filename: pool/main/intel-oneapi-ipp-devel-32bit-2021.6.1-2021.6.1-8749_amd64.deb +Size: 74511654 +MD5sum: a62c83ef87167b3e4d506fdd943c71b5 +SHA1: 6d3f0df05bc863402c85e053d294e17952512d24 +SHA256: a195de85e1771970636bdbc7a98ca06925511a6611304179b654d9f46e9834af +SHA512: 7a4afe90455f7a8f09f67716aea4878204c853124191e58991059d731c12f79f758d1ec0772ae6de559c220bdbeae25372b070a55f03875ffe61394c2c3f8e20 +Description: Intel® Integrated Performance Primitives Development Package for IA-32 + + +Package: intel-oneapi-ipp-devel-32bit +Architecture: amd64 +Version: 2021.6.1-8749 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ipp-devel-32bit-2021.6.1 +Filename: pool/main/intel-oneapi-ipp-devel-32bit-2021.6.1-8749_amd64.deb +Size: 2320 +MD5sum: 345ccbe070f9650e5afab9e3154d08e1 +SHA1: ccea8c18beba1a7d8ea6f8d388d6d2d6277c4744 +SHA256: 4c9cf3fe2603942b8ad406c52e44a7c1b94fa1b29d4541ff01914b14b11d3a6a +SHA512: 3d8525850c7564c512c29a684e4c1e6527fcd51ee3a27c2899338527a0c523a9b640e621e240cf42b7c1585207673dbbe9333a86d516355da87fa3933e661533 +Description: Intel® Integrated Performance Primitives Development Package for IA-32 + + +Package: intel-oneapi-ipp-devel-32bit +Architecture: amd64 +Version: 2021.6.2-16995 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ipp-devel-32bit-2021.6.2 +Filename: pool/main/intel-oneapi-ipp-devel-32bit-2021.6.2-16995_amd64.deb +Size: 2320 +MD5sum: ca0bf07948cf816c15e62fda8d0df265 +SHA1: 3cd3a57ad1398b0a65dcc30e95e910bd727ad273 +SHA256: eb888cc161d06372d66a380f6ab736b9c1a5251b0d50330ebfeb67ed72a69015 +SHA512: 2d9472bd68927e5d81c04a855c9192951e2077304d34559ac052dc47d2103ab9e5f4b32cbff4d0441a29646b4f23dd2127e65eb47620dbedd4a5b7a6f2af8c8b +Description: Intel® Integrated Performance Primitives Development Package for IA-32 + + +Package: intel-oneapi-ipp-devel-32bit-2021.6.2 +Architecture: amd64 +Version: 2021.6.2-16995 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 590360 +Depends: intel-oneapi-ipp-32bit-2021.6.2, intel-oneapi-ipp-common-devel-2021.6.2, intel-oneapi-condaindex (>= 2022.2.1-14970), intel-oneapi-common-vars (>= 2022.2.1-14969), intel-oneapi-common-licensing-2022.2.1 +Filename: pool/main/intel-oneapi-ipp-devel-32bit-2021.6.2-2021.6.2-16995_amd64.deb +Size: 74535118 +MD5sum: b52c89ffdbe1dab7b269fb7c38a7c077 +SHA1: 22a17e0fd1493a24f768cb12bfc8432265c2486e +SHA256: e6bed285022b880a8f6b08780eeddc3d25ddb71b206f4ddf726e07a328e15b4a +SHA512: 92579a0146de106e8f4058e4653a943459cde11242fedb1032a8d6ccc39f2fbbffe674b81b546553c50cb6203419f95068d14d6f1769d2a0e8fbdf6e013b37c4 +Description: Intel® Integrated Performance Primitives Development Package for IA-32 + + +Package: intel-oneapi-ipp-devel-32bit-2021.7.0 +Architecture: amd64 +Version: 2021.7.0-25396 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 590208 +Depends: intel-oneapi-ipp-32bit-2021.7.0, intel-oneapi-ipp-common-devel-2021.7.0, intel-oneapi-condaindex (>= 2023.0.0-25326), intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing-2023.0.0 +Filename: pool/main/intel-oneapi-ipp-devel-32bit-2021.7.0-2021.7.0-25396_amd64.deb +Size: 73612442 +MD5sum: 4cfddc2a1d60f643505bb4293caefb76 +SHA1: 9832042e9fa41c0cf3b8c0b071baa1430d853952 +SHA256: 6a4e05a66af543294e580579115c1ecd41a612e7bb0f02ce1fda5fa452ad3fce +SHA512: c15ef005592f0c30c90362b831c933ea1c26ddc1a5230b41ba5dc28c1a6869f8a7963fb644e6cac9406af82a6a91810b8f777aa1f9bacabce9ff13e0248b8029 +Description: Intel® Integrated Performance Primitives Development Package for IA-32 + + +Package: intel-oneapi-ipp-devel-32bit +Architecture: amd64 +Version: 2021.7.0-25396 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ipp-devel-32bit-2021.7.0 +Filename: pool/main/intel-oneapi-ipp-devel-32bit-2021.7.0-25396_amd64.deb +Size: 2320 +MD5sum: 1cad61e427baf0f8e034f5386eb426b5 +SHA1: 6ea1f1496e38a362f8dfa21d568ba8d36cc71b4f +SHA256: f4a9ba596aa5b4f8415c6a6efdadeff41913fb87c2f8b35ddcd4f6daee16eec4 +SHA512: c8d4bc3e7f9c9f87c2ecaabfb5a0e3014180687813ef57be0f30c98fdb69c03e9c5c8c6736892d25a007f2362a482f827c4cd15a5d7de0368edd9f61b4d0debc +Description: Intel® Integrated Performance Primitives Development Package for IA-32 + + +Package: intel-oneapi-ipp-devel-32bit-2021.8.0 +Architecture: amd64 +Version: 2021.8.0-46345 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 594320 +Depends: intel-oneapi-ipp-32bit-2021.8.0, intel-oneapi-ipp-common-devel-2021.8.0, intel-oneapi-condaindex (>= 2023.1.0-43291), intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing-2023.1.0 +Filename: pool/main/intel-oneapi-ipp-devel-32bit-2021.8.0-2021.8.0-46345_amd64.deb +Size: 75424674 +MD5sum: 462c7c2f12d18aeb032ef0de6ad98a64 +SHA1: dd5a100da534bf7c37c9445cc4255f5d0c6d0d30 +SHA256: 5d9c34ec6e2275118281e5004228279dd74b1573b00001e829d66122850aa432 +SHA512: 9f993ea1aa28008fab09a125d549624371880cb374a2db274b6fc4671b8a3b6ff1919c2cf6b4bb20a1a252400724603591c2ce4f804b849eb93c8bb967472d4b +Description: Intel® Integrated Performance Primitives Development Package for IA-32 + + +Package: intel-oneapi-ipp-devel-32bit +Architecture: amd64 +Version: 2021.8.0-46345 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ipp-devel-32bit-2021.8.0 +Filename: pool/main/intel-oneapi-ipp-devel-32bit-2021.8.0-46345_amd64.deb +Size: 2320 +MD5sum: fb16452f570f65a990cef6e9d0fc8bf1 +SHA1: 1e4cc7d2827f2cb5799ba968c65dcb01514094b1 +SHA256: 81e6cb08530cd2ab0698ae4c6330b1a66d6634c77e1f49be181e993cc46044ab +SHA512: 51b7bb2b7fcf20c64786253de239608fa018ac5cbd6e409b20a912af8ccd8c2aee269adf3ad0cfe7902a00e674e87320a7dc97ba5b3a3ffc8fb45ddd4879984c +Description: Intel® Integrated Performance Primitives Development Package for IA-32 + + +Package: intel-oneapi-ippcp-2021.1.1 +Architecture: amd64 +Version: 2021.1.1-54 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 8348 +Depends: intel-oneapi-ippcp-common-2021.1.1, intel-oneapi-tbb, intel-oneapi-openmp, intel-oneapi-condaindex,intel-oneapi-common-vars,intel-oneapi-common-licensing +Filename: pool/main/intel-oneapi-ippcp-2021.1.1-2021.1.1-54_amd64.deb +Size: 2412668 +MD5sum: d0ee634448841c84345cb1aadac6235d +SHA1: 5469e26986c7c74accb728cce36d080c26bba4fc +SHA256: fe4db058325272234c3213caf3e04a04f2784916449dd36213c88b2850c26887 +SHA512: 412ff5937d312ccde15349aae91e4c859cf2fc4ef407c03c6e7af53daeeac324097f4ed8ae08d28126253137e4f978f6ea484da03e894daf3ef44d35d8e64670 +Description: Intel® Integrated Performance Primitives Cryptography + + +Package: intel-oneapi-ippcp +Architecture: amd64 +Version: 2021.1.1-54 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ippcp-2021.1.1 +Filename: pool/main/intel-oneapi-ippcp-2021.1.1-54_amd64.deb +Size: 2400 +MD5sum: a1d22fa938159e0a783eaa229e6f9d89 +SHA1: 0597f320a74595d454a3314ceb5815c8777b0fb9 +SHA256: c9c3bc8d7025541a62049bf5fd96095eca8bfbc14b0587e233866577a9ac8ebb +SHA512: d56726d1b44268ca6c629a6d5e5607dfbdf5193bd0d091b2f18bc00eb0f86fb08b868d5a4b319e504cd69c535ffa1d52e4425ede8b2239ba090ad8312db60656 +Description: Intel® Integrated Performance Primitives Cryptography + + +Package: intel-oneapi-ippcp-2021.2.0 +Architecture: amd64 +Version: 2021.2.0-231 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 12241 +Depends: intel-oneapi-ippcp-common-2021.2.0, intel-oneapi-condaindex (>= 2021.2.0-94), libssl-dev, intel-oneapi-common-vars (>= 2021.2.0-195), intel-oneapi-common-licensing-2021.2.0 +Filename: pool/main/intel-oneapi-ippcp-2021.2.0-2021.2.0-231_amd64.deb +Size: 3137600 +MD5sum: ddd803727e618001f08fb4b061bfec3f +SHA1: 75e41e451cae40c82909ca5ea8ca251b1ccf7663 +SHA256: 64036270d559ff46998f12030e64a67c272980e77a325c486fc963edf92cc34c +SHA512: bfd31683e5c6cfe3ad5b5b31d681db8359ed36cd4b43642de451702adffed7321d04d2d0e3b6be151844c0dc9344dc7f8f6abb2ee811d2155431deaf67c62460 +Description: Intel® Integrated Performance Primitives Cryptography + + +Package: intel-oneapi-ippcp +Architecture: amd64 +Version: 2021.2.0-231 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ippcp-2021.2.0 +Filename: pool/main/intel-oneapi-ippcp-2021.2.0-231_amd64.deb +Size: 2408 +MD5sum: bd8b1d51469bd912cf276362a58d2a6e +SHA1: f14c1e5c013e8a2efac4e62cde481c2fe06acdfb +SHA256: 1e1798d27370b1dbb75eab0a67ae9ca2a5c9945671927bf20bc771f0ed578f01 +SHA512: c0aeef9307f864190ce80cf94ecf974b3e7a37f6a1cd9d115900747db456c3070f7c95b1f9fb1046481681fd02c384e478f78da3cc11c8bd206a3174732de502 +Description: Intel® Integrated Performance Primitives Cryptography + + +Package: intel-oneapi-ippcp-2021.3.0 +Architecture: amd64 +Version: 2021.3.0-315 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 12762 +Depends: intel-oneapi-ippcp-common-2021.3.0, intel-oneapi-condaindex (>= 2021.3.0-159), libssl-dev, intel-oneapi-common-vars (>= 2021.3.0-261), intel-oneapi-common-licensing-2021.3.0 +Filename: pool/main/intel-oneapi-ippcp-2021.3.0-2021.3.0-315_amd64.deb +Size: 3196356 +MD5sum: 24a903d4264136f78e5492e7439f3680 +SHA1: 930eca2b5744db3a589d21eec55e7e3e3d2ea142 +SHA256: 4dae368748a6c37fd543bb837818b8fa3f7127ee5ccbe002d1258f2523e965ed +SHA512: 4602ec9ff9e8017572ed8fa84fbcf55fb44914f0b11e8948a34f1ae0d1008ecf2e1583d5f7cdc854d7ff2a579fa04aa02424c67c56904739036b7ef13de255e6 +Description: Intel® Integrated Performance Primitives Cryptography + + +Package: intel-oneapi-ippcp +Architecture: amd64 +Version: 2021.3.0-315 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ippcp-2021.3.0 +Filename: pool/main/intel-oneapi-ippcp-2021.3.0-315_amd64.deb +Size: 2404 +MD5sum: e1191b67c82c8e8bcb8fb3e0fcad1384 +SHA1: efff74db507ee09fa3de0aa3bb60915d016c5991 +SHA256: 00b2984aba0239be96b0b9019ec8125f6382d28695061705d344a47890be8650 +SHA512: 50a04f3e3bda0a04f7c6dd334767b2801f799a3818aeeca9156dd81a1e69d77564b3c3fd4260af440f87a8efb9d5d61172dedf8fe2ac54990fa2fad76ab10673 +Description: Intel® Integrated Performance Primitives Cryptography + + +Package: intel-oneapi-ippcp-2021.4.0 +Architecture: amd64 +Version: 2021.4.0-401 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 12985 +Depends: intel-oneapi-ippcp-common-2021.4.0, intel-oneapi-condaindex (>= 2021.4.0-207), libssl-dev, intel-oneapi-common-vars (>= 2021.4.0-327), intel-oneapi-common-licensing-2021.4.0 +Filename: pool/main/intel-oneapi-ippcp-2021.4.0-2021.4.0-401_amd64.deb +Size: 3270406 +MD5sum: bd25bc20a9ba62b592e916a59384421d +SHA1: 8f92b6228bde59f24c0c55ab911b14f4c3766641 +SHA256: e398e1efa3fa6693aba86fff100225c931455e9644f52ced37aea5333306fe7c +SHA512: 075e7aead082f1a4dfc9cdca99903f327cc16823f07ddbf6cae9e6f3347f066219370ba8fa3926035516e1cf4f9d3a0ca21bb48178451cd7f451cbe37fedbbd9 +Description: Intel® Integrated Performance Primitives Cryptography + + +Package: intel-oneapi-ippcp +Architecture: amd64 +Version: 2021.4.0-401 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ippcp-2021.4.0 +Filename: pool/main/intel-oneapi-ippcp-2021.4.0-401_amd64.deb +Size: 2406 +MD5sum: 25c358d5cccfbb5ace0dd91c8b291681 +SHA1: c98b88b5a62ccd55b6541d3b0113ab4934d88d73 +SHA256: e5c21ebfb45808238fa42459f21176166786b837a06c39a3697d47d83421d64e +SHA512: 954187622a17cd47f814ef0bb899e260b6c0b88cbbc21f81193684a5c115483ea0d8de47f08c73c331e87f86afe7f5ebb7e9013c967b930417522fe0860d8eec +Description: Intel® Integrated Performance Primitives Cryptography + + +Package: intel-oneapi-ippcp-2021.5.0 +Architecture: amd64 +Version: 2021.5.0-445 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 14129 +Depends: intel-oneapi-ippcp-common-2021.5.0, intel-oneapi-condaindex (>= 2022.0.0-74), libssl-dev, intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-ippcp-2021.5.0-2021.5.0-445_amd64.deb +Size: 3317572 +MD5sum: 6d228f3b102aa092843de0e9c996ff0f +SHA1: 6bcb33e83409eee39768fb37744446d5e4f19f40 +SHA256: 0fc5565020910d4961eeedaf53dceba343487c460ffb09e244f81f82e6193b56 +SHA512: 722fbf36de21e122d367add9b3032f218baee586b3b79cc176031d66eacfd46d8ee17a9ec8a52670709113365a2abcc61210bc861fd7ef676af0f6e6ec732c08 +Description: Intel® Integrated Performance Primitives Cryptography + + +Package: intel-oneapi-ippcp +Architecture: amd64 +Version: 2021.5.0-445 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ippcp-2021.5.0 +Filename: pool/main/intel-oneapi-ippcp-2021.5.0-445_amd64.deb +Size: 2186 +MD5sum: a9ae12e6f0bb32e31833c5a3ac13bb3d +SHA1: d56b9a03009d1924f69784a67416ae9687319fb6 +SHA256: 52c3d74d3ca65fa167d2b484ea20a8dacee765768d7450c200b9fe1006422648 +SHA512: 190f57be8406a1a02db1a8fe309e10912b127c595a0f2552526ed8f341eb93b35e0178e1693205cfd54cbe6506846a22d6ed7a77bd02696937057462b7f652a5 +Description: Intel® Integrated Performance Primitives Cryptography + + +Package: intel-oneapi-ippcp-2021.5.1 +Architecture: amd64 +Version: 2021.5.1-462 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 14129 +Depends: intel-oneapi-ippcp-common-2021.5.1, intel-oneapi-condaindex (>= 2022.0.0-74), libssl-dev, intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-ippcp-2021.5.1-2021.5.1-462_amd64.deb +Size: 3318780 +MD5sum: 89f2d4bbaf21de5ea497b7b1d546f56d +SHA1: b6f1db4ce8b1fc9d0cbaa0a4fd47190f4af879c2 +SHA256: 4a9e69f6ca80995af4b0947aaf5a2e3a7a329fb34d0426dadb923f659babe6e3 +SHA512: 49f3c45aaec34f946db1d84701d301ce46c861363aca85b585fff04f7cac9466090063a1b2aeeef26ef6b6dae628f4f92bdc80a865fd88b922a17cbc22eb008f +Description: Intel® Integrated Performance Primitives Cryptography + + +Package: intel-oneapi-ippcp +Architecture: amd64 +Version: 2021.5.1-462 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ippcp-2021.5.1 +Filename: pool/main/intel-oneapi-ippcp-2021.5.1-462_amd64.deb +Size: 2186 +MD5sum: 0b5f3be95a5fc070fcda5fad81597f2d +SHA1: 1fa797f2dad81a20307674b7290f06a047885c9e +SHA256: b8a0b61392e788dcd0eb8a24ff32e755ac456507b859c888e89fa246480166a3 +SHA512: b1de7f50af31f0bcd982879cd2484d5cf421e7d438747dc95d58bd02b58b0e98b7905c899590ea6c3f3353df72ea6b98121b5e05ecc799436ce9d6d90d0d07dc +Description: Intel® Integrated Performance Primitives Cryptography + + +Package: intel-oneapi-ippcp-2021.6.0 +Architecture: amd64 +Version: 2021.6.0-536 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 15187 +Depends: intel-oneapi-ippcp-common-2021.6.0, intel-oneapi-condaindex (>= 2022.1.0-155), libssl-dev, intel-oneapi-common-vars (>= 2022.1.0-161), intel-oneapi-common-licensing-2022.1.0 +Filename: pool/main/intel-oneapi-ippcp-2021.6.0-2021.6.0-536_amd64.deb +Size: 3943684 +MD5sum: 71aceba12ee0b8addf58de68492425fd +SHA1: ee09c6cfa27e83a0b69f64ac8721d0234d434843 +SHA256: b76fe7205a9d7d36942afaef70bd2fbf41f8ba7b3d64024225f398c93c5696c5 +SHA512: dcb26c9b8031879d2221b00ebd63f39691a7a87192bf7a0bbfc537505550f987145ac7c0211b60c94ebed55775a5226964712a40e42d8e3297365a8e9f90709a +Description: Intel® Integrated Performance Primitives Cryptography + + +Package: intel-oneapi-ippcp +Architecture: amd64 +Version: 2021.6.0-536 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ippcp-2021.6.0 +Filename: pool/main/intel-oneapi-ippcp-2021.6.0-536_amd64.deb +Size: 2556 +MD5sum: 9f95dda454872a856cfc3cd6156e5a77 +SHA1: 657c296a4e45e9a503046960561d65b8f83e1941 +SHA256: b06b5337280b5e12827339987a0ff672f03147e179e739654b3031c8c51506e4 +SHA512: d7c32ea192585e8d1ed253024127eef3ba1ff4eff809bc81c3c80ada91732cee46c5a36a131ea93d640906307cd2f8ecabc615dd6908ae106cac00dfc5d75922 +Description: Intel® Integrated Performance Primitives Cryptography + + +Package: intel-oneapi-ippcp-2021.6.1 +Architecture: amd64 +Version: 2021.6.1-8714 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 15227 +Depends: intel-oneapi-ippcp-common-2021.6.1, intel-oneapi-condaindex (>= 2022.2.0-8695), libssl-dev, intel-oneapi-common-vars (>= 2022.2.0-8694), intel-oneapi-common-licensing-2022.2.0 +Filename: pool/main/intel-oneapi-ippcp-2021.6.1-2021.6.1-8714_amd64.deb +Size: 3944932 +MD5sum: 076789cf2434f432b04372a04b7dc65b +SHA1: 19e97eaae5faae96e5843d18c33fe47f6809e51d +SHA256: 4d54c8a5c3aa9c36b0d5cb36fdff529bd030fcf1928a58a0ad86e4dd62906649 +SHA512: e3885900010f4cf40c56db8b0638bced8e4e36facdc64a7f1c131341b666ed734aa4d20a7233ec70999a0a5469d54979740d31493131fb11572ff5459d9206e2 +Description: Intel® Integrated Performance Primitives Cryptography + + +Package: intel-oneapi-ippcp +Architecture: amd64 +Version: 2021.6.1-8714 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ippcp-2021.6.1 +Filename: pool/main/intel-oneapi-ippcp-2021.6.1-8714_amd64.deb +Size: 2556 +MD5sum: 069b12e18cbe72c35571d4d8f5b771c2 +SHA1: 6303c08c02f9e31ef8ca1b137e81fd10c07f5bac +SHA256: 6444c4afff90268bb2727158fb5d462624f542a7c6341b40b737783dc67f026f +SHA512: 266a1e3138b5aacc65009377bc4112906e5bfeab619d079398b72cf67ab4a4041ae5889327031079c57ab7d360f4a3c03af86ed49a58e601f5738b278382bf2e +Description: Intel® Integrated Performance Primitives Cryptography + + +Package: intel-oneapi-ippcp +Architecture: amd64 +Version: 2021.6.2-15006 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ippcp-2021.6.2 +Filename: pool/main/intel-oneapi-ippcp-2021.6.2-15006_amd64.deb +Size: 2564 +MD5sum: 43ae2ff3dae3d49eed210b2ace426333 +SHA1: 09520306bd2a59dd52e1a0f93f88bbed266a1091 +SHA256: acb3ebb4545d3eb7605a77672ad9851b9194d658bd5aec2b1f469edbc5e02fd4 +SHA512: 67a0d3f4047212e7b937344207bc0cb1def39efa628a391c2d1c9f963fb30e2a3730d16f1cc43da872eea937a1b6e883d0fea85308c8ebe9bdda403e40331add +Description: Intel® Integrated Performance Primitives Cryptography + + +Package: intel-oneapi-ippcp-2021.6.2 +Architecture: amd64 +Version: 2021.6.2-15006 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 15227 +Depends: intel-oneapi-ippcp-common-2021.6.2, intel-oneapi-condaindex (>= 2022.2.1-14970), libssl-dev, intel-oneapi-common-vars (>= 2022.2.1-14969), intel-oneapi-common-licensing-2022.2.1 +Filename: pool/main/intel-oneapi-ippcp-2021.6.2-2021.6.2-15006_amd64.deb +Size: 3949224 +MD5sum: 38a22ed0dcb4fbb1cbed1a023e50c766 +SHA1: 1eba304d58f50551f6cfce9a3acb99f794c4b7fa +SHA256: 528fbb9ae154f4b857746d56e80435ea580987262381d693314ab6f7b445efb3 +SHA512: 64e7afbffba449a88342ba786c60e4a7138aa8f911d1178d1818b707833a5d70eebd02debe50946af0bf6c7c65124a2b9337afc9a9c00f902ce48dec08094dd0 +Description: Intel® Integrated Performance Primitives Cryptography + + +Package: intel-oneapi-ippcp-2021.6.3 +Architecture: amd64 +Version: 2021.6.3-25343 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 15227 +Depends: intel-oneapi-ippcp-common-2021.6.3, intel-oneapi-condaindex (>= 2023.0.0-25326), libssl-dev, intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing-2023.0.0 +Filename: pool/main/intel-oneapi-ippcp-2021.6.3-2021.6.3-25343_amd64.deb +Size: 3942092 +MD5sum: 512ab4ac3c70a6fb6cb7ccaaa00cc9c8 +SHA1: 2bb824947d7911d4b68c2a9bfdf1543cc5d9c876 +SHA256: 91284815ba38f7d327531ff6ca5104dcb31ac753f94c1eb9961d25b441fe33bb +SHA512: 3180d28a952f2e4be06b9f59862441b10bad25fa389b7437cf79c1355bf8dc7c41e65a9919de06219905fabe875c7076a0b4800cb68b5d7fa22ab2d8c208631f +Description: Intel® Integrated Performance Primitives Cryptography + + +Package: intel-oneapi-ippcp +Architecture: amd64 +Version: 2021.6.3-25343 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ippcp-2021.6.3 +Filename: pool/main/intel-oneapi-ippcp-2021.6.3-25343_amd64.deb +Size: 2560 +MD5sum: bcfeab8e8e44d352ebdcedcbd010ff2a +SHA1: ad7aa568c500233d7914867b1c138d3e9e3cfc58 +SHA256: 0d07fb512af65e0435fb6b304909f95754b1d7d08cc23158758a723ec6beacdc +SHA512: 92e4d2729e0e520f53a7fa18997b9c526c4345165b924d06f9274905d7a24ed324c624b3f24bd2c6c1981fbacf35e6a52ce21b407977e82b210c2a6bcf0f027e +Description: Intel® Integrated Performance Primitives Cryptography + + +Package: intel-oneapi-ippcp-2021.7.0 +Architecture: amd64 +Version: 2021.7.0-43492 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 15779 +Depends: intel-oneapi-ippcp-common-2021.7.0, intel-oneapi-condaindex (>= 2023.1.0-43291), libssl-dev, intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing-2023.1.0 +Filename: pool/main/intel-oneapi-ippcp-2021.7.0-2021.7.0-43492_amd64.deb +Size: 4090616 +MD5sum: 5fe990c765b85d9b9dc281837b1aa86a +SHA1: f9b225d4aacb3efe32d57bf0039c056dded5e621 +SHA256: 51c8ba51ffb8aa8d8fb89cb0e33e52ba6a1b415e6dcfa8dbf3e6c111f33f67d9 +SHA512: 9a1f0af223c090cce861eff167f6393b8e93e8175a2641f5f9c309e208e56a1b450fc1325007fb029254ac65948ef61a2c41e8cc9bd76e1008b43f2345fe7c09 +Description: Intel® Integrated Performance Primitives Cryptography + + +Package: intel-oneapi-ippcp +Architecture: amd64 +Version: 2021.7.0-43492 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ippcp-2021.7.0 +Filename: pool/main/intel-oneapi-ippcp-2021.7.0-43492_amd64.deb +Size: 2560 +MD5sum: ae030e73b60e587a99a96ced20483691 +SHA1: 32fd3d3f5476f0f47d5e14b9bd2b09c96580564f +SHA256: 824120d37755bc1cf0caffe08d1cd5f7a2566f7b391b73111e10ea638ac5ac41 +SHA512: 497d62d2f375f4ac0d060e9150058e85ad314e8509b91b456dc24ba2e1c376025002d7c36fc189f98d7bc45acd89446fced273f19383776a6ba6b6d33a967daf +Description: Intel® Integrated Performance Primitives Cryptography + + +Package: intel-oneapi-ippcp-devel-2021.1.1 +Architecture: amd64 +Version: 2021.1.1-54 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 33338 +Depends: intel-oneapi-ippcp-2021.1.1, intel-oneapi-ippcp-common-devel-2021.1.1, intel-oneapi-condaindex,intel-oneapi-common-vars,intel-oneapi-common-licensing +Filename: pool/main/intel-oneapi-ippcp-devel-2021.1.1-2021.1.1-54_amd64.deb +Size: 4948128 +MD5sum: 09f5fe979d8437aaca278ac0aaa37d1e +SHA1: 2d08ed554e2c178a36a26e6a16b7af09add3e35b +SHA256: 0388074f206b31354abcc9c475f2d4bca19e02a7fb9b309ccd2cceebc955384d +SHA512: 3a0eee93cae18aafbd4a7ea7914075185094b622d0e322c5f62b17ec181003e0572079d3aee49fa0b668d12f8d2f1954a3fc81d819090fef051799162a0600fd +Description: Intel® Integrated Performance Primitives Cryptography Development Package + + +Package: intel-oneapi-ippcp-devel +Architecture: amd64 +Version: 2021.1.1-54 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ippcp-devel-2021.1.1 +Filename: pool/main/intel-oneapi-ippcp-devel-2021.1.1-54_amd64.deb +Size: 1868 +MD5sum: 5a58d599768c87fd449a895d09cdf7b1 +SHA1: 14b83d132ce2f01fde2131c2982f80808d394a9a +SHA256: 399e252b1ad0bc8e7c639a5c57969efc88b940bfe5df3b9fa6c00b06f1729cab +SHA512: 6d916154bc31908005caf79dcdff89bfe45cfc5232055677d55d4fe02856a98321a45cb7305bbf111e39608149dd09d42a9cc0f4ab6e0dfbad6d6f86a29898fc +Description: Intel® Integrated Performance Primitives Cryptography Development Package + + +Package: intel-oneapi-ippcp-devel-2021.2.0 +Architecture: amd64 +Version: 2021.2.0-231 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 45941 +Depends: intel-oneapi-ippcp-2021.2.0, intel-oneapi-ippcp-common-devel-2021.2.0, intel-oneapi-condaindex (>= 2021.2.0-94), intel-oneapi-common-vars (>= 2021.2.0-195), intel-oneapi-common-licensing-2021.2.0 +Filename: pool/main/intel-oneapi-ippcp-devel-2021.2.0-2021.2.0-231_amd64.deb +Size: 5963280 +MD5sum: 11b25d00e35fad7767a2a3275553082a +SHA1: 761dac592bcb49ecf2639ef8d258beb3641d1ac9 +SHA256: 6dd9f04c39d5a7e7203854c03ccf982dc9c6472b99bfe3bf40ff40289c6a9c48 +SHA512: 60446ae9f15cbda3389e53a00c038e602b8e58b5388c95d19bd350f3d0f64251a76ca7472b7bbf545fb33ad18414e46914eef1019512684d09396a656310728d +Description: Intel® Integrated Performance Primitives Cryptography Development Package + + +Package: intel-oneapi-ippcp-devel +Architecture: amd64 +Version: 2021.2.0-231 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ippcp-devel-2021.2.0 +Filename: pool/main/intel-oneapi-ippcp-devel-2021.2.0-231_amd64.deb +Size: 1866 +MD5sum: 31e06b2edb6ba2900e9b3b7fed6f7117 +SHA1: 398bc4ffc27e6ea2025f89b49fe5fe51b0d5e54c +SHA256: 8c8416c1f0300b6e1b2fc7b07411e0cb6e173bad1d7ea210b6562be05b0af0fc +SHA512: a8c3fe159ac859b9c74d95f93e68290b40c1acdb14d73512ff3e5eb6094dc107559902126875aae323fef00edb54e558399d6df3ecef113485d354e6cdc7ebaf +Description: Intel® Integrated Performance Primitives Cryptography Development Package + + +Package: intel-oneapi-ippcp-devel-2021.3.0 +Architecture: amd64 +Version: 2021.3.0-315 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 50915 +Depends: intel-oneapi-ippcp-2021.3.0, intel-oneapi-ippcp-common-devel-2021.3.0, intel-oneapi-condaindex (>= 2021.3.0-159), intel-oneapi-common-vars (>= 2021.3.0-261), intel-oneapi-common-licensing-2021.3.0 +Filename: pool/main/intel-oneapi-ippcp-devel-2021.3.0-2021.3.0-315_amd64.deb +Size: 6597794 +MD5sum: 6a12d6bba05cec90dd111606187d284c +SHA1: 3ef54dfb18a9a6aefc3d80b0b44cb1eb7902632c +SHA256: b329114630e4ab23d8b0af3ee656e28699d6a20669e8c6d27502d6123dc00055 +SHA512: 32c675507d39502f2470e4926080c92f1d821470254ef471b064ccfb81e07a6f59a7881365a788900682186f7ad2eb15ab572a2e30d239f8f250bc70ce4aff3b +Description: Intel® Integrated Performance Primitives Cryptography Development Package + + +Package: intel-oneapi-ippcp-devel +Architecture: amd64 +Version: 2021.3.0-315 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ippcp-devel-2021.3.0 +Filename: pool/main/intel-oneapi-ippcp-devel-2021.3.0-315_amd64.deb +Size: 1866 +MD5sum: afc7b78e2a633c03e5f8a6e76b720ecc +SHA1: 8e15bf9fcf30683a00198ab32c42e71610baf965 +SHA256: abbcc03e94e4dc83d5ec03e3510dcb8c6d58170c46ad77c1fd04d1df477d2b80 +SHA512: 5aa358a58fe06a18416464d3c8f8d10d3b39e9985096b1913388f396a4b356b45308c06667393f0e43c33eb75c0830c71577654bdfebf81ffc52ca52b8387ea8 +Description: Intel® Integrated Performance Primitives Cryptography Development Package + + +Package: intel-oneapi-ippcp-devel-2021.4.0 +Architecture: amd64 +Version: 2021.4.0-401 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 51313 +Depends: intel-oneapi-ippcp-2021.4.0, intel-oneapi-ippcp-common-devel-2021.4.0, intel-oneapi-condaindex (>= 2021.4.0-207), intel-oneapi-common-vars (>= 2021.4.0-327), intel-oneapi-common-licensing-2021.4.0 +Filename: pool/main/intel-oneapi-ippcp-devel-2021.4.0-2021.4.0-401_amd64.deb +Size: 6693732 +MD5sum: 9018d50a8f36ee6548b96f9819352810 +SHA1: 7602c4f775e4c29a4b0ac91ba2672f224983954f +SHA256: 46f197d39df87e1fe2dde4250c3b321584f72ee584ad774cb54be6883c6da900 +SHA512: c8e1c289a4cccbf6e1e7bf669576a54eb038676d1927bfb554c11f504f9920fec847f122a7422b3b7ba375e972d0dab0071c28d59b8fba8003862d34b21441fd +Description: Intel® Integrated Performance Primitives Cryptography Development Package + + +Package: intel-oneapi-ippcp-devel +Architecture: amd64 +Version: 2021.4.0-401 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ippcp-devel-2021.4.0 +Filename: pool/main/intel-oneapi-ippcp-devel-2021.4.0-401_amd64.deb +Size: 1866 +MD5sum: 04570f811c8f109ef25e84a06fb85ea2 +SHA1: c3a62ee9458cb319e9733342cd5d34640eaf87a9 +SHA256: ec24dfee7b0b509aba2714f892db5b1265493cc30914bec64bad9d10d3828417 +SHA512: 42f0da9a44ceda5b5456495928c617782114808cd94d2757e1920fb8acbb9f65eabf118cb5d92b8230519a81ce9c98454877bef70e35830d078ebb57c749320f +Description: Intel® Integrated Performance Primitives Cryptography Development Package + + +Package: intel-oneapi-ippcp-devel-2021.5.0 +Architecture: amd64 +Version: 2021.5.0-445 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 53881 +Depends: intel-oneapi-ippcp-2021.5.0, intel-oneapi-ippcp-common-devel-2021.5.0, intel-oneapi-condaindex (>= 2022.0.0-74), intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-ippcp-devel-2021.5.0-2021.5.0-445_amd64.deb +Size: 6749332 +MD5sum: 3473edd8fd70cbf4158c7081ff400b30 +SHA1: bf144b77cb24b9c4c416723f9ed543588457a0af +SHA256: 242d54c14559aa89cac15e34156124b99362a98ae14065960ff39bb9e81f9e4a +SHA512: d49147e6e2aeeea1053052084d381eeef91a1e34f425b51844f81f7ce0f63cfe10b39b8c4021178923d4f80582c92a6078d242995d1a99f0eccb7f8b0e8bd3bb +Description: Intel® Integrated Performance Primitives Cryptography Development Package + + +Package: intel-oneapi-ippcp-devel +Architecture: amd64 +Version: 2021.5.0-445 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ippcp-devel-2021.5.0 +Filename: pool/main/intel-oneapi-ippcp-devel-2021.5.0-445_amd64.deb +Size: 2278 +MD5sum: 623e92839140580d21a8e6640ce06ffa +SHA1: 6d43095303f9cff82b9a49650b9b98ba7d1d59a3 +SHA256: 95d6f7689b8e77983a8d1026914e7b29bae5ff27ff73a7ced091327838b6e811 +SHA512: af6324ed549ab9ba769c0354ff93dd2369bb15d25b0c573ceb46816cff4e1c129ed93ef6249dc9429381bf906dd760cc0fd6667f96b46f0b1d2d9a28d1e72a5e +Description: Intel® Integrated Performance Primitives Cryptography Development Package + + +Package: intel-oneapi-ippcp-devel-2021.5.1 +Architecture: amd64 +Version: 2021.5.1-462 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 53881 +Depends: intel-oneapi-ippcp-2021.5.1, intel-oneapi-ippcp-common-devel-2021.5.1, intel-oneapi-condaindex (>= 2022.0.0-74), intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-ippcp-devel-2021.5.1-2021.5.1-462_amd64.deb +Size: 6748456 +MD5sum: 3f223a0b18d073e09e1b0400a98c794d +SHA1: 0013a86311f636d9aa3588c01b8d680f296e9206 +SHA256: 680ffc4946a555ec13863ee61dd1885c45dccac5b5010f502ce3a05c6846fdb7 +SHA512: b325876310fff81eeba9ddc932067a442d65dc6763d6f3d061b20b80dd09de907e0f570811cd2b6c508e36f536249a371330d43e2c72e2eaf1b9d54f8b4ea114 +Description: Intel® Integrated Performance Primitives Cryptography Development Package + + +Package: intel-oneapi-ippcp-devel +Architecture: amd64 +Version: 2021.5.1-462 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ippcp-devel-2021.5.1 +Filename: pool/main/intel-oneapi-ippcp-devel-2021.5.1-462_amd64.deb +Size: 2276 +MD5sum: cae2e6b227a518186de1758614c7df06 +SHA1: b26b3b7a10bc5cea56cd688e38a057e6c5b9e5b1 +SHA256: 4289eb5eef5a556e9e86bd0925bf88a579394c8106e4a03a77b2e249bf27c09a +SHA512: 9276c1ace35499abe590e86eb092cfbc05d7c2454359573124a866494a2a3e75ff6a3b18156923459aae17e4fd4dba03dc6d07604b7d561a6b4c0c6b53f80aa4 +Description: Intel® Integrated Performance Primitives Cryptography Development Package + + +Package: intel-oneapi-ippcp-devel-2021.6.0 +Architecture: amd64 +Version: 2021.6.0-536 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 57031 +Depends: intel-oneapi-ippcp-2021.6.0, intel-oneapi-ippcp-common-devel-2021.6.0, intel-oneapi-condaindex (>= 2022.1.0-155), intel-oneapi-common-vars (>= 2022.1.0-161), intel-oneapi-common-licensing-2022.1.0 +Filename: pool/main/intel-oneapi-ippcp-devel-2021.6.0-2021.6.0-536_amd64.deb +Size: 8745840 +MD5sum: 34ea6eaae38b85e54c72975ed3234b76 +SHA1: 4e06b97e8038debdde202883f314fa0e5a6aed9d +SHA256: c9c49c3ae07393ceb86055dfb6e7dd777be3adbd29678265e1e7027484eb4300 +SHA512: 31fb63870d096f4adfb78e68741a345c5dcc2bfcf27d50bb51354865dfb1fd88947441c9432d631596c27d767c4d14d3aa02035b4f536e72110363cda8206a8a +Description: Intel® Integrated Performance Primitives Cryptography Development Package + + +Package: intel-oneapi-ippcp-devel +Architecture: amd64 +Version: 2021.6.0-536 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ippcp-devel-2021.6.0 +Filename: pool/main/intel-oneapi-ippcp-devel-2021.6.0-536_amd64.deb +Size: 2684 +MD5sum: b13d0077b545f67b45f7707b9d880028 +SHA1: 654d29eb1b3cb7f7a4188e18afc637f0c7a77d53 +SHA256: 99ad10743ed358e78ea8574d27ace7f2626ccc872b22363214b44220d587b93d +SHA512: efe533381f01da0f8d0eac275b120f83b4a3d78c8bd18031e093d7957132354cc789c395d740c90a8a87beff3b26ed95d1e94aa3313abc1faf4f984a87cec27c +Description: Intel® Integrated Performance Primitives Cryptography Development Package + + +Package: intel-oneapi-ippcp-devel-2021.6.1 +Architecture: amd64 +Version: 2021.6.1-8714 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 57106 +Depends: intel-oneapi-ippcp-2021.6.1, intel-oneapi-ippcp-common-devel-2021.6.1, intel-oneapi-condaindex (>= 2022.2.0-8695), intel-oneapi-common-vars (>= 2022.2.0-8694), intel-oneapi-common-licensing-2022.2.0 +Filename: pool/main/intel-oneapi-ippcp-devel-2021.6.1-2021.6.1-8714_amd64.deb +Size: 8766564 +MD5sum: ad137541027d3a7b71a91d86108f373c +SHA1: 74338b9a67d7b9bbde374d20288cbec675fb57d3 +SHA256: 84fac947b6f6320669df5b119c824661210d3febba6da2c04a8f0546a119f288 +SHA512: b0dcaa7077d0d53e0741f1fc8e2ed98c4679e30810f0a09ee6c17b8d31fbda283bcd23ad6a33bf67fc0192806f2026471d87c610514c7c402ec37723acf01b77 +Description: Intel® Integrated Performance Primitives Cryptography Development Package + + +Package: intel-oneapi-ippcp-devel +Architecture: amd64 +Version: 2021.6.1-8714 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ippcp-devel-2021.6.1 +Filename: pool/main/intel-oneapi-ippcp-devel-2021.6.1-8714_amd64.deb +Size: 2684 +MD5sum: 9f1ad255dc8cc5d65c90312eb0acec63 +SHA1: 0a5bd63ec4c7bfa8f8fefa6b36be1095f242dfaf +SHA256: 8ae66d6918f979002f92b2399b65dc2bc1f0dafcd5c5ea47fc4e5f323166cca7 +SHA512: 4722451e88b174c4cff64af80b1b2cc6ca9ab510048d7608a5162cac74de54593ded9ca56b9667fbd9d5f12afb5beda1ea302784b9d51403398c46523c1e18ba +Description: Intel® Integrated Performance Primitives Cryptography Development Package + + +Package: intel-oneapi-ippcp-devel +Architecture: amd64 +Version: 2021.6.2-15006 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ippcp-devel-2021.6.2 +Filename: pool/main/intel-oneapi-ippcp-devel-2021.6.2-15006_amd64.deb +Size: 2688 +MD5sum: 4c6cc8ee3fca0ac408e3b2f7d639af6f +SHA1: ca7720135e945fe115b8a7ca9b57f95de448c5a7 +SHA256: 24879412da1d6b2fc0be3af977a7a77041ef0eef24ed43fe2a40f721e6e9d2dc +SHA512: accd24ff763e2a95091e4d856004311cf8a868b39da5371ff036ab8cabc421eff2f2874f2e56694eafa500d82dcb720869a6e9689a3d1879c85c6a7e42f38498 +Description: Intel® Integrated Performance Primitives Cryptography Development Package + + +Package: intel-oneapi-ippcp-devel-2021.6.2 +Architecture: amd64 +Version: 2021.6.2-15006 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 57106 +Depends: intel-oneapi-ippcp-2021.6.2, intel-oneapi-ippcp-common-devel-2021.6.2, intel-oneapi-condaindex (>= 2022.2.1-14970), intel-oneapi-common-vars (>= 2022.2.1-14969), intel-oneapi-common-licensing-2022.2.1 +Filename: pool/main/intel-oneapi-ippcp-devel-2021.6.2-2021.6.2-15006_amd64.deb +Size: 8746756 +MD5sum: 70bfa19d3581ff0ead2ffc19b5bf9041 +SHA1: 3a8de877ca25b13cef76abc06852886a7f55d28c +SHA256: 7bf150d60204ec416478c899c6320498c6b6bafc1a2cee7663900d6365f5c7c3 +SHA512: 132f82d078b4b6c283273d42fe4cce51a921586b56010b159d59efa2ff65b93561808e75b4c5035beffd43704d7db37e92fe25e06456867efde1688f7c401cd3 +Description: Intel® Integrated Performance Primitives Cryptography Development Package + + +Package: intel-oneapi-ippcp-devel-2021.6.3 +Architecture: amd64 +Version: 2021.6.3-25343 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 57123 +Depends: intel-oneapi-ippcp-2021.6.3, intel-oneapi-ippcp-common-devel-2021.6.3, intel-oneapi-condaindex (>= 2023.0.0-25326), intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing-2023.0.0 +Filename: pool/main/intel-oneapi-ippcp-devel-2021.6.3-2021.6.3-25343_amd64.deb +Size: 8745928 +MD5sum: cb97fdddb892810adf48bf35dfe47995 +SHA1: 0410e2ad90cfb2e346c0b0f33383b32177e2d6b3 +SHA256: 4e20832bffb8b873f3f30d06ce2aff3abc4bd6a24ce2897d267527deeb685747 +SHA512: a02303b3c84c2b1c4ebb386499f7238575d54c8b3691442b77c06724c46d4feb4dcbc2d6ba16c3c806e273d7c9d4a21969a2c58724b9d8ecb8935367c3d2ee25 +Description: Intel® Integrated Performance Primitives Cryptography Development Package + + +Package: intel-oneapi-ippcp-devel +Architecture: amd64 +Version: 2021.6.3-25343 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ippcp-devel-2021.6.3 +Filename: pool/main/intel-oneapi-ippcp-devel-2021.6.3-25343_amd64.deb +Size: 2688 +MD5sum: 314ed1eb1719a3c51822b2278306aff8 +SHA1: 30f2914e537eaed4f0a7bbc33f63db5bd9fc9362 +SHA256: 2e1ab88ec9f0203c97a1c7766306d0f77be15592f684119b7147ec9b974011d0 +SHA512: eb146c9876f0ba9ee3f6ddcb76299b7b4010da4d7ce2d97eb4cc4cb90320607d2416d7115c3956103681bcde0d0b72813e4bead2842579c6502ee8f752fb056a +Description: Intel® Integrated Performance Primitives Cryptography Development Package + + +Package: intel-oneapi-ippcp-devel-2021.7.0 +Architecture: amd64 +Version: 2021.7.0-43492 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 59872 +Depends: intel-oneapi-ippcp-2021.7.0, intel-oneapi-ippcp-common-devel-2021.7.0, intel-oneapi-condaindex (>= 2023.1.0-43291), intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing-2023.1.0 +Filename: pool/main/intel-oneapi-ippcp-devel-2021.7.0-2021.7.0-43492_amd64.deb +Size: 9186660 +MD5sum: 1ebb9ff46c62d08058276477bd6a07da +SHA1: 8e5b078bb1104351e8a3b84c1016f21350fa31b2 +SHA256: 8b682da8d14c940779845385b9a68b9a71c5a488791ea1c3f64d4eb317abd23f +SHA512: 6ca0d5db99d318d4c967e1fe158d0cf14f9f560d8c1f098370072c855cea9742160bf399df34d319caa4062328768149dd4ca29627220da2f777e2be9da19d55 +Description: Intel® Integrated Performance Primitives Cryptography Development Package + + +Package: intel-oneapi-ippcp-devel +Architecture: amd64 +Version: 2021.7.0-43492 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ippcp-devel-2021.7.0 +Filename: pool/main/intel-oneapi-ippcp-devel-2021.7.0-43492_amd64.deb +Size: 2688 +MD5sum: 469b53deb46984a3a800850ba226bc5a +SHA1: ea6d63c9018f134fa783899a90eac39a23f8c1bd +SHA256: a1313b710ad301c2cdcb8cf38e1d59761946ab12800f59db8bc2ca9f8f19b623 +SHA512: 0d34c71441027d826e8a21501239fd13b5a00c16972547f2d906e6fde620b587bbfaf0325438bab2ea62900a72696103cd64f78140f26407134dba23e0283670 +Description: Intel® Integrated Performance Primitives Cryptography Development Package + + +Package: intel-oneapi-ippcp-devel-32bit-2021.1.1 +Architecture: amd64 +Version: 2021.1.1-54 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 18497 +Depends: intel-oneapi-ippcp-32bit-2021.1.1, intel-oneapi-ippcp-common-devel-2021.1.1, intel-oneapi-condaindex,intel-oneapi-common-vars,intel-oneapi-common-licensing +Filename: pool/main/intel-oneapi-ippcp-devel-32bit-2021.1.1-2021.1.1-54_amd64.deb +Size: 3616064 +MD5sum: ffeee9681dbfbcda47f249ff0d7d9417 +SHA1: 80dc52ced8b149c12a1bf4c8252a3f21b7773293 +SHA256: 3ae2d70b179043bd4e7ef9a7fc5868a8ae826fbf8b4c3bef97460b0043d9c91c +SHA512: e6bd334e3a77d08d8967373c2f756b4a33e0323984047e7841941cc6e76ad42e04cf180b6692b8d2d8c33a2ff2ce62592095f2879efd330d0d485a8fb6fcea9c +Description: Intel® Integrated Performance Primitives Cryptography Development Package for IA-32 + + +Package: intel-oneapi-ippcp-devel-32bit +Architecture: amd64 +Version: 2021.1.1-54 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ippcp-devel-32bit-2021.1.1 +Filename: pool/main/intel-oneapi-ippcp-devel-32bit-2021.1.1-54_amd64.deb +Size: 1878 +MD5sum: eb3ac98f88bf4864910ffd3c5e01c253 +SHA1: c479d75a7ad2c525feb5bd192189c238a2f57014 +SHA256: ed8a55691eef3dda0bb7151ebeb6e3f45400850e242512246d0cd619df0768cb +SHA512: 77fad959945e67d5100d1777fca1509bb4e4d505792638062359302902105d456efdc7aadcc4194e4de59e682ce024b2897157cf29c9f439de34d230b27bc332 +Description: Intel® Integrated Performance Primitives Cryptography Development Package for IA-32 + + +Package: intel-oneapi-ippcp-devel-32bit-2021.2.0 +Architecture: amd64 +Version: 2021.2.0-231 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 20992 +Depends: intel-oneapi-ippcp-32bit-2021.2.0, intel-oneapi-ippcp-common-devel-2021.2.0, intel-oneapi-condaindex (>= 2021.2.0-94), intel-oneapi-common-vars (>= 2021.2.0-195), intel-oneapi-common-licensing-2021.2.0 +Filename: pool/main/intel-oneapi-ippcp-devel-32bit-2021.2.0-2021.2.0-231_amd64.deb +Size: 3828144 +MD5sum: 2b35edb773e25d1b00510ae221d9a4e7 +SHA1: 270e7cc9c6d6e0cb40f2c7ee77c52826dbb994ed +SHA256: bf7d5814d419d1c740bd6dfbc1cc6990c2d3cb95beff31110890c6e82645c3f4 +SHA512: 6da513dbffabcc6d0cd3f7ae5b575cfd3607a577a0393994f048c563a4c9018824f594aa83e7b2ab79f62fb160aea9aa160d36b86428a6488df674cdf4e47951 +Description: Intel® Integrated Performance Primitives Cryptography Development Package for IA-32 + + +Package: intel-oneapi-ippcp-devel-32bit +Architecture: amd64 +Version: 2021.2.0-231 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ippcp-devel-32bit-2021.2.0 +Filename: pool/main/intel-oneapi-ippcp-devel-32bit-2021.2.0-231_amd64.deb +Size: 1876 +MD5sum: 940d7f41854d4427b95c9219ba0a9c06 +SHA1: b9fb4ccd14e82048ade20bf39f9eec54e77fdae2 +SHA256: 1d931cbad02cff3c33b7fa7354a437406cb4913faef334e7c92ab38af6581867 +SHA512: 4ece9d55b7092350c2aab3b96e3b5590a3a9880db7ab79016e282c633ab53067aa0596eeb3b82bef2235f3e7de0bd41621ccc722efa9414e90af0b21bb37b481 +Description: Intel® Integrated Performance Primitives Cryptography Development Package for IA-32 + + +Package: intel-oneapi-ippcp-devel-32bit-2021.3.0 +Architecture: amd64 +Version: 2021.3.0-315 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 23206 +Depends: intel-oneapi-ippcp-32bit-2021.3.0, intel-oneapi-ippcp-common-devel-2021.3.0, intel-oneapi-condaindex (>= 2021.3.0-159), intel-oneapi-common-vars (>= 2021.3.0-261), intel-oneapi-common-licensing-2021.3.0 +Filename: pool/main/intel-oneapi-ippcp-devel-32bit-2021.3.0-2021.3.0-315_amd64.deb +Size: 4258584 +MD5sum: 3edf6d84075dadcd1f71d60f18c976c4 +SHA1: 75c8f3ee118a530eda21a786c52d26fbeb1292a8 +SHA256: d5053cbdfd62edb02e2f678c182e1e50fe786179177fbd36fb824960e96575ec +SHA512: 9d28580d976f556823995d9459c622a0ee5496e80bf5a7e386a28b02c494abfae22c7d1555e644d72d520e3bf859a16239771e1b5c674cd2db2273ebdb76da8f +Description: Intel® Integrated Performance Primitives Cryptography Development Package for IA-32 + + +Package: intel-oneapi-ippcp-devel-32bit +Architecture: amd64 +Version: 2021.3.0-315 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ippcp-devel-32bit-2021.3.0 +Filename: pool/main/intel-oneapi-ippcp-devel-32bit-2021.3.0-315_amd64.deb +Size: 1876 +MD5sum: f67ff8cab0383f92b6caf7b2ee3887bd +SHA1: 41f6e5cba7d88b42c61c6016fac4b748e64cf5d5 +SHA256: fe3ba1061b4489401ad1f59241b40278c34ea72f18e40d3dd1546c8c02d48581 +SHA512: 27fcabc364afcc8a5e8f10fb5bdf2e0ad232228b1994f7288762f3e62b3e28feb702cdd407b4ab6c19921db4b6e57119a6a288a12baf5afa573a36cedb100095 +Description: Intel® Integrated Performance Primitives Cryptography Development Package for IA-32 + + +Package: intel-oneapi-ippcp-devel-32bit-2021.4.0 +Architecture: amd64 +Version: 2021.4.0-401 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 23196 +Depends: intel-oneapi-ippcp-32bit-2021.4.0, intel-oneapi-ippcp-common-devel-2021.4.0, intel-oneapi-condaindex (>= 2021.4.0-207), intel-oneapi-common-vars (>= 2021.4.0-327), intel-oneapi-common-licensing-2021.4.0 +Filename: pool/main/intel-oneapi-ippcp-devel-32bit-2021.4.0-2021.4.0-401_amd64.deb +Size: 4245714 +MD5sum: b7abb2bf6dbadc6d6db87665597d9693 +SHA1: d976edc0924d6b39b65dc05dbb359f28d34a9bc5 +SHA256: 4d3fbe69b7fc6040fc9333633b5ad26c275311ab8bc6685d8efd89443d2d9c0d +SHA512: cba4e7f7ea7e43ec7ebab066ae256691f1f76803fa3f112610422973c865e99367a07c2aa2d3b7071c99a8181868a245eb653c2e6fcda66580145b6129e0cc03 +Description: Intel® Integrated Performance Primitives Cryptography Development Package for IA-32 + + +Package: intel-oneapi-ippcp-devel-32bit +Architecture: amd64 +Version: 2021.4.0-401 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ippcp-devel-32bit-2021.4.0 +Filename: pool/main/intel-oneapi-ippcp-devel-32bit-2021.4.0-401_amd64.deb +Size: 1876 +MD5sum: b46496d9bf07044eb79b9c10f006724f +SHA1: 7839d6ce5ff612a0a69306c93aa49b6a305616a3 +SHA256: e19dc7d3464b6678210bd24747e9c91c6d6e24b60149d4c403f3cee58dceabe1 +SHA512: 71688e8a6faa7bc9b622ce693fc1430d6d0ea1950ef3daa0e0f6fe781b7e7f3248f855ec18532c93f1e631e8e22d78dc3ef7c7cd8068a712c444ec30a59a75bf +Description: Intel® Integrated Performance Primitives Cryptography Development Package for IA-32 + + +Package: intel-oneapi-ippcp-devel-32bit-2021.5.0 +Architecture: amd64 +Version: 2021.5.0-445 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 23202 +Depends: intel-oneapi-ippcp-32bit-2021.5.0, intel-oneapi-ippcp-common-devel-2021.5.0, intel-oneapi-condaindex (>= 2022.0.0-74), intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-ippcp-devel-32bit-2021.5.0-2021.5.0-445_amd64.deb +Size: 4246924 +MD5sum: a455e9cb6e6be46c2f08382774bc9ce1 +SHA1: a95a50bb5ef3df26e78afe98585e88ed4bc67596 +SHA256: fbd43a2b1050d6fca79bb1f948be1240603a97a2a89fbf45a633079dbfdb502e +SHA512: a88054724db225819b20ee718a6395a478af06748e593a5deedb6376b79a0a2073be55056c44c8b58f1ceb874012c66616e1bfbda0a617bd0d32ad8ea1dc1e69 +Description: Intel® Integrated Performance Primitives Cryptography Development Package for IA-32 + + +Package: intel-oneapi-ippcp-devel-32bit +Architecture: amd64 +Version: 2021.5.0-445 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ippcp-devel-32bit-2021.5.0 +Filename: pool/main/intel-oneapi-ippcp-devel-32bit-2021.5.0-445_amd64.deb +Size: 2286 +MD5sum: 4d6d83406f5358ced3b8dd9a2fd65385 +SHA1: 07158a49f822f13200b4826e5433248fff3255a5 +SHA256: 35cb85e69f47f8ba518e0c5e71dfba605bf046c0557dd1ba99d1b0de44838d0c +SHA512: a74de79fa8491ced196bc762f49784e1d97eb56d706dadbabc2e1a3bda2dc7fbd3efdd62d5fd36322e215c18c5b0039933e595ab55cda4da2a4b503fc89bfdf9 +Description: Intel® Integrated Performance Primitives Cryptography Development Package for IA-32 + + +Package: intel-oneapi-ippcp-devel-32bit-2021.5.1 +Architecture: amd64 +Version: 2021.5.1-462 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 23202 +Depends: intel-oneapi-ippcp-32bit-2021.5.1, intel-oneapi-ippcp-common-devel-2021.5.1, intel-oneapi-condaindex (>= 2022.0.0-74), intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-ippcp-devel-32bit-2021.5.1-2021.5.1-462_amd64.deb +Size: 4246288 +MD5sum: a385b93b5fd27e566a93eeff0b767963 +SHA1: f163c6cab35743975e22536bd3008279c7528521 +SHA256: 44b5355d22a6fb260394ba3cfde0ab1b17d51cdb5a376ff21a97f9c85185101a +SHA512: 38c40eb5a4f4788d873514163b88f28061b3064a6fed2a599d21238744630d9b8e93c55486affc19e8f36a75282b30e12f152908e1ab51ff54a74d810b58f6eb +Description: Intel® Integrated Performance Primitives Cryptography Development Package for IA-32 + + +Package: intel-oneapi-ippcp-devel-32bit +Architecture: amd64 +Version: 2021.5.1-462 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ippcp-devel-32bit-2021.5.1 +Filename: pool/main/intel-oneapi-ippcp-devel-32bit-2021.5.1-462_amd64.deb +Size: 2284 +MD5sum: 9bf966f798d350f92ecdf5c0dbeedb96 +SHA1: ecd1e1ea6cf0be91ed977d909025436b7f5c7138 +SHA256: c41af7b49933725f3787bb1fb1a5f0b836e231c7cbf102235876080f0949716b +SHA512: 9f1ac3a0a2623160b459ae1c73b9b64258afb25984a2cbb2cae66bbfa68d690954d45ceaf1ef2952117352ac2101f670929dd72f49debe6831aa56ad9817a1c0 +Description: Intel® Integrated Performance Primitives Cryptography Development Package for IA-32 + + +Package: intel-oneapi-ippcp-devel-32bit-2021.6.0 +Architecture: amd64 +Version: 2021.6.0-536 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 23608 +Depends: intel-oneapi-ippcp-32bit-2021.6.0, intel-oneapi-ippcp-common-devel-2021.6.0, intel-oneapi-condaindex (>= 2022.1.0-155), intel-oneapi-common-vars (>= 2022.1.0-161), intel-oneapi-common-licensing-2022.1.0 +Filename: pool/main/intel-oneapi-ippcp-devel-32bit-2021.6.0-2021.6.0-536_amd64.deb +Size: 4269532 +MD5sum: fa5635b760b84285782c5cddfe43424a +SHA1: 846ab4fc8876d6b46992db5557f741d8c58cd50f +SHA256: 529e0e4e8b256d60ee1ffb415a74f7cbd5e6e30a83b0560d221e5c206dba89d5 +SHA512: 3172eb05c48ead74477d4a50f058af7f99f7fd667b1f4e94973daaa957a8d8218ed3cf07c253a895154826650081e34e2b6578c14df08065edca3c1b0d49a39e +Description: Intel® Integrated Performance Primitives Cryptography Development Package for IA-32 + + +Package: intel-oneapi-ippcp-devel-32bit +Architecture: amd64 +Version: 2021.6.0-536 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ippcp-devel-32bit-2021.6.0 +Filename: pool/main/intel-oneapi-ippcp-devel-32bit-2021.6.0-536_amd64.deb +Size: 2696 +MD5sum: 6ba920948f798be005a37076cb0fb329 +SHA1: 66d0e695c6133db46e8e5866540de8318bf8ebc1 +SHA256: 5bfd107d5f07c2a5e2a8c1cc41976a23ec34eb8891f661351fa427b9e5baedba +SHA512: 0adbef00d098a81f5d36b23b187e9465f571b4ab450295773d2c791f8ac199c7c143f3884f12d279a73cad53ce1021a2dc93589f019ac1bb6602e49942bd2a39 +Description: Intel® Integrated Performance Primitives Cryptography Development Package for IA-32 + + +Package: intel-oneapi-ippcp-devel-32bit-2021.6.1 +Architecture: amd64 +Version: 2021.6.1-8714 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 23675 +Depends: intel-oneapi-ippcp-32bit-2021.6.1, intel-oneapi-ippcp-common-devel-2021.6.1, intel-oneapi-condaindex (>= 2022.2.0-8695), intel-oneapi-common-vars (>= 2022.2.0-8694), intel-oneapi-common-licensing-2022.2.0 +Filename: pool/main/intel-oneapi-ippcp-devel-32bit-2021.6.1-2021.6.1-8714_amd64.deb +Size: 4269844 +MD5sum: 912a0a46a6ec1693152bb8b9180df225 +SHA1: c70b7305bb65e9dac8954875575644c076270a9d +SHA256: 0c2fa9202227e829583ecee57a25eee472cca9d07b246c1323d92f90b7843bd2 +SHA512: 38912ecfb02422d68045ae212eda5b6057d4bdc96edaf41740b42671cecb2712f272e7b7f5e9a730587d52cc8441e8417f8d07d23fc7199c51f9643da1db42dd +Description: Intel® Integrated Performance Primitives Cryptography Development Package for IA-32 + + +Package: intel-oneapi-ippcp-devel-32bit +Architecture: amd64 +Version: 2021.6.1-8714 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ippcp-devel-32bit-2021.6.1 +Filename: pool/main/intel-oneapi-ippcp-devel-32bit-2021.6.1-8714_amd64.deb +Size: 2696 +MD5sum: 9ae7d2220b0efeddabcb3954910b7f19 +SHA1: c9a662d2073fbb3569e80033a7252d32bd621036 +SHA256: 03818c0b044d1433a1e1ee133f474757c91953258c9183642c3368c177494f08 +SHA512: 31afe3d2eff7e2c6f81d4ed6414f1501cb06ec9fe8bd49582926aca7706c59f434e976e70681d042e3aeda8c0d9d9aa436fd9ba093269c16846595c104c637bb +Description: Intel® Integrated Performance Primitives Cryptography Development Package for IA-32 + + +Package: intel-oneapi-ippcp-devel-32bit +Architecture: amd64 +Version: 2021.6.2-15006 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ippcp-devel-32bit-2021.6.2 +Filename: pool/main/intel-oneapi-ippcp-devel-32bit-2021.6.2-15006_amd64.deb +Size: 2700 +MD5sum: d670861ad0e28ef08d7ec11f505fe1db +SHA1: 9a808b004a73c263860bb47b47dfdc3420dcc47e +SHA256: b0e7a5e1677357af0f0edeb6a279e1f90bab8d2c06053693df68f4371d66d6aa +SHA512: 25d47d37b818ac9221e97f3c5d55a54f1ef17ecab631fe059b38461a485f1d706c63d189e7a0f0e5ab4153782d36e180934320c10f742f2887f65735458a1a7e +Description: Intel® Integrated Performance Primitives Cryptography Development Package for IA-32 + + +Package: intel-oneapi-ippcp-devel-32bit-2021.6.2 +Architecture: amd64 +Version: 2021.6.2-15006 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 23675 +Depends: intel-oneapi-ippcp-32bit-2021.6.2, intel-oneapi-ippcp-common-devel-2021.6.2, intel-oneapi-condaindex (>= 2022.2.1-14970), intel-oneapi-common-vars (>= 2022.2.1-14969), intel-oneapi-common-licensing-2022.2.1 +Filename: pool/main/intel-oneapi-ippcp-devel-32bit-2021.6.2-2021.6.2-15006_amd64.deb +Size: 4269264 +MD5sum: a5801fea70711c13da4f1ed232426b81 +SHA1: 7dcf098415f357275f7e2fe07b55d09d0158d406 +SHA256: 9c3eff10354a2edacfad7e9ff4e765ec6bb48e5568deb8227d7c194eb953050d +SHA512: 4bd7a8695e56bc705b0352b49f79cddf3dfccda06eaca95e74d77e724c5afd9ae073db4240e89122af0e7086062fe8340bc0d596ad75819a371769186a9a99d7 +Description: Intel® Integrated Performance Primitives Cryptography Development Package for IA-32 + + +Package: intel-oneapi-ippcp-devel-32bit-2021.6.3 +Architecture: amd64 +Version: 2021.6.3-25343 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 23675 +Depends: intel-oneapi-ippcp-32bit-2021.6.3, intel-oneapi-ippcp-common-devel-2021.6.3, intel-oneapi-condaindex (>= 2023.0.0-25326), intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing-2023.0.0 +Filename: pool/main/intel-oneapi-ippcp-devel-32bit-2021.6.3-2021.6.3-25343_amd64.deb +Size: 4269712 +MD5sum: fb9b20fd1046b936a7b13361f74c5bf3 +SHA1: 1c2f91fe85d8843addef7cbb841bfc8774e0c690 +SHA256: f7c515adc8dfaf2e08c5e7a78fbd1dca396eecece4cf1890d34a7a559bc7c083 +SHA512: cac0fb460181e41f910a6fb8e7904e9df84447043900b29765b0ac8f2050e323ffb8cc24fab9e340b6677b8849e0c34e2662655092c853f075d1af678ed36dd2 +Description: Intel® Integrated Performance Primitives Cryptography Development Package for IA-32 + + +Package: intel-oneapi-ippcp-devel-32bit +Architecture: amd64 +Version: 2021.6.3-25343 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ippcp-devel-32bit-2021.6.3 +Filename: pool/main/intel-oneapi-ippcp-devel-32bit-2021.6.3-25343_amd64.deb +Size: 2696 +MD5sum: 3d13bac1d58f01d7f4ae62a0d08a62a1 +SHA1: b891442a02d914f6e9a69fa540d3d357a2e81c1f +SHA256: 9da577e6843e7f3ebcad5fedec41125ecf978dd730205c30095e7fcc2333d0e6 +SHA512: a9293c8dd16bc3fac3b06afd018c5245bc4a85b0ce21fa6f0be5927238ae1ed1dfb84f4fe3dc8192dfbf21d58d5cee5c6a3e5d8e8aafe61a88fa444e8bd6d31c +Description: Intel® Integrated Performance Primitives Cryptography Development Package for IA-32 + + +Package: intel-oneapi-ippcp-devel-32bit-2021.7.0 +Architecture: amd64 +Version: 2021.7.0-43492 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 24749 +Depends: intel-oneapi-ippcp-32bit-2021.7.0, intel-oneapi-ippcp-common-devel-2021.7.0, intel-oneapi-condaindex (>= 2023.1.0-43291), intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing-2023.1.0 +Filename: pool/main/intel-oneapi-ippcp-devel-32bit-2021.7.0-2021.7.0-43492_amd64.deb +Size: 4391704 +MD5sum: a09d87659b427e0929c0f23f36cf71d5 +SHA1: 4ff1df4100a44a88bd300075a2520fda6cc7db19 +SHA256: b7d8f8d4ebe8e2dc08d57ecce7db408b5db1d7024fd68666b4a65a5822168685 +SHA512: a20a5f7a1e73cd3351974f6a39b4797e0edbd5ad834eb36ee24c0ad7cf39f1cc53210360c8192701719770dec7c6f798f753c371bc597ffa7c87bdd62482eefe +Description: Intel® Integrated Performance Primitives Cryptography Development Package for IA-32 + + +Package: intel-oneapi-ippcp-devel-32bit +Architecture: amd64 +Version: 2021.7.0-43492 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ippcp-devel-32bit-2021.7.0 +Filename: pool/main/intel-oneapi-ippcp-devel-32bit-2021.7.0-43492_amd64.deb +Size: 2700 +MD5sum: f54cff8e324e4913172c14f1fc3a7931 +SHA1: 191542bdbf8e7df14ee122157e76494af5626624 +SHA256: c9ae4c84c32ab7bfb998deeb7042c78692c2654a40ee13121f8ed81944755a8e +SHA512: 3edd3368363f256ef7690ca771c62306b783a23c42c5b89435db1e961125bf744c0ff10e1c03326c827f4a93a8b96e107f6d1cb08ca2db47ed2b8dc0a11d3968 +Description: Intel® Integrated Performance Primitives Cryptography Development Package for IA-32 + + +Package: intel-oneapi-ispc-1.16.1 +Architecture: amd64 +Version: 1.16.1-81 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 86871 +Provides: intel-oneapi-ispc +Depends: intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0, intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-ispc-1.16.1-1.16.1-81_amd64.deb +Size: 17665860 +MD5sum: cb992a7fe84806a45f3fbeaea1c9bf1b +SHA1: 1044fb17ee88b146065aa5d2d0f282f88ece18e0 +SHA256: 7338fdf241519083783ec3a21b46ac65bbf1b68115882893901c1ccfcf5d9df2 +SHA512: 7ef6080fe0dcd959aa18b3143061977e7135c336f694d74c3b0ea1927f1be9495fc2ea6cdfe4e492722dfa1e9c111eb092cc284684beed1263f93af921b4c728 +Description: Intel® Implicit SPMD Program Compiler + + +Package: intel-oneapi-ispc +Architecture: amd64 +Version: 1.16.1-81 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Provides: intel-oneapi-ispc +Depends: intel-oneapi-ispc-1.16.1 +Filename: pool/main/intel-oneapi-ispc-1.16.1-81_amd64.deb +Size: 1648 +MD5sum: 17c942072f8f6709d531ca66f82251a6 +SHA1: 0fb189d8356bbf9ec4b1a34ea159af5883c3f0ee +SHA256: d2a0ef47b4bf1d8b21c3603c1c7f54e0c1dd806e13de78e94b1a4937e8a7f435 +SHA512: f1104cc254de31099283ab7430c2495f25f86b435c16ac108e93c1278b15313fffdc3fcdd487a8148545892a43e038bc933ed9d18df897d433d7da9ede0d9b0c +Description: Intel® Implicit SPMD Program Compiler + + +Package: intel-oneapi-ispc-1.17.0 +Architecture: amd64 +Version: 1.17.0-140 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 90191 +Provides: intel-oneapi-ispc +Depends: intel-oneapi-common-vars (>= 2022.1.0-161), intel-oneapi-common-licensing-2022.1.0, intel-oneapi-common-vars (>= 2022.1.0-161), intel-oneapi-common-licensing-2022.1.0 +Filename: pool/main/intel-oneapi-ispc-1.17.0-1.17.0-140_amd64.deb +Size: 17956200 +MD5sum: 05521f5e57488b81f92a9a1820276bd7 +SHA1: 7da55b3cde26d7d5bfea5cb40c625c1437e7222a +SHA256: a8a70f88bf0debab7bee7caf3e9122af6ea1bfbf52cb527e168a32773bfb0a91 +SHA512: 4fd7f54c232a1ef174ac57c33b0bc730c06c1a2a5b138b6a5723c23a94405cace6063be588ddc9c8f4ef33e837112106e6891f90e885c686a0542e177d8b208b +Description: Intel® Implicit SPMD Program Compiler + + +Package: intel-oneapi-ispc +Architecture: amd64 +Version: 1.17.0-140 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Provides: intel-oneapi-ispc +Depends: intel-oneapi-ispc-1.17.0 +Filename: pool/main/intel-oneapi-ispc-1.17.0-140_amd64.deb +Size: 1732 +MD5sum: 6c05ce7b25f6bed92fadc04a028579cf +SHA1: 5bfb756c14d36b811f9fd1c64d3fece78297fd70 +SHA256: d7bc95f9015c4131b05eb69aef0ec30928e59423cd70b10d0395e13db747c54b +SHA512: 6199b194d74496289ad156540e5def8bcf94306c2e6ebf75bd69198a774a62f55be6a8ddc381d2a658fb8f4654a31ad4a762e0bf5b002f91724e6ca729710af5 +Description: Intel® Implicit SPMD Program Compiler + + +Package: intel-oneapi-ispc-1.18.0 +Architecture: amd64 +Version: 1.18.0-8709 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 98538 +Provides: intel-oneapi-ispc +Depends: intel-oneapi-common-vars (>= 2022.2.0-8694), intel-oneapi-common-licensing-2022.2.0, intel-oneapi-common-vars (>= 2022.2.0-8694), intel-oneapi-common-licensing-2022.2.0 +Filename: pool/main/intel-oneapi-ispc-1.18.0-1.18.0-8709_amd64.deb +Size: 18899136 +MD5sum: 0185064b0ff8ec7ff0104f92b22481ca +SHA1: 59942e367867d9a875f99406b045bda4cdc3c62c +SHA256: a3fe64923409a852e717adc7108b3924e2a404de46e0d776eab0f79c10218136 +SHA512: e551ce2afda10394f6f4f578bf298a9fcdb15303909f138ee8291e05b584ef9f362b29e5955e31b54a755d0bc1944c2864d37aa68aeec928eeacd91e6a45a636 +Description: Intel® Implicit SPMD Program Compiler + + +Package: intel-oneapi-ispc +Architecture: amd64 +Version: 1.18.0-8709 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Provides: intel-oneapi-ispc +Depends: intel-oneapi-ispc-1.18.0 +Filename: pool/main/intel-oneapi-ispc-1.18.0-8709_amd64.deb +Size: 1732 +MD5sum: 2ea33f224262a380be152e2883f1c2c1 +SHA1: 01d2b1501d62d8f9ff9b6665be6f9e8f3af20ba7 +SHA256: d255ec673baf7f4459604522e314da4c261075129a2d11733de710d5ffe6f28c +SHA512: ee44fa871ad238c15e175e79ce0def63d1a42a1d6d55a64b025b6bcda60c26ed721d666fdc2ef2c173941e96110593f79932af4f8793299d9496417934e4aa40 +Description: Intel® Implicit SPMD Program Compiler + + +Package: intel-oneapi-ispc-1.18.1 +Architecture: amd64 +Version: 1.18.1-21155 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 98538 +Provides: intel-oneapi-ispc +Depends: intel-oneapi-common-vars (>= 2022.2.1-14969), intel-oneapi-common-licensing-2022.2.1, intel-oneapi-common-vars (>= 2022.2.1-14969), intel-oneapi-common-licensing-2022.2.1 +Filename: pool/main/intel-oneapi-ispc-1.18.1-1.18.1-21155_amd64.deb +Size: 18896520 +MD5sum: 8b5061150c76d18ac29fe0bff40a3b7e +SHA1: 9fb776a1130583752ef2859701b3f964a9c13acc +SHA256: 4a1dc1d2fd52bfc011f106a9a0cb8cd41b239aefb045110e6d5459bf21e68ea8 +SHA512: 18de014b6890b96f4e1806323a4ae7f92ff13e3b63ee78b0301e5622bf0634535af85f6553d2f2e870103b6f48f58aa89c4b77517439cb274e2816a13032f840 +Description: Intel® Implicit SPMD Program Compiler + + +Package: intel-oneapi-ispc-1.18.1 +Architecture: amd64 +Version: 1.18.1-25344 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 98538 +Provides: intel-oneapi-ispc +Depends: intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing-2023.0.0, intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing-2023.0.0 +Filename: pool/main/intel-oneapi-ispc-1.18.1-1.18.1-25344_amd64.deb +Size: 18896328 +MD5sum: 8f2492ffd6899ae7b60a85a41e5e124e +SHA1: e281ce3687d19c47ae77281ef9de5f289e5cb305 +SHA256: fb9629dfd69c57b4cc4207a6791e01ba6661b089b9c0f78b4562076f0d047d8e +SHA512: 5cbc0db15fd7f3dee818f71287fc63ca16579913ed79306d1f8104ac3e2ce618e566d6151b2af9098359502ee3c5c378cca68376a16bb39f8a8e86e59e9f4eb7 +Description: Intel® Implicit SPMD Program Compiler + + +Package: intel-oneapi-ispc +Architecture: amd64 +Version: 1.18.1-21155 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Provides: intel-oneapi-ispc +Depends: intel-oneapi-ispc-1.18.1 +Filename: pool/main/intel-oneapi-ispc-1.18.1-21155_amd64.deb +Size: 1736 +MD5sum: e9526026d7b0e00b6a5abb711f341cda +SHA1: 22b348a14d5dfa2fba9343c6ed80c6a5c4fe758f +SHA256: 661993bce23af20f65b2475c333bedc14b3598877f855088e2aecda471079d46 +SHA512: ea73a750291793f0644df8c49185a6b2d84c9108e7a67c198f642baa952115939c17851bd82e0be5a150354923a887144fd28188bbfd36bc487ab7bbc4034b34 +Description: Intel® Implicit SPMD Program Compiler + + +Package: intel-oneapi-ispc +Architecture: amd64 +Version: 1.18.1-25344 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Provides: intel-oneapi-ispc +Depends: intel-oneapi-ispc-1.18.1 +Filename: pool/main/intel-oneapi-ispc-1.18.1-25344_amd64.deb +Size: 1736 +MD5sum: 46c100847b871d2babb89fe8cef37045 +SHA1: 05ae0dce9e8582241b616f6daf1f4cff8a2ca73e +SHA256: d2965413abcd53a29e32f0702ca661e337c99968bf93959e0f4d084b54a31f48 +SHA512: f9ee712f89b46a0a6a12cd2c24cf4e1d52daa65c43b8a66f15ebf08b52f933190408feb08c180e907086952e50ff7f139b5018627bd39509eef40eadb526b680 +Description: Intel® Implicit SPMD Program Compiler + + +Package: intel-oneapi-ispc-1.19.0 +Architecture: amd64 +Version: 1.19.0-46484 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 104421 +Provides: intel-oneapi-ispc +Depends: intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing-2023.1.0, intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing-2023.1.0 +Filename: pool/main/intel-oneapi-ispc-1.19.0-1.19.0-46484_amd64.deb +Size: 19791012 +MD5sum: f623ab18b6ee824de0e125c2beee87a3 +SHA1: 78b498540e06b87b4ec806d724b84382938c618b +SHA256: af2287dd91d7deb58a61a5a5968b012a36d13de7b409f60d808d30df27302572 +SHA512: bc0df5017676d0fd14a1ff05ba3321184c82742f1755cfa51cc560501d52ab4a9cc23af0d0f71c89675f9d87f8cddd305354e662c22b361d8f06e82d1a2fdde9 +Description: Intel® Implicit SPMD Program Compiler + + +Package: intel-oneapi-ispc +Architecture: amd64 +Version: 1.19.0-46484 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Provides: intel-oneapi-ispc +Depends: intel-oneapi-ispc-1.19.0 +Filename: pool/main/intel-oneapi-ispc-1.19.0-46484_amd64.deb +Size: 1732 +MD5sum: 16177b8332ae0a540f891439f331b53e +SHA1: b056f6acfe856ad4208f60b68d313cdcf41e1ae7 +SHA256: e9302342f63527aeea1ee7a08720b6321a34e9cece3dc65e18079c3a7fcff929 +SHA512: d0512659d74f2454f0975fd9d7a3fa28239ff7fb14bcd51d8a7e1072901f4c31f46db71e69eb6f377c88acdcf7aded21ecaa031b20464ab94e3aa0e22d3195ee +Description: Intel® Implicit SPMD Program Compiler + + +Package: intel-oneapi-itac-2021.1.1 +Architecture: amd64 +Version: 2021.1.1-42 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 482465 +Depends: intel-oneapi-common-vars,intel-oneapi-common-licensing +Filename: pool/main/intel-oneapi-itac-2021.1.1-2021.1.1-42_amd64.deb +Size: 54393670 +MD5sum: fa317df6246edecfa066af759e24b3c9 +SHA1: 95cf492d5d871f2904b8d22b3de6e7c1dea39b0b +SHA256: 3e3f51a719b8f0ed3a4c5952e5cae25e2a8fd0f40bc78a681b98e727e70cf1a3 +SHA512: edfdaa6b89161e1e2dfd97c1fe1b8e8c14e2df9989d22afaac9b7f9333e6982a55964e1667250c8b30f9a8a9c09527b726f09aa5e74707002d6c421948af6c3d +Description: Intel® Trace Analyzer and Collector + + +Package: intel-oneapi-itac +Architecture: amd64 +Version: 2021.1.1-42 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-itac-2021.1.1 +Filename: pool/main/intel-oneapi-itac-2021.1.1-42_amd64.deb +Size: 1640 +MD5sum: 73c8e6144019d141ddd31a9cbc56e538 +SHA1: 496a77788dae69d5fe85958763b5cde44b9e6bd3 +SHA256: b579e71f1bd8d9aa1c452f878be84834db7b3ae9256bfe68d0bde2407163416e +SHA512: 9c3de4984dcbf3e54f63fc7eee4a85887b48621b64e6f222085cdf22bc02eb0bd71eab3d5ddac8feb376144db968168790b0af03909959c474c65aeba5345379 +Description: Intel® Trace Analyzer and Collector + + +Package: intel-oneapi-itac +Architecture: amd64 +Version: 2021.2.0-152 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-itac-2021.2.0 +Filename: pool/main/intel-oneapi-itac-2021.2.0-152_amd64.deb +Size: 1642 +MD5sum: 094f3560c7c27c099c6c6419fb152a42 +SHA1: bb95c39b0bbf76220472ca24375eb5b8c7cc61e6 +SHA256: b2c1d6157dccea195871df02ccf833a9d8db5b0cc3fc7f1c0e95ec4a68597f02 +SHA512: dcc003b44fa50f3dd574bd12439c9d52987cfccb6d49b8e2e5e57c2756c08f3bb6e8ee7b4bfff2e81f222c2aead310ba040c4d070a7d1d49a474553babd2b6ac +Description: Intel® Trace Analyzer and Collector + + +Package: intel-oneapi-itac-2021.2.0 +Architecture: amd64 +Version: 2021.2.0-152 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 481535 +Depends: intel-oneapi-common-vars (>= 2021.2.0-195), intel-oneapi-common-licensing-2021.2.0 +Filename: pool/main/intel-oneapi-itac-2021.2.0-2021.2.0-152_amd64.deb +Size: 53454638 +MD5sum: db39831ecf00f1fed027101416736b46 +SHA1: 6c4bfdc1b6e8bbeb21b91889631c2c88c2266a53 +SHA256: 92993ea7f4d4a408f3c069cbd7d76f5a59a84244fc95d43bf58ab4a00fcfe536 +SHA512: a3c4dd4c6f95079974a90491369dd2173bd123d557f68265e1d14ba2e60d6bff975692d38f0e775ace5e539456bb16b7da62a141193a8a6329d066e60d257d05 +Description: Intel® Trace Analyzer and Collector + + +Package: intel-oneapi-itac-2021.3.0 +Architecture: amd64 +Version: 2021.3.0-223 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 481539 +Depends: intel-oneapi-common-vars (>= 2021.3.0-261), intel-oneapi-common-licensing-2021.3.0 +Filename: pool/main/intel-oneapi-itac-2021.3.0-2021.3.0-223_amd64.deb +Size: 53461998 +MD5sum: 44362e2ccdfc71a4e217c3688f8cad09 +SHA1: b45462e2f6d804755fcd1af9e476d61bfd96e8d4 +SHA256: 4d296361e1af94485046813099c9c04469a2e3a187f8a29f18f52715b230972b +SHA512: 5501bb3b80276c47b89685e21c1d84cf5d24fa6a727a98ed267e4a8dce54ebc37f059a6b9bcdff8b9720effafd13cf7fd79c75b720ebae1c240fade8b696a8db +Description: Intel® Trace Analyzer and Collector + + +Package: intel-oneapi-itac +Architecture: amd64 +Version: 2021.3.0-223 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-itac-2021.3.0 +Filename: pool/main/intel-oneapi-itac-2021.3.0-223_amd64.deb +Size: 1642 +MD5sum: e8f698b22b3d2dae9fcccd736266ddf6 +SHA1: d0ebad6cb4caa7e90244252f6028b7a9230f7334 +SHA256: 119582320cff8d1f4dd27a2843efedd69d0716803860b8f1d5241cf535d57f58 +SHA512: cf6d241b9cdf803a79bdec78354bf0b7deb74712d7752be6237ff271a813a01965949f9e864158743ff0fa5a13d020bf11b0870ce4352bb213a608beb0695c5e +Description: Intel® Trace Analyzer and Collector + + +Package: intel-oneapi-itac-2021.4.0 +Architecture: amd64 +Version: 2021.4.0-322 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 481537 +Depends: intel-oneapi-common-vars (>= 2021.4.0-327), intel-oneapi-common-licensing-2021.4.0 +Filename: pool/main/intel-oneapi-itac-2021.4.0-2021.4.0-322_amd64.deb +Size: 53440182 +MD5sum: 562536178860ad75abbd4c1978b6ef62 +SHA1: 21dd22adb6d916f87ec81541648dcfd2f5914b3f +SHA256: ff3b436ace8e33feaadcce957dd77055a719fe1bf0f816ea0a50bab6a82e3d5c +SHA512: 8c7cddecdcd694ea265f695d71120c4e23600614c1ccc2a5a21065c10bbcabd81922a785ee54bc5dd65cab70e389a773476c82211cf8503fe0f6258b8663859a +Description: Intel® Trace Analyzer and Collector + + +Package: intel-oneapi-itac +Architecture: amd64 +Version: 2021.4.0-322 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-itac-2021.4.0 +Filename: pool/main/intel-oneapi-itac-2021.4.0-322_amd64.deb +Size: 1642 +MD5sum: c24ba106a2151b227d2b5e6c1c54853e +SHA1: 30c1daf5bd4e23feb67991275904ee4e9b28cfb9 +SHA256: 33698eedd2c6e16fa205f623f67f27cb604a46b78a8b8f77faa370dda389364c +SHA512: a4a14488d1545403618f9409f269bbffd8cac1491db57f92d6b0e41de270c5765e5fc7a9cf4784d4d90dad07c064b9c9db6fb9bc282db5df615098875c9ff149 +Description: Intel® Trace Analyzer and Collector + + +Package: intel-oneapi-itac-2021.5.0 +Architecture: amd64 +Version: 2021.5.0-370 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 481650 +Depends: intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-itac-2021.5.0-2021.5.0-370_amd64.deb +Size: 53482240 +MD5sum: d7cf21e845e545f1a8330bd2b52742e0 +SHA1: 02f01f62e68efa78aeb976f72f09858ca58367f9 +SHA256: 3db75e93fc75138fa9df53fcc5aad5750fbc121b786c7cadce657303f3319a41 +SHA512: 8a0a52ce18880c25f7866addf19f9af3b18235187328272290811d9e2d1cebb2fcc388c70162a825801b94eedf6bec45c513deb01169baeee421e945fef118c3 +Description: Intel® Trace Analyzer and Collector + + +Package: intel-oneapi-itac +Architecture: amd64 +Version: 2021.5.0-370 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-itac-2021.5.0 +Filename: pool/main/intel-oneapi-itac-2021.5.0-370_amd64.deb +Size: 1642 +MD5sum: fab71265a48fd6e061e9b81afa1143bb +SHA1: 589238acc978c38d0e2e20314f5a436a0d52c4dc +SHA256: 2a224320a18e0113f4cef6906b402694d29f8cf74921dbf9f30e336feccf9595 +SHA512: a229311740c6f650ba4eb273098aac8c2e7ed511d8f269660b9f403cc79379b485b087381525f9830d864eab097619965fa3a6e3ec0b55ab59befcb9d14430c4 +Description: Intel® Trace Analyzer and Collector + + +Package: intel-oneapi-itac-2021.6.0 +Architecture: amd64 +Version: 2021.6.0-434 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 481643 +Depends: intel-oneapi-common-vars (>= 2022.1.0-161), intel-oneapi-common-licensing-2022.1.0 +Filename: pool/main/intel-oneapi-itac-2021.6.0-2021.6.0-434_amd64.deb +Size: 54733894 +MD5sum: d2191b4030076e72cd3c0eb145baada3 +SHA1: 38b87013bcca72846d179304da6037ff7e978360 +SHA256: 28631d2987928f00b91d0f4c67645d21b5295755b711eeb770997068fae8924d +SHA512: 3bc53824732f18dff20e202971fee1f8d03ba32e53940cbbc14369b042860dc99bb047ee6d192189e10b2cd9d787ce2c1ec9dcd25fc5c3f67f96e413287b6684 +Description: Intel® Trace Analyzer and Collector + + +Package: intel-oneapi-itac +Architecture: amd64 +Version: 2021.6.0-434 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-itac-2021.6.0 +Filename: pool/main/intel-oneapi-itac-2021.6.0-434_amd64.deb +Size: 1724 +MD5sum: c571915ee129a0f615547f0a9de351ea +SHA1: aa23205b038643cb61c211c342acb9ee783db70e +SHA256: 9321658eec391d44476f527f1ae771ac2d6ec5a099d20a6e6f07c17915dcf4aa +SHA512: b8f0a53646572b8347f2a89cf1b573d6416627539ef112eb0a9cf5d6e953fe07e7e743f3fd93670ad3cc8f254021b1ae2dbfc906f69eb4bc3d5f99b780b754a3 +Description: Intel® Trace Analyzer and Collector + + +Package: intel-oneapi-itac-2021.7.0 +Architecture: amd64 +Version: 2021.7.0-8707 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 481728 +Depends: intel-oneapi-common-vars (>= 2022.2.0-8694), intel-oneapi-common-licensing-2022.2.0 +Filename: pool/main/intel-oneapi-itac-2021.7.0-2021.7.0-8707_amd64.deb +Size: 54736234 +MD5sum: 87d9622fb4d8dca5537ae7a7f47f4c9e +SHA1: de2f6412da937b27c1e8400d366bd004348bf66f +SHA256: 1f95ede22aa3da938adb09eb36ea0a4c41f986f614305c51d67ae8b610daf7cb +SHA512: 62416a42a69c167dc8fadae4e7503a88715b2c37b40051b6adbac8aced70d55008106d86a7eb03bc388dece8647a0704002516db3e1a0d7bf96096281e04bc99 +Description: Intel® Trace Analyzer and Collector + + +Package: intel-oneapi-itac +Architecture: amd64 +Version: 2021.7.0-8707 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-itac-2021.7.0 +Filename: pool/main/intel-oneapi-itac-2021.7.0-8707_amd64.deb +Size: 1724 +MD5sum: 2609f09723a1f793684f5e63b09eeff9 +SHA1: d6acfea6da418bb0f951b30de42b139eef47cdec +SHA256: a1c9d98a8b40daf7f374ea4a6bbc1f79ae4415bb99aa80034aaef80c9a07af80 +SHA512: 1e18db7104857808faf5a597ee8a4ad6c336b2692a449a347fd4260711dd88a693efaf1cf05711d8f9b5116497897a758d3eaa0c3a69ecbcdf0ed56ba44fdb3b +Description: Intel® Trace Analyzer and Collector + + +Package: intel-oneapi-itac +Architecture: amd64 +Version: 2021.7.1-15324 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-itac-2021.7.1 +Filename: pool/main/intel-oneapi-itac-2021.7.1-15324_amd64.deb +Size: 1728 +MD5sum: eb5986939cf7cc2de441bce5f58b5dd9 +SHA1: 65c2e46584e7565bd96af123e2c66da32b12d395 +SHA256: bc27295dc84e244fb104542943a2f7320d6db14194de1c9d2da910f0d2a5e5a8 +SHA512: 4743184bd6deead11396e38e2248b2794b86ce7bed55fa84bef2dc8cbd2f2e3f934708307b2bf177b0ef9a68bce4937fe92c7270e32f2696b036f6be28114835 +Description: Intel® Trace Analyzer and Collector + + +Package: intel-oneapi-itac-2021.7.1 +Architecture: amd64 +Version: 2021.7.1-15324 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 489175 +Depends: intel-oneapi-common-vars (>= 2022.2.1-14969), intel-oneapi-common-licensing-2022.2.1 +Filename: pool/main/intel-oneapi-itac-2021.7.1-2021.7.1-15324_amd64.deb +Size: 56228886 +MD5sum: 81f061561c4f8727d40f603d3f0bb791 +SHA1: f0d66ab48451e02eed2f5acd23e0f548bb4d4e32 +SHA256: 68c746c2bc222f7f0509fe27a277e697d76e11461f4e560ac6859d00364f8f90 +SHA512: fd5ec9e426f011eaf2fe02a7812ac6b6f807e30e6479ba21cbe80714c60a9bbf74e0ef2e621128bb27ad15e4fe9a84331f0c96a05e6f8624532d17ea0991a883 +Description: Intel® Trace Analyzer and Collector + + +Package: intel-oneapi-itac-2021.8.0 +Architecture: amd64 +Version: 2021.8.0-25341 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 489175 +Depends: intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing-2023.0.0 +Filename: pool/main/intel-oneapi-itac-2021.8.0-2021.8.0-25341_amd64.deb +Size: 56208554 +MD5sum: 69e052dca5557d0b30663cc06a8b6f28 +SHA1: 1507adb7f367cae7fdebbe72f8e5ab3f964ea368 +SHA256: a6093558d5d999724b21f01a5faaa23864fa87e478c2d3aa7667e32660a7c6f3 +SHA512: 237df297967aaf3bcb3959215c0e89063ac3eb2a653586c7f0128afc1221d58733514ac9cd653887e18f7c4b169c25a346633add16e484404023b24e497c4b62 +Description: Intel® Trace Analyzer and Collector + + +Package: intel-oneapi-itac +Architecture: amd64 +Version: 2021.8.0-25341 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-itac-2021.8.0 +Filename: pool/main/intel-oneapi-itac-2021.8.0-25341_amd64.deb +Size: 1724 +MD5sum: 8ccb174fc5f8dc7c3fb4e91c8e89feaf +SHA1: 027d02423f2e7e496d18dd7648c62e41ba04e5ef +SHA256: b4ffe586ec763eb6bdd78cafb1f3f8525ae94f1a9caea5a5f6544956e1da58e2 +SHA512: fdb702de3a4e1cc63a8801dc038697fe6d7ee7f4abb04d5201a6dc7a29a84c8c347e0f8a1fb7556aff3b9c57c096a108d4c69ad1a42aa14f358cbbc3ffb30923 +Description: Intel® Trace Analyzer and Collector + + +Package: intel-oneapi-itac-2021.9.0 +Architecture: amd64 +Version: 2021.9.0-43491 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 489175 +Depends: intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing-2023.1.0 +Filename: pool/main/intel-oneapi-itac-2021.9.0-2021.9.0-43491_amd64.deb +Size: 56210258 +MD5sum: 1f47134133d95f3b24f68b07ff63a9de +SHA1: 0b6d8bfeffe4d21db31d9a93f78de4eb4d7eee4a +SHA256: b8b393e0f7f027f56e3d6c3fe06c2bf84fe40783701a0849fd13982d9e8eff50 +SHA512: 48f74ac58e71f9119aaef3b024a0b4abb4c6165881a6d60279ad05a0def6cdd73ce588c6d2a296af18843ad03e2df99c85dce38126adb6fde77c4c2344156438 +Description: Intel® Trace Analyzer and Collector + + +Package: intel-oneapi-itac +Architecture: amd64 +Version: 2021.9.0-43491 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-itac-2021.9.0 +Filename: pool/main/intel-oneapi-itac-2021.9.0-43491_amd64.deb +Size: 1724 +MD5sum: 4ea7b0d3ac0cf878282cf0a769a47587 +SHA1: c521889465417e636a18f55ae55f1134187d9d0f +SHA256: 37f39e24c91622d329b3077991f6191203afa265508e7ad4e904bde6e2d90b4a +SHA512: 6113a5b478076da88395f8e04322a45211e6f6cabc0d9e171b3c4644447f2d5ecde95885b670f4c941aeb82624ffbc8584fbb67d1056c85b0e0bb3956459f1b6 +Description: Intel® Trace Analyzer and Collector + + +Package: intel-oneapi-libdpstd-devel +Architecture: amd64 +Version: 2021.1.1-189 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-libdpstd-devel-2021.1.1 +Filename: pool/main/intel-oneapi-libdpstd-devel-2021.1.1-189_amd64.deb +Size: 1662 +MD5sum: 6ca996fd2b40b910a07c03637c772f7c +SHA1: 0b7300a555bdd89754d6db5d76b03e5bf2c2ddf9 +SHA256: a4f877549ba2ad5477e994600001b7885e43a094a54685b3c8538bc02df35af8 +SHA512: 5db228b88874fac683e35ddc0ca0ca06608f099ededbff07563f34576ac5ef4e26f99a3b5b7175dc8780efa22dba64d75911724907af143af8aef9fa20350a8d +Description: Intel® oneAPI DPC++ Library 2021.1.1 for Linux* + + +Package: intel-oneapi-libdpstd-devel-2021.1.1 +Architecture: amd64 +Version: 2021.1.1-189 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1790 +Depends: intel-oneapi-common-vars,intel-oneapi-common-licensing +Filename: pool/main/intel-oneapi-libdpstd-devel-2021.1.1-2021.1.1-189_amd64.deb +Size: 171310 +MD5sum: 8de991ba7a0fbaed32612a150e7ed134 +SHA1: 2f2d2f5fdc160b9d5ad8fb5504a6ec9c2a9efd8a +SHA256: aa9f9e330cc76e7a6495c7a1e5aff06c71928406e577bf9ad98d7f884887723e +SHA512: 3e66478ac62011600ced77b8db14bb9ab66f414803ce47ad8ab0020757b0b64d8a317e27d6bfdcbcaa6438908537fb95bb498bea3dec3c1a4942f2f63f3f6d23 +Description: Intel® oneAPI DPC++ Library 2021.1.1 for Linux* + + +Package: intel-oneapi-libdpstd-devel-2021.1.2 +Architecture: amd64 +Version: 2021.1.2-266 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1790 +Depends: intel-oneapi-common-vars,intel-oneapi-common-licensing +Filename: pool/main/intel-oneapi-libdpstd-devel-2021.1.2-2021.1.2-266_amd64.deb +Size: 171282 +MD5sum: 9a6eaa1632c9f393183e61ad185996c6 +SHA1: 1a8b2e0b5bb089e1390920f6a8aed461280552b0 +SHA256: ee306b6b6ab0e323e0df76322c59b6d8b138d79076debcb3a53f59523a88f945 +SHA512: bfd6e08970f24dd5640ea885db237576e6bc325a9bf8d233427c81b327c664364ab28023abeace21d8a70d74d07606be6ad4aee9abea209bfb3562e3ae7d6e1e +Description: Intel® oneAPI DPC++ Library 2021.1.2 for Linux* + + +Package: intel-oneapi-libdpstd-devel +Architecture: amd64 +Version: 2021.1.2-266 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-libdpstd-devel-2021.1.2 +Filename: pool/main/intel-oneapi-libdpstd-devel-2021.1.2-266_amd64.deb +Size: 1656 +MD5sum: 37976dfc9821047f5867821c7cf91c36 +SHA1: 2df4537293f7b58d7a0c85523ad608893a20057e +SHA256: 64abb02c6cbb22349e146282c85e58a0fa6a5b8063fd8e82d248d41727448a80 +SHA512: dba04373c315240f24f090c6219423ed16b076fc189156502d01102a95fea62b26eeefcbfc40db3b5cdd8b5f7af70b6226b976b07d0011c458d36f11ac633bef +Description: Intel® oneAPI DPC++ Library 2021.1.2 for Linux* + + +Package: intel-oneapi-libdpstd-devel-2021.2.0 +Architecture: amd64 +Version: 2021.2.0-245 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1916 +Depends: intel-oneapi-common-vars (>= 2021.2.0-195), intel-oneapi-common-licensing-2021.2.0 +Filename: pool/main/intel-oneapi-libdpstd-devel-2021.2.0-2021.2.0-245_amd64.deb +Size: 183410 +MD5sum: 8e8facb5df84d271b69926619b983eb5 +SHA1: 1189590f349ba76b31e751ee7f38b226449ad16c +SHA256: 2397888676ceca38f7ed7de0174c1de72463e3d7151f976cf61046a315a78427 +SHA512: ac8c3129c1a105a6608cf06d17e75c82182fc08df023e74487957aab20c07d93d5ac0b3bc07c7acd646e01a1be530374b7873a5b1af779f89d74dceee41150f3 +Description: Intel® oneAPI DPC++ Library 2021.2.0 for Linux* + + +Package: intel-oneapi-libdpstd-devel +Architecture: amd64 +Version: 2021.2.0-245 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-libdpstd-devel-2021.2.0 +Filename: pool/main/intel-oneapi-libdpstd-devel-2021.2.0-245_amd64.deb +Size: 1656 +MD5sum: 2412195c9c2e63e377e5d94cb6c7de7c +SHA1: 8298034f3a5890d72e85cccab11edfac2b6cc44b +SHA256: 7cb5f992f1f1683b87e0f618c64633efe0e10c5f780b22f37112080822c85019 +SHA512: 0f6197dcc652ad8e034dbdfedb1777126fa4a386efbcf735486c239d6f74da1de8145ffb8e81e2b54a2b737346d15cae5879ed82762378430aa017f58d1ee2e4 +Description: Intel® oneAPI DPC++ Library 2021.2.0 for Linux* + + +Package: intel-oneapi-libdpstd-devel-2021.3.0 +Architecture: amd64 +Version: 2021.3.0-271 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1938 +Depends: intel-oneapi-common-vars (>= 2021.2.0-195), intel-oneapi-common-licensing-2021.2.0 +Filename: pool/main/intel-oneapi-libdpstd-devel-2021.3.0-2021.3.0-271_amd64.deb +Size: 185042 +MD5sum: 15a073617c85fc0d870889106a8b164a +SHA1: 513d7fcd0eac16d5c26af5a0cea93286bc3d5a9f +SHA256: 1998d58c677d5593eec0f60f3ae62546d409994d828cb7776da0d5c192f18a91 +SHA512: 4ebeb8f0517625228bd40ce6388b95bf90f36f6558375beb38c1d7a297cc997466ecadb3e81fc73c7811afbc8c46b38bc686a55377b4ce3626630c99973312af +Description: Intel® oneAPI DPC++ Library 2021.3.0 for Linux* + + +Package: intel-oneapi-libdpstd-devel +Architecture: amd64 +Version: 2021.3.0-271 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-libdpstd-devel-2021.3.0 +Filename: pool/main/intel-oneapi-libdpstd-devel-2021.3.0-271_amd64.deb +Size: 1656 +MD5sum: 2b2d79afd0d601174c9ddb83bbb123c0 +SHA1: 9e37ed733b57938d36de9e307414b5f053e110c2 +SHA256: f1e002ca5a6d7a82a1135ac7ca92f81f4734d196750de87174e07934d07162aa +SHA512: 4bbc30bba858c6366fef05de3eceadb8a026008d1945981ea22e843af2aadd4d9a11a4b42e79e8092321b40bd224367c53ec079ff40f876e4638be2fba0c7c00 +Description: Intel® oneAPI DPC++ Library 2021.3.0 for Linux* + + +Package: intel-oneapi-libdpstd-devel-2021.4.0 +Architecture: amd64 +Version: 2021.4.0-337 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1980 +Depends: intel-oneapi-common-vars (>= 2021.3.0-261), intel-oneapi-common-licensing-2021.3.0 +Filename: pool/main/intel-oneapi-libdpstd-devel-2021.4.0-2021.4.0-337_amd64.deb +Size: 187926 +MD5sum: edf4ad6b4778ca4c51f9c5aaed3b1237 +SHA1: dbba282b34f08421ee5aa92430e49cef8be40283 +SHA256: b419fc5d74cc7dcf91ded4921c15c004dffe8fe2c8813c196488c306e5617720 +SHA512: 99263ea9a45b90abef38795a23a624354c085332b7de0b7e86bc51941fc4708bf9d313f4605c9eea113aea34b1f91ad50d774af59be4f165588fa4776e88d782 +Description: Intel® oneAPI DPC++ Library 2021.4.0 for Linux* + + +Package: intel-oneapi-libdpstd-devel +Architecture: amd64 +Version: 2021.4.0-337 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-libdpstd-devel-2021.4.0 +Filename: pool/main/intel-oneapi-libdpstd-devel-2021.4.0-337_amd64.deb +Size: 1654 +MD5sum: f640e73743bba55e23b6b1a9ecaa47d8 +SHA1: 2d63f3ce23d0b1fb2841b47482330dc8327f8522 +SHA256: 8c9caddb3652e21c825fe835936f6c605212f33376d5e1fce36ebde0e91e2d80 +SHA512: baf9a665621fed5b6b51dbdf65e2eb7d251bfbe26e8389b2bc279a697bf62e0adad16d13cecd647c34425b4655868a7798d29a3d4f6705730be4782a19710c13 +Description: Intel® oneAPI DPC++ Library 2021.4.0 for Linux* + + +Package: intel-oneapi-libdpstd-devel-2021.5.0 +Architecture: amd64 +Version: 2021.5.0-445 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 2043 +Depends: intel-oneapi-common-vars (>= 2021.4.0-327), intel-oneapi-common-licensing-2021.4.0 +Filename: pool/main/intel-oneapi-libdpstd-devel-2021.5.0-2021.5.0-445_amd64.deb +Size: 193264 +MD5sum: b90781796addaa46927c62f1460b268a +SHA1: 65698d2c54ec28938d5b21a598d608d725396217 +SHA256: ebe8de5f02ea94abf25db7afdfe580a0201014859b188ea9989bef0cd69604a5 +SHA512: bd9a3ccb27b1cf85818518330481e7246282564cb3b607666991f47c8a6ae20a39d09cd3f962b7c091f9f614d94a09ab5614f75e10efb39d6d2f613a6d0a67af +Description: Intel® oneAPI DPC++ Library 2021.5.0 for Linux* + + +Package: intel-oneapi-libdpstd-devel +Architecture: amd64 +Version: 2021.5.0-445 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-libdpstd-devel-2021.5.0 +Filename: pool/main/intel-oneapi-libdpstd-devel-2021.5.0-445_amd64.deb +Size: 1656 +MD5sum: 9af02f81e1d62b90883ba37ba5ef9e3f +SHA1: 11357be9b07e46c81c69f1b31d2458ee806d3881 +SHA256: b2a54449a82c2ccb08e4897ddb6d081955916221e77a0d879703697bfe20a6c5 +SHA512: d9af6b3871c6bd48e8fc4621bcbf0fe0452e556206f557471b05c9f7e41db3e88373894012b4512eee7d4f87a73799af6dd4a0f7c224a1b5e6adf3dc749ebc80 +Description: Intel® oneAPI DPC++ Library 2021.5.0 for Linux* + + +Package: intel-oneapi-libdpstd-devel-2021.6.0 +Architecture: amd64 +Version: 2021.6.0-501 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 2104 +Depends: intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-libdpstd-devel-2021.6.0-2021.6.0-501_amd64.deb +Size: 200286 +MD5sum: 0b99848e6150a2453e3f0dbefaa16de0 +SHA1: 9c735b84f4946b9b989f01544f3bcfd83b9cb6b1 +SHA256: f949db5bbc9d96b6f9e062691f931b19e5d07f208e590bc48954404d6a3fb9eb +SHA512: b9928c020e0a188be2a6537301c83697d081b50a15d0f48477bcdeb9a7ea8e7ae7fa422b1efb9fe79078d83ea8b6c527b32cb6414c1c680e203c37d796d1378b +Description: Intel® oneAPI DPC++ Library 2021.6.0 for Linux* + + +Package: intel-oneapi-libdpstd-devel +Architecture: amd64 +Version: 2021.6.0-501 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-libdpstd-devel-2021.6.0 +Filename: pool/main/intel-oneapi-libdpstd-devel-2021.6.0-501_amd64.deb +Size: 1654 +MD5sum: b8c18b2a25a31014a4a4de0b7223a300 +SHA1: 010445ec78d170a7761fdece74905b17d7579531 +SHA256: c0e4a8249c90363770616c5f4ed4c116aa4c02d2426ddd5281af15ce06c6804f +SHA512: 69ce52b345dbbef37c91cd2e4645668ace1d66c47222f05ddd6c47d148b29a4304d9526449320b4da2649737b4ee5893342e292913f968748b5ff265d71adc09 +Description: Intel® oneAPI DPC++ Library 2021.6.0 for Linux* + + +Package: intel-oneapi-libdpstd-devel-2021.7.0 +Architecture: amd64 +Version: 2021.7.0-631 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 2110 +Depends: intel-oneapi-condaindex (>= 2022.1.0-155), intel-oneapi-common-vars (>= 2022.1.0-161), intel-oneapi-common-licensing-2022.1.0 +Filename: pool/main/intel-oneapi-libdpstd-devel-2021.7.0-2021.7.0-631_amd64.deb +Size: 213220 +MD5sum: 633c45e5d9bfd1fdbe49c3003d24eb5f +SHA1: cfede3b92b9dbcd35c8eca6cb7cd16b3dbbb6a9d +SHA256: 1cc950ad392724d53161a3aca1716ef8b26d06b073de551daa9ac408ec215a5a +SHA512: bc4a7527b97954a53db6d9a0cd79851bb7b4baa923e9d8cb6a3e7499a037095185eacb0ba9153d78f17959798a3cd2022af816f8be56a5d56fc8a257c4714d1d +Description: Intel® oneAPI DPC++ Library 2021.7.0 for Linux* + + +Package: intel-oneapi-libdpstd-devel +Architecture: amd64 +Version: 2021.7.0-631 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-libdpstd-devel-2021.7.0 +Filename: pool/main/intel-oneapi-libdpstd-devel-2021.7.0-631_amd64.deb +Size: 1736 +MD5sum: 072bdadc0a5d3c4f2f25902f65ff9e63 +SHA1: 3fee5902e8e3ffcdd9d9cb6232f3ef17091da31e +SHA256: bf1c2fde306dcc42c3c3320dfb93aea484cfa759e1c2b35271246abe188fb30a +SHA512: a45bd1903fef8bf708012d1cdabe3a158d77093661bc293ebb3127ab71bec8485c41200fa9afc7b8d802fc4864b4965e27df99b33327af87baf08174e0ff34e1 +Description: Intel® oneAPI DPC++ Library 2021.7.0 for Linux* + + +Package: intel-oneapi-libdpstd-devel-2021.7.1 +Architecture: amd64 +Version: 2021.7.1-8713 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 2213 +Depends: intel-oneapi-condaindex (>= 2022.2.0-8695), intel-oneapi-common-vars (>= 2022.2.0-8694), intel-oneapi-common-licensing-2022.2.0 +Filename: pool/main/intel-oneapi-libdpstd-devel-2021.7.1-2021.7.1-8713_amd64.deb +Size: 213660 +MD5sum: 37345167737f87dcd6b848c2e973a72f +SHA1: d40fca5dab1f5f5a4fd6cfca0e1bab84cead132b +SHA256: ba62936f0d03e64b4f8c353514b4a4a769228c8faa95c839a6673d592c8750a5 +SHA512: 012342176848d56537de0f4b9719aacdded80eab9838a35b7dd4340305c3e461dd473db79e8fae536b2cc941abfb074cae46cd006d202394336738785e43c953 +Description: Intel® oneAPI DPC++ Library 2021.7.1 for Linux* + + +Package: intel-oneapi-libdpstd-devel +Architecture: amd64 +Version: 2021.7.1-8713 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-libdpstd-devel-2021.7.1 +Filename: pool/main/intel-oneapi-libdpstd-devel-2021.7.1-8713_amd64.deb +Size: 1736 +MD5sum: ef97ef20d864e7ddd7417ca38d1206b8 +SHA1: 2c84d8fd4dddd9a5440163ac8dc3652fdf74b0fb +SHA256: 20ee100366532127ca627cf51699f0a9f5edc5022696071fb6796f8b373440f4 +SHA512: e8d999ff9485093953737cde8efd88aa8b639ae97367f9fcd5395602a58983f32fbd9abbd6915f758c2729d944390686cd8ca38e42d296f702021b2d6492d736 +Description: Intel® oneAPI DPC++ Library 2021.7.1 for Linux* + + +Package: intel-oneapi-libdpstd-devel +Architecture: amd64 +Version: 2021.7.2-15007 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-libdpstd-devel-2021.7.2 +Filename: pool/main/intel-oneapi-libdpstd-devel-2021.7.2-15007_amd64.deb +Size: 1744 +MD5sum: 5876c29cea3142a79b84a6d4f65d9b3a +SHA1: 7c7fa4f773eda8a64bd693df35c3073bf8a3a799 +SHA256: 3c48abb758844146d13a44fd0ea9a4f57339b0202b285115627b59f8fb392ff3 +SHA512: 660202c51ceab873cdddffda71022e446c69790fda37ef60a8a1bb1bc9588060021c2cf010ee615afe0091a06930d2e8d7fd03b62fabf60770ea013043d94c20 +Description: Intel® oneAPI DPC++ Library 2021.7.2 for Linux* + + +Package: intel-oneapi-libdpstd-devel-2021.7.2 +Architecture: amd64 +Version: 2021.7.2-15007 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 2213 +Depends: intel-oneapi-condaindex (>= 2022.2.1-14970), intel-oneapi-common-vars (>= 2022.2.1-14969), intel-oneapi-common-licensing-2022.2.1 +Filename: pool/main/intel-oneapi-libdpstd-devel-2021.7.2-2021.7.2-15007_amd64.deb +Size: 213592 +MD5sum: 96ef7b128e04e3bca3fb3d07c53d8047 +SHA1: 6d3329eb9db0cb6c8eb2487a59050b1d78aa260e +SHA256: 413e31a7f1881b521733d357ca1e6aec571eac8417d0e1cdb774db9371bd4e71 +SHA512: 7fa8da4736e5f516126ad296fb9a1d9894e975f75ee385333c18688a0ae6d495f3a65166c8e9dc381f290e6b50ac9706a2443a0c57e2dcd276f532a19f4a1e3e +Description: Intel® oneAPI DPC++ Library 2021.7.2 for Linux* + + +Package: intel-oneapi-libdpstd-devel-2022.0.0 +Architecture: amd64 +Version: 2022.0.0-25335 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 2215 +Depends: intel-oneapi-condaindex (>= 2023.0.0-25326), intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing-2023.0.0 +Filename: pool/main/intel-oneapi-libdpstd-devel-2022.0.0-2022.0.0-25335_amd64.deb +Size: 214124 +MD5sum: fccc4622e608955366d49fee753f0441 +SHA1: b15d8da07305bd76fc41f533259d42167461a0cb +SHA256: 1f1ae2853ac0bcc826573a60fb121ca34c0f0ca41f17cf4a04a4bc66eccb8f25 +SHA512: 4867f69eb530208bbc568782c75b672385f281584bb9c2de3ab83cab4aa5a0576e6057bc772f9789746f6692610b35e1074bca916b952db7ff31495d6685b1ee +Description: Intel® oneAPI DPC++ Library 2022.0.0 for Linux* + + +Package: intel-oneapi-libdpstd-devel +Architecture: amd64 +Version: 2022.0.0-25335 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-libdpstd-devel-2022.0.0 +Filename: pool/main/intel-oneapi-libdpstd-devel-2022.0.0-25335_amd64.deb +Size: 1736 +MD5sum: 3433d71b9fa3d38f623b2cc2b329c1ae +SHA1: 0d53851150fa4b066e5690111377c1b141a4a1d0 +SHA256: 091a54701495e52a9cd50104a6b503445fe3cf4efe9b219c02b9c65d45a3258c +SHA512: 9ad3197439966ec52ba0b3bfa59f0165bd14edbfa690419a334da0866a7f4100a6f7e15087eddf00d4c3c136ad616d09d3ba7a309f1f97e0275558c090958654 +Description: Intel® oneAPI DPC++ Library 2022.0.0 for Linux* + + +Package: intel-oneapi-libdpstd-devel-2022.1.0 +Architecture: amd64 +Version: 2022.1.0-43490 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 2255 +Depends: intel-oneapi-condaindex (>= 2023.1.0-43291), intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing-2023.1.0 +Filename: pool/main/intel-oneapi-libdpstd-devel-2022.1.0-2022.1.0-43490_amd64.deb +Size: 219192 +MD5sum: 3a2aa168bec9a7676e138707f6cb10fc +SHA1: d7c97e8b4564daf705083d65dd8404aa7e44458a +SHA256: 133b98eec6558ffee3cec65bcadcda097497cd390a63c3da09f77a7d7d225ded +SHA512: 276ca0cefe184f35a1f2ac5e752261729e2cdf2ac28e939a1fc2a320289f2ba297ccc6f8f6de1dc9378f4dc32ae3d64924ae6da715555d4ca8393d01211e9a3e +Description: Intel® oneAPI DPC++ Library 2022.1.0 for Linux* + + +Package: intel-oneapi-libdpstd-devel +Architecture: amd64 +Version: 2022.1.0-43490 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-libdpstd-devel-2022.1.0 +Filename: pool/main/intel-oneapi-libdpstd-devel-2022.1.0-43490_amd64.deb +Size: 1740 +MD5sum: eaa0e53cba9139a4048a84f68be0bbb8 +SHA1: 3a247a49e02eaad5e4da4d8b070c11c11d6c57ce +SHA256: 5b149bbd2ca41a51a6acca467e3100510833df2991207c7b910aa5f552673395 +SHA512: b61482f6d2d21d8489b97ad6c7acc24395932790bc1ea1bbe5fe319c0ae0242a87416c55429eb667cec0d240b7ae877e0de62ee392369237b8190f699ed1e92c +Description: Intel® oneAPI DPC++ Library 2022.1.0 for Linux* + + +Package: intel-oneapi-lpot +Architecture: amd64 +Version: 1.4.1.0-454 +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 131848 +Provides: intel-oneapi-ilit (= 1.4.1.0-454) +Depends: intel-oneapi-condaindex (>= 2021.3.0-159), intel-oneapi-common-vars (>= 2021.3.0-261), intel-oneapi-common-licensing-2021.3.0 +Breaks: intel-oneapi-ilit (<< 1.4.1.0-454) +Replaces: intel-oneapi-ilit (<< 1.4.1.0-454) +Filename: pool/main/intel-oneapi-lpot-1.4.1.0-454_amd64.deb +Size: 134881368 +MD5sum: 62822f7129b93f3c5acd3692cfc93c8a +SHA1: 1708b4b4f93a412516b3c25d53bbdd55c5a0e936 +SHA256: 7684fb65cd76c473a5925998edea4eb6735b992470aaccfa62c205779fa415f1 +SHA512: 5fdf64b1f265609368821e1eefed3e38a01807bfd9e4311349d194563af1f13d161ebfa7058e9a659cf93e2018ddcf6183e06dac33f290ccbff0604647a8db18 +Description: Intel® Low Precision Optimization Tool + + +Package: intel-oneapi-lpot +Architecture: amd64 +Version: 1.5.1.0-537 +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 131669 +Provides: intel-oneapi-ilit (= 1.5.1.0-537) +Depends: intel-oneapi-condaindex (>= 2021.4.0-207), intel-oneapi-python (>= 2021.4.0-3353), intel-oneapi-common-vars (>= 2021.4.0-327), intel-oneapi-common-licensing-2021.4.0 +Breaks: intel-oneapi-ilit (<< 1.5.1.0-537) +Replaces: intel-oneapi-ilit (<< 1.5.1.0-537) +Filename: pool/main/intel-oneapi-lpot-1.5.1.0-537_amd64.deb +Size: 134678312 +MD5sum: 042c5c6966d80091002d76afc8233183 +SHA1: 4aef2c89b6cdffa01a6db45ca1c8477437d35231 +SHA256: a57e4c28f8c4508af48649fa5dedc2cc4a1cb2da6b5d6251ba0a2fa1088f39d2 +SHA512: fa9d8eba7eccaa14c40eaba5a1fbf98e2f2acb88f859c285a7a03018dfd417693bf56fdfa6e1f2e64c335bbaed50fca4261140b45bfe14307c4b406b45a3b891 +Description: Intel® Low Precision Optimization Tool + + +Package: intel-oneapi-mkl-2021.1.1 +Architecture: amd64 +Version: 2021.1.1-52 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1519460 +Depends: intel-oneapi-mkl-common-2021.1.1, intel-oneapi-tbb, intel-oneapi-compiler-dpcpp-cpp-runtime, intel-oneapi-condaindex,intel-oneapi-common-vars,intel-oneapi-common-licensing,intel-oneapi-common-vars,intel-oneapi-common-licensing +Filename: pool/main/intel-oneapi-mkl-2021.1.1-2021.1.1-52_amd64.deb +Size: 200037456 +MD5sum: a0a96d6d827dd03c5ccae1a8ebae239f +SHA1: 3b85023d5ad3797c64971293a03b6c627d760b38 +SHA256: bca43cf249a2ec312c23d2a12eaba7cdc618823567aa10f9c9be57fda3fff557 +SHA512: d499402a359131d21758cdaf976fc63e6f9b192216ad90488126571534f7d7c1209a3cb27100b1c0620585234d9129144ac8e7c4ced24e77b0e9444750d742fb +Description: Intel® oneAPI Math Kernel Library runtime package for Intel(R) 64 + + +Package: intel-oneapi-mkl +Architecture: amd64 +Version: 2021.1.1-52 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-mkl-2021.1.1 +Filename: pool/main/intel-oneapi-mkl-2021.1.1-52_amd64.deb +Size: 1860 +MD5sum: 1d20f2b5e3982cc115b89ee5c8a4547f +SHA1: 87745fa93162880df9ec62884d2607637a69904f +SHA256: 7558f55733d3b7537c25cca2c04a5ceb9bfe44ffbb85cb2fce65a9e9af120d86 +SHA512: d1d31bfa9148c5163778fc7a69bfb27d1768d42d84aaabb7d7fdcf26c905598e151021b6b84408d94b9ee3a5852dbe5af1a1211e81fe2beec34663dbd973ed64 +Description: Intel® oneAPI Math Kernel Library runtime package for Intel(R) 64 + + +Package: intel-oneapi-mkl-2021.2.0 +Architecture: amd64 +Version: 2021.2.0-296 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1407117 +Depends: intel-oneapi-mkl-common-2021.2.0, intel-oneapi-tbb-2021.2.0, intel-oneapi-compiler-dpcpp-cpp-runtime-2021.2.0, intel-oneapi-condaindex (>= 2021.2.0-94), intel-oneapi-common-vars (>= 2021.2.0-195), intel-oneapi-common-licensing-2021.2.0 +Filename: pool/main/intel-oneapi-mkl-2021.2.0-2021.2.0-296_amd64.deb +Size: 196043836 +MD5sum: b78ec276451a72b7784a89fe3bd4275b +SHA1: acbf85b3657d92d585de3744058caa2b30da867f +SHA256: 6777c7e645d85abc14c98a3575c6d8e28a26a49544790b8a5b4f9e600ef05c2a +SHA512: fea0a24f158005e528bfac79c041a0c4154d1c441562af043917f605cb5044c18eeb4b76353bac568114e5afaa0a3b1b0e0154c482673ced04933d7422a62527 +Description: Intel® oneAPI Math Kernel Library runtime package for Intel(R) 64 + + +Package: intel-oneapi-mkl +Architecture: amd64 +Version: 2021.2.0-296 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-mkl-2021.2.0 +Filename: pool/main/intel-oneapi-mkl-2021.2.0-296_amd64.deb +Size: 1856 +MD5sum: bb1d548517a44337ef947e3af9a41e2f +SHA1: 0dbfbc3e2b5419151f5a127913eb0c738fce45da +SHA256: b434cf6d2f3b469d142ef2ae67c2fcc4685bd40d5a77180d04638349f6365eb5 +SHA512: 9e3c8d42883ac45319c970a92b7edb9bab6f3956e3c66b8c02e69ac6518ef1db6679ea44ff0ee604086c1da3d44c795e0823bd7f8a56f2bda7ac5d7c5eea52ec +Description: Intel® oneAPI Math Kernel Library runtime package for Intel(R) 64 + + +Package: intel-oneapi-mkl-2021.3.0 +Architecture: amd64 +Version: 2021.3.0-520 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1924165 +Depends: intel-oneapi-mkl-common-2021.3.0, intel-oneapi-tbb-2021.3.0, intel-oneapi-compiler-dpcpp-cpp-runtime-2021.3.0, intel-oneapi-condaindex (>= 2021.3.0-159), intel-oneapi-common-vars (>= 2021.3.0-261), intel-oneapi-common-licensing-2021.3.0 +Filename: pool/main/intel-oneapi-mkl-2021.3.0-2021.3.0-520_amd64.deb +Size: 223891400 +MD5sum: ecb5807ba7a9fc7ad99a4755a1aafa27 +SHA1: 7b4c98d5aafd760572dd0a54e9daf0ee3e912c81 +SHA256: 4e56105235519ec264676467cd3068551b90140db168b11e731b5dabeb1c6ea0 +SHA512: 3c6227d20b1733b22f51c5268690006c616e584570653604255607bef869f16bec7429c4a544c7bf899867bcf06b9fc3be2ea87b7a6b9cd7ed5da715edae19f9 +Description: Intel® oneAPI Math Kernel Library runtime package for Intel(R) 64 + + +Package: intel-oneapi-mkl +Architecture: amd64 +Version: 2021.3.0-520 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-mkl-2021.3.0 +Filename: pool/main/intel-oneapi-mkl-2021.3.0-520_amd64.deb +Size: 1864 +MD5sum: 3784636248912d4c135e72e8374d5193 +SHA1: eb49fa79bf06074a014f8cdf5b8936c7b9fbc139 +SHA256: 86d53dd51c669c903da7729f9371dc07f243471fc857aa66ef9c672675f0a6c2 +SHA512: 954977b87c83f81f529865d7c5eb2bbc31abc568c2cdacaf9d8606d038cf0bdca55c9b9e9d5c1206472d68110c949e1795b84ada86dfc8cc318e448d9172bc32 +Description: Intel® oneAPI Math Kernel Library runtime package for Intel(R) 64 + + +Package: intel-oneapi-mkl-2021.4.0 +Architecture: amd64 +Version: 2021.4.0-640 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 2019259 +Depends: intel-oneapi-mkl-common-2021.4.0, intel-oneapi-tbb-2021.4.0, intel-oneapi-compiler-dpcpp-cpp-runtime-2021.4.0, intel-oneapi-condaindex (>= 2021.4.0-207), intel-oneapi-common-vars (>= 2021.4.0-327), intel-oneapi-common-licensing-2021.4.0 +Filename: pool/main/intel-oneapi-mkl-2021.4.0-2021.4.0-640_amd64.deb +Size: 230304924 +MD5sum: 845806ae35796e018334de3e2767bcff +SHA1: b3b208c2787d8eac6a95e2612f499aec5bf5a524 +SHA256: 9105d12fe7b65a409267b24349bf4764ac805d0fe1d053b814089c47cc3eae45 +SHA512: 43ef04e0f50ed5b68b632ac39c751b02d0113f699d578a6e06a27972ad3e2e73a85b8c333d7bf947efde214592d0dcda0d1c671942870a02f91607f4bcd95260 +Description: Intel® oneAPI Math Kernel Library runtime package for Intel(R) 64 + + +Package: intel-oneapi-mkl +Architecture: amd64 +Version: 2021.4.0-640 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-mkl-2021.4.0 +Filename: pool/main/intel-oneapi-mkl-2021.4.0-640_amd64.deb +Size: 1854 +MD5sum: f4476d5327f388b8ddc10cb2bbbf70fe +SHA1: ff28e010a0441fef5f7fa66d41191c7cb67d7d03 +SHA256: 9b05db4749aa251ce4d9735e7e9d3ebb284b89f9559a3295beebfe2285a1cc49 +SHA512: 39d0a3151bc126afb5ae2e8bea8a3ac930602c802e0fe2d7636a333dfe350254682a2c0db1119e77e3b7516e0defc652a590981d35558d54864d7d6e68bb1e04 +Description: Intel® oneAPI Math Kernel Library runtime package for Intel(R) 64 + + +Package: intel-oneapi-mkl +Architecture: amd64 +Version: 2022.0.1-117 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-mkl-2022.0.1 +Filename: pool/main/intel-oneapi-mkl-2022.0.1-117_amd64.deb +Size: 1864 +MD5sum: 2d8cd600b23e39ecf69807df5aa4589d +SHA1: 3e8052ec9a93fbc0166c9ba8f84c9350f27e9592 +SHA256: d7b3cec056d676b884de2aef40ed89ec2972fd874c408c6f97a7a9d7ae9bccc5 +SHA512: 0185251c5d184ea0c6e793aba85d07e14cd6a405a3123a5ba0056c05b2e4f6b903edc62e92e5a2ad4ca25a521416235d60ce41d511efdc9e73095529429082e6 +Description: Intel® oneAPI Math Kernel Library runtime package for Intel(R) 64 + + +Package: intel-oneapi-mkl-2022.0.1 +Architecture: amd64 +Version: 2022.0.1-117 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1881209 +Depends: intel-oneapi-mkl-common-2022.0.1, intel-oneapi-tbb-2021.5.0, intel-oneapi-compiler-dpcpp-cpp-runtime-2022.0.1, intel-oneapi-condaindex (>= 2022.0.0-74), intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-mkl-2022.0.1-2022.0.1-117_amd64.deb +Size: 235218950 +MD5sum: 6e3dfd134a401493b004dcf607b579be +SHA1: f5a03afa157e3c1e38f57b3761a63126367e518b +SHA256: 8dcd970b6d999361486668b76e00bdc2330ef89f2ba11a64dc02344350d03ece +SHA512: 9b28ca9cbd86882f76ae2dfe7a05c7c910e84f294065ee9d4f5fefabe3a4c4013ad89b0fdcb1f50f20c3ac68c21b62f39a16a19127d9224e94be1fa6c2cd1f4d +Description: Intel® oneAPI Math Kernel Library runtime package for Intel(R) 64 + + +Package: intel-oneapi-mkl +Architecture: amd64 +Version: 2022.0.2-136 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-mkl-2022.0.2 +Filename: pool/main/intel-oneapi-mkl-2022.0.2-136_amd64.deb +Size: 1856 +MD5sum: 7109ebf093edea264238c871898d54f4 +SHA1: d75a2d12ade7007328f17b2a86fa70a975595cbf +SHA256: 4d2fe40ae50c70e08213fcd0e33d58ddc08414effb6e43c8e6b9c46fb5541918 +SHA512: 290ef1af92babd5f8981df73d395b3b3904f2fc4b8de47022f4ffaf148b6837c5c756e8a54c77560cc68f63b629af432e333505b1fbf08d7022d9dc3b81353b4 +Description: Intel® oneAPI Math Kernel Library runtime package for Intel(R) 64 + + +Package: intel-oneapi-mkl-2022.0.2 +Architecture: amd64 +Version: 2022.0.2-136 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1881209 +Depends: intel-oneapi-mkl-common-2022.0.2, intel-oneapi-tbb-2021.5.1, intel-oneapi-compiler-dpcpp-cpp-runtime-2022.0.2, intel-oneapi-condaindex (>= 2022.0.0-74), intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-mkl-2022.0.2-2022.0.2-136_amd64.deb +Size: 235179248 +MD5sum: e13a606524f422506863f78824cb7369 +SHA1: c7fe56505ed156006469a9c358ec4b41f1410848 +SHA256: 0d01beddf0d6b8f2fd017322a1ef150bc3d483f9f0a3fe774f08977037327bcf +SHA512: c2cccdedd49d9e08d062e10cc3b653846d212a8ec990fe1aaae85ff1bb2bb04a37e230c67e4b51e1ccd12adfda00237c065ed6db2f24ebd050fd7c7add88bcaf +Description: Intel® oneAPI Math Kernel Library runtime package for Intel(R) 64 + + +Package: intel-oneapi-mkl-2022.1.0 +Architecture: amd64 +Version: 2022.1.0-223 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1477541 +Depends: intel-oneapi-mkl-common-2022.1.0, intel-oneapi-tbb-2021.6.0, intel-oneapi-compiler-dpcpp-cpp-runtime-2022.1.0, intel-oneapi-condaindex (>= 2022.1.0-155), intel-oneapi-common-vars (>= 2022.1.0-161), intel-oneapi-common-licensing-2022.1.0 +Filename: pool/main/intel-oneapi-mkl-2022.1.0-2022.1.0-223_amd64.deb +Size: 185025174 +MD5sum: 49504afde9680afa4e67940fbd981d73 +SHA1: 62af948cfe5996927399b7185a8e7a3908eef0a7 +SHA256: 10974019f1bf2c3bcbb76880892b39d436e8d95faebbb62004fa9727e0eaae4b +SHA512: 14c20708707dc8bcd974ec99d058ef50630725ce23cdf8a84b050677df4c3fe70e34135c81ec0b943bc2cc51027c8752b3a1853cb470f95d874bbed76ad96140 +Description: Intel® oneAPI Math Kernel Library runtime package for Intel(R) 64 + + +Package: intel-oneapi-mkl +Architecture: amd64 +Version: 2022.1.0-223 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-mkl-2022.1.0 +Filename: pool/main/intel-oneapi-mkl-2022.1.0-223_amd64.deb +Size: 2300 +MD5sum: 93c5127d25462054259a8d85c12e1ca7 +SHA1: c263962cf8d9b49ba9f730fda46ae4b98da7d058 +SHA256: 8ad249c10a1950b965aca3fc0cb3aff2e8e0fdec2303e3fab04fe1e8913b704c +SHA512: 6bf56a61ec7116d5231edb022ca470a6087c50e5e56bd92dbe2fe9d4ad15b470b355f091d25e88f4d1da2eddcc8fe764b6b4fb8e3ad3862e01c034faa44c440a +Description: Intel® oneAPI Math Kernel Library runtime package for Intel(R) 64 + + +Package: intel-oneapi-mkl-2022.2.0 +Architecture: amd64 +Version: 2022.2.0-8748 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1578882 +Depends: intel-oneapi-mkl-common-2022.2.0, intel-oneapi-tbb-2021.7.0, intel-oneapi-compiler-dpcpp-cpp-runtime-2022.2.0, intel-oneapi-condaindex (>= 2022.2.0-8695), intel-oneapi-common-vars (>= 2022.2.0-8694), intel-oneapi-common-licensing-2022.2.0 +Filename: pool/main/intel-oneapi-mkl-2022.2.0-2022.2.0-8748_amd64.deb +Size: 202492226 +MD5sum: 93d5249e07ded9c731dc7199039b89c5 +SHA1: 5f582d4a6c10c2d34be969fcbed28cce0136decc +SHA256: ae0263c72d78fcd1e8d2d04d799a76529b7780b17a6fd5eba347c193cc62d5c9 +SHA512: 50e4c50bbb74ff5fc063f31b14cbc67965c1f45086bbf0e263d452dddd8218c9c79db0e002064f0f32b3ce9e7093be914f41d3efe6049a38eac3cc499ddba66c +Description: Intel® oneAPI Math Kernel Library runtime package for Intel(R) 64 + + +Package: intel-oneapi-mkl +Architecture: amd64 +Version: 2022.2.0-8748 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-mkl-2022.2.0 +Filename: pool/main/intel-oneapi-mkl-2022.2.0-8748_amd64.deb +Size: 2296 +MD5sum: 50e2730798ca619120a1ace7124a8d2b +SHA1: 59216ec4beb034684ed08bd2e4a2a15e48005f3e +SHA256: f409efc3f41fb36cee57259d51ef26e144ba4dbef1e6edcf246b21af981b3f0c +SHA512: f94033bc09fba1b52eabee43b305be872c09255b45269354e90513e887603742cb4c2c4a49dea4f49863f999eb1c3d456cf034a7789e2ad42636a37d2f34868b +Description: Intel® oneAPI Math Kernel Library runtime package for Intel(R) 64 + + +Package: intel-oneapi-mkl +Architecture: amd64 +Version: 2022.2.1-16993 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-mkl-2022.2.1 +Filename: pool/main/intel-oneapi-mkl-2022.2.1-16993_amd64.deb +Size: 2300 +MD5sum: fbb73019b259c5827ddf38c1d1f9d03c +SHA1: 3204af7151b91262eee8ac47ff76a37e81399abf +SHA256: 9801539036327e452ebc65abd6f2ad4ea9619dcd7d2aea9329f8c261e58615f5 +SHA512: 3121ef3a58e68d6097c6817d899b9e505c73dfabb10381f5763555080fa94402c24a968e6a8130118b369b5e3cd2dd2c9e2074318c9716bb54cce14d8f1d4101 +Description: Intel® oneAPI Math Kernel Library runtime package for Intel(R) 64 + + +Package: intel-oneapi-mkl-2022.2.1 +Architecture: amd64 +Version: 2022.2.1-16993 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1578882 +Depends: intel-oneapi-mkl-common-2022.2.1, intel-oneapi-tbb-2021.7.1, intel-oneapi-compiler-dpcpp-cpp-runtime-2022.2.1, intel-oneapi-condaindex (>= 2022.2.1-14970), intel-oneapi-common-vars (>= 2022.2.1-14969), intel-oneapi-common-licensing-2022.2.1 +Filename: pool/main/intel-oneapi-mkl-2022.2.1-2022.2.1-16993_amd64.deb +Size: 202488238 +MD5sum: 0549244c3cab3ff9f9b11a38ff64d713 +SHA1: 87d9c1940134bb84adf87a37a8c0e5950aaae395 +SHA256: 1bc2acf8111f9e5e40798afb7a93d796c84a983f7a1cd169a0000060b0d4000f +SHA512: 21f2c8b9608fc942821624132aa905f2ec0863f6af9b8a02c166f88b41620ea4e66d1e6551f5da53e727103e9035f28018b12ee3bee33c76ea10be6a68c82748 +Description: Intel® oneAPI Math Kernel Library runtime package for Intel(R) 64 + + +Package: intel-oneapi-mkl-2023.0.0 +Architecture: amd64 +Version: 2023.0.0-25398 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1510066 +Depends: intel-oneapi-mkl-common-2023.0.0, intel-oneapi-tbb-2021.8.0, intel-oneapi-compiler-dpcpp-cpp-runtime-2023.0.0, intel-oneapi-condaindex (>= 2023.0.0-25326), intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing-2023.0.0 +Filename: pool/main/intel-oneapi-mkl-2023.0.0-2023.0.0-25398_amd64.deb +Size: 188781126 +MD5sum: 4cf3f76e235164e568ea9a28016b7285 +SHA1: cfbb064cd634c632880ff41059244513ac1a3aa9 +SHA256: 704cd8308d1824a76e53f0d62af2d23fa682abb2bc6b965fc7284de9473e1f98 +SHA512: 7f53a93151e5754219d3fa70722918c26f8f90b040f2587f85ce7e8dc1f73dadba5d138e01e67db4b9c76602d6e8502aa92645a0d10ddbcf5854bb85fcd2dbe6 +Description: Intel® oneAPI Math Kernel Library runtime package for Intel(R) 64 + + +Package: intel-oneapi-mkl +Architecture: amd64 +Version: 2023.0.0-25398 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-mkl-2023.0.0 +Filename: pool/main/intel-oneapi-mkl-2023.0.0-25398_amd64.deb +Size: 2300 +MD5sum: b92c4afed851fe36d7fcd152d0248cb5 +SHA1: 211b5c80b80d99625d1480177271c569691b6262 +SHA256: 4575b8ecfd40efd1af9fd7f992cbfc7a58d81245309d608d09ba4ec5222ed570 +SHA512: 2612fa8770e261283958bf372f9aee2af1a1827ad9554eb22d7dc27a6b92a209bb2dd05b5f4514184d2d6e30bd81c5b61491fa0b75a374f91764e82fc7930564 +Description: Intel® oneAPI Math Kernel Library runtime package for Intel(R) 64 + + +Package: intel-oneapi-mkl-2023.1.0 +Architecture: amd64 +Version: 2023.1.0-46342 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1323343 +Depends: intel-oneapi-mkl-common-2023.1.0, intel-oneapi-tbb-2021.9.0, intel-oneapi-compiler-dpcpp-cpp-runtime-2023.1.0, intel-oneapi-condaindex (>= 2023.1.0-43291), intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing-2023.1.0 +Filename: pool/main/intel-oneapi-mkl-2023.1.0-2023.1.0-46342_amd64.deb +Size: 181631354 +MD5sum: e5ff6c4fed8bbd38ff1ae3b88ea26ca1 +SHA1: 25c1beeac94354d64b40213a3c4e6482bd825aa7 +SHA256: 0581a867bed4ef620812bc05faa35228b7439d4f1d33f0eb4483f7eb8cafe8aa +SHA512: fcbe42bbd3446c7ac5d6986506e44976c8bd0e365ed829f20cc7662388bdd1c09ca1927bde49f8449539faa42eedbfbb7793603354fbfcd5cdc32e0e2564b4bf +Description: Intel® oneAPI Math Kernel Library runtime package for Intel(R) 64 + + +Package: intel-oneapi-mkl +Architecture: amd64 +Version: 2023.1.0-46342 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-mkl-2023.1.0 +Filename: pool/main/intel-oneapi-mkl-2023.1.0-46342_amd64.deb +Size: 2300 +MD5sum: b618f3817feba5d4bfc27bde92578476 +SHA1: 86d855659c710321f654eb7b5785e3c90f53cf6a +SHA256: 065fed6262a6f03c5b4b2d22ec965a95cafb18a7d52c7a38d3e96f74e1400409 +SHA512: 08990b60ead52dbe91d9c2f0f45262b4198b7570ef4b7e604743e3ff81921b20c1f89383786bbad08429d5317394ea07988b616bcdc110ff34326bce8564df0c +Description: Intel® oneAPI Math Kernel Library runtime package for Intel(R) 64 + + +Package: intel-oneapi-mkl-devel-2021.1.1 +Architecture: amd64 +Version: 2021.1.1-52 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1612941 +Depends: intel-oneapi-mkl-2021.1.1, intel-oneapi-mkl-common-devel-2021.1.1, intel-oneapi-condaindex,intel-oneapi-common-vars,intel-oneapi-common-licensing,intel-oneapi-common-vars,intel-oneapi-common-licensing +Filename: pool/main/intel-oneapi-mkl-devel-2021.1.1-2021.1.1-52_amd64.deb +Size: 150948650 +MD5sum: d7f7ec18f8983d42f98da6705b03323c +SHA1: 0c6c93b3697fc26cd9ede1c9e76f2cd982892f59 +SHA256: 02f65eddf9f8140b5845680f885db743c0e8ef5d30f37deb44de208ca952779d +SHA512: adf4b2b35197f000d128cc6d23a5493b2e7b349c1d703eaf8e472cc4ff804323d72c4286c1f6f618481ce123c1dc7f1dd4983f07279252659837f8fa67c607c1 +Description: Intel® oneAPI Math Kernel Library 2021.1.1 for Linux* development package for Intel(R) 64 + + +Package: intel-oneapi-mkl-devel +Architecture: amd64 +Version: 2021.1.1-52 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-mkl-devel-2021.1.1 +Filename: pool/main/intel-oneapi-mkl-devel-2021.1.1-52_amd64.deb +Size: 1674 +MD5sum: 017d339364b6d9876fa2fbc35101075d +SHA1: 3b165e0a1eb8a0ba9e3cd5419099c0b56cb55e4c +SHA256: 4ad2c16f7497650e4611d258fe099c4d6d9da43a863c9e2cf87cc60326e38f2d +SHA512: 9f577b86199bf4125f21c3152b84f4542fb5193ae46bd3e7fdf6fd072113f8bc3070208350f32d0cb3ae5ef47e755fae281693eae9c2ce92e0f8d92f1450bdd5 +Description: Intel® oneAPI Math Kernel Library 2021.1.1 for Linux* development package for Intel(R) 64 + + +Package: intel-oneapi-mkl-devel-2021.2.0 +Architecture: amd64 +Version: 2021.2.0-296 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1715962 +Depends: intel-oneapi-mkl-2021.2.0, intel-oneapi-mkl-common-devel-2021.2.0, intel-oneapi-condaindex (>= 2021.2.0-94), intel-oneapi-common-vars (>= 2021.2.0-195), intel-oneapi-common-licensing-2021.2.0 +Filename: pool/main/intel-oneapi-mkl-devel-2021.2.0-2021.2.0-296_amd64.deb +Size: 156497288 +MD5sum: 44086d5b001dfe38a5fc755025af310d +SHA1: 17b25c1c98125e8e915e1d29e6c6820e2571d327 +SHA256: 95d8d1c88ca343197b7c253961ba62757b477baabab894b5883d492a251e3c74 +SHA512: b19c1f1d78aaefe9771807ac94c913572d44e066d910e205f97dce22d9d5e87d46bad87e2aa32fe5e9254e17b1a6f85fcbfea0c23cfcb7483497d0cfe09282fb +Description: Intel® oneAPI Math Kernel Library 2021.2.0 for Linux* development package for Intel(R) 64 + + +Package: intel-oneapi-mkl-devel +Architecture: amd64 +Version: 2021.2.0-296 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-mkl-devel-2021.2.0 +Filename: pool/main/intel-oneapi-mkl-devel-2021.2.0-296_amd64.deb +Size: 1676 +MD5sum: ff1965f7aabeb644462502e7ad7b17c7 +SHA1: 74d2d0bc708ec99799be4c1a7a745af9a0b10837 +SHA256: f2003300062c124a9ca47290caf9fc866e866b65fb677872c5adcdf4a879817d +SHA512: 5f9bc4130ac8b1dd2d2f3aea2e918e65659af83c1d812b3e097f46a3dc1bdd18ebaeeb89f1f6401f03de6e02101327ac0a6f695a11125564b9c0d1e494996334 +Description: Intel® oneAPI Math Kernel Library 2021.2.0 for Linux* development package for Intel(R) 64 + + +Package: intel-oneapi-mkl-devel-2021.3.0 +Architecture: amd64 +Version: 2021.3.0-520 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1847418 +Depends: intel-oneapi-mkl-2021.3.0, intel-oneapi-mkl-common-devel-2021.3.0, intel-oneapi-condaindex (>= 2021.3.0-159), intel-oneapi-common-vars (>= 2021.3.0-261), intel-oneapi-common-licensing-2021.3.0 +Filename: pool/main/intel-oneapi-mkl-devel-2021.3.0-2021.3.0-520_amd64.deb +Size: 163671346 +MD5sum: 7f875f3e53b5cfa4dbb38641a44d9a1c +SHA1: 6f7c6042cb9a6b401a5ad902c9c662452f3facb0 +SHA256: a7633a7961154931775ceea89efe825e885de0576eff272401bbd75748fec049 +SHA512: 2192a2b159589d99d29e02987b5ead19e423ffb63f0d160bf675e12200d4549beee2c51016165b0adf5bfa3c7df27bdd95c771a80e13683889778dfb99176dd2 +Description: Intel® oneAPI Math Kernel Library 2021.3.0 for Linux* development package for Intel(R) 64 + + +Package: intel-oneapi-mkl-devel +Architecture: amd64 +Version: 2021.3.0-520 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-mkl-devel-2021.3.0 +Filename: pool/main/intel-oneapi-mkl-devel-2021.3.0-520_amd64.deb +Size: 1676 +MD5sum: e3e2ecf5a1c9bfc63345c2f4c2554683 +SHA1: db2a6c57cb820a47b66c4e183c626d44702a00fb +SHA256: 6038bf7e43e7adb94e0ff4fe3141751585300c519d73e42e36fe255a0fca9c6a +SHA512: facfdd721f1835a352ffb36919a05e0697c44c16e6e7afe8950f7636677220f739efeb46beaba755391dbd6415432a5e9fceac09afec37f1f67ebd7c9f25fc8d +Description: Intel® oneAPI Math Kernel Library 2021.3.0 for Linux* development package for Intel(R) 64 + + +Package: intel-oneapi-mkl-devel-2021.4.0 +Architecture: amd64 +Version: 2021.4.0-640 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1907067 +Depends: intel-oneapi-mkl-2021.4.0, intel-oneapi-mkl-common-devel-2021.4.0, intel-oneapi-condaindex (>= 2021.4.0-207), intel-oneapi-common-vars (>= 2021.4.0-327), intel-oneapi-common-licensing-2021.4.0 +Filename: pool/main/intel-oneapi-mkl-devel-2021.4.0-2021.4.0-640_amd64.deb +Size: 167245792 +MD5sum: 0c1e5d21e249af6f2840429be3ce016c +SHA1: b612f633cc0236a76fdff96bf38211eef8bb4ad6 +SHA256: 2f14a0bd261d65aa382f52c883b1fef83902aa96cc8a415bc4212ad181591c87 +SHA512: 48555b233fb799e61810e9e41114b9ed27877f524974ee0e6ebfd8053fea9d88b2aa37d39bdc44418dc7f048308eab7e0c14197f2c92ce263a4b531c04e79e5c +Description: Intel® oneAPI Math Kernel Library 2021.4.0 for Linux* development package for Intel(R) 64 + + +Package: intel-oneapi-mkl-devel +Architecture: amd64 +Version: 2021.4.0-640 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-mkl-devel-2021.4.0 +Filename: pool/main/intel-oneapi-mkl-devel-2021.4.0-640_amd64.deb +Size: 1676 +MD5sum: 2160293e7f482f53f5ee15ee45e0a048 +SHA1: 48d8534f1b75565c3e53ed673d4c6233b917bdb0 +SHA256: 9a6db70b71e500d108a7e43091ab223959c66e9637ffd76690f351ff65445a72 +SHA512: 28f4f92bf591cde5d7d9437040b952964e700d1948ced51647ad116669664e96cbdc05df95a8cf2df8277136a6445be8a930886083d2cbf8ba6de6765ef05820 +Description: Intel® oneAPI Math Kernel Library 2021.4.0 for Linux* development package for Intel(R) 64 + + +Package: intel-oneapi-mkl-devel +Architecture: amd64 +Version: 2022.0.1-117 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-mkl-devel-2022.0.1 +Filename: pool/main/intel-oneapi-mkl-devel-2022.0.1-117_amd64.deb +Size: 1676 +MD5sum: cfa6c8c62a4dfdb0d71891dbaf690605 +SHA1: edf4f1f50a524d32092e953506538d81523b3e0a +SHA256: 177aca5225eb11a01e234ccdd02e0d7892900b1b32f8dfba452798d8c951b930 +SHA512: 75323e6cae0ad59abd14f64231bf25d8bc84b41c663593217415e4052d074863aa1db9a5df512d055188f236613e05488ce416e4655f58bc445234b4f37b1f7d +Description: Intel® oneAPI Math Kernel Library 2022.0.1 for Linux* development package for Intel(R) 64 + + +Package: intel-oneapi-mkl-devel-2022.0.1 +Architecture: amd64 +Version: 2022.0.1-117 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1827058 +Depends: intel-oneapi-mkl-2022.0.1, intel-oneapi-mkl-common-devel-2022.0.1, intel-oneapi-condaindex (>= 2022.0.0-74), intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-mkl-devel-2022.0.1-2022.0.1-117_amd64.deb +Size: 151800638 +MD5sum: fa9a80116daa46099b5d2aacd20325aa +SHA1: d15d5a2ac3b55b0c9fbe0d9649b307550ff15d44 +SHA256: 830e222888b844cfcc3d0ddd8fe4b3a196ff35eeeaa397d9d5971b5ee74ab5fb +SHA512: fc58739d45daad9e879141035e943b38783d9e6a758ba3cc59365af94547ed504103770708d1460c0e560b2f29042dca239a0eb1e5ab6f44576bd3a62642b83e +Description: Intel® oneAPI Math Kernel Library 2022.0.1 for Linux* development package for Intel(R) 64 + + +Package: intel-oneapi-mkl-devel +Architecture: amd64 +Version: 2022.0.2-136 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-mkl-devel-2022.0.2 +Filename: pool/main/intel-oneapi-mkl-devel-2022.0.2-136_amd64.deb +Size: 1674 +MD5sum: f66e137bc975a56b6737f447e7ea9a85 +SHA1: d5c9816032485412e397075f018ae23ac44c9a63 +SHA256: 8410f90aa65dbdd44375d10ce50f9f1d9762e7ee85e186e8f9c648cc527ed75f +SHA512: c8164cb7cfe3cd3a33a3fc551c43b9874e76fc1d59d3824f8373997cdd9b20b8c08dd25a92c9331c2bfa78f5be1c1c77b9a752ea823b784f2bfec8b0e09211d6 +Description: Intel® oneAPI Math Kernel Library 2022.0.2 for Linux* development package for Intel(R) 64 + + +Package: intel-oneapi-mkl-devel-2022.0.2 +Architecture: amd64 +Version: 2022.0.2-136 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1827058 +Depends: intel-oneapi-mkl-2022.0.2, intel-oneapi-mkl-common-devel-2022.0.2, intel-oneapi-condaindex (>= 2022.0.0-74), intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-mkl-devel-2022.0.2-2022.0.2-136_amd64.deb +Size: 151800502 +MD5sum: a557ead4cfadc619355251c1143ad913 +SHA1: dc03a05b49cb732a03452e77298f725b604ba23f +SHA256: 9041a804d7b41813c1816d15bba749fbca59cb56603d66b8b9fe99fc133b48fe +SHA512: b1b79c7c6a5a9392f1ea1ff70343ac906388e26ba7ec20f80a933dde572f07dc5a500fe12da324eeded0a87fccdc2eb88491cfa63ea311d4731379809f3a44df +Description: Intel® oneAPI Math Kernel Library 2022.0.2 for Linux* development package for Intel(R) 64 + + +Package: intel-oneapi-mkl-devel-2022.1.0 +Architecture: amd64 +Version: 2022.1.0-223 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1846006 +Depends: intel-oneapi-mkl-2022.1.0, intel-oneapi-mkl-common-devel-2022.1.0, intel-oneapi-condaindex (>= 2022.1.0-155), intel-oneapi-common-vars (>= 2022.1.0-161), intel-oneapi-common-licensing-2022.1.0 +Filename: pool/main/intel-oneapi-mkl-devel-2022.1.0-2022.1.0-223_amd64.deb +Size: 156885826 +MD5sum: 6a5e05af4a77730a3d3ba70bedb8b2ca +SHA1: ed2d3f9036cd398377e37e254be1963038feebef +SHA256: 49399449a4e834124b63d3a4a1a48a154fe7e8a43f5617aea3bf6e9aa3337d64 +SHA512: 74d7a9331e3e2d8e7be6a5b0144c2f3cef93042c211fd843c2f443743143a6df1840699bb181523dd4de47ee7872134c92122631204c66974ccb462cf34f4234 +Description: Intel® oneAPI Math Kernel Library 2022.1.0 for Linux* development package for Intel(R) 64 + + +Package: intel-oneapi-mkl-devel +Architecture: amd64 +Version: 2022.1.0-223 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-mkl-devel-2022.1.0 +Filename: pool/main/intel-oneapi-mkl-devel-2022.1.0-223_amd64.deb +Size: 2336 +MD5sum: 6ce05ece26d8184c4c3742d98e043ae6 +SHA1: b739ca7a00ac3b26c187b143e518674d61bcd0f4 +SHA256: eb0c733a91d0a5e5530ae0d5e437abe297a29c929bedfc0bb31e48fe0116ec8b +SHA512: e9ccc008f329a79e4c924f06a9361c10430b3dd9142bdcacf56bd6d03d095d98427a57e75ded60df665e83e87f31867dcf8c66d7f7a023e81544b15a664a87b4 +Description: Intel® oneAPI Math Kernel Library 2022.1.0 for Linux* development package for Intel(R) 64 + + +Package: intel-oneapi-mkl-devel-2022.2.0 +Architecture: amd64 +Version: 2022.2.0-8748 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1957718 +Depends: intel-oneapi-mkl-2022.2.0, intel-oneapi-mkl-common-devel-2022.2.0, intel-oneapi-condaindex (>= 2022.2.0-8695), intel-oneapi-common-vars (>= 2022.2.0-8694), intel-oneapi-common-licensing-2022.2.0 +Filename: pool/main/intel-oneapi-mkl-devel-2022.2.0-2022.2.0-8748_amd64.deb +Size: 183599014 +MD5sum: 4d4f662a1a452dd931b94c8ba8d7b09b +SHA1: 4bdc8ac00f2c843f3490398db293f12f7328b2a6 +SHA256: 7f5cb022781ab93626912a21db2a025abf10dc0cce4a019a0c91e06b150bf662 +SHA512: 4fb49e32068aec74dd05792ea326f218e75d627f6cf1ce481b8178a77b4f88ceffc135f47194183ea40ba034091072ac089f22660dffb2520b97fc01d688806d +Description: Intel® oneAPI Math Kernel Library 2022.2.0 for Linux* development package for Intel(R) 64 + + +Package: intel-oneapi-mkl-devel +Architecture: amd64 +Version: 2022.2.0-8748 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-mkl-devel-2022.2.0 +Filename: pool/main/intel-oneapi-mkl-devel-2022.2.0-8748_amd64.deb +Size: 2332 +MD5sum: 9e6c97df80e4bdfecae5d999627178b8 +SHA1: 3aa18e389482767d07a1ce47d95b03d5a0e23fc3 +SHA256: 36a86bc2179234cdb118b3e8ad1cc68dff28c77ceafe9115cf8f5877f01c7a2d +SHA512: b18c2d0f4d647759e50fec82afab70768cdc276673b1e3218989756e25dec93f025bcb79079397760e1aa9ab8c7edc286bddc1de15cb123e4b6842382cb06eeb +Description: Intel® oneAPI Math Kernel Library 2022.2.0 for Linux* development package for Intel(R) 64 + + +Package: intel-oneapi-mkl-devel +Architecture: amd64 +Version: 2022.2.1-16993 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-mkl-devel-2022.2.1 +Filename: pool/main/intel-oneapi-mkl-devel-2022.2.1-16993_amd64.deb +Size: 2336 +MD5sum: 8c3a25086b823293408419cebe2f1789 +SHA1: 93efdd8eda400018eadc1f5682eaf6bfe3015654 +SHA256: e2206b83d6694f33cba869f53b34fecddb37a037949004b28ee1e6def9fd7c85 +SHA512: be8622fc5bc2f219861aed8a756b4e7bd156e381cb7434f98653bb79738bf17a34f2154964a8bff30f165950c2e2e0bc0e0d4700ae65cb6a224ca036ea670e84 +Description: Intel® oneAPI Math Kernel Library 2022.2.1 for Linux* development package for Intel(R) 64 + + +Package: intel-oneapi-mkl-devel-2022.2.1 +Architecture: amd64 +Version: 2022.2.1-16993 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1957718 +Depends: intel-oneapi-mkl-2022.2.1, intel-oneapi-mkl-common-devel-2022.2.1, intel-oneapi-condaindex (>= 2022.2.1-14970), intel-oneapi-common-vars (>= 2022.2.1-14969), intel-oneapi-common-licensing-2022.2.1 +Filename: pool/main/intel-oneapi-mkl-devel-2022.2.1-2022.2.1-16993_amd64.deb +Size: 183600754 +MD5sum: b6526fb048c506b1bf96c6ee403c2039 +SHA1: 7bdfe77496ac21ed2cba710e5f7df901b10f81ba +SHA256: 7877ce1a920da2757e845b9a51bcf887aa718db0bf3f181b2da81c5c67756634 +SHA512: a259580266798e16b6fe6195cfacb1cdd9ae519c86945e7df29b7eff344fbfb238b0126231a99d2190cdbdba6340dce3f40574f443efd09b4955c86260d331da +Description: Intel® oneAPI Math Kernel Library 2022.2.1 for Linux* development package for Intel(R) 64 + + +Package: intel-oneapi-mkl-devel-2023.0.0 +Architecture: amd64 +Version: 2023.0.0-25398 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1869005 +Depends: intel-oneapi-mkl-2023.0.0, intel-oneapi-mkl-common-devel-2023.0.0, intel-oneapi-condaindex (>= 2023.0.0-25326), intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing-2023.0.0 +Filename: pool/main/intel-oneapi-mkl-devel-2023.0.0-2023.0.0-25398_amd64.deb +Size: 171354314 +MD5sum: c37a00cd0acd4aee434efeb1fc0d3eb3 +SHA1: 36fa5b10a6536d6cb51fce1936750a7f1e2b85f2 +SHA256: ee582b8e443b6104e3cc8813f990e8081a0e44d203aa0f65edca0f3406107793 +SHA512: 2688e1ca91bfce33026fd5853d04aa510318d2e6f154755afa2103ba797119b0e2c19718e1180b96fce89d704b9b8d5d3995788320296861b498e18420470572 +Description: Intel® oneAPI Math Kernel Library 2023.0.0 for Linux* development package for Intel(R) 64 + + +Package: intel-oneapi-mkl-devel +Architecture: amd64 +Version: 2023.0.0-25398 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-mkl-devel-2023.0.0 +Filename: pool/main/intel-oneapi-mkl-devel-2023.0.0-25398_amd64.deb +Size: 2336 +MD5sum: be7d3142bd02395934944d0e615d5656 +SHA1: e9d2ca63daeaa3a78c73bfea7bab4ab849f2f8f0 +SHA256: 65aec4906020554911695fe3d1f70c9f15d46da5b0e190b0a75b76081f8aa3f9 +SHA512: e87026bda62d2d7fecc0ef2fa2143ed4f82050a2748481c7bb38037e87e101a5223dfa0096c5a6fd75a4b60bc0874c04d77e9b445bf5d1a7e582635c4efe9129 +Description: Intel® oneAPI Math Kernel Library 2023.0.0 for Linux* development package for Intel(R) 64 + + +Package: intel-oneapi-mkl-devel-2023.1.0 +Architecture: amd64 +Version: 2023.1.0-46342 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1872150 +Depends: intel-oneapi-mkl-2023.1.0, intel-oneapi-mkl-common-devel-2023.1.0, intel-oneapi-condaindex (>= 2023.1.0-43291), intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing-2023.1.0 +Filename: pool/main/intel-oneapi-mkl-devel-2023.1.0-2023.1.0-46342_amd64.deb +Size: 171338710 +MD5sum: 6cfdd83d8b7b9b469335bf639f52a662 +SHA1: dd857bf669f0f8ddd7cac463c43bddaaf81e88c2 +SHA256: 1eeb94ad7aeebd55873cb64f2ba3db5a202e3c6f17c7d3095742aeb95c72f2cd +SHA512: 1ef5cb3a161b3d2fcf6c1e4a13e696abc8756a9d05723fd7d9c514bf2469f787e9e56f8696fbad25d3102a6d84063fc61daae6b514188c021f5e6b00d67a8dd9 +Description: Intel® oneAPI Math Kernel Library 2023.1.0 for Linux* development package for Intel(R) 64 + + +Package: intel-oneapi-mkl-devel +Architecture: amd64 +Version: 2023.1.0-46342 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-mkl-devel-2023.1.0 +Filename: pool/main/intel-oneapi-mkl-devel-2023.1.0-46342_amd64.deb +Size: 2336 +MD5sum: 2c5ce94d2a4291154594e9ef2bfd13f9 +SHA1: dd6f024b7b1f4f9eecb5eb303132510877096a91 +SHA256: 8bbc541157ccfc8767ad4631d847e1e854edb51dea6feb054ec4afd449cbb00f +SHA512: e34ccf1db50e870c53dbd85d8ae29766c7e0c7d1659e570258e23fae3925c1250f1469a95c94894a98167a258bce469b71c8ee3459b8bf1c857af4dbf5e3a970 +Description: Intel® oneAPI Math Kernel Library 2023.1.0 for Linux* development package for Intel(R) 64 + + +Package: intel-oneapi-mkl-devel-32bit-2021.1.1 +Architecture: amd64 +Version: 2021.1.1-52 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 604817 +Depends: intel-oneapi-mkl-32bit-2021.1.1, intel-oneapi-mkl-common-devel-2021.1.1, intel-oneapi-condaindex,intel-oneapi-common-vars,intel-oneapi-common-licensing,intel-oneapi-common-vars,intel-oneapi-common-licensing +Filename: pool/main/intel-oneapi-mkl-devel-32bit-2021.1.1-2021.1.1-52_amd64.deb +Size: 68950418 +MD5sum: be84056a59f26fe871c887217482328d +SHA1: a31e49cd1cbf737fe442ec658c80838e1800ebf1 +SHA256: 795cf750418a5185ab5e1a19b8f9c7d3025e84da467e681bfcd4f3fff136ef72 +SHA512: 7e50c8dc6c86279ff545f5359a1d488d5538b30f1f2052c166f0a133b971b1a1c605ff99d1d30ab1983208fa3d062dedd4728e1fc6ef59a266420c9525f2b392 +Description: Intel® oneAPI Math Kernel Library 2021.1.1 for Linux* development package for IA-32 + + +Package: intel-oneapi-mkl-devel-32bit +Architecture: amd64 +Version: 2021.1.1-52 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-mkl-devel-32bit-2021.1.1 +Filename: pool/main/intel-oneapi-mkl-devel-32bit-2021.1.1-52_amd64.deb +Size: 1678 +MD5sum: 55cf59771f1b50a739b53afff969bba0 +SHA1: e0779c84300b05f276ed11d8210b2ec7ab8360f5 +SHA256: 02f0b9b1117788dc892777a291a019f9760cb8605f83b049121d9f7692ac7dc5 +SHA512: 7c5757ee276e4e4b0baf18d6efe1bb8a76fdfe33a2a38501cae7e48222edf8b83fa39c97e25e07b9768881f12c67a89640628b3b9e5279f630acb060f7f6a2ba +Description: Intel® oneAPI Math Kernel Library 2021.1.1 for Linux* development package for IA-32 + + +Package: intel-oneapi-mkl-devel-32bit-2021.2.0 +Architecture: amd64 +Version: 2021.2.0-296 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 597866 +Depends: intel-oneapi-mkl-32bit-2021.2.0, intel-oneapi-mkl-common-devel-2021.2.0, intel-oneapi-condaindex (>= 2021.2.0-94), intel-oneapi-common-vars (>= 2021.2.0-195), intel-oneapi-common-licensing-2021.2.0 +Filename: pool/main/intel-oneapi-mkl-devel-32bit-2021.2.0-2021.2.0-296_amd64.deb +Size: 69164940 +MD5sum: f88607f8f9cf8231d18b86fe955d64b4 +SHA1: c86c89521ab212f0363a80844321fe7e157c622f +SHA256: 396838b188645888ce70d40773d2dc97f961894d1ee7c087d6717f620a2232c7 +SHA512: ebc6ddc02f9d213dadf7700ca5baa4250f4e0995f096ddbbdfd69cad31e0d5a236402018c5319a63284a659ad8a904fdd3ebc3db8b5a0069ec37efe2bdad2e30 +Description: Intel® oneAPI Math Kernel Library 2021.2.0 for Linux* development package for IA-32 + + +Package: intel-oneapi-mkl-devel-32bit +Architecture: amd64 +Version: 2021.2.0-296 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-mkl-devel-32bit-2021.2.0 +Filename: pool/main/intel-oneapi-mkl-devel-32bit-2021.2.0-296_amd64.deb +Size: 1676 +MD5sum: e10b383128c0f8c1d65c374f1df4bd21 +SHA1: 2c16afbd69958a60d5423ea968154064525134c8 +SHA256: 3422233f6514af24d7bbb34a8eb197a409c30e63bf8ff362bfb77fe06cb7c530 +SHA512: 3cdfa557333e3082315e06f54949fa959074bbb28f49c65dcca367f3c292553baa28540fab3b58080bf3518be4f827e9c85ddd12e7113ca2a6ad1859c1e2a027 +Description: Intel® oneAPI Math Kernel Library 2021.2.0 for Linux* development package for IA-32 + + +Package: intel-oneapi-mkl-devel-32bit-2021.3.0 +Architecture: amd64 +Version: 2021.3.0-520 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 598235 +Depends: intel-oneapi-mkl-32bit-2021.3.0, intel-oneapi-mkl-common-devel-2021.3.0, intel-oneapi-condaindex (>= 2021.3.0-159), intel-oneapi-common-vars (>= 2021.3.0-261), intel-oneapi-common-licensing-2021.3.0 +Filename: pool/main/intel-oneapi-mkl-devel-32bit-2021.3.0-2021.3.0-520_amd64.deb +Size: 69230352 +MD5sum: 892caeef0c2a4ad1989c6023cc60ff3c +SHA1: 7178500d47c3bbb83e18178b338a9d9587989b87 +SHA256: 68e53cb085e786c8ef214a931f6cddd5759d4c95206f61ce3f84355daff5863b +SHA512: 4b8d7e6a5f20e60556c71e0c682cf975cbb5895d057ff7c1a90b86884f9c38c3ca9ce4d9cc18b89bb785ae494ec354e9da167dbcd91126927d7a2d9283db30f2 +Description: Intel® oneAPI Math Kernel Library 2021.3.0 for Linux* development package for IA-32 + + +Package: intel-oneapi-mkl-devel-32bit +Architecture: amd64 +Version: 2021.3.0-520 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-mkl-devel-32bit-2021.3.0 +Filename: pool/main/intel-oneapi-mkl-devel-32bit-2021.3.0-520_amd64.deb +Size: 1676 +MD5sum: 218d1780b86c876f59f92bfd7d2cfc8f +SHA1: f849ee776fd48806887c5e0d4dae1dbce90adc86 +SHA256: f63a8f29bab10b012f286b5b65589694e50074eeb900fa06157b7789180854bc +SHA512: d93d4fca71d3f176ea057d5b2de0273d4b021735c6b7dfbeb31d00fb50d936ae531d31ddbac880c380054749a4ece204a9f8ff78dcf010f6fb8735875ab9f612 +Description: Intel® oneAPI Math Kernel Library 2021.3.0 for Linux* development package for IA-32 + + +Package: intel-oneapi-mkl-devel-32bit-2021.4.0 +Architecture: amd64 +Version: 2021.4.0-640 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 602121 +Depends: intel-oneapi-mkl-32bit-2021.4.0, intel-oneapi-mkl-common-devel-2021.4.0, intel-oneapi-condaindex (>= 2021.4.0-207), intel-oneapi-common-vars (>= 2021.4.0-327), intel-oneapi-common-licensing-2021.4.0 +Filename: pool/main/intel-oneapi-mkl-devel-32bit-2021.4.0-2021.4.0-640_amd64.deb +Size: 69827214 +MD5sum: 20ca98b01f8b366aa0a87d7f4b5ea9df +SHA1: c200bab555c3b0d45587295e3a5af56b4dc5b845 +SHA256: 78c4679abbf558298a46d436e6c781db0a16dad8f7ff279cb7d30a4a34c2de03 +SHA512: 53d5cf5b15878273baa1c13f18bc04666cb1ce64aed4b577d264744763ccaedf85824b0ae3485faec7a435406ee92f227a63919fbd985de6925e4e5933ec5ffd +Description: Intel® oneAPI Math Kernel Library 2021.4.0 for Linux* development package for IA-32 + + +Package: intel-oneapi-mkl-devel-32bit +Architecture: amd64 +Version: 2021.4.0-640 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-mkl-devel-32bit-2021.4.0 +Filename: pool/main/intel-oneapi-mkl-devel-32bit-2021.4.0-640_amd64.deb +Size: 1678 +MD5sum: 6caa1b61c6ec3ca01433d45a72f95b27 +SHA1: f0bab6c6b859b0d034716ad0b7adffc6842a1726 +SHA256: b0f869c3fecc9e83ef62af835e6fceec22040a6714f7431433a0e1ed7eebe811 +SHA512: 97d3f7d67b5f8cccaaf66652b7689d2c0590531cb626ea92a68ef2c26219f7f6185dcca39dda7b76e977934c8cb3e04b3db321dff69dd0b02a53c296cf20cde6 +Description: Intel® oneAPI Math Kernel Library 2021.4.0 for Linux* development package for IA-32 + + +Package: intel-oneapi-mkl-devel-32bit +Architecture: amd64 +Version: 2022.0.1-117 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-mkl-devel-32bit-2022.0.1 +Filename: pool/main/intel-oneapi-mkl-devel-32bit-2022.0.1-117_amd64.deb +Size: 1676 +MD5sum: c365dc19a70972887f100dcee917fb58 +SHA1: 03c30372847d17c998ab3e9c607363b04cffc89a +SHA256: 561cd3ce435b365c74accffc449cdcb4b5e5d42f38b8214f7e4a8e1e591642b7 +SHA512: 7104427110cc6b114399d8433ef7af16fe255d068e818ccd5a26b7e9a36c640147a64ad097b146a05e6ea379cf42f63a62000df50e14a8601721dff6e56a9b4a +Description: Intel® oneAPI Math Kernel Library 2022.0.1 for Linux* development package for IA-32 + + +Package: intel-oneapi-mkl-devel-32bit-2022.0.1 +Architecture: amd64 +Version: 2022.0.1-117 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 602240 +Depends: intel-oneapi-mkl-32bit-2022.0.1, intel-oneapi-mkl-common-devel-2022.0.1, intel-oneapi-condaindex (>= 2022.0.0-74), intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-mkl-devel-32bit-2022.0.1-2022.0.1-117_amd64.deb +Size: 69834048 +MD5sum: e372d9900b130f06a67e9c11749cdfd8 +SHA1: bce2839a5fff2f1e252a829f2bfb7308b9e22ae8 +SHA256: fe445b4fac0dae7da4a5307d090f47dbe342e1ab3111dc1b1c9552945f77ecb4 +SHA512: 98e346e2081922bf02b72f89f1c0e72276580ce31c8327ae35b01fe958769f3001f7face8a8a3791b8b7e8b1b7c65acc7439e93538e472469a91e752e7433198 +Description: Intel® oneAPI Math Kernel Library 2022.0.1 for Linux* development package for IA-32 + + +Package: intel-oneapi-mkl-devel-32bit +Architecture: amd64 +Version: 2022.0.2-136 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-mkl-devel-32bit-2022.0.2 +Filename: pool/main/intel-oneapi-mkl-devel-32bit-2022.0.2-136_amd64.deb +Size: 1676 +MD5sum: 236fb88c5722f58c08f92154d647e0cf +SHA1: a42ee31dd353bfeb0ad183b834300b5ccf0a1cf0 +SHA256: 31981b26224f5503df1ef33c17dd307c5cd8d76c2b14e506be82b548f5e08eeb +SHA512: 2e2b96d0f8ddf69281f6c1688fa0c5b65e7579e45831f88f42b018b8efd102781b4f673331092e48bf90a6b7d0b839ea46ce52a53d6bac016db9ed3e4b71ea01 +Description: Intel® oneAPI Math Kernel Library 2022.0.2 for Linux* development package for IA-32 + + +Package: intel-oneapi-mkl-devel-32bit-2022.0.2 +Architecture: amd64 +Version: 2022.0.2-136 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 602240 +Depends: intel-oneapi-mkl-32bit-2022.0.2, intel-oneapi-mkl-common-devel-2022.0.2, intel-oneapi-condaindex (>= 2022.0.0-74), intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-mkl-devel-32bit-2022.0.2-2022.0.2-136_amd64.deb +Size: 69824842 +MD5sum: cb295570f7a3c465b499c06bab6350cc +SHA1: a6b396ef070ef710e4b74deb93cbdbb4f7da2d29 +SHA256: 1d7bd9ec070806d794d10990f1b80bcc5ad5e7bd7410d6053f32891e55af383b +SHA512: 2ad445b137e51cfc2670a5e54bcd8cd97dabfb7bcf3621cc2f43802091056c44397c20fb6901df5cbe168bd64ed6a3a16a3ad0a29be564774231fa1de8eb5c57 +Description: Intel® oneAPI Math Kernel Library 2022.0.2 for Linux* development package for IA-32 + + +Package: intel-oneapi-mkl-devel-32bit-2022.1.0 +Architecture: amd64 +Version: 2022.1.0-223 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 602761 +Depends: intel-oneapi-mkl-32bit-2022.1.0, intel-oneapi-mkl-common-devel-2022.1.0, intel-oneapi-condaindex (>= 2022.1.0-155), intel-oneapi-common-vars (>= 2022.1.0-161), intel-oneapi-common-licensing-2022.1.0 +Filename: pool/main/intel-oneapi-mkl-devel-32bit-2022.1.0-2022.1.0-223_amd64.deb +Size: 72856706 +MD5sum: 2b98bfb76955b91545a48e5596b1a384 +SHA1: 65405159cf796b12e1897ccd813391ea3e2d547f +SHA256: 5f622d1a963ce88edcfab62b24afef8b5b570455c955a5ef9dcd773b652daf90 +SHA512: 6e6a28d5658b7dac91565bd80e8960627718fc241c936345d90c672b1e84aed4c907dd3970927fe3c4a0f7b6306646e07e2e2dc84988f8c7ba5d0daff88a88d8 +Description: Intel® oneAPI Math Kernel Library 2022.1.0 for Linux* development package for IA-32 + + +Package: intel-oneapi-mkl-devel-32bit +Architecture: amd64 +Version: 2022.1.0-223 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-mkl-devel-32bit-2022.1.0 +Filename: pool/main/intel-oneapi-mkl-devel-32bit-2022.1.0-223_amd64.deb +Size: 2328 +MD5sum: 2f6864277f6c1af31e898d4ad395725c +SHA1: 3eb1fe717e38c404553108a401f2c2be15740497 +SHA256: b5114c222e45841abe387c603d618ddb34020e1a39d724bf5cf4cff4f2e7e5c6 +SHA512: 8851197d268511bb47ce033f74d88b8a522447f2bc6244602efcf78758dfd8349ffdb2193f086f030b739b055c2c9bf3308637dfb9653779714248957f57e3ef +Description: Intel® oneAPI Math Kernel Library 2022.1.0 for Linux* development package for IA-32 + + +Package: intel-oneapi-mkl-devel-32bit-2022.2.0 +Architecture: amd64 +Version: 2022.2.0-8748 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 603685 +Depends: intel-oneapi-mkl-32bit-2022.2.0, intel-oneapi-mkl-common-devel-2022.2.0, intel-oneapi-condaindex (>= 2022.2.0-8695), intel-oneapi-common-vars (>= 2022.2.0-8694), intel-oneapi-common-licensing-2022.2.0 +Filename: pool/main/intel-oneapi-mkl-devel-32bit-2022.2.0-2022.2.0-8748_amd64.deb +Size: 72738142 +MD5sum: 985674b9773b599c918a167b8506dbb7 +SHA1: 93999c3f715c958213ff0c2a1bc48852c87de4d0 +SHA256: 84ed7e0ae031d9c266e6a5c21339b752953adb192618ade77663e6895bfda723 +SHA512: ad4b160c12ab5d55d8efa40d2f554264f12ff500c53a1c9077fdfb53661a74c6f2436f495e842786bb55346d7276654021d367b21800b2cd192e8008ef3f98c3 +Description: Intel® oneAPI Math Kernel Library 2022.2.0 for Linux* development package for IA-32 + + +Package: intel-oneapi-mkl-devel-32bit +Architecture: amd64 +Version: 2022.2.0-8748 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-mkl-devel-32bit-2022.2.0 +Filename: pool/main/intel-oneapi-mkl-devel-32bit-2022.2.0-8748_amd64.deb +Size: 2324 +MD5sum: 436e1996be9be20c325efc3025b4645b +SHA1: d1538c245902524062178b0faa6a0c9fe64b14c8 +SHA256: 324385c2695c0b9067c286bc81ddcccbf020241bde337b4be1c6b80e471ba6b7 +SHA512: 96933670dd0891408f19549ddad07645e756c20f160e56a44e583d79554ca333cd3771e9c153284dfadf2510d33a305620778a194bc7e6491717251c12745173 +Description: Intel® oneAPI Math Kernel Library 2022.2.0 for Linux* development package for IA-32 + + +Package: intel-oneapi-mkl-devel-32bit +Architecture: amd64 +Version: 2022.2.1-16993 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-mkl-devel-32bit-2022.2.1 +Filename: pool/main/intel-oneapi-mkl-devel-32bit-2022.2.1-16993_amd64.deb +Size: 2328 +MD5sum: 786b412ee58db4e9b3448ec26413b06d +SHA1: 50ea9eee12d5c3ccff496a492d016900f67d7479 +SHA256: 65424497ddafbd55671305b507ed61d02814da799c830978d3d67abc5e4d431b +SHA512: 9f1e82d1bd6911f42b612297c37d9ed6b0cbbffebcdd2ff2682466b50dc6dac22ccdee8f946b8a968d192a9779602393bd4504fe421375be5db054699072cabb +Description: Intel® oneAPI Math Kernel Library 2022.2.1 for Linux* development package for IA-32 + + +Package: intel-oneapi-mkl-devel-32bit-2022.2.1 +Architecture: amd64 +Version: 2022.2.1-16993 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 603685 +Depends: intel-oneapi-mkl-32bit-2022.2.1, intel-oneapi-mkl-common-devel-2022.2.1, intel-oneapi-condaindex (>= 2022.2.1-14970), intel-oneapi-common-vars (>= 2022.2.1-14969), intel-oneapi-common-licensing-2022.2.1 +Filename: pool/main/intel-oneapi-mkl-devel-32bit-2022.2.1-2022.2.1-16993_amd64.deb +Size: 72740122 +MD5sum: 5538a88055ca0d753d94cd18b5c59259 +SHA1: 653bd978a091b84ba52bbd697d48de2b91277772 +SHA256: fbd1e03ffc8c09eff795236ac124d4bb86c27b504e7afaa2ed823d42caec72fe +SHA512: 490b73cb6cd8d155280e294944d13367c37ea41cd126453bcc0fcc69ff46bb48f4033e567a8b2114e6f952f0bab82937524ebce29bb7c9c4a9b45e35fa004dee +Description: Intel® oneAPI Math Kernel Library 2022.2.1 for Linux* development package for IA-32 + + +Package: intel-oneapi-mkl-devel-32bit-2023.0.0 +Architecture: amd64 +Version: 2023.0.0-25398 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 604229 +Depends: intel-oneapi-mkl-32bit-2023.0.0, intel-oneapi-mkl-common-devel-2023.0.0, intel-oneapi-condaindex (>= 2023.0.0-25326), intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing-2023.0.0 +Filename: pool/main/intel-oneapi-mkl-devel-32bit-2023.0.0-2023.0.0-25398_amd64.deb +Size: 72715690 +MD5sum: 2d17147473eabb62cff45ea23bc7debf +SHA1: 0cb6552e04eb3ac0a7432f2271f5b43543ba611a +SHA256: d13390b75a495af2cf410623e66fc4f019845b5b7c7834a592358b7ecbfc02a2 +SHA512: fd28f6475b2861a38d2b0d60babfadf8ea49bbf67764c3357f6aef3ca41335c0e30aa691321aa9d8de78cdd1313f9a242231d0f594e96d303af120683d2c8590 +Description: Intel® oneAPI Math Kernel Library 2023.0.0 for Linux* development package for IA-32 + + +Package: intel-oneapi-mkl-devel-32bit +Architecture: amd64 +Version: 2023.0.0-25398 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-mkl-devel-32bit-2023.0.0 +Filename: pool/main/intel-oneapi-mkl-devel-32bit-2023.0.0-25398_amd64.deb +Size: 2324 +MD5sum: a4674b3557bd3983627dc601c9a6befd +SHA1: 3115ab83897bb3e72911bca3c73933ef89ca149b +SHA256: 88cd68fc6fc0423761abf33b947234c1c28a996fded71ed74d4619407ff69191 +SHA512: f6e93d36af2d49e8a5408bbd2029bb38ecfb73bdd8805a253cf6d409e405f5b9568d849743502c5589611fca8af7bcd8b9b0bd2ab71afab95ec0c517d9e3c151 +Description: Intel® oneAPI Math Kernel Library 2023.0.0 for Linux* development package for IA-32 + + +Package: intel-oneapi-mkl-devel-32bit-2023.1.0 +Architecture: amd64 +Version: 2023.1.0-46342 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 603585 +Depends: intel-oneapi-mkl-32bit-2023.1.0, intel-oneapi-mkl-common-devel-2023.1.0, intel-oneapi-condaindex (>= 2023.1.0-43291), intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing-2023.1.0 +Filename: pool/main/intel-oneapi-mkl-devel-32bit-2023.1.0-2023.1.0-46342_amd64.deb +Size: 72768330 +MD5sum: 5d0869d2223e86b2f9460935bed77a12 +SHA1: 6bae61fae1a7b1430ed1d525e69332fb628a26ca +SHA256: 534b50c75071479f246f81958c4dfc07f55f0304b70b94c9a0b45e936bb9258e +SHA512: c03a5912a261aa412cb5ce327da7f0c5f93640267e6520296565022f515eead423ec38816c4fce82a660edc204e284db9c35f4629ddc3404431653a04bad109e +Description: Intel® oneAPI Math Kernel Library 2023.1.0 for Linux* development package for IA-32 + + +Package: intel-oneapi-mkl-devel-32bit +Architecture: amd64 +Version: 2023.1.0-46342 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-mkl-devel-32bit-2023.1.0 +Filename: pool/main/intel-oneapi-mkl-devel-32bit-2023.1.0-46342_amd64.deb +Size: 2324 +MD5sum: 9a2297ea09f501f39ea532d94003b40f +SHA1: 2c56a334d1b21b832e5ca46f97e7c2dae8d256c0 +SHA256: 155e6e5c33dc19cc1a9bd670a344dac21c98f03e77454748a8be3e2ea5993bae +SHA512: f2f524cdd71b9d0cbe54e1bb3b36213e3eb2e676f3dc7166e7bb527122a4a9242a5b83e13d5b3b4c1d21fc9b5e5b588ceb7bf8ad5cbba622cbf2b1cc9e50a279 +Description: Intel® oneAPI Math Kernel Library 2023.1.0 for Linux* development package for IA-32 + + +Package: intel-oneapi-model-zoo +Architecture: amd64 +Version: 1.8.0-204 +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 15830 +Depends: intel-oneapi-common-vars,intel-oneapi-common-licensing +Filename: pool/main/intel-oneapi-model-zoo-1.8.0-204_amd64.deb +Size: 3218318 +MD5sum: 1586069393ccc578f5815f7c37093472 +SHA1: 91921681a9c8245ece352d337944d1825e555370 +SHA256: f83c432d4dad8b9a535fb700bd32f1fc82ab5badd5a75b55b1d16bd8270ab54b +SHA512: 018bf2072d4208f048e49b463592094dc92e652ff053b7fd6165f2447391e8e19690e0d8260a4a298c1373c099b5b52bd20f6455877bcc285c6216a0c800ee75 +Description: Model Zoo + + +Package: intel-oneapi-model-zoo +Architecture: amd64 +Version: 2.2.0-287 +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 19079 +Depends: intel-oneapi-common-vars (>= 2021.2.0-195), intel-oneapi-common-licensing-2021.2.0 +Filename: pool/main/intel-oneapi-model-zoo-2.2.0-287_amd64.deb +Size: 3576158 +MD5sum: 987b0bfea2560afc8f5a3e2d4708e986 +SHA1: fd533820b52c943b293c0f00545599973f7bc094 +SHA256: 09a76cc9f50e4cca087e12bd4e304f17ea837b3eee0c7f1942d12c7e40d618fd +SHA512: 812624799798c0fb7c59187df2897625844c3f161fd84d56ab68923163ec59fbbc29526946b7398c1253a68d730293d4c99a1d0cf3690025e723122f1af939ff +Description: Model Zoo + + +Package: intel-oneapi-model-zoo +Architecture: amd64 +Version: 2.4.0-344 +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 23553 +Depends: intel-oneapi-common-vars (>= 2021.3.0-261), intel-oneapi-common-licensing-2021.3.0 +Filename: pool/main/intel-oneapi-model-zoo-2.4.0-344_amd64.deb +Size: 4427028 +MD5sum: fe3662f15b86b1f0cb14ee85ed93a23c +SHA1: f58b2a74e8eb16adffed6182bd003ffac6c86236 +SHA256: 194222adda9ec4f777375f9bd6b6ee66e63c74288fb4242602ec685323942e08 +SHA512: b07b20c063a26b816cf349bfd4e8a4f1ebc18b22cccc67bcb0ad17ede502d67dce3d099513ba619e2761415c5043b893f13ad85b998da23b8c0907b585519903 +Description: Model Zoo + + +Package: intel-oneapi-model-zoo +Architecture: amd64 +Version: 2.4.0-417 +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 23917 +Depends: intel-oneapi-common-vars (>= 2021.4.0-327), intel-oneapi-common-licensing-2021.4.0 +Filename: pool/main/intel-oneapi-model-zoo-2.4.0-417_amd64.deb +Size: 4438574 +MD5sum: fb937d8c408e6e75f3a7975bac1e0969 +SHA1: ea1705a3725dc164d1c2ac704013e96bbf00dd8d +SHA256: 37b10db0b54a127f08906988e342edc9f2b851c30d3cd9aa227b665422eea054 +SHA512: e7cc9bbf774305aaacfaa4ee0d8336dafdee48531188610f234443e57cc0ab37bb25072969de50658c6570d7ae3ce9c97ceaca8df6e71385177ac1e38cbd2a7f +Description: Model Zoo + + +Package: intel-oneapi-model-zoo +Architecture: amd64 +Version: 2.5.0-146 +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 42554 +Depends: intel-oneapi-common-vars (>= 2022.1.0-161), intel-oneapi-common-licensing-2022.1.0 +Filename: pool/main/intel-oneapi-model-zoo-2.5.0-146_amd64.deb +Size: 7605588 +MD5sum: f1ddd39a4fc43985ffbd39b1b6e4dc05 +SHA1: 78f7de427113f52e1637fef60040cdbdbc8ddb2f +SHA256: cb848018f2356324b9348cd40a93e7cc8910985ad5e223fa2afd2b7d64ade30f +SHA512: 452d7c1d95b267d4ce2e6a320c59b28358ae6b49aafdde390a9cc03a81635675e1503089113e16bf118ded0a4182a307a366b371c40cdcd4202c1e774bf3c5c9 +Description: Model Zoo + + +Package: intel-oneapi-model-zoo +Architecture: amd64 +Version: 2.5.0-63 +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 24564 +Depends: intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-model-zoo-2.5.0-63_amd64.deb +Size: 4484024 +MD5sum: 05b9948a888c03832e497fc616af3ef2 +SHA1: 51b2df314a99e2d20e4409a8e2e40e665606fb4b +SHA256: a92307d7e67dc00bb9a881094611b35aea95b40210207d8e2d7ba7d3f11cdaf2 +SHA512: b8328ea8f72c63c100329b715b11029bb33d34a2240721adf46b429544f7570cb44ed8e670380f4b610ebb7086539549c9239d0ef8e498d314824b2023fe3026 +Description: Model Zoo + + +Package: intel-oneapi-model-zoo +Architecture: amd64 +Version: 2.8.0-20880 +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 71931 +Depends: intel-oneapi-common-vars (>= 2022.2.1-14969), intel-oneapi-common-licensing-2022.2.1 +Filename: pool/main/intel-oneapi-model-zoo-2.8.0-20880_amd64.deb +Size: 8270168 +MD5sum: b7c7a9be4678b4f9992e4b0f49d680b4 +SHA1: 6a38cc89c3287bc2c354f42c642ec3555156fefb +SHA256: dc821d9d53b67571c34bf507e4748bfa7d702a337106dd3bdd39fe9800be0510 +SHA512: 58ae4fd1741951fc1142313df01b7f8c1d522662aa00191ea442e261fde4918bf060502e17f312b7499f104172987f0cc2ff4ffead0723d63e0fcc2cd897ac1f +Description: Model Zoo + + +Package: intel-oneapi-model-zoo +Architecture: amd64 +Version: 2.8.0-25330 +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 71559 +Depends: intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing-2023.0.0 +Filename: pool/main/intel-oneapi-model-zoo-2.8.0-25330_amd64.deb +Size: 8205100 +MD5sum: 73263ff1da50376c0b12fa65519528af +SHA1: f27775409865d262563503d1f33b33110240c41f +SHA256: a0cb22074d485bd9d9c35cf1b6b97d02ae7811536c7679c5862210647086f771 +SHA512: 9952245c8c200af12089fedcd2b4aa6056b62efef9f20718a5c518e2130b0d1ef1920f5149e89aeca6d64060d4836fb57538b9ebcacd5e554789b51ae9c28e97 +Description: Model Zoo + + +Package: intel-oneapi-model-zoo +Architecture: amd64 +Version: 2.8.0-8699 +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 71931 +Depends: intel-oneapi-common-vars (>= 2022.2.0-8694), intel-oneapi-common-licensing-2022.2.0 +Filename: pool/main/intel-oneapi-model-zoo-2.8.0-8699_amd64.deb +Size: 8260148 +MD5sum: ec2e087a965c5e6f7ee6a565ac58e1cc +SHA1: 8cdfcfd5aaa4fcac699879e7c48dacaad5a9ecfc +SHA256: 7b3249868c5df81cc50f0f9ccb2dd784748cf549414f476267961fbe8a8bcae3 +SHA512: 927502ea8042e4b39f1d4755d7efe9fa6c2000fc55681cc3cd4e3ae5eaca7050f825507c15bc7a5f1d0cd1c3ac517fe9323209150d22a207709569be05f541f7 +Description: Model Zoo + + +Package: intel-oneapi-model-zoo +Architecture: amd64 +Version: 2.9.0-29666 +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 72443 +Depends: intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing-2023.0.0 +Filename: pool/main/intel-oneapi-model-zoo-2.9.0-29666_amd64.deb +Size: 8419292 +MD5sum: 53f4fd7c1dee03ec7e74293a5f912272 +SHA1: abeda4067e65f9f96728a45f16015c859863d732 +SHA256: aa0093cfaaebf1773ee09addebd04833338f3d2ba934b9cebaef9dd91bf8e1f9 +SHA512: 9b07e96896fdc465234ff3855cab611509d339f9f626b6a4743a7eefba9f5f8a4a3562a346b8dcd4d067d8b80b8859c05f954cdb41be4383f81288b7ddf77806 +Description: Model Zoo + + +Package: intel-oneapi-modin +Architecture: amd64 +Version: 0.13.3-20879 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 135264 +Provides: intel-oneapi-modin +Depends: intel-oneapi-condaindex (>= 2022.2.1-14970), intel-oneapi-python (>= 2022.2.1-17274), intel-oneapi-common-vars (>= 2022.2.1-14969), intel-oneapi-common-licensing-2022.2.1 +Filename: pool/main/intel-oneapi-modin-0.13.3-20879_amd64.deb +Size: 137393730 +MD5sum: 9024c44f06122af07381db57139a135d +SHA1: 9eaf087c509b69412c8806dfa7140a9c00a126f8 +SHA256: e06647c410125114229df4d8c0db3e73e0eb29cd778ea20d23ded931123e5289 +SHA512: 2705e33b77fac56cdb7db956e5d3e0beee4e77a62c1810210313cb7954ba2003f8030c2f6ac9624e45ea184f01088271b0b38f023a912893cfb8dbc543bae795 +Description: Intel® Distribution of Modin + + +Package: intel-oneapi-modin +Architecture: amd64 +Version: 0.13.3-69 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 102230 +Provides: intel-oneapi-modin +Depends: intel-oneapi-condaindex (>= 2022.1.0-155), intel-oneapi-python (>= 2022.1.0-214), intel-oneapi-common-vars (>= 2022.1.0-161), intel-oneapi-common-licensing-2022.1.0 +Filename: pool/main/intel-oneapi-modin-0.13.3-69_amd64.deb +Size: 103839130 +MD5sum: 75f0b5442bfdcddb47d67d459e51545e +SHA1: cf9d29fc796a999d7ecbb1f7c24f3d026eeadbee +SHA256: 4b4e06f5e4cf1421a6f5fba4ca62e3d6da4dbad74b91af79320df4a7bb39bce6 +SHA512: d494c806ff1f04d51fdd2e496e06eddf4dcf2ec4931353da4d7d01bed153814c58a551eb9d298549e06552c66cbf8899ea55a5e422f2001a8b5ca6c8c4fac0b0 +Description: Intel® Distribution of Modin + + +Package: intel-oneapi-modin +Architecture: amd64 +Version: 0.13.3-8765 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 135264 +Provides: intel-oneapi-modin +Depends: intel-oneapi-condaindex (>= 2022.2.0-8695), intel-oneapi-python (>= 2022.2.0-8762), intel-oneapi-common-vars (>= 2022.2.0-8694), intel-oneapi-common-licensing-2022.2.0 +Filename: pool/main/intel-oneapi-modin-0.13.3-8765_amd64.deb +Size: 137393650 +MD5sum: c16e4b7381dab77cc2633fa4d3edc4ce +SHA1: cc8e4bbce537eb283e9c4210d6195ac7a4e7b446 +SHA256: 89242ed696a2292b0b6330572512b18354dfc81f8bda4b41e176ea80f6d65fc4 +SHA512: 195f0ecd7e61eb75413d42933492dfacd8de9e97af0a793d7aa8d58f719fee88684ac6a9ef1b59a446d44ea5e90dba2ac8d893d133d2b7bbc3f35532acceb989 +Description: Intel® Distribution of Modin + + +Package: intel-oneapi-modin +Architecture: amd64 +Version: 0.17.0-26095 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 135266 +Provides: intel-oneapi-modin +Depends: intel-oneapi-condaindex (>= 2023.0.0-25326), intel-oneapi-python (>= 2023.0.0-25636), intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing-2023.0.0 +Filename: pool/main/intel-oneapi-modin-0.17.0-26095_amd64.deb +Size: 137675730 +MD5sum: 06f4e33d39d67797b5d51d7846719fc7 +SHA1: c8b862cbae6ab9e4a83601ce2059d83302deaa59 +SHA256: b94bbdab52ac6bdaad93d90a6fd2d286acf7ad82780e761b0ec202a073068af4 +SHA512: e116903252885d357ded1b28c5bb59f9c718ad6e7faeff701de2b8da4a3ac0c7c9a0b30771ddc0df042904a7f187bade6e58c98ceb133f0585a68ca184c1b66c +Description: Intel® Distribution of Modin + + +Package: intel-oneapi-modin +Architecture: amd64 +Version: 0.17.0.1-31755 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 130557 +Provides: intel-oneapi-modin +Depends: intel-oneapi-condaindex (>= 2023.0.0-25326), intel-oneapi-python (>= 2023.0.0-25636), intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing-2023.0.0 +Filename: pool/main/intel-oneapi-modin-0.17.0.1-31755_amd64.deb +Size: 132842490 +MD5sum: fb71a77db48b7a01b34cdabdd4921e16 +SHA1: ce9412a02f419b2a13f2671c5e197774d2e8e774 +SHA256: c57b68c4d58120efd9824bdecbd9ad239cbcdca872e8949f965b97472a4904b3 +SHA512: 1dda20c06f36505da802fd3226c15ed38e2cd7e9c5a89ec08c7fd72e46949f61ce6f570488a7f5e61c409563768a1deb8b7e8dc0fcd1730ed625ee7452d0d743 +Description: Intel® Distribution of Modin + + +Package: intel-oneapi-mpi-2021.1.1 +Architecture: amd64 +Version: 2021.1.1-76 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 70711 +Depends: intel-oneapi-condaindex,intel-oneapi-common-vars,intel-oneapi-common-licensing +Filename: pool/main/intel-oneapi-mpi-2021.1.1-2021.1.1-76_amd64.deb +Size: 20716634 +MD5sum: 80e03a228c75543165766d66b410c19b +SHA1: 7b6a0ca9d90e3ba6675a0f7c8767a7eea5d7307f +SHA256: 3f6a4b589495abc6408804610a892efe77f04e4e86bdc60f2df38c2aabea455e +SHA512: 3ba35917ab4dbe72b7fbc4acf49e97b884c47ece1bb3fa185b548c4ca0c6254fac4e6987a72dff3a03bae3ec14d6851b8433aaa17b353c662297abadf78bbe95 +Description: Intel® MPI Library Runtime Environment + + +Package: intel-oneapi-mpi +Architecture: amd64 +Version: 2021.1.1-76 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-mpi-2021.1.1 +Filename: pool/main/intel-oneapi-mpi-2021.1.1-76_amd64.deb +Size: 1650 +MD5sum: 90b6c6f27c6bbe2e74852fb4209c50a5 +SHA1: b958a121f686749356b49471a99aaa7cdfbe6a55 +SHA256: cf0ef866c7173d3fc77b7723de5add16316a350c88b58ccd192250b80c2887d7 +SHA512: d55694755c1fda8b6fcc1dbded0188dc3eb1b5604c36a5a787e0d40bddd30041ca0b142676d47b34c7d41369da600b5eed398b515483b61f3aecd376ac743cd4 +Description: Intel® MPI Library Runtime Environment + + +Package: intel-oneapi-mpi-2021.2.0 +Architecture: amd64 +Version: 2021.2.0-215 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 85777 +Depends: intel-oneapi-condaindex (>= 2021.2.0-94), intel-oneapi-common-vars (>= 2021.2.0-195), intel-oneapi-common-licensing-2021.2.0 +Filename: pool/main/intel-oneapi-mpi-2021.2.0-2021.2.0-215_amd64.deb +Size: 29051086 +MD5sum: 4e3c321d170d22688b89ad85c56ed6d5 +SHA1: 932ef4468fa537f3f81cce76b73e5c901297ea96 +SHA256: 993ccb5b7420fccd03bcd20ca60f54eeba54bfb7fb8841313922db212849f98f +SHA512: 50422d53a9a98cb7ae3443230ba16c7dc4fa73077baaad119217678d8e0f417d24acd400c6c2bdd3d8f69a125b655cc1534390a592c2b97e682937f22d2e1b72 +Description: Intel® MPI Library Runtime Environment + + +Package: intel-oneapi-mpi +Architecture: amd64 +Version: 2021.2.0-215 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-mpi-2021.2.0 +Filename: pool/main/intel-oneapi-mpi-2021.2.0-215_amd64.deb +Size: 1646 +MD5sum: e6d22449549fa900f70d70b2bc4ba6a3 +SHA1: dc71447023e2bae6f161001119da93528153b8a5 +SHA256: 9489d190491bcaeec037e7158a32ab45373e5e9ea805281b60f9881921880567 +SHA512: 7cec352fa27144538763999b6c4e2651de6f5d212ef833aa76bd736d4a18a966cdec79cbfffb51fbac0fb0119f2d6ce1ca83b1bed4bbcf31d835a31973d3c11d +Description: Intel® MPI Library Runtime Environment + + +Package: intel-oneapi-mpi-2021.3.0 +Architecture: amd64 +Version: 2021.3.0-294 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 86081 +Depends: intel-oneapi-condaindex (>= 2021.3.0-159), intel-oneapi-common-vars (>= 2021.3.0-261), intel-oneapi-common-licensing-2021.3.0 +Filename: pool/main/intel-oneapi-mpi-2021.3.0-2021.3.0-294_amd64.deb +Size: 21909170 +MD5sum: b689655f83d0689611e82cc143e61d2f +SHA1: a98cfcda5577047af427975ae562301e12711c68 +SHA256: ef56d11bfea7c070d70610e06ec24ac63bd350b937410b9499572167d732c38b +SHA512: 7ad535bd2836e7d7fe9d331317eb59314564627fa9c6e8fa5a24e23c6287c94bcf9acb563303aa1005712843bf4e30e37c087e92fc62ba130ad824ec9d1827e4 +Description: Intel® MPI Library Runtime Environment + + +Package: intel-oneapi-mpi +Architecture: amd64 +Version: 2021.3.0-294 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-mpi-2021.3.0 +Filename: pool/main/intel-oneapi-mpi-2021.3.0-294_amd64.deb +Size: 1646 +MD5sum: 22a4674fccec3aabe952910b98ff3c86 +SHA1: 90649e633c3883525b916bcca2767d7454cfa5dd +SHA256: 50ff741395dc72dceef0cbaa5c67815efe2d5b2babad7eb538b0ec74b8c3f5a5 +SHA512: 524b360a031a6e28a0264dfae226516532a8bf7f5aad903890167262df65f951e4dd20da791beb18d332dbed63f6f3c3fedda90d04fce0bc9c8d3554906cba0f +Description: Intel® MPI Library Runtime Environment + + +Package: intel-oneapi-mpi-2021.3.1 +Architecture: amd64 +Version: 2021.3.1-315 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 86469 +Depends: intel-oneapi-condaindex (>= 2021.3.0-159), intel-oneapi-common-vars (>= 2021.3.0-261), intel-oneapi-common-licensing-2021.3.0 +Filename: pool/main/intel-oneapi-mpi-2021.3.1-2021.3.1-315_amd64.deb +Size: 21927500 +MD5sum: 8f9d84a009d29b4cda02ffc149a142f2 +SHA1: c3a5cdc1579e4a8e516d9a5efcd94306093e0b7a +SHA256: 33697781142cf4ad3a07b68eb64826d20eb5ab7bfd57d991bd7db32c1b600987 +SHA512: cab678bff13b1264c817b0b0c027878868901c26a5a18c700d5e2d454ad7f207ef960760e5549201bfa4586ba6759308a03138633b04cdf45346276116bee5bf +Description: Intel® MPI Library Runtime Environment + + +Package: intel-oneapi-mpi +Architecture: amd64 +Version: 2021.3.1-315 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-mpi-2021.3.1 +Filename: pool/main/intel-oneapi-mpi-2021.3.1-315_amd64.deb +Size: 1644 +MD5sum: 4af01176178f790a383b1ccf696df749 +SHA1: 61982d0fed8911d43e05b5e00b1a1f5781d5b6fa +SHA256: 69e57459d17cca3769f2644e51ee735c4deb9d2d66d343d6232df2cded7b6d30 +SHA512: ab586651ce8441a263fcb5263a9d9ece9d6182b7f4e2616ae16c9573ac82735055bfd8ea1ae228d1a3e1e892e587504932e404e88dad097461db49c78e62a673 +Description: Intel® MPI Library Runtime Environment + + +Package: intel-oneapi-mpi-2021.4.0 +Architecture: amd64 +Version: 2021.4.0-441 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 88029 +Depends: intel-oneapi-condaindex (>= 2021.4.0-207), intel-oneapi-common-vars (>= 2021.4.0-327), intel-oneapi-common-licensing-2021.4.0 +Filename: pool/main/intel-oneapi-mpi-2021.4.0-2021.4.0-441_amd64.deb +Size: 32344326 +MD5sum: 44e254c73acf307749847bc740e6d15f +SHA1: dceb5aabfe15b2609fc7b28014dd477afa0d9f00 +SHA256: 4baf57efb2aae246b027310ba319a7491f18df05c99177d115dee5cd6f4f74dc +SHA512: d7a9ab40accf350f37eb5cb2736c9e187471c0fa09af5aee84d0da3d0de43095a70649c2113e7b8e1a4b353e6a5f776552547459c43320dff3543a27250f01d5 +Description: Intel® MPI Library Runtime Environment + + +Package: intel-oneapi-mpi +Architecture: amd64 +Version: 2021.4.0-441 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-mpi-2021.4.0 +Filename: pool/main/intel-oneapi-mpi-2021.4.0-441_amd64.deb +Size: 1646 +MD5sum: 1ed6bea65c3b3d291f57480838fe2acd +SHA1: 25fb78c33cc6c1c3a181919c3ae8d14157b18ec0 +SHA256: d08c429e9cc32d0e7b1ddde43771a702c57df70d8e5d72e0bcc1d881a5e8979f +SHA512: ea6a5508deb50d2668de4d4b319f5afa72b3506f9d2e9501bdbdebcfd5b6e4a1831b76dbf28a75e22e33b29554422dd7ac9fbf9a5086ac84046d3e7547e14d54 +Description: Intel® MPI Library Runtime Environment + + +Package: intel-oneapi-mpi-2021.5.0 +Architecture: amd64 +Version: 2021.5.0-495 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 75671 +Depends: intel-oneapi-condaindex (>= 2022.0.0-74), intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-mpi-2021.5.0-2021.5.0-495_amd64.deb +Size: 30153216 +MD5sum: eaef06dde549cb0f073b17fb39abb0eb +SHA1: 74ff0c3827cd378d74165b3e22a80f0c22742102 +SHA256: 6bdfc3f3ac0a2864233c5cedfd73fc265fef067cadec940973ed22fdfdbffade +SHA512: f1ab62b46730d37b96afec2b86c083c1cda1053fbb56108797cf8349b4789e93d8bd21be1fed5791d4fed0f0663907a1f9a87dd9544684aa6f76c10e26990c2f +Description: Intel® MPI Library Runtime Environment + + +Package: intel-oneapi-mpi +Architecture: amd64 +Version: 2021.5.0-495 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-mpi-2021.5.0 +Filename: pool/main/intel-oneapi-mpi-2021.5.0-495_amd64.deb +Size: 1646 +MD5sum: 09574228e084abe168767d4b47b53b02 +SHA1: 00f5ba184ce74b4b205a0ebb70dff753f266c24c +SHA256: 2495ee1e7a47c2d34091bf582615048a7959bccfa51b893723ac29832f725ce3 +SHA512: bc5337a2716badafd6c2783019a170426185e83340e8a0a5d8c45ad2ebda3461edbb2d61158b4db5af75f7d82c72a51447f2e6411c49bcdfcce2ad8de24ae239 +Description: Intel® MPI Library Runtime Environment + + +Package: intel-oneapi-mpi-2021.5.1 +Architecture: amd64 +Version: 2021.5.1-515 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 75671 +Depends: intel-oneapi-condaindex (>= 2022.0.0-74), intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-mpi-2021.5.1-2021.5.1-515_amd64.deb +Size: 30151490 +MD5sum: 84b9251cc7d6948f09b3b03ce61512e4 +SHA1: dfabe2f09f01b338038184e1ae775cf384ea2711 +SHA256: 7338207b604d0c8c7f7a9dce5287bddf487f07051fb8bb722345c1b39e788af4 +SHA512: dcbc6342fc97492778cdc2a0061bdf9248a7a045bd2e888cceeb78dabe6ee2ed2043069d1a098519e07c6f99179900e7bb41f511c412d788bc195a5ca00fe900 +Description: Intel® MPI Library Runtime Environment + + +Package: intel-oneapi-mpi +Architecture: amd64 +Version: 2021.5.1-515 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-mpi-2021.5.1 +Filename: pool/main/intel-oneapi-mpi-2021.5.1-515_amd64.deb +Size: 1644 +MD5sum: ad5d7fbd4394625f212403211f2a4aea +SHA1: 78b6c2767c53a9474cef4112f121e8130a122da8 +SHA256: 7e24bdbb6e92d289e9183c3dee3745920f2f015f4790ab79275b9cbc0a94869f +SHA512: fe318df124ad6f6e03c91300c54d88474abcd7b6823801eddcc4c2a733e89ce1f67409ec6c1604a1f86104b770519f3474a82b8cb44e1583cec110310a89d141 +Description: Intel® MPI Library Runtime Environment + + +Package: intel-oneapi-mpi-2021.6.0 +Architecture: amd64 +Version: 2021.6.0-602 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 76274 +Depends: intel-oneapi-condaindex (>= 2022.1.0-155), intel-oneapi-common-vars (>= 2022.1.0-161), intel-oneapi-common-licensing-2022.1.0 +Filename: pool/main/intel-oneapi-mpi-2021.6.0-2021.6.0-602_amd64.deb +Size: 30687882 +MD5sum: 2a3ea48206362464f6700fcb5bdacb34 +SHA1: 4318bb2a35ef8a406d828c0e7d13c99f08f71928 +SHA256: d609d3cf310e43d9adc6c1a937c19b325e19117350452c85bc0289f0e5cf20a1 +SHA512: b91ef59b61fc8522cc92f19edc4e0890c4817d08deba570a93004f5b4faceb476cdeb6ab19f5ff1ae371ee7c9ebb51e74e50b7127f4da3c827b6c6a9f8072357 +Description: Intel® MPI Library Runtime Environment + + +Package: intel-oneapi-mpi +Architecture: amd64 +Version: 2021.6.0-602 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-mpi-2021.6.0 +Filename: pool/main/intel-oneapi-mpi-2021.6.0-602_amd64.deb +Size: 1724 +MD5sum: 589db2dce9c6881c4b3714c55a70332b +SHA1: 98ddcdb8d77e500155062bddfda597e54444057a +SHA256: b9057978e65f5f20359a11e3459189e4af682b121309642c0ddcf429e5a72e60 +SHA512: 2bb1c4c338478a17f76649dfdbd5e6556736c541358e24535579b08270d4b9d8a3eaf4bdcff7a4bdf0dec1e5b42280f1f009a6a55824eb62e9773dcedbd66df2 +Description: Intel® MPI Library Runtime Environment + + +Package: intel-oneapi-mpi-2021.7.0 +Architecture: amd64 +Version: 2021.7.0-8711 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 76371 +Depends: intel-oneapi-condaindex (>= 2022.2.0-8695), intel-oneapi-common-vars (>= 2022.2.0-8694), intel-oneapi-common-licensing-2022.2.0 +Filename: pool/main/intel-oneapi-mpi-2021.7.0-2021.7.0-8711_amd64.deb +Size: 30683546 +MD5sum: e616ddab55e0bda51558cdbbe54de89a +SHA1: 79abfd9597d59c9a89a8c4ea9d19bfb39f3f0163 +SHA256: 6dece617bf8dc6cce48f384e836c50c55b1ab2319d2840c316884a98e4c86fc3 +SHA512: c3ffa8606ac093fc9fe9a0144486d5b5063741923b5f671a1e8cf1cdcbb67edcd3513f86e462ad6b865be68290f457b02adc33ddb4f453e8a92c5636547365ca +Description: Intel® MPI Library Runtime Environment + + +Package: intel-oneapi-mpi +Architecture: amd64 +Version: 2021.7.0-8711 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-mpi-2021.7.0 +Filename: pool/main/intel-oneapi-mpi-2021.7.0-8711_amd64.deb +Size: 1724 +MD5sum: 5fb9c6d31b9c0d81387989c07435a1ff +SHA1: d59af474e4912bac4040d56ac94b64ac1f5f8cf7 +SHA256: 9674802f57a0b41fa1e3f6ab4eede1934fba2a55beaf3b1fbe933324c577be86 +SHA512: 65a073f72151856accf87c80c6d93eb981633a26ac4b961fe5e07a74dfcc510113acfcdbc694ac406438603101927e986bceac5080c34133d040f778d6d2fd93 +Description: Intel® MPI Library Runtime Environment + + +Package: intel-oneapi-mpi +Architecture: amd64 +Version: 2021.7.1-16815 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-mpi-2021.7.1 +Filename: pool/main/intel-oneapi-mpi-2021.7.1-16815_amd64.deb +Size: 1728 +MD5sum: ed7c864a21467be4b19df0621532a0e2 +SHA1: 9d45f3100120dd983459040fa2efd9d7833e549a +SHA256: d17b4ea8dd249c9a4dce27588f07b841936e0bd12192604c76e1e9ca3e391949 +SHA512: b19795f7cb231f1ecedd269ebb8551b4c20ea91c8ea7d8b067635294d864764a843e77474c73cb9adebf668186b2c620af4348afa6dee6b79be71b170c0009f7 +Description: Intel® MPI Library Runtime Environment + + +Package: intel-oneapi-mpi-2021.7.1 +Architecture: amd64 +Version: 2021.7.1-16815 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 76371 +Depends: intel-oneapi-condaindex (>= 2022.2.1-14970), intel-oneapi-common-vars (>= 2022.2.1-14969), intel-oneapi-common-licensing-2022.2.1 +Filename: pool/main/intel-oneapi-mpi-2021.7.1-2021.7.1-16815_amd64.deb +Size: 30679690 +MD5sum: 6e2acaca95ffd67d9b0f85f48f70ad64 +SHA1: e403d0210ed5b9c77ed730a1c2a9dce878aaa5e5 +SHA256: 4d82f606d9985f1865ad8f7caba46c6d92cd5f79b0bd8ecfc727c8475131c075 +SHA512: acab8cc4c0632472342d9870f747a5ceb84757c75041338715246e160962dc15403be46bf19397a3495b57fc1f8823d55a0d2ad595b9de111f4f71c086f90ef6 +Description: Intel® MPI Library Runtime Environment + + +Package: intel-oneapi-mpi-2021.8.0 +Architecture: amd64 +Version: 2021.8.0-25329 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 79080 +Depends: intel-oneapi-condaindex (>= 2023.0.0-25326), intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing-2023.0.0 +Filename: pool/main/intel-oneapi-mpi-2021.8.0-2021.8.0-25329_amd64.deb +Size: 31798078 +MD5sum: af42fe5d71d5f33053ba78b988f90c34 +SHA1: 143fcd11e8e4657984eef5022feb66ea618ad2ff +SHA256: c35f6513e895f784b840d2e235abfd0ac304b69cb75f1d9c51fd5025fd4a244e +SHA512: df84c73db38f3519552d4da043659b1fe6aae5ec1cbb23f94f73399a7e786e77c324930c18bb07c97aab28abd454c6e6d9b9f974775a71a5d83495997ca8b617 +Description: Intel® MPI Library Runtime Environment + + +Package: intel-oneapi-mpi +Architecture: amd64 +Version: 2021.8.0-25329 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-mpi-2021.8.0 +Filename: pool/main/intel-oneapi-mpi-2021.8.0-25329_amd64.deb +Size: 1728 +MD5sum: 050924d7422007dc1d4e3ea5fd9484be +SHA1: cdf5d644f04acf951fe65fd8256847f95f931f95 +SHA256: 77c46a45cc0f738f4f97d9d66497c4b83279584048895adef61c75378c83aeb7 +SHA512: 23e8481e8b843779c42e71877ab9918e4e9ae5b057c63b6e13ead123b1cbebb010732a50b1ed50ed130559e9989dd6dd54c987e410a63c9ef075078078f07e1e +Description: Intel® MPI Library Runtime Environment + + +Package: intel-oneapi-mpi-2021.9.0 +Architecture: amd64 +Version: 2021.9.0-43482 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 87624 +Depends: intel-oneapi-condaindex (>= 2023.1.0-43291), intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing-2023.1.0 +Filename: pool/main/intel-oneapi-mpi-2021.9.0-2021.9.0-43482_amd64.deb +Size: 40684610 +MD5sum: d866dee4a1bc862e3436e52aca99ddd2 +SHA1: 1bc33fd9e1439f7f675277781db65930f5c04d48 +SHA256: ccef71d5992198bca7b40111addb854062c0796427180c42d51553a949a2f7b4 +SHA512: 352d24b07b8a11bc2caba8a91117dd42be15abc686ee09e069f84e356b170f4f74eda78d7bffd461fe0fe255cb72a58553c8ef2c312354d23777056c33b9a1db +Description: Intel® MPI Library Runtime Environment + + +Package: intel-oneapi-mpi +Architecture: amd64 +Version: 2021.9.0-43482 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-mpi-2021.9.0 +Filename: pool/main/intel-oneapi-mpi-2021.9.0-43482_amd64.deb +Size: 1728 +MD5sum: 0e6c8bdb7730fd91abc395149baac772 +SHA1: 15df428166311054973819b7b635e7d929a4c8fb +SHA256: 263347af0a64fa8a7968b30c5cf83f19d38aa81df7e99bb7fa4889a9e7139438 +SHA512: e376d8ab58e581df4da3bbf856e58e0de10c04657a1fcdaea5027d9a1cf2a918b2002bbfc2d6c9e85674dd15e84794cf308a227e5b27f8ce081052255bb74e70 +Description: Intel® MPI Library Runtime Environment + + +Package: intel-oneapi-mpi-devel-2021.1.1 +Architecture: amd64 +Version: 2021.1.1-76 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 575739 +Depends: intel-oneapi-mpi-2021.1.1, intel-oneapi-condaindex,intel-oneapi-common-vars,intel-oneapi-common-licensing +Filename: pool/main/intel-oneapi-mpi-devel-2021.1.1-2021.1.1-76_amd64.deb +Size: 60560036 +MD5sum: 60aad0d607fffa5e465510240a8b39d3 +SHA1: a7f5c00f66f76f52ad63ef334840795fce0e5e4d +SHA256: a86d86469357b66232acf6bc2a1c33915679ab67bf6c66e047463cbe94d91ab8 +SHA512: 51dbe1c8f6b364bec3a2a5788b5fdf7feae3093617219b21bd9c2984233a932f7090c8b89f8ae1cc8b3413d32c66388794e201875557e4a44d83d433deac3a90 +Description: Intel® MPI Library + + +Package: intel-oneapi-mpi-devel +Architecture: amd64 +Version: 2021.1.1-76 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-mpi-devel-2021.1.1 +Filename: pool/main/intel-oneapi-mpi-devel-2021.1.1-76_amd64.deb +Size: 1634 +MD5sum: 0e57cb425b01b3b7a2b0a57bc73d860b +SHA1: 01335f4ae998689d443e6cfd20d4f90cfa9e0daf +SHA256: 9f70613303d5f76f4fabc9470a5535d58729c94a19355539a8e58eed08eb7af3 +SHA512: 83f92030b5e90109b59791a9c2520fd1cc36dc25dc50ce9fd6c7e412e96972eb311bd9b2ebc6e01edf54a020fab5345d4ed930b294ad6890cec39dd71a431233 +Description: Intel® MPI Library + + +Package: intel-oneapi-mpi-devel-2021.2.0 +Architecture: amd64 +Version: 2021.2.0-215 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 571494 +Depends: intel-oneapi-mpi-2021.2.0, intel-oneapi-condaindex (>= 2021.2.0-94), intel-oneapi-common-vars (>= 2021.2.0-195), intel-oneapi-common-licensing-2021.2.0 +Filename: pool/main/intel-oneapi-mpi-devel-2021.2.0-2021.2.0-215_amd64.deb +Size: 60207814 +MD5sum: d8f0d351dd72d43d3c5930e26dce9c50 +SHA1: e46ff15cb32b7b6a7a45c395c5daaefbfdba3ccd +SHA256: ecf1496558997c727268288ce6d0cb93a563cf8a6281fa82087c731162b4b6f1 +SHA512: 84df8716c7d0135dc334ce6adfa34292d16e8f9685a2f013e45d87620bfb52a78ca26db64c3360480d7a3833d79f3c53dfb84afeb05951d37a42ab5b635c57a7 +Description: Intel® MPI Library + + +Package: intel-oneapi-mpi-devel +Architecture: amd64 +Version: 2021.2.0-215 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-mpi-devel-2021.2.0 +Filename: pool/main/intel-oneapi-mpi-devel-2021.2.0-215_amd64.deb +Size: 1634 +MD5sum: aa8cc903aad4122dce8a56235b694200 +SHA1: 5e5e99717792e80049e8094b8c00c8f2727371b4 +SHA256: c4aa86cf0345a9c9d33681037ed8a565b9a2ca97c59cdf67aa86c83958e73ad8 +SHA512: 8dcb49bbf54839808e767088b25943ba318f26f83a67607c52d58741464b3599d0539d8baa901260e47a7775806dc74dffcadb5e5651a0ae2b65232538412598 +Description: Intel® MPI Library + + +Package: intel-oneapi-mpi-devel-2021.3.0 +Architecture: amd64 +Version: 2021.3.0-294 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 599506 +Depends: intel-oneapi-mpi-2021.3.0, intel-oneapi-condaindex (>= 2021.3.0-159), intel-oneapi-common-vars (>= 2021.3.0-261), intel-oneapi-common-licensing-2021.3.0 +Filename: pool/main/intel-oneapi-mpi-devel-2021.3.0-2021.3.0-294_amd64.deb +Size: 63966610 +MD5sum: 49559959c373ed5644f7e424919bcf79 +SHA1: fc7b96ca2a342b3bc74f60b28914a49c2dc89058 +SHA256: acfb102b6db687e697a93e19d860784f252c425991d1efce20294c096b1a54b9 +SHA512: d2b11563126605aa6f5f381e732714298f9d73ba93a06216ece2a05485c35942c2494836c8035e2e4a056c430218f9e5366be5175e7eb03048b714275c21a0fd +Description: Intel® MPI Library + + +Package: intel-oneapi-mpi-devel +Architecture: amd64 +Version: 2021.3.0-294 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-mpi-devel-2021.3.0 +Filename: pool/main/intel-oneapi-mpi-devel-2021.3.0-294_amd64.deb +Size: 1634 +MD5sum: 73e5ade348e4d47589bb54c72b864b22 +SHA1: 6eeb0f18cfe4f18f111f3a09790e2de3a82a23c3 +SHA256: 4fc3b913a3d5e32050bb0573935f91df569b82a34848d5f5eae2f5b073bae072 +SHA512: 901f05180a6f2b00828e4f367586a72a35f5f23f61a8322aca222dc37dae6fbca6bd68e1731548d85ecef0fe8c90e83c7483372cf2a0e9001210ccbadf50eac2 +Description: Intel® MPI Library + + +Package: intel-oneapi-mpi-devel-2021.3.1 +Architecture: amd64 +Version: 2021.3.1-315 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 599503 +Depends: intel-oneapi-mpi-2021.3.1, intel-oneapi-condaindex (>= 2021.3.0-159), intel-oneapi-common-vars (>= 2021.3.0-261), intel-oneapi-common-licensing-2021.3.0 +Filename: pool/main/intel-oneapi-mpi-devel-2021.3.1-2021.3.1-315_amd64.deb +Size: 63931628 +MD5sum: 5acce68457b21b5d2321ab319fda379d +SHA1: 1c983f00b8d668b08321c156242d00630480dce6 +SHA256: 0f4fa550de4bfe4c6f48452f12bad9a9220c58380f19c09f87d1086273522c59 +SHA512: f75384c7ab09d5910c9564ae32a20b2d15f54ac38d6a3ea660c7adc342528dbd5ad87842d31c6610a7f2acc8f5e59202acc1936efa03efa2f4bfc9dcaf181706 +Description: Intel® MPI Library + + +Package: intel-oneapi-mpi-devel +Architecture: amd64 +Version: 2021.3.1-315 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-mpi-devel-2021.3.1 +Filename: pool/main/intel-oneapi-mpi-devel-2021.3.1-315_amd64.deb +Size: 1636 +MD5sum: e15a7907fa11945f8fbc700d95941468 +SHA1: 520e9c42a9b6c1d40bfe18de985efad7b668ae9b +SHA256: d0ea58f2906b21465ff9d65ee60e9a0b3d31cc545b4017a06fffa203de17b15f +SHA512: ce4091f024da16f7676bf842714d61103708959c2e743c26210793f79ffdab5b3dd75e9daa31cc8413736d522a0c0476359f78365b3460b9d1ebcaeb65e13e49 +Description: Intel® MPI Library + + +Package: intel-oneapi-mpi-devel-2021.4.0 +Architecture: amd64 +Version: 2021.4.0-441 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 566497 +Depends: intel-oneapi-mpi-2021.4.0, intel-oneapi-condaindex (>= 2021.4.0-207), intel-oneapi-common-vars (>= 2021.4.0-327), intel-oneapi-common-licensing-2021.4.0 +Filename: pool/main/intel-oneapi-mpi-devel-2021.4.0-2021.4.0-441_amd64.deb +Size: 61573168 +MD5sum: adc583b526a176e079edfc43435a9088 +SHA1: d05d2bb19221c295e735586cf6df9a7df67d7edc +SHA256: a8fd4866232fd08d2321180cd4b14dc3cf6b93b34940dcb6e97d391fda011669 +SHA512: b12268a0751e1416de3ff64dc4c21a78613c77f1edd834aed9a9b9fa74fcd1ab264b0f8acfac3c4af61d3fc478473721d76892bc2eb1bb79e567b82332748444 +Description: Intel® MPI Library + + +Package: intel-oneapi-mpi-devel +Architecture: amd64 +Version: 2021.4.0-441 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-mpi-devel-2021.4.0 +Filename: pool/main/intel-oneapi-mpi-devel-2021.4.0-441_amd64.deb +Size: 1636 +MD5sum: d5feb16d7f19c3741c03e70aee1cba57 +SHA1: 28a83598436edc388465f8f92a55e0fd24c6d144 +SHA256: b922ecac1a02f073ce6a53592726761c833226be36903bd490a5b936d5e184e6 +SHA512: 19715a1ce6328b4efae5ae3100827286fe04fb51de98009a3760f88d26c3ca11510ccbcd069ad4f234167c7fbe755c2170430b50f8beb2b8f47c189c5a55588a +Description: Intel® MPI Library + + +Package: intel-oneapi-mpi-devel-2021.5.0 +Architecture: amd64 +Version: 2021.5.0-495 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 300714 +Depends: intel-oneapi-mpi-2021.5.0, intel-oneapi-condaindex (>= 2022.0.0-74), intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-mpi-devel-2021.5.0-2021.5.0-495_amd64.deb +Size: 33168846 +MD5sum: 437c5b7096915e124691dd56651b2462 +SHA1: 3d9e5cd5a94df0850279e29dc8a23129b625f61e +SHA256: 1fe2c49e50a83c6e0204e91c17be3b46b75d1a986f8a358aaf28a07f663350cc +SHA512: 8b7017d9dfa3f30d27dc06b3b07e0b0ec52505bb1e93951e1275d2111935a78b4afcaa6f7cf2f1d2cd648cec5b4489f5bc66e805a1e752935e3b90b1fb8668d0 +Description: Intel® MPI Library + + +Package: intel-oneapi-mpi-devel +Architecture: amd64 +Version: 2021.5.0-495 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-mpi-devel-2021.5.0 +Filename: pool/main/intel-oneapi-mpi-devel-2021.5.0-495_amd64.deb +Size: 1640 +MD5sum: ac61749cd198a607b1bb4d3276c0eebf +SHA1: 905938b994a33131ebb227e2bfae346f045b25fe +SHA256: efaa3184f4b375e955faeae8ffd1a2ded29e00cbf11177574173b8648eef1332 +SHA512: db5fb249e3cd5aa8b82767e836e15e1b8f88d2e3b295235eafdf272650992e06dda9929906bf8bcd20854fcb6ba7099a9ed4e849e3b5fdb7bac7fdd1edab69ab +Description: Intel® MPI Library + + +Package: intel-oneapi-mpi-devel-2021.5.1 +Architecture: amd64 +Version: 2021.5.1-515 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 300714 +Depends: intel-oneapi-mpi-2021.5.1, intel-oneapi-condaindex (>= 2022.0.0-74), intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-mpi-devel-2021.5.1-2021.5.1-515_amd64.deb +Size: 33176160 +MD5sum: 9bb3a722189bfdef4b1f70b7806e6695 +SHA1: 8019823f898134ef5f1acd3eca7f0b99291c8797 +SHA256: 922264331305996649c51fc2fdbc28eb7852d712f8b39ca175ab458eee60d858 +SHA512: fe4ee5d48f080056a17b20d4079a34458559817c7da2b31a9f271255f0bdacaaf56af3b0d3f136baedda2b301c923043a5e0e504c133dfd545a31189e4fcdff5 +Description: Intel® MPI Library + + +Package: intel-oneapi-mpi-devel +Architecture: amd64 +Version: 2021.5.1-515 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-mpi-devel-2021.5.1 +Filename: pool/main/intel-oneapi-mpi-devel-2021.5.1-515_amd64.deb +Size: 1636 +MD5sum: 1a844f1cd34fc0d14f0052d6320c52fe +SHA1: 2fc59c5541de8b2f7bbcaebe860a221508196ead +SHA256: a3ae057e3d7b7787020c325e08bd3d7e73c441fd7dd43ccd8ccb478930d91939 +SHA512: 61095a99d9b6fb86d52028ef3c01ea377179b2aba9a51fda6916734c9840c2f9654290206fe6ea8ed32fb94a60d0fb1b280eb63c4a3bcd7b19d54ece70a87fb1 +Description: Intel® MPI Library + + +Package: intel-oneapi-mpi-devel-2021.6.0 +Architecture: amd64 +Version: 2021.6.0-602 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 310955 +Depends: intel-oneapi-mpi-2021.6.0, intel-oneapi-condaindex (>= 2022.1.0-155), intel-oneapi-common-vars (>= 2022.1.0-161), intel-oneapi-common-licensing-2022.1.0 +Filename: pool/main/intel-oneapi-mpi-devel-2021.6.0-2021.6.0-602_amd64.deb +Size: 35237314 +MD5sum: 4f0402f9b56ee34e9eabc47e4cd4279d +SHA1: 78bc4094327b8ee3e472d5202ffb49531cae8eaf +SHA256: 3f22e78a8ab97a4ee3647925849c5492218b6379e3bd9d32411aacb290684e6f +SHA512: 00dd7c93085e12f08c412a03a868914e967f39c56494931bd37fc2bb26035e79dec11799b1e19ee6298fb004b7dcc1431ff69ae05b87ec94b888e83062b0e036 +Description: Intel® MPI Library + + +Package: intel-oneapi-mpi-devel +Architecture: amd64 +Version: 2021.6.0-602 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-mpi-devel-2021.6.0 +Filename: pool/main/intel-oneapi-mpi-devel-2021.6.0-602_amd64.deb +Size: 1716 +MD5sum: fb4bbe1462607de0ef7b9cdb0eab1150 +SHA1: 75cf60a641f201d332d902449c197173ea8e1796 +SHA256: 6dac085394163371be5304e77c19dd474478bc4a023538c0f2e10e0031932144 +SHA512: 50a42ece2263f61a3c4323e0510a56b4146ca0339861b6b78a16ff1ed52ad9d41818621727d0f1d90fad33a602782185392e73b27a32f2cecbe32ca13526494e +Description: Intel® MPI Library + + +Package: intel-oneapi-mpi-devel-2021.7.0 +Architecture: amd64 +Version: 2021.7.0-8711 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 313445 +Depends: intel-oneapi-mpi-2021.7.0, intel-oneapi-condaindex (>= 2022.2.0-8695), intel-oneapi-common-vars (>= 2022.2.0-8694), intel-oneapi-common-licensing-2022.2.0 +Filename: pool/main/intel-oneapi-mpi-devel-2021.7.0-2021.7.0-8711_amd64.deb +Size: 35389386 +MD5sum: 1060ad5c1ef7bd4f42bc0b6e7a86e489 +SHA1: f3581bb0b9761f4e7719b9d61df768e8c176b696 +SHA256: 4ab50df0308b9b5cb415393554456257b858eeebc3743b2dd9addf26264406da +SHA512: 8dc266568deff44e03812724c1b36c927f719eeccab627fb524e42d2af0d6bd5591fb5510251b3b88496f1a045e58e3ce44ff09329448a21d01836c4ed594c14 +Description: Intel® MPI Library + + +Package: intel-oneapi-mpi-devel +Architecture: amd64 +Version: 2021.7.0-8711 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-mpi-devel-2021.7.0 +Filename: pool/main/intel-oneapi-mpi-devel-2021.7.0-8711_amd64.deb +Size: 1716 +MD5sum: df88931ea700f5d78960dcbdee29f1dd +SHA1: fa764f74bee595ea1e1430641cf1b445e1302896 +SHA256: 24b2bf4671e43597433afa29a28b19688925375ee4c4e744586edbf19888890d +SHA512: 8bb9749c7872289b9627fd97868b07f29bb914c24fce4b24845baa69b8d5a595f2a2b41cda3d6bceb9a969842834cd5c273a9ee4f90c051027523b31824d919b +Description: Intel® MPI Library + + +Package: intel-oneapi-mpi-devel +Architecture: amd64 +Version: 2021.7.1-16815 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-mpi-devel-2021.7.1 +Filename: pool/main/intel-oneapi-mpi-devel-2021.7.1-16815_amd64.deb +Size: 1716 +MD5sum: 64999c64d30fe23a7115f9634b63f973 +SHA1: 480b314f5b5cd170f800657a96918b987d03755a +SHA256: f44c7396cb726e8a3b50fdba90fd16c5696d7a30cbc21b37766ba19b116d6124 +SHA512: f9b18215d596f3657b12e5145d571965e1f78eb7205cb26320180325ed13017721fd32aeba4c9c3b2a32b6ff6324b908d7e67d70034295b2998c7b93ab7043d0 +Description: Intel® MPI Library + + +Package: intel-oneapi-mpi-devel-2021.7.1 +Architecture: amd64 +Version: 2021.7.1-16815 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 313446 +Depends: intel-oneapi-mpi-2021.7.1, intel-oneapi-condaindex (>= 2022.2.1-14970), intel-oneapi-common-vars (>= 2022.2.1-14969), intel-oneapi-common-licensing-2022.2.1 +Filename: pool/main/intel-oneapi-mpi-devel-2021.7.1-2021.7.1-16815_amd64.deb +Size: 35371154 +MD5sum: 21bde0a07000898b74d676e79d6e1ae0 +SHA1: feb4b6bbb9b1990f4246bd9f44f773aa9186a089 +SHA256: 7b37366bf5c3aefa3772641d7b3b7ff2deb5590c9f3f0559bc445026b93316cd +SHA512: 614587dbd0531d245c1023beadb80490091b64d2d0ccdd6e1ea248d51a9b0dea8c9fba02e74f99ae3af55db9001cb9c981ea13d3862331898c89c095c4ce7bc3 +Description: Intel® MPI Library + + +Package: intel-oneapi-mpi-devel-2021.8.0 +Architecture: amd64 +Version: 2021.8.0-25329 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 320314 +Depends: intel-oneapi-mpi-2021.8.0, intel-oneapi-condaindex (>= 2023.0.0-25326), intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing-2023.0.0 +Filename: pool/main/intel-oneapi-mpi-devel-2021.8.0-2021.8.0-25329_amd64.deb +Size: 36210206 +MD5sum: e8b55bcfa2780c523e7b1dbf16a447ce +SHA1: d759df67c616d2b6b0469249a87260bc075377b2 +SHA256: 8d1a34a99bd050fcbe6d5e46c3a89212281a476c210f499cd6b067c00d6a28bf +SHA512: 34da8d0593eedca29daca46c153af97aae82500d796a8b1f7b80519eb1ca3e3d8d9a0dc7c4657cd66b6e767644418f11530d2a17363620a7889024a812c00eb4 +Description: Intel® MPI Library + + +Package: intel-oneapi-mpi-devel +Architecture: amd64 +Version: 2021.8.0-25329 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-mpi-devel-2021.8.0 +Filename: pool/main/intel-oneapi-mpi-devel-2021.8.0-25329_amd64.deb +Size: 1716 +MD5sum: d97ff82ba7124f32140555abde208f53 +SHA1: 01161855675600424886d1f61a7c51004ee0a53d +SHA256: 3ec25fcc73d5deb58d69e9281eac20df36c280fd05cc62850723aae1ce4f9c79 +SHA512: 9a6ad115da7eca174f47df85de7c5e23b72f94091f064d6fca497ebcbab83074371662aecb91d69b89673e7d16172e524baf7b23e0e4548fd31f7cbf941ff84b +Description: Intel® MPI Library + + +Package: intel-oneapi-mpi-devel-2021.9.0 +Architecture: amd64 +Version: 2021.9.0-43482 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 316673 +Depends: intel-oneapi-mpi-2021.9.0, intel-oneapi-condaindex (>= 2023.1.0-43291), intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing-2023.1.0 +Filename: pool/main/intel-oneapi-mpi-devel-2021.9.0-2021.9.0-43482_amd64.deb +Size: 35972354 +MD5sum: b3f8e9f2dab259f1c546e3b8abeeab27 +SHA1: 46c22e5774362d744f710c80150dc5735f50005a +SHA256: 8702f4df9030597352e10f28ccc9635f3f17a3e128d18622a82ffa440471ba4e +SHA512: 3784b1810bacf942fbeb1927077f371560117b96ff2a110acb1cb218c5d72ef1b115e14e1a2077bc745268819270e665af663be13d30381bd0271a0187347928 +Description: Intel® MPI Library + + +Package: intel-oneapi-mpi-devel +Architecture: amd64 +Version: 2021.9.0-43482 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-mpi-devel-2021.9.0 +Filename: pool/main/intel-oneapi-mpi-devel-2021.9.0-43482_amd64.deb +Size: 1716 +MD5sum: bb2d6063fa393454594669758c45faf6 +SHA1: 8fed0439ed5f29600d42f3d4ef6d47fa302293a9 +SHA256: 11a1f2d9b742c076c29bffce190ac13ffc8af148a335378b1ecb8e0cb2c3d808 +SHA512: cd89d3afa04f9e0a63f01c7b727da3fc5a5206343838d54ff845f71de25e5520068d0a7ffe0e80f46f2f553dc5ad4b4bc081c0c909bfa04423eaa9f34714a591 +Description: Intel® MPI Library + + +Package: intel-oneapi-neural-compressor +Architecture: amd64 +Version: 1.10.0-703 +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 633518 +Provides: intel-oneapi-ilit (= 1.10.0-703), intel-oneapi-lpot (= 1.10.0-703) +Depends: intel-oneapi-condaindex (>= 2022.1.0-155), intel-oneapi-python (>= 2022.1.0-214), intel-oneapi-common-vars (>= 2022.1.0-161), intel-oneapi-common-licensing-2022.1.0 +Breaks: intel-oneapi-ilit (<< 1.10.0-703), intel-oneapi-lpot (<< 1.10.0-703) +Replaces: intel-oneapi-ilit (<< 1.10.0-703), intel-oneapi-lpot (<< 1.10.0-703) +Filename: pool/main/intel-oneapi-neural-compressor-1.10.0-703_amd64.deb +Size: 645948514 +MD5sum: 51e0c2eef8891bfa1c10ec8a3c56eef8 +SHA1: 3998dcec5cf351e720fb11e5dc4cd994b11aac5b +SHA256: b6085f30270d874ac54ad43187af5671d66fc5e55d5147adaaa5034c2a315ebb +SHA512: 0377aeb1719940a65fc0d54a011f9014e01b195954b16a33983ca4baf5329d506eacb2b6b6352dd90c27ef3122691305ea1da26aca3bbc68936d8984ed35ab23 +Description: Intel® Neural Compressor + + +Package: intel-oneapi-neural-compressor +Architecture: amd64 +Version: 1.13.0-20878 +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 126360 +Provides: intel-oneapi-ilit (= 1.13.0-20878), intel-oneapi-lpot (= 1.13.0-20878) +Depends: intel-oneapi-condaindex (>= 2022.2.1-14970), intel-oneapi-python (>= 2022.2.1-17274), intel-oneapi-common-vars (>= 2022.2.1-14969), intel-oneapi-common-licensing-2022.2.1 +Breaks: intel-oneapi-ilit (<< 1.13.0-20878), intel-oneapi-lpot (<< 1.13.0-20878) +Replaces: intel-oneapi-ilit (<< 1.13.0-20878), intel-oneapi-lpot (<< 1.13.0-20878) +Filename: pool/main/intel-oneapi-neural-compressor-1.13.0-20878_amd64.deb +Size: 129072030 +MD5sum: 987c045129c4ff255bf46d2911efc9f6 +SHA1: d8521c7ea618f9952400c9701368bee306c51386 +SHA256: 9f0fc8d1c9ff98b3c2b9a87151be56f56838fbceb4e96f5cf34c99c725562208 +SHA512: 8fb66dd87fe8d4b46a7ff137463b04aba2c4219e840055724307e497d0833e68b0211833015e590a0c7c4b53e4cfb5095f296f9bd930503546a70dee1b829c43 +Description: Intel® Neural Compressor + + +Package: intel-oneapi-neural-compressor +Architecture: amd64 +Version: 1.13.0-26098 +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 79445 +Provides: intel-oneapi-ilit (= 1.13.0-26098), intel-oneapi-lpot (= 1.13.0-26098) +Depends: intel-oneapi-condaindex (>= 2023.0.0-25326), intel-oneapi-python (>= 2023.0.0-25636), intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing-2023.0.0 +Breaks: intel-oneapi-ilit (<< 1.13.0-26098), intel-oneapi-lpot (<< 1.13.0-26098) +Replaces: intel-oneapi-ilit (<< 1.13.0-26098), intel-oneapi-lpot (<< 1.13.0-26098) +Filename: pool/main/intel-oneapi-neural-compressor-1.13.0-26098_amd64.deb +Size: 81050554 +MD5sum: 1f48725c4130ad654758c8d52bcaa8b8 +SHA1: f31eaee5b1ba318cef86b79d0f84436ea3e4cf41 +SHA256: 7903b7fabb4cc8cb95af589499a2f1b7dc5cef3af0a6689dbfea28fd4647c3c7 +SHA512: 7484d007d804d754004a8ae5867a17f13f942dc8e871d04dcb5611ac42c5d7d717285e9c3c7c009b9f5738949adb4403f06515262799234970d1b77914e587c2 +Description: Intel® Neural Compressor + + +Package: intel-oneapi-neural-compressor +Architecture: amd64 +Version: 1.13.0-8764 +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 126296 +Provides: intel-oneapi-ilit (= 1.13.0-8764), intel-oneapi-lpot (= 1.13.0-8764) +Depends: intel-oneapi-condaindex (>= 2022.2.0-8695), intel-oneapi-python (>= 2022.2.0-8762), intel-oneapi-common-vars (>= 2022.2.0-8694), intel-oneapi-common-licensing-2022.2.0 +Breaks: intel-oneapi-ilit (<< 1.13.0-8764), intel-oneapi-lpot (<< 1.13.0-8764) +Replaces: intel-oneapi-ilit (<< 1.13.0-8764), intel-oneapi-lpot (<< 1.13.0-8764) +Filename: pool/main/intel-oneapi-neural-compressor-1.13.0-8764_amd64.deb +Size: 129006062 +MD5sum: 40b78835f9a9263aacd1c9e6cb46f854 +SHA1: eda593556d69e70fbd3868e965ad93d57f837c4c +SHA256: e8b6d4490edf22b4443cce18c441357a15bad37a7706d7cacaf80f0933526b9b +SHA512: c36e9bca7c3784759ffe256f455c75c88ce035e4eae102b6bcbc8fe83430e4d323aabe6c14dc7a834e63c8c186644b2a14c27e98f318fa85c45a1c678580ac31 +Description: Intel® Neural Compressor + + +Package: intel-oneapi-neural-compressor +Architecture: amd64 +Version: 1.14.2.0-31757 +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 80032 +Provides: intel-oneapi-ilit (= 1.14.2.0-31757), intel-oneapi-lpot (= 1.14.2.0-31757) +Depends: intel-oneapi-condaindex (>= 2023.0.0-25326), intel-oneapi-python (>= 2023.0.0-25636), intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing-2023.0.0 +Breaks: intel-oneapi-ilit (<< 1.14.2.0-31757), intel-oneapi-lpot (<< 1.14.2.0-31757) +Replaces: intel-oneapi-ilit (<< 1.14.2.0-31757), intel-oneapi-lpot (<< 1.14.2.0-31757) +Filename: pool/main/intel-oneapi-neural-compressor-1.14.2.0-31757_amd64.deb +Size: 81655162 +MD5sum: 71b9a146d38e6400f3dcde8d467aedc8 +SHA1: 4adeec4db7d60970e90ae08e83f9830c78285b45 +SHA256: 3015c413e47a45f9446a8717007e69a96e921a1452e2c74bab323153c6868b00 +SHA512: e6f0b0fdf132638e834d1f8420ab62d75525eafa867e4ae284ac03512c351453f3313ee8e0df54d5c2e81937281ef7cc69c6e28bb5ad9e604facdceee92c8a9c +Description: Intel® Neural Compressor + + +Package: intel-oneapi-neural-compressor +Architecture: amd64 +Version: 1.7.0-597 +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 816980 +Provides: intel-oneapi-ilit (= 1.7.0-597), intel-oneapi-lpot (= 1.7.0-597) +Depends: intel-oneapi-condaindex (>= 2022.0.0-74), intel-oneapi-python (>= 2022.0.1-127), intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Breaks: intel-oneapi-ilit (<< 1.7.0-597), intel-oneapi-lpot (<< 1.7.0-597) +Replaces: intel-oneapi-ilit (<< 1.7.0-597), intel-oneapi-lpot (<< 1.7.0-597) +Filename: pool/main/intel-oneapi-neural-compressor-1.7.0-597_amd64.deb +Size: 833502190 +MD5sum: df9621b0aff17cb9bc4760a7d358d16d +SHA1: 7384686df5f81e744734c7cdbd09ba1cca106080 +SHA256: cf689d0ae91fd5e34d775129a2a2a6ff5a8614f8fc7eda1b4827680c463eef88 +SHA512: 6cb87616904018155241c88b68cca8611a8655ac63e37f8200aaa757b7d3e288861e5c87889b570e54c767458dac7ec6c27f93292a851ebd7bbd85729535716b +Description: Intel® Neural Compressor + + +Package: intel-oneapi-neural-compressor +Architecture: amd64 +Version: 1.7.0-616 +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 816980 +Provides: intel-oneapi-ilit (= 1.7.0-616), intel-oneapi-lpot (= 1.7.0-616) +Depends: intel-oneapi-condaindex (>= 2022.0.0-74), intel-oneapi-python (>= 2022.0.2-155), intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Breaks: intel-oneapi-ilit (<< 1.7.0-616), intel-oneapi-lpot (<< 1.7.0-616) +Replaces: intel-oneapi-ilit (<< 1.7.0-616), intel-oneapi-lpot (<< 1.7.0-616) +Filename: pool/main/intel-oneapi-neural-compressor-1.7.0-616_amd64.deb +Size: 833502160 +MD5sum: b104a697b17ebc0f4d74bbeb7dc20c38 +SHA1: b0ee5d58dd3fbd75c680d9bc91d4e9529b8734ef +SHA256: 4d40276963c1e7561cb8580d038a485f139f328f52f34f134374ad3d8ae4e827 +SHA512: f358469f72abe9a5cdff8faa3c0bddbf21b4d4df3777c6873d2cd048cc92dda3bf576f82e99fd6f365d31b0370c3be95ec10060599297768f03f3ac36fadd3cc +Description: Intel® Neural Compressor + + +Package: intel-oneapi-oidn-1.2.4 +Architecture: amd64 +Version: 1.2.4-116 +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 54055 +Depends: intel-oneapi-rkcommon,intel-oneapi-common-vars,intel-oneapi-common-licensing,intel-oneapi-common-vars,intel-oneapi-common-licensing +Filename: pool/main/intel-oneapi-oidn-1.2.4-1.2.4-116_amd64.deb +Size: 41685588 +MD5sum: ef32ed3b2a36e47f6d49abe26f9f2f4d +SHA1: 51a1f051751ab8efddd07ad350c3804299404b0f +SHA256: 5a9bd3315f7fc2c21a60cee366d807fe4f27a8ec905fd48927771b691430c910 +SHA512: a9b268539bc1a20cc1d0ae9460fd666b030bb33d877081692734e4ac3b36c8c526f4bfeed0c7a4d938538c00e329b4c050c757faa0a3e14c3545e64057e3a806 +Description: Intel® Open Image Denoise + + +Package: intel-oneapi-oidn +Architecture: amd64 +Version: 1.2.4-116 +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-oidn-1.2.4 +Filename: pool/main/intel-oneapi-oidn-1.2.4-116_amd64.deb +Size: 2286 +MD5sum: ad8a6fe83fe71227d2cb19749aedec8d +SHA1: d4fdce9321efc7fb7f5bcd620556c308a902943a +SHA256: 888b294faacb3c493adf7f7f9c1239851090e26ac2a61d8a6ffb54637ed56404 +SHA512: 2d7ea2bac5b252ab5b735ad59b62db5accb3d127218bab50a2306c5b1678be715ded5daad06936def3fd4fb90858acabea491bb1357b37657430847bd666f385 +Description: Intel® Open Image Denoise + + +Package: intel-oneapi-oidn-1.3.0 +Architecture: amd64 +Version: 1.3.0-167 +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 44097 +Depends: intel-oneapi-rkcommon-1.6.0, intel-oneapi-common-vars (>= 2021.2.0-195), intel-oneapi-common-licensing-2021.2.0 +Filename: pool/main/intel-oneapi-oidn-1.3.0-1.3.0-167_amd64.deb +Size: 32192876 +MD5sum: 242c1a438db108b40f6577c4d162bf9e +SHA1: 223441672fc8d1a9abe4d31f613f2ce330c7cfde +SHA256: c7ffb6654ec69760ab243b3eeac5423c09c29c61365b291abd71e10a26984c9c +SHA512: 1fbbe9a417e59b037e8138a49054f413c0b8600ca690272f25feaad76692c723f80c8e67d2489096605163889fd5d15a8a095024acb274e8f34a08fb40a81af0 +Description: Intel® Open Image Denoise + + +Package: intel-oneapi-oidn +Architecture: amd64 +Version: 1.3.0-167 +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-oidn-1.3.0 +Filename: pool/main/intel-oneapi-oidn-1.3.0-167_amd64.deb +Size: 2282 +MD5sum: 1fef737453cfe6e25e119a0242f78318 +SHA1: 1c60226f55ae36bb30afcc72424234705c5d93a3 +SHA256: b10e9362ef2a213bfd85764c42a767b448e6bcebfcaa08e8a01e0566383ac769 +SHA512: 99fa1876d6ef2da09567abb6731f565c0a3ecf480d2033ab9493ef4aef1b2229e1d837d867769d33ab505f5e6eb13c41243d66713700c0be57f3ba43a4e0f28b +Description: Intel® Open Image Denoise + + +Package: intel-oneapi-oidn-1.4.0 +Architecture: amd64 +Version: 1.4.0-63 +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 58639 +Depends: intel-oneapi-rkcommon-1.6.1, intel-oneapi-common-vars (>= 2021.3.0-261), intel-oneapi-common-licensing-2021.3.0 +Filename: pool/main/intel-oneapi-oidn-1.4.0-1.4.0-63_amd64.deb +Size: 45841174 +MD5sum: 138dcb15cb97443f686ee77c9c038f4f +SHA1: 2d37f8f8b08de9a98973a76a7b8139f85dc7427f +SHA256: 8c7416c1684273c0a17d1117725d9114d97245de6b110be5f1358d2eefb7c5eb +SHA512: 4f7acfac458049771a60e92b0d43fa6dd58341eaef959e4c889e48945f34ebdb00a60de8bd85c3b7b97f11415185a0c4887c77964569195070e3a446af5effc5 +Description: Intel® Open Image Denoise + + +Package: intel-oneapi-oidn +Architecture: amd64 +Version: 1.4.0-63 +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-oidn-1.4.0 +Filename: pool/main/intel-oneapi-oidn-1.4.0-63_amd64.deb +Size: 1616 +MD5sum: cea38029f195240140d29519337ac6e9 +SHA1: 8946a54e1bb1064fa015b7dcc536a34942ed5e32 +SHA256: 2d8d71ec5ec13328e932c1d51a144affdc9873957b098bd4fd2d132f30e4c63a +SHA512: 77095eddd1f509358273e35775ac2482fc49dc98292d378e9d641e035003847c6e8365224e5e4248db22f0c5d4741de2d1630f669370a8c11e6db4348a84f02c +Description: Intel® Open Image Denoise + + +Package: intel-oneapi-oidn-1.4.1 +Architecture: amd64 +Version: 1.4.1-90 +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 58623 +Depends: intel-oneapi-rkcommon-1.7.0, intel-oneapi-common-vars (>= 2021.4.0-327), intel-oneapi-common-licensing-2021.4.0 +Filename: pool/main/intel-oneapi-oidn-1.4.1-1.4.1-90_amd64.deb +Size: 45816058 +MD5sum: d67dc0d4238fa086d4b649bcb6a6a652 +SHA1: 7238665a950b3885a5e4405a168d9476bc2ed8ca +SHA256: cd3416b012ac8993131f07b254ab86f031636a91318d430efc054a5ac4d35b76 +SHA512: 47ecdccb33479eb638494bae41b385c598b49fc5f773bd086c0d2493edf79e7c828c609d59ff1f14be2a9cd44381358525044fc7c7bf00079e5ddca9e359f8b0 +Description: Intel® Open Image Denoise + + +Package: intel-oneapi-oidn +Architecture: amd64 +Version: 1.4.1-90 +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-oidn-1.4.1 +Filename: pool/main/intel-oneapi-oidn-1.4.1-90_amd64.deb +Size: 1618 +MD5sum: e7e32c1d6ff814cc96b61c88d3e0dcf7 +SHA1: 8d159b6be028b0b3c6cb511ec1465ce9d035a799 +SHA256: aca801bd0466605a972370602d6b99890f3fc49353946e27f9bb4ceb56ecaac1 +SHA512: ef4768f9186e9ed9d2db604207ef3fd7eb0675806e8bc32312cd6ae2bd2a48aee3a4384b59a0289920255e12daa1f8e120263762fd15e48548ce9eb914c7c21c +Description: Intel® Open Image Denoise + + +Package: intel-oneapi-oidn-1.4.2 +Architecture: amd64 +Version: 1.4.2-73 +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 60891 +Depends: intel-oneapi-rkcommon-1.8.0, intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-oidn-1.4.2-1.4.2-73_amd64.deb +Size: 46183144 +MD5sum: fab5ca01ffc2854dba6b535608579c3e +SHA1: 51c2bf7da549af3300f0d99b17df0551a425b212 +SHA256: d2d7f1193f92a51be8c398fddde72b8ce24a257ecf83a9661f4c230240a7f4f9 +SHA512: 4206727f9aab808434b29bef7d0d904c04fea13e3ebed0dc1dd42fd80456dd1f1802be0b02d95de2ce28b4ea1afea0c77dae980d749acef02060f36ce3c43249 +Description: Intel® Open Image Denoise + + +Package: intel-oneapi-oidn +Architecture: amd64 +Version: 1.4.2-73 +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-oidn-1.4.2 +Filename: pool/main/intel-oneapi-oidn-1.4.2-73_amd64.deb +Size: 1618 +MD5sum: 487b348b8802c3e1c0694b324f13f05b +SHA1: a1018192119d2855f033d9208ef817fd3cf4964f +SHA256: f8bf4bfdcf0830d3305c9409befbd0d85f64ff904cf929ead8b17ddc4ebeedaa +SHA512: 95ae887fe3a76fb4922caa320c55f79a613c416fd36c677e8db8018c9304be790299a46ad9518dfd68bb046b36947b5ae7fa083bf2fbe597572fd9dada9cf5d5 +Description: Intel® Open Image Denoise + + +Package: intel-oneapi-oidn-1.4.3 +Architecture: amd64 +Version: 1.4.3-15341 +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 60428 +Depends: intel-oneapi-rkcommon-1.10.0, intel-oneapi-common-vars (>= 2022.2.1-14969), intel-oneapi-common-licensing-2022.2.1 +Filename: pool/main/intel-oneapi-oidn-1.4.3-1.4.3-15341_amd64.deb +Size: 46122998 +MD5sum: 26479bfb0c90fce6a7ff2d4fb8492f81 +SHA1: bedcf4ee7a0bf57846689c717d2a93c42e3d1c67 +SHA256: 60b2612b46a12762fe4ff5a672e4a434bb9705707841a322cfebf793324a7ef9 +SHA512: 785e92af24e3ec8ff4eac5be5ec9c4e1382b468717c3e652d67a461db6d2b62c0a3f0d3f0f9223f7b271bd6d6972718b50f143038ecf3d9e8498070381659a69 +Description: Intel® Open Image Denoise + + +Package: intel-oneapi-oidn-1.4.3 +Architecture: amd64 +Version: 1.4.3-160 +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 60412 +Depends: intel-oneapi-rkcommon-1.9.0, intel-oneapi-common-vars (>= 2022.1.0-161), intel-oneapi-common-licensing-2022.1.0 +Filename: pool/main/intel-oneapi-oidn-1.4.3-1.4.3-160_amd64.deb +Size: 46145710 +MD5sum: 3fb26e23c13d8b2b464be5cc246804a2 +SHA1: 59109862676f0a73a0c99e323427d37294b6ba82 +SHA256: 4a95caf21282e714102d8f10fbf7d9d29ff2313703430ff5d546bfc294d2a3c4 +SHA512: b0202f9de7720bb705a3439bd0683951308a071799fcf23194cdd1d37faebfcdb3b4e25a94dca4785378dc53adecef8b6cbaa7ae7a3e480f30537e525ad6db90 +Description: Intel® Open Image Denoise + + +Package: intel-oneapi-oidn-1.4.3 +Architecture: amd64 +Version: 1.4.3-25373 +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 60428 +Depends: intel-oneapi-rkcommon-1.10.0, intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing-2023.0.0 +Filename: pool/main/intel-oneapi-oidn-1.4.3-1.4.3-25373_amd64.deb +Size: 46122126 +MD5sum: 851db975075c070ebd98bc155ddc0fbf +SHA1: 7b39fc8df8b8ee23501819b4a674514d47ee4bca +SHA256: 52b17289fd7a8a54fb28e9f453db4c0fb8db81b418a600f3e72d8ae8afb2975a +SHA512: 193d5ed3679a322daf7c848f5498d26a85f20e3259feba63be076b4949f01d64f5445373b1fe644f398e3757a82da54916c460a1d730ef1e5be727d597f850fc +Description: Intel® Open Image Denoise + + +Package: intel-oneapi-oidn-1.4.3 +Architecture: amd64 +Version: 1.4.3-46735 +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 54453 +Depends: intel-oneapi-rkcommon-1.11.0, intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing-2023.1.0 +Filename: pool/main/intel-oneapi-oidn-1.4.3-1.4.3-46735_amd64.deb +Size: 45289458 +MD5sum: e83e738d748d7e9b6585f9973679eea9 +SHA1: 8f0b7fcc6b2d509b972957a452b2844150df221f +SHA256: 09081d0392400ecd50376779d2f3a18d7edd16f92f79eb6476f29fefa6e6d1fe +SHA512: a31a9d9e0ffc5dbbdceece47894a15d4b98969e717139e5b1bd01495dea7807f627ed14ebc2069d8ea7cdb8a6818cd6b823c0dda6d23999839d2b46844a544c4 +Description: Intel® Open Image Denoise + + +Package: intel-oneapi-oidn-1.4.3 +Architecture: amd64 +Version: 1.4.3-8731 +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 60428 +Depends: intel-oneapi-rkcommon-1.10.0, intel-oneapi-common-vars (>= 2022.2.0-8694), intel-oneapi-common-licensing-2022.2.0 +Filename: pool/main/intel-oneapi-oidn-1.4.3-1.4.3-8731_amd64.deb +Size: 46122314 +MD5sum: 9e64de40f0ba5e631d7a99d1a893fa6b +SHA1: fd52779fc7327ea0f885508d142f76aca2c74c9c +SHA256: b9488621a854b27bf972b097d8e2df3876c0c90a3f5533f0c115667ba47db991 +SHA512: e18fe4762c7c1a3dad462a030204ff4ff542de04bc56f04d0da0132373b0521757d15377ae031f43a3e0d56ef4ee3157aeb9ea9df41ec37c4c5ded70f1b7841a +Description: Intel® Open Image Denoise + + +Package: intel-oneapi-oidn +Architecture: amd64 +Version: 1.4.3-15341 +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-oidn-1.4.3 +Filename: pool/main/intel-oneapi-oidn-1.4.3-15341_amd64.deb +Size: 1700 +MD5sum: 65ffc4165770e9528f718cf4f9c0322d +SHA1: 877cfda5e08f82e7d8a38cef610f097e41f6bcff +SHA256: 9a6fc3088a33c103778014c4a2df5efadb262276d3806e9c0acb46f142d269ca +SHA512: d4445c739c9114cae601de2e26429b7930fd130cf261b03f4e0de9a87623513725301db250aa714050a80f67e0a3da1d685c1ffaff7f9573c0f7b6b17831e82a +Description: Intel® Open Image Denoise + + +Package: intel-oneapi-oidn +Architecture: amd64 +Version: 1.4.3-160 +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-oidn-1.4.3 +Filename: pool/main/intel-oneapi-oidn-1.4.3-160_amd64.deb +Size: 1696 +MD5sum: 247fb5879aeec3c5eedf037336e77a6c +SHA1: 254fa1b6ef41569f9ec49f32e05878adf781929a +SHA256: 4f89024f77159f09570bc247da17fe8af72c6ed24d508fc24f02878df84bc2bd +SHA512: 75b078ca6ad9312c2f8891eaeb611c6b0756f5a195c96ec24167bcd6d38c0c49cebc93fe8baec41ddce76f20fcb3db2fc259222aee03a86422e0790f73f8e424 +Description: Intel® Open Image Denoise + + +Package: intel-oneapi-oidn +Architecture: amd64 +Version: 1.4.3-25373 +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-oidn-1.4.3 +Filename: pool/main/intel-oneapi-oidn-1.4.3-25373_amd64.deb +Size: 1700 +MD5sum: 9654aab7b9808f41a0e1e231decbdc76 +SHA1: 70509d53afbf13e3d166f9a1d0b05cf5cb39eb57 +SHA256: 08ef9b15d8a1ec1ec93e8c55acb4a090aa72c02147890a24fb0f2534d3dc5bad +SHA512: 332d9d0976b6f0d55b15ab4a3c172806abfe35939b92e754c3a8cf31c5bb3ce326d8abc27908562b2ca91d77d7a5051a236d04f6bf8e15a5b71d417498c786e6 +Description: Intel® Open Image Denoise + + +Package: intel-oneapi-oidn +Architecture: amd64 +Version: 1.4.3-46735 +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-oidn-1.4.3 +Filename: pool/main/intel-oneapi-oidn-1.4.3-46735_amd64.deb +Size: 1700 +MD5sum: 9d0f027f4d594588d6811431eb8f8382 +SHA1: 9c54cf94976221b73b10480e6204263715d52798 +SHA256: 6374ce438eb5c7748550da0205b1e7516ede3cbd2db3d5395a98be48cf4b4a02 +SHA512: d99f656757457404bc2fe1646b04537dcd56958f400ae583e86a7c063900c4707599f7cd496aeab6fbdec01ee044ad7ad63ce137e495bedaaff5ef29be6b3d27 +Description: Intel® Open Image Denoise + + +Package: intel-oneapi-oidn +Architecture: amd64 +Version: 1.4.3-8731 +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-oidn-1.4.3 +Filename: pool/main/intel-oneapi-oidn-1.4.3-8731_amd64.deb +Size: 1700 +MD5sum: e4b0f2ff916ec7c9ddae93a76cc1bf52 +SHA1: 2078754f4475f33002bcc7b369b194c4bbed0aa3 +SHA256: 9a7f53aaf7ff62f3a12689c17a2cd184a04be5b28fb7105fe06680be2c032d66 +SHA512: 426744f7a40445609c3f5e581ed78a5dedd339adca29cd04e896d4c8b3c3e601b6c3db7c68a74c9918860e5687d2844b50d374fd1ea1494ba1b385aa6d4a2144 +Description: Intel® Open Image Denoise + + +Package: intel-oneapi-onevpl-2021.1.1 +Architecture: amd64 +Version: 2021.1.1-66 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 37197 +Depends: libdrm2,libpciaccess0,libx11-6,libxext6,libxfixes3,intel-oneapi-common-vars,intel-oneapi-common-licensing +Filename: pool/main/intel-oneapi-onevpl-2021.1.1-2021.1.1-66_amd64.deb +Size: 7812356 +MD5sum: 4e75d21c845d8958eac2da8aed5dd883 +SHA1: e57319041f154a358e581a03fb8e71bb275775aa +SHA256: 18e149983b538b8437dc3ed21f8c5ec8e7089fa7384540abb27527f74aa2239d +SHA512: a8b71f5ec65825eadf7b7ccd65315e480dae106492dc15cbad368c19257d5902a15de8dc5352a782065a84fd520a8db2a89a678b3a7b4edcdcbc10021718c377 +Description: Intel® oneAPI Video Processing Library + + +Package: intel-oneapi-onevpl +Architecture: amd64 +Version: 2021.1.1-66 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-onevpl-2021.1.1 +Filename: pool/main/intel-oneapi-onevpl-2021.1.1-66_amd64.deb +Size: 2312 +MD5sum: 88a73c849b9cb7aecd0356fc380720f3 +SHA1: f54a6ca3678f7a5d9dc68a18821f3d5c508a09a3 +SHA256: ca2d162e7e54b6e4c093b6ae88ef1aba1db34113f26f9f64c4f5ad360aa77644 +SHA512: 98c1747e2ad253676130548d42711b7240ae185f03f29acb9a7c9547c97f3410c19395142e72b2717e0be5e0f58e5b768ed0afb4b8d863b1e5f4802746cb7841 +Description: Intel® oneAPI Video Processing Library + + +Package: intel-oneapi-onevpl-2021.2.2 +Architecture: amd64 +Version: 2021.2.2-212 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 37583 +Depends: libdrm2,libpciaccess0,libx11-6,libxext6,libxfixes3, intel-oneapi-common-vars (>= 2021.2.0-195), intel-oneapi-common-licensing-2021.2.0 +Filename: pool/main/intel-oneapi-onevpl-2021.2.2-2021.2.2-212_amd64.deb +Size: 7901982 +MD5sum: 3c4cf968aeea9f8fbbfd8afdcea0a1d5 +SHA1: 16fd0ecd5e46c3c6711f1cb80a94639ceab4974d +SHA256: 9ae9130ab3c96c06e567a98278419d0c1bb70c9cdf54f0b12887d098275e27b8 +SHA512: c9cb1aa1f2282c43a4ce63752524873cc4cd10e6ab6b7b25cea1ad8879f23b50b2d0432c995b2aae13d657b9aec9a0494304cee521723685b253889861f1c3ff +Description: Intel® oneAPI Video Processing Library + + +Package: intel-oneapi-onevpl +Architecture: amd64 +Version: 2021.2.2-212 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-onevpl-2021.2.2 +Filename: pool/main/intel-oneapi-onevpl-2021.2.2-212_amd64.deb +Size: 2308 +MD5sum: 963cbd87fa935dec6aade7da2c3de97e +SHA1: 388c785ba718530c76040afc901b2bea4bf93e7a +SHA256: 98f14ba5853f78d1486f0e0f5abc435a9466742a355b8334e8ed26c2d49e6bb2 +SHA512: 9ed5894f2e8372428dda7b56c1f81b929a0da1e096533fceff477b10049a4d5be33be291ff9d4e2883b85ff2f627d12c90014419dd631d3b7b6ba5f84d2d1fa3 +Description: Intel® oneAPI Video Processing Library + + +Package: intel-oneapi-onevpl-2021.4.0 +Architecture: amd64 +Version: 2021.4.0-328 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 39731 +Depends: libdrm2,libpciaccess0,libx11-6,libxext6,libxfixes3, intel-oneapi-common-vars (>= 2021.3.0-261), intel-oneapi-common-licensing-2021.3.0 +Filename: pool/main/intel-oneapi-onevpl-2021.4.0-2021.4.0-328_amd64.deb +Size: 8316136 +MD5sum: 60381445231a3fb71b0d95066d9e6296 +SHA1: 67a39067bb28343b597cc375779a9e9b0c94a3be +SHA256: aaf7b2482cb5b379b0003e5766c0dad2bec43e9e35a678c0e5a4112ddf7424f5 +SHA512: b9a5f7d97feb77eee58c6b93a27ed94ea3bfc51c292c7fa5dff87965670d91fe94cbfa0edbda53fb3a92663ef9f194edadf1b13178340af3fe02a6e85a8e19ae +Description: Intel® oneAPI Video Processing Library + + +Package: intel-oneapi-onevpl +Architecture: amd64 +Version: 2021.4.0-328 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-onevpl-2021.4.0 +Filename: pool/main/intel-oneapi-onevpl-2021.4.0-328_amd64.deb +Size: 2312 +MD5sum: 3dfa40af181c8ec7fa548c8e558c2341 +SHA1: 8ad8221106c22798338ed3b6995c8719b5d96f42 +SHA256: 1fd33463b819f8a87efa630183853fe75d5b38417b32a1ea5c4a1d8482d3d061 +SHA512: cd9310b3d18ae017749e128ab544fe019c55a0a4ca306239ff967df2ece66a438887be76579a606f2321912f2dcfd96362eb60f4759ade3ae45fea914dde3b2c +Description: Intel® oneAPI Video Processing Library + + +Package: intel-oneapi-onevpl-2021.6.0 +Architecture: amd64 +Version: 2021.6.0-458 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 40435 +Depends: libdrm2,libpciaccess0,libx11-6,libxext6,libxfixes3, intel-oneapi-common-vars (>= 2021.4.0-327), intel-oneapi-common-licensing-2021.4.0 +Filename: pool/main/intel-oneapi-onevpl-2021.6.0-2021.6.0-458_amd64.deb +Size: 8427410 +MD5sum: 9d43723811a1f9dd4ae1d006af48a61b +SHA1: dfe3a9ca2fca42bdf1788a69793b8cb6998dac0d +SHA256: 7dac375937c04e9909848a276d7ee6b6f5a3357e65ae0a1455c9838c65689e36 +SHA512: 81ecf6f69f2fde8c5221932e24242bde9ad7409dd81fa22f21ffb36d529791bd23b3110dbdfe9403e3009e6ceab9bc83e4077c917f3c7f46f975086b605f2e54 +Description: Intel® oneAPI Video Processing Library + + +Package: intel-oneapi-onevpl +Architecture: amd64 +Version: 2021.6.0-458 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-onevpl-2021.6.0 +Filename: pool/main/intel-oneapi-onevpl-2021.6.0-458_amd64.deb +Size: 2310 +MD5sum: e1bf7857dc9cfdcc696c5d34fc9265d9 +SHA1: dee2f2e7d647683823e3917f0936d21b54464bbc +SHA256: a00bb3cf9f8e449395152a94d6f2b21c62b1cfbc1fceffb751313493a418a9be +SHA512: 6f489f306ce7913be2db6c00d230207b8f6178e9a7d7933d8139a6bce3f29f512f53dfe4e077f782efa9c7034010e63eec9c89a7b60217ad7f401ec7e5b46b03 +Description: Intel® oneAPI Video Processing Library + + +Package: intel-oneapi-onevpl-2022.0.0 +Architecture: amd64 +Version: 2022.0.0-58 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 41138 +Depends: libdrm2,libpciaccess0,libx11-6,libxext6,libxfixes3, intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-onevpl-2022.0.0-2022.0.0-58_amd64.deb +Size: 8490206 +MD5sum: ba187fdf718bde2da16c71702cf26d9d +SHA1: 6e0fb48a2b008416f1063a63736b2d636c0331ef +SHA256: 085293355fd18e312b3f2458c6e4f83aecdd39037ab87a877a98b6d60c9962b3 +SHA512: ab5b023c1f592506d13c11c0facf0065b0b25445b310b762a0a9ba7e75786e303193088bc73e8c9bb51a5102d22c497f9bc63865520b40c939d0647531523829 +Description: Intel® oneAPI Video Processing Library + + +Package: intel-oneapi-onevpl +Architecture: amd64 +Version: 2022.0.0-58 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-onevpl-2022.0.0 +Filename: pool/main/intel-oneapi-onevpl-2022.0.0-58_amd64.deb +Size: 2088 +MD5sum: 9795fc90a890af56f16b94a5188b2b95 +SHA1: a936918aea41413847315b990a1b5723f8f9af4e +SHA256: f916c1c6a399177496ea58fe788c5e7b15165e966a13e53c7341daa7ae60f76b +SHA512: cf1f4282233fb9ca0a1b64f91a91ded0b2249133859d2b748487048c41c758f327ccf4ff2219aabd9591551d679b9c913f8e4f34e02705aa3769f428d64137f1 +Description: Intel® oneAPI Video Processing Library + + +Package: intel-oneapi-onevpl +Architecture: amd64 +Version: 2022.1.0-154 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-onevpl-2022.1.0 +Filename: pool/main/intel-oneapi-onevpl-2022.1.0-154_amd64.deb +Size: 2156 +MD5sum: 9023760bb25aa128bf2676d01951c4e3 +SHA1: cd6ca1d377d60f0b020c210c6728d85e4c024b62 +SHA256: db30038febf17368d465e675fa7e2f4e2e5b12a04778e7c4f200df1d998422d1 +SHA512: 180010ab255f704a4fd9fc038dcfcda3505f1bf54ce82064c8b46e10b4a12f8b7400a37027e9f8afe4813e4d42475e04393b0613ced78f16ee075e3fba78b0e5 +Description: Intel® oneAPI Video Processing Library + + +Package: intel-oneapi-onevpl-2022.1.0 +Architecture: amd64 +Version: 2022.1.0-154 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 42264 +Depends: libdrm2,libpciaccess0,libx11-6,libxext6,libxfixes3, intel-oneapi-common-vars (>= 2022.1.0-161), intel-oneapi-common-licensing-2022.1.0 +Filename: pool/main/intel-oneapi-onevpl-2022.1.0-2022.1.0-154_amd64.deb +Size: 8796144 +MD5sum: b9e252ff26808870c1988fa0b4c31b95 +SHA1: 91c5db2957aae7714660cabb39e200f9f4b6902f +SHA256: 6d9f9bf1858edf9140fcdd2d384c8a2c83ca31305a5ca2746a19e932568ade61 +SHA512: 0c0316ebaa96b2f8c97883cec499ed5826998b2a85e1a7b0fd1b976f57f3990bf637b7f7f26948ebb83e66c81de07be1318f8764856fae61b557eaafd7820731 +Description: Intel® oneAPI Video Processing Library + + +Package: intel-oneapi-onevpl-2022.2.0 +Architecture: amd64 +Version: 2022.2.0-8703 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 43675 +Depends: libdrm2,libpciaccess0,libx11-6,libxext6,libxfixes3, intel-oneapi-common-vars (>= 2022.2.0-8694), intel-oneapi-common-licensing-2022.2.0 +Filename: pool/main/intel-oneapi-onevpl-2022.2.0-2022.2.0-8703_amd64.deb +Size: 9174560 +MD5sum: 56d57a59fd2e8a23ef6d94c002c6f757 +SHA1: dce70dc86533cbcd7b6d192e59bfbb01013e7b11 +SHA256: 468d627aadb838701771906f3e1c70d5d3e29de044501404dda07d6d279dafb0 +SHA512: 2a0402b03f1f4d3246980e96e0280cffa8658c36cc1bb4df43ff0dde916a554f3b57d7dfff4646232573875b7f202d09ecb73131456a09a84e16878224945d2d +Description: Intel® oneAPI Video Processing Library + + +Package: intel-oneapi-onevpl +Architecture: amd64 +Version: 2022.2.0-8703 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-onevpl-2022.2.0 +Filename: pool/main/intel-oneapi-onevpl-2022.2.0-8703_amd64.deb +Size: 2160 +MD5sum: c7ea8dd88a91411ec346e602675068ac +SHA1: fb94bd2d358fd1a2fa17f28513cf7844eec568c9 +SHA256: f79f050c87db042e98ac835f4dbba5b4434c78825236eeb4bcaa4f66e21376aa +SHA512: 7d804b5f1dba088a5872c37d5bc0d143fc4f5b21b0a2ca6660b5c052bc48b2a8c7b2c6e71fccab0c6530eba6da433eecc007ca3e332055969d99c92352d5f8a6 +Description: Intel® oneAPI Video Processing Library + + +Package: intel-oneapi-onevpl +Architecture: amd64 +Version: 2022.2.5-17121 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-onevpl-2022.2.5 +Filename: pool/main/intel-oneapi-onevpl-2022.2.5-17121_amd64.deb +Size: 2160 +MD5sum: 857e9a5a0fa81952ec6ca75eccd2899a +SHA1: a8a36a4a67cf5bc17341c9a6ff69017a6cdbae01 +SHA256: 36ed3dc72fb75c572e6a5bb6123fcca2d88b33fbed76c7db92e3574abec18657 +SHA512: 12d1a131cfe090296f629637970ac337b7c931e25943131ebef74d7d598a2d55e9fbf490341b46d58c9a51709dbcb6f004405649d33f2a00e5e8fda17d3d6069 +Description: Intel® oneAPI Video Processing Library + + +Package: intel-oneapi-onevpl-2022.2.5 +Architecture: amd64 +Version: 2022.2.5-17121 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 43655 +Depends: libdrm2,libpciaccess0,libx11-6,libxext6,libxfixes3, intel-oneapi-common-vars (>= 2022.2.1-14969), intel-oneapi-common-licensing-2022.2.1 +Filename: pool/main/intel-oneapi-onevpl-2022.2.5-2022.2.5-17121_amd64.deb +Size: 9220508 +MD5sum: e72168603836d82ce8a90665280f10ad +SHA1: 0a8c056776873ec66d65e5506770a62cd3a10dfd +SHA256: 84a448db76b4b08d9469e70efd3f56cf4e976487fd399b94f2ff982896808a22 +SHA512: 80ef545aa0e90d55daa30af01de61cb5976e7cc7743e301288a45045e7be8f0cc394f39c2a307d75c2928126c4f0019426504e508a2b18a9fb83dce559e7bf7d +Description: Intel® oneAPI Video Processing Library + + +Package: intel-oneapi-onevpl-2023.0.0 +Architecture: amd64 +Version: 2023.0.0-25332 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 39653 +Depends: libdrm2,libpciaccess0,libx11-6,libxext6,libxfixes3, intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing-2023.0.0 +Filename: pool/main/intel-oneapi-onevpl-2023.0.0-2023.0.0-25332_amd64.deb +Size: 8580852 +MD5sum: 34a9796b7b42652c94f9a768d875c731 +SHA1: 151f38d547000df827786541481a363a5ce4a5dd +SHA256: dfcec4bd3056efd453f7796ef85f0c087cc16c4812e9c6e1372214a8ff2b6eab +SHA512: 54a665ca68df409d9516fc8a1eefcde05581844438ca93bd3553cb59a5bac9d9269b3bbfe94ec83f2abc77f0bafd1fb1028ef30f9d294528d9713af56d2407dc +Description: Intel® oneAPI Video Processing Library + + +Package: intel-oneapi-onevpl +Architecture: amd64 +Version: 2023.0.0-25332 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-onevpl-2023.0.0 +Filename: pool/main/intel-oneapi-onevpl-2023.0.0-25332_amd64.deb +Size: 2156 +MD5sum: 24f22c95363e427068cb5d7a7b3d9248 +SHA1: e4f57a64fcb3c49a758721912650756377131bd5 +SHA256: a190e48b19f33afb533c2d69138e5a5dfcea541ecc73097fe87701b42cf9f87f +SHA512: 9ede133ee32fcb1279b6b0410153a22e7ae7ab7dc5af3b7fd04ab894637455082fca6a2748733d922eea26cd354c7cacafd7bee30183f5d669325f13377a8638 +Description: Intel® oneAPI Video Processing Library + + +Package: intel-oneapi-onevpl-2023.1.0 +Architecture: amd64 +Version: 2023.1.0-43488 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 39653 +Depends: libdrm2,libpciaccess0,libx11-6,libxext6,libxfixes3, intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing-2023.1.0 +Filename: pool/main/intel-oneapi-onevpl-2023.1.0-2023.1.0-43488_amd64.deb +Size: 8579620 +MD5sum: 67dd937fc2c6b4d9d5d5a4cb471f80ea +SHA1: 14209216b2a5eb8c8548d3c499f6b06f039a5bb4 +SHA256: e6962f9d56ca54aae4e74388b53e1e40e14652e905ad7bd7b31ff3f0dc5b771d +SHA512: 81672884346156ed2f6b99735e3bb21b3bc9e440d1d4cc1baeade56ee97cb24cfd6750d9f830114285c382959d8953145a4cece7f5d56c852285da200a6836b3 +Description: Intel® oneAPI Video Processing Library + + +Package: intel-oneapi-onevpl +Architecture: amd64 +Version: 2023.1.0-43488 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-onevpl-2023.1.0 +Filename: pool/main/intel-oneapi-onevpl-2023.1.0-43488_amd64.deb +Size: 2160 +MD5sum: 872d8f0d5557c81fc6ba3cf5d64ad577 +SHA1: 815ce03033cc070521923d526b10b7bed94a9b81 +SHA256: 1986876a50ed1ad850419cfe638e7fc1c861c0f79d2d083e592b614ba058d996 +SHA512: 207250d15500e4a607020c9fdaa191feddc515f75d8e0bac8dd3edf11e1815232447e870c214c6cda7115788d4b57af6dc70927f9b4351c8a1c13d04e572ddee +Description: Intel® oneAPI Video Processing Library + + +Package: intel-oneapi-onevpl-devel-2021.1.1 +Architecture: amd64 +Version: 2021.1.1-66 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 77672 +Depends: intel-oneapi-onevpl-2021.1.1,cmake(>=3.10),build-essential,intel-oneapi-common-vars,intel-oneapi-common-licensing +Filename: pool/main/intel-oneapi-onevpl-devel-2021.1.1-2021.1.1-66_amd64.deb +Size: 75239076 +MD5sum: 932c94edd854310c99b9bfbabc12b977 +SHA1: 68afeed05ea17f4cfe19d792006e888dc7e79c13 +SHA256: 193022ac585efba4890267055992b6904171dd8d1f3c45ba780189d515779ded +SHA512: 0d39e7c739c60c06d64f7a7dad8114920366b87cc335bbffbaa074b0c1c13999be8c74e64a20ec2d32dabb7fcdd1b43f8fb1fc4e7215cc51fd8b62d45ee422f0 +Description: Intel® oneAPI Video Processing Library + + +Package: intel-oneapi-onevpl-devel +Architecture: amd64 +Version: 2021.1.1-66 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-onevpl-devel-2021.1.1 +Filename: pool/main/intel-oneapi-onevpl-devel-2021.1.1-66_amd64.deb +Size: 2312 +MD5sum: 6c01c4bb41cddfb46d27781fc2418967 +SHA1: d9edc9b909f3165731d58f10b2e5214c4da715aa +SHA256: e37b727fcabe560a407221b9c45afd0dc5ec1e4ba02a2f196b8ce585175c020e +SHA512: 7ad708a609ad2f2830e568e2bab49cf3a8073718c0e8c61d7b0f166821d8875f8ce3ffb983b52ce4ae26b5c439298a9680dfe16a19a0104f9905b58ee25ff4ba +Description: Intel® oneAPI Video Processing Library + + +Package: intel-oneapi-onevpl-devel-2021.2.2 +Architecture: amd64 +Version: 2021.2.2-212 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 20111 +Depends: intel-oneapi-onevpl-2021.2.2,cmake(>=3.10),build-essential, intel-oneapi-common-vars (>= 2021.2.0-195), intel-oneapi-common-licensing-2021.2.0 +Filename: pool/main/intel-oneapi-onevpl-devel-2021.2.2-2021.2.2-212_amd64.deb +Size: 17243420 +MD5sum: 369d173c2912206e7832a8b5208441cf +SHA1: ee91662974ed32daaf8354f1e7f53daa26f8c0e9 +SHA256: 40eef8781a458b06a91f55e50200957e67338e9cc3b1c941ad04c5faeeadc4e8 +SHA512: 6cbc430c08f52a5b6d206d56ead9efbcf526da9f567f577654972794edb12ec1e856e6c9988297e255283926e19176873dcfd3c6f441140bbbfbcef975d172ae +Description: Intel® oneAPI Video Processing Library + + +Package: intel-oneapi-onevpl-devel +Architecture: amd64 +Version: 2021.2.2-212 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-onevpl-devel-2021.2.2 +Filename: pool/main/intel-oneapi-onevpl-devel-2021.2.2-212_amd64.deb +Size: 1650 +MD5sum: 9e282d1857eb25f6a174e53a4369f94e +SHA1: 6c9dc17c3e9a9b0bbfb3d9bff4b941e3cdd4a494 +SHA256: 063d618999213437acfc389ee9d2fb18501f3d3fd93d9eb5793146c787a4d3cf +SHA512: 823a258a05457aec74afe8f9ad67d31c5954a1f0b41288c9eb2a9a5e05e797e0388f73d64f40355dffb793d832d17cef0fef3e157e19c4da7f4738113dab9479 +Description: Intel® oneAPI Video Processing Library + + +Package: intel-oneapi-onevpl-devel-2021.4.0 +Architecture: amd64 +Version: 2021.4.0-328 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 23734 +Depends: intel-oneapi-onevpl-2021.4.0,cmake(>=3.10),build-essential, intel-oneapi-common-vars (>= 2021.3.0-261), intel-oneapi-common-licensing-2021.3.0 +Filename: pool/main/intel-oneapi-onevpl-devel-2021.4.0-2021.4.0-328_amd64.deb +Size: 18234230 +MD5sum: df57b12c717936f6931ec07c8ff66555 +SHA1: fe88c85397fb93e9c00314ac7e3e5af9ab35c4d9 +SHA256: b46861c2bd98d22d22a0a5ec7c24b67417e94d317a050eea6f054c5a3b328dce +SHA512: 96924a1097aaa273191248bc3fcf5ad976ba0baafbf0a46553a3be9146564219870605536c414e5c8012612c93822e8917a6a51de1db9702d4228565e2676658 +Description: Intel® oneAPI Video Processing Library + + +Package: intel-oneapi-onevpl-devel +Architecture: amd64 +Version: 2021.4.0-328 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-onevpl-devel-2021.4.0 +Filename: pool/main/intel-oneapi-onevpl-devel-2021.4.0-328_amd64.deb +Size: 1650 +MD5sum: e33f8bffd222673984964450365ec7f5 +SHA1: 821b194127b750aa8486a37852eb68df4308e008 +SHA256: cab515a1d7b4e88cd03a5a13f6a966df187c780b575f18a575912844ca26fed9 +SHA512: ec182f97010d2fe35e7acc7f800d05d92a377afc4e191ea5d21c4f9007a0b1e6d642b02e254d1ff56a9bd84c984c228f3eceab5c7c9d9cae8ced0ecb5fef65e8 +Description: Intel® oneAPI Video Processing Library + + +Package: intel-oneapi-onevpl-devel-2021.6.0 +Architecture: amd64 +Version: 2021.6.0-458 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 23804 +Depends: intel-oneapi-onevpl-2021.6.0,cmake(>=3.10),build-essential, intel-oneapi-common-vars (>= 2021.4.0-327), intel-oneapi-common-licensing-2021.4.0 +Filename: pool/main/intel-oneapi-onevpl-devel-2021.6.0-2021.6.0-458_amd64.deb +Size: 18239880 +MD5sum: 500562ed22b10f97b53d7eaf46701f2f +SHA1: 757f18992d02ff50fb10699a411887d074a4405a +SHA256: e9d7890881888f087f828721464d45e4113e4be9e336ca2b08193e27bc5f5939 +SHA512: 5f8b598bd653e033d0e728b11b234f665524716121b63bb6cfc0b26ecf0818bbe1208bfa004ee0f1c4780ee837d2616d979c4c3f1894d7795fa7bb3b76665840 +Description: Intel® oneAPI Video Processing Library + + +Package: intel-oneapi-onevpl-devel +Architecture: amd64 +Version: 2021.6.0-458 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-onevpl-devel-2021.6.0 +Filename: pool/main/intel-oneapi-onevpl-devel-2021.6.0-458_amd64.deb +Size: 1650 +MD5sum: 633c913e9e22d64cdbfa3acfd2f83fa9 +SHA1: b6ec388dfaeaa2952ff07672c1e8602a0340e53a +SHA256: 41f05ba7bf4aa53f2a9518e059f5e59392181fc16e9c62906526d632d26d5b27 +SHA512: 28ac850c05bf0009f2deb34693d9b8b9e8f5332f163fb41620adc8a676c7959e5484bc2c055ee8618e52005ef406388dd5cfeafc624e17443c768673cb3ffd9c +Description: Intel® oneAPI Video Processing Library + + +Package: intel-oneapi-onevpl-devel-2022.0.0 +Architecture: amd64 +Version: 2022.0.0-58 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 25354 +Depends: intel-oneapi-onevpl-2022.0.0,cmake(>=3.10),build-essential, intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-onevpl-devel-2022.0.0-2022.0.0-58_amd64.deb +Size: 18454284 +MD5sum: fe16bef797b0bab2e2586c284893c8e1 +SHA1: 51eb75ef0b0a573f34c80cd3ba038f073ab6926e +SHA256: cd9cdbe2e12f0b9cbe23ded828945ce2487e2632b610e98497aaa5b8c1d2e81a +SHA512: 3fb6ce54a6edb12ab7dda02c195d70cff20ed496402f00b9e0e57a152b36958fad65225b22ab0160076c52a9ba18886516e1540c5a911738650ede0157bce6c3 +Description: Intel® oneAPI Video Processing Library + + +Package: intel-oneapi-onevpl-devel +Architecture: amd64 +Version: 2022.0.0-58 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-onevpl-devel-2022.0.0 +Filename: pool/main/intel-oneapi-onevpl-devel-2022.0.0-58_amd64.deb +Size: 1650 +MD5sum: 3545898ff7df4d9775a1b1d6ca2295c0 +SHA1: f3878a99b46db03d020b50bd490730d429f6bdd7 +SHA256: 7d776e075a4b8ce31d00e528c202b9dc3d8ef2f362aaf8d48ab828b070dd90dc +SHA512: 12facba18bc38092b78bfa0cd911cf31e242fcaab7ff667bfb364917d7289c237c3ce1e66c7ba280b56eba191846dd86bf7ef707c40d4613d75ec2868c7851a9 +Description: Intel® oneAPI Video Processing Library + + +Package: intel-oneapi-onevpl-devel +Architecture: amd64 +Version: 2022.1.0-154 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-onevpl-devel-2022.1.0 +Filename: pool/main/intel-oneapi-onevpl-devel-2022.1.0-154_amd64.deb +Size: 1732 +MD5sum: e37ebc51cfaa0da400b0181dec6c4be0 +SHA1: c504ababfe78caf3f8e56d3214f4a8d103787a92 +SHA256: f30240592b335778b4785af52ebb7884e1e3cbfdc82a81768cf780b428932b3d +SHA512: 13837f46759ecce033cabb7f21915a1bbe5660d5af2704bcb3c43f265aeb76e508736c36a29c44647120646b05a45f2e24e9573b2d855795bdfe65b267fabdea +Description: Intel® oneAPI Video Processing Library + + +Package: intel-oneapi-onevpl-devel-2022.1.0 +Architecture: amd64 +Version: 2022.1.0-154 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 32203 +Depends: intel-oneapi-onevpl-2022.1.0,cmake(>=3.10),build-essential, intel-oneapi-common-vars (>= 2022.1.0-161), intel-oneapi-common-licensing-2022.1.0 +Filename: pool/main/intel-oneapi-onevpl-devel-2022.1.0-2022.1.0-154_amd64.deb +Size: 19958566 +MD5sum: b9842b9e76cb9d08e56d9fce4845906a +SHA1: ea4aff703372d94f2338d78991a1bed6b7fabca7 +SHA256: 707f3baf298aede3be4dcf7ffe812b902da97cf42119359422ea3015e6bf340d +SHA512: dcb3cab7e06901ed30aceed1c0a9999d0da398e0482a44cb451eb7b75563b53524d7fd525925cf55461600d36cf2be6ada7b0bf70465676a2be57afb14a7b24e +Description: Intel® oneAPI Video Processing Library + + +Package: intel-oneapi-onevpl-devel-2022.2.0 +Architecture: amd64 +Version: 2022.2.0-8703 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 31087 +Depends: intel-oneapi-onevpl-2022.2.0,cmake(>=3.10),build-essential, intel-oneapi-common-vars (>= 2022.2.0-8694), intel-oneapi-common-licensing-2022.2.0 +Filename: pool/main/intel-oneapi-onevpl-devel-2022.2.0-2022.2.0-8703_amd64.deb +Size: 19975890 +MD5sum: 0f72626ff634af94bd3969c27ad8407d +SHA1: 78501f3ebf46da809bf93c33cc536e9369a129ad +SHA256: 8d0c9cdfe90e00c4439992e80d019d12549c047e0b3bb23c6de0627b1e5edcc2 +SHA512: e6b64ed4113c1253583a71a593ce5fccd137c9c1fa1fcd61f6009f47b9af19a54fd98c391d0c645abdfd54d2908fdb23024848f1a9b4a2bf376b2c35617dfbdf +Description: Intel® oneAPI Video Processing Library + + +Package: intel-oneapi-onevpl-devel +Architecture: amd64 +Version: 2022.2.0-8703 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-onevpl-devel-2022.2.0 +Filename: pool/main/intel-oneapi-onevpl-devel-2022.2.0-8703_amd64.deb +Size: 1732 +MD5sum: 17172a9e00e467d3e8848d15c3816f4e +SHA1: 380de2be31c4cc91f387e89baa637067529fa0d7 +SHA256: 6f10a421331b75f0963aff36e41fccd160f4e697c08b0b8d337ad879ad62bfe8 +SHA512: d732b0e470ec42e3c5af83ce191692d885f83fa66f8025d31d60c283fc2255584e558ab8df306d43ff6e07c7bd27ac60a3dc177973fa18ebf07363cd6e5fc678 +Description: Intel® oneAPI Video Processing Library + + +Package: intel-oneapi-onevpl-devel +Architecture: amd64 +Version: 2022.2.5-17121 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-onevpl-devel-2022.2.5 +Filename: pool/main/intel-oneapi-onevpl-devel-2022.2.5-17121_amd64.deb +Size: 1740 +MD5sum: bfc023ddb8daa3fc0b0baa01fc08af13 +SHA1: 7cf2ac2884192c0bd5df43731a38bc282f1c7e33 +SHA256: e526dee0015a2fc3d26ec139622ad24d0ddc0353cbdd75511b73741ae6cb0cdf +SHA512: d9444355ae204fa38add3cd85c0a1df4755b7ee2dc78baf25c4213f9300e2d4e7465077ee47cf65e3a5ae911094da9f2cf52989b6c3b4631b3a0f3c5e905789e +Description: Intel® oneAPI Video Processing Library + + +Package: intel-oneapi-onevpl-devel-2022.2.5 +Architecture: amd64 +Version: 2022.2.5-17121 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 31555 +Depends: intel-oneapi-onevpl-2022.2.5,cmake(>=3.10),build-essential, intel-oneapi-common-vars (>= 2022.2.1-14969), intel-oneapi-common-licensing-2022.2.1 +Filename: pool/main/intel-oneapi-onevpl-devel-2022.2.5-2022.2.5-17121_amd64.deb +Size: 20394946 +MD5sum: a15d414e30c26213b111452830c8e948 +SHA1: 1b2d09f8f028d6846fc1416ba8b97d3dbe21a509 +SHA256: cbac1414b2887fc5925c1b59b777863f08c95265184e533d4340c0d4c89c51f4 +SHA512: 9556ef01a1adba242ba91b87ce0683ee81f17088c7972ab6b96ee1aac8fab6e4cca4622e89482d36586d52cb11aa413c493454c029fa6447223988c573720c19 +Description: Intel® oneAPI Video Processing Library + + +Package: intel-oneapi-onevpl-devel-2023.0.0 +Architecture: amd64 +Version: 2023.0.0-25332 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 31031 +Depends: intel-oneapi-onevpl-2023.0.0,cmake(>=3.10),build-essential, intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing-2023.0.0 +Filename: pool/main/intel-oneapi-onevpl-devel-2023.0.0-2023.0.0-25332_amd64.deb +Size: 20335422 +MD5sum: 9a84dfdf3a1fa7919c7fd133b67228cb +SHA1: 90727cd6aa7996156b173ed0ec58b18e06068207 +SHA256: 013da514a12b1796e84a02104caebe047debf6af220788e3a8cb23a11e367736 +SHA512: 287ab13fd5a0c3665fc8483e5efc785ffb3979daa1f4d0a89deb9657900ef2b0c59a5d6e0bd8a0e47c5d45b38eae08e0a58a2129e5d4d29822d49808118fd1df +Description: Intel® oneAPI Video Processing Library + + +Package: intel-oneapi-onevpl-devel +Architecture: amd64 +Version: 2023.0.0-25332 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-onevpl-devel-2023.0.0 +Filename: pool/main/intel-oneapi-onevpl-devel-2023.0.0-25332_amd64.deb +Size: 1732 +MD5sum: fb4c71e57019aaa147a3109eec494adb +SHA1: 18fa94988521c17bfe1c925fd11051f72d345ce4 +SHA256: 5caee159a3c6524666b89585aee64f3dc66c5e853bb6fec3827c298d223a9507 +SHA512: 8e70aa332b6745524f2f6c1dc81c5cba6dd8abce8d4a62ad9e33b8c0ab28622495accad2590473bbf8add57403efe0ec5cc2624b414da139c83cfefdf202c1ff +Description: Intel® oneAPI Video Processing Library + + +Package: intel-oneapi-onevpl-devel-2023.1.0 +Architecture: amd64 +Version: 2023.1.0-43488 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 31031 +Depends: intel-oneapi-onevpl-2023.1.0,cmake(>=3.10),build-essential, intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing-2023.1.0 +Filename: pool/main/intel-oneapi-onevpl-devel-2023.1.0-2023.1.0-43488_amd64.deb +Size: 20335366 +MD5sum: b1cbfb4eb4e939e5c41caf0ee4b780d9 +SHA1: 33f6f3dc44a9d56676a7ab55c2cd7d1a32fd8588 +SHA256: 54ff8fbee48b01b163bdd07efc1028da7858df10c967df01efc103b5a2a02027 +SHA512: 1e75b94cec1a96566f2171e066e32945f3336b65cbe9b119cd3ff783f976bcb6575abef92121a1593504ac7fa758dd71a6e9548d0927384212092fd4efd40ad7 +Description: Intel® oneAPI Video Processing Library + + +Package: intel-oneapi-onevpl-devel +Architecture: amd64 +Version: 2023.1.0-43488 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-onevpl-devel-2023.1.0 +Filename: pool/main/intel-oneapi-onevpl-devel-2023.1.0-43488_amd64.deb +Size: 1736 +MD5sum: 964060d25595a30ef427029d3791be37 +SHA1: 8d2f6145879e04657fc518e1de1de028a9d1a949 +SHA256: e8e6baee8ffc55cb76b52fc54b7a8ab404b788912f8725975abd3c3522a34d26 +SHA512: e2b3fadc7aa8b47ffb153c0afe37bde990f70d02a19c8d02a0e6e90e629ccbb8f68ee71d83ce4ddd47f0958ff450ac7dfbba8d9be0f51ea6e2c7cbaae328da82 +Description: Intel® oneAPI Video Processing Library + + +Package: intel-oneapi-openmp +Architecture: amd64 +Version: 2021.1.1-189 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-openmp-2021.1.1 +Filename: pool/main/intel-oneapi-openmp-2021.1.1-189_amd64.deb +Size: 2408 +MD5sum: 14698ceab28eb091728325f1554a71eb +SHA1: 4c255c4ee334a56fbb486b13819dc0bbc4635c97 +SHA256: fd1014554eca30bb22bc0aa946a098e0f8932be3479512bf2a74feffb20e85ca +SHA512: 884535097a7c5877a1cb4f60e8052298e4fdc714e96da19ca8ffd1ede9aa4e0881b9f39c25205085f22e0e084bbf3260bc09622a0aea6c2445ddfec716ab3dcc +Description: Intel® OpenMP* Runtime Library 2021.1.1 for Linux* for Intel(R) 64 + + +Package: intel-oneapi-openmp-2021.1.1 +Architecture: amd64 +Version: 2021.1.1-189 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 179837 +Depends: intel-oneapi-condaindex, intel-oneapi-openmp-common-2021.1.1,intel-oneapi-common-vars,intel-oneapi-common-licensing +Filename: pool/main/intel-oneapi-openmp-2021.1.1-2021.1.1-189_amd64.deb +Size: 178422104 +MD5sum: 67c249abee272f5569fb1622b57c494e +SHA1: 44bc91ad1351bdbdf0a025a5219cd738bb7520c1 +SHA256: e288398ca178a63a51da8f7e8e34aa4f5efb77e88b0bf765d36dc50b353e3059 +SHA512: 25035b71a221fb2ff0081a1a035999d099763aa32431368847c7377e272893793966f04ea30af44a8a32153d04ac717ec9475a282389bb7c95112bdeaec75234 +Description: Intel® OpenMP* Runtime Library 2021.1.1 for Linux* for Intel(R) 64 + + +Package: intel-oneapi-openmp-2021.1.2 +Architecture: amd64 +Version: 2021.1.2-266 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 179635 +Depends: intel-oneapi-condaindex, intel-oneapi-openmp-common-2021.1.2,intel-oneapi-common-vars,intel-oneapi-common-licensing +Filename: pool/main/intel-oneapi-openmp-2021.1.2-2021.1.2-266_amd64.deb +Size: 178198298 +MD5sum: 5e54e569dd1a4b223cc39d8215eb413f +SHA1: df9e851bb29ce0134d093328cc18e359bb0e805b +SHA256: 20be085293a610a3e536e37f22258d69b62d86df9394ccb9923ac6ba57c63c3e +SHA512: 1e9f62e1607fd4db0b4da83bc4178cfc3d049d60b9f0246e02187dc94bf0c3f63d9f785f98f42142ded1cac9bcff626bbb1ff98ed719768d27fe2b0288ea7871 +Description: Intel® OpenMP* Runtime Library 2021.1.2 for Linux* for Intel(R) 64 + + +Package: intel-oneapi-openmp +Architecture: amd64 +Version: 2021.1.2-266 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-openmp-2021.1.2 +Filename: pool/main/intel-oneapi-openmp-2021.1.2-266_amd64.deb +Size: 2414 +MD5sum: e2b30d8655577d08e5d96470b9b53d9d +SHA1: 5fc7374942cd1e1afc875d1056942c947b04bfe7 +SHA256: 01858c079484d8a03cf19edab721d101f962cbcdb2d2933653a940415a9d01f3 +SHA512: 5ed2bf14220bafbd5390f81cc4152b571b7977bc5904ee31f9c00c8c226dca2ac2d1a5b6737e54e5d4a3c6feb870dba573411ee489ef23a72fd07c1c8e349735 +Description: Intel® OpenMP* Runtime Library 2021.1.2 for Linux* for Intel(R) 64 + + +Package: intel-oneapi-openmp-2021.2.0 +Architecture: amd64 +Version: 2021.2.0-610 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 190997 +Depends: intel-oneapi-condaindex (>= 2021.2.0-94), intel-oneapi-openmp-common-2021.2.0, intel-oneapi-common-vars (>= 2021.2.0-195), intel-oneapi-common-licensing-2021.2.0 +Filename: pool/main/intel-oneapi-openmp-2021.2.0-2021.2.0-610_amd64.deb +Size: 189727192 +MD5sum: 8d794547beecf75a0aadbaaba0048020 +SHA1: 4413a5cb90cd9ef79797a32c5cb5cfb999f3ee50 +SHA256: aaec45cb7240bcf5626728d5b59afb121a10ea4db46707bf38b061caa5161ef3 +SHA512: 3e30b019f137f0a06f3864da85fe66264dc345b2c8a5e6e25c4b747460eaff67bd492e857ce49c17a3ff5d45b9d91ce6d352dc9f039d2f394d34c401b3779a72 +Description: Intel® OpenMP* Runtime Library 2021.2.0 for Linux* for Intel(R) 64 + + +Package: intel-oneapi-openmp +Architecture: amd64 +Version: 2021.2.0-610 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-openmp-2021.2.0 +Filename: pool/main/intel-oneapi-openmp-2021.2.0-610_amd64.deb +Size: 1858 +MD5sum: bc72a0653537066d6ac762c03b251d4d +SHA1: 8cca586b41f965391b543b62ccf44e5ef13a131b +SHA256: 8b0b99e2e4f03640028ddb1908328fd26a9ce4f28a5a0b961335a8b2f8a6ca60 +SHA512: 40e6aa0217d2d0c7719dedb0937756e096e3760fb0a692fb1638eea3e77777e57ab8aa386df4c3e0c8f8175b66b7136432f50186e8435d555665e9397fe7a047 +Description: Intel® OpenMP* Runtime Library 2021.2.0 for Linux* for Intel(R) 64 + + +Package: intel-oneapi-openmp-2021.3.0 +Architecture: amd64 +Version: 2021.3.0-3350 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 123366 +Depends: intel-oneapi-condaindex (>= 2021.3.0-159), intel-oneapi-openmp-common-2021.3.0, intel-oneapi-common-vars (>= 2021.3.0-261), intel-oneapi-common-licensing-2021.3.0 +Filename: pool/main/intel-oneapi-openmp-2021.3.0-2021.3.0-3350_amd64.deb +Size: 120466376 +MD5sum: 8e34ce2e964156cbff67a17bc460aee7 +SHA1: 0a66d22cbcd883451dffd1d7871fbb13b913467b +SHA256: 5912050b4f6c17c54c780ab461d386214ae9abaae532f0da55b9c4c69f11f662 +SHA512: c66284bd9957ad96ebce925aaa858b496a1e3417b33703885b1ca2740f344b692a19c59393779672e6b712101a55a4e0c3002de61b57f16d56af4290863e7fce +Description: Intel® OpenMP* Runtime Library 2021.3.0 for Linux* for Intel(R) 64 + + +Package: intel-oneapi-openmp +Architecture: amd64 +Version: 2021.3.0-3350 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-openmp-2021.3.0 +Filename: pool/main/intel-oneapi-openmp-2021.3.0-3350_amd64.deb +Size: 1858 +MD5sum: a7eaf774e2490ae27dbdb090fbfd993d +SHA1: 8773eca15755738ba8093c336b7d565b62ee3461 +SHA256: 756a27e3fa332872a83f176134af622a758b8772767ef49fcc36933cbc257ae8 +SHA512: b21bf51df7b6ad87acd59659c6854ce169e507379368268101357a42098478a7f5bf40f3fe9f6167342b2ad209f19a42fd64fee5fc12a8aa8be45d99a4bf9442 +Description: Intel® OpenMP* Runtime Library 2021.3.0 for Linux* for Intel(R) 64 + + +Package: intel-oneapi-openmp-2021.4.0 +Architecture: amd64 +Version: 2021.4.0-3561 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 140007 +Depends: intel-oneapi-condaindex (>= 2021.4.0-207), intel-oneapi-openmp-common-2021.4.0, intel-oneapi-common-vars (>= 2021.4.0-327), intel-oneapi-common-licensing-2021.4.0 +Filename: pool/main/intel-oneapi-openmp-2021.4.0-2021.4.0-3561_amd64.deb +Size: 119314094 +MD5sum: a42003e929f95d63bfcbd4c9eb722c9b +SHA1: b8a3da7c1701f61697272955057147586a7e575d +SHA256: 5a146cb244f09c0d208d0c9f8cbedac9bf73b320c626567c2a015bb21353fa83 +SHA512: 71f9c55bde0d5ed599a7ba4a3e5e4227a7772e26c94f98b80408115ef6c5b7a75958e084be87aa1f638e62d0ecd298a317c059a54d66997ee027e707c1a25eef +Description: Intel® OpenMP* Runtime Library 2021.4.0 for Linux* for Intel(R) 64 + + +Package: intel-oneapi-openmp +Architecture: amd64 +Version: 2021.4.0-3561 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-openmp-2021.4.0 +Filename: pool/main/intel-oneapi-openmp-2021.4.0-3561_amd64.deb +Size: 2268 +MD5sum: cf3cd6f3d84cddf0cbf07420d76d389f +SHA1: d248ae7dcc6d4d9d4b10df46a6b505f098ea2492 +SHA256: b8dcc08d1b4ce08d3ed38920b7c1b656d57ad98dbc22ea5252b40db571b45a01 +SHA512: ff2a72ff0583bbce6b5db3a27a64fc47482b61a895fc40a94104c25bfd8f8ede40e2637ec1734a23962202335b83df55c0fe9974c1c3f7c6463318a4d0635f5e +Description: Intel® OpenMP* Runtime Library 2021.4.0 for Linux* for Intel(R) 64 + + +Package: intel-oneapi-openmp-2022.0.1 +Architecture: amd64 +Version: 2022.0.1-3633 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 183139 +Depends: intel-oneapi-condaindex (>= 2022.0.0-74), intel-oneapi-openmp-common-2022.0.1, intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-openmp-2022.0.1-2022.0.1-3633_amd64.deb +Size: 162484344 +MD5sum: 3782614b6084c12370bb3ae06f2df7c6 +SHA1: 05d7c7cc4ff28ef15342f37dccc69671f74cdb2a +SHA256: c289bc62d6e35287349ee7fe3a80622bc747a6c5586f93d50bc5713a91079ad1 +SHA512: e3da3489102d063f90180c31c67687546926ff3cd57659c358bc4c0463f58850ba6ba098d6cb3f3d962a5b71953d0836d5ff5d9030c70cd291c32268cfff2a14 +Description: Intel® OpenMP* Runtime Library 2022.0.1 for Linux* for Intel(R) 64 + + +Package: intel-oneapi-openmp +Architecture: amd64 +Version: 2022.0.1-3633 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-openmp-2022.0.1 +Filename: pool/main/intel-oneapi-openmp-2022.0.1-3633_amd64.deb +Size: 2268 +MD5sum: 7040687501494d0b5b3695c07b225e8a +SHA1: d6cf4c2aff606072778ea140bac25c707b935c88 +SHA256: ee5f2b6861c1ee30255aa6ad78bde598beadd22aab868473ba4bbb65fec59bd0 +SHA512: 8f6631cf09e314f41dd3581ce92df191ebf3c3ba2479912ca2acc7d89fc0071bb3b000c45963f5083e6752758c27193d93548bf98361c5ff3a2b305fbe2f1960 +Description: Intel® OpenMP* Runtime Library 2022.0.1 for Linux* for Intel(R) 64 + + +Package: intel-oneapi-openmp-2022.0.2 +Architecture: amd64 +Version: 2022.0.2-3658 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 183097 +Depends: intel-oneapi-condaindex (>= 2022.0.0-74), intel-oneapi-openmp-common-2022.0.2, intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-openmp-2022.0.2-2022.0.2-3658_amd64.deb +Size: 162465116 +MD5sum: 6beff3df6477f17744a61ed4070c0911 +SHA1: 22dcf3e9bc29535ca731f3403265d27a9817ad3b +SHA256: d4a7a943a2ba166e07a6a83913622af78183764acf8f4b637da572fa68a28bac +SHA512: 721dddb550af29668316aeabe1cac79b8fcab5e692a00be61b00cbbb1cc3c652dc6f31d920335b275d8a37c5e31b623dfb7ffb80e7f11ab59536bb0d0fdee7f7 +Description: Intel® OpenMP* Runtime Library 2022.0.2 for Linux* for Intel(R) 64 + + +Package: intel-oneapi-openmp +Architecture: amd64 +Version: 2022.0.2-3658 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-openmp-2022.0.2 +Filename: pool/main/intel-oneapi-openmp-2022.0.2-3658_amd64.deb +Size: 2270 +MD5sum: 1db98db0439388d3445f32006004cae6 +SHA1: 134659d26a4de38d7613ce4d499e528bf54582b1 +SHA256: 20239518c8398487f83aa0583d8210a12f55ec7af3959b4a6be6ef8176d0ea9e +SHA512: 40b8bd552f2c0be4707b5569adbb2eaaf5777075facdc02d1ef2d91e88ad82e667e01e8f26a427ae7a42332d21c70556f38af22ba00e3f59134800aaf2a87166 +Description: Intel® OpenMP* Runtime Library 2022.0.2 for Linux* for Intel(R) 64 + + +Package: intel-oneapi-openmp-2022.1.0 +Architecture: amd64 +Version: 2022.1.0-3768 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 191416 +Depends: intel-oneapi-condaindex (>= 2022.1.0-155), intel-oneapi-openmp-common-2022.1.0, intel-oneapi-common-vars (>= 2022.1.0-161), intel-oneapi-common-licensing-2022.1.0 +Filename: pool/main/intel-oneapi-openmp-2022.1.0-2022.1.0-3768_amd64.deb +Size: 169859266 +MD5sum: 0b5a265cf77913638dcd5f3789721b58 +SHA1: 2e91abc48b0f8fefe8b6c3e02ff531172431d835 +SHA256: 34fa220340f3d488beb06bb7fb879712e5a999d7580574f63805b0c93fe506fc +SHA512: 6984bb53064ff02ae19244127d72f2898d8ace173ee9a0ac4b82ecff2be5f0a57b0c7650cb39787cb9c2a8358ccd392195f015e5fb291a207cbf8c80b10e1570 +Description: Intel® OpenMP* Runtime Library 2022.1.0 for Linux* for Intel(R) 64 + + +Package: intel-oneapi-openmp +Architecture: amd64 +Version: 2022.1.0-3768 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-openmp-2022.1.0 +Filename: pool/main/intel-oneapi-openmp-2022.1.0-3768_amd64.deb +Size: 2656 +MD5sum: 96e0b1c6420e12b3d791877ea5b2b185 +SHA1: 7d65705eb8c9dada5b4a52539abed24a64dd4f18 +SHA256: 4031966b597850b56d4170fa8de2488488a0c3203ea15bfe120ab6af3bf5078e +SHA512: 687b65ca2a10e17a61699770f6f706ba57444ba763434e708559593784f18f877fea53a4e766afdb08faad838394dad4465517a33cc68441b8808f5f79def616 +Description: Intel® OpenMP* Runtime Library 2022.1.0 for Linux* for Intel(R) 64 + + +Package: intel-oneapi-openmp-2022.2.0 +Architecture: amd64 +Version: 2022.2.0-8734 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 209408 +Depends: intel-oneapi-condaindex (>= 2022.2.0-8695), intel-oneapi-openmp-common-2022.2.0, intel-oneapi-common-vars (>= 2022.2.0-8694), intel-oneapi-common-licensing-2022.2.0 +Filename: pool/main/intel-oneapi-openmp-2022.2.0-2022.2.0-8734_amd64.deb +Size: 182233458 +MD5sum: f9e9142e6ba21c654048cf5bdb3b6c67 +SHA1: ad0484f1255382c6264a5ab605cd90d611c14575 +SHA256: d197ad68264b1b83c326125883d72766a97c4b271cffed10703fab38268e4525 +SHA512: 736135b2de2a0ed8a425f9865dd78fe151812725663ec8859dbd1764d568f68f26a1716957e01e06c02ba7b54ee772d9d07c04568b3e7d6e34153d8f4b3795ab +Description: Intel® OpenMP* Runtime Library 2022.2.0 for Linux* for Intel(R) 64 + + +Package: intel-oneapi-openmp +Architecture: amd64 +Version: 2022.2.0-8734 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-openmp-2022.2.0 +Filename: pool/main/intel-oneapi-openmp-2022.2.0-8734_amd64.deb +Size: 2652 +MD5sum: b6c846a4f04a8bd000e562b8b4a477d1 +SHA1: 42c9b9bff595e1c2a943660b1ba29f7b4e7d1f27 +SHA256: e37fb878589ccb5e38080e8def3a80d2fe12d33b06678c534370b9a813a9bdc6 +SHA512: 0ccd39691f97b2bb4b2f32d753241fc85c92c8ffd4ba410ee4c9276defdae865714548753ad2b2a3a8d35f425f90cc12a7f7a41c86c9a2a96b62e337c7d4845d +Description: Intel® OpenMP* Runtime Library 2022.2.0 for Linux* for Intel(R) 64 + + +Package: intel-oneapi-openmp +Architecture: amd64 +Version: 2022.2.1-16953 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-openmp-2022.2.1 +Filename: pool/main/intel-oneapi-openmp-2022.2.1-16953_amd64.deb +Size: 2660 +MD5sum: fdf7363fd2d36eb8d58454168cc1c9a8 +SHA1: 2a3af66bfad66adf920f08fd7661ed33b145c794 +SHA256: c2fd26063b6fbd5ed575151b1ff8e05ba9b1cab53762856f8601c77554de84e2 +SHA512: 67fdb07126ae1d7b7deff51bcea023714cbef0e8143d257b4dd5f9d13dd0206e52fd17be99550e3badbe0a538a2269d74b7bb732ddc61318681da8ca89779ea6 +Description: Intel® OpenMP* Runtime Library 2022.2.1 for Linux* for Intel(R) 64 + + +Package: intel-oneapi-openmp-2022.2.1 +Architecture: amd64 +Version: 2022.2.1-16953 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 209422 +Depends: intel-oneapi-condaindex (>= 2022.2.1-14970), intel-oneapi-openmp-common-2022.2.1, intel-oneapi-common-vars (>= 2022.2.1-14969), intel-oneapi-common-licensing-2022.2.1 +Filename: pool/main/intel-oneapi-openmp-2022.2.1-2022.2.1-16953_amd64.deb +Size: 182201086 +MD5sum: 3e013f1129b744014e2c30d447c749fd +SHA1: bdc1f4c0efd8a3aea6864162efd24e9889a0fb7f +SHA256: 57c7ba6f7e6a679febeef215316d89943f943514a8ff1c2a4022387f4b576763 +SHA512: fe8fd04e3320c4aefd02830e87360925b077b82128135d450b187adfd48d31beeae0b79b3cfde0b04994456eecb750ebb8df4898b1a108e30c5c8828156ae6d8 +Description: Intel® OpenMP* Runtime Library 2022.2.1 for Linux* for Intel(R) 64 + + +Package: intel-oneapi-openmp-2023.0.0 +Architecture: amd64 +Version: 2023.0.0-25370 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 265930 +Depends: intel-oneapi-condaindex (>= 2023.0.0-25326), intel-oneapi-openmp-common-2023.0.0, intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing-2023.0.0 +Filename: pool/main/intel-oneapi-openmp-2023.0.0-2023.0.0-25370_amd64.deb +Size: 221237110 +MD5sum: 20f42de6e2dcc09f460d4c9271180934 +SHA1: 3c633dcd8cef5839840655c22024598d8b023989 +SHA256: 91aafe8566afc0326b236462e09dfd937b32c91fd04628f6445317479862147d +SHA512: 064e2d107be6bc71129b2e4cd7decb484d38bc5dd50f43f2fb7343f817968ed0b6cb125a9f786f85560b6085130f8af7a84c0dbe07bd493c27bc7e0a88e2bcd4 +Description: Intel® OpenMP* Runtime Library 2023.0.0 for Linux* for Intel(R) 64 + + +Package: intel-oneapi-openmp +Architecture: amd64 +Version: 2023.0.0-25370 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-openmp-2023.0.0 +Filename: pool/main/intel-oneapi-openmp-2023.0.0-25370_amd64.deb +Size: 2660 +MD5sum: cc1a66258af48f89b631684f469cbd9b +SHA1: d37eb81d3e42cc8cb6d6c0c3c8db8e849de3cb21 +SHA256: c5b7499cf70bbec437354d4156c330c1e9f38ecd514d567a2e17427418239b67 +SHA512: 53bc609d72c4583800a59c89d88410792f6a52b8cc53b7da1f2ecca3f2c44b693b2782b8b09a13589491f53d4a61aafb40cbb3cd1401c02b6c9417301c4e324e +Description: Intel® OpenMP* Runtime Library 2023.0.0 for Linux* for Intel(R) 64 + + +Package: intel-oneapi-openmp-2023.1.0 +Architecture: amd64 +Version: 2023.1.0-46305 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 261252 +Depends: intel-oneapi-condaindex (>= 2023.1.0-43291), intel-oneapi-openmp-common-2023.1.0, intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing-2023.1.0 +Filename: pool/main/intel-oneapi-openmp-2023.1.0-2023.1.0-46305_amd64.deb +Size: 208537090 +MD5sum: df85d5804a4be5541ed955121eecf009 +SHA1: a24ac1156c9976515f164f26a4e07c9daf81e671 +SHA256: 6455ee16e4b5ab482ca57a607c20b7387ebc74ab0e1787d2a0beb7ad38c74443 +SHA512: c1c74107417c330a2414bb9919ec81c7738b742447cce0ebadf14cbf580ce112b01cbf191cf87245c2f568046b76b6fafc5e4d2260be2f150591bdae2321a91f +Description: Intel® OpenMP* Runtime Library 2023.1.0 for Linux* for Intel(R) 64 + + +Package: intel-oneapi-openmp +Architecture: amd64 +Version: 2023.1.0-46305 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-openmp-2023.1.0 +Filename: pool/main/intel-oneapi-openmp-2023.1.0-46305_amd64.deb +Size: 2660 +MD5sum: c72c41ad944d69fd091a0170cef08993 +SHA1: fc786893c70c59af287a1ffa867a0f4c191dae7d +SHA256: a9df63b772b04bca349653aaf0a9e0fcc81e5ef575d1e3036a94aa1c3504d2b5 +SHA512: 88c3d34a6510d2f65d9bb9caccd28011909ba9b73e73e4af78ac54764ae6f115e7400278701f6e34d16fe6fb83fe62a3d04b6ba09e74f2009d6daab390334c44 +Description: Intel® OpenMP* Runtime Library 2023.1.0 for Linux* for Intel(R) 64 + + +Package: intel-oneapi-openpgl-0.5.0 +Architecture: amd64 +Version: 0.5.0-47121 +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1826 +Depends: intel-oneapi-rkcommon-1.11.0, intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing-2023.1.0 +Filename: pool/main/intel-oneapi-openpgl-0.5.0-0.5.0-47121_amd64.deb +Size: 310264 +MD5sum: bf71cde8332309c46569a36a84e0460f +SHA1: 07fd37b2c496a9d138ad0c8eac9e98b95295354d +SHA256: c443d4dde1691373772deedef31e88553a7c138801ac898ff246d88f29fb089c +SHA512: fb84c10ac7752ea52d79235de44ec203f0ee81ef0c744b44102dc31ef5ec2af20879b617f4529060af9a4c854fb937a57b042e06bbb4d99ee0eabf930e4798f6 +Description: Intel® Open Path Guiding Library + + +Package: intel-oneapi-openpgl +Architecture: amd64 +Version: 0.5.0-47121 +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-openpgl-0.5.0 +Filename: pool/main/intel-oneapi-openpgl-0.5.0-47121_amd64.deb +Size: 1708 +MD5sum: d342bee94ca499faa895a7d83c0e13ab +SHA1: d99aa45dfa5fe258295292c35b6482d1b9d632cf +SHA256: 68dc503192f10d2126e09350e2b9d2f3c55b7da039e95f4f9a06490e4f933e25 +SHA512: 626d31df83f88ec1919be3de678fc61dbef56dee87212e612ea373977d1d4167bb62e00f138582c791c803a4226e3485997c90b92724ac3c36de7bc5ac127ec1 +Description: Intel® Open Path Guiding Library + + +Package: intel-oneapi-openvkl-0.11.0 +Architecture: amd64 +Version: 0.11.0-87 +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 21733 +Depends: intel-oneapi-rkcommon, intel-oneapi-embree,intel-oneapi-common-vars,intel-oneapi-common-licensing,intel-oneapi-common-vars,intel-oneapi-common-licensing +Filename: pool/main/intel-oneapi-openvkl-0.11.0-0.11.0-87_amd64.deb +Size: 4088154 +MD5sum: a627e16db5f260fb0e3bdf380b1d35c5 +SHA1: d50d885d8cdb7b792438d437e457da320b163d43 +SHA256: de949a42a22d1db69f31bf5687dcdaef69b372a1b2cfcc8fc3123c27d3a5484a +SHA512: bcf9a1f6c9a31db7c4e8272ba3b46234f3d72e9431891ea27b6b5c3f2aaf72670152e3a1d37370465e3b01c981d03fafc771979275792757e38bfc4629d4d555 +Description: Intel® Open Volume Kernel Library + + +Package: intel-oneapi-openvkl +Architecture: amd64 +Version: 0.11.0-87 +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-openvkl-0.11.0 +Filename: pool/main/intel-oneapi-openvkl-0.11.0-87_amd64.deb +Size: 2290 +MD5sum: a6a3d2bef6c2e137361a609d5d881b70 +SHA1: 91af82aa3139da859bf11e7e9aa09f905e130603 +SHA256: f6b855314f57d7a325b4394657183820bea8d040b79f0d230745b54e365a344a +SHA512: 23ad97c366a72930f2ad4afdb8ef38a9581158c6f2a739919d0eb29c0c3a9b1476e7435abce3e9f6315ac905aa879d74753c9856b10fc08ff54ad4141235ba77 +Description: Intel® Open Volume Kernel Library + + +Package: intel-oneapi-openvkl-0.12.0 +Architecture: amd64 +Version: 0.12.0-26 +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 31745 +Depends: intel-oneapi-rkcommon-1.6.0, intel-oneapi-embree-3.12.2, intel-oneapi-common-vars (>= 2021.2.0-195), intel-oneapi-common-licensing-2021.2.0 +Filename: pool/main/intel-oneapi-openvkl-0.12.0-0.12.0-26_amd64.deb +Size: 5263836 +MD5sum: 3bcfeefede1dc523a44a7c282ae06dc0 +SHA1: 9887853505aef909d593d1b0ca077643a0e885a8 +SHA256: f4d2cec895258d6165d15d54ad648cd12a1e9cef8e5d05e3ed95740f7597c5cb +SHA512: f4eb8ac4631894ef8494f03b6fe1dd87f49a569af41f1a8bca568b0dc2513598e1c22e1d4aea91c8701ac2212beb8e7a1b65f5bc740ef196041cad59d8de7d47 +Description: Intel® Open Volume Kernel Library + + +Package: intel-oneapi-openvkl +Architecture: amd64 +Version: 0.12.0-26 +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-openvkl-0.12.0 +Filename: pool/main/intel-oneapi-openvkl-0.12.0-26_amd64.deb +Size: 2290 +MD5sum: b5bec3b5e756554f715e43d9f94fdd98 +SHA1: 88ea375541db5aead11527723cb49c11cfc39ed2 +SHA256: da97392c73fde0386e493f864c826ae1833777026495ee8af577a1781f997bed +SHA512: 49ce71e3bfb4d509093a38b8b20affb39d3b10db20171bc7a9287023d28a2593da7c022ea6d39be706b4bea47cd9f8f78e77a94526f924d97d0bad46c17c35ef +Description: Intel® Open Volume Kernel Library + + +Package: intel-oneapi-openvkl-0.13.0 +Architecture: amd64 +Version: 0.13.0-65 +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 193700 +Depends: intel-oneapi-rkcommon-1.6.1, intel-oneapi-embree-3.13.0, intel-oneapi-common-vars (>= 2021.3.0-261), intel-oneapi-common-licensing-2021.3.0 +Filename: pool/main/intel-oneapi-openvkl-0.13.0-0.13.0-65_amd64.deb +Size: 38113294 +MD5sum: 4d328d36d1b8e3d8daa8e1c6e1ef54e3 +SHA1: fd3fc12e60fb5163feaadaf1928d7e78a67cb078 +SHA256: f5401cb72beaba9251cdaaf8c3d9e4703567a48b53c9e6d2025df03307866728 +SHA512: 39cf4f66d771ea28342fb6c4e117461e8b8b94e55a661ec8033f21ee447cc504d91ed453fce3486e4381a26d6573a6e1a5f24f12e3ebb6afbe7636fdb5a6e22f +Description: Intel® Open Volume Kernel Library + + +Package: intel-oneapi-openvkl +Architecture: amd64 +Version: 0.13.0-65 +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-openvkl-0.13.0 +Filename: pool/main/intel-oneapi-openvkl-0.13.0-65_amd64.deb +Size: 1628 +MD5sum: 5db8367c530ce70909df7dd0cdef5cb9 +SHA1: 040574a74dea2264d9cd6aae38ca1ceadbb93ffd +SHA256: 71c0b3ae6eca45a744f55e110e7b4d0cdeabbed66c6e1362cd32e4e8bf100059 +SHA512: f17b7efa71b94cfbf35d6e9529196eda0fa0a4e9f438077eeb6d2c18d4551b44636d7c648773c25b1bf1989cb82fd47a52d5f885c9988c3589b55c10f5bc1478 +Description: Intel® Open Volume Kernel Library + + +Package: intel-oneapi-openvkl-1.0.0 +Architecture: amd64 +Version: 1.0.0-123 +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 39660 +Depends: intel-oneapi-rkcommon-1.7.0, intel-oneapi-embree-3.13.1, intel-oneapi-common-vars (>= 2021.4.0-327), intel-oneapi-common-licensing-2021.4.0 +Filename: pool/main/intel-oneapi-openvkl-1.0.0-1.0.0-123_amd64.deb +Size: 7041906 +MD5sum: e0119adadba7a61b24bb051bdeb92675 +SHA1: 39735cbfade2a6a19186ee258ba209e657fb8494 +SHA256: ae6a9eeefb0d04cf992ac944cf8fa2a63aafdc399f9111d7e0e39a3c7579ef65 +SHA512: dd5b0943e6cbccd70c3cd642372946b8c3c39f4d549382d27d49b6a9d00240ff774f88c76f4ee6b6cdec38ad9ed420e3f942a025060d59b8e8b6425ab5d0c8ee +Description: Intel® Open Volume Kernel Library + + +Package: intel-oneapi-openvkl +Architecture: amd64 +Version: 1.0.0-123 +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-openvkl-1.0.0 +Filename: pool/main/intel-oneapi-openvkl-1.0.0-123_amd64.deb +Size: 1628 +MD5sum: f2ad40bc93d213af9b0be92139ead755 +SHA1: fe9c5397221bf7cb6636c3a0fa69742d91ac66bb +SHA256: a3dde9720db8403b7b0523008c690637873b1f9db096f97030eba28c59858d62 +SHA512: ef70adc477e758e8908933111b2ac4c048d838a1bb7ace6757b37839bbe3fa0269ff1d1036a727e3051eb7cdbd0328ac770ca285653743a0502b4f624f802c86 +Description: Intel® Open Volume Kernel Library + + +Package: intel-oneapi-openvkl-1.1.0 +Architecture: amd64 +Version: 1.1.0-77 +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 40294 +Depends: intel-oneapi-rkcommon-1.8.0, intel-oneapi-embree-3.13.2, intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-openvkl-1.1.0-1.1.0-77_amd64.deb +Size: 7177684 +MD5sum: 3c4b89acb596fafe98068c974963cbe7 +SHA1: d2366f562d0b515c24656f2b68c465fdd4e1d31c +SHA256: c45e2303dc7f9f75ce396b2469838ec6e78845868eccfe258ef8fc8e533f1fb7 +SHA512: 7ce2a65191c1f8fcf17fbb5070fbb26e397b4674f8a702d63a814a51ffdeea69b13ed14df4b6b7ca7636d4a75fe5ffe2271f50c97d08347ddfd08faf23587082 +Description: Intel® Open Volume Kernel Library + + +Package: intel-oneapi-openvkl +Architecture: amd64 +Version: 1.1.0-77 +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-openvkl-1.1.0 +Filename: pool/main/intel-oneapi-openvkl-1.1.0-77_amd64.deb +Size: 1626 +MD5sum: cc4204e95e851a44162542e32e15d959 +SHA1: d599e4a249f15b3f96a87b861a13bf37c9cba0d2 +SHA256: d52471413a7637f0181405848a7e99cb9fd7d349ca4b40cd22f6978c36cac0ae +SHA512: 4572078e6ab04ed426703ac95c1a6e9c53056fc3d8a58634133b2845314f29f7418d078f9c35481d3eb6dc698e7171d6e9342de69afc3556051a98a2ed7f0366 +Description: Intel® Open Volume Kernel Library + + +Package: intel-oneapi-openvkl-1.2.0 +Architecture: amd64 +Version: 1.2.0-187 +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 40944 +Depends: intel-oneapi-rkcommon-1.9.0, intel-oneapi-embree-3.13.3, intel-oneapi-common-vars (>= 2022.1.0-161), intel-oneapi-common-licensing-2022.1.0 +Filename: pool/main/intel-oneapi-openvkl-1.2.0-1.2.0-187_amd64.deb +Size: 7325072 +MD5sum: 0cb96e496679c1c0d83948d2ea85e999 +SHA1: 3de6f2c52bdeb439063e43bb432f0cd0d6315bed +SHA256: 342d7ab4d2eb5aabc03d770412b470677d9da7ef7972659caebe8bd2eb63ec25 +SHA512: 0bfdec4f2d4dc255689bc7dab878e7b12399b795a9b28ef67575258316fa4913165f4e94de4f6a820423e019aee915d7f4d7a3a619383865bfa86c19d53e2892 +Description: Intel® Open Volume Kernel Library + + +Package: intel-oneapi-openvkl +Architecture: amd64 +Version: 1.2.0-187 +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-openvkl-1.2.0 +Filename: pool/main/intel-oneapi-openvkl-1.2.0-187_amd64.deb +Size: 1708 +MD5sum: ce0f97e7578bf9e23f8dc5082b70142d +SHA1: 758404b5e9cdff62c04348fbb8dd5103885e1656 +SHA256: 4cdd5ff485974d28e371a718dad3203e546097b54e27aa7e8e642d07ff2a2cfb +SHA512: 04cf68b0951ea4d2e0282d6edff9440f9f0bbe9a1e30306bc34874acea86b08caeb3f30150447f404ca5d31a6cb2dcde64fbf9908cc00da4f1bd052c1fdd07a4 +Description: Intel® Open Volume Kernel Library + + +Package: intel-oneapi-openvkl-1.3.0 +Architecture: amd64 +Version: 1.3.0-8735 +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 41198 +Depends: intel-oneapi-rkcommon-1.10.0, intel-oneapi-embree-3.13.4, intel-oneapi-common-vars (>= 2022.2.0-8694), intel-oneapi-common-licensing-2022.2.0 +Filename: pool/main/intel-oneapi-openvkl-1.3.0-1.3.0-8735_amd64.deb +Size: 7391392 +MD5sum: b232ff532c208ad506c325d4d59a6dd2 +SHA1: 4ceaf0dcfd5113917508c1e2ca84d187e19bef9e +SHA256: 6fed06b2f791f12caec1678fa0fba329be6fb9390504d51acc506232230cd6c1 +SHA512: db2e39711b0882e2b4f80dacca6253914e536d89a84689c1655cb73f314f185c1fe93a8d9e8d4b085937f51ce6fadef21e977347e2d518cf77806bcbf5449d9c +Description: Intel® Open Volume Kernel Library + + +Package: intel-oneapi-openvkl +Architecture: amd64 +Version: 1.3.0-8735 +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-openvkl-1.3.0 +Filename: pool/main/intel-oneapi-openvkl-1.3.0-8735_amd64.deb +Size: 1700 +MD5sum: d3f2475c25d11b60b2cfd6ce6941e401 +SHA1: 4eaf66b474011f71101d336a8e01fd8da5ab00bb +SHA256: 0955f9bb2567b24f84e07316d023cda6c3e4550ee6a3ae98c30e4200fa5ac949 +SHA512: 8271c1a3c2bee47916ece47bdb0ba33bd038cfffd2e8b9c6b33bf8f4464e4aafbc870082a5298a33fd57e0415c40508b1496bc5db3d21b9aff8a3a12cfda5cac +Description: Intel® Open Volume Kernel Library + + +Package: intel-oneapi-openvkl-1.3.1 +Architecture: amd64 +Version: 1.3.1-21158 +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 41191 +Depends: intel-oneapi-rkcommon-1.10.0, intel-oneapi-embree-3.13.5, intel-oneapi-common-vars (>= 2022.2.1-14969), intel-oneapi-common-licensing-2022.2.1 +Filename: pool/main/intel-oneapi-openvkl-1.3.1-1.3.1-21158_amd64.deb +Size: 7391148 +MD5sum: dc1b4b0c5137bee4af5f762d597fd2ed +SHA1: e495884fea1abd0a08f89ea612d0c6ee8c5f63e7 +SHA256: 7a90562034b9f62a4cf53d1d373a5961ec2de5145619310f3ceba67083923066 +SHA512: d411a687cbdd4715f5e4f419124d9197f710364941df29c043a9da88d696b19ced526b3dbe5c9c97aa36bb9da1ccbfbf2a9dfe72ec636e3a5bc92de48b7846d4 +Description: Intel® Open Volume Kernel Library + + +Package: intel-oneapi-openvkl-1.3.1 +Architecture: amd64 +Version: 1.3.1-25381 +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 41191 +Depends: intel-oneapi-rkcommon-1.10.0, intel-oneapi-embree-3.13.5, intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing-2023.0.0 +Filename: pool/main/intel-oneapi-openvkl-1.3.1-1.3.1-25381_amd64.deb +Size: 7391676 +MD5sum: ee1becd0855ad6de332a920bd1c846ff +SHA1: 2ff5247f4389d5c3ce497e518095c0d6983a156f +SHA256: 8b361e52e2faa4de58796fbc92813f8705612c0d96ff0cfc9bd35233c15810ce +SHA512: 473effa86add3356dffc23f6105d49631d2f0dce069ad491153ad0a9d07ea4872e78336cd6fa2f8e3c53185276e029e7b2ccfb7ce748090aaffdf916594462fc +Description: Intel® Open Volume Kernel Library + + +Package: intel-oneapi-openvkl +Architecture: amd64 +Version: 1.3.1-21158 +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-openvkl-1.3.1 +Filename: pool/main/intel-oneapi-openvkl-1.3.1-21158_amd64.deb +Size: 1708 +MD5sum: f7ec875fef7d7f1e772d5a09864661cd +SHA1: 13e5701bc9c93aaaaeb016cdbf63a8e94e7f8e78 +SHA256: 1264bba53ac65fd347c624cf0d837a0a7aefc4a5c91b35839266fa68b1a7f10b +SHA512: ab546e9f2c06df19b06d9ab0a076e36f4252ab3a6fd1c498294e2c7c53c54dacd500969140aad27e803ba56b2b1dc714168869082765eb43e0fbe547bd297a64 +Description: Intel® Open Volume Kernel Library + + +Package: intel-oneapi-openvkl +Architecture: amd64 +Version: 1.3.1-25381 +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-openvkl-1.3.1 +Filename: pool/main/intel-oneapi-openvkl-1.3.1-25381_amd64.deb +Size: 1708 +MD5sum: 3eb645bd9b4eb75533ce4ecc947be666 +SHA1: f7b61dfe0121b0b9d0ab821774ab4bb6bbde5f38 +SHA256: ec836cb6326ee2a3ee90050b29ccadd46d75311ccb06caf9f5d650d2db710dc1 +SHA512: cb6018a6429bee73095ab474a0088969f26e6c37ada39dda2d9e8e5dc2287daff954aeef0240e9f9dd020aa8bd6f4a5e31cd43f8feff5c0a3017d1c379fcea82 +Description: Intel® Open Volume Kernel Library + + +Package: intel-oneapi-openvkl-1.3.2 +Architecture: amd64 +Version: 1.3.2-46749 +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 35932 +Depends: intel-oneapi-rkcommon-1.11.0, intel-oneapi-embree-4.0.1, intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing-2023.1.0 +Filename: pool/main/intel-oneapi-openvkl-1.3.2-1.3.2-46749_amd64.deb +Size: 6591196 +MD5sum: cbdf9faf258c245b3ee4b1917d3e461b +SHA1: 4f408fa7949696c9aa3255e80872589f47ac4f23 +SHA256: 502d64d13a6c99b505b0afbbea3a25792b26360631626ab23e1c7ec83ed4a5f2 +SHA512: b84667613a3f7feaf6deeddc2bd8579bcb608ce8438308094cc9a46dd364cf7a26a45597b34de9e828f02375603bf84437624363077a753b0771eab3ee4a0b67 +Description: Intel® Open Volume Kernel Library + + +Package: intel-oneapi-openvkl +Architecture: amd64 +Version: 1.3.2-46749 +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-openvkl-1.3.2 +Filename: pool/main/intel-oneapi-openvkl-1.3.2-46749_amd64.deb +Size: 1708 +MD5sum: 641f12bbbb117b08c25f6ebceff1d955 +SHA1: 557983163a827b1ade73265dafc005280c320181 +SHA256: eb09453244028119b707c9b932c6f0a2b94e4ac09b06282ce4b8f47d8ef6c326 +SHA512: ace59d5e485a1be5ffd2db8656f81d0e3c8a33489313403ee29fe948bd5a9fa3204ba00484b990057d5b64fa59e43b947efee4877f5b02cac1e4de329e786098 +Description: Intel® Open Volume Kernel Library + + +Package: intel-oneapi-ospray-2.10.0 +Architecture: amd64 +Version: 2.10.0-21162 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 28819 +Depends: intel-oneapi-embree-3.13.5, intel-oneapi-rkcommon-1.10.0, intel-oneapi-openvkl-1.3.1, intel-oneapi-oidn-1.4.3, intel-oneapi-mpi-2021.7.1, intel-oneapi-common-vars (>= 2022.2.1-14969), intel-oneapi-common-licensing-2022.2.1 +Filename: pool/main/intel-oneapi-ospray-2.10.0-2.10.0-21162_amd64.deb +Size: 5674788 +MD5sum: 58f8d3e5f74fb2d9b02641175cd5ba09 +SHA1: ec22f960cb6ad8704056391473af60670425ee89 +SHA256: f29053c68eb1f37c4ffc110f72b77e1e13b90bccc0687df3d9fe4214d5707042 +SHA512: eecd3df6e0b29d6a8c507544ba18c9885b281dcbf6c2bd37ccde82113033d78faecf4318fc699ffb256f7bcb3a6f4dae0fb36f7e5ea10c2f21f389c3f8b98365 +Description: Intel® OSPRay + + +Package: intel-oneapi-ospray-2.10.0 +Architecture: amd64 +Version: 2.10.0-25384 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 28819 +Depends: intel-oneapi-embree-3.13.5, intel-oneapi-rkcommon-1.10.0, intel-oneapi-openvkl-1.3.1, intel-oneapi-oidn-1.4.3, intel-oneapi-mpi-2021.8.0, intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing-2023.0.0 +Filename: pool/main/intel-oneapi-ospray-2.10.0-2.10.0-25384_amd64.deb +Size: 5677236 +MD5sum: 3fb00d05725f5365984bf1f0a7797d28 +SHA1: 94d58068bc331d47062053a2f9abd8f5ed8fc5b2 +SHA256: 2206927f1e9ad5b243367606c079a302eb3d10fb01e45b788dccfb75b1629883 +SHA512: e2565853c8cb1a90563222cf958df0224a81b711d96f25d51e70f105649b5a3217c996ce29f4fd86ff1900374229bf091827f53f092dbe5379eb38fd77681aa6 +Description: Intel® OSPRay + + +Package: intel-oneapi-ospray-2.10.0 +Architecture: amd64 +Version: 2.10.0-8737 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 28819 +Depends: intel-oneapi-embree-3.13.4, intel-oneapi-rkcommon-1.10.0, intel-oneapi-openvkl-1.3.0, intel-oneapi-oidn-1.4.3, intel-oneapi-mpi-2021.7.0, intel-oneapi-common-vars (>= 2022.2.0-8694), intel-oneapi-common-licensing-2022.2.0 +Filename: pool/main/intel-oneapi-ospray-2.10.0-2.10.0-8737_amd64.deb +Size: 5675020 +MD5sum: 63014878a4f14fa273f9e3f42a4b6182 +SHA1: aa3ad3cdaa9d7d2b702bb90a52001c6569ac60c2 +SHA256: 64d5de3ba3c681ddbd4c2cbac626060f335f41e905ef5003bdd9d27c0454cfeb +SHA512: 36e66b6b7bad00156fc990f18c669c2df39afdaa330ace846afb39a96e605fd834657ba3e5253eb12a011ad2cb36814d90af3e0cc8d383a606b0c70c0b77a626 +Description: Intel® OSPRay + + +Package: intel-oneapi-ospray +Architecture: amd64 +Version: 2.10.0-21162 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ospray-2.10.0 +Filename: pool/main/intel-oneapi-ospray-2.10.0-21162_amd64.deb +Size: 1708 +MD5sum: 21f38f65b92da563ca2826cdae7698aa +SHA1: e20b7c598449919f4c8e325504e4cf4ba47eb3e5 +SHA256: 5ad90aabbb63e3ca9299ea4ca2442cbbc2fc98886ef9e28d849ba337ccf20be2 +SHA512: 312afcfb4dfd56fa551f91e34a31f793d303b573aa09904a2f04063b0ee735894e1317547cadeb876b0dd3b262172f1d12cb15709b3fdd7b8b3f6d3f079ba6b6 +Description: Intel® OSPRay + + +Package: intel-oneapi-ospray +Architecture: amd64 +Version: 2.10.0-25384 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ospray-2.10.0 +Filename: pool/main/intel-oneapi-ospray-2.10.0-25384_amd64.deb +Size: 1708 +MD5sum: 5ba67f8362a6456f733b37f630878d87 +SHA1: 2ece5fc32a18d2c5630eb18aa7a03bd9bc705e11 +SHA256: 89042b49c2f55a1330ee61c5fa1b57cd03a1b55af82ebcf237a12fd91a2aed2e +SHA512: e30bd8eab154016719c57b1ac6fe2f311578a160e6b437b637f90c67e6cf814d576ed1b79ca523d49a163a861b421b8e6d97207e44282c857b741b3c015c8e8d +Description: Intel® OSPRay + + +Package: intel-oneapi-ospray +Architecture: amd64 +Version: 2.10.0-8737 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ospray-2.10.0 +Filename: pool/main/intel-oneapi-ospray-2.10.0-8737_amd64.deb +Size: 1704 +MD5sum: 8460eba28dd45c9ab5e993af7b03c2f8 +SHA1: 964c2dc2f5d957c122c882b15ce6ae49e6bfb325 +SHA256: 6919741320f430eca34979c435bba5b1e50fe511bc5698f8acde85a509b2cd4d +SHA512: b805679a1a64f848b2bafda162825283fc98a56a0662497c0d4e23e3eb1c82643c0ca46eb4ebbd322ece829cd61f5c8e7b97490e3611c30618f7b9a21b40530d +Description: Intel® OSPRay + + +Package: intel-oneapi-ospray-2.11.0 +Architecture: amd64 +Version: 2.11.0-46752 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 24065 +Depends: intel-oneapi-embree-4.0.1, intel-oneapi-rkcommon-1.11.0, intel-oneapi-openvkl-1.3.2, intel-oneapi-oidn-1.4.3, intel-oneapi-mpi-2021.9.0, intel-oneapi-ispc-1.19.0, intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing-2023.1.0 +Filename: pool/main/intel-oneapi-ospray-2.11.0-2.11.0-46752_amd64.deb +Size: 5159704 +MD5sum: 725e2e34e7447b18850a18d6ce28e8e0 +SHA1: d6ea9c8d2ac2d5a4cbc5b99eb9979458f4ba3342 +SHA256: 0a7f8f07f77359d1a5a0baab4e91b3ab536b38e6de0b5f657f4c741086397440 +SHA512: 3858fec80a0fe72f711b955278ce61d7bb5eff32fc3ee2101fc83a91431249b21595b835045d35c91d27ce877f9e3994de5b62f575dc9ca9fa2d4775686aae2a +Description: Intel® OSPRay + + +Package: intel-oneapi-ospray +Architecture: amd64 +Version: 2.11.0-46752 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ospray-2.11.0 +Filename: pool/main/intel-oneapi-ospray-2.11.0-46752_amd64.deb +Size: 1708 +MD5sum: 267f0fe885477e726a5d083492f18ad2 +SHA1: 7a9f46116d49978044928c5cc2037f5360357c6b +SHA256: d712c8c1af2f64d5c544196fe1a17611bf981d4817efb7672fa79a432d548ebd +SHA512: 22133bbda3f96160c9c620585a27bfa10800988abfa95438ffcda78309b8764432c6f269b3d50915007003675f95508b394030f78e154dd19026ca06bd504d4d +Description: Intel® OSPRay + + +Package: intel-oneapi-ospray-2.4.0 +Architecture: amd64 +Version: 2.4.0-55 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 18651 +Depends: intel-oneapi-embree, intel-oneapi-rkcommon, intel-oneapi-openvkl, intel-oneapi-oidn,intel-oneapi-common-vars,intel-oneapi-common-licensing,intel-oneapi-common-vars,intel-oneapi-common-licensing +Filename: pool/main/intel-oneapi-ospray-2.4.0-2.4.0-55_amd64.deb +Size: 3973972 +MD5sum: fe607a753c18b20af753a67ca22df585 +SHA1: 8d05917987a13d8170c7b322e8fb74183ab14259 +SHA256: c4bc2b6e8ce320695f5d4f93d4e3fa4fcb488eea39970333f80d286df5eb0399 +SHA512: eded418cee4f43140e169983115216a505411993232bd8901c37c5c0e0a7b76a5f567ba487453f6d1fe18294a27af74ba2d28f6574d5b219997d92e86de049aa +Description: Intel® OSPRay + + +Package: intel-oneapi-ospray +Architecture: amd64 +Version: 2.4.0-55 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ospray-2.4.0 +Filename: pool/main/intel-oneapi-ospray-2.4.0-55_amd64.deb +Size: 2290 +MD5sum: 41c31e820dbbc57b3cf142f219fcc964 +SHA1: 9d0067bf4dd3097137d10ab813833ea8a4e4cc51 +SHA256: 04bde36f92f39355b116c07da1f4921d759930000672f6fba77a282ede082196 +SHA512: 64aa4221952ff63d55ab89d91a1873dabbc5c48366a6faf3514f37902c0dc3cd2f6563e43516117b8794b115f9b693afc64c649732fd99e31ec2882cb05d8660 +Description: Intel® OSPRay + + +Package: intel-oneapi-ospray +Architecture: amd64 +Version: 2.5.0-122 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ospray-2.5.0 +Filename: pool/main/intel-oneapi-ospray-2.5.0-122_amd64.deb +Size: 2290 +MD5sum: 2dee9d22668a99b192f9afafbad637f2 +SHA1: ff612b12e9202969a6986d95c59075c7c25b86ea +SHA256: 058148e17e552df449e786f5bb424ebb6b234bf674d030936d75d999ab6d64da +SHA512: 7dfebbf961293907e5cf55b69b6f373f978e47a2ca4026ed533ad4d1c2d9b3abe288d219a5c36b671bb703af5e54bb9dfc714211b5815e371ae247a5e74aecd5 +Description: Intel® OSPRay + + +Package: intel-oneapi-ospray-2.5.0 +Architecture: amd64 +Version: 2.5.0-122 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 18936 +Depends: intel-oneapi-embree-3.12.2, intel-oneapi-rkcommon-1.6.0, intel-oneapi-openvkl-0.12.0, intel-oneapi-oidn-1.3.0, intel-oneapi-common-vars (>= 2021.2.0-195), intel-oneapi-common-licensing-2021.2.0 +Filename: pool/main/intel-oneapi-ospray-2.5.0-2.5.0-122_amd64.deb +Size: 4026878 +MD5sum: bcaf2843567c18c6f5adea6edd7f9805 +SHA1: d9f285954b44186c8ba659bd856b42dc3292b36d +SHA256: f3e9d41e8b2dbb685d0adda40da0f538e7559c328d3f9e047f01f0b605edf088 +SHA512: 0947cc0ffd00a6989518f5ce857a4b2ae987b309755d950f7d888c012f14bd4ce547f4e239e331f6aeb55f5ea57630fe1a5317221e2b9ebf6cde7802abd038ae +Description: Intel® OSPRay + + +Package: intel-oneapi-ospray-2.6.0 +Architecture: amd64 +Version: 2.6.0-78 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 21486 +Depends: intel-oneapi-embree-3.13.0, intel-oneapi-rkcommon-1.6.1, intel-oneapi-openvkl-0.13.0, intel-oneapi-oidn-1.4.0, intel-oneapi-common-vars (>= 2021.3.0-261), intel-oneapi-common-licensing-2021.3.0 +Filename: pool/main/intel-oneapi-ospray-2.6.0-2.6.0-78_amd64.deb +Size: 4567264 +MD5sum: 326bec6c6f9097339ae4fcf46a7f0042 +SHA1: 1f3974e75270e6b03d0d9bbf7bcc67ce093f81bc +SHA256: 47a3fbfb625186f8d3dce97def5af16b9f5de686cb5a9dc1c1d7920324a18840 +SHA512: cb49b5b2cbe4115723e947a20e3ae464191a06aac2756622725ac8a8c6cf2c05feb3275ad28759f2e577bbb2fd540c798c64672517496a8e379a702aa01b41ff +Description: Intel® OSPRay + + +Package: intel-oneapi-ospray +Architecture: amd64 +Version: 2.6.0-78 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ospray-2.6.0 +Filename: pool/main/intel-oneapi-ospray-2.6.0-78_amd64.deb +Size: 1624 +MD5sum: d1be43ba362b7958cdb4fbe100d97f16 +SHA1: 1e359aab195ef9e6254d35d05aeec8ea65ec246b +SHA256: dc5db991b9955331628f76e5d7cec67c05ea51caba499aa98388b639a8951e09 +SHA512: 73eac09c1b86ab0767c3dc2d260d01c557da98ac43656306776672ba7f418ff7a2d8dcfe377cfb00033eb9bcdb7b5bf3b385f88d857bed0d95700a65ea125e68 +Description: Intel® OSPRay + + +Package: intel-oneapi-ospray-2.7.0 +Architecture: amd64 +Version: 2.7.0-27 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 21598 +Depends: intel-oneapi-embree-3.13.1, intel-oneapi-rkcommon-1.7.0, intel-oneapi-openvkl-1.0.0, intel-oneapi-oidn-1.4.1, intel-oneapi-mpi-2021.4.0, intel-oneapi-common-vars (>= 2021.4.0-327), intel-oneapi-common-licensing-2021.4.0 +Filename: pool/main/intel-oneapi-ospray-2.7.0-2.7.0-27_amd64.deb +Size: 4624010 +MD5sum: ade70acea1f05f828794e60f82e70239 +SHA1: b3408cce244661302e59f94924ff86750d7fd1da +SHA256: 125c9332ea28997fe4b95ef683a0d5a2f157d0642b8580323be08de61403ac29 +SHA512: d95a6546aacdbe937e52082607a8ed59e256fd5ad1f274c8cb72c4087e64fff2ee34a0409ac4c58e8d763af23f257e84c022952758aeab6a6900120332359b3d +Description: Intel® OSPRay + + +Package: intel-oneapi-ospray +Architecture: amd64 +Version: 2.7.0-27 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ospray-2.7.0 +Filename: pool/main/intel-oneapi-ospray-2.7.0-27_amd64.deb +Size: 1624 +MD5sum: ad95a8f21eb0fd043438738168dc9cce +SHA1: 7a471921f33355159408f208a2a5ea3062d733fe +SHA256: 8934403bf8ac450424cf59e8351f07929054dd70fa14ca48ecba6b12fc457aaa +SHA512: 31015df3bc0fbe76449de3d6c330dcdf5409c433bce470010197b2c8d5785e3b4a02223d856e8f5f2a563fe7fe793b40b34dd0e7818e22393b7677559198a621 +Description: Intel® OSPRay + + +Package: intel-oneapi-ospray-2.8.0 +Architecture: amd64 +Version: 2.8.0-77 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 24655 +Depends: intel-oneapi-embree-3.13.2, intel-oneapi-rkcommon-1.8.0, intel-oneapi-openvkl-1.1.0, intel-oneapi-oidn-1.4.2, intel-oneapi-mpi-2021.5.0, intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-ospray-2.8.0-2.8.0-77_amd64.deb +Size: 5088326 +MD5sum: 9d22558153284db46766043928aa2793 +SHA1: 600f624acf0ce6e47bdf23d065f369591378bab1 +SHA256: bdcb7c81d0f19dbeef182b002755e71e18a182414adaf24a42ad952bf7228fe1 +SHA512: 7b2732aca0c2d880da1d1dd48e6535b52011dc30491f7ad1af16bd33e576adf7203814084eb1d2f1baf2fe11c11ef627b769b435672308754661a2bbaff63a61 +Description: Intel® OSPRay + + +Package: intel-oneapi-ospray +Architecture: amd64 +Version: 2.8.0-77 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ospray-2.8.0 +Filename: pool/main/intel-oneapi-ospray-2.8.0-77_amd64.deb +Size: 1624 +MD5sum: df5991224aeb0882f6f545cbd44f8c35 +SHA1: c7b69adc5656bfbda3a72bcfe2bbdaeb17038dcd +SHA256: 8b05185d9b1f3974e96c9efffff761aa1aa3201abf64e70a800ef5606a2eee56 +SHA512: 68915d90a14556a30fd4f7dddd644056c10871f4905b2cbd43681f107e6ff74972152deb2aa3b8de95accc8f005c8806d2ac0696614f832873247ede016825e1 +Description: Intel® OSPRay + + +Package: intel-oneapi-ospray +Architecture: amd64 +Version: 2.9.0-142 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ospray-2.9.0 +Filename: pool/main/intel-oneapi-ospray-2.9.0-142_amd64.deb +Size: 1708 +MD5sum: 467b36733018d54a0a6cd0cb2924ed5a +SHA1: e8f92f680eac4f13c7787f6086b95c1cb50a4ddd +SHA256: ecd711e5c00f2fc59783dfee260d12f8cb60552e238742c6bf61c9e1fd7756bd +SHA512: b173b1be0bec5618ec939b69d0730f284641a1939d47d731cfff5f53f0c6cb5ea22dc6cbcc6fcd3aaab482ca589e8f9fd0df9c003ae4ed6df39ad2da36cc85b4 +Description: Intel® OSPRay + + +Package: intel-oneapi-ospray-2.9.0 +Architecture: amd64 +Version: 2.9.0-142 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 25083 +Depends: intel-oneapi-embree-3.13.3, intel-oneapi-rkcommon-1.9.0, intel-oneapi-openvkl-1.2.0, intel-oneapi-oidn-1.4.3, intel-oneapi-mpi-2021.6.0, intel-oneapi-common-vars (>= 2022.1.0-161), intel-oneapi-common-licensing-2022.1.0 +Filename: pool/main/intel-oneapi-ospray-2.9.0-2.9.0-142_amd64.deb +Size: 5216516 +MD5sum: 06d9836c89444fd2e930e9a73b55dcbc +SHA1: 41aaf1c5fc1607c2d11384ffd543fc01037c99ad +SHA256: 2644106f76afab42c21c5a083cba8a0583b4c972b55cdd196b7406c9acb5207f +SHA512: 8428bcdda8d27bc2cc53274f767e37df31b1922956f59ccb89d4d923e759fc45cfdecbac14cd6c434629ac08a1683c6eab340f2878553f7679ff847528ab70c1 +Description: Intel® OSPRay + + +Package: intel-oneapi-ospray-studio-0.10.0 +Architecture: amd64 +Version: 0.10.0-125 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 12747 +Provides: intel-oneapi-ospray-studio +Depends: intel-oneapi-ospray-2.9.0, intel-oneapi-common-vars (>= 2022.1.0-161), intel-oneapi-common-licensing-2022.1.0 +Filename: pool/main/intel-oneapi-ospray-studio-0.10.0-0.10.0-125_amd64.deb +Size: 2752172 +MD5sum: 6ddc417443e9f225c80e8b4dc1f58e48 +SHA1: c82420ce7b89718e38fcf6178d1c3d30b2d28a4c +SHA256: e4ce020815a8f4e98541975440319faa3b0d9069b81f6abbeb05302fb54bcf70 +SHA512: 70fefb9ad42fc4039b8d59b60bec9348a3904b8011981f278c4629211f3bbefdb03037f91c9d3d03bedb55b28c130dd833eae07a5adfa345d17f9dcc4293e654 +Description: Intel® OSPRay Studio + + +Package: intel-oneapi-ospray-studio +Architecture: amd64 +Version: 0.10.0-125 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Provides: intel-oneapi-ospray-studio +Depends: intel-oneapi-ospray-studio-0.10.0 +Filename: pool/main/intel-oneapi-ospray-studio-0.10.0-125_amd64.deb +Size: 2156 +MD5sum: bfad41752f3f607bde43456b993509a3 +SHA1: 255dc685023dadd5af4949791673e841b167538b +SHA256: 6d988e973387cb2e6a8497c1ccaddd2b87e7a65109f0953b8c8b0a28dda7a988 +SHA512: d5da175753d0b60dc4e80833475708671a1b2fb9002de4e7dde58e7128ffdb8173698c530c2d54ff5bd45ef0d0a435d02114cd5a3b2bd251fc3917accc2953ce +Description: Intel® OSPRay Studio + + +Package: intel-oneapi-ospray-studio-0.11.1 +Architecture: amd64 +Version: 0.11.1-21165 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 13834 +Provides: intel-oneapi-ospray-studio +Depends: intel-oneapi-ospray-2.10.0, intel-oneapi-common-vars (>= 2022.2.1-14969), intel-oneapi-common-licensing-2022.2.1 +Filename: pool/main/intel-oneapi-ospray-studio-0.11.1-0.11.1-21165_amd64.deb +Size: 2993956 +MD5sum: 7fd055c903bad2e5798185e88134c702 +SHA1: fe9d8dad65cdcd8ac557543c9817974c0abbd6ee +SHA256: 685e4a36342bd98d5cfdbf97a734e94dc314b83cec22fca7ff5ed4c8aa615a04 +SHA512: 823b6c979f5717844fcd28922627f582ac86817d8a9a1b2afa5ad41bc64b0bac683d58c81ae42c17d27a173d95a66d04b279f6878989c090a7ef4c3cfcfda765 +Description: Intel® OSPRay Studio + + +Package: intel-oneapi-ospray-studio-0.11.1 +Architecture: amd64 +Version: 0.11.1-25387 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 13834 +Provides: intel-oneapi-ospray-studio +Depends: intel-oneapi-ospray-2.10.0, intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing-2023.0.0 +Filename: pool/main/intel-oneapi-ospray-studio-0.11.1-0.11.1-25387_amd64.deb +Size: 2992960 +MD5sum: 1a34fd8944cdff070d10388bb33e9bea +SHA1: 26693904fc4b9acc99157f47ef69f2fa6c0de8bb +SHA256: 6a49a366913e6ea5d33743a5f0fa2fabf5d05257025ac775bbb63508c1fab485 +SHA512: a8e2b5162ae4746e3d677bb39c0bf97be4795f9deb59d24d16efa6ec63f9df9efcc3b4ff98184d071cacab5489387889aa0cfd50d0f217d5a3ff48d33f6abe3a +Description: Intel® OSPRay Studio + + +Package: intel-oneapi-ospray-studio-0.11.1 +Architecture: amd64 +Version: 0.11.1-8738 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 13834 +Provides: intel-oneapi-ospray-studio +Depends: intel-oneapi-ospray-2.10.0, intel-oneapi-common-vars (>= 2022.2.0-8694), intel-oneapi-common-licensing-2022.2.0 +Filename: pool/main/intel-oneapi-ospray-studio-0.11.1-0.11.1-8738_amd64.deb +Size: 2992888 +MD5sum: 5a4e1a210ee4912a90f95abe7a7cc00b +SHA1: 1eb75bba3f7e879ac42334ac4f20ebe4b2e1b4e7 +SHA256: 5f99770365e264c0b1e72893a7fe3d05d8784cefd86178d4dc43fc35a348da57 +SHA512: ddb823a3c6898b57a6ad6350e536843f6dc94069efa2ae0fde1198c204c776d56917514e912d6cd1efef2a465b61d5d8c86c85ffd5bde400a2bd9f8f4bcc9dfc +Description: Intel® OSPRay Studio + + +Package: intel-oneapi-ospray-studio +Architecture: amd64 +Version: 0.11.1-21165 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Provides: intel-oneapi-ospray-studio +Depends: intel-oneapi-ospray-studio-0.11.1 +Filename: pool/main/intel-oneapi-ospray-studio-0.11.1-21165_amd64.deb +Size: 2164 +MD5sum: 187d014026dcbda96c112d5eecedae66 +SHA1: 24538b51901dbe1a2c2fe47dab94a9b4d45a6d42 +SHA256: 666a9b46bd9dcac50183f21f7ec25698c47dbfacbf723aa3985d156e7b15d043 +SHA512: f8acbace7d498259098db1683da107b142bc7dbe268e171e02fc8203c3741c4e62e3bbfb4c11b9199efa2e158b1117407968b3a3f34fc10934151e66ac62a07e +Description: Intel® OSPRay Studio + + +Package: intel-oneapi-ospray-studio +Architecture: amd64 +Version: 0.11.1-25387 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Provides: intel-oneapi-ospray-studio +Depends: intel-oneapi-ospray-studio-0.11.1 +Filename: pool/main/intel-oneapi-ospray-studio-0.11.1-25387_amd64.deb +Size: 2164 +MD5sum: 586bd9e3c63ae2d15912695892236c34 +SHA1: 03afe58d80040e323acbbdfe2916ac7dd1704024 +SHA256: ad525cd0b9edd0940873bba34574df9c2d17145ea3ef5a65846b8274e21cf534 +SHA512: e6922832b5c290b20b16d082ff2f023b71619a75773271ce7f54cc9cadbc9335c150ecef12420001863358e7018105ba4d7353476f15e73b4b0dd69772ed2caf +Description: Intel® OSPRay Studio + + +Package: intel-oneapi-ospray-studio +Architecture: amd64 +Version: 0.11.1-8738 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Provides: intel-oneapi-ospray-studio +Depends: intel-oneapi-ospray-studio-0.11.1 +Filename: pool/main/intel-oneapi-ospray-studio-0.11.1-8738_amd64.deb +Size: 2156 +MD5sum: 417d0c44397a67b3ca477bbc80a9a4b6 +SHA1: 2c6d4a371b592ca611a9b05596b87df5891ef0d2 +SHA256: 191000564feae66e9219f62bf944722c4c0052bc2d859ffea60ae14be794cb27 +SHA512: 7d01f480c2f9ca05f77ed94ab9f526476e3a6ff8d09253cc57fe94507458f98636c6bd6ca825b455f3755bde6fc9a923563e51021ce4f02bcd92f3e4e701bf37 +Description: Intel® OSPRay Studio + + +Package: intel-oneapi-ospray-studio-0.12.0 +Architecture: amd64 +Version: 0.12.0-46753 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 8251 +Provides: intel-oneapi-ospray-studio +Depends: intel-oneapi-ospray-2.11.0, intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing-2023.1.0 +Filename: pool/main/intel-oneapi-ospray-studio-0.12.0-0.12.0-46753_amd64.deb +Size: 1982568 +MD5sum: 1effb1bf7df71a66ec1214fd39274adf +SHA1: d5bfc7be7d12a8572eed4d86a9652eac19b2ef8a +SHA256: c5865934175a4cb16a2ccb12e997a84b13b0e0d0a13701f953e4939a56332444 +SHA512: 2c340bb7399b7789901e589f88ca3a91b68b5353faed8e64f155c1520a2e8b32524b9d10bb956b1451c76ebdc744b8a21ed3b030b410cedbb2926ef74dc5bd1a +Description: Intel® OSPRay Studio + + +Package: intel-oneapi-ospray-studio +Architecture: amd64 +Version: 0.12.0-46753 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Provides: intel-oneapi-ospray-studio +Depends: intel-oneapi-ospray-studio-0.12.0 +Filename: pool/main/intel-oneapi-ospray-studio-0.12.0-46753_amd64.deb +Size: 2164 +MD5sum: bd617acf3208fcaeca1cd8abaca0ed9d +SHA1: af845db568d5c73b58261f81732b0bffaae5e242 +SHA256: a945418073c355225f4379d4ce8bafebf8378395483c6111b675c675077bc730 +SHA512: 474b83105ca3041e0258b14e61ffeef39eadd8ad1b69285885550ccb1223187a7fb308afe716c5f34c118d5b8bc22caa8f4637d3cb474ad588639730aab00a1c +Description: Intel® OSPRay Studio + + +Package: intel-oneapi-ospray-studio-0.5.0 +Architecture: amd64 +Version: 0.5.0-84 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 6359 +Provides: intel-oneapi-ospray-studio +Depends: intel-oneapi-ospray,intel-oneapi-common-vars,intel-oneapi-common-licensing,intel-oneapi-common-vars,intel-oneapi-common-licensing +Filename: pool/main/intel-oneapi-ospray-studio-0.5.0-0.5.0-84_amd64.deb +Size: 1567714 +MD5sum: 67bf410d683e0ecfa89239171e42df44 +SHA1: 573f989ff0d9127780677dadbfd260a774a1b9d6 +SHA256: f6674a73ce5673c4d70603867177224cb66b3da94a8d78732a030f7cacfa3983 +SHA512: a79c6f03d506c855003b461e4725b4025ca6a3d5a8425e0bd98927e973e73b0f8096d6b99c0bccf2286de4fc8c314886b265686d9c5b8cbce5844e1fb5fca3c3 +Description: Intel® OSPRay Studio + + +Package: intel-oneapi-ospray-studio +Architecture: amd64 +Version: 0.5.0-84 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Provides: intel-oneapi-ospray-studio +Depends: intel-oneapi-ospray-studio-0.5.0 +Filename: pool/main/intel-oneapi-ospray-studio-0.5.0-84_amd64.deb +Size: 2310 +MD5sum: 29e5f1a8b5eaa9d5be94b06ef64754ed +SHA1: a937ed665ae4c2e7550bd22392b5e5094725d150 +SHA256: b549e373e35cc86690a27473de76b225a1b356b026b0e7af60cec6caa0e458d6 +SHA512: 728653f79ec9ca0c6ac6381b700ea91015f1bf1ed39c0202f7cb30ae60c18ed2a2358cd88152624ff0173dea4af311cb02a63963950d94e2b58d0588360a3c1c +Description: Intel® OSPRay Studio + + +Package: intel-oneapi-ospray-studio-0.6.0 +Architecture: amd64 +Version: 0.6.0-108 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 7652 +Provides: intel-oneapi-ospray-studio +Depends: intel-oneapi-ospray-2.5.0, intel-oneapi-common-vars (>= 2021.2.0-195), intel-oneapi-common-licensing-2021.2.0 +Filename: pool/main/intel-oneapi-ospray-studio-0.6.0-0.6.0-108_amd64.deb +Size: 1790794 +MD5sum: c0c2773e1af013d34f361a1e2008c52f +SHA1: c5a6f377f407d15275c46395d99d8f68df95f715 +SHA256: 969de4fccab6c1840e9c111e38aa4c18f941188593a3b3aa5eaebf5aa1ad2854 +SHA512: 385dd9a7aa76f41368162ae567d24ba7fedec735a2e130efafac64615c5580288c81354a17da0e2e4aeef677b4b3c36ab750ebaf693d3482be39a464bc485ca8 +Description: Intel® OSPRay Studio + + +Package: intel-oneapi-ospray-studio +Architecture: amd64 +Version: 0.6.0-108 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Provides: intel-oneapi-ospray-studio +Depends: intel-oneapi-ospray-studio-0.6.0 +Filename: pool/main/intel-oneapi-ospray-studio-0.6.0-108_amd64.deb +Size: 2312 +MD5sum: e9cf2169f72459cb45630fc522740e37 +SHA1: e55310dc61902b5d5de1b446509518a98d530929 +SHA256: df410813e54f7b0330bd125dbe4979b1fd7d61babdcc0b5967b1dcc5cdb44995 +SHA512: f2bd96616d1efffac1ad755bf090fdecb692e92aaf6b61ee3d0bdbed5838a0ee174eb9cd408ae0f2caac1b4ead8a925a1d06f9f2c02b9727e816182f5cf12943 +Description: Intel® OSPRay Studio + + +Package: intel-oneapi-ospray-studio-0.7.0 +Architecture: amd64 +Version: 0.7.0-65 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 21321 +Provides: intel-oneapi-ospray-studio +Depends: intel-oneapi-ospray-2.6.0, intel-oneapi-common-vars (>= 2021.3.0-261), intel-oneapi-common-licensing-2021.3.0 +Filename: pool/main/intel-oneapi-ospray-studio-0.7.0-0.7.0-65_amd64.deb +Size: 5087260 +MD5sum: 47ba80316b36535e4884dabf8d6aba14 +SHA1: fbffe9e553df0b2283987459b4ef2ed6f1490f18 +SHA256: 07787fa4a8445fa2d016180bde5d684dda367208a5e85e23807462c940e24db2 +SHA512: 8c54fb57e42ada07e88bba16de7155f7d8dd318613b7e39535ae833ec3a100bd3262a353f30140af3ccf9f7e30aa2dca521df3a52fb117ec7b869a8f88d52d8e +Description: Intel® OSPRay Studio + + +Package: intel-oneapi-ospray-studio +Architecture: amd64 +Version: 0.7.0-65 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Provides: intel-oneapi-ospray-studio +Depends: intel-oneapi-ospray-studio-0.7.0 +Filename: pool/main/intel-oneapi-ospray-studio-0.7.0-65_amd64.deb +Size: 2310 +MD5sum: 9ce097fb84069a87cb491f76bfc7ddbc +SHA1: 75d61b8f40933b339d6b244a18a7cfc3cadcc66b +SHA256: 5410e2c56ec71bda06dc6e3ff1a0cb53e16a1464bc4918379644d3b5ee63bfe0 +SHA512: eb3fd197618fa7b168cb01d5dd9ffda0966d31452c317065f7b3f9dd52caffe839f3a4b9a46eae4aa32969ca98065bca6d9ebc2b21e1f1742040e253ef63ed36 +Description: Intel® OSPRay Studio + + +Package: intel-oneapi-ospray-studio-0.8.0 +Architecture: amd64 +Version: 0.8.0-19 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 18869 +Provides: intel-oneapi-ospray-studio +Depends: intel-oneapi-ospray-2.7.0, intel-oneapi-common-vars (>= 2021.4.0-327), intel-oneapi-common-licensing-2021.4.0 +Filename: pool/main/intel-oneapi-ospray-studio-0.8.0-0.8.0-19_amd64.deb +Size: 4214802 +MD5sum: 65c7de3b44eed5a7286be552103e55e6 +SHA1: e378f00cc6bc3356361ed409945a5de7c82b4dc6 +SHA256: d3942dec08324c9b0d4f0b26d57ef84b6fdfc7a35014d2eb94ae13eadf12dc3b +SHA512: fd5b72fce4fe8c5dc6f489ea378b8987a8f1b856dbcf44a587c65ab90d456f1afc25d02378b75267f06fc7d1c1011a2b1e96db0c2ada1883c1ab9d56a0aefce0 +Description: Intel® OSPRay Studio + + +Package: intel-oneapi-ospray-studio +Architecture: amd64 +Version: 0.8.0-19 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Provides: intel-oneapi-ospray-studio +Depends: intel-oneapi-ospray-studio-0.8.0 +Filename: pool/main/intel-oneapi-ospray-studio-0.8.0-19_amd64.deb +Size: 2318 +MD5sum: 65568d490d7208e0ed7952ce8145fb7f +SHA1: 528e918970f478e3c294a371544afb157cf1149c +SHA256: a5a914a3fe30592b9cb8904d78e1b1aa5e406ba381a9bdb886563d911babcf2a +SHA512: dd9b3a498e5b870412baf4ac11d212d934a1b01476e66e6312455fa91831c12bec5c97fea4bb257ffdbbeae3012faff2e19957a08bb99884161949361e07dc28 +Description: Intel® OSPRay Studio + + +Package: intel-oneapi-ospray-studio-0.9.0 +Architecture: amd64 +Version: 0.9.0-64 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 11518 +Provides: intel-oneapi-ospray-studio +Depends: intel-oneapi-ospray-2.8.0, intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-ospray-studio-0.9.0-0.9.0-64_amd64.deb +Size: 2622836 +MD5sum: 5c195b0364c524831cce2086d532469f +SHA1: d48872b56483f89884d1896f6e357e2549276364 +SHA256: 152eee0f9a7f16d7af06aae32084ccbf47c21ea73469730adb3030de08cd8677 +SHA512: 9a6ea674778f67240a1b8c053ec53d8a6ec22e1fe1ecc7b6e97c9cd88a0ec9ec909418bb1ba42c8a06cd4de4ee0dd63e00f8566cf2be422a58de3952e8b0cf20 +Description: Intel® OSPRay Studio + + +Package: intel-oneapi-ospray-studio +Architecture: amd64 +Version: 0.9.0-64 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Provides: intel-oneapi-ospray-studio +Depends: intel-oneapi-ospray-studio-0.9.0 +Filename: pool/main/intel-oneapi-ospray-studio-0.9.0-64_amd64.deb +Size: 2090 +MD5sum: 9e030c8626f0d3067b7bb572f49cb064 +SHA1: bf89da69f951f5a4dd04607018b6cbc9a54b7346 +SHA256: 93417403f7f4ce22b65caab6ac3a67a626e2a84ff2f0a0a9765fd66a0f6bb090 +SHA512: 7cc25209b4e5f8d9f4d1cd282bd6e6539928325cb0c1f35508d873ddc28cb69767750b6b860175273a3c73ede4a8b716bcf47ffb4d9111eb767608c11d10f0c6 +Description: Intel® OSPRay Studio + + +Package: intel-oneapi-python +Architecture: amd64 +Version: 2021.1.1-44 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 561156 +Provides: intel-oneapi-python +Depends: intel-oneapi-tbb, intel-oneapi-mkl, intel-oneapi-condaindex, intel-oneapi-dal, intel-oneapi-openmp, intel-oneapi-ipp, intel-oneapi-mpi,intel-oneapi-common-vars,intel-oneapi-common-licensing +Filename: pool/main/intel-oneapi-python-2021.1.1-44_amd64.deb +Size: 573886648 +MD5sum: 144b4bea79a504030417d29522563e8c +SHA1: 70b97570c73ae173d14d3313a452cdc18b36251c +SHA256: 57521448d4b963aeff8ba55cdfbbe4fdd5a470ed499969396e497f32bc04e7da +SHA512: 551effb1dc7947541714a5330a2cc9604e14f1e30b5edba00f971d330401afdb3309d3820becc3beae1c074e35abdeec1238648a015355c0ccc608e2548a6ab0 +Description: Intel® Distribution for Python* + + +Package: intel-oneapi-python +Architecture: amd64 +Version: 2021.2.0-161 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 756585 +Provides: intel-oneapi-python +Depends: intel-oneapi-tbb-2021.2.0, intel-oneapi-mkl-2021.2.0, intel-oneapi-condaindex (>= 2021.2.0-94), intel-oneapi-dal-2021.2.0, intel-oneapi-openmp-2021.2.0, intel-oneapi-ipp-2021.2.0, intel-oneapi-mpi-2021.2.0, intel-oneapi-common-vars (>= 2021.2.0-195), intel-oneapi-common-licensing-2021.2.0 +Filename: pool/main/intel-oneapi-python-2021.2.0-161_amd64.deb +Size: 772926900 +MD5sum: bbd83649739e6bb34d22b0b3a60ed5ba +SHA1: 09ed085ab716cb460c66f48df2b4ad32f83c2ee3 +SHA256: bb7fe5ccebc76ec0b4e0c848167e9fb03a0bc1cf26fab410612e1ce06b46dc7f +SHA512: 54ce5c830bb8c6dcbebeb0bca6b7b67822b1cb9189f607667354dc7166df04d638dd425a6720cba3544a3fb92a2c68fec1540f06aabfd590800e461288c8568f +Description: Intel® Distribution for Python* + + +Package: intel-oneapi-python +Architecture: amd64 +Version: 2021.3.0-3209 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 661535 +Provides: intel-oneapi-python +Depends: intel-oneapi-tbb-2021.3.0, intel-oneapi-mkl-2021.3.0, intel-oneapi-condaindex (>= 2021.3.0-159), intel-oneapi-dal-2021.3.0 ,intel-oneapi-dal-daal4py-2021.3.0 ,intel-oneapi-dal-scikit-learn-intelex-2021.3.0, intel-oneapi-openmp-2021.3.0, intel-oneapi-ipp-2021.3.0, intel-oneapi-mpi-2021.3.0, intel-oneapi-common-vars (>= 2021.3.0-261), intel-oneapi-common-licensing-2021.3.0 +Filename: pool/main/intel-oneapi-python-2021.3.0-3209_amd64.deb +Size: 676598446 +MD5sum: ae1b037b207c7ae645d80411ac8639fb +SHA1: 687423706eaa430938bbadba5ad5652ae75dffa4 +SHA256: 3d8cd460938e9cd2f1586c095b409bdfb29c5e71be395907b669d940b61fb21e +SHA512: 87487c79433142a62e07d7f2ce1a8504d69b82158c3eccc0ac104452daf6e93328b82d5d137b57819404ca9b950ab7075d5936263b32997d0bec639c2872ae88 +Description: Intel® Distribution for Python* + + +Package: intel-oneapi-python +Architecture: amd64 +Version: 2021.4.0-3353 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 623195 +Provides: intel-oneapi-python +Depends: intel-oneapi-tbb-2021.4.0, intel-oneapi-mkl-2021.4.0, intel-oneapi-condaindex (>= 2021.4.0-207), intel-oneapi-dal-daal4py-2021.4.0 ,intel-oneapi-dal-scikit-learn-intelex-2021.4.0 ,intel-oneapi-dal-2021.4.0, intel-oneapi-openmp-2021.4.0, intel-oneapi-ipp-2021.4.0, intel-oneapi-mpi-2021.4.0, intel-oneapi-common-vars (>= 2021.4.0-327), intel-oneapi-common-licensing-2021.4.0 +Filename: pool/main/intel-oneapi-python-2021.4.0-3353_amd64.deb +Size: 637378498 +MD5sum: 44aaeae7ae9afc0e8a185dbb30427c95 +SHA1: 93cf790636b5710cce019d5c7840ee997f5f0571 +SHA256: 8eeac0dc3f1f5452c5f56875be4a34d252f8f427aad95b14202eadbabeb674d2 +SHA512: eb77c3250bfbaaa5278aa0116c84bf265cb77051c0d96d6a468ce1f3a3f12270e6fdffaf93c263eb96c863fc405544f5d00191ec3956fcdb66abc4a7b84fdd1b +Description: Intel® Distribution for Python* + + +Package: intel-oneapi-python +Architecture: amd64 +Version: 2022.0.1-127 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 194097 +Provides: intel-oneapi-python +Depends: intel-oneapi-tbb-2021.5.0, intel-oneapi-mkl-2022.0.1, intel-oneapi-condaindex (>= 2022.0.0-74), intel-oneapi-dal-daal4py-2021.5.1 ,intel-oneapi-dal-scikit-learn-intelex-2021.5.1 ,intel-oneapi-dal-2021.5.1, intel-oneapi-openmp-2022.0.1, intel-oneapi-ipp-2021.5.1, intel-oneapi-mpi-2021.5.0, intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-python-2022.0.1-127_amd64.deb +Size: 198136058 +MD5sum: b4048e217ee7c530a43d709f2f917a16 +SHA1: 45d4983ecd68ec587c856de77b1128162c81c9ba +SHA256: 87a0ee7639d6ec826219f96c832f58017b9cbcd7a860010c4bffc5ec91ff7ffd +SHA512: 25fad3c65a63aa95e60293636a61956731761118b15a322ddb959ab4cef2292bef5b16ed1c37e3c7d94a1cd5d1cf227be08f1ee83bdbf0fed45d0105aa2c40b2 +Description: Intel® Distribution for Python* + + +Package: intel-oneapi-python +Architecture: amd64 +Version: 2022.0.2-155 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 194097 +Provides: intel-oneapi-python +Depends: intel-oneapi-tbb-2021.5.1, intel-oneapi-mkl-2022.0.2, intel-oneapi-condaindex (>= 2022.0.0-74), intel-oneapi-dal-daal4py-2021.5.3 ,intel-oneapi-dal-scikit-learn-intelex-2021.5.3 ,intel-oneapi-dal-2021.5.3, intel-oneapi-openmp-2022.0.2, intel-oneapi-ipp-2021.5.2, intel-oneapi-mpi-2021.5.1, intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-python-2022.0.2-155_amd64.deb +Size: 198136052 +MD5sum: bbfde91e749d4291cbedad3e01d7beef +SHA1: ed47f93d70d00d4f21df06ddb740f654802efc40 +SHA256: aebdd21467c80e8bfa314cffb319681210757c509e18d0bdb6178274115f56db +SHA512: 8000052c8a29505073eff276cf9d1bf25878a83b5eb0eb983bf01ff0eddd2544c47b4caeed46c1662905f4f4be81b5ff71d437628799254fb720193a3689e90e +Description: Intel® Distribution for Python* + + +Package: intel-oneapi-python +Architecture: amd64 +Version: 2022.1.0-214 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 222734 +Provides: intel-oneapi-python +Depends: intel-oneapi-tbb-2021.6.0, intel-oneapi-mkl-2022.1.0, intel-oneapi-condaindex (>= 2022.1.0-155), intel-oneapi-dal-daal4py-2021.6.0 ,intel-oneapi-dal-scikit-learn-intelex-2021.6.0 ,intel-oneapi-dal-2021.6.0, intel-oneapi-openmp-2022.1.0, intel-oneapi-ipp-2021.6.0, intel-oneapi-mpi-2021.6.0, intel-oneapi-common-vars (>= 2022.1.0-161), intel-oneapi-common-licensing-2022.1.0 +Filename: pool/main/intel-oneapi-python-2022.1.0-214_amd64.deb +Size: 226911494 +MD5sum: d22bff0c98510aa7ab217fe6f43583ee +SHA1: eaf08f384283ef5fbefb0006f95946d9b3c74683 +SHA256: 09c03dce3806ba11fcd7156333ed52e916313366e1cfcc2982eebac5ae6f2dd9 +SHA512: 87ed2ac0791e2522c4b3873e6f0271aa2886bd5c52d835c1ecd945262412c423d427a3687377209de6f5b7bab5b2009f1fd4c15aa22fc7b8ff3094008e97e04f +Description: Intel® Distribution for Python* + + +Package: intel-oneapi-python +Architecture: amd64 +Version: 2022.2.0-8762 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 220656 +Provides: intel-oneapi-python +Depends: intel-oneapi-tbb-2021.7.0, intel-oneapi-mkl-2022.2.0, intel-oneapi-condaindex (>= 2022.2.0-8695), intel-oneapi-dal-daal4py-2021.7.0 ,intel-oneapi-dal-2021.7.0 ,intel-oneapi-dal-scikit-learn-intelex-2021.7.0, intel-oneapi-openmp-2022.2.0, intel-oneapi-ipp-2021.6.1, intel-oneapi-mpi-2021.7.0, intel-oneapi-common-vars (>= 2022.2.0-8694), intel-oneapi-common-licensing-2022.2.0 +Filename: pool/main/intel-oneapi-python-2022.2.0-8762_amd64.deb +Size: 224568038 +MD5sum: 063177f5362eda4a3eb319595d5625ac +SHA1: c3e585c51cd9e8c6674df16711fa2b7cf44e722e +SHA256: 5279e6b743f5dc9f1a142fa89d475d1c25ed567a2cef45dcbd84a48deff51199 +SHA512: 9eaab03b391bab181a27ab026a52e6bc9c7d05cc2a4305995195491c4447615d1042678855d883983a40ebfc5203cd7bc618391a67e1956bf985d86ed4d84a37 +Description: Intel® Distribution for Python* + + +Package: intel-oneapi-python +Architecture: amd64 +Version: 2022.2.1-17274 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 216207 +Provides: intel-oneapi-python +Depends: intel-oneapi-tbb-2021.7.1, intel-oneapi-mkl-2022.2.1, intel-oneapi-condaindex (>= 2022.2.1-14970), intel-oneapi-dal-daal4py-2021.7.1 ,intel-oneapi-dal-2021.7.1 ,intel-oneapi-dal-scikit-learn-intelex-2021.7.1, intel-oneapi-openmp-2022.2.1, intel-oneapi-ipp-2021.6.2, intel-oneapi-mpi-2021.7.1, intel-oneapi-common-vars (>= 2022.2.1-14969), intel-oneapi-common-licensing-2022.2.1 +Filename: pool/main/intel-oneapi-python-2022.2.1-17274_amd64.deb +Size: 220088110 +MD5sum: bc9e144bfa7cb50d78f3d3ceedc7c45f +SHA1: ac63bc996741a72c469f77b9260a4ec50a86240a +SHA256: 75ec034a92e08a9de4405ab43267df0e5888f737796317b6dfc56b141ffffb48 +SHA512: ea4ec2b0fa7cc0f5e18b09487fdf25348ddd713e052ebbc245ea4f466e90aa488c2f11a072f354634de78992e0a9b328bfdab2930566c442c831acb8aa4d67ee +Description: Intel® Distribution for Python* + + +Package: intel-oneapi-python +Architecture: amd64 +Version: 2023.0.0-25636 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 223185 +Provides: intel-oneapi-python +Depends: intel-oneapi-tbb-2021.8.0, intel-oneapi-mkl-2023.0.0, intel-oneapi-condaindex (>= 2023.0.0-25326), intel-oneapi-dal-daal4py-2023.0.0 ,intel-oneapi-dal-2023.0.0 ,intel-oneapi-dal-scikit-learn-intelex-2023.0.0, intel-oneapi-openmp-2023.0.0, intel-oneapi-ipp-2021.7.0, intel-oneapi-mpi-2021.8.0, intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing-2023.0.0 +Filename: pool/main/intel-oneapi-python-2023.0.0-25636_amd64.deb +Size: 227211642 +MD5sum: 5eb5dce8583cc22f48179f9283256282 +SHA1: 8173ef46873728fa71be1596b48ccf1b69fa1e70 +SHA256: 80cc74d7e8e45875476812746d39311f09f4defef57626d1ac1d5696740e8d40 +SHA512: 65109b13ede56939a2f77db98362246e5cad979575eb1fb02610fdf5f9de8745b9c4e8a264e40fffaafe2cd28d6662b2a42d92cb3ba01a9a238dfc85bc1c8c01 +Description: Intel® Distribution for Python* + + +Package: intel-oneapi-python +Architecture: amd64 +Version: 2023.1.0-46399 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 236458 +Provides: intel-oneapi-python +Depends: intel-oneapi-tbb-2021.9.0, intel-oneapi-mkl-2023.1.0, intel-oneapi-condaindex (>= 2023.1.0-43291), intel-oneapi-dal-daal4py-2023.1.0 ,intel-oneapi-dal-2023.1.0 ,intel-oneapi-dal-scikit-learn-intelex-2023.1.0, intel-oneapi-openmp-2023.1.0, intel-oneapi-ipp-2021.8.0, intel-oneapi-mpi-2021.9.0, intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing-2023.1.0 +Filename: pool/main/intel-oneapi-python-2023.1.0-46399_amd64.deb +Size: 240544790 +MD5sum: 0445a56478642031c4e575e5b579aaff +SHA1: 86de51e218e372add1e9cb2c93fd56914e7412a6 +SHA256: 1edfa24fa30b2ea42579e0bd157a91a53ea78ca7771a2662d4b867b4fff942f1 +SHA512: 2bd02eb3d5b07180923d954e83d85f1e9e4e79110bf665436b80b511c4889943452b9892ce7548ba13c0fdb49cd49f15a4da735e3df2e6b836e2d54c9fe33aaf +Description: Intel® Distribution for Python* + + +Package: intel-oneapi-pytorch +Architecture: amd64 +Version: 1.10.0-1427 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 248010 +Provides: intel-oneapi-pytorch +Depends: intel-oneapi-condaindex (>= 2022.1.0-155), intel-oneapi-python (>= 2022.1.0-214), intel-oneapi-mpi-devel-2021.6.0, intel-oneapi-neural-compressor (>= 1.10.0-703), intel-oneapi-common-vars (>= 2022.1.0-161), intel-oneapi-common-licensing-2022.1.0 +Filename: pool/main/intel-oneapi-pytorch-1.10.0-1427_amd64.deb +Size: 251419426 +MD5sum: 4ae63263cf8af27d288f677bed2c25db +SHA1: 0f3715d10dfcb7caa3ea0be69baedf795be88af0 +SHA256: 0da9378a17ca28cb61bac28425ce5c9a947bf3208b7ca643f91d12e097b1e7b3 +SHA512: c143e75c90b07388381e388bf1127836a54e1bc590c2758647324f59093a6deb974b47ab209ce834fd755976c42796a9342b4ac686badf87013e2de381604414 +Description: PyTorch* + + +Package: intel-oneapi-pytorch +Architecture: amd64 +Version: 1.12.0-20888 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 176143 +Provides: intel-oneapi-pytorch +Depends: intel-oneapi-condaindex (>= 2022.2.1-14970), intel-oneapi-python (>= 2022.2.1-17274), intel-oneapi-mpi-devel-2021.7.1, intel-oneapi-neural-compressor (>= 1.13.0-20878), intel-oneapi-common-vars (>= 2022.2.1-14969), intel-oneapi-common-licensing-2022.2.1 +Filename: pool/main/intel-oneapi-pytorch-1.12.0-20888_amd64.deb +Size: 179813686 +MD5sum: ae1046d5b9ed2ab5cbace00a769a8db3 +SHA1: d3b998480ef1ea255aa4d04ab8a5bd9eff6c9074 +SHA256: 9fba22c1d1d2da47bf6daa76bfadf034e948841a2457ba9dd6b545eaea609629 +SHA512: 037f20a17d204d8edf1ee96b8207eb5f00e276ce6a07c3e8cb59695369b571389879a2fcd32da49becce9e2f2dd2547c976bdfcb125fdd40a47822fbdb7fd217 +Description: PyTorch* + + +Package: intel-oneapi-pytorch +Architecture: amd64 +Version: 1.12.0-8768 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 176143 +Provides: intel-oneapi-pytorch +Depends: intel-oneapi-condaindex (>= 2022.2.0-8695), intel-oneapi-python (>= 2022.2.0-8762), intel-oneapi-mpi-devel-2021.7.0, intel-oneapi-neural-compressor (>= 1.13.0-8764), intel-oneapi-common-vars (>= 2022.2.0-8694), intel-oneapi-common-licensing-2022.2.0 +Filename: pool/main/intel-oneapi-pytorch-1.12.0-8768_amd64.deb +Size: 179813674 +MD5sum: 95bbffa22e65f3958ab3d180e11ec0a6 +SHA1: f56665e41a52a0abed388ef6c31d797c6c2ecf86 +SHA256: 02285273184e57e00a8e414f86d237a9f22ede5154e417cc04256d0a9fd5761a +SHA512: 0dc31608442ea10c366e883af1eccbcc4e4e4ee9ee09fc3883bb85a27328866f55cc1b75b25fdbecdb64f75e860fe8dbe3dbd982721d4c40eb8b925c0d52920c +Description: PyTorch* + + +Package: intel-oneapi-pytorch +Architecture: amd64 +Version: 1.12.0.1-26099 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 176100 +Provides: intel-oneapi-pytorch +Depends: intel-oneapi-condaindex (>= 2023.0.0-25326), intel-oneapi-python (>= 2023.0.0-25636), intel-oneapi-mpi-devel-2021.8.0, intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing-2023.0.0 +Filename: pool/main/intel-oneapi-pytorch-1.12.0.1-26099_amd64.deb +Size: 179767342 +MD5sum: be422a75738b0723b55349f240a7df25 +SHA1: eb30a85d439380c570aa22f5311cfc0f308fd041 +SHA256: 20193117e443de9e6ecf154e961539c86237fe7122260411ad251bc278090828 +SHA512: a2aaecb5b2847af9e7b3f705af2d0ca32cc100fd197a8129005d403cd768561cc99e1dc0bb898acedc4db21dd7677617463171f8974b344eeb50fe496ee780d3 +Description: PyTorch* + + +Package: intel-oneapi-pytorch +Architecture: amd64 +Version: 1.13.0.0-31759 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 452307 +Provides: intel-oneapi-pytorch +Depends: intel-oneapi-condaindex (>= 2023.0.0-25326), intel-oneapi-python (>= 2023.0.0-25636), intel-oneapi-mpi-devel-2021.8.0, intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing-2023.0.0 +Filename: pool/main/intel-oneapi-pytorch-1.13.0.0-31759_amd64.deb +Size: 461552630 +MD5sum: 21f0b5080bfaf05e6d10ca7f7e5a48c8 +SHA1: 3df9bf5a11f236977d41f5d8ca7ec9fbfb865785 +SHA256: 4af28aadb6bfdcd622d49026f3e39bd5aa9aabe679b2a68c095e03cfd2039f52 +SHA512: 68a00b2d11078f6852b0adabf003263e72be10a7064b4bf9c08a99469403a42195e5714ab64235e03a4e8adb34c63370b73ca1817d371551522336420c691a39 +Description: PyTorch* + + +Package: intel-oneapi-pytorch +Architecture: amd64 +Version: 1.5.0-726 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 140740 +Provides: intel-oneapi-pytorch +Depends: intel-oneapi-condaindex, intel-oneapi-python, intel-oneapi-mpi-devel,intel-oneapi-common-vars,intel-oneapi-common-licensing +Filename: pool/main/intel-oneapi-pytorch-1.5.0-726_amd64.deb +Size: 142933418 +MD5sum: 3991f3192b1a4d7e8a839cadfc3704a9 +SHA1: 13c90889e29a71cd481747a8bd7f359671d450b6 +SHA256: 2429455c2bb556bb58989d920af6e4bcd6abb5d4cf24b3c3344e578fdb3fb92e +SHA512: e4014c09cf73e4ffe85f85ee9a7fcd5c17a8852714c6d9641d9933f70f5aef6eef3b0158b36c43d8f578060b6c642c46c40c9419d7c8037ca38e415d3c3ef972 +Description: PyTorch* + + +Package: intel-oneapi-pytorch +Architecture: amd64 +Version: 1.7.0-846 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 237184 +Provides: intel-oneapi-pytorch +Depends: intel-oneapi-condaindex (>= 2021.2.0-94), intel-oneapi-python (>= 2021.2.0-161), intel-oneapi-mpi-devel-2021.2.0, intel-oneapi-common-vars (>= 2021.2.0-195), intel-oneapi-common-licensing-2021.2.0 +Filename: pool/main/intel-oneapi-pytorch-1.7.0-846_amd64.deb +Size: 241409798 +MD5sum: 5257e8b94ca98c8150a6b77fec92c2b1 +SHA1: 13aad2546e00ec2f69ab27c3399f41de39a51bf7 +SHA256: 2f74ac949f1fa1c2cda21235d8ba9b68971c34f8b557e6233fa4f153314bb478 +SHA512: 29b60891484b6cbba95e5541a80aabb12175f1b1c57b328af8d113be0b8451de0c754e5c3be786da2c2a1aa642c9cfb7f65c2741291372683a0de92dd4b6b8bb +Description: PyTorch* + + +Package: intel-oneapi-pytorch +Architecture: amd64 +Version: 1.8.0-1075 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 299277 +Provides: intel-oneapi-pytorch +Depends: intel-oneapi-condaindex (>= 2021.3.0-159), intel-oneapi-python (>= 2021.3.0-3209), intel-oneapi-mpi-devel-2021.3.0, intel-oneapi-lpot (>= 1.4.1.0-454), intel-oneapi-common-vars (>= 2021.3.0-261), intel-oneapi-common-licensing-2021.3.0 +Filename: pool/main/intel-oneapi-pytorch-1.8.0-1075_amd64.deb +Size: 303844976 +MD5sum: 1b1d708a04a52898c30c0cc6bad76ecc +SHA1: c5a1c1af46b3a626b2857f42784dedd0cbc6382f +SHA256: b804427ce27dd04d94c422df7974cffe6f0a68caf4bbde14426b5ec7e4ba37c0 +SHA512: 0846a21f353cd9d46a99eeee5611f5a96360e17ce8cdd0c3db38d6f459ff71a29dd4718f6da3fa0cf406e823ffa074bca09a92f14a26775a6880a1d4e364e7a1 +Description: PyTorch* + + +Package: intel-oneapi-pytorch +Architecture: amd64 +Version: 1.8.0-1194 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 299293 +Provides: intel-oneapi-pytorch +Depends: intel-oneapi-condaindex (>= 2021.4.0-207), intel-oneapi-python (>= 2021.4.0-3353), intel-oneapi-mpi-devel-2021.4.0, intel-oneapi-lpot (>= 1.5.1.0-537), intel-oneapi-common-vars (>= 2021.4.0-327), intel-oneapi-common-licensing-2021.4.0 +Filename: pool/main/intel-oneapi-pytorch-1.8.0-1194_amd64.deb +Size: 303849570 +MD5sum: b78c525567274a80fcb2c7f73c2292f5 +SHA1: 21873163f6a8c6f239734af8323e745074a3c6b9 +SHA256: ef28ec02b93d6e4bb077e8822f3aba82c1e7db2323de3864283c2b43f6b5d372 +SHA512: aa78f3e3f0259025987d704fe9949d93b06b14d59d260a164f5f20fc0e4bcf24a91a15a32ed38970c29e3c1bb707ca94554e9ffa937edb75c8283b8ce4698e06 +Description: PyTorch* + + +Package: intel-oneapi-pytorch +Architecture: amd64 +Version: 1.8.0-1262 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 288914 +Provides: intel-oneapi-pytorch +Depends: intel-oneapi-condaindex (>= 2022.0.0-74), intel-oneapi-python (>= 2022.0.1-127), intel-oneapi-mpi-devel-2021.5.0, intel-oneapi-neural-compressor (>= 1.7.0-597), intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-pytorch-1.8.0-1262_amd64.deb +Size: 293213696 +MD5sum: 37fe7b305629578266d6081414e9861e +SHA1: d4ba646195c4c890f9107926507cc60ec7375c98 +SHA256: 51c3fe232d4fd376be1cd9d89e0bc6f2740d0624e5fee8fb3f1bf4f13d5d7874 +SHA512: 3a2d544959bdc19ecad69780a8cee68ba344c68597287c573db3c5592f9cd3802313c4187115eb41a8451ff47458bd64edadb12a04bf6efca1c357cbb8417011 +Description: PyTorch* + + +Package: intel-oneapi-pytorch +Architecture: amd64 +Version: 1.8.0-1291 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 288914 +Provides: intel-oneapi-pytorch +Depends: intel-oneapi-condaindex (>= 2022.0.0-74), intel-oneapi-python (>= 2022.0.2-155), intel-oneapi-mpi-devel-2021.5.1, intel-oneapi-neural-compressor (>= 1.7.0-616), intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-pytorch-1.8.0-1291_amd64.deb +Size: 293213720 +MD5sum: 2ddfed6440b2cac44e771c61ab4df7c8 +SHA1: 60322ee3276bce0837dce6a9be05d3d0aada5730 +SHA256: e9bed397b8ebd05ff4ede97e27807b3908da05cf8d665d9a40c8cb742476af08 +SHA512: 926f80d87d5826e474cf356ec7f7560ce4126634d427eb775f02fadc1c57bba6f268fd6c2ff6f86da34aca3a0b25b0944ca98cff0caaf40051d6acd5983f9ff6 +Description: PyTorch* + + +Package: intel-oneapi-rkcommon-1.10.0 +Architecture: amd64 +Version: 1.10.0-15330 +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1350 +Depends: intel-oneapi-tbb-devel-2021.7.1, intel-oneapi-common-vars (>= 2022.2.1-14969), intel-oneapi-common-licensing-2022.2.1 +Filename: pool/main/intel-oneapi-rkcommon-1.10.0-1.10.0-15330_amd64.deb +Size: 222148 +MD5sum: 5f1dc0f850e4bc149d16dc3e5b66b885 +SHA1: 1e18bf803c66c2e72c8c2c8fd4c412384eabb41e +SHA256: 0986a917de2df9c44037f2ec549ef73db9f030bf288daf90f32a0f5560bc1fc6 +SHA512: ea9913d8f52944cb94bcd998fa15bb9e79f7dda15d48d92ad7469b9263d9fe30d278f9fe98c5efeb56735fd58126a80b78375856cf82f2574ab3bb4a0ab7e5de +Description: Rendering toolkit common + + +Package: intel-oneapi-rkcommon-1.10.0 +Architecture: amd64 +Version: 1.10.0-25366 +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1350 +Depends: intel-oneapi-tbb-devel-2021.8.0, intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing-2023.0.0 +Filename: pool/main/intel-oneapi-rkcommon-1.10.0-1.10.0-25366_amd64.deb +Size: 221824 +MD5sum: c741a45ca8021ecdd2d9963740adeae1 +SHA1: 450cb613cc365fdfb7738c51aeba3d49f275ba61 +SHA256: 218bc2e90a41952e636eb5f71bef69dd677f8831e0b01a53747fa9deae942fc7 +SHA512: a75b0a11ff926050cd02d72d8e7d59c4fae0aa75897292ded1ad7ff2b5a402e8de5260dfc6d9bc2e5404e73bbc975b3a14dfc251aaf6e3b8134e0695a26a1477 +Description: Rendering toolkit common + + +Package: intel-oneapi-rkcommon-1.10.0 +Architecture: amd64 +Version: 1.10.0-8729 +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1350 +Depends: intel-oneapi-tbb-devel-2021.7.0, intel-oneapi-common-vars (>= 2022.2.0-8694), intel-oneapi-common-licensing-2022.2.0 +Filename: pool/main/intel-oneapi-rkcommon-1.10.0-1.10.0-8729_amd64.deb +Size: 221988 +MD5sum: 525a7defbce37925870fab3fcfbbf950 +SHA1: 336198a22750d8f8c6ee4bdd6f5566309ca52cdc +SHA256: 647c6b555785056d169049743b24d8db55ac3f15129340254f4a5317b73241a1 +SHA512: 321db1a9a82046dd29a0ae34da001d1bbe288bf00d8f0aa3599b10e810ade0a99570a0bf477d02ac356b9fff2bbfb80c09a709c65a9eee86fb590ba8d80898a7 +Description: Rendering toolkit common + + +Package: intel-oneapi-rkcommon +Architecture: amd64 +Version: 1.10.0-15330 +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-rkcommon-1.10.0 +Filename: pool/main/intel-oneapi-rkcommon-1.10.0-15330_amd64.deb +Size: 1700 +MD5sum: 652d8ac4c4a505f0aa12b049ad602de5 +SHA1: c8894bd5cdffe9a6e58b9ac901724f223670ad9f +SHA256: 4ecb1394d7502fa15c28c69465e46d7c80b2789e60cfe8b6b716c76d4e9e4cb0 +SHA512: d45e9c0097a1be763844c3700f38c59bba1589b62cc1dcff99dfd1c087f48d1d1524264ac341f8e2e7519f076ec4766002eed3f53740e9f1783ec5d5770d911d +Description: Rendering toolkit common + + +Package: intel-oneapi-rkcommon +Architecture: amd64 +Version: 1.10.0-25366 +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-rkcommon-1.10.0 +Filename: pool/main/intel-oneapi-rkcommon-1.10.0-25366_amd64.deb +Size: 1700 +MD5sum: e4867185f1728340e5121ed9bc07c35d +SHA1: eb5ec02998a01e0b14c505eca3af569f7365bba9 +SHA256: 1475f5298628119a599dc2525ba6f93a6ca4ba9227b337a25f09172ca66f9421 +SHA512: a95f642e6d34259aa0b44bea1c025534c1e75ef817bf0c80715eb55fd2e738140a71cf655d7f605990095369da3ccdc62861efe29ed458021077ec6333b08b83 +Description: Rendering toolkit common + + +Package: intel-oneapi-rkcommon +Architecture: amd64 +Version: 1.10.0-8729 +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-rkcommon-1.10.0 +Filename: pool/main/intel-oneapi-rkcommon-1.10.0-8729_amd64.deb +Size: 1700 +MD5sum: df7081c1af38c8a47cff8523cc253f10 +SHA1: 3ccc86c6b6e10d9b15d55ac024ee340a4d80f523 +SHA256: 1b7ad6afb8f1cf8a1817b7b2a3acf1fb625c38af964db0cd5a46661de342ca6e +SHA512: 167697caf1dbae4284846409c73f0574871974bccb0276f6dc12c001ca713be09c9c2c434631e9e1254becdce14ab10fc00df13fc36733b888f47dde2af4ff1a +Description: Rendering toolkit common + + +Package: intel-oneapi-rkcommon-1.11.0 +Architecture: amd64 +Version: 1.11.0-46698 +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1141 +Depends: intel-oneapi-tbb-devel-2021.9.0, intel-oneapi-compiler-dpcpp-cpp-runtime-2023.1.0, intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing-2023.1.0 +Filename: pool/main/intel-oneapi-rkcommon-1.11.0-1.11.0-46698_amd64.deb +Size: 177088 +MD5sum: 4c86000a44d788f60bc560e6b9ac5cb5 +SHA1: cde5fece1e4d2470474af0bc292ba5837620ae15 +SHA256: cd2d39fadf89de30fca7ffa550f2fc9dc891fabe1cab915b348ab49ed405c0c7 +SHA512: de13058e70a6ab0d43cebb4e8a8db9eb3f25841cfdfc4facc04d20a3f65389e4a4cdfe65f29c381d5ec3634c988d59490ac7d254154613c1fb680c35a054582a +Description: Rendering toolkit common + + +Package: intel-oneapi-rkcommon +Architecture: amd64 +Version: 1.11.0-46698 +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-rkcommon-1.11.0 +Filename: pool/main/intel-oneapi-rkcommon-1.11.0-46698_amd64.deb +Size: 1700 +MD5sum: c57705ec1874175ba5539c5731306624 +SHA1: bf7845f902093c6baf6bd390e083b9c007e5ed84 +SHA256: 72257c78edb4671bdda9b91f287271bce2146b7a9c3de61a59cd354dec31595f +SHA512: b177bede46b3b56ad98e1a6bcbec887c2fddb774f3ed968fcb0e09967efba639eab5938f4aa71385b3d701a3427de5b35e284fafe29b15b4c782fbdeb3584292 +Description: Rendering toolkit common + + +Package: intel-oneapi-rkcommon-1.5.0 +Architecture: amd64 +Version: 1.5.0-118 +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 799 +Depends: intel-oneapi-tbb-devel,intel-oneapi-common-vars,intel-oneapi-common-licensing,intel-oneapi-common-vars,intel-oneapi-common-licensing +Filename: pool/main/intel-oneapi-rkcommon-1.5.0-1.5.0-118_amd64.deb +Size: 158768 +MD5sum: 4f4a4dbedaa2f081f97d7d225921bbbe +SHA1: bd43647dbc973f1436b146a611453a8ee9451cd8 +SHA256: 3458c11781c485709606a500fd89353905b661a6de473fca186c7ce63c0efa2a +SHA512: ee3b0f8203308e81a1c13648ed38ee243b310e000a5182fdc6cc35d1da912ad12668df9cbd67d13e76354eb0824668d525029a1c9d4e520ce062bf862b72fb89 +Description: Rendering toolkit common + + +Package: intel-oneapi-rkcommon +Architecture: amd64 +Version: 1.5.0-118 +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-rkcommon-1.5.0 +Filename: pool/main/intel-oneapi-rkcommon-1.5.0-118_amd64.deb +Size: 2280 +MD5sum: 3749eec8be7aafb94e808503954104ef +SHA1: 0bb4859b818ad30f6e7542974d08b7a6944d0579 +SHA256: fbbda0a032e703b7733995b1f89fe228981f203c92d5370322e5d9835de2adb5 +SHA512: 808b1f246cf01fc3a1f66f1c8e19f03b3a8e956a77c0429b5ae957523ebe0607d1824094d17a7c42ce1245718b3349c0dc55efe7b556787c219b02086d9c0f75 +Description: Rendering toolkit common + + +Package: intel-oneapi-rkcommon-1.6.0 +Architecture: amd64 +Version: 1.6.0-91 +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 899 +Depends: intel-oneapi-tbb-devel-2021.2.0, intel-oneapi-common-vars (>= 2021.2.0-195), intel-oneapi-common-licensing-2021.2.0 +Filename: pool/main/intel-oneapi-rkcommon-1.6.0-1.6.0-91_amd64.deb +Size: 171894 +MD5sum: f62a7c853baebae03151e60ffb8307f2 +SHA1: 637b3034e86152da578ade951da6230a7f6ba38f +SHA256: 8fa576422f3af1f49256bc7a1c816dc1637157b29dbc281bb3c8fabab1fc06c5 +SHA512: 947452d9c6e071e32b37b7e21268b76bcbeb1e4449f109933edc425252364d7098de18d55a56f31ee3065f154c54ee8584089c38ec23e1a8ccfcd4f24ab65666 +Description: Rendering toolkit common + + +Package: intel-oneapi-rkcommon +Architecture: amd64 +Version: 1.6.0-91 +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-rkcommon-1.6.0 +Filename: pool/main/intel-oneapi-rkcommon-1.6.0-91_amd64.deb +Size: 2280 +MD5sum: 2349a01ed2bd734560b55beb7eb7052d +SHA1: 19383b64481bbae2b65d1ccadf4167ba255e2000 +SHA256: e5fdee41aeb8fa39091c81f9ff7938028605abf405d1f894a479d8411b92c3c9 +SHA512: 0413fe3e12d6184608ea2eb10608dc8f2ebe6f1d2022b473219f168ff30ce3ad58bf32647e35198e33210d2a0708931d7fbb441bf3c978f57041d25a07f94417 +Description: Rendering toolkit common + + +Package: intel-oneapi-rkcommon-1.6.1 +Architecture: amd64 +Version: 1.6.1-119 +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 898 +Depends: intel-oneapi-tbb-devel-2021.3.0, intel-oneapi-common-vars (>= 2021.3.0-261), intel-oneapi-common-licensing-2021.3.0 +Filename: pool/main/intel-oneapi-rkcommon-1.6.1-1.6.1-119_amd64.deb +Size: 171812 +MD5sum: f10d56f6807427fa767e7e582a6b3d56 +SHA1: f39d01e7f9aa8fcba8936d43001fd3fa5d00adcb +SHA256: c7d56ffe5f3088f65e932cab60f48a2e9ae9aabd7094ff72d9c71a0c0c2deca0 +SHA512: 8033096825e4fa984741bdda4eec177096b8252b2fd940206bd42686d59e277021da5d7271c1d9df43f0d8dedec8b1a290ead10637f255eb3e2a6d6173543908 +Description: Rendering toolkit common + + +Package: intel-oneapi-rkcommon +Architecture: amd64 +Version: 1.6.1-119 +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-rkcommon-1.6.1 +Filename: pool/main/intel-oneapi-rkcommon-1.6.1-119_amd64.deb +Size: 1616 +MD5sum: 7f4393efa218328199e03d4ccd1d1c43 +SHA1: 648aa9c2104faaf39f8b73ee532ccec28a213ff3 +SHA256: 2e8f7a682983403d6002ad4e0fecca35fc2d165cc551b3cf8366b38a38577337 +SHA512: 5dc6e66d565c7c9dfdaf540ea5fafe9f11765ea40e415e796e3b3d07fbdf4747c26ed90b0bd54f951455d425ae039905af7fea1b46365b642ffcaf3d718a98c2 +Description: Rendering toolkit common + + +Package: intel-oneapi-rkcommon-1.7.0 +Architecture: amd64 +Version: 1.7.0-70 +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1157 +Depends: intel-oneapi-tbb-devel-2021.4.0, intel-oneapi-common-vars (>= 2021.4.0-327), intel-oneapi-common-licensing-2021.4.0 +Filename: pool/main/intel-oneapi-rkcommon-1.7.0-1.7.0-70_amd64.deb +Size: 204022 +MD5sum: bf66d01f18b2b442a36b6fca67198e96 +SHA1: 2b045dda74e4e26b3ff38ac981f5f384db0fbb51 +SHA256: 81d15ffea134f2c1c21dc4e5bd4e73b708143b532417ce21bac3ed3c1e221c51 +SHA512: 2f30fc9dd5546dabd96224b584493200428e055b113384b1c67dc53bd4bd0e68bad0702ff0e0b1a4c8bf052cd5fc5f4e71d10b85b2a5d01929cb038337b24839 +Description: Rendering toolkit common + + +Package: intel-oneapi-rkcommon +Architecture: amd64 +Version: 1.7.0-70 +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-rkcommon-1.7.0 +Filename: pool/main/intel-oneapi-rkcommon-1.7.0-70_amd64.deb +Size: 1614 +MD5sum: 9f26f8a418f2e53dc03a2d9888540915 +SHA1: 14852856d4bdcf75df0f2db8136866ac0400a4b8 +SHA256: 6f2cd0ef8ee6e3d1016e6263b3c2930e54a2d2bfe74afd84ad3fdf9c95913132 +SHA512: f96b0d0839b1731c98c04a983f000867227ef8259757de2521cbad6a5b01604fcf81dd2bcafcad2863e1ddcebc3da2c0b0bc0131306ea3afe90a994c2683c02f +Description: Rendering toolkit common + + +Package: intel-oneapi-rkcommon-1.8.0 +Architecture: amd64 +Version: 1.8.0-75 +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1249 +Depends: intel-oneapi-tbb-devel-2021.5.0, intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-rkcommon-1.8.0-1.8.0-75_amd64.deb +Size: 222620 +MD5sum: d5b3df4b1aa2e550b734db1f8a37fc00 +SHA1: 95b149eb8b8a8bc139626d0cfcc248d18fc60c94 +SHA256: 5d2b375797ddf8719ff6726ee44bc04b63b80217bddc7166863031d99aa9e094 +SHA512: 121cee70faab4a54a6c730a5c575a4e6496c3b24e853c59a94eacdb53b80ebded3357adf169bd27090c18df7bc1b67f72f31bc40929e86836732fb60b51c48ad +Description: Rendering toolkit common + + +Package: intel-oneapi-rkcommon +Architecture: amd64 +Version: 1.8.0-75 +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-rkcommon-1.8.0 +Filename: pool/main/intel-oneapi-rkcommon-1.8.0-75_amd64.deb +Size: 1614 +MD5sum: 9d37fbfdb969a5a67bc273ba9bbc6efb +SHA1: b1c94ad5cab44a16a03175f654c4c2deea1b5483 +SHA256: 537dd4842c322bb9554ef47e8b5816eee412bd5d4b436b1a7461e384611771ba +SHA512: 8727698c84b666a6362b14754407e22c02827909bcf7efa75a3ce30950c1d7b52d45cdd42632701f19fc556d490121a3d28d118dd216955d7201a440f5dc95db +Description: Rendering toolkit common + + +Package: intel-oneapi-rkcommon-1.9.0 +Architecture: amd64 +Version: 1.9.0-138 +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1235 +Depends: intel-oneapi-tbb-devel-2021.6.0, intel-oneapi-common-vars (>= 2022.1.0-161), intel-oneapi-common-licensing-2022.1.0 +Filename: pool/main/intel-oneapi-rkcommon-1.9.0-1.9.0-138_amd64.deb +Size: 222904 +MD5sum: ad552a6086a7589d5989f0d5deb6d413 +SHA1: 9589f5d39b2a8a28070d5cbdd1fa08aebf66f868 +SHA256: eb08d8086f39e65981b0cf470adf267de2c67f53b87023b19e1549b767ce848f +SHA512: 3b518f777f50d21cd5f4aa39951cfdb9685c357d0600ef6a001e0a37745839007d5d6069859fd2b9d0c9a18e8e6cb4ad0e0e9ebb66f959d3fdaf379de70c041c +Description: Rendering toolkit common + + +Package: intel-oneapi-rkcommon +Architecture: amd64 +Version: 1.9.0-138 +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-rkcommon-1.9.0 +Filename: pool/main/intel-oneapi-rkcommon-1.9.0-138_amd64.deb +Size: 1696 +MD5sum: 1f68ba2bdf6f1a27c13d5eb61dd1b022 +SHA1: fb08e990a3375e209a26a642be800f76f86242bb +SHA256: 2894775d7677c1bf71d4345d361bf3a4f5ac0135e92986f3c32779482c894075 +SHA512: 514b21ed3f3f25c3b3c29353ba8d689fd78c8d246e5d441ce5dcb0fab8caace4027766181e177f3c9042abab8bbc05569109836b871f7651f05eaeaf4ef33518 +Description: Rendering toolkit common + + +Package: intel-oneapi-rkutil-1.0.0 +Architecture: amd64 +Version: 1.0.0-76 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 29 +Provides: intel-oneapi-rkutil +Depends: intel-oneapi-common-vars,intel-oneapi-common-licensing +Filename: pool/main/intel-oneapi-rkutil-1.0.0-1.0.0-76_amd64.deb +Size: 11102 +MD5sum: 37d865d67b4c8e1836f5b5a45faa75b1 +SHA1: e0ed415348442bde6f93e3ed73740766fd54a7f3 +SHA256: 0f5ddb5fb2922150710a111f00752afdab606b0734d5d6348e26124d6371d6a5 +SHA512: 05e513d11bb9bba810d181f2d7fee1763ac52991126751b803e90dacb62b021c06f93d622a2ffa547ad316954aced1db80271e3ed747da2af79d6ee14923f81c +Description: Rendering Toolkit Utilities + + +Package: intel-oneapi-rkutil +Architecture: amd64 +Version: 1.0.0-76 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Provides: intel-oneapi-rkutil +Depends: intel-oneapi-rkutil-1.0.0 +Filename: pool/main/intel-oneapi-rkutil-1.0.0-76_amd64.deb +Size: 2310 +MD5sum: 4c796029a7ca0f9a81065b64912c4b0a +SHA1: 9abf9ca8bd5d7ead77fb74da4715583df258ec7b +SHA256: 6697ab6493abc2d35b7a94993af665424e5c8d5db8711123c10d46d7266207bc +SHA512: 4e6fb980f34836e51b1a9e7c939dac8a55b3d8c9e260c7f1afe2911073efb4fcda677193aa66c8fa04883eefc7dd26b0179334a45dfee57acadaa343c6e4281f +Description: Rendering Toolkit Utilities + + +Package: intel-oneapi-rkutil-1.1.0 +Architecture: amd64 +Version: 1.1.0-84 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 49 +Provides: intel-oneapi-rkutil +Depends: intel-oneapi-common-vars (>= 2021.2.0-195), intel-oneapi-common-licensing-2021.2.0 +Filename: pool/main/intel-oneapi-rkutil-1.1.0-1.1.0-84_amd64.deb +Size: 12598 +MD5sum: 4d97e53a2a6f862b0ffc8edb6cbaaf51 +SHA1: cdf7a332737dcd3594e79698a5b9b17e33f73c92 +SHA256: 31bb1f4422a11eb5d1f77f8f8a46b10eabad2f25fac50cd14a10aa43b58d1eab +SHA512: 3d2de131a71b35703dc955938c45471f151948c0801dee135f3a86dca838a2416c2968f6eb76b3987f0e64e1175e7e6715886d5c7b860e0816b66c881f5b233e +Description: Rendering Toolkit Utilities + + +Package: intel-oneapi-rkutil +Architecture: amd64 +Version: 1.1.0-84 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Provides: intel-oneapi-rkutil +Depends: intel-oneapi-rkutil-1.1.0 +Filename: pool/main/intel-oneapi-rkutil-1.1.0-84_amd64.deb +Size: 2302 +MD5sum: a5b4d6acfcc8b03735ef0caaa56297e1 +SHA1: bdb0c8a578cb708075bcc98ff1fc82e0dd4f4dc6 +SHA256: 55af3d55ca6eb7bca36175121caa5ef2de4e4b4e36dc7651fdf4d76db43b0b98 +SHA512: 75fa46db5e9f395f934d92e426d8361d107cbe5bd98e6cb56a422c1149b56c57ca9af10ee41cd0e4eb3c8dd8658a2142f2a1d3200430908f43c9114d30ec704a +Description: Rendering Toolkit Utilities + + +Package: intel-oneapi-rkutil-1.2.0 +Architecture: amd64 +Version: 1.2.0-47 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 51 +Provides: intel-oneapi-rkutil +Depends: intel-oneapi-common-vars (>= 2021.3.0-261), intel-oneapi-common-licensing-2021.3.0 +Filename: pool/main/intel-oneapi-rkutil-1.2.0-1.2.0-47_amd64.deb +Size: 13108 +MD5sum: 29dd0ff76e50bacc3afd9a8434918cf1 +SHA1: cbb3fc9fdad9d097719249b0208c3b085266962f +SHA256: 0b35b50ce55952c40bf440ca77119b96fb643d5161a99d4f060198ac0004f514 +SHA512: 08f9e97fd96222212cbf5d77d0f7000b110fbc8a58eb469dcdbefb6c9df307ce6a8ff2fb37f984ec9940f483149909788abd20b9bb70782ce9c4cfcb1448b829 +Description: Rendering Toolkit Utilities + + +Package: intel-oneapi-rkutil +Architecture: amd64 +Version: 1.2.0-47 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Provides: intel-oneapi-rkutil +Depends: intel-oneapi-rkutil-1.2.0 +Filename: pool/main/intel-oneapi-rkutil-1.2.0-47_amd64.deb +Size: 2304 +MD5sum: d0f0e1bfd0cae353b25ac155fc7011e8 +SHA1: 44a92c5396cc3cd69d1a4fbed1c1f5f8a236bdf0 +SHA256: e2355bdbca2f9971dcb770272488342cf14792e9af4388c31a02af3b352e7900 +SHA512: cd7eec92649afe38e6fc530534924398eedfff016aeb2f0f58b8c1612e9319dd476e9f0b92ddf201d3429cb4453b73ed14c8026b445156c6efeaf1c5add9325c +Description: Rendering Toolkit Utilities + + +Package: intel-oneapi-rkutil-1.3.0 +Architecture: amd64 +Version: 1.3.0-18 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 51 +Provides: intel-oneapi-rkutil +Depends: intel-oneapi-common-vars (>= 2021.4.0-327), intel-oneapi-common-licensing-2021.4.0 +Filename: pool/main/intel-oneapi-rkutil-1.3.0-1.3.0-18_amd64.deb +Size: 13204 +MD5sum: a51805ec0d4edae57f7cb7f76f5115f4 +SHA1: 36d4a09e35496d38024cf754023cfcec1e515d73 +SHA256: d2a8ae7d85cb861147d8cc3f40a89ac009d68e8f1e25f10fb5d9675849207e3d +SHA512: cfd835c5d44b3dfecbb00506b28a226783533e4aea7a70ddc1eff2d1ceb7120a5d0b86051da9ae196518462dc05c8b036606daf8d18e3678b7b5309c1400db3d +Description: Rendering Toolkit Utilities + + +Package: intel-oneapi-rkutil +Architecture: amd64 +Version: 1.3.0-18 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Provides: intel-oneapi-rkutil +Depends: intel-oneapi-rkutil-1.3.0 +Filename: pool/main/intel-oneapi-rkutil-1.3.0-18_amd64.deb +Size: 2302 +MD5sum: 85e8baf7a297dfa728393be13be6c74d +SHA1: 30c70dd0baf0e42e886fba5537b7706b48492616 +SHA256: af39817aa24410bf02df6811f1db31b552535cf239caef5c7df570153a9da320 +SHA512: a09d9680b1f840fd94fe81f963addfa80173867c5ef0cf2bcd7b5875fa433ec85e61062566a70681269724c20373d6af76c398e51c1003bd911599e11c30ce06 +Description: Rendering Toolkit Utilities + + +Package: intel-oneapi-rkutil-1.4.0 +Architecture: amd64 +Version: 1.4.0-67 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 50 +Provides: intel-oneapi-rkutil +Depends: intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-rkutil-1.4.0-1.4.0-67_amd64.deb +Size: 12890 +MD5sum: e6dad2379c042bb40ef96fe5c1c71d89 +SHA1: 309ef813cb6b2e148a2045bc1abb07c7b18f3a24 +SHA256: 3484c1ffb6435232e08250f18abf64d075743c039eeec65991757bc785edcd2d +SHA512: 26091ce3d154ff25e49d2c0fe999763761fadeeffd975dcb05aa2131ba4d0fce707afff4bbc503f2ea9587e3babdd392451c0a2a894f3aaac86747c49790f557 +Description: Rendering Toolkit Utilities + + +Package: intel-oneapi-rkutil +Architecture: amd64 +Version: 1.4.0-67 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Provides: intel-oneapi-rkutil +Depends: intel-oneapi-rkutil-1.4.0 +Filename: pool/main/intel-oneapi-rkutil-1.4.0-67_amd64.deb +Size: 2084 +MD5sum: 0fae207cae9426da1e90ac35c490cb91 +SHA1: 122cbd62e89e48bb95c1e8f3e54e0d56fde5b23c +SHA256: df5497ce9f0b064dcd4a0785dc3b0c6e6e9883d97574706dce7df47e7012e526 +SHA512: d7abeca93e6acbf7e2f8ef40fa0a4984a7010c46d4f25bafff7bb91827b13267965064073f3357298321b1111fc0c235add5cefa427198330966c75bea4f67d5 +Description: Rendering Toolkit Utilities + + +Package: intel-oneapi-rkutil-1.5.0 +Architecture: amd64 +Version: 1.5.0-126 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 47 +Provides: intel-oneapi-rkutil +Depends: intel-oneapi-common-vars (>= 2022.1.0-161), intel-oneapi-common-licensing-2022.1.0 +Filename: pool/main/intel-oneapi-rkutil-1.5.0-1.5.0-126_amd64.deb +Size: 13098 +MD5sum: f4c284c6647587a866b0482519fe320d +SHA1: e9b0f51a85162d0a9336061c795749cadfc1e268 +SHA256: 8d8c9f0979787e2236b92d4bddf204c4a2a2e9cc1cd55d02a488a7fc48fbf04d +SHA512: d1f00a92872e1ccf60c3b2d99958188145a0e930c88e829ba5a47db3778dd3a16200c2aebcce5f87f70969b0d8a6ca09786a11254858d7d1693d23d3c92bb06b +Description: Rendering Toolkit Utilities + + +Package: intel-oneapi-rkutil +Architecture: amd64 +Version: 1.5.0-126 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Provides: intel-oneapi-rkutil +Depends: intel-oneapi-rkutil-1.5.0 +Filename: pool/main/intel-oneapi-rkutil-1.5.0-126_amd64.deb +Size: 2152 +MD5sum: f543649519d86cd27cb7672fa695684f +SHA1: 9446cdd156c3e5b9a24235ba6e52cefca0c2ad51 +SHA256: ed76ff971de7231d4f355f15ce13d1c66a5afff21c49b7c84fc36d5e7e5ea08b +SHA512: df02475f1b1d96d87ffffee1bfc09da61535a1686b7d79c14a1f333e40a91dc41dedb708fafd33ec7fead3e5007bdf17d525f2d484aad7eba6a6735e59f1600f +Description: Rendering Toolkit Utilities + + +Package: intel-oneapi-rkutil-1.6.1 +Architecture: amd64 +Version: 1.6.1-8710 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 96 +Provides: intel-oneapi-rkutil +Depends: intel-oneapi-common-vars (>= 2022.2.0-8694), intel-oneapi-common-licensing-2022.2.0 +Filename: pool/main/intel-oneapi-rkutil-1.6.1-1.6.1-8710_amd64.deb +Size: 13650 +MD5sum: 943504c8129b3e12d72400f4297a4299 +SHA1: 6b8a1627ed960e0c7d171de637447359abb2b406 +SHA256: 69505978937f2f98278fd57c5628121157e689b6494ed33aff075ffc1fd8e2b9 +SHA512: 6983071ff46d008022ab56590cdcaa6d6e5818c1081a382eae18c5317aaffffd3fbd29949d3e3d2137190e0d59d7145f20e4002b8c284d644a59f6c6898ee408 +Description: Rendering Toolkit Utilities + + +Package: intel-oneapi-rkutil +Architecture: amd64 +Version: 1.6.1-8710 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Provides: intel-oneapi-rkutil +Depends: intel-oneapi-rkutil-1.6.1 +Filename: pool/main/intel-oneapi-rkutil-1.6.1-8710_amd64.deb +Size: 2152 +MD5sum: 88f39ae2195f638b810bee268da29e28 +SHA1: 4bb62aba7a80c36485522d2d570edc01cfbd4d6f +SHA256: f0ef56fa2dda3656df641e9edf36496e55bc81988205393b2da958c8f33be393 +SHA512: ef6816ce3b158e4f45d9c66b81a713ee595083baa8efbc3cb84bf4ddbcab49b4bbdff20537847d8331a96771c8f6733966cb172163bd50eddbf2647036ce65c4 +Description: Rendering Toolkit Utilities + + +Package: intel-oneapi-rkutil-1.6.2 +Architecture: amd64 +Version: 1.6.2-21147 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 97 +Provides: intel-oneapi-rkutil +Depends: intel-oneapi-common-vars (>= 2022.2.1-14969), intel-oneapi-common-licensing-2022.2.1 +Filename: pool/main/intel-oneapi-rkutil-1.6.2-1.6.2-21147_amd64.deb +Size: 13662 +MD5sum: b14db8882a9577de38641bfc67ff64c4 +SHA1: 0eae970926e1ccaee53ab67bb4c43701fa57021d +SHA256: 7a7cd9580fc18febf8bcdb9fc1ede80b159af73834d7ad2df375ac8b10bbd518 +SHA512: 14c1d7fdea3b54a3f5d97f447171286a2497cc04d42f5ae52738bcefb3cd0942c63e793e73bb026e4d3cf935d7f2cc120e818ef930caf8e63bc3cd54e213c06a +Description: Rendering Toolkit Utilities + + +Package: intel-oneapi-rkutil-1.6.2 +Architecture: amd64 +Version: 1.6.2-25342 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 97 +Provides: intel-oneapi-rkutil +Depends: intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing-2023.0.0 +Filename: pool/main/intel-oneapi-rkutil-1.6.2-1.6.2-25342_amd64.deb +Size: 13658 +MD5sum: ea7bc70ca0a145abdb7b436e247cc499 +SHA1: 2079a44c758598cc6c24e8f450f0e92a019e2e2b +SHA256: 4330503ec2a27f5b4b5d720a3b69d894ee0f998f029d06d6a09ecc787574af2d +SHA512: 2c30442128bb88aa0854e9b6937cf6a6ea61b0397b3bf04b73429891575e128c0e6f91f1002b0b023763757898bd383bc51b88a2acab6b1280b45f6b85df5a25 +Description: Rendering Toolkit Utilities + + +Package: intel-oneapi-rkutil +Architecture: amd64 +Version: 1.6.2-21147 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Provides: intel-oneapi-rkutil +Depends: intel-oneapi-rkutil-1.6.2 +Filename: pool/main/intel-oneapi-rkutil-1.6.2-21147_amd64.deb +Size: 2156 +MD5sum: aaf5b5265ab624731da898eaa6e904f8 +SHA1: 784c5f19193677af3c471e0583308b85dd29707b +SHA256: 457d31c0b0e4647d15fe81c171c4b02a64591e5e1d7e650d869e50fde274f80d +SHA512: e571f447e5acaa666b0b877e843b1a5eed8a09f663744d3d947601a7c344e2f238e7efa749a7c2d4d92fed0917e4e32b249e70f1d71aad350a7149884ccb12c8 +Description: Rendering Toolkit Utilities + + +Package: intel-oneapi-rkutil +Architecture: amd64 +Version: 1.6.2-25342 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Provides: intel-oneapi-rkutil +Depends: intel-oneapi-rkutil-1.6.2 +Filename: pool/main/intel-oneapi-rkutil-1.6.2-25342_amd64.deb +Size: 2156 +MD5sum: 5341645e628d5d2708ba39297ced0c16 +SHA1: d0de294349abdb3d4640c605c833d3d24f012fd3 +SHA256: 975982bef43c380ecafbdf222b498e54d59def0622a359f55c5e1d5ccf9ac025 +SHA512: a1fe2f7dd0791c3d1fb7b6d033a5016452990c46b4b091be55c61b20e9fdccc475d1475a50f94c1ed397ce439f26b4c77e7b0b8fa9d3aeb28933ad78edeecffa +Description: Rendering Toolkit Utilities + + +Package: intel-oneapi-rkutil-1.7.0 +Architecture: amd64 +Version: 1.7.0-46487 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 214 +Provides: intel-oneapi-rkutil +Depends: intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing-2023.1.0 +Filename: pool/main/intel-oneapi-rkutil-1.7.0-1.7.0-46487_amd64.deb +Size: 47870 +MD5sum: ec555519a6dda8dd433b79961227ea4f +SHA1: a6a8bc3e2b9f27635b2f5a230b436e74065cbe2f +SHA256: 11f51d7c3af354c5a3780a4ac9d232a2e6c3e3966d0dc31974fc901f3ce92e4f +SHA512: dae6f1b4ea5e334b22bbb6495b5a9cc3448b099dff032dfba30074847295f8a12aa9608b40aa149bf3e4a185b708d928e78ddf73c4bba7e5b28b84b2301e0063 +Description: Rendering Toolkit Utilities + + +Package: intel-oneapi-rkutil +Architecture: amd64 +Version: 1.7.0-46487 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Provides: intel-oneapi-rkutil +Depends: intel-oneapi-rkutil-1.7.0 +Filename: pool/main/intel-oneapi-rkutil-1.7.0-46487_amd64.deb +Size: 2156 +MD5sum: 98c98b8a5ba160a2de5c43686fe888b3 +SHA1: 220a7b22d04002407bc11f00a947ba5ecea3f8ba +SHA256: aa80ed6736802e6ba81a5ad2fa289e5822c8d6d0ffd38219457a3f1a5894a8e5 +SHA512: 337c08507501a08026d168144a5c4c52a6705d588d783d404f289e055d227452c2cb83761206c33259c10d4553a38d75272ecb8953a4026a6a6696e8b04391f2 +Description: Rendering Toolkit Utilities + + +Package: intel-oneapi-runtime-ccl +Architecture: amd64 +Version: 2021.1.1-54 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 9287 +Depends: intel-oneapi-runtime-mpi +Filename: pool/main/intel-oneapi-runtime-ccl-2021.1.1-54_amd64.deb +Size: 1675394 +MD5sum: d54ca5fe4d7278ed7b20c4003109da83 +SHA1: 89234a160040501612720d967167e3b6da67b253 +SHA256: 072d191c793bea5a8ff8c40563e5a1ff246348f2d50468017674357beef8933e +SHA512: 6fa1b64052d14c345a7632b3d967a8d4d0b74f64d296bce210100e34f8a3201104dfccbabde29cf94ebac8341cf21d4e36414b879d2f3084ce77561d200cda43 +Description: Intel® oneAPI Collective Communications Library runtime + + +Package: intel-oneapi-runtime-ccl +Architecture: amd64 +Version: 2021.2.0-269 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 62619 +Depends: intel-oneapi-runtime-mpi +Filename: pool/main/intel-oneapi-runtime-ccl-2021.2.0-269_amd64.deb +Size: 6760206 +MD5sum: c260feb332aab6f61c1711174f114f59 +SHA1: 315a565996a75eb865e305c4b398b5f941d1fa08 +SHA256: c9df25f51021166af028c759e4abf5fe53128ee31f0a24dd54e15a1bf097feb4 +SHA512: 08ebb5a8ee29abbf2276f41919c0ef10c3fe6501b1d4c9a1b47b324175310b17130656b7f983502619dc950338965c85af1afc2dbc90090fc7f15581281273ac +Description: Intel® oneAPI Collective Communications Library runtime + + +Package: intel-oneapi-runtime-ccl +Architecture: amd64 +Version: 2021.3.0-343 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 20781 +Depends: intel-oneapi-runtime-mpi +Filename: pool/main/intel-oneapi-runtime-ccl-2021.3.0-343_amd64.deb +Size: 3429732 +MD5sum: 9e8e26d1877864d24ab0e27caeb32d78 +SHA1: 69a5ed357c4e808edef6a4e00dedbf4b2587b44a +SHA256: bae6b2a34bb629d8ebd546681f06f61cd247482b29a10c8f08f864bb9a6d5c87 +SHA512: 20f6d688f31736609c9a0077c04f9f1b929718d36fb8052a6501620275ccef87827059b4f44da3bac3ce4d43e6409aa49e9b0fae05943176cad5f0034d0edb08 +Description: Intel® oneAPI Collective Communications Library runtime + + +Package: intel-oneapi-runtime-ccl +Architecture: amd64 +Version: 2021.4.0-433 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 14059 +Depends: intel-oneapi-runtime-mpi +Filename: pool/main/intel-oneapi-runtime-ccl-2021.4.0-433_amd64.deb +Size: 2743928 +MD5sum: 8e249e0a982b456144f62455475fa1ce +SHA1: 3a66f861d8bf3c081362c554e71f6f9ee49a8a31 +SHA256: 5f71bbb573f065a866bf954696cd57d04356a9b6a345b04127c86aab65bf7c46 +SHA512: 01f8856667ef5a190b6252fed423f40d1aef7fe8a5af9ee9740f8da376717814086b6cefbf1e4a20a14672afcd8999902d7a194ca0cac9074a9d60685dd5691a +Description: Intel® oneAPI Collective Communications Library runtime + + +Package: intel-oneapi-runtime-ccl +Architecture: amd64 +Version: 2021.5.0-478 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 9768 +Depends: intel-oneapi-runtime-mpi +Filename: pool/main/intel-oneapi-runtime-ccl-2021.5.0-478_amd64.deb +Size: 2037544 +MD5sum: 9435f3edaef80aa0f15be76d822d1c85 +SHA1: 158724b33e34c58ff79a1f3e55d24c6fe8b82dc4 +SHA256: 6b5dc009e33065f0626ea5c5f12d44ccb0842af94ff4c48a52e466af0de9da65 +SHA512: 678caa76f0450999a2a66404e83b3833acc086d01881eb6ef3e1a409276f0e9b8bc43bf42ee26fa01d1e77e72419707dba98556ffe2a06c506a6cd44b6f1c704 +Description: Intel® oneAPI Collective Communications Library runtime + + +Package: intel-oneapi-runtime-ccl +Architecture: amd64 +Version: 2021.5.1-494 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 9768 +Depends: intel-oneapi-runtime-mpi +Filename: pool/main/intel-oneapi-runtime-ccl-2021.5.1-494_amd64.deb +Size: 2038616 +MD5sum: d7ddbc92d7c19a3851280cd456d67110 +SHA1: 01c0ebcc076aba18bddad215d6fe298de8a51b1c +SHA256: 05fa1250fa6b012158aa92607997951979dd4608d3158fee821eee1c41c6885f +SHA512: 0ae164ffda2173f4854de91180146d1e433ecfbe6d95899140635450944c59edadd96490fa2ce09e82aba5683fef40d27be9db03ebab1990274106ea5397f5c9 +Description: Intel® oneAPI Collective Communications Library runtime + + +Package: intel-oneapi-runtime-ccl +Architecture: amd64 +Version: 2021.6.0-568 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 10671 +Depends: intel-oneapi-runtime-mpi +Filename: pool/main/intel-oneapi-runtime-ccl-2021.6.0-568_amd64.deb +Size: 2301444 +MD5sum: d95855acdadfc824e3ea580b79a411eb +SHA1: d59ee6547cdb3beb1bf44aaa796ac5bd2b1801c4 +SHA256: 2ee78fab5a425fc3ed16c4ec21b2a0de8226a6c70ccdf60b5a41875eb91704c4 +SHA512: 441a08a3a6072eae1af0f02626ec8d86fcf4494b53400bb6806d62cfbcfd8d8aaa76a7b25ffbd87c7032f6451419fb523e89049896943d3ebb9f07be18072062 +Description: Intel® oneAPI Collective Communications Library runtime + + +Package: intel-oneapi-runtime-ccl +Architecture: amd64 +Version: 2021.7.0-8733 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 10974 +Depends: intel-oneapi-runtime-mpi +Filename: pool/main/intel-oneapi-runtime-ccl-2021.7.0-8733_amd64.deb +Size: 2242564 +MD5sum: 3134df0321b6259f46731095b5c4c171 +SHA1: 397cfc270bbc358e2f979e6edb2bc48bade91528 +SHA256: 9f87a676c6071c6cfab3cc5c5dbd3dfb26fb90e44629aa9c24c8a25184c9b8cd +SHA512: 9110eaad4e3d821d36a3e6f963daad19095f01d07826651d7125d029d3597317da4de3aa3d49208cc6ba3a59aab0999e3d50473a138688adcebfe90d63624b0e +Description: Intel® oneAPI Collective Communications Library runtime + + +Package: intel-oneapi-runtime-ccl +Architecture: amd64 +Version: 2021.7.1-16948 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 10974 +Depends: intel-oneapi-runtime-mpi +Filename: pool/main/intel-oneapi-runtime-ccl-2021.7.1-16948_amd64.deb +Size: 2249748 +MD5sum: 75e290d48506da1b868269b9a031d2b0 +SHA1: a02a9144e7c20e19bd12bf19597394b04eb4941d +SHA256: 8e70439a7d2bf1a1a619bc60badeafcb63dc65ff79f23218a6e7f8a45a5ca63e +SHA512: 63d9bd67f4abe7d0a7345ab238024938acab1d7d64baf4b10284f58a2f13291c38ee1e1275e7d3a86c91d3c954b257ecd0542a55c7b51ee7c186420fdb53f8fa +Description: Intel® oneAPI Collective Communications Library runtime + + +Package: intel-oneapi-runtime-ccl +Architecture: amd64 +Version: 2021.8.0-25371 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 13000 +Depends: intel-oneapi-runtime-mpi +Filename: pool/main/intel-oneapi-runtime-ccl-2021.8.0-25371_amd64.deb +Size: 2523380 +MD5sum: 462399c8012a21c37c04f8498f2d4219 +SHA1: 43b32abde53bb9a44ad2f43fa95a64197cce6f6c +SHA256: 771b5466c8b415d38a39dea7367e09bebb0fc2e88e25fb08a432fe314829eacf +SHA512: 04eb927d018d8c25e38e1f12cfe723977ab25a55f65353a1bef7ed652612d62d3b18789c9427b8df9d67fb0df2485ded955d4c30d5af9ca030a7bfc23c6c16a4 +Description: Intel® oneAPI Collective Communications Library runtime + + +Package: intel-oneapi-runtime-ccl +Architecture: amd64 +Version: 2021.9.0-43543 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 13869 +Depends: intel-oneapi-runtime-mpi +Filename: pool/main/intel-oneapi-runtime-ccl-2021.9.0-43543_amd64.deb +Size: 2728480 +MD5sum: a1342261bec21c0c727d13e72d142063 +SHA1: 2bd7581bc4715a0afb6721d5ee4d9b812986c974 +SHA256: 7542a1aec164c22cded5abcef8b88313e1418c8f085f9f2caf9a54ff98eaea25 +SHA512: 80d7ef4186241ea23bf8f90775ca2622e66fe25f02c67ac1d3dd3e2920e548589af8048bf6cda29dc3554a742f3d93da63e99a732ecc92ff2ef516736ab5ad74 +Description: Intel® oneAPI Collective Communications Library runtime + + +Package: intel-oneapi-runtime-compilers +Architecture: amd64 +Version: 2021.1.1-189 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 92291 +Depends: intel-oneapi-runtime-openmp, intel-oneapi-runtime-compilers-common +Filename: pool/main/intel-oneapi-runtime-compilers-2021.1.1-189_amd64.deb +Size: 18870118 +MD5sum: 664fa460ffac37eed94ee10bace3a411 +SHA1: a0624376ecddb0ab13fef77c8431a7cff89cae3b +SHA256: 1289ebafe1d516c5fd7391e4a7f205099190e8995449019b6086bb252dcf45d1 +SHA512: e5fa2c435bf0e290dad6a42bc9da23c2d8a44ed2e0f2a4e99a39b18b07c3d5ac3f5116d4f4624f483f6976fe890162b48de8934df781058d6202ae2805f0bb18 +Description: Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic runtime common files + + +Package: intel-oneapi-runtime-compilers +Architecture: amd64 +Version: 2021.1.2-266 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 92291 +Depends: intel-oneapi-runtime-openmp, intel-oneapi-runtime-compilers-common +Filename: pool/main/intel-oneapi-runtime-compilers-2021.1.2-266_amd64.deb +Size: 18841478 +MD5sum: e98e074ef8efbee42f952575457abd2c +SHA1: 904ab352486407d2577cf0e43f9611b524665b2c +SHA256: d062cbb2018133788a4a1797f9bea74ce737f6634a4145cd27cbad7d2f8e0924 +SHA512: 408d34fa68304b8e6b3a330e58abf1f0ce783ac866c3a1c51f0d74d20e54b9f203964d2e247ebf5cdabf1ef84e5ac951de196defd6ca3a24b5dc47a150f53f78 +Description: Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic runtime common files + + +Package: intel-oneapi-runtime-compilers +Architecture: amd64 +Version: 2021.2.0-610 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 93819 +Depends: intel-oneapi-runtime-openmp (= 2021.2.0-610), intel-oneapi-runtime-compilers-common (= 2021.2.0-610) +Filename: pool/main/intel-oneapi-runtime-compilers-2021.2.0-610_amd64.deb +Size: 19609840 +MD5sum: d1b0515ada4700da29d2bd1648102d51 +SHA1: f823c0e4be2c75cb759b73ace5f9dcdf4dbddb6e +SHA256: 8368caf5e5719a481b7cb96244fafb070dfca64d273c09e25fa53f4a5869b9b4 +SHA512: bec172710590f8cb1cf6ece5bb26adb1401fdee9175f213ae41f43794f488925d6d130a345d338cbe2df7ec1882270b30dda2a1ff101991f6679717995bc10f6 +Description: Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic runtime common files + + +Package: intel-oneapi-runtime-compilers +Architecture: amd64 +Version: 2021.3.0-3350 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 98411 +Depends: intel-oneapi-runtime-openmp (= 2021.3.0-3350), intel-oneapi-runtime-compilers-common (= 2021.3.0-3350) +Filename: pool/main/intel-oneapi-runtime-compilers-2021.3.0-3350_amd64.deb +Size: 20313014 +MD5sum: ff68b9e789a1abdd9ebe276ff6ac51bb +SHA1: 769628be374ad0b4b058aa155553bb556c5a7352 +SHA256: 0a739b701abeeb3978362c5785878fca2b1b5b460436d5bbec3d9b3dcbfe4f6e +SHA512: f7a1090ed9a7c80d2e524864cb713af0499bbc42f02a1dd8a38688557119c4f8c0a2f24217645de7195ec3b6ff44824644b76884ba8ea5a5276b554ef0f324ce +Description: Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic runtime common files + + +Package: intel-oneapi-runtime-compilers +Architecture: amd64 +Version: 2021.4.0-3561 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 110120 +Depends: intel-oneapi-runtime-openmp (= 2021.4.0-3561), intel-oneapi-runtime-compilers-common (= 2021.4.0-3561) +Filename: pool/main/intel-oneapi-runtime-compilers-2021.4.0-3561_amd64.deb +Size: 21203012 +MD5sum: f410a514818545278b031cafc17c7fc5 +SHA1: 7a46e3118acb28672dff7323fd698d40f4bff781 +SHA256: 37ee9277b8b7b5486ec2a44cb66575b94dcc2b927f1825f88cdf2c1de54de656 +SHA512: 9288221bbc64f35bbe031af7e05c9c6ab989209153aa493e2fb2c976c1c43762abee35da22d6fc66f18c046abff52e42d65c346e342ed2af466afc387c315080 +Description: Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic runtime common files + + +Package: intel-oneapi-runtime-compilers +Architecture: amd64 +Version: 2022.0.1-3633 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 108344 +Depends: intel-oneapi-runtime-openmp (= 2022.0.1-3633), intel-oneapi-runtime-compilers-common (= 2022.0.1-3633) +Filename: pool/main/intel-oneapi-runtime-compilers-2022.0.1-3633_amd64.deb +Size: 20789390 +MD5sum: 0bad7c5a7fb9eecd2ddc2dce4622a5b7 +SHA1: 6cdc035a391eb8c74a9b551f0430b39518339f4a +SHA256: 8951fd8a0946095609f0ef7bb2b51c698fc0315455a76d268a54851936c07db9 +SHA512: eb1ee7c910f8b6373ca6c42b924dac59fda325077e5946dc2458c49d029cb1730033e81c20ced7c959a11ebf1e7d14219e88fd9c4260469eae6ce4e7e62c4a12 +Description: Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic runtime common files + + +Package: intel-oneapi-runtime-compilers +Architecture: amd64 +Version: 2022.0.2-3658 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 108344 +Depends: intel-oneapi-runtime-openmp (= 2022.0.2-3658), intel-oneapi-runtime-compilers-common (= 2022.0.2-3658) +Filename: pool/main/intel-oneapi-runtime-compilers-2022.0.2-3658_amd64.deb +Size: 20798424 +MD5sum: 15a127c04f7b7b0b8c443ebb163568a8 +SHA1: b78dd2bce84c5bfd1d750dac95e2e218728084da +SHA256: 0ffa1e1e80b60dda5339c5680bfbd27b83d52c0245784bc916b92b0f456cd54d +SHA512: 58ff34d07041c34b16c8ae7e3d8077a4978bd5eff4ea8049137ea9f5133b13ef76fe9291fd5ae06292bfed5ef7ae17605f12fdecd23b3aea0c027585dd6740ef +Description: Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic runtime common files + + +Package: intel-oneapi-runtime-compilers +Architecture: amd64 +Version: 2022.1.0-3768 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 116988 +Depends: intel-oneapi-runtime-openmp (= 2022.1.0-3768), intel-oneapi-runtime-compilers-common (= 2022.1.0-3768) +Filename: pool/main/intel-oneapi-runtime-compilers-2022.1.0-3768_amd64.deb +Size: 23297300 +MD5sum: d6160970cb7c775bfe3866d9e08f47bb +SHA1: 24be4f49f79da2340958da54b14e9e232334cd06 +SHA256: 0f27cbde635f30e79329248398e36e5610aa78aeda4ebc9ed1f3538ffbf0ea8d +SHA512: c713bdb057d94faac980ef410017dc1b045cb21727972f13d7fc4598db21e11fcc414b3e0a88d71edac4c6acc98c1085abf5a68310f4c1bffda879a4c11c112c +Description: Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic runtime common files + + +Package: intel-oneapi-runtime-compilers +Architecture: amd64 +Version: 2022.2.0-8734 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 103807 +Depends: intel-oneapi-runtime-openmp (= 2022.2.0-8734), intel-oneapi-runtime-compilers-common (= 2022.2.0-8734) +Filename: pool/main/intel-oneapi-runtime-compilers-2022.2.0-8734_amd64.deb +Size: 20682572 +MD5sum: fa6e4498b9bbc208e09b8e5f88cddecd +SHA1: 5295e972ae19a6d97895fb0360f992863c95bbb2 +SHA256: abdbdacb1ab7d912a80488634b66c7f78a5f65d2c730cae8284ecd2b26f3d560 +SHA512: 1d805e33d499747177b1f372f931b6354cc1ece911511ebb9ef28bf7ec8fb260a5091ad77d33ef3dce63f06b9d914f5a6595970bbdd114547dfbf88ac1c241e3 +Description: Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic runtime common files + + +Package: intel-oneapi-runtime-compilers +Architecture: amd64 +Version: 2022.2.1-16953 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 103862 +Depends: intel-oneapi-runtime-openmp (= 2022.2.1-16953), intel-oneapi-runtime-compilers-common (= 2022.2.1-16953) +Filename: pool/main/intel-oneapi-runtime-compilers-2022.2.1-16953_amd64.deb +Size: 20708744 +MD5sum: fd4e7ae3ed367a2ae5f9234432e86e27 +SHA1: 479fa858b140aecf30f86a97638292e84d45cca7 +SHA256: ee8441054dceb46fd08ab7e4e5509c2516808ed640d75ecdf302fd1a6bd86c6b +SHA512: 3c73f65e96f2d3f283843233d50edde282265c7eae56180deb7d2421641b0cc136d2d37d29218f12aa30546f6f716036d3485bd11eb28094e4075f1e341012c8 +Description: Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic runtime common files + + +Package: intel-oneapi-runtime-compilers +Architecture: amd64 +Version: 2023.0.0-25370 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 135734 +Depends: intel-oneapi-runtime-openmp (= 2023.0.0-25370), intel-oneapi-runtime-compilers-common (= 2023.0.0-25370) +Filename: pool/main/intel-oneapi-runtime-compilers-2023.0.0-25370_amd64.deb +Size: 25566376 +MD5sum: 85d129fc46b693d4caaa94bf08b8a8c4 +SHA1: 1a0c9711a8a381b6c09b3e61ace8d210ed88e501 +SHA256: 46ef0bb45b3d0e812350f0e3666f41067b2850c8ba6fc819f64a489c9d620326 +SHA512: f39dfca6e7f6144afa59932a2fbcaa22cfeec5eed1a306393acc62f8306d8374e30e59de719ea1d953ad3cf935a5003a532a1a4ee794475654095017991fb3f0 +Description: Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic runtime common files + + +Package: intel-oneapi-runtime-compilers +Architecture: amd64 +Version: 2023.1.0-46305 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 142624 +Depends: intel-oneapi-runtime-openmp (= 2023.1.0-46305), intel-oneapi-runtime-compilers-common (= 2023.1.0-46305) +Filename: pool/main/intel-oneapi-runtime-compilers-2023.1.0-46305_amd64.deb +Size: 26256512 +MD5sum: 83c681101e9488212484545109bd887b +SHA1: b09898a4947b56c61d776a3a7dea11f353f63ce7 +SHA256: 5bd52846709da991f460534757082aebb4be2820cbd0d9cfe6a9bf322f3d0b32 +SHA512: 4ed269369f39bc8b2427ec90d446b7475f94e48b0cc7aa422d9df168f4f11f2ea2774b444f66a849aa5622dddfb4e7ea6b7d72f95a1a70dd87e8d2d6e4734f41 +Description: Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic runtime common files + + +Package: intel-oneapi-runtime-dal +Architecture: amd64 +Version: 2021.1.1-79 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 670416 +Depends: intel-oneapi-runtime-tbb, intel-oneapi-runtime-dpcpp-cpp +Filename: pool/main/intel-oneapi-runtime-dal-2021.1.1-79_amd64.deb +Size: 71714904 +MD5sum: fa79505a23de92f676c95adca3397242 +SHA1: 8cc078e1c23178847b033990a6a256af0c2798eb +SHA256: 09be7f7f019ea201c48f86008c20528046b2d9b9a424d17ab5c5bbaf83081160 +SHA512: 643098ad9825d48107a10264855e6ddb764e163972202721fba2914b19cbcd49732db225a3912abd7717d6cd932fa7e024f2e653285672bb3b5cebdff8e359d9 +Description: Intel® oneAPI Data Analytics Library runtime + + +Package: intel-oneapi-runtime-dal +Architecture: amd64 +Version: 2021.2.0-358 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 795276 +Depends: intel-oneapi-runtime-tbb (>= 2021.2.0-357), intel-oneapi-runtime-dpcpp-cpp (>= 2021.2.0-610) +Filename: pool/main/intel-oneapi-runtime-dal-2021.2.0-358_amd64.deb +Size: 77180144 +MD5sum: e2428c79426cbd6057c06fc936512e52 +SHA1: 1e8ded725bbd99751af9e4f1f9b3f13d47275201 +SHA256: edcdbe203c966777232f1b6cc035d009b794396aee0acb928b514c141f1556c7 +SHA512: db740bfb65a315e757694f69acc6e5ed3462ed8f63be04776b528b5ded4d5e677dbff8a5d22d5270d35a373d704474b2cccd529cdc05cb3b47a0331486fb9863 +Description: Intel® oneAPI Data Analytics Library runtime + + +Package: intel-oneapi-runtime-dal +Architecture: amd64 +Version: 2021.3.0-557 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 718266 +Depends: intel-oneapi-runtime-tbb (>= 2021.3.0-511), intel-oneapi-runtime-dpcpp-cpp (>= 2021.3.0-3350) +Filename: pool/main/intel-oneapi-runtime-dal-2021.3.0-557_amd64.deb +Size: 76335042 +MD5sum: 0327f25881a030fa4114ee8833dff7c6 +SHA1: 18378992e0d4119a17b0028632c9a2be4d5950e0 +SHA256: 8665aecc309b4859dc1687af0e00fb0aeb917ab07ebccfcc78817b5c852bf33c +SHA512: 97a7a00f042738fabb45487846ce83adcf449200927e553312d9c973aadc9fd0e6fb38f73ab255336ece096437bda2b1b9ad9517a1e7205eee67d316b0999dc2 +Description: Intel® oneAPI Data Analytics Library runtime + + +Package: intel-oneapi-runtime-dal +Architecture: amd64 +Version: 2021.4.0-729 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 726047 +Depends: intel-oneapi-runtime-tbb (>= 2021.4.0-643), intel-oneapi-runtime-dpcpp-cpp (>= 2021.4.0-3561) +Filename: pool/main/intel-oneapi-runtime-dal-2021.4.0-729_amd64.deb +Size: 76054438 +MD5sum: 417bdfab34984f24a555eeb79e72582e +SHA1: dae454630776887c53490137372fbf3f69351812 +SHA256: 36edb9e82b400e0f8093474099676354ec02eab604ecc8f1cd6cda4cc8a28500 +SHA512: c27479b761fc6a9ea057379b8f990a3e5f31f284121634e37ecabf9d9a22b0b49cc840eeaa8677f07e6e4c818870cbe6f8072a62b54c8929dd271174360ccb99 +Description: Intel® oneAPI Data Analytics Library runtime + + +Package: intel-oneapi-runtime-dal +Architecture: amd64 +Version: 2021.5.1-803 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 695083 +Depends: intel-oneapi-runtime-tbb (>= 2021.5.0-707), intel-oneapi-runtime-dpcpp-cpp (>= 2022.0.1-3633) +Filename: pool/main/intel-oneapi-runtime-dal-2021.5.1-803_amd64.deb +Size: 66856910 +MD5sum: 5505bf73ff98c98bbcd2097aea45fa0a +SHA1: 19f35ba133e382807251138c3f87f6259cf57de7 +SHA256: a543557243ab97f199d22d13a1fe999f8bbe32060ff91f07cf72b427c5c6684f +SHA512: 3ae9a54613e72e75c4c6be522a33368cd3b808ab21590acc84e4faef44da7e3ba30dbf35a23f6d82e6b9384e4b6f35664c3b3c32205caa3752ed741d2ea89fdb +Description: Intel® oneAPI Data Analytics Library runtime + + +Package: intel-oneapi-runtime-dal +Architecture: amd64 +Version: 2021.5.3-832 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 695083 +Depends: intel-oneapi-runtime-tbb (>= 2021.5.1-738), intel-oneapi-runtime-dpcpp-cpp (>= 2022.0.2-3658) +Filename: pool/main/intel-oneapi-runtime-dal-2021.5.3-832_amd64.deb +Size: 66846352 +MD5sum: c06cc5232ac2253c2bff8e9363d578d5 +SHA1: a6ad402c70dd53b2747147d2374c89e9791ff22e +SHA256: b485065986b60a6ebf93b11984b0ff18dd5eef9aee9de26cf3023d5db9340dc7 +SHA512: 10aebecf2f33afd83418394c90a11ad01830d294ed8cdbc9fae5850ce4ce5621d7e65db32e9db45af4fe93a39a7df241004dbdddd0093cd06d532aa77633618e +Description: Intel® oneAPI Data Analytics Library runtime + + +Package: intel-oneapi-runtime-dal +Architecture: amd64 +Version: 2021.6.0-915 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 744710 +Depends: intel-oneapi-runtime-tbb (>= 2021.6.0-835), intel-oneapi-runtime-dpcpp-cpp (>= 2022.1.0-3768) +Filename: pool/main/intel-oneapi-runtime-dal-2021.6.0-915_amd64.deb +Size: 66481328 +MD5sum: 8eee1e5b125c426323f23a87d33876d8 +SHA1: d49a217906d41c92322b602f93d628dbb54d6f19 +SHA256: 4cbd8d695266b572606adda296eeb293f9db463085d1a5ec0b059c79c96c42db +SHA512: 7ef1e2ff4fb79c2479bb6fc92da77454906d901ff92c0b9b71d8849735e526f95e9af6e22a30e59c409fa718276d3bcda791cad3505a11ef4e7c912d924d508e +Description: Intel® oneAPI Data Analytics Library runtime + + +Package: intel-oneapi-runtime-dal +Architecture: amd64 +Version: 2021.7.0-8746 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 744737 +Depends: intel-oneapi-runtime-tbb (>= 2021.7.0-8712), intel-oneapi-runtime-dpcpp-cpp (>= 2022.2.0-8734) +Filename: pool/main/intel-oneapi-runtime-dal-2021.7.0-8746_amd64.deb +Size: 66481200 +MD5sum: 1c01dfddef0771ab3e1c62649bfcc812 +SHA1: 140b69b7f406883ab0cce0be3c517f86b089f520 +SHA256: 87440320a82c7a75288d71934150bd80021bb769cd05c44af7c38a2eed9e6d9b +SHA512: a4db7595671ac7c7159ce34f02497915669451063e366724977173108e1c77411e348007d8f844304c63f03b0abf18f09b0d1c3066ecd3d5f975a7ba30bf5d4c +Description: Intel® oneAPI Data Analytics Library runtime + + +Package: intel-oneapi-runtime-dal +Architecture: amd64 +Version: 2021.7.1-16996 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 746070 +Depends: intel-oneapi-runtime-tbb (>= 2021.7.1-15005), intel-oneapi-runtime-dpcpp-cpp (>= 2022.2.1-16953) +Filename: pool/main/intel-oneapi-runtime-dal-2021.7.1-16996_amd64.deb +Size: 65737816 +MD5sum: dec895e195b38b8dc38512096af54f96 +SHA1: eb96639b2cf2e97703b91bc5e263efa4cafe5001 +SHA256: e4324bd574d2124735ee2d70dd35deee2e466ae369837f56baee56de98a12da0 +SHA512: 8dcce3dd997d5ea5317a4579c1c1bf4a43033036c1feb5717a0102dfa62b84d3ecdd84c389bfe2a1ee7cbb8e2d6ad38133fd00877310840991dba5f440734055 +Description: Intel® oneAPI Data Analytics Library runtime + + +Package: intel-oneapi-runtime-dal +Architecture: amd64 +Version: 2023.0.0-25395 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 638512 +Depends: intel-oneapi-runtime-tbb (>= 2021.8.0-25334), intel-oneapi-runtime-dpcpp-cpp (>= 2023.0.0-25370) +Filename: pool/main/intel-oneapi-runtime-dal-2023.0.0-25395_amd64.deb +Size: 65937536 +MD5sum: dd6b022188bea72722919f3adf9e8e96 +SHA1: 858d01bfe706797b26b6f060d9fc8b39c0d1456f +SHA256: 7cf6c106c78e0ae808cc92c2fb7f218504994331f3e59edb8fb25958982b12e0 +SHA512: a9b46c4b6c111982a35805c771a09080140eb19c6a5c9a99438ec315d9420d095280039b8e05d1bb0991f4425c09b6ad2e2c67f3071b466b7e2ca1c6724bb474 +Description: Intel® oneAPI Data Analytics Library runtime + + +Package: intel-oneapi-runtime-dal +Architecture: amd64 +Version: 2023.1.0-46349 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 476923 +Depends: intel-oneapi-runtime-tbb (>= 2021.9.0-43484), intel-oneapi-runtime-dpcpp-cpp (>= 2023.1.0-46305) +Filename: pool/main/intel-oneapi-runtime-dal-2023.1.0-46349_amd64.deb +Size: 50111560 +MD5sum: 8aa8b4e3b72c832c9f83e3a6b9a28777 +SHA1: 12f40c35b40c3c1347c02b905c28c4f76d1e3a3f +SHA256: 3a133c3244646e5f0031ef6b2b252ce372a36373304da27ed54070df009069e6 +SHA512: d19ad98530390e238c22ad1de2cfe536def8a9fb986dce9b32f3bb14940027f2c47408deec0baa117d173dc64a5a0a523b2b2732a213bfa82ff59f02599550fd +Description: Intel® oneAPI Data Analytics Library runtime + + +Package: intel-oneapi-runtime-dnnl +Architecture: amd64 +Version: 2021.1.1-55 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 353436 +Depends: intel-oneapi-runtime-tbb, intel-oneapi-runtime-dpcpp-cpp +Filename: pool/main/intel-oneapi-runtime-dnnl-2021.1.1-55_amd64.deb +Size: 37728290 +MD5sum: 0b7cc1e9aee016888322d6e59f2bb167 +SHA1: af8c5b812fff1820d06ab8a1f25039047df9c21e +SHA256: 5833d2c57daa77827b19650b1f78e559ca2daf97568adaa76b17a7689792f7e3 +SHA512: 3d224b9b577512daa34d2cbb9f69a965d6a8506f84983b1054d9b0631c2abb286692027958244950b12f6da997813599ef68d1e12ceb7d7f2ac69027326ced41 +Description: Intel® oneAPI Deep Neural Network Library runtime + + +Package: intel-oneapi-runtime-dnnl +Architecture: amd64 +Version: 2021.2.0-228 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 443048 +Depends: intel-oneapi-runtime-tbb (>= 2021.2.0-357), intel-oneapi-runtime-dpcpp-cpp (>= 2021.2.0-610) +Filename: pool/main/intel-oneapi-runtime-dnnl-2021.2.0-228_amd64.deb +Size: 46222174 +MD5sum: e3c7917dd9b3584181eee5a2b78577a1 +SHA1: dff944be47d323a89715dd4b2ba3e6af057aac19 +SHA256: e437abc7bef91c389bb9b098e75b9b474fd365500f0869bd4c105123a0577718 +SHA512: 105b055eeec203847d512aa94ee80e9ebda12999bcd223b7af9703763d4fe31fc080aebf17431abe83b91fba17c56636b32725eb84265326c944923690dd5c5f +Description: Intel® oneAPI Deep Neural Network Library runtime + + +Package: intel-oneapi-runtime-dnnl +Architecture: amd64 +Version: 2021.3.0-344 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 513136 +Depends: intel-oneapi-runtime-tbb (>= 2021.3.0-511), intel-oneapi-runtime-dpcpp-cpp (>= 2021.3.0-3350) +Filename: pool/main/intel-oneapi-runtime-dnnl-2021.3.0-344_amd64.deb +Size: 50932078 +MD5sum: 1f2a10eb3119726645818e8148efbaff +SHA1: cae04891675306ee1368e3fd2677b6f054fc73a6 +SHA256: 68a1fd461b9298bf042dab56af6df8591032da261bb90fce8c87f7a45749088f +SHA512: 96ad9bb30065b4833df681cc8be901c1accdfa8e64bac2950e564979bdc1b645c8498cbc56fd78eb8e0b79579c4b0da45ca04f9e0a9d05fba91d8890f276f2ac +Description: Intel® oneAPI Deep Neural Network Library runtime + + +Package: intel-oneapi-runtime-dnnl +Architecture: amd64 +Version: 2021.4.0-467 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 395003 +Depends: intel-oneapi-runtime-tbb (>= 2021.4.0-643), intel-oneapi-runtime-dpcpp-cpp (>= 2021.4.0-3561) +Filename: pool/main/intel-oneapi-runtime-dnnl-2021.4.0-467_amd64.deb +Size: 43970686 +MD5sum: fa25ca361bf09eabaeb4402180804ea9 +SHA1: b6e97c85f09306b42d700a59bd00a4b9c7a51da3 +SHA256: 2ccadea02213abe5946181952101d55bb8780d70fade06d5b38e4930eafc8ba5 +SHA512: 14ce650d66d5f7829ae3d0e1388799f199ae4b8442a9bd922836d6cf2d291ec18d7bf7a6b860594c3445483d057bc2bb1c1a733934ba44a0a892ec239ae9491f +Description: Intel® oneAPI Deep Neural Network Library runtime + + +Package: intel-oneapi-runtime-dnnl +Architecture: amd64 +Version: 2022.0.1-26 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 263448 +Depends: intel-oneapi-runtime-tbb (>= 2021.5.0-707), intel-oneapi-runtime-dpcpp-cpp (>= 2022.0.1-3633) +Filename: pool/main/intel-oneapi-runtime-dnnl-2022.0.1-26_amd64.deb +Size: 34591700 +MD5sum: 7496268f7be01e3075ed042be88fc09a +SHA1: ea72561769d990c18e4a58a123f76efd20ed7b5c +SHA256: 02cd7cb5de32f733a440062b26db5cf4820eb27b1b9d8f2a475975749d3c9273 +SHA512: 576749aef8f2569b56c51544808b84c1ff96645db2028db18548986e2665ba138bf05b133798487328f7344cfef5e9fcaed593cbaf886846b3ecacd7c4b3969a +Description: Intel® oneAPI Deep Neural Network Library runtime + + +Package: intel-oneapi-runtime-dnnl +Architecture: amd64 +Version: 2022.0.2-43 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 263448 +Depends: intel-oneapi-runtime-tbb (>= 2021.5.1-738), intel-oneapi-runtime-dpcpp-cpp (>= 2022.0.2-3658) +Filename: pool/main/intel-oneapi-runtime-dnnl-2022.0.2-43_amd64.deb +Size: 34595858 +MD5sum: 015059eb6c617bdc7609171a04612738 +SHA1: c1a3d5d900ddde981d961653f2c61f62dab1867e +SHA256: c114dd95084767a8447535d913fb98200c40ec73f867bc6db5336c5b4599e5e4 +SHA512: 29af19ff8ae196d47bb68daa7d6842ad960ead4b7d55980c30240f540b717fb5731ea133fe336c8b24c90618fef2ce15995b64a96a2fc208528184917a52e2d4 +Description: Intel® oneAPI Deep Neural Network Library runtime + + +Package: intel-oneapi-runtime-dnnl +Architecture: amd64 +Version: 2022.1.0-132 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 154053 +Depends: intel-oneapi-runtime-tbb (>= 2021.6.0-835), intel-oneapi-runtime-dpcpp-cpp (>= 2022.1.0-3768) +Filename: pool/main/intel-oneapi-runtime-dnnl-2022.1.0-132_amd64.deb +Size: 23914884 +MD5sum: 629de2cd30ee7dd7ca9b4942616a5c92 +SHA1: c743974904b326681341f64a090257ac72532a35 +SHA256: d883f29163df81f5b56f1611b9c62c228dde6d58201ee78d6601242b9b5d14fc +SHA512: 7d6a24f53bda80ff38c5a53bfa32a4e15ebc89e0728b74451f6199aab7b48d1c08954a0f79cccf72312fe4f0e0170125598583b93ac66920976d63f12a8665db +Description: Intel® oneAPI Deep Neural Network Library runtime + + +Package: intel-oneapi-runtime-dnnl +Architecture: amd64 +Version: 2022.2.0-8750 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 154101 +Depends: intel-oneapi-runtime-tbb (>= 2021.7.0-8712), intel-oneapi-runtime-dpcpp-cpp (>= 2022.2.0-8734) +Filename: pool/main/intel-oneapi-runtime-dnnl-2022.2.0-8750_amd64.deb +Size: 23910356 +MD5sum: 346f93183a344b881a55f96f33d5e54f +SHA1: 7c74c1c814c899115794a189719c1ff9ae2e0151 +SHA256: 042bcd0ba9e527ab7e56c5708f61c541b8e5d5e4808cb14586baa23e02513fb6 +SHA512: c1e622ef6f35da5a92e3549465528a0b72cdd7efdd9c85bd85b0b393d3df45a020743d79d52fb8d5d21d64b5bec88dd76d5b07a06b595462591b9949759e3cb7 +Description: Intel® oneAPI Deep Neural Network Library runtime + + +Package: intel-oneapi-runtime-dnnl +Architecture: amd64 +Version: 2022.2.1-16994 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 154101 +Depends: intel-oneapi-runtime-tbb (>= 2021.7.1-15005), intel-oneapi-runtime-dpcpp-cpp (>= 2022.2.1-16953) +Filename: pool/main/intel-oneapi-runtime-dnnl-2022.2.1-16994_amd64.deb +Size: 23915708 +MD5sum: f67a6e7acaf9a13f091a830987d35ede +SHA1: 3e8600278b015cd2c34a2b5782b61a83dcd182f9 +SHA256: d9ed29dd7def4411d044f5ec9b275444825cdf972e61d2facb695023391ef8d5 +SHA512: fee08a663b36c4565bb67a1d7de564a008f1c018292cebdd77128e38f4c3e4a52806babbbea0653db20574ccd946afeff0cc900b13b3119318cf62316e8397fc +Description: Intel® oneAPI Deep Neural Network Library runtime + + +Package: intel-oneapi-runtime-dnnl +Architecture: amd64 +Version: 2023.0.0-25399 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 230673 +Depends: intel-oneapi-runtime-tbb (>= 2021.8.0-25334), intel-oneapi-runtime-dpcpp-cpp (>= 2023.0.0-25370) +Filename: pool/main/intel-oneapi-runtime-dnnl-2023.0.0-25399_amd64.deb +Size: 28646356 +MD5sum: 9223c4d5e6143048ec0d29f98c716184 +SHA1: 413f1f94876316736b09334201a2dddcfca21f62 +SHA256: caa255f8731af2e87e99031d872d2c5d6adf728d3d101bb58fe15ac62fef9e75 +SHA512: 45315eee81b2f3010bb0ac8886ae98ff135bdb5bb61712238c7bec05c029297b130cadbf46a27c9c9c8a96c20303d2437340bc6f2ab72179c688eaec6b8a7029 +Description: Intel® oneAPI Deep Neural Network Library runtime + + +Package: intel-oneapi-runtime-dnnl +Architecture: amd64 +Version: 2023.1.0-46343 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 266589 +Depends: intel-oneapi-runtime-tbb (>= 2021.9.0-43484), intel-oneapi-runtime-dpcpp-cpp (>= 2023.1.0-46305) +Filename: pool/main/intel-oneapi-runtime-dnnl-2023.1.0-46343_amd64.deb +Size: 33079892 +MD5sum: 3e409d6fda9d2a4e8fd13908b0f92a5f +SHA1: 7645d01fb1820af44f12d7cf43b3b0fbb13bd983 +SHA256: 620bce035dcb32f5481076814771b76c0c4f676c75ec5eaf86590bdc57a7ef0c +SHA512: 46fb79e385aba4be61d97cbb2cac6fb9e36c433770dec9261442ac012edff09ba66beb3785a45700e35e034922fd8c114f3e4de0d34c57da60aeb58298eec936 +Description: Intel® oneAPI Deep Neural Network Library runtime + + +Package: intel-oneapi-runtime-dpcpp-cpp +Architecture: amd64 +Version: 2021.1.1-189 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 261186 +Depends: intel-oneapi-runtime-tbb, intel-oneapi-runtime-compilers, intel-oneapi-runtime-dpcpp-cpp-common, intel-oneapi-runtime-opencl +Filename: pool/main/intel-oneapi-runtime-dpcpp-cpp-2021.1.1-189_amd64.deb +Size: 54368890 +MD5sum: 5d78948e53247c82ac48816d3a4909c3 +SHA1: 54db260bbfd6c1a096247dd431158eb2e96dc060 +SHA256: bb81add02b69a60349d2c4af3518946d0e12e85ed02fef14bf3fc8fd178fe566 +SHA512: aa66572f024d05dda31cb30903c243d696a1b058d80b6ec1dd451613efaca3ab832d55dec8f8f5be7a8139e3ae80d2402253cf764921d27ffc4c82abcaf29847 +Description: Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic runtime + + +Package: intel-oneapi-runtime-dpcpp-cpp +Architecture: amd64 +Version: 2021.1.2-266 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 261181 +Depends: intel-oneapi-runtime-tbb, intel-oneapi-runtime-compilers, intel-oneapi-runtime-dpcpp-cpp-common, intel-oneapi-runtime-opencl +Filename: pool/main/intel-oneapi-runtime-dpcpp-cpp-2021.1.2-266_amd64.deb +Size: 54280668 +MD5sum: e517689c357586c3ada8f00f968cbe13 +SHA1: 076c98152da8ef73e59a670108aa2f53f17d0b64 +SHA256: 9df3b1959569610cedd5bae4061608d906f4e9a45618e27761de448fa0bf0926 +SHA512: 72bf98dd65c27fbbf7786291b5707204e61feb1228be623443980b8da7bbfe7fe7414f70fb3f9347159d6a61a3fffc49018748aedbf7fb277c9146ff3ccc4738 +Description: Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic runtime + + +Package: intel-oneapi-runtime-dpcpp-cpp +Architecture: amd64 +Version: 2021.2.0-610 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 279186 +Depends: intel-oneapi-runtime-tbb (>= 2021.2.0-357), intel-oneapi-runtime-compilers (= 2021.2.0-610), intel-oneapi-runtime-dpcpp-cpp-common (= 2021.2.0-610), intel-oneapi-runtime-opencl (= 2021.2.0-610) +Filename: pool/main/intel-oneapi-runtime-dpcpp-cpp-2021.2.0-610_amd64.deb +Size: 59299768 +MD5sum: 1c5d81ea5ecf807f91d84cc636652456 +SHA1: 44daebc167a970d043d20459574a1341b5faab22 +SHA256: 627abaf5a69f7783a1f83502db23a1d9ef88568afc4460169aaaac0d7d6a8ad4 +SHA512: e41b14859280f78d8a1996f552010e5878d5ea25d34f2fd7b7dd3ce4f81e04b58c00afd8eebfdcd4a570d6b12de38d2f1bcaea5dc9d0a29b005915db42ebe831 +Description: Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic runtime + + +Package: intel-oneapi-runtime-dpcpp-cpp +Architecture: amd64 +Version: 2021.3.0-3350 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 318220 +Depends: intel-oneapi-runtime-tbb (>= 2021.3.0-511), intel-oneapi-runtime-compilers (= 2021.3.0-3350), intel-oneapi-runtime-dpcpp-cpp-common (= 2021.3.0-3350), intel-oneapi-runtime-opencl (= 2021.3.0-3350) +Filename: pool/main/intel-oneapi-runtime-dpcpp-cpp-2021.3.0-3350_amd64.deb +Size: 64736916 +MD5sum: 547a32e9399d9c84ca8431699fc2bc31 +SHA1: d938c55361d397921697555c3ff0454ef9be65c6 +SHA256: 01eca6e6883fd26f81dd177c4a86822633670a8ab9f446cec0412b6d94f3163c +SHA512: 5dc5b43783fc45908a5eff7a3b2875a8ef507a95f4765dfa745e16bd86f57755f57a97c8caa0603f34207d1465e48c32b4f59b6649034fc3429816ab6f85122a +Description: Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic runtime + + +Package: intel-oneapi-runtime-dpcpp-cpp +Architecture: amd64 +Version: 2021.4.0-3561 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 298292 +Depends: intel-oneapi-runtime-tbb (>= 2021.4.0-643), intel-oneapi-runtime-compilers (= 2021.4.0-3561), intel-oneapi-runtime-dpcpp-cpp-common (= 2021.4.0-3561), intel-oneapi-runtime-opencl (= 2021.4.0-3561) +Filename: pool/main/intel-oneapi-runtime-dpcpp-cpp-2021.4.0-3561_amd64.deb +Size: 56215990 +MD5sum: 9fb0572169ea09dcfea92ac1e6d12240 +SHA1: 6ed2057cba381195775508c0e20d1ab694308e43 +SHA256: 894c9d0efe069a2a2757338ce6b005f560e34319d3f6321f794733937f85718b +SHA512: b039b4881084e9dcf34e0dc09f8f32888f3d67e41762407ff997e1b7e5d47e30116697681757695b7fbcc68ee1b770de77332a3e7b35f3b94acb6d05456db154 +Description: Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic runtime + + +Package: intel-oneapi-runtime-dpcpp-cpp +Architecture: amd64 +Version: 2022.0.1-3633 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 119544 +Depends: intel-oneapi-runtime-tbb (>= 2021.5.0-707), intel-oneapi-runtime-compilers (= 2022.0.1-3633), intel-oneapi-runtime-dpcpp-cpp-common (= 2022.0.1-3633), intel-oneapi-runtime-opencl (= 2022.0.1-3633) +Filename: pool/main/intel-oneapi-runtime-dpcpp-cpp-2022.0.1-3633_amd64.deb +Size: 25665010 +MD5sum: b7210c75e7a62342874ed000b962dba2 +SHA1: 19170f07a63ee95dd4f8ce37b9da4ae657293d1c +SHA256: 9e26b9c5321281d829d62542c22552182d00255ebc2f8a6e179b95515c63c24d +SHA512: 05bc6702953fac50f09cfaa7817512d95020faba9a8fb93856b8da60f1c696a82c2a7f8dbbb02738888ecb3eb20a6a707925f006bb2873a4f298736f5099f89e +Description: Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic runtime + + +Package: intel-oneapi-runtime-dpcpp-cpp +Architecture: amd64 +Version: 2022.0.2-3658 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 119544 +Depends: intel-oneapi-runtime-tbb (>= 2021.5.1-738), intel-oneapi-runtime-compilers (= 2022.0.2-3658), intel-oneapi-runtime-dpcpp-cpp-common (= 2022.0.2-3658), intel-oneapi-runtime-opencl (= 2022.0.2-3658) +Filename: pool/main/intel-oneapi-runtime-dpcpp-cpp-2022.0.2-3658_amd64.deb +Size: 25661112 +MD5sum: 7b9e46f36b826560b85d6fa1d8bbba4a +SHA1: 651a2c5082669fb90a717c8ebc4b37b511ac96b4 +SHA256: 972570b04798897ca3f9ad0ef73d42704206c9485305a8192ea72a8fc4115934 +SHA512: 2e8aed1bf256e8cb8bd7f9a4b95bdab3a8b6b3f72a72caff3d311c9255b98229f2d2a379c0c049871cf013cbd9c900d8989627f0006ec4b959853b5e60529ee3 +Description: Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic runtime + + +Package: intel-oneapi-runtime-dpcpp-cpp +Architecture: amd64 +Version: 2022.1.0-3768 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 122614 +Depends: intel-oneapi-runtime-tbb (>= 2021.6.0-835), intel-oneapi-runtime-compilers (= 2022.1.0-3768), intel-oneapi-runtime-dpcpp-cpp-common (= 2022.1.0-3768), intel-oneapi-runtime-opencl (= 2022.1.0-3768) +Filename: pool/main/intel-oneapi-runtime-dpcpp-cpp-2022.1.0-3768_amd64.deb +Size: 26691662 +MD5sum: 0a3dae271edb351961831250408fbcb2 +SHA1: 9e23755fbce9b88d947a82fffed4684499c5b281 +SHA256: ee69e2d2a4e446625561f51284098a2c6154cd1fa6d4010569dbef37868bf89d +SHA512: b9ed49e5289d7a5d86a05672c7f734daf4a0878609103bbc72259407ebdd9d5826e59736d11d2c43003b3265ed93c76a47eeb87f53981a61ff41d98cad1c6118 +Description: Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic runtime + + +Package: intel-oneapi-runtime-dpcpp-cpp +Architecture: amd64 +Version: 2022.2.0-8734 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 127438 +Depends: intel-oneapi-runtime-tbb (>= 2021.7.0-8712), intel-oneapi-runtime-compilers (= 2022.2.0-8734), intel-oneapi-runtime-dpcpp-cpp-common (= 2022.2.0-8734), intel-oneapi-runtime-opencl (= 2022.2.0-8734) +Filename: pool/main/intel-oneapi-runtime-dpcpp-cpp-2022.2.0-8734_amd64.deb +Size: 27769470 +MD5sum: 68f017892e86ce2ff3e43722dfa0abf9 +SHA1: 161cfc7eb2f4d62d74d43aab6d3c90719f09f18e +SHA256: a7f2978b208c4200638f4dd52811289bed1c97e086e70bc7e68b006a7c726e5e +SHA512: 82cd402f5ad7a89436d56a12540aa5317057c35d1caef237a891909d24edc849984c69708f806f17f0e7aca6908e0cf67bfa063b68c12684b762b074a5e4e4ef +Description: Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic runtime + + +Package: intel-oneapi-runtime-dpcpp-cpp +Architecture: amd64 +Version: 2022.2.1-16953 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 127499 +Depends: intel-oneapi-runtime-tbb (>= 2021.7.1-15005), intel-oneapi-runtime-compilers (= 2022.2.1-16953), intel-oneapi-runtime-dpcpp-cpp-common (= 2022.2.1-16953), intel-oneapi-runtime-opencl (= 2022.2.1-16953) +Filename: pool/main/intel-oneapi-runtime-dpcpp-cpp-2022.2.1-16953_amd64.deb +Size: 27786882 +MD5sum: 825ae2ad02f1da44214aa1d182a4c3fd +SHA1: 6ffac64dcee4884b88e2d37752ba1d41d2de1233 +SHA256: 8a0a52e1a44517d3513d8dd93f5c36d832cf95db072dc89007e37c376430182e +SHA512: 0f6c6fb4b1942339dc62065f1d3641660f2c95d066f0a1693954727a178055c9be3b28747fef3d4ba9013d0f53366e5a40a0784cb5db3ff3d2218eae8fb3fa0f +Description: Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic runtime + + +Package: intel-oneapi-runtime-dpcpp-cpp +Architecture: amd64 +Version: 2023.0.0-25370 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 150770 +Depends: intel-oneapi-runtime-tbb (>= 2021.8.0-25334), intel-oneapi-runtime-compilers (= 2023.0.0-25370), intel-oneapi-runtime-dpcpp-cpp-common (= 2023.0.0-25370), intel-oneapi-runtime-opencl (= 2023.0.0-25370) +Filename: pool/main/intel-oneapi-runtime-dpcpp-cpp-2023.0.0-25370_amd64.deb +Size: 31261022 +MD5sum: b7090ca6917e20855c4a9daf6575549c +SHA1: a8669b94b52dbaca357f1cd7df3c4c7921bfed31 +SHA256: 108b4147a4dee19ae0fdd24e534a9c207230d813948205373cd14b82bdd4f68c +SHA512: 5fc6e6758f7f3558f0aeeb10a05b8eaeb6bf8c84a269b2929576cbaa13d51c741f1e84a6b0e85ab8aed74b73e1baa2ab7d1352122a1be4d6f9e9aa1df4c6933e +Description: Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic runtime + + +Package: intel-oneapi-runtime-dpcpp-cpp +Architecture: amd64 +Version: 2023.1.0-46305 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 126544 +Depends: intel-oneapi-runtime-tbb (>= 2021.9.0-43484), intel-oneapi-runtime-compilers (= 2023.1.0-46305), intel-oneapi-runtime-dpcpp-cpp-common (= 2023.1.0-46305), intel-oneapi-runtime-opencl (= 2023.1.0-46305) +Filename: pool/main/intel-oneapi-runtime-dpcpp-cpp-2023.1.0-46305_amd64.deb +Size: 25579906 +MD5sum: c33ecc1a9ecb9f27aa6f48f0ff8343ea +SHA1: e5dc70d13d1bacf8819abf9f185e3e15919196c9 +SHA256: 1d09f44efacc837258a2faf54440771aa3880d11855e38ea4a741818ec5f467c +SHA512: 5d415255133ade343c59d46a2a125c11f1a41ec618e68663f90590ce4a5ad7328a6613beb673e382c8db9bd3f5118db33afba005aaaf86b694c2d9382bf13c59 +Description: Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic runtime + + +Package: intel-oneapi-runtime-dpcpp-library +Architecture: amd64 +Version: 2021.1.1-189 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-runtime-dpcpp-cpp, intel-oneapi-runtime-tbb +Filename: pool/main/intel-oneapi-runtime-dpcpp-library-2021.1.1-189_amd64.deb +Size: 1654 +MD5sum: a9630e45be7469ecbb79db318db1538c +SHA1: 40954894246f9687ffbc2c6040ad874341260dff +SHA256: 19114a3ec97f0cfdbfbf87ae2ef8d2a23dc10463a6f1a59339ca1bae11cc7092 +SHA512: 7de7a0282c6a0c4c4eafe1d4c56cff9f4028d4e5ce3694e46d5ddd6b879c4d9dd97be8e3829725f1e212d34c0e1d3df3afc80368870fb3f428f265bb6bb10ddf +Description: Intel® oneAPI DPC++ Library runtime + + +Package: intel-oneapi-runtime-dpcpp-library +Architecture: amd64 +Version: 2021.1.2-266 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-runtime-dpcpp-cpp, intel-oneapi-runtime-tbb +Filename: pool/main/intel-oneapi-runtime-dpcpp-library-2021.1.2-266_amd64.deb +Size: 1654 +MD5sum: ddf35695da05a41184a9fffe92dc4ea7 +SHA1: ec7fe51f5c86e548a760769076f37654e84b0686 +SHA256: f5c68b0ecbcb2b1f32ff9bb5c18ec04b80f6353f70acc9187cd4c9952595ea41 +SHA512: dcc85a3a08d4e582b3cf2a6ba80c89052160860e09030cbf33b8035c54596d1b01ca620d9806a3c8d55104a452aa295817b0e071057ba65f22d395966d6606d4 +Description: Intel® oneAPI DPC++ Library runtime + + +Package: intel-oneapi-runtime-dpcpp-library +Architecture: amd64 +Version: 2021.2.0-245 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-runtime-dpcpp-cpp, intel-oneapi-runtime-tbb +Filename: pool/main/intel-oneapi-runtime-dpcpp-library-2021.2.0-245_amd64.deb +Size: 1654 +MD5sum: bf3ea799a4aa986db589e349332f87f2 +SHA1: 12bd9d785f861d9072b2aa8de3a79618dbc0ef62 +SHA256: bd425611792c00f4fc93a016fb8bc985cbacc2d6b826e127f25fd216d38f935f +SHA512: c21486b4df8bfaea3927652e73e62e9e0bc41ab755e0d54217b792fea126f514c4ed28bdfc37c371386db25da7ffc63ff6864e2db3b72369dd1a8cb3dc7dbf32 +Description: Intel® oneAPI DPC++ Library runtime + + +Package: intel-oneapi-runtime-dpcpp-library +Architecture: amd64 +Version: 2021.3.0-271 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-runtime-dpcpp-cpp, intel-oneapi-runtime-tbb +Filename: pool/main/intel-oneapi-runtime-dpcpp-library-2021.3.0-271_amd64.deb +Size: 1652 +MD5sum: 889276276729218f42c17a9f6a51a998 +SHA1: 6b59d07712251df84819baa9311c4d7ab340a9af +SHA256: 5271876e88fdc6f33603dc6ce7306ce90dac7c6cb312f08b2f73e466276f509d +SHA512: 61234a5307d4a8a6782300542a4fbb322885b4a949f3a27e94d276a6a2ee0bde70b209575a2aeeb07dbcd08e794e6daa8acf71b21c558ea8f5a269d13c187b6d +Description: Intel® oneAPI DPC++ Library runtime + + +Package: intel-oneapi-runtime-dpcpp-library +Architecture: amd64 +Version: 2021.4.0-337 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-runtime-dpcpp-cpp, intel-oneapi-runtime-tbb +Filename: pool/main/intel-oneapi-runtime-dpcpp-library-2021.4.0-337_amd64.deb +Size: 1654 +MD5sum: 2ada256401aed318c9a9e026fc046aac +SHA1: 38500d679286287b30f275e45a2fb5c486cef6e7 +SHA256: e84c6fc97b1c37106d60dee7cf48edc4048ac0675b1d2ab95683632d49d81f2e +SHA512: 7f0482cacd701ff06f005cb0e053033cd253d07047e34f8bbe6db3814d8324783ff5cf232c4e926eb65731a139673b89773bc6fcd5dd6721462cd97c33d5b76e +Description: Intel® oneAPI DPC++ Library runtime + + +Package: intel-oneapi-runtime-dpcpp-library +Architecture: amd64 +Version: 2021.5.0-445 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-runtime-dpcpp-cpp, intel-oneapi-runtime-tbb +Filename: pool/main/intel-oneapi-runtime-dpcpp-library-2021.5.0-445_amd64.deb +Size: 1654 +MD5sum: 448460b73110640cd315cc06e598618a +SHA1: 1e024e1f113c8c1d864ce299d623452319a96828 +SHA256: 38f3072315296ab60e959ea340fbf7dba6170a929f4343469b98a83e80283517 +SHA512: 0491e14c97522258b45ffe27e181302b6b22aa0b07cb7591b7d585f419af0b09e9c7c3d9f44c58c1aabdc9b335b8bd64b0a49fb5826fb21777dd0785ca0403f3 +Description: Intel® oneAPI DPC++ Library runtime + + +Package: intel-oneapi-runtime-dpcpp-library +Architecture: amd64 +Version: 2021.6.0-501 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-runtime-dpcpp-cpp, intel-oneapi-runtime-tbb +Filename: pool/main/intel-oneapi-runtime-dpcpp-library-2021.6.0-501_amd64.deb +Size: 1654 +MD5sum: c4071072772a1f29f57293ea16d39548 +SHA1: 9422687d1fc959d8327b8bf2eb2461f4b04c0fdd +SHA256: 46df1966730b5abb96ad430b3ecbb6eac2efaa4339a066bb4bf6a06aa1367c4f +SHA512: b00643b38f510748b4006e51eb009751e4bbf02341c62c31c0db357fe859e7e6f8cc1584a05dfc0df9e83d3545a919039da21b2752f2b10a726c221ba189fee5 +Description: Intel® oneAPI DPC++ Library runtime + + +Package: intel-oneapi-runtime-dpcpp-library +Architecture: amd64 +Version: 2021.7.0-631 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-runtime-dpcpp-cpp, intel-oneapi-runtime-tbb +Filename: pool/main/intel-oneapi-runtime-dpcpp-library-2021.7.0-631_amd64.deb +Size: 1736 +MD5sum: 0464205ceb6a3b546326881f27e85985 +SHA1: 4af24ddd5f20687907794a9c6e002075ddbce779 +SHA256: f35933f5a746b2f27b6779feaa7cdd271712886a970a27e25167a746a4a83d5f +SHA512: 931a26cb8fe5ee44439da07cdb3eeba7621829712ffee126ca0a3033e3fb21e78a260ef98241b67c51f19b54d801815abc85f4d80d69abb2150d434cc62e847c +Description: Intel® oneAPI DPC++ Library runtime + + +Package: intel-oneapi-runtime-dpcpp-library +Architecture: amd64 +Version: 2021.7.1-8713 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-runtime-dpcpp-cpp, intel-oneapi-runtime-tbb +Filename: pool/main/intel-oneapi-runtime-dpcpp-library-2021.7.1-8713_amd64.deb +Size: 1736 +MD5sum: 23df45cfeffe3882b7e2c716b1a7876a +SHA1: e418f1902aa71a6c2d385a09556744a048bd96be +SHA256: dea9f694c235cdadbda56b90e31f4b1aa0ad53914704ada103680cab6d49e89c +SHA512: 6b06e791f14fbf406bf41462c577fcb9d9c1d1e6213e5dd50b4437ded42537ee155e67f08149e55ab6687b64635a431adf2fb8312e44f0841c6426f1b4569f43 +Description: Intel® oneAPI DPC++ Library runtime + + +Package: intel-oneapi-runtime-dpcpp-library +Architecture: amd64 +Version: 2021.7.2-15007 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-runtime-dpcpp-cpp, intel-oneapi-runtime-tbb +Filename: pool/main/intel-oneapi-runtime-dpcpp-library-2021.7.2-15007_amd64.deb +Size: 1744 +MD5sum: 383ff3c050dbedb3c843339f4fac8666 +SHA1: 5e85416c8101b97c2441397277934acd750c7743 +SHA256: c954d4a08f5e6b2e8538ebeb86290cced1410e0c28ec746b62bcda2a5b8ad980 +SHA512: 7bc3b52b7f7e3737540b178cac7b902286372316329218b99d8d688dbee55a876bde81c3e487e44e24574b1d5c4cdbee254b0542221af7372a222adba17f3aaa +Description: Intel® oneAPI DPC++ Library runtime + + +Package: intel-oneapi-runtime-dpcpp-library +Architecture: amd64 +Version: 2022.0.0-25335 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-runtime-dpcpp-cpp, intel-oneapi-runtime-tbb +Filename: pool/main/intel-oneapi-runtime-dpcpp-library-2022.0.0-25335_amd64.deb +Size: 1740 +MD5sum: 01a18a07a49184bc56442e5bed4e1ed2 +SHA1: 93feaeb6d5e94dedd8fbb343f313c987ac1be1ab +SHA256: 20370dc66fb553e0b15049b7e29cf6a8f66cacef2fc416f3c4428b8123e7157f +SHA512: 34726f73a66d46c1a4a7ec4fcb731f8298354a8c004cf2558d9d537d23597bb7f4f125b59e928323ed980036bbc307200ee79c2d4f7de74267bff80b7fdd632d +Description: Intel® oneAPI DPC++ Library runtime + + +Package: intel-oneapi-runtime-dpcpp-library +Architecture: amd64 +Version: 2022.1.0-43490 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-runtime-dpcpp-cpp, intel-oneapi-runtime-tbb +Filename: pool/main/intel-oneapi-runtime-dpcpp-library-2022.1.0-43490_amd64.deb +Size: 1736 +MD5sum: a0e78a3f22522a037bd9669a38734a85 +SHA1: 7c8c21ebf29a64164064d67223296da1dbfa5304 +SHA256: a5a295c518cb2c394493d0659bb3074f808f1b13002795c5e853b420321d26a5 +SHA512: f81312de3bf932ef75326c4c85cfdd0a42604319bb7b0d446adb5bffffb6f2a29c23833c3613d005d27a7a0bcd70b75abafa62a0dbccedbc3338a79f316b2bde +Description: Intel® oneAPI DPC++ Library runtime + + +Package: intel-oneapi-runtime-fortran +Architecture: amd64 +Version: 2021.1.1-189 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 3154 +Depends: intel-oneapi-runtime-mpi, intel-oneapi-runtime-fortran-common, intel-oneapi-runtime-compilers +Filename: pool/main/intel-oneapi-runtime-fortran-2021.1.1-189_amd64.deb +Size: 576704 +MD5sum: 89aa26a8b40031d1334f647d67c39974 +SHA1: 552bcb2711e05aab4e39cf9e45832db83807d209 +SHA256: e0b04f9e432eb28f8ee38222324d18eec085e0a69af09ebe8aa16cfbf45fbb2d +SHA512: 8e31794dc2ea3119203452035ad8bf6963b4f34cc17499f74dc701926a1c65e852a35ad4d6cff40fc201c3fd976a4851a884c040345448e292b546db252925bc +Description: Intel® Fortran Compiler (Beta) & Intel® Fortran Compiler Classic runtime + + +Package: intel-oneapi-runtime-fortran +Architecture: amd64 +Version: 2021.1.2-266 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 3154 +Depends: intel-oneapi-runtime-mpi, intel-oneapi-runtime-fortran-common, intel-oneapi-runtime-compilers +Filename: pool/main/intel-oneapi-runtime-fortran-2021.1.2-266_amd64.deb +Size: 577454 +MD5sum: 161cc9dc6b32911be63ec1611b5a7393 +SHA1: e41bc831ae42287688e29a2c8d87964c2aa90bdb +SHA256: 4c5837622fc41b8d3f405a5acdb7ab264fb1a52c9b6db0846737ec01cb4e0703 +SHA512: c23733cc2b5679853dc3fc7ed3317669ef44986caf22705551d834c2454a2792e274243cd8067817edd0ca101bd51bf4a1346b32099dc3440780bd19e6fcd40c +Description: Intel® Fortran Compiler (Beta) & Intel® Fortran Compiler Classic runtime + + +Package: intel-oneapi-runtime-fortran +Architecture: amd64 +Version: 2021.2.0-610 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 3158 +Depends: intel-oneapi-runtime-mpi (>= 2021.2.0-215), intel-oneapi-runtime-fortran-common (= 2021.2.0-610), intel-oneapi-runtime-compilers (= 2021.2.0-610) +Filename: pool/main/intel-oneapi-runtime-fortran-2021.2.0-610_amd64.deb +Size: 578070 +MD5sum: 8d86168a8fb0c8ccce46068498d97fe6 +SHA1: cf472566869ee700249c67e582d3d51becf4eb90 +SHA256: 87cce7eb80f8a2c086a04df609e68491d23024fe8af47f31a4c8e2bb18f7eeb4 +SHA512: 6dc2f5df020c1df5903562d38866585156fef1bff70e1174d5f0c3b1631287091a15b6a277f4644ab84d7ccf7b50e700ea0c397534a1a74ce867950e200c06a3 +Description: Intel® Fortran Compiler (Beta) & Intel® Fortran Compiler Classic runtime + + +Package: intel-oneapi-runtime-fortran +Architecture: amd64 +Version: 2021.3.0-3350 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 3162 +Depends: intel-oneapi-runtime-mpi (>= 2021.3.0-294), intel-oneapi-runtime-fortran-common (= 2021.3.0-3350), intel-oneapi-runtime-compilers (= 2021.3.0-3350) +Filename: pool/main/intel-oneapi-runtime-fortran-2021.3.0-3350_amd64.deb +Size: 577556 +MD5sum: 0b87a4027fa0328a55ad24842c7b8283 +SHA1: fd743dca5031fc343c86cd75082f622e01d8b598 +SHA256: 9d0383334dc5e22f7e917ead76d09d618dbacd077e427a860153f8b73c95c093 +SHA512: db9ffbee3cd965ab1e1257590d2e3914c685ba0af9ff4235d7cc264274d0d6b0a8c48f9ea2f8c94783ead93212a40d0735314dd1a33f0068729ac086822afc54 +Description: Intel® Fortran Compiler (Beta) & Intel® Fortran Compiler Classic runtime + + +Package: intel-oneapi-runtime-fortran +Architecture: amd64 +Version: 2021.4.0-3561 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 3071 +Depends: intel-oneapi-runtime-mpi (>= 2021.4.0-441), intel-oneapi-runtime-fortran-common (= 2021.4.0-3561), intel-oneapi-runtime-compilers (= 2021.4.0-3561) +Filename: pool/main/intel-oneapi-runtime-fortran-2021.4.0-3561_amd64.deb +Size: 566314 +MD5sum: 76eb09a782b54724ddab221780cbf1b4 +SHA1: 032b52feed4745f56bacdc1c5bd757346c832884 +SHA256: eea60ff946f738db9b127b2b84b848820906551bdf2bf759642ca5ee6f7a5a5f +SHA512: 365ee5d0bb37d150e6dbf813b7099c9e76f0b2e1ee9b9656ead02ac0d84318e46ad45e229b4fe790ebf8fab210da333ef39bfbf930f9dcb3e53b45223ac1b0dd +Description: Intel® Fortran Compiler (Beta) & Intel® Fortran Compiler Classic runtime + + +Package: intel-oneapi-runtime-fortran +Architecture: amd64 +Version: 2022.0.1-3633 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 3080 +Depends: intel-oneapi-runtime-mpi (>= 2021.5.0-495), intel-oneapi-runtime-fortran-common (= 2022.0.1-3633), intel-oneapi-runtime-compilers (= 2022.0.1-3633) +Filename: pool/main/intel-oneapi-runtime-fortran-2022.0.1-3633_amd64.deb +Size: 568572 +MD5sum: 073f03f67d5cc6a2a875bbda5e7adf5d +SHA1: 90aeca55016b19566467f1848a9bf969398f6ae3 +SHA256: 5026b1ffafcbb8e27945f9d411ebd63790075fa7a82685f2b72823b642e07760 +SHA512: 298d41bab309a54d202a7af872830264efcc312899012efa4397f9989985e9c444e5f0301a49cdebeab229fcb14474160c7c0247a00dfcbaca0f98dc7a16f8b7 +Description: Intel® Fortran Compiler & Intel® Fortran Compiler Classic runtime + + +Package: intel-oneapi-runtime-fortran +Architecture: amd64 +Version: 2022.0.2-3658 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 3080 +Depends: intel-oneapi-runtime-mpi (>= 2021.5.1-515), intel-oneapi-runtime-fortran-common (= 2022.0.2-3658), intel-oneapi-runtime-compilers (= 2022.0.2-3658) +Filename: pool/main/intel-oneapi-runtime-fortran-2022.0.2-3658_amd64.deb +Size: 568766 +MD5sum: 0abefb0cb1cb8500f4c0cc27a2c4a4d6 +SHA1: cdb75bbaf6c485bc77a568e5c9e66e6e938b6c78 +SHA256: 4c3b771f1bd3691022e2b68a7dfa8292f60fb551493e95ee25eeb1b339e0c82b +SHA512: 3a54d30f5076859c7c548bc764dda25e17e689383bbee33fe1490122e8848d8ec1c590a3d80a7d5694c6a6194c02e5623aec80b7e0b0350e13185b98349875a3 +Description: Intel® Fortran Compiler & Intel® Fortran Compiler Classic runtime + + +Package: intel-oneapi-runtime-fortran +Architecture: amd64 +Version: 2022.1.0-3768 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 3144 +Depends: intel-oneapi-runtime-mpi (>= 2021.6.0-602), intel-oneapi-runtime-fortran-common (= 2022.1.0-3768), intel-oneapi-runtime-compilers (= 2022.1.0-3768) +Filename: pool/main/intel-oneapi-runtime-fortran-2022.1.0-3768_amd64.deb +Size: 570290 +MD5sum: 5761419aee2e4e0f4999ffaa36bca882 +SHA1: e5e7f65912129b0385b6a076ff86c4270cadfb68 +SHA256: c2e3eaf6b86134f3f87e04d187fcdbe514eb342695f2301dceb78dd7ba83f1ea +SHA512: 5cd92e17d4ecbdd17b1e0c2de13bdac3fe445b527e1563150aac9270d249f448a26b6bc4993d5b7b5c2dedf51b941453f57ffcc1d82d2bef5cdfe64862db1446 +Description: Intel® Fortran Compiler & Intel® Fortran Compiler Classic runtime + + +Package: intel-oneapi-runtime-fortran +Architecture: amd64 +Version: 2022.2.0-8734 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 2752 +Depends: intel-oneapi-runtime-mpi (>= 2021.7.0-8711), intel-oneapi-runtime-fortran-common (= 2022.2.0-8734), intel-oneapi-runtime-compilers (= 2022.2.0-8734) +Filename: pool/main/intel-oneapi-runtime-fortran-2022.2.0-8734_amd64.deb +Size: 519138 +MD5sum: ea0262c59b657f6c7f2193b0b08133b9 +SHA1: 6809f2015aae0e4c57d6e082904a87fd02397e9f +SHA256: 956b98dcc1cce9017ad6d4d2f636a327944081b01dd2fbd96ab7eb7f35fffe9d +SHA512: f374e52625028f040ae613dc81b1693746dd8b39b9745608bb8ea845a42f95394afe7713668785cf860b005b1d109244c4a02f04873694e69d1f32a001f841c6 +Description: Intel® Fortran Compiler & Intel® Fortran Compiler Classic runtime + + +Package: intel-oneapi-runtime-fortran +Architecture: amd64 +Version: 2022.2.1-16953 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 2752 +Depends: intel-oneapi-runtime-mpi (>= 2021.7.1-16815), intel-oneapi-runtime-fortran-common (= 2022.2.1-16953), intel-oneapi-runtime-compilers (= 2022.2.1-16953) +Filename: pool/main/intel-oneapi-runtime-fortran-2022.2.1-16953_amd64.deb +Size: 519694 +MD5sum: d907774c3fe2548b3dc0b2c5729ae9eb +SHA1: dc7b0204f27a1c0ddd159bf95fac61b19ab19192 +SHA256: 60d41d3f6ed82f4b06622f2c36f76478502d5257e86bb5718375844ba8403965 +SHA512: f6b80cf11284787d0caf501f96aae8eae105c5ac04986e0468c79813063c6a95b81dcbd7244ce3c122dd6e6ea74320c4a7fbc4557a8cd9311495bbe0e3bb3ade +Description: Intel® Fortran Compiler & Intel® Fortran Compiler Classic runtime + + +Package: intel-oneapi-runtime-fortran +Architecture: amd64 +Version: 2023.0.0-25370 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 2805 +Depends: intel-oneapi-runtime-mpi (>= 2021.8.0-25329), intel-oneapi-runtime-fortran-common (= 2023.0.0-25370), intel-oneapi-runtime-compilers (= 2023.0.0-25370) +Filename: pool/main/intel-oneapi-runtime-fortran-2023.0.0-25370_amd64.deb +Size: 525350 +MD5sum: 1905964765d7eb56d26ca4eabab7f0e0 +SHA1: e40bbb4d266862b70f1854c70c8da83539246978 +SHA256: 7b06b3abe86a8e1528934d30f91eea2f842c269c3f4c1b764c956d12f2dcabd3 +SHA512: 41dde52ba509f3438fb21b9eeff09190892814b79162153f7324c869078f6e3bd7a2928d6e49ddcbad74129b92e72c18ccf0a4285598427f8443cb80c3c1cb5b +Description: Intel® Fortran Compiler & Intel® Fortran Compiler Classic runtime + + +Package: intel-oneapi-runtime-fortran +Architecture: amd64 +Version: 2023.1.0-46305 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 2822 +Depends: intel-oneapi-runtime-mpi (>= 2021.9.0-43482), intel-oneapi-runtime-fortran-common (= 2023.1.0-46305), intel-oneapi-runtime-compilers (= 2023.1.0-46305) +Filename: pool/main/intel-oneapi-runtime-fortran-2023.1.0-46305_amd64.deb +Size: 529246 +MD5sum: 441f4391dcbd5b480dbdc4865391fc27 +SHA1: bddffcc41e83f92edfb6c09a58515720dd1c2176 +SHA256: 263d6e5897de2323750e0a116d287f0a1cb01de9360068b5ddbff2c30acc2034 +SHA512: d85afb77d2f72058309184853c3f18557a4914ba1d98af971dcd23a4a5e402333c04c8578e846f96c53da12a5f40d22389a854b258f455e0f339c03af7a2e697 +Description: Intel® Fortran Compiler & Intel® Fortran Compiler Classic runtime + + +Package: intel-oneapi-runtime-ipp +Architecture: amd64 +Version: 2021.1.1-47 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 392489 +Depends: intel-oneapi-runtime-ipp-common, intel-oneapi-runtime-tbb, intel-oneapi-runtime-openmp +Filename: pool/main/intel-oneapi-runtime-ipp-2021.1.1-47_amd64.deb +Size: 62798626 +MD5sum: 291c767e0ba81dce903c4f38210c616a +SHA1: 508826cd64eb942a3aa8fd723ab3bb59580f5dfd +SHA256: 6a7e5e8fb2c999e49735f9443bcc37439d06135721ef473db9ac8148f6af38d4 +SHA512: 0049a62441cd42152f93185c995e4300c09e6d3c0b5834a85de1e76b366a9c4558baecc1490bdb52aec8608d02c7c0882a586a3340da1e88ef0cffc234f298ad +Description: Intel® Integrated Performance Primitives runtime + + +Package: intel-oneapi-runtime-ipp +Architecture: amd64 +Version: 2021.2.0-233 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 487787 +Depends: intel-oneapi-runtime-ipp-common (= 2021.2.0-233), intel-oneapi-runtime-tbb (>= 2021.2.0-357), intel-oneapi-runtime-openmp (>= 2021.2.0-610) +Filename: pool/main/intel-oneapi-runtime-ipp-2021.2.0-233_amd64.deb +Size: 81295108 +MD5sum: 7cdc0722b98a7f9f2f5f54fdae5cbc05 +SHA1: 518492ea9ded6b96a08ae984ef2f97ddd8a56798 +SHA256: afe24881687b8eccaf7810342ed9ef3e1763831b321003406b8e2c780a7f5c7a +SHA512: e2bebb47cf5b2a505fa207627dbe3859a839f030f71f92246c5afa23aea1fabdcd359a94452f8090fba32248d3330a7e4e99ff8c5d33be40d22cbcd31114cf61 +Description: Intel® Integrated Performance Primitives runtime + + +Package: intel-oneapi-runtime-ipp +Architecture: amd64 +Version: 2021.3.0-333 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 488890 +Depends: intel-oneapi-runtime-ipp-common (= 2021.3.0-333), intel-oneapi-runtime-tbb (>= 2021.3.0-511), intel-oneapi-runtime-openmp (>= 2021.3.0-3350) +Filename: pool/main/intel-oneapi-runtime-ipp-2021.3.0-333_amd64.deb +Size: 81527108 +MD5sum: 0ba4bf1b6c537d8fe1ee6c5da79bc6bc +SHA1: 4a72d2cab9624de2792ab1f5ae24e86e7263c517 +SHA256: 10f611fe4d68e0b8e55cae0c8ed48e25c15e79dd1b7f83d87c2a342fe601485f +SHA512: 43f8a26a42346e31b62019cd43ad28c2c7890d71e5037736d7706ef6593c44732d39e1acae7477fe75949d3b890ea3bb36b7461e15c21685149b63f274d65fe1 +Description: Intel® Integrated Performance Primitives runtime + + +Package: intel-oneapi-runtime-ipp +Architecture: amd64 +Version: 2021.4.0-459 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 498446 +Depends: intel-oneapi-runtime-ipp-common (= 2021.4.0-459), intel-oneapi-runtime-tbb (>= 2021.4.0-643), intel-oneapi-runtime-openmp (>= 2021.4.0-3561) +Filename: pool/main/intel-oneapi-runtime-ipp-2021.4.0-459_amd64.deb +Size: 83121258 +MD5sum: 5a0ccb1ebcad207a5034de7fee7017a5 +SHA1: 259514fcc91754683708cc4a37217f40a876bb1b +SHA256: f983271c26792ea0cecdb294aebdb4619e630496643af32086597be782df85a3 +SHA512: f3d5a37ea532b0f1f5534433666fdcbc18117404565cf05d67a6abd0522f3443de5d32e3eaf01a38f8df18a1d71ef005d5f3c8e0988bae285f919c7fbe8572e3 +Description: Intel® Integrated Performance Primitives runtime + + +Package: intel-oneapi-runtime-ipp +Architecture: amd64 +Version: 2021.5.1-522 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 499092 +Depends: intel-oneapi-runtime-ipp-common (= 2021.5.1-522), intel-oneapi-runtime-tbb (>= 2021.5.0-707), intel-oneapi-runtime-openmp (>= 2022.0.1-3633) +Filename: pool/main/intel-oneapi-runtime-ipp-2021.5.1-522_amd64.deb +Size: 83188940 +MD5sum: afa04d71ea926d2fda50b572692a7049 +SHA1: 0ded46be05e9a0913d37a4950318b85da0191f75 +SHA256: 98cd14bf635969d57bf9ea7bb27b90f27f72404f1927aa486a2bcf3c20a0f303 +SHA512: a32a56ed70c3dad56230ded0a20183031ec41483173209b2640e425ad5c3b830b48ee218c5925d98a0f2c502f3d97026c1f9e846d9fa2f40614c8d9a2d2756ec +Description: Intel® Integrated Performance Primitives runtime + + +Package: intel-oneapi-runtime-ipp +Architecture: amd64 +Version: 2021.5.2-544 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 499092 +Depends: intel-oneapi-runtime-ipp-common (= 2021.5.2-544), intel-oneapi-runtime-tbb (>= 2021.5.1-738), intel-oneapi-runtime-openmp (>= 2022.0.2-3658) +Filename: pool/main/intel-oneapi-runtime-ipp-2021.5.2-544_amd64.deb +Size: 83197386 +MD5sum: 3af33fe395d6d4758ad5e48de8d57549 +SHA1: 29528b66e3113ef7148d49aa2bd160b57a3cef64 +SHA256: 72c57dbaabe92500bbd04481df8b5ae63947d87aa3bac5864a8a90beb5bfbdc2 +SHA512: 46da01c627d8f83ed219c11c8661f73e6bb80dbe8c0cbd63d1d3b8cc6517e0abd0f6b62317d9d7e56b0a70d1763644922716a0dff5ff59535946585c3336096c +Description: Intel® Integrated Performance Primitives runtime + + +Package: intel-oneapi-runtime-ipp +Architecture: amd64 +Version: 2021.6.0-626 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 499391 +Depends: intel-oneapi-runtime-ipp-common (= 2021.6.0-626), intel-oneapi-runtime-tbb (>= 2021.6.0-835), intel-oneapi-runtime-openmp (>= 2022.1.0-3768) +Filename: pool/main/intel-oneapi-runtime-ipp-2021.6.0-626_amd64.deb +Size: 84962920 +MD5sum: d31a05d294c81a951d67423ee596da01 +SHA1: 77c4c138205ba801df4d2584d693a9a61de6cd94 +SHA256: db5ae29b241d40deb7a191deb4c15540b36246e2f93b1da407cedc47505b685c +SHA512: 0c07e0aafbbc5682cbc01d2f5f8f15f4f618d35688a92c0f547f57293ea3c98436ffebfad0846fd8da2dd2d3531aaf1b69248b611108193fe8e3b5cab488d6a8 +Description: Intel® Integrated Performance Primitives runtime + + +Package: intel-oneapi-runtime-ipp +Architecture: amd64 +Version: 2021.6.1-8749 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 499415 +Depends: intel-oneapi-runtime-ipp-common (= 2021.6.1-8749), intel-oneapi-runtime-tbb (>= 2021.7.0-8712), intel-oneapi-runtime-openmp (>= 2022.2.0-8734) +Filename: pool/main/intel-oneapi-runtime-ipp-2021.6.1-8749_amd64.deb +Size: 84964076 +MD5sum: df5a8a7400fe3dcae7c76f3a20b6b72b +SHA1: a14c3e0eaa8b48e65b56b4beffe555580249e79b +SHA256: afc818bca9f44929fea1900eaf1227dd2cf4526b378e9235336c915d13c8efa9 +SHA512: 7145f94a4d12c35ddc9d1a8815aaa0202db28099dc3eff628d400a7954b520dfe76f4934dc67b125987a3340f1b344ab528fa3dcab5ea4b14249371429d10f41 +Description: Intel® Integrated Performance Primitives runtime + + +Package: intel-oneapi-runtime-ipp +Architecture: amd64 +Version: 2021.6.2-16995 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 499415 +Depends: intel-oneapi-runtime-ipp-common (= 2021.6.2-16995), intel-oneapi-runtime-tbb (>= 2021.7.1-15005), intel-oneapi-runtime-openmp (>= 2022.2.1-16953) +Filename: pool/main/intel-oneapi-runtime-ipp-2021.6.2-16995_amd64.deb +Size: 84963204 +MD5sum: 3a01c741f3ca63ca0e5ab1e366e5338b +SHA1: e0f7c0741c763857ab1d65a0ce1083606db9c778 +SHA256: fce453775d97361abfa6068b64499a8cfed35059bdf063139148429158a7c6e6 +SHA512: 7b92309a9411505b234cd59c2c20be02369500a16e3f0f91b319457f75d22adbe89dcb02e014604632a9eefd965137b3b4feb349e0d792e149301f5e7275d12c +Description: Intel® Integrated Performance Primitives runtime + + +Package: intel-oneapi-runtime-ipp +Architecture: amd64 +Version: 2021.7.0-25396 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 498510 +Depends: intel-oneapi-runtime-ipp-common (= 2021.7.0-25396), intel-oneapi-runtime-tbb (>= 2021.8.0-25334), intel-oneapi-runtime-openmp (>= 2023.0.0-25370) +Filename: pool/main/intel-oneapi-runtime-ipp-2021.7.0-25396_amd64.deb +Size: 83400028 +MD5sum: 1d62f0c418f7896a5351400fe3af9637 +SHA1: 1c82a73530ba79ddcc91bb93f7bacc16ef025adb +SHA256: ffb637d9d34c28de157d7cff3bc39b5306b5958bc9a56ee40739b0a7d0da5169 +SHA512: 15220991f0738bd52815fc495075ba7a86b094ff606ec1c6eada9c6edcf077c8757dcd37c7b1e14dca2e339da901677d552e506053717084e1a975a94583defc +Description: Intel® Integrated Performance Primitives runtime + + +Package: intel-oneapi-runtime-ipp +Architecture: amd64 +Version: 2021.8.0-46345 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 498898 +Depends: intel-oneapi-runtime-ipp-common (= 2021.8.0-46345), intel-oneapi-runtime-tbb (>= 2021.9.0-43484), intel-oneapi-runtime-openmp (>= 2023.1.0-46305) +Filename: pool/main/intel-oneapi-runtime-ipp-2021.8.0-46345_amd64.deb +Size: 85261152 +MD5sum: 139623c83afc22f4570a426117809621 +SHA1: 1c627b560138386c96d04d4bceabed14d26beda7 +SHA256: 099fac5af2fba8005b68e563e7dfcaca826e1595c23aa5d1cfc32bfc5334d81d +SHA512: 542f01a8ea8ab16a1bb975cd82bc41d72903c4f62a559498074301c2241a6ec091aa7b4eeb7c31632201444b3fc3f3ccdce7602e70acee8979a9778eb4f1559e +Description: Intel® Integrated Performance Primitives runtime + + +Package: intel-oneapi-runtime-ipp-crypto +Architecture: amd64 +Version: 2021.1.1-54 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 8339 +Depends: intel-oneapi-runtime-ipp-crypto-common, intel-oneapi-runtime-tbb, intel-oneapi-runtime-openmp +Filename: pool/main/intel-oneapi-runtime-ipp-crypto-2021.1.1-54_amd64.deb +Size: 2403076 +MD5sum: 44a516faa57df89a7f86c166ded68bdc +SHA1: 10268ccd46cb5c2fec2988ec029313b41bace1ae +SHA256: f9bf48486ae14c586e717484a7ea209aa1362fd414b3689c7019e1c573ed58e5 +SHA512: 813954897ca33c81cd469a27d03ed520768153b421d6dc33aecf12cbacd8a61afaaf8860ea71d5a55917daa8f4f521da3871e62a4c5fd3f5e21e4637ac9ab3e4 +Description: Intel® Integrated Performance Primitives Cryptography runtime + + +Package: intel-oneapi-runtime-ipp-crypto +Architecture: amd64 +Version: 2021.2.0-231 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 11338 +Depends: intel-oneapi-runtime-ipp-crypto-common (= 2021.2.0-231) +Filename: pool/main/intel-oneapi-runtime-ipp-crypto-2021.2.0-231_amd64.deb +Size: 2687150 +MD5sum: f53a90d2a9d1cf3470938601a92381c2 +SHA1: 05e76c2975fa0be2a17173a487bcde0992761acb +SHA256: 4681910c2eab4dfb5061a0dc5b9bc479756cc748696f26772adb9d47e7f35a7b +SHA512: 7306acd88ccf8b297a0cb2f51a82d1037b14ead6f9ea3459717d10464b5b95ef1bcb82c91484fe25b6d5cd108c3cd7e3eaec80bcb0bf8b5ef98335e7a154b847 +Description: Intel® Integrated Performance Primitives Cryptography runtime + + +Package: intel-oneapi-runtime-ipp-crypto +Architecture: amd64 +Version: 2021.3.0-315 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 12752 +Depends: intel-oneapi-runtime-ipp-crypto-common (= 2021.3.0-315) +Filename: pool/main/intel-oneapi-runtime-ipp-crypto-2021.3.0-315_amd64.deb +Size: 3184272 +MD5sum: f64716d4d7a101c0e6db3978c52cbce7 +SHA1: c9f044b682cb577add89d35295b4ba32e0777a53 +SHA256: f55686b822376e2ab3f8a50a16b3de08fedb7d27c175210d376a9a8db2fa2dff +SHA512: 4a9de45412e701b2aa52c48931d5ea6228af0a4d44f2d8014fefe014f5c63dd62d5ecb3280a8cb87248d2ade6b43c2061eac10f362f60cebd4a750596f02d497 +Description: Intel® Integrated Performance Primitives Cryptography runtime + + +Package: intel-oneapi-runtime-ipp-crypto +Architecture: amd64 +Version: 2021.4.0-401 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 12977 +Depends: intel-oneapi-runtime-ipp-crypto-common (= 2021.4.0-401) +Filename: pool/main/intel-oneapi-runtime-ipp-crypto-2021.4.0-401_amd64.deb +Size: 3263926 +MD5sum: 3561eb7dd020884302e32a08bc27977b +SHA1: e379210dc06540809c460ce8ce317e256673861f +SHA256: 37dcb704531aa0916c19698bbc37ab48680194e12cf34bcee11182ba8e89960c +SHA512: 76ddd67fee35b4761a26f9b1bd816b3da53727fa472af5ea8a0593d7ee671ba95793d73ea7dc3f0b089833ecb3083891e1e3ca7101a20b0cf23c593c1d792bb6 +Description: Intel® Integrated Performance Primitives Cryptography runtime + + +Package: intel-oneapi-runtime-ipp-crypto +Architecture: amd64 +Version: 2021.5.0-445 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 14121 +Depends: intel-oneapi-runtime-ipp-crypto-common (= 2021.5.0-445) +Filename: pool/main/intel-oneapi-runtime-ipp-crypto-2021.5.0-445_amd64.deb +Size: 3314580 +MD5sum: eca59b779358767023c055cfb1e87884 +SHA1: 3d35751aa2ab403032e0a1c4b216f84bae48c024 +SHA256: 87a40477180d713d4f8de6eb707919c75723f588961b886d60397bac8a4b7eee +SHA512: 2b8ac9383e2660104ae5a4b4bf535572b803fddb6936f66f30c7170cf0c568c0f2675b0c902c1980a7131fcfe7b0db3625d143bec8fb73162d70e5bba14681d4 +Description: Intel® Integrated Performance Primitives Cryptography runtime + + +Package: intel-oneapi-runtime-ipp-crypto +Architecture: amd64 +Version: 2021.5.1-462 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 14121 +Depends: intel-oneapi-runtime-ipp-crypto-common (= 2021.5.1-462) +Filename: pool/main/intel-oneapi-runtime-ipp-crypto-2021.5.1-462_amd64.deb +Size: 3307800 +MD5sum: af68e20ba03a20acc3982bd0f867306f +SHA1: 3e406a000383ceba9148b3b3e19bde4f248c2d63 +SHA256: 1f4873c42e889044aff94e66f63ca92a46663f4d1fa25fb4c474a0ff8631e23b +SHA512: 47955b2918d073e175bed1b764ef29a9440a7e5890217a00c90a53ac9087cc02cdba6a6a7f2a94a81b1d8cf2d6f78e8d7fcd1080f07a9b08ecbac19ab81c8077 +Description: Intel® Integrated Performance Primitives Cryptography runtime + + +Package: intel-oneapi-runtime-ipp-crypto +Architecture: amd64 +Version: 2021.6.0-536 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 15180 +Depends: intel-oneapi-runtime-ipp-crypto-common (= 2021.6.0-536) +Filename: pool/main/intel-oneapi-runtime-ipp-crypto-2021.6.0-536_amd64.deb +Size: 3926156 +MD5sum: a5c6b4de2c9370ac34e5fa1e008d7cba +SHA1: 2877e761331fda4c68ab6f61aee5a8411197855f +SHA256: cd3e94717e0a7a865b4134e5aaa368a8efc5ee54b5a1a423290eb67b85538d0b +SHA512: e102a6ed156876032e7b27b8fa316e511d9790a2d0eec8e8b887cac76a945b9c323ff8d7670275e5c4348c3b511458716339bb97d010cb99c6025a9c98428060 +Description: Intel® Integrated Performance Primitives Cryptography runtime + + +Package: intel-oneapi-runtime-ipp-crypto +Architecture: amd64 +Version: 2021.6.1-8714 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 15203 +Depends: intel-oneapi-runtime-ipp-crypto-common (= 2021.6.1-8714) +Filename: pool/main/intel-oneapi-runtime-ipp-crypto-2021.6.1-8714_amd64.deb +Size: 3937008 +MD5sum: af0e4b83113f891daf4ccb0fc5e162a5 +SHA1: c4278a0e1879f76c975f055e6b26c65ce040dcf7 +SHA256: a81865d0f61e22ce9c863bae15aaefe329dd3b0b188903b088e74c60a17d41f5 +SHA512: fa228693091f0eadec8ed34f7d6b51369a066414425ae5cca716aa27524b7c907c7027f19fe1fc37244795df409b4710960f3c1f6cbea56c96d09e4c9172a610 +Description: Intel® Integrated Performance Primitives Cryptography runtime + + +Package: intel-oneapi-runtime-ipp-crypto +Architecture: amd64 +Version: 2021.6.2-15006 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 15203 +Depends: intel-oneapi-runtime-ipp-crypto-common (= 2021.6.2-15006) +Filename: pool/main/intel-oneapi-runtime-ipp-crypto-2021.6.2-15006_amd64.deb +Size: 3935860 +MD5sum: c286635d9c45f6dfd32e4f03b8274052 +SHA1: 9e67fb21b969bfcd8bd4e5e4c81360bcf05bfdf1 +SHA256: 0c60c33a920fe8c9f8a5b0ee563eabac16c33704ec75fafaaad8d01a801a3cb8 +SHA512: 20fdbd0001ab2ec77cfaa0faba43a292805a0a517f8661623b8c6a47556be15a086c7b0da1de67dd01d18b1627417641a0c5017b41f49b607225ba6409817ed0 +Description: Intel® Integrated Performance Primitives Cryptography runtime + + +Package: intel-oneapi-runtime-ipp-crypto +Architecture: amd64 +Version: 2021.6.3-25343 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 15203 +Depends: intel-oneapi-runtime-ipp-crypto-common (= 2021.6.3-25343) +Filename: pool/main/intel-oneapi-runtime-ipp-crypto-2021.6.3-25343_amd64.deb +Size: 3940860 +MD5sum: a67cbc4a2fb261356cee53b931d44a65 +SHA1: cfedff9f5748930727c721812808a22a17be5b78 +SHA256: e9a89da669376fc793c82eb611ed22cfa6469a38797ffc263dfec8faaa15a74f +SHA512: 325ef5344dc76e431bd85521c26592cc8c00c2659d589bc6aad9b3b87a89cb1804efce6cff8f41765ad3fca505b099a56d2e0a7715f073aff9acec0bcdf883a5 +Description: Intel® Integrated Performance Primitives Cryptography runtime + + +Package: intel-oneapi-runtime-ipp-crypto +Architecture: amd64 +Version: 2021.7.0-43492 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 15756 +Depends: intel-oneapi-runtime-ipp-crypto-common (= 2021.7.0-43492) +Filename: pool/main/intel-oneapi-runtime-ipp-crypto-2021.7.0-43492_amd64.deb +Size: 4079952 +MD5sum: a0da0ad460ad2360470561c5302656fd +SHA1: 40659a2f400fb8f1fa41f480b358a28e817673e5 +SHA256: a14f124355f7d0b7ce070e492c0a2411165d50089866b26b0c1e4774ee596205 +SHA512: 65d22987a4c64a9126eafd83e702fe4bc0dcf8ac6b39aa181af36c2db478993ff8d61f64f6854169c507994b205cb90515c9853a7d2496b8c9bc08652cc5de11 +Description: Intel® Integrated Performance Primitives Cryptography runtime + + +Package: intel-oneapi-runtime-libs +Architecture: amd64 +Version: 2021.1.1-26 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-runtime-fortran (>= 2021.1.1-189), intel-oneapi-runtime-dpcpp-library (>= 2021.1.1-189), intel-oneapi-runtime-openmp (>= 2021.1.1-189), intel-oneapi-runtime-dpcpp-cpp (>= 2021.1.1-189), intel-oneapi-runtime-tbb (>= 2021.1.1-119), intel-oneapi-runtime-dnnl (>= 2021.1.1-55), intel-oneapi-runtime-mkl (>= 2021.1.1-52), intel-oneapi-runtime-dal (>= 2021.1.1-79), intel-oneapi-runtime-ipp (>= 2021.1.1-47), intel-oneapi-runtime-ipp-crypto (>= 2021.1.1-54), intel-oneapi-runtime-mpi (>= 2021.1.1-76), intel-oneapi-runtime-vpl (>= 2021.1.1-66), intel-oneapi-runtime-ccl (>= 2021.1.1-54) +Filename: pool/main/intel-oneapi-runtime-libs-2021.1.1-26_amd64.deb +Size: 1742 +MD5sum: 9bce06ac5a4664f8ac0b833560510c6f +SHA1: cfc24f316c4304e928aaf7a30262476c8293b722 +SHA256: 841e46bcb996113733fb510ba8776f9c54523d7d28c04d3d6ba8276c68cb64bd +SHA512: 3579fb8405773c7a4509e61c8ade5a6eb524dda1433899a96ad296a3179fa82b0fd06dcb04ae333f626ec6764cc0c71d75120b46ee6986bc31f281043f3bcbd9 +Description: Intel® oneAPI Runtime Libraries + + +Package: intel-oneapi-runtime-libs +Architecture: amd64 +Version: 2021.2.0-95 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-runtime-mpi (>= 2021.2.0-215), intel-oneapi-runtime-tbb (>= 2021.2.0-357), intel-oneapi-runtime-ccl (>= 2021.2.0-269), intel-oneapi-runtime-openmp (>= 2021.2.0-610), intel-oneapi-runtime-dpcpp-cpp (>= 2021.2.0-610), intel-oneapi-runtime-fortran (>= 2021.2.0-610), intel-oneapi-runtime-dnnl (>= 2021.2.0-228), intel-oneapi-runtime-ipp (>= 2021.2.0-233), intel-oneapi-runtime-dal (>= 2021.2.0-358), intel-oneapi-runtime-mkl (>= 2021.2.0-296), intel-oneapi-runtime-vpl (>= 2021.2.2-212), intel-oneapi-runtime-ipp-crypto (>= 2021.2.0-231), intel-oneapi-runtime-dpcpp-library (>= 2021.2.0-245) +Filename: pool/main/intel-oneapi-runtime-libs-2021.2.0-95_amd64.deb +Size: 1754 +MD5sum: 0f6e043ff408688a5aa93041cf3a4986 +SHA1: 3e3c87b029a694a156387fbbf064737a6d71a9c1 +SHA256: ed80d1c71394419feb8abb06ed6a2ef13cf24a86a135cb94f8c930fdb7201e53 +SHA512: 8697b0f32ebf6cd7793bc9a47658870443ea6245d0b7fef41987261aed70f96403834a7dbcaafdfa6066cd1ca0958e3e8ca4cc0c74a7de3b126257b7d7b7163f +Description: Intel® oneAPI Runtime Libraries + + +Package: intel-oneapi-runtime-libs +Architecture: amd64 +Version: 2021.3.0-161 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-runtime-ipp-crypto (>= 2021.3.0-315), intel-oneapi-runtime-tbb (>= 2021.3.0-511), intel-oneapi-runtime-mpi (>= 2021.3.0-294), intel-oneapi-runtime-openmp (>= 2021.3.0-3350), intel-oneapi-runtime-dpcpp-cpp (>= 2021.3.0-3350), intel-oneapi-runtime-fortran (>= 2021.3.0-3350), intel-oneapi-runtime-dal (>= 2021.3.0-557), intel-oneapi-runtime-dnnl (>= 2021.3.0-344), intel-oneapi-runtime-mkl (>= 2021.3.0-520), intel-oneapi-runtime-ipp (>= 2021.3.0-333), intel-oneapi-runtime-ccl (>= 2021.3.0-343), intel-oneapi-runtime-vpl (>= 2021.4.0-328), intel-oneapi-runtime-dpcpp-library (>= 2021.4.0-337) +Filename: pool/main/intel-oneapi-runtime-libs-2021.3.0-161_amd64.deb +Size: 1762 +MD5sum: 2debec261071088a1532e5c6331a35d7 +SHA1: 78c687085a846a4d93232edbc2a61ec5cd540ea0 +SHA256: 03d6bdd19d74f485bd2cdcc03e8fb0f56b88f7350e676b1bd1b29344735055c5 +SHA512: 6cd1fd5b4ea2b8adc8789eea52a46f6f0b6aafff2c4c70ebdf9453cf9731f421ac7623398d66ea06195e5d14d8428df2a485e5f1730c4601cb7022231af91cdc +Description: Intel® oneAPI Runtime Libraries + + +Package: intel-oneapi-runtime-libs +Architecture: amd64 +Version: 2021.4.0-200 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-runtime-tbb (>= 2021.4.0-643), intel-oneapi-runtime-mpi (>= 2021.4.0-441), intel-oneapi-runtime-openmp (>= 2021.4.0-3561), intel-oneapi-runtime-dpcpp-cpp (>= 2021.4.0-3561), intel-oneapi-runtime-fortran (>= 2021.4.0-3561), intel-oneapi-runtime-ipp (>= 2021.4.0-459), intel-oneapi-runtime-ipp-crypto (>= 2021.4.0-401), intel-oneapi-runtime-dal (>= 2021.4.0-729), intel-oneapi-runtime-mkl (>= 2021.4.0-640), intel-oneapi-runtime-dnnl (>= 2021.4.0-467), intel-oneapi-runtime-ccl (>= 2021.4.0-433), intel-oneapi-runtime-dpcpp-library (>= 2021.5.0-445), intel-oneapi-runtime-vpl (>= 2021.6.0-458) +Filename: pool/main/intel-oneapi-runtime-libs-2021.4.0-200_amd64.deb +Size: 1764 +MD5sum: b4f6a2cc2241c6493fe235d4624ba9d8 +SHA1: 034f8328936e9f0d892c38a88a1db7942291f095 +SHA256: 0574ea8974373bbb91018aaff6d3941048db8cd5ccb3e28070ec7317f2f28cd5 +SHA512: 98ed2f0fcb5e080f86ff74162230de5a90abb97332910bd5a0c9d5d8c18d6e7d958cb6934102184a3b1742b541825cfd19a3e1e16f77559504b91054fe97de3b +Description: Intel® oneAPI Runtime Libraries + + +Package: intel-oneapi-runtime-libs +Architecture: amd64 +Version: 2022.1.1-70 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-runtime-tbb (>= 2021.5.0-707), intel-oneapi-runtime-mpi (>= 2021.5.0-495), intel-oneapi-runtime-ccl (>= 2021.5.0-478), intel-oneapi-runtime-dpcpp-library (>= 2021.6.0-501), intel-oneapi-runtime-ipp-crypto (>= 2021.5.0-445), intel-oneapi-runtime-vpl (>= 2022.0.0-58), intel-oneapi-runtime-openmp (>= 2022.0.1-3633), intel-oneapi-runtime-dpcpp-cpp (>= 2022.0.1-3633), intel-oneapi-runtime-fortran (>= 2022.0.1-3633), intel-oneapi-runtime-dal (>= 2021.5.1-803), intel-oneapi-runtime-ipp (>= 2021.5.1-522), intel-oneapi-runtime-mkl (>= 2022.0.1-117), intel-oneapi-runtime-dnnl (>= 2022.0.1-26) +Filename: pool/main/intel-oneapi-runtime-libs-2022.1.1-70_amd64.deb +Size: 1776 +MD5sum: c4451f1cb7e3c7e126aa0cf15ff815d4 +SHA1: 0d5e67df0ef5defe390a62948d2c41171142f630 +SHA256: 22e9ba480cd0e8ec2337de5c7c40ab5e08d11071f11040d88a8c7a525d57bfc8 +SHA512: 25fb77a0d15769225a2a7f1c72c4cb980e8f2d7c22d87aae26e229a94ccd75fa9e7388e863182822fa7ef61b771f42f1fc4a1145ff8b5ce9ed649012b3090df4 +Description: Intel® oneAPI Runtime Libraries + + +Package: intel-oneapi-runtime-libs +Architecture: amd64 +Version: 2022.1.2-85 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-runtime-dpcpp-library (>= 2021.6.0-501), intel-oneapi-runtime-vpl (>= 2022.0.0-58), intel-oneapi-runtime-openmp (>= 2022.0.2-3658), intel-oneapi-runtime-dpcpp-cpp (>= 2022.0.2-3658), intel-oneapi-runtime-fortran (>= 2022.0.2-3658), intel-oneapi-runtime-ipp (>= 2021.5.2-544), intel-oneapi-runtime-dal (>= 2021.5.3-832), intel-oneapi-runtime-dnnl (>= 2022.0.2-43), intel-oneapi-runtime-mkl (>= 2022.0.2-136), intel-oneapi-runtime-tbb (>= 2021.5.1-738), intel-oneapi-runtime-mpi (>= 2021.5.1-515), intel-oneapi-runtime-ccl (>= 2021.5.1-494), intel-oneapi-runtime-ipp-crypto (>= 2021.5.1-462) +Filename: pool/main/intel-oneapi-runtime-libs-2022.1.2-85_amd64.deb +Size: 1778 +MD5sum: 2e257579d82e17f2d593e1636344a0df +SHA1: 0f293dca577056f06d9f25b714929e440a95f2f9 +SHA256: 6075ca49d0497e1c478d402278a4f14a825c25ee64b0d3b3bfd9174c19f6b06b +SHA512: c48ecdc6e81bbf11eae6f3d5dafb4bfdcb5a49ce81b93cead45943c407ddcf8dfca0fe7e621cf69e047f28d6d2599a31b934cbb0c0bd4c3c3bfa5a7b5fec51cf +Description: Intel® oneAPI Runtime Libraries + + +Package: intel-oneapi-runtime-libs +Architecture: amd64 +Version: 2022.2.0-137 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-runtime-dpcpp-library (>= 2021.7.0-631), intel-oneapi-runtime-mpi (>= 2021.6.0-602), intel-oneapi-runtime-tbb (>= 2021.6.0-835), intel-oneapi-runtime-ccl (>= 2021.6.0-568), intel-oneapi-runtime-openmp (>= 2022.1.0-3768), intel-oneapi-runtime-dpcpp-cpp (>= 2022.1.0-3768), intel-oneapi-runtime-fortran (>= 2022.1.0-3768), intel-oneapi-runtime-dal (>= 2021.6.0-915), intel-oneapi-runtime-vpl (>= 2022.1.0-154), intel-oneapi-runtime-ipp (>= 2021.6.0-626), intel-oneapi-runtime-ipp-crypto (>= 2021.6.0-536), intel-oneapi-runtime-mkl (>= 2022.1.0-223), intel-oneapi-runtime-dnnl (>= 2022.1.0-132) +Filename: pool/main/intel-oneapi-runtime-libs-2022.2.0-137_amd64.deb +Size: 1844 +MD5sum: f3044c1f08585fb59079a31eafa3a9ea +SHA1: f2c278acbde8e7c9d174d17ab508830567d1d984 +SHA256: 569c0c760dd009b870c86187cf0f55d95a0861abb3e6d3654f43a491f28cd5bd +SHA512: 94242e9f3e56ca2c927299ddf6e9907215637b9ca9010a2dfb2c076065c583281cb34d1d1caf1eec4f5b17292ab8535023cf98206c6ae4fd89676dae1c9a4ca6 +Description: Intel® oneAPI Runtime Libraries + + +Package: intel-oneapi-runtime-mkl +Architecture: amd64 +Version: 2021.1.1-52 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1519432 +Depends: intel-oneapi-runtime-mkl-common, intel-oneapi-runtime-tbb, intel-oneapi-runtime-dpcpp-cpp +Filename: pool/main/intel-oneapi-runtime-mkl-2021.1.1-52_amd64.deb +Size: 200115710 +MD5sum: b3e4d28497178dd7ee625cc3afecfe08 +SHA1: b566c851c38ed1941e1b39e254cdde1f9423d656 +SHA256: 529c9a2ecba3454c21a117cfb4753684973d8b42446ebc879737f75d97d141f0 +SHA512: 4a7d0fec467cfd8cec1439143646604f1c49b0061bbd8fce7beac8013e89c432efd9bc22cd8df8c82afe44156f053837af9e4b3d27f55ff51eca1b6ddbd6e288 +Description: Intel® oneAPI Math Kernel Library runtime + + +Package: intel-oneapi-runtime-mkl +Architecture: amd64 +Version: 2021.2.0-296 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1407083 +Depends: intel-oneapi-runtime-mkl-common (= 2021.2.0-296), intel-oneapi-runtime-tbb (>= 2021.2.0-357), intel-oneapi-runtime-dpcpp-cpp (>= 2021.2.0-610) +Filename: pool/main/intel-oneapi-runtime-mkl-2021.2.0-296_amd64.deb +Size: 196016788 +MD5sum: de7782916f3b042b12ee099ebf8b7e64 +SHA1: d5fface4e8f67b97db063c0cd5572b078423d26b +SHA256: daffc0c7899d9169ca9e240f68e07c79693bad8b8d9da8b6f6c5822c390a9a2c +SHA512: 80402c8e0be899a63ddce305257ac8ae6ca40fd9d50abecfa2f73ae1684cada8b95ea2e28639c9318267ceff886e4f8ab8075935c93e4567da128acfadba1a74 +Description: Intel® oneAPI Math Kernel Library runtime + + +Package: intel-oneapi-runtime-mkl +Architecture: amd64 +Version: 2021.3.0-520 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1924131 +Depends: intel-oneapi-runtime-mkl-common (= 2021.3.0-520), intel-oneapi-runtime-tbb (>= 2021.3.0-511), intel-oneapi-runtime-dpcpp-cpp (>= 2021.3.0-3350) +Filename: pool/main/intel-oneapi-runtime-mkl-2021.3.0-520_amd64.deb +Size: 223903660 +MD5sum: 45e50cfa5a255d3d1b832ef4722ec30b +SHA1: e457436b3206c5c2220a6e9ddeec6065d8fde2d9 +SHA256: 412eb7679e64b2be4e9908926d33f02d4e86fc8d44ab15589920ff16eaf0fb3c +SHA512: a377877cae6599616f870f15d7338b0d48c6f2e953342dd2cd1e9e3cfc65742fa4a5dff97ec25b639a974beb085bf4bd9ad9f0541e4c89c082ef01c52d451213 +Description: Intel® oneAPI Math Kernel Library runtime + + +Package: intel-oneapi-runtime-mkl +Architecture: amd64 +Version: 2021.4.0-640 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 2019224 +Depends: intel-oneapi-runtime-mkl-common (= 2021.4.0-640), intel-oneapi-runtime-tbb (>= 2021.4.0-643), intel-oneapi-runtime-dpcpp-cpp (>= 2021.4.0-3561) +Filename: pool/main/intel-oneapi-runtime-mkl-2021.4.0-640_amd64.deb +Size: 230372108 +MD5sum: 54c2bbbe0fdf7971845aa41f4cd97ae6 +SHA1: a08fbd486088c605e8ba2fbbab338aa7be8414a5 +SHA256: 0ff97d07e6db5d55edf9a744b0b0ee0ea75866e80ab5510f596c57d5535c20d4 +SHA512: e6afdf1c7f5e9e2e0c358c4ca625284744b7e81a5bd1e5e73f21a5d5f97c9e81fe719c0bc9f3534ee896720de30d921845cf1b0ab4f3082e8a113c0ee0d88957 +Description: Intel® oneAPI Math Kernel Library runtime + + +Package: intel-oneapi-runtime-mkl +Architecture: amd64 +Version: 2022.0.1-117 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1881174 +Depends: intel-oneapi-runtime-mkl-common (= 2022.0.1-117), intel-oneapi-runtime-tbb (>= 2021.5.0-707), intel-oneapi-runtime-dpcpp-cpp (>= 2022.0.1-3633) +Filename: pool/main/intel-oneapi-runtime-mkl-2022.0.1-117_amd64.deb +Size: 235074668 +MD5sum: a3db85c34a2fa9d258d82d31479289e9 +SHA1: eb6d1199f066c5204340efcb082666fb1d2f3228 +SHA256: b20e0f7400fbbc55d8489f9f3ef35a8c8df7f5af7d87903bf305703e3a2ebc3b +SHA512: ddc73b19fe701bd2d6ab8f3557e0ff7c67e7979106e2a5d5767c7eb7871427dd05c083a93a2cfac65d9b0b6145a79df0811801fb24bb92df713c22246585b952 +Description: Intel® oneAPI Math Kernel Library runtime + + +Package: intel-oneapi-runtime-mkl +Architecture: amd64 +Version: 2022.0.2-136 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1881174 +Depends: intel-oneapi-runtime-mkl-common (= 2022.0.2-136), intel-oneapi-runtime-tbb (>= 2021.5.1-738), intel-oneapi-runtime-dpcpp-cpp (>= 2022.0.2-3658) +Filename: pool/main/intel-oneapi-runtime-mkl-2022.0.2-136_amd64.deb +Size: 235161238 +MD5sum: 625aa7d7fcf3941342eb00a1264e727b +SHA1: 4e78fd925c6daf9bdc47ab3cc96da2a7ccb19478 +SHA256: f679d2740be345f3f80ae65a1c9733464951a80073630ca3880e797bd9bb55d3 +SHA512: 7891e0eebfa0c1fe83a638580a68122e9c3d74e1652a95ff5c30cdf92228b2f70622cded091ca58146ff92a0f07dea03f315c8923f1e09c6ce5c02fc5885c8df +Description: Intel® oneAPI Math Kernel Library runtime + + +Package: intel-oneapi-runtime-mkl +Architecture: amd64 +Version: 2022.1.0-223 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1477506 +Depends: intel-oneapi-runtime-mkl-common (= 2022.1.0-223), intel-oneapi-runtime-tbb (>= 2021.6.0-835), intel-oneapi-runtime-dpcpp-cpp (>= 2022.1.0-3768) +Filename: pool/main/intel-oneapi-runtime-mkl-2022.1.0-223_amd64.deb +Size: 184911018 +MD5sum: c785695fbf3073d92ee3ed04f5f2cdff +SHA1: 1888116112cae599b6f2ee36a6f6b845235ac559 +SHA256: b4656a96e8ee3771d1adeeafd69cd72d1ec2e1f08c06a144d87b3fb272f0d787 +SHA512: 11b2d4a611d2ee580f124ae555f32e01ac45e98d0587d85fe3bffa715dd5637604524642d46063966513ce58571e2aef0368ac88862c2718b440587a2467dec3 +Description: Intel® oneAPI Math Kernel Library runtime + + +Package: intel-oneapi-runtime-mkl +Architecture: amd64 +Version: 2022.2.0-8748 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1578832 +Depends: intel-oneapi-runtime-mkl-common (= 2022.2.0-8748), intel-oneapi-runtime-tbb (>= 2021.7.0-8712), intel-oneapi-runtime-dpcpp-cpp (>= 2022.2.0-8734) +Filename: pool/main/intel-oneapi-runtime-mkl-2022.2.0-8748_amd64.deb +Size: 202491466 +MD5sum: 2485db3a3f554b07e67ec44a386d95ef +SHA1: ae47625e4a6bdd44d13a54eb8853cd6f7d92812d +SHA256: 39bc2b3daf54763aec48096fe36513358e61a57348f1ec8c84de9996d03ec5c9 +SHA512: 42c2245f0a04866eeb31e01eef015684e49dbc5c57d980d8315617d6e7bf37f747c7dcb3de5011e54cf921ff82aaf983a456d84cb4e610aafc17e3606194fe6f +Description: Intel® oneAPI Math Kernel Library runtime + + +Package: intel-oneapi-runtime-mkl +Architecture: amd64 +Version: 2022.2.1-16993 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1578832 +Depends: intel-oneapi-runtime-mkl-common (= 2022.2.1-16993), intel-oneapi-runtime-tbb (>= 2021.7.1-15005), intel-oneapi-runtime-dpcpp-cpp (>= 2022.2.1-16953) +Filename: pool/main/intel-oneapi-runtime-mkl-2022.2.1-16993_amd64.deb +Size: 202490506 +MD5sum: 1bfe9cdc0d08e51fda9d5975e5facd57 +SHA1: c9272eedf76868fc54d79b316999d60a5a921eb8 +SHA256: 8c68a2a981df371d42d4a5ec7b56f4f56ff458bee30106e65e2961e6317b6054 +SHA512: e00134b929d73abe048226a22246a41cf00293eec717cc90e40c3de5a969f9d01e10a7e400977ca8dbf84674a9715b7258870a612e2ab80ba0f40fa64ac10913 +Description: Intel® oneAPI Math Kernel Library runtime + + +Package: intel-oneapi-runtime-mkl +Architecture: amd64 +Version: 2023.0.0-25398 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1510016 +Depends: intel-oneapi-runtime-mkl-common (= 2023.0.0-25398), intel-oneapi-runtime-tbb (>= 2021.8.0-25334), intel-oneapi-runtime-dpcpp-cpp (>= 2023.0.0-25370) +Filename: pool/main/intel-oneapi-runtime-mkl-2023.0.0-25398_amd64.deb +Size: 188771166 +MD5sum: 6c505633b821ab0af6cb7418c9e4f7a0 +SHA1: 67ad61117e01bc5b381b95bae2d91af466ef3b52 +SHA256: e681b760aa3ca669f56c535cae5bf5b990fbc768301d0d4885b4a6acffd51f3b +SHA512: 0dc1af5ad9abc6af38578d1544ac3dada7c9f057140e69fa062dee137087dc233729473d11f077abd5dea96f42a3f8ac394ce29b7bb205be970cbc987d8298a8 +Description: Intel® oneAPI Math Kernel Library runtime + + +Package: intel-oneapi-runtime-mkl +Architecture: amd64 +Version: 2023.1.0-46342 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1323293 +Depends: intel-oneapi-runtime-mkl-common (= 2023.1.0-46342), intel-oneapi-runtime-tbb (>= 2021.9.0-43484), intel-oneapi-runtime-dpcpp-cpp (>= 2023.1.0-46305) +Filename: pool/main/intel-oneapi-runtime-mkl-2023.1.0-46342_amd64.deb +Size: 181577746 +MD5sum: 1658973a3e61bb0bc17e21e37289f2e2 +SHA1: a35e24bc74f1c532158074cda9fece39faa22d51 +SHA256: 37eb5e0c64c717199e8e626c53cf5746b2983ec75ddd2ad4d3dcf8991ade3272 +SHA512: 636dcd8a4dadd5403b18b55fad9000d9c6176b6b1fc77fbcc9dabecc6a9859d15a17acaadaed0ed913bc67a0d9303c2c395f4159a3065c8e48d87a05a9b034a0 +Description: Intel® oneAPI Math Kernel Library runtime + + +Package: intel-oneapi-runtime-mpi +Architecture: amd64 +Version: 2021.1.1-76 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 70677 +Filename: pool/main/intel-oneapi-runtime-mpi-2021.1.1-76_amd64.deb +Size: 20696224 +MD5sum: 10fbc16e8f115038c6a1bb7acde6bc91 +SHA1: 964108de4b5e289dab2c621c6164d30e4c35839f +SHA256: 668c94e7aecf2de5455ac539ffeb1ea81f77b87790a3fe06e00a2dcf338b8bed +SHA512: 1e1575df2adb81f5aa6f1fd61fded3abffde2557f40c2e58f9aa36629fb3baefe4af1e959b13ccc1809fffc29dcd077048f22cc0d5251843050fc4a852c49807 +Description: Intel® MPI Library runtime + + +Package: intel-oneapi-runtime-mpi +Architecture: amd64 +Version: 2021.2.0-215 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 85742 +Filename: pool/main/intel-oneapi-runtime-mpi-2021.2.0-215_amd64.deb +Size: 29032000 +MD5sum: 4fb08145b2f48fa7361cae132352cc50 +SHA1: 5be5e33e21d49fc3815930bb9ccd0542235d68df +SHA256: 76708a020ccc4c0caba49417f47a83dbdccf92777869a14df5baad121ae9e5b1 +SHA512: 05e32da5f602c35aff828fa1d6963c29abbfa81894a382d28eaa55526333ff2a0d48c3817dc4e615d04f0c80f84e82502dce3b20e0b52d1c2fa4e2dbabe92099 +Description: Intel® MPI Library runtime + + +Package: intel-oneapi-runtime-mpi +Architecture: amd64 +Version: 2021.3.0-294 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 86046 +Filename: pool/main/intel-oneapi-runtime-mpi-2021.3.0-294_amd64.deb +Size: 21890250 +MD5sum: 6ba58c08aeffd976e05cd5a69935d4d6 +SHA1: f2659f65017feae7cc4dfda78228b6e272ad884a +SHA256: b66818cd03bba05b50f02fa6f2bad869d4f79a41e730fffda7e4184b26a60a3d +SHA512: c918c129ab7251cebcddc6bb19930cd9771dcc05156f414a0e50cf6d0ce3d155a577fb7eb45fe6d94be58d9b0e83ae969e99ff4d96dfbbb22c11668e63b18dc1 +Description: Intel® MPI Library runtime + + +Package: intel-oneapi-runtime-mpi +Architecture: amd64 +Version: 2021.3.1-315 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 86434 +Filename: pool/main/intel-oneapi-runtime-mpi-2021.3.1-315_amd64.deb +Size: 21906472 +MD5sum: 0eec0d1e00013707988cc8da7bd87dbf +SHA1: f028475d1d51c06f7b88c48f60e5556dac4c6189 +SHA256: 520a8cfed2817eaf2e3a83e84d1efe0fece682447317fec94e91ec4bd3f4612e +SHA512: 6f15b630b62d3c76877c574bfbc7b9feaf8e8ddf101e4594febcd8e5683065ca65b4f28a3f47c79f86f56327140ddc1fa12fac3d80d077c780e4c1789002b90f +Description: Intel® MPI Library runtime + + +Package: intel-oneapi-runtime-mpi +Architecture: amd64 +Version: 2021.4.0-441 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 87996 +Filename: pool/main/intel-oneapi-runtime-mpi-2021.4.0-441_amd64.deb +Size: 32326670 +MD5sum: 8093d97ca74ab87c3fa9a00c139c7c19 +SHA1: 6425a8fb4f458456616949b4d332a634d96ad9d9 +SHA256: 61fb3dfda5769d52cd6ae20f9ddad8ec710c828a0b52883cd0e6c28dc284b32a +SHA512: 06c974f1d005d3f482811225f69f843a1ee2be64bac81c861e56086968e7351a0f94f5795b1074a6c40fed78c27cd0fa6c1cac93dcb78bfcfd6c908037b24f69 +Description: Intel® MPI Library runtime + + +Package: intel-oneapi-runtime-mpi +Architecture: amd64 +Version: 2021.5.0-495 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 75638 +Filename: pool/main/intel-oneapi-runtime-mpi-2021.5.0-495_amd64.deb +Size: 30134920 +MD5sum: b89b1794316f903dac124ef61d64969c +SHA1: 878728a89d872f177818beedf2a94896da839e17 +SHA256: 8ab99b55b6c4fc77f16fdfeb19936b18ac8d74c26ccc6f18087ec1dbb8bcc881 +SHA512: cd3149d0aa6aec9314166c9bf0acbdf05d1a33fe3eda1a0389b3571b71badfc71394dc9d113382dd7afa712daaf0938580b31b7a2275814499cc769ea133064f +Description: Intel® MPI Library runtime + + +Package: intel-oneapi-runtime-mpi +Architecture: amd64 +Version: 2021.5.1-515 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 75638 +Filename: pool/main/intel-oneapi-runtime-mpi-2021.5.1-515_amd64.deb +Size: 30136406 +MD5sum: 1fdf96521f0eea332ca3d4a3a1d5ef49 +SHA1: 4c4d203a6e1d1086a726d640ae56deac6c5e4437 +SHA256: b9d457414d78a80da14fc068d2ff00e8fee8697b9b09e8ae8e089f868d46b6e1 +SHA512: 35a35d6fc33a3bf65f37ee6cadbe0e7dfe169f14a6b7527d449a7aee04acc2375c8bf6f9a0d3380b315491a13e800fb29cc63c4a509718831396710cd0949a8a +Description: Intel® MPI Library runtime + + +Package: intel-oneapi-runtime-mpi +Architecture: amd64 +Version: 2021.6.0-602 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 76243 +Filename: pool/main/intel-oneapi-runtime-mpi-2021.6.0-602_amd64.deb +Size: 30595684 +MD5sum: b16fe1a8d5a53dcdc0475dff89145c9c +SHA1: 4eb56fa154d0effd29dd7d10fdbe19fbb8a83708 +SHA256: e0c9fc329112e41d6ce2758fadf305f430f0a9d85c0019a5855793d8b8343a33 +SHA512: ee9632916f64fe02cf9a7c9f93a3600d2a39c87f63d3dc98751cec4d22a6396a664406f3deb0b402197fcb46fdd1b7352795c605d9f9fbc78ed9ad75e4743211 +Description: Intel® MPI Library runtime + + +Package: intel-oneapi-runtime-mpi +Architecture: amd64 +Version: 2021.7.0-8711 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 76301 +Filename: pool/main/intel-oneapi-runtime-mpi-2021.7.0-8711_amd64.deb +Size: 30591680 +MD5sum: 2cba5ad96473308a50a60f54b2d51256 +SHA1: cb0a25a47160160149992aff93e035300ae04fbc +SHA256: 6a28af296e61c5e40b0705471f8be91b9aa1dd171b5d1fc30edda56f3e5a0a71 +SHA512: 8ef1c9964c586a06416d960d8bd5af28b247f6c68dfc9015086de227aafbc178690e9e281e28cbe3516a11810275319391a98969ea53a0debbae7dd6afd9b07a +Description: Intel® MPI Library runtime + + +Package: intel-oneapi-runtime-mpi +Architecture: amd64 +Version: 2021.7.1-16815 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 76301 +Filename: pool/main/intel-oneapi-runtime-mpi-2021.7.1-16815_amd64.deb +Size: 30590756 +MD5sum: 855b2c7de88ecf4ee2781721d175477b +SHA1: 3ca604d7cac6e4a74a1b625112ed9b3f3f7a9b10 +SHA256: 16daa41790f39a968ef7f77b068859fb526e6c9761379899030d51b39ece5fea +SHA512: 9a54bdbb9ab22ece4ffe9d7f2508857071fb44596d4fc8c1b3233cc1995dac4405af1a29b3ca8ae96106f3e0564da6b85a8121033ae741aca19ef571736582fc +Description: Intel® MPI Library runtime + + +Package: intel-oneapi-runtime-mpi +Architecture: amd64 +Version: 2021.8.0-25329 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 79010 +Filename: pool/main/intel-oneapi-runtime-mpi-2021.8.0-25329_amd64.deb +Size: 31718556 +MD5sum: e91ba50c82fc18d3b461c25c93710e4f +SHA1: f07cc873e4a585a8ba30d5265737d0814e3a5a3e +SHA256: 8a03bae211414f45c854f913ad5285bd99b6389bd6d61dc0588695080fbdf14d +SHA512: 31a57e0eba03c0cc255db2ebc160e454dd282d8cd5e50f298bc8e87f88fb082f3308bbd84fdf7ce1343ed62c9febe178c92fa2361b3ab3f1baa2ee33f0bf36d8 +Description: Intel® MPI Library runtime + + +Package: intel-oneapi-runtime-mpi +Architecture: amd64 +Version: 2021.9.0-43482 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 87554 +Filename: pool/main/intel-oneapi-runtime-mpi-2021.9.0-43482_amd64.deb +Size: 40692060 +MD5sum: 05730b260195a07cf8c5a766caffd6af +SHA1: 85eb150d708ca2a98f910d6c25fc500db19875f8 +SHA256: 7dc392825c86068b6021b245541c67992155c296e34eeb72d68919a828422d8b +SHA512: 294f8f32a9611c081a909f255152b751880c2cd07def8e31efa773c0802603ac132901759d1c21a7c7aea0b1e80d7dc2667d3a3918604c17435910e42e121e1f +Description: Intel® MPI Library runtime + + +Package: intel-oneapi-runtime-opencl +Architecture: amd64 +Version: 2021.1.1-189 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 259639 +Depends: intel-oneapi-runtime-tbb +Filename: pool/main/intel-oneapi-runtime-opencl-2021.1.1-189_amd64.deb +Size: 53883436 +MD5sum: 19327a85344c1e336fe927b735f85e0b +SHA1: 144c675815a3e7e556729af6c39871f211e72175 +SHA256: 37e44ddb8ebb428ec6e0d8cbf9d2858c341ad6ea344d7873b994375631ed8a96 +SHA512: ac87d848481e0dc236c7d0d53658a75b85e55c7dca2f55df3a44bdeb6d5425ff7cab4b45f63b7f2a28416b6572947077e775b29c2255fa0d8779c740b843793b +Description: Intel® CPU Runtime for OpenCL(TM) Applications runtime + + +Package: intel-oneapi-runtime-opencl +Architecture: amd64 +Version: 2021.1.2-266 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 259617 +Depends: intel-oneapi-runtime-tbb +Filename: pool/main/intel-oneapi-runtime-opencl-2021.1.2-266_amd64.deb +Size: 53788526 +MD5sum: f4bb84a6629361ac8f8122fb23926409 +SHA1: 34af820d5333ee2b79a910eb66546ab637f9452e +SHA256: f25f807d93c851e4f4ec1bb194bed89a85204ddc4fe0adaf5efd8ec2e64b9862 +SHA512: b8c6725a140a6e47597027a8e342555c61536742be589aeb58e2c67e79871a16dbd7c6c8581947da3f14b16887930eb67e67c356cc3883a7c932a060b2328216 +Description: Intel® CPU Runtime for OpenCL(TM) Applications runtime + + +Package: intel-oneapi-runtime-opencl +Architecture: amd64 +Version: 2021.2.0-610 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 277542 +Depends: intel-oneapi-runtime-tbb (>= 2021.2.0-357) +Filename: pool/main/intel-oneapi-runtime-opencl-2021.2.0-610_amd64.deb +Size: 58727888 +MD5sum: a8fed7c0e094c18e934c830b1865ed51 +SHA1: d42a0036f03b092b35d235e30aa9b637d7b8706e +SHA256: 78cc6ef680b86ed1da653c2cc107229ecd591903e38fe53cfaec33eaf84d8395 +SHA512: 4b3d532b581895051e76a8836ae362ff22c41096b6c3f12051d9fb2e7c291a266c8cb3e01bbb7f04380d6effa7fac4bb94ac53043faf6b02e35b7772b0004f3e +Description: Intel® CPU Runtime for OpenCL(TM) Applications runtime + + +Package: intel-oneapi-runtime-opencl +Architecture: amd64 +Version: 2021.3.0-3350 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 316268 +Depends: intel-oneapi-runtime-tbb (>= 2021.3.0-511) +Filename: pool/main/intel-oneapi-runtime-opencl-2021.3.0-3350_amd64.deb +Size: 64076554 +MD5sum: f6a9e676d7dda0d2a9cf37994d420637 +SHA1: e355c0ec36067a13f3f3c771845ef0842307a58b +SHA256: 280b24a707b5ac9cd87bf171ed9a35db37f47f6ca57693cc5a04bb654e20598f +SHA512: 9905fcddb95d5c0645949f7ca4266290b8fd46507074ba17f3fc2b69d674558ddf63b68d89bb9537092f25c033a106181603477b9b7cb10fee9f8e402a5b5594 +Description: Intel® CPU Runtime for OpenCL(TM) Applications runtime + + +Package: intel-oneapi-runtime-opencl +Architecture: amd64 +Version: 2021.4.0-3561 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 296515 +Depends: intel-oneapi-runtime-tbb (>= 2021.4.0-643) +Filename: pool/main/intel-oneapi-runtime-opencl-2021.4.0-3561_amd64.deb +Size: 55610990 +MD5sum: 318af83126609085352082e7d3771b98 +SHA1: 5e69fc2f823fd472fa0b3d4230a1442cfa39fdb7 +SHA256: 1abfebcc3dba9fe042ec21f9936fb6ae9b8ef60c25e34b4a138a15a552beaf2e +SHA512: 9d5f56011b26d5d4de54e43ce93b6662f64d0d0541f81b1d5a61190d0cb10265c68d870396a9eb8ad64d47d6b4fe3eefab374eba3ee037ba5aeed99a14fb9818 +Description: Intel® CPU Runtime for OpenCL(TM) Applications runtime + + +Package: intel-oneapi-runtime-opencl +Architecture: amd64 +Version: 2022.0.1-3633 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 441508 +Depends: intel-oneapi-runtime-tbb (>= 2021.5.0-707) +Filename: pool/main/intel-oneapi-runtime-opencl-2022.0.1-3633_amd64.deb +Size: 86913586 +MD5sum: 3f0f24da92f8648ef2a7c0a4de97371c +SHA1: 06ae693bec328af2628d1fab4fb9ec5c0045b4a6 +SHA256: 65d73c23f07c2419b8a1d22043b73346f25b387d3ec07b48f08177de1835a360 +SHA512: 0de6ed586b16973eca9907fbd5411cfc3d317ba66662907d4c06ad0fbe37a3d02feccaefea1cbbce0a2e2cace20def591385f227355971a60c9cf1f570961293 +Description: Intel® CPU Runtime for OpenCL(TM) Applications runtime + + +Package: intel-oneapi-runtime-opencl +Architecture: amd64 +Version: 2022.0.2-3658 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 441508 +Depends: intel-oneapi-runtime-tbb (>= 2021.5.1-738) +Filename: pool/main/intel-oneapi-runtime-opencl-2022.0.2-3658_amd64.deb +Size: 86922712 +MD5sum: d21f7d41937a1ad5954a4b3a23bc0e38 +SHA1: f6f6a0c87cdb86a58164e6e7f494b42dbe095895 +SHA256: 13ceeae3f22113a5c395044f22e030af8f8f2f9764d02186c41b3e0d56a41373 +SHA512: 145cf6284283c152498faddc70c7573bf78e1ad763f114dc517bb4a3b8c19d00d09605a4685918db6e790478523f759c8eb43daf5e8721672aa0bdb55dc733b8 +Description: Intel® CPU Runtime for OpenCL(TM) Applications runtime + + +Package: intel-oneapi-runtime-opencl +Architecture: amd64 +Version: 2022.1.0-3768 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 445267 +Depends: intel-oneapi-runtime-tbb (>= 2021.6.0-835) +Filename: pool/main/intel-oneapi-runtime-opencl-2022.1.0-3768_amd64.deb +Size: 90351378 +MD5sum: 03549c16ddad6c68c44bdb876d8b9c73 +SHA1: 3e63feed8b7a8297e72cc090cbc27222500548ed +SHA256: 7c24cbbb1f040657446c2a7b114c6d297c7e374fbbe58c6db68a378ff13e2bc7 +SHA512: c1788f36e2b2e93eb9d00f6b17ec8ae352876336c75caecae6cbb35735f4d71c6ac1f378a7271a576ea8cbe447bb401991b0896cbdfbf8fb6152e0125a99509b +Description: Intel® CPU Runtime for OpenCL(TM) Applications runtime + + +Package: intel-oneapi-runtime-opencl +Architecture: amd64 +Version: 2022.2.0-8734 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 529569 +Depends: intel-oneapi-runtime-tbb (>= 2021.7.0-8712) +Filename: pool/main/intel-oneapi-runtime-opencl-2022.2.0-8734_amd64.deb +Size: 104433022 +MD5sum: d887721edee59679b085f0057baf5e23 +SHA1: 30811180101f9f560de382685cc388a4be69cf71 +SHA256: f562225b4305bc6ed149305dd9ee07fd2f859fb0e511efd154e1459591916e2f +SHA512: c466634f05ddb57fe2fbc6cd805de9db1563f4abff39f3a29678716ad582ae02861442d8a5fe7bfd158ccceb85077647020ffef435eafe0a4868947160592644 +Description: Intel® CPU Runtime for OpenCL(TM) Applications runtime + + +Package: intel-oneapi-runtime-opencl +Architecture: amd64 +Version: 2022.2.1-16953 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 529571 +Depends: intel-oneapi-runtime-tbb (>= 2021.7.1-15005) +Filename: pool/main/intel-oneapi-runtime-opencl-2022.2.1-16953_amd64.deb +Size: 104469634 +MD5sum: 6198249d12c3ebe9139edcdd5989eeee +SHA1: f20c6f7d67bfa62576712770cc132cdbe0dc2869 +SHA256: 9ef738abbc6f5e7a3d157dfd44f8fd73fba4ed1cef5d0c92d83d247898f5202c +SHA512: 236e91ba3e784e1317092d6f86ab839c3357317839a0cdadd286a5587b64bf2c26f2d337611810a5268d34a1d71fba936a9e2ffedc3e3057cf608410d5e2f93f +Description: Intel® CPU Runtime for OpenCL(TM) Applications runtime + + +Package: intel-oneapi-runtime-opencl +Architecture: amd64 +Version: 2023.0.0-25370 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 672669 +Depends: intel-oneapi-runtime-tbb (>= 2021.8.0-25334) +Filename: pool/main/intel-oneapi-runtime-opencl-2023.0.0-25370_amd64.deb +Size: 119818986 +MD5sum: 56a2981a90b0ca38eb29fd2bf6ce5326 +SHA1: 68fe86df27c1e9c2ceae1da2d72b3662abbb83df +SHA256: 9464fe5ef7454fd86868503afc4eafedffcae8356e1ebce9db1a32e8e3376abe +SHA512: acf6538a9dd8fb81eeef8dad8fd89435938c6c9e67f0848128dcb33cad5fad9cd4885d1a5ec191f9efbd4181a8c3c8df6acd5648316a4e6618c5a90494695042 +Description: Intel® CPU Runtime for OpenCL(TM) Applications runtime + + +Package: intel-oneapi-runtime-opencl +Architecture: amd64 +Version: 2023.1.0-46305 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 510170 +Depends: intel-oneapi-runtime-tbb (>= 2021.9.0-43484) +Filename: pool/main/intel-oneapi-runtime-opencl-2023.1.0-46305_amd64.deb +Size: 85065338 +MD5sum: 6b8c9444509d6f80d21cdaee55d76320 +SHA1: b71880ad758a125684093b9d82e8dd60b2b05084 +SHA256: fe747d588823c255f129970029f36e3f4f36273db96bcce57f9490c031019d88 +SHA512: 36059fac1394abae08fd27510125070af0e04e75139030fefb1f70b22a045f44cbe52c4b780c9f89ad7d0e53d6e3b539b1c2248a44a2812622e84fd86774366a +Description: Intel® CPU Runtime for OpenCL(TM) Applications runtime + + +Package: intel-oneapi-runtime-openmp +Architecture: amd64 +Version: 2021.1.1-189 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 6041 +Depends: intel-oneapi-runtime-openmp-common +Filename: pool/main/intel-oneapi-runtime-openmp-2021.1.1-189_amd64.deb +Size: 1160430 +MD5sum: 9c07a28f19871da020c5432fc33bc031 +SHA1: 32e044141b951de792b3b694b6c603164334f7bf +SHA256: a68bf879608180ae3a3b6a2f72c069655c28983499aeb52e67be2bd4cac3c242 +SHA512: 47aee764b013e11b776e637b932b6e797ec91075da79e75b238918ed820a1e630286b85ed73683ccc2527b8c211c889e5c4428aedaa16f1d74a03945643ab37b +Description: Intel® OpenMP* Runtime Library runtime + + +Package: intel-oneapi-runtime-openmp +Architecture: amd64 +Version: 2021.1.2-266 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 6041 +Depends: intel-oneapi-runtime-openmp-common +Filename: pool/main/intel-oneapi-runtime-openmp-2021.1.2-266_amd64.deb +Size: 1161106 +MD5sum: 24e5b61b3e3545058c00c7a89b147628 +SHA1: 8e17619ddd37dac67f323c6d457ad97d1eb8ca3f +SHA256: 7904ddf076680d771ad4afa9af6ef0b610b38867437c2df1de7d32eb1441d97e +SHA512: 4c57f6d6a65208149e0d9839ac3075d6c8847b7f81c08baef355e9df150043f5f66ba69f799d437580460e8b893a45c88c1d3c5e83f525452a45a811f648618b +Description: Intel® OpenMP* Runtime Library runtime + + +Package: intel-oneapi-runtime-openmp +Architecture: amd64 +Version: 2021.2.0-610 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 6349 +Depends: intel-oneapi-runtime-openmp-common (= 2021.2.0-610) +Filename: pool/main/intel-oneapi-runtime-openmp-2021.2.0-610_amd64.deb +Size: 1241118 +MD5sum: 319ba5565d8fa2a5ef2faacfa4066661 +SHA1: 00568100caa4f1bc1f304116535e4a5363890e7a +SHA256: b5565f724c4d5767c9b08483a763ad482a73d24c079794d87a6e16d12b9ed93a +SHA512: 9a147ca34a76e83a2c0060552982d222e2b428c84ed306337a6cf531c0c103c8f2ceef8e1be2c81e811b08c2f73df4a43f1c6ca72b1d94feb42258e305e74e52 +Description: Intel® OpenMP* Runtime Library runtime + + +Package: intel-oneapi-runtime-openmp +Architecture: amd64 +Version: 2021.3.0-3350 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 6497 +Depends: intel-oneapi-runtime-openmp-common (= 2021.3.0-3350) +Filename: pool/main/intel-oneapi-runtime-openmp-2021.3.0-3350_amd64.deb +Size: 1273250 +MD5sum: 1c9d798929c182eb4f4bf9866f283d2b +SHA1: 0992071d9fdc79607099328d5fc34a4d659de336 +SHA256: f4d042a1dc697abeed82563362b2d0cd280ba6e7cc967e5ecc2f484a30a88f1d +SHA512: be48f45dfa3e4e0624b8a2f0441002423206e205f5f1a80f8f9c4fb915d671a5b2948c901eb4bd5893f22434c46c4317d62357ebb8eb052d15e91ac9003b3b0d +Description: Intel® OpenMP* Runtime Library runtime + + +Package: intel-oneapi-runtime-openmp +Architecture: amd64 +Version: 2021.4.0-3561 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 29806 +Depends: intel-oneapi-runtime-openmp-common (= 2021.4.0-3561) +Filename: pool/main/intel-oneapi-runtime-openmp-2021.4.0-3561_amd64.deb +Size: 7038158 +MD5sum: 378b45962503f45de285b40712bbc59f +SHA1: a9099e1f6e6fc4b77a968647071a8b85acd320e5 +SHA256: 65dca00697b93a31df401de73ad38e2e65d8bcc662b2d2a8ad561551fbde0620 +SHA512: 27eecb069920b1cb94e4b3b0c41185d84a01430f9f84a9af6b884c70c852b0f9597adcbf94ca1c85483991d91e37d0a2087d5dc44945660cd1a733676d6e4422 +Description: Intel® OpenMP* Runtime Library runtime + + +Package: intel-oneapi-runtime-openmp +Architecture: amd64 +Version: 2022.0.1-3633 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 29396 +Depends: intel-oneapi-runtime-openmp-common (= 2022.0.1-3633) +Filename: pool/main/intel-oneapi-runtime-openmp-2022.0.1-3633_amd64.deb +Size: 5870758 +MD5sum: 86679481314decc8e1499dfec22ccb7b +SHA1: a82048c90ebf704e3985eba4aaf046cbfb5e368c +SHA256: 86fb0d6e3a34217cc30594e9f21e89070425c6c56773edae4d5a86730239c171 +SHA512: cc72d26bf7ec73d73757da72a1073366a11f87b694ff363eb9b9600e3fd68663229d161dce57bbad11502a02ec95589e9653a317c406658dc9d43cf53d5c70fe +Description: Intel® OpenMP* Runtime Library runtime + + +Package: intel-oneapi-runtime-openmp +Architecture: amd64 +Version: 2022.0.2-3658 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 29396 +Depends: intel-oneapi-runtime-openmp-common (= 2022.0.2-3658) +Filename: pool/main/intel-oneapi-runtime-openmp-2022.0.2-3658_amd64.deb +Size: 5868132 +MD5sum: 33c67c67e475331743d624f8a40a4732 +SHA1: 1b102280de862c292d544ee81045674f032453ef +SHA256: 65d9dc63e218fc91dd6eaf98822b6940ccb8262dc0abd67513ac46086d560800 +SHA512: 640b3c6c85ac75d08c77bff53b5eac3ad2b7c097cf7ed20c4de91f55c9a645d3ca7df7a060c742e93a69111ee672163542a619f171fc162f0c98d4d37a2a19ac +Description: Intel® OpenMP* Runtime Library runtime + + +Package: intel-oneapi-runtime-openmp +Architecture: amd64 +Version: 2022.1.0-3768 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 32243 +Depends: intel-oneapi-runtime-openmp-common (= 2022.1.0-3768) +Filename: pool/main/intel-oneapi-runtime-openmp-2022.1.0-3768_amd64.deb +Size: 7602824 +MD5sum: 3cf9080a7bc5e9c631d884f578b349f6 +SHA1: a3a34719531c36739b4c9f5fc3d1043dea000dca +SHA256: 957aede330cd5f8b32c1175beaaef0e135fe446ad62f55b7748109cfbaff3fce +SHA512: c96d31e78be1229004e00d56ca4b4ec9807b2137a63b74134f8ad71e7573256203f60bd76a05ad3cbd8e7b5fdab84326ca26fb80930e7c3e7196ef407441178f +Description: Intel® OpenMP* Runtime Library runtime + + +Package: intel-oneapi-runtime-openmp +Architecture: amd64 +Version: 2022.2.0-8734 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 39150 +Depends: intel-oneapi-runtime-openmp-common (= 2022.2.0-8734) +Filename: pool/main/intel-oneapi-runtime-openmp-2022.2.0-8734_amd64.deb +Size: 8788160 +MD5sum: 761e9ab276052560251b0b14c2d9eb14 +SHA1: 71ffa2037418133eb1fa8e046d54338793692f4f +SHA256: 279aaa94b69c26f456d44eb0b6d17a66b6729133434c8c739fdd3cbad77c2365 +SHA512: 4aeb2e1dd61fd0703bed10d7cd129717d11b0f8e89a3b946ca310fe67db0fbc36b37a89e70b3b589dd80e9fed75ccee0b381c89b0c7e0cc683ea0c0de96c3d77 +Description: Intel® OpenMP* Runtime Library runtime + + +Package: intel-oneapi-runtime-openmp +Architecture: amd64 +Version: 2022.2.1-16953 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 39176 +Depends: intel-oneapi-runtime-openmp-common (= 2022.2.1-16953) +Filename: pool/main/intel-oneapi-runtime-openmp-2022.2.1-16953_amd64.deb +Size: 8800136 +MD5sum: 665b479f9fb9e305cfd2db11c125cb6e +SHA1: 9e710fd30b00deee347c630b691098600dcb2942 +SHA256: 1210e57fd9cebd00a1ada7d68ac00db934587fdadf87ea66428020feb8e2e089 +SHA512: 70cdeeb2433e9936094a2fb56942deecc08c99b6ee4460e2bf52e57a176887343e21c4451b83ee704e4564b563747932973275cb6388d2d5030873cfdacc02de +Description: Intel® OpenMP* Runtime Library runtime + + +Package: intel-oneapi-runtime-openmp +Architecture: amd64 +Version: 2023.0.0-25370 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 60450 +Depends: intel-oneapi-runtime-openmp-common (= 2023.0.0-25370) +Filename: pool/main/intel-oneapi-runtime-openmp-2023.0.0-25370_amd64.deb +Size: 12806612 +MD5sum: 48531c77445a87b09cbe1acd27a42fd4 +SHA1: daad6c9eb3f5630985b51ac7263937b0b0226895 +SHA256: 709f9a294db834e21d76ffc925adfa00108c0e862d6a21e484e0e43fbd5d2c17 +SHA512: 5720cc2c954d393df67a1ec8267244250ede87b105989bd983571bf775abd030eeda162a7bcdf3221b5b5ed97dd2c62685cc82ab32d008946ac6186fe10db306 +Description: Intel® OpenMP* Runtime Library runtime + + +Package: intel-oneapi-runtime-openmp +Architecture: amd64 +Version: 2023.1.0-46305 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 69542 +Depends: intel-oneapi-runtime-openmp-common (= 2023.1.0-46305) +Filename: pool/main/intel-oneapi-runtime-openmp-2023.1.0-46305_amd64.deb +Size: 14561656 +MD5sum: 34ef34684d2dfb119c3175671ff2a722 +SHA1: edabf0a75b7cfece63498f5ed71a4a5a1411ef0d +SHA256: da4bda8fa6491fdaf769c5929acf34d0c4264fa4b8aa8b0ce6121542cf5ab05f +SHA512: 98c3a6036227487082fb408cfef68b261345083053d20434a5f89262957e1def3630955b20772e60de20154512524d411389b628e0d614f1d9f9428cb6282f74 +Description: Intel® OpenMP* Runtime Library runtime + + +Package: intel-oneapi-runtime-tbb +Architecture: amd64 +Version: 2021.1.1-119 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 3886 +Depends: intel-oneapi-runtime-tbb-common +Filename: pool/main/intel-oneapi-runtime-tbb-2021.1.1-119_amd64.deb +Size: 726244 +MD5sum: f9e25c81c8ea5aa9a06ecc4cdc000312 +SHA1: 22bca7dd76113f803b0ef7bdc0f480a0bd95997a +SHA256: ab9665d666de5432f0123de19182f6b827fffa2c503fe9da86096b9925937fda +SHA512: e26ba40bd6751c3d54db6bb0d5e185ee852a0bf26a8fc291f168fe6cd1668c1a503048d7d28fceef47396e01e87def2deafb7f7fe813bed179cf20cafa939d6d +Description: Intel® oneAPI Threading Building Blocks runtime + + +Package: intel-oneapi-runtime-tbb +Architecture: amd64 +Version: 2021.2.0-357 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 4277 +Depends: intel-oneapi-runtime-tbb-common (= 2021.2.0-357) +Filename: pool/main/intel-oneapi-runtime-tbb-2021.2.0-357_amd64.deb +Size: 765046 +MD5sum: 530ee6dbc8dd1cdf899b3420acf53bcc +SHA1: f33db2f37f4283cc35cc00e707ac35cc3ad56979 +SHA256: 0bfc52992d90ea7515e9b53d669ef050bc281ead4120bba57d741ac914a69c01 +SHA512: e8995fb904e993684f4f486f363486d5ab29279fefb54e722bd228e60320bbb864fb2f6ffb84ecc55ee9a558a00cc00edb87e9f3a7836c0396753865b6458812 +Description: Intel® oneAPI Threading Building Blocks runtime + + +Package: intel-oneapi-runtime-tbb +Architecture: amd64 +Version: 2021.3.0-511 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 4591 +Depends: intel-oneapi-runtime-tbb-common (= 2021.3.0-511) +Filename: pool/main/intel-oneapi-runtime-tbb-2021.3.0-511_amd64.deb +Size: 819832 +MD5sum: 1fb2ca6888fc8bca93566bca4628ad87 +SHA1: bdba39dfa8357059ea257c8efbb28bcd803ce480 +SHA256: 950f1926b5db88b8323465ac1ec3d8ed12c43a63c87eb5731b9e57c2ff03e227 +SHA512: 62c3c24429d19c5db19ad486308856fff2f8ece1a66b50400c9fa49cd3ffbb164bf0336fd20a95af2e22ba0dca2144a7e1c2b57febe285d6e88429217a547ece +Description: Intel® oneAPI Threading Building Blocks runtime + + +Package: intel-oneapi-runtime-tbb +Architecture: amd64 +Version: 2021.4.0-643 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 4328 +Depends: intel-oneapi-runtime-tbb-common (= 2021.4.0-643) +Filename: pool/main/intel-oneapi-runtime-tbb-2021.4.0-643_amd64.deb +Size: 769298 +MD5sum: 6b048a5405adf6e4bb69de149c220b80 +SHA1: f76b4420dd0ce71cd6fd440f0ed8f3378098a3c1 +SHA256: fc15bbbc6b6b3aed7785b247e98d66ab33b26a28050b49a9a7ad895dd1538a41 +SHA512: c651851374db4e065ca171e0aee1a039a83c474cd69364ea69ab65de6ea7909c0ac5d0859f71d42feadc6f759c8a371df5d3b9d0ee029ec3c8257e6b98a79ee8 +Description: Intel® oneAPI Threading Building Blocks runtime + + +Package: intel-oneapi-runtime-tbb +Architecture: amd64 +Version: 2021.5.0-707 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 4328 +Depends: intel-oneapi-runtime-tbb-common (= 2021.5.0-707) +Filename: pool/main/intel-oneapi-runtime-tbb-2021.5.0-707_amd64.deb +Size: 768512 +MD5sum: b6e1df49627e33bd6649c081af953692 +SHA1: b75d7f0f27c7a91305c41da69c78b608432b41b1 +SHA256: e129f56f579c4b240478c2f041c6d901f05f799836820061a4189580719ba826 +SHA512: 5b0c44aeaace1ca5b4688e58377c2cf4045d494eeac294871b3e99eea640937f18ad8acc2beb3e969bba7f1096fcd88c8fb06ada4d92cfc81f302c0e4b49bb5a +Description: Intel® oneAPI Threading Building Blocks runtime + + +Package: intel-oneapi-runtime-tbb +Architecture: amd64 +Version: 2021.5.1-738 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 4328 +Depends: intel-oneapi-runtime-tbb-common (= 2021.5.1-738) +Filename: pool/main/intel-oneapi-runtime-tbb-2021.5.1-738_amd64.deb +Size: 767686 +MD5sum: ce6d836970871ec629de10a926efbbbe +SHA1: df31a0fc0b8047b21800897ec592677a58506bd9 +SHA256: 098635d6e700b610167c3823309f56ffe9170701b00b5e67703d3dd533a948e5 +SHA512: f3bd862f5067ad09e26c619559d7916990ccf9a069e0cdc86bc46cd001fad30edb65dcd295b172bb14af524e000759920a97e830111b2ee6702a7df52c5b0003 +Description: Intel® oneAPI Threading Building Blocks runtime + + +Package: intel-oneapi-runtime-tbb +Architecture: amd64 +Version: 2021.6.0-835 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 4328 +Depends: intel-oneapi-runtime-tbb-common (= 2021.6.0-835) +Filename: pool/main/intel-oneapi-runtime-tbb-2021.6.0-835_amd64.deb +Size: 767794 +MD5sum: b73a1b9122d57267ab4fc7f828e3e0fe +SHA1: 204160b76a021c10a378cb8c17416dc37b2eccf0 +SHA256: 5314e40ac49ccf5951ccfa1090dba56a284981ca9a10a54d377a5aba6e1e4ede +SHA512: 3f8a77589b991e32f0e615e3d414f282fbac7504806d45c2e6e9456c0ba80e7c79ce589b15c0c3f0dd367bad4fe5828a327cfb0cbef2a6681af6e0a0dca58458 +Description: Intel® oneAPI Threading Building Blocks runtime + + +Package: intel-oneapi-runtime-tbb +Architecture: amd64 +Version: 2021.7.0-8712 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 4351 +Depends: intel-oneapi-runtime-tbb-common (= 2021.7.0-8712) +Filename: pool/main/intel-oneapi-runtime-tbb-2021.7.0-8712_amd64.deb +Size: 769154 +MD5sum: d4cb1ab0159494fe0183c2bf5dfa4040 +SHA1: 6b30c6b473e2b4371ceeb01a17782f9c54bbba8e +SHA256: a129831c9c73d10fd9730b7022bfb9f0feb2b63b10dd14d282912e75ea6c39c2 +SHA512: 505b89a4fef40d9ee2768dce2ae249e584b352cb4f4b470d192f11aa20e64eb7e5691cbd392b8bc340b263f870fb59b8e2e561f9218f9af5b0eab185aae7778b +Description: Intel® oneAPI Threading Building Blocks runtime + + +Package: intel-oneapi-runtime-tbb +Architecture: amd64 +Version: 2021.7.1-15005 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 4351 +Depends: intel-oneapi-runtime-tbb-common (= 2021.7.1-15005) +Filename: pool/main/intel-oneapi-runtime-tbb-2021.7.1-15005_amd64.deb +Size: 768574 +MD5sum: 89af85061f0556d321713ae215a074d7 +SHA1: 66f5db1942d171dcad85ecb446ac20aaa2880792 +SHA256: 58a876a0b17bc0fa3ff114cd8546e799789613e44972931aa83da1eab455e211 +SHA512: 11934e8013339f5d7f070aa01d111324580f2443882b8e9e047f72c2b629350454f21d1ec127058da1f3d1b3d4cb9e57bae20affd4c4cfb24e1a1738ffb03096 +Description: Intel® oneAPI Threading Building Blocks runtime + + +Package: intel-oneapi-runtime-tbb +Architecture: amd64 +Version: 2021.8.0-25334 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 4351 +Depends: intel-oneapi-runtime-tbb-common (= 2021.8.0-25334) +Filename: pool/main/intel-oneapi-runtime-tbb-2021.8.0-25334_amd64.deb +Size: 767962 +MD5sum: c0044c7bf19247865a69f9da62acee71 +SHA1: efc73fd9c8a7dd709a428283e28a2b8c2173cf01 +SHA256: 06746e0fcf57ed3caeb003b5ecd1828ee3481191a315c98ae90f1b65f354e60f +SHA512: 0847968f2bcc335c57bd837580e4b16ac857843dd05a10169e8120c1bcbc7b36ed546345263ad7c855d25da62751bb6d459a8618c94721d6367fe58d13eaab54 +Description: Intel® oneAPI Threading Building Blocks runtime + + +Package: intel-oneapi-runtime-tbb +Architecture: amd64 +Version: 2021.9.0-43484 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 4390 +Depends: intel-oneapi-runtime-tbb-common (= 2021.9.0-43484) +Filename: pool/main/intel-oneapi-runtime-tbb-2021.9.0-43484_amd64.deb +Size: 777478 +MD5sum: 076dbe5a7834ca1ba52b1558cabbf066 +SHA1: c673cbd6351d051133f0218beb484a44a110c74f +SHA256: 266ae123437d7e9d654a07c191f3389d4d0a340e8b0fe06bd3ec6891a6830b66 +SHA512: c4c1b62f637770a02e0b0ef324fcd8ce67c3bac3dc17e250a1e460d4bd16c7e33a102d78cc8f070063a8203c49e92480abdc4a86295110bba05776473b54fdef +Description: Intel® oneAPI Threading Building Blocks runtime + + +Package: intel-oneapi-runtime-vpl +Architecture: amd64 +Version: 2021.1.1-66 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 37197 +Filename: pool/main/intel-oneapi-runtime-vpl-2021.1.1-66_amd64.deb +Size: 7819588 +MD5sum: d3ab41d2f8a050552d2b7aaa7d36fd8a +SHA1: 60a705c95fb3b498cf0bbc8bcd72eb93c27cdd65 +SHA256: 63485376c0bd3536984c124da1fa055a8d7d5f207074d0e084880357ef14be9f +SHA512: ba088e5ac8d6432990a65e9d1d68ac029955eb98d349899715a0c53a25e71f7a50cc874dd2a2dee0fa774df5f33d545a34e4863bc2741fae547046b38ef96f54 +Description: Intel® oneAPI Video Processing Library runtime + + +Package: intel-oneapi-runtime-vpl +Architecture: amd64 +Version: 2021.2.2-212 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 37583 +Filename: pool/main/intel-oneapi-runtime-vpl-2021.2.2-212_amd64.deb +Size: 7901598 +MD5sum: cbb627eb31edffe5d61c22a14c6541ca +SHA1: 38cc8fe070ae2ab4ab2dbaf02779aa05758600a9 +SHA256: cea02f7786eba14b471d90f625f6f5292c521814710c52632463ddb7bd7a038a +SHA512: 21327832cb10c658cc389a7db0ae4e80dd88c63695c02cdbac53e9bb7190e04f82e2d956a33c1b4e7811e093edbab8517d97f95b185e4e2fe07e472ff0b20133 +Description: Intel® oneAPI Video Processing Library runtime + + +Package: intel-oneapi-runtime-vpl +Architecture: amd64 +Version: 2021.4.0-328 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 39731 +Filename: pool/main/intel-oneapi-runtime-vpl-2021.4.0-328_amd64.deb +Size: 8318666 +MD5sum: ef5a4c6600533e09b86651ecb6b9b2d4 +SHA1: 7bb5ecbe5236a59868077a7b0bed773217df8f6f +SHA256: 77e2363ee6d629362f38f4777ba324df75d7e39fca19d79fe8e508c80d6a61cd +SHA512: 2f9ea21ff3cae1258a0a3e4082f884f0ef7ef94880cd19aac94454aa69e3ac75f0bac24037e28c308f098e681a97dff83cf57e760f9001db968866ac41eaf3da +Description: Intel® oneAPI Video Processing Library runtime + + +Package: intel-oneapi-runtime-vpl +Architecture: amd64 +Version: 2021.6.0-458 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 40435 +Filename: pool/main/intel-oneapi-runtime-vpl-2021.6.0-458_amd64.deb +Size: 8428588 +MD5sum: 205478e4785eca601cda298b5f1219ec +SHA1: 95ae40a7f00b921faa70d4dc6e9a7c449feac455 +SHA256: ca11c758921c2c56af448d4eca54333012cd4818add8ed719e3cf178a5a850b0 +SHA512: 2a6af50ba7de4880b15f86953722f025bf437f3b394b0c9aaeead3ca5bb345866b28609ffdd8b5f47eac31c52a0b2937f0418c45cc00e8c3ae3067a3dca247c3 +Description: Intel® oneAPI Video Processing Library runtime + + +Package: intel-oneapi-runtime-vpl +Architecture: amd64 +Version: 2022.0.0-58 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 41138 +Filename: pool/main/intel-oneapi-runtime-vpl-2022.0.0-58_amd64.deb +Size: 8494230 +MD5sum: 5568bd17dee6a150d21a7aa9405279e9 +SHA1: d02e991c97a53d7792c78d5ff3825aa875684a18 +SHA256: f7d00dc11603b9aa8195c7283482f4aa57b91c11bdb6c42b92eafbc1cc4817ca +SHA512: e75edc560b7d6a2e02af56a509f462c47b773c403e6db8a26b981d791b8772671a85f542d4c9cbd6bfee1d6a8aa37050c6dcc28f78dde02b0c8ba2c68fb231f2 +Description: Intel® oneAPI Video Processing Library runtime + + +Package: intel-oneapi-runtime-vpl +Architecture: amd64 +Version: 2022.1.0-154 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 42264 +Filename: pool/main/intel-oneapi-runtime-vpl-2022.1.0-154_amd64.deb +Size: 8799284 +MD5sum: 672899a6c0b6c634898fd73d7b3e71fe +SHA1: 8bd033182f600a877a01b5f338e31a13a1578664 +SHA256: 91db6a039890dc6e21f882bb861226389f04a35172f2ebd30181b8946e35a073 +SHA512: 66f48a45876ef8af12a1cc5a34efcbba36b23a4968c585096ad94e0b5979f9ee0b17f16c8b10306a6741c8697090de595a4dc21f70cf6aa17d8b1b6aa0ffd58f +Description: Intel® oneAPI Video Processing Library runtime + + +Package: intel-oneapi-runtime-vpl +Architecture: amd64 +Version: 2022.2.0-8703 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 43679 +Filename: pool/main/intel-oneapi-runtime-vpl-2022.2.0-8703_amd64.deb +Size: 9172324 +MD5sum: 8a99e0feba21f82bf5796e2e0d18a547 +SHA1: 849f838497ed4db80227150a5c2c1c12de9be9cd +SHA256: 7aa4c79fe3252ca72bc58f4d9cd31e9878376c5278e82d3ffe5d02f6693f2f68 +SHA512: 2e36f18f1133a6462d7f06cd4ce6144f28a333e36ed99084f3f67849edbf3300773a4830567afbb7b6020daa80f990a6f2192447e19ecf79281f4d9d105acc3f +Description: Intel® oneAPI Video Processing Library runtime + + +Package: intel-oneapi-runtime-vpl +Architecture: amd64 +Version: 2022.2.5-17121 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 43659 +Filename: pool/main/intel-oneapi-runtime-vpl-2022.2.5-17121_amd64.deb +Size: 9220488 +MD5sum: 3b76c0b73823208a40d5b814c0f8cfb8 +SHA1: 0585cb6c6b6fc2b035ea5cc159057a5ccb7890c6 +SHA256: 637d4caa549cef4a0312c37f5dbf1b166b641cc4c5ca4dfbd15f63c3c29913d6 +SHA512: 61fd33326206f9824479f7aacb43eba0462ecc49689f7652b74ba8b755d0e5036f58f7e0242ba6826f87e1d76ee82f334d05a358f07efab1f7b12e7176f76085 +Description: Intel® oneAPI Video Processing Library runtime + + +Package: intel-oneapi-runtime-vpl +Architecture: amd64 +Version: 2023.0.0-25332 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 39657 +Filename: pool/main/intel-oneapi-runtime-vpl-2023.0.0-25332_amd64.deb +Size: 8580504 +MD5sum: bb9a21a976f451f2e9c8bf8a51460e6d +SHA1: 4ed95931d8693378c40f1074d7b5ff8ce006e608 +SHA256: 56937b1071a0de3a74e4a2f457213f9ecb091a5a0a72b9c596643a7fabbea53c +SHA512: fe12bdca36eb921b21f1192b0a2023e04f5e72db37c9ffda3797c94d8d2a9aee3146b1a69c3e385eecd9aca08cf9e0a4a001b0c2c6a9294afef495de3a31fdb1 +Description: Intel® oneAPI Video Processing Library runtime + + +Package: intel-oneapi-runtime-vpl +Architecture: amd64 +Version: 2023.1.0-43488 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 39657 +Filename: pool/main/intel-oneapi-runtime-vpl-2023.1.0-43488_amd64.deb +Size: 8579292 +MD5sum: f44f7f431ea5a4d28d1cde718a454970 +SHA1: c53373656bbd2d61e400d547946e55b4f89fb852 +SHA256: a746be944dce50775bc76a0e061f3d7f45cd10a2158cf7cae32dbfbd5e48728e +SHA512: 306f453da9af536e905c15c2ff45cd623a835f9d906b6e5b789eb11cbb1e169435a67866d3adaae889a3cfe9c110473c4c0ca62c25355a72debbb2bf31bcdb99 +Description: Intel® oneAPI Video Processing Library runtime + + +Package: intel-oneapi-tbb +Architecture: amd64 +Version: 2021.1.1-119 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-tbb-2021.1.1 +Filename: pool/main/intel-oneapi-tbb-2021.1.1-119_amd64.deb +Size: 1842 +MD5sum: ebfb3b5cc75ddc7b8f38651838848224 +SHA1: 4f4c82f85f565108110782c2c819a56e995c43de +SHA256: a4191b9395998976574d98ca65fceacee912677f6d0720294efee51a4f603185 +SHA512: 94fb8fddee753ad5e9e4086fcaf4ebf9b4ff96b9a0f823abb1bf21e5f1fcee8c3ae20bc0a0b47771d15515bcb21a4d71715d5d488bcae46ac8f82a99faae27b5 +Description: Intel® oneAPI Threading Building Blocks + + +Package: intel-oneapi-tbb-2021.1.1 +Architecture: amd64 +Version: 2021.1.1-119 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 5118 +Depends: intel-oneapi-tbb-common-2021.1.1, intel-oneapi-condaindex, intel-oneapi-common-vars (>= 2021.1.1-60), intel-oneapi-common-licensing-2021.1.1,intel-oneapi-common-vars,intel-oneapi-common-licensing +Filename: pool/main/intel-oneapi-tbb-2021.1.1-2021.1.1-119_amd64.deb +Size: 1983816 +MD5sum: 62c39447ef8792e94f0c4a55490f8ab5 +SHA1: c50f7642ca742de158e18d6ad3192ef8213ef345 +SHA256: 05cf66e576cf0facf445663547056b37894301dcb81c7d330bb69efe13e0d0eb +SHA512: 57e924db045fe5262689d3c42c3907386602da85418c5fa010ea0439273083d87e0cb5bc543a587a638c21fca3b9eb8461e39f4f9c072c19d3bc992c76ff44aa +Description: Intel® oneAPI Threading Building Blocks + + +Package: intel-oneapi-tbb-2021.2.0 +Architecture: amd64 +Version: 2021.2.0-357 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 5271 +Depends: intel-oneapi-tbb-common-2021.2.0, intel-oneapi-condaindex (>= 2021.2.0-94), intel-oneapi-common-vars (>= 2021.2.0-195), intel-oneapi-common-licensing-2021.2.0 +Filename: pool/main/intel-oneapi-tbb-2021.2.0-2021.2.0-357_amd64.deb +Size: 1777236 +MD5sum: 9b7e0a5ecc6aad07ed0d219919eab060 +SHA1: ae256faaba134b6e3945ad74f24caafe6d2dddfb +SHA256: a92eaa4b84dd17d67ae68f073e4b34eb9f078d64b89d0efcac710683de88f1b6 +SHA512: 4617439f4b7e49fe274998719342937be418b924f69869f7180f9fbe4afb010734b226fa1e373859b5ca576cb90ffb5c75aa8f686a13ae0892b2e2e2d5df6e76 +Description: Intel® oneAPI Threading Building Blocks + + +Package: intel-oneapi-tbb +Architecture: amd64 +Version: 2021.2.0-357 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-tbb-2021.2.0 +Filename: pool/main/intel-oneapi-tbb-2021.2.0-357_amd64.deb +Size: 1842 +MD5sum: 37a1ce89fa7b399c0002039daf10b7d7 +SHA1: 078da77a912be26a1c62c1a9dc684715f8a1db87 +SHA256: b34d8b780842cc4360681c9f733e7b516e450427ea30b30fe7cd19a99e915b3a +SHA512: 67111fe4d747b3e0ab6dcbb6322ef5bacd9815208fb040eee106d6f40ac6fdbe95ff825db9aa884632cceb3036bfb0a7e5898655dad33c7ed5eab74b65b08471 +Description: Intel® oneAPI Threading Building Blocks + + +Package: intel-oneapi-tbb-2021.3.0 +Architecture: amd64 +Version: 2021.3.0-511 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 5912 +Depends: intel-oneapi-tbb-common-2021.3.0, intel-oneapi-condaindex (>= 2021.3.0-159), intel-oneapi-common-vars (>= 2021.3.0-261), intel-oneapi-common-licensing-2021.3.0 +Filename: pool/main/intel-oneapi-tbb-2021.3.0-2021.3.0-511_amd64.deb +Size: 2167462 +MD5sum: 0e7918824f783d82fb4870f77c01cfe9 +SHA1: a538c3301a82142e6b5e4d38b79ac3d472162f9e +SHA256: e302a0c2ca35083703f46cea7eec7d2cbecc9579ce4fd3dbd2a4537e320f852b +SHA512: 5c40b7375b929665397f019b1c70062f3d43a4674be35d98ea59c977d63237824b95432e519ff7d05fd0a524b46abc6ee8d853f1c423a832de6c126e9822a16f +Description: Intel® oneAPI Threading Building Blocks + + +Package: intel-oneapi-tbb +Architecture: amd64 +Version: 2021.3.0-511 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-tbb-2021.3.0 +Filename: pool/main/intel-oneapi-tbb-2021.3.0-511_amd64.deb +Size: 1840 +MD5sum: 87c57d756be06e3d247f04c9d607737b +SHA1: e2e1ce95fde0b77f45f7df9933274790e24648f5 +SHA256: c156ced169e139f27d18730ab6798b41674ca02866140f546124cc72dd1cd1b8 +SHA512: b448a5e64c519ad0ea2bc86279497b7b72a795b8574fa6df10cbbaf2651734d84e497a164331ef2b03e2cf03cf85836ecc49ce91a65ff3140c3ca6abbeb4ccae +Description: Intel® oneAPI Threading Building Blocks + + +Package: intel-oneapi-tbb-2021.4.0 +Architecture: amd64 +Version: 2021.4.0-643 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 5656 +Depends: intel-oneapi-tbb-common-2021.4.0, intel-oneapi-condaindex (>= 2021.4.0-207), intel-oneapi-common-vars (>= 2021.4.0-327), intel-oneapi-common-licensing-2021.4.0 +Filename: pool/main/intel-oneapi-tbb-2021.4.0-2021.4.0-643_amd64.deb +Size: 2122450 +MD5sum: 106bca04380fee9c0b7efba7b474a4b9 +SHA1: 6334365051e0d501e2906c9ba8d7e496c6214e5e +SHA256: e6e3194b601cbd4ff7dabe534f49e245c4fdec36114fe91288b9bc414bad4769 +SHA512: 5c203f63bf8aca375181a930c27d62127b68c61a54b4a7e3871ce878f344e81efc5b895594ea28edd2117f4b2a61a7d54ff9b61ab6f4380b43dc992560b2c7b2 +Description: Intel® oneAPI Threading Building Blocks + + +Package: intel-oneapi-tbb +Architecture: amd64 +Version: 2021.4.0-643 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-tbb-2021.4.0 +Filename: pool/main/intel-oneapi-tbb-2021.4.0-643_amd64.deb +Size: 1846 +MD5sum: 6eb241076ce298962afc388ea4326000 +SHA1: ffee263134e6ba2062e113f07f2a5765877e8491 +SHA256: 7ee34e05320ef28003004d9efce231896c364285cc9049631cb033415346c893 +SHA512: 8975297aece78cd191070df4cb4818fd9513c43b7c899fb81a52fbd3ad5838ade497bcec3204fe9b3880363d888956e63605a983406c29355d264ba03135ecc8 +Description: Intel® oneAPI Threading Building Blocks + + +Package: intel-oneapi-tbb-2021.5.0 +Architecture: amd64 +Version: 2021.5.0-707 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 5843 +Depends: intel-oneapi-tbb-common-2021.5.0, intel-oneapi-condaindex (>= 2022.0.0-74), intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-tbb-2021.5.0-2021.5.0-707_amd64.deb +Size: 2315292 +MD5sum: a3e03b02cf887da92543764225e48eef +SHA1: 50d0bbc6b5c715e0fd04c8b6d8f89a5c52307c9d +SHA256: bea22a76f471006d7bfb9cbd55024ed651445a22d6d43b9f0d41368491576237 +SHA512: a6552ae5509d341f25292a1d0e23eb4d7f9a25d1e2a383f1627eee8fbb8e165a297e12e0e103e973e80e8e177e8b8e2cbe9bdfec86a662afebebfff0b7cfd12b +Description: Intel® oneAPI Threading Building Blocks + + +Package: intel-oneapi-tbb +Architecture: amd64 +Version: 2021.5.0-707 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-tbb-2021.5.0 +Filename: pool/main/intel-oneapi-tbb-2021.5.0-707_amd64.deb +Size: 1846 +MD5sum: 87163eea50dd4bec29cb6969d680122a +SHA1: 34c21bd413aba15fa22e2299b829c7cfd8d60a6e +SHA256: 605facceeaac369a4cc994769ba5778112017f07dcd3ca010f296738022e1091 +SHA512: 9c49302abbdfdbafc70bb38b422a7aee23a778d2a183c0b6a3cd1c9186fcfdbdb0617907874197c66f16f995ebb19118a89deebf48adb135f770edd9d7eee8db +Description: Intel® oneAPI Threading Building Blocks + + +Package: intel-oneapi-tbb-2021.5.1 +Architecture: amd64 +Version: 2021.5.1-738 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 5846 +Depends: intel-oneapi-tbb-common-2021.5.1, intel-oneapi-condaindex (>= 2022.0.0-74), intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-tbb-2021.5.1-2021.5.1-738_amd64.deb +Size: 2318610 +MD5sum: d4405d07d243bb92ca7767b0a0e1c703 +SHA1: 0dc0681c416327615e2d5d2138a3de048bb2e016 +SHA256: bbc3bcb009cf9025a1b84ad73209e3f48b67935c32980b4d6acc0a2a4893c02c +SHA512: fda79ff6c1554641d4851fccd9c0e29b8cf60309fe08e89a541eacd1065d7dce707cfc9be23b7274a9e318907d9574557c589fb5b8146bf51f068ba79a96a829 +Description: Intel® oneAPI Threading Building Blocks + + +Package: intel-oneapi-tbb +Architecture: amd64 +Version: 2021.5.1-738 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-tbb-2021.5.1 +Filename: pool/main/intel-oneapi-tbb-2021.5.1-738_amd64.deb +Size: 1840 +MD5sum: 5a395a2aaef8e6d19f9811ecad2d2d59 +SHA1: fbecfd945593f586782d3b13996514c691c8d8e3 +SHA256: 252dd11ab2aeeeb52a1c100f744c22178e3f3fb2df1b982e4c35f74574ffd9ef +SHA512: c677c4dba15fe8a6ee971968e49d90321e583f0d42d5967ed807397e88c3c15bb48968990eb4ebd4c9a1c14e420357d1a4ae1f93f8ba442947b7561ddf3ec556 +Description: Intel® oneAPI Threading Building Blocks + + +Package: intel-oneapi-tbb-2021.6.0 +Architecture: amd64 +Version: 2021.6.0-835 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 5517 +Depends: intel-oneapi-tbb-common-2021.6.0, intel-oneapi-condaindex (>= 2022.1.0-155), intel-oneapi-common-vars (>= 2022.1.0-161), intel-oneapi-common-licensing-2022.1.0 +Filename: pool/main/intel-oneapi-tbb-2021.6.0-2021.6.0-835_amd64.deb +Size: 1985316 +MD5sum: a24459cbe4db4c9c5ffd8f9130473176 +SHA1: 277fd2a38e042d9fa124c94e9b27d139c81b340e +SHA256: 80617c7ebf590006fadaa271a8f193b2937eaf901ed51e626c02c9073a8dc9e4 +SHA512: db24bd40a82ea2b09a33c2ceec531d35de0f3c67fbeb17cd25add0b12dcbd395d01fcc105866c8e3c75f063fdb616d2a2e657b2589ee40fe41e4cb5b8912a73f +Description: Intel® oneAPI Threading Building Blocks + + +Package: intel-oneapi-tbb +Architecture: amd64 +Version: 2021.6.0-835 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-tbb-2021.6.0 +Filename: pool/main/intel-oneapi-tbb-2021.6.0-835_amd64.deb +Size: 2276 +MD5sum: 5a7e378f05be70e3c2057a6cacfd3a39 +SHA1: 1a899dbd5786347d865cdd1efbc0461c2a705371 +SHA256: 6eec825b14feaa50303de8b2d92cc0d057e4af02bda83be6d921ddce0793b982 +SHA512: 67515338beaa3e5f9f65bf4fc0aa7e342de5d648760613a5d3de5f27d679e27ae8ab4881ec79a7e41810b233cda6d2cae2c5eb31eabb56edeece03869a7f091e +Description: Intel® oneAPI Threading Building Blocks + + +Package: intel-oneapi-tbb-2021.7.0 +Architecture: amd64 +Version: 2021.7.0-8712 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 5547 +Depends: intel-oneapi-tbb-common-2021.7.0, intel-oneapi-condaindex (>= 2022.2.0-8695), intel-oneapi-common-vars (>= 2022.2.0-8694), intel-oneapi-common-licensing-2022.2.0 +Filename: pool/main/intel-oneapi-tbb-2021.7.0-2021.7.0-8712_amd64.deb +Size: 1969376 +MD5sum: 4cd873c60d930d61179fed3d46c60d43 +SHA1: c5375bad6a5f76317568e17d01cb85f00864fe5a +SHA256: 9c5ae8bade9914ff11c232c0684a4a94d1864eda20d78bd6b2320c44d1a8438e +SHA512: e110e5d938d966747bee7ade4f9079754452a3588e4cfde3c45f32da15912e2d4acd5efcdc0b973e66ec8cf7b4361cc5f1ac2aede22d05c300595ac5b0ab173f +Description: Intel® oneAPI Threading Building Blocks + + +Package: intel-oneapi-tbb +Architecture: amd64 +Version: 2021.7.0-8712 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-tbb-2021.7.0 +Filename: pool/main/intel-oneapi-tbb-2021.7.0-8712_amd64.deb +Size: 2272 +MD5sum: 242a6562d7a2cec3e18b6b0c8a9751ac +SHA1: 0946df44ed0d057c05a194c522eb6893cb9a271c +SHA256: 885a2046da25a8da7de7ec664dc105bbf7f12ca305f2281e673ccb81baa18605 +SHA512: c6f0f47be2a9fa66c13f0e06df824f30ae2588f0e575a8fe05e77135fa68493430c1e0a4ea297715c34fe95af74acdd114e940b080fb48197f155bd112af12c8 +Description: Intel® oneAPI Threading Building Blocks + + +Package: intel-oneapi-tbb +Architecture: amd64 +Version: 2021.7.1-15005 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-tbb-2021.7.1 +Filename: pool/main/intel-oneapi-tbb-2021.7.1-15005_amd64.deb +Size: 2280 +MD5sum: b48af47a99c8cca9215f7354e8edcb4b +SHA1: 3803944032fe0631253d8623d041246490c50f80 +SHA256: 048fcedb6ba8964835c16ede54483f4516ce4ba8e58d6eaa21059ecc20e1452d +SHA512: 2c2b69f6b3e2c67277d4be2c040b2c5cdbe5ceb752e86242653cdcbe0f04cdc7de103649f199128d6c88f60c485ee4ffeb9ed3999b74b3763b7fa32a089b03b9 +Description: Intel® oneAPI Threading Building Blocks + + +Package: intel-oneapi-tbb-2021.7.1 +Architecture: amd64 +Version: 2021.7.1-15005 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 5549 +Depends: intel-oneapi-tbb-common-2021.7.1, intel-oneapi-condaindex (>= 2022.2.1-14970), intel-oneapi-common-vars (>= 2022.2.1-14969), intel-oneapi-common-licensing-2022.2.1 +Filename: pool/main/intel-oneapi-tbb-2021.7.1-2021.7.1-15005_amd64.deb +Size: 1970624 +MD5sum: 2890a5093a6f92e06601792c67877c0f +SHA1: 1716d0fdfa3886ac7dad8abe2f34637cac848b22 +SHA256: c7d3ac87cdf0be34ed6a554ee17963a3e2a1d82d214dfacb760eb2e150df33cc +SHA512: a98e3d804088b55cbd00cfc59847a1fffd79d809aa641793dfd7b0fbb72b44dcf5a8b9f31a39e49672e2eb97e2738cf8a4f855c69927c0b5869e2eb800be9802 +Description: Intel® oneAPI Threading Building Blocks + + +Package: intel-oneapi-tbb-2021.8.0 +Architecture: amd64 +Version: 2021.8.0-25334 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 5736 +Depends: intel-oneapi-tbb-common-2021.8.0, intel-oneapi-condaindex (>= 2023.0.0-25326), intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing-2023.0.0 +Filename: pool/main/intel-oneapi-tbb-2021.8.0-2021.8.0-25334_amd64.deb +Size: 2161584 +MD5sum: 8b28bac69e2c42c2d7ff1dceb285ef2c +SHA1: ca7ea39733b0d2ec03b67bc486ceea7204707192 +SHA256: c170f7016d1582456f6f595928bedf44d1048969d12903c67c34787d9a6c5356 +SHA512: cbd4df541ea8d352767d75a6dc91507ffbba612db21384007c60f4a11511004552b3deedfdb681a4e8e51f9675d8f1079299306fc85fb1fd45422c2148672bac +Description: Intel® oneAPI Threading Building Blocks + + +Package: intel-oneapi-tbb +Architecture: amd64 +Version: 2021.8.0-25334 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-tbb-2021.8.0 +Filename: pool/main/intel-oneapi-tbb-2021.8.0-25334_amd64.deb +Size: 2276 +MD5sum: 4394cb612ec4294278dc4ee573bbaf7f +SHA1: 58e1ee4637883acc6debc6381a7c5e887a0e4c56 +SHA256: 6289c16a8d00360cb8b001e43dc3384f46ce67ea61233f3a7fdd590eaba60ab8 +SHA512: 7f8d7a81f03f8304b9667e68a0c5289ee997c75f88b06a1df10011c4165aafcffc20b55391ecc379696be6415b67bbe93f4ff9c0dbbebf4ca08e5eb85f535299 +Description: Intel® oneAPI Threading Building Blocks + + +Package: intel-oneapi-tbb-2021.9.0 +Architecture: amd64 +Version: 2021.9.0-43484 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 5470 +Depends: intel-oneapi-tbb-common-2021.9.0, intel-oneapi-condaindex (>= 2023.1.0-43291), intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing-2023.1.0 +Filename: pool/main/intel-oneapi-tbb-2021.9.0-2021.9.0-43484_amd64.deb +Size: 1855912 +MD5sum: f13e1c182134e59e4cc2744d0da22987 +SHA1: 8c2146ff62b9ceaa46f8e5b88bc33ca4e1d524e4 +SHA256: 5a5b041a76e1def25b57c3aa3a3d6f60af761115770193c61185eec2c21f6e65 +SHA512: 1e9c1e1dc346f4ffdeaedeb65b62788a1e185f5615399eefc7b3dd6db88c4f0ad3d2a11e1c4cfaad504d0e182b880cd1e462147b0203505ae7e2e00e5c7aef67 +Description: Intel® oneAPI Threading Building Blocks + + +Package: intel-oneapi-tbb +Architecture: amd64 +Version: 2021.9.0-43484 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-tbb-2021.9.0 +Filename: pool/main/intel-oneapi-tbb-2021.9.0-43484_amd64.deb +Size: 2276 +MD5sum: 3372628d9f8349678e1bda263692ad03 +SHA1: 26874ebafb6f520923a783d4a502f11fc35cf409 +SHA256: 595083f4c512d7e3b9fcecb965cb19428589774b1ca9e41a536b4208f5747be4 +SHA512: 5828a9ccb03e9c7252379f90ba1a1edf6ae5a047ffeac7438ad0b050c674904edf233c6fbcae0c39d5e2714aa9b1463c75087095dd364dd675d532a4e21e060b +Description: Intel® oneAPI Threading Building Blocks + + +Package: intel-oneapi-tbb-devel +Architecture: amd64 +Version: 2021.1.1-119 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-tbb-devel-2021.1.1 +Filename: pool/main/intel-oneapi-tbb-devel-2021.1.1-119_amd64.deb +Size: 1866 +MD5sum: cabd95c54f2e1cf9ad1e283331778dfe +SHA1: 570d1199a04bdebc55c2cebb699ea02febcf8ac8 +SHA256: e6351f8c08fb357964b2fb81b89c51dcafa55788989c50eacb3e15492f861d9a +SHA512: c762c0b6d96d2874f9ab102bfced4e4631a82ab5a8e6ba2a972894d6edfaeebb1611617b982aac382768cd14602af4c94f905b9e7fa7b25f637439c2c2d88f41 +Description: Intel® oneAPI Threading Building Blocks Development Package + + +Package: intel-oneapi-tbb-devel-2021.1.1 +Architecture: amd64 +Version: 2021.1.1-119 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 3928 +Depends: intel-oneapi-tbb-2021.1.1, intel-oneapi-tbb-common-devel-2021.1.1, intel-oneapi-condaindex, intel-oneapi-common-vars (>= 2021.1.1-60), intel-oneapi-common-licensing-2021.1.1,intel-oneapi-common-vars,intel-oneapi-common-licensing +Filename: pool/main/intel-oneapi-tbb-devel-2021.1.1-2021.1.1-119_amd64.deb +Size: 723886 +MD5sum: 29d9b65400f19392a97d74b25f402caf +SHA1: f22636531c9fa1c7bf0242cc3bce15e79c736427 +SHA256: 073bb62ee58127ffeb57fd693f0772950c0119f54be3c64efdf13a79d07eded2 +SHA512: ac971bef6ef5fc0e250da60c0c7c7fdab0467da372dca5b40c31756f9b36caef1fc238e2f86d1b718c28659d9130d1e06df7ec0ec0add2e4d685fadb54d25ebf +Description: Intel® oneAPI Threading Building Blocks Development Package + + +Package: intel-oneapi-tbb-devel-2021.2.0 +Architecture: amd64 +Version: 2021.2.0-357 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 4231 +Depends: intel-oneapi-tbb-2021.2.0, intel-oneapi-tbb-common-devel-2021.2.0, intel-oneapi-condaindex (>= 2021.2.0-94), intel-oneapi-common-vars (>= 2021.2.0-195), intel-oneapi-common-licensing-2021.2.0 +Filename: pool/main/intel-oneapi-tbb-devel-2021.2.0-2021.2.0-357_amd64.deb +Size: 756932 +MD5sum: 89c774c4d0e97382c871cc5c112ece24 +SHA1: f38caa6597b4e21cc28188ab784fe1dc3dd427d9 +SHA256: 29a18b1a8bd4a1cbafd08a049cf86beb898fd3252f9201f3b789036e2a75812e +SHA512: a1170fbe7b2015894a751c74c6d96b8f960dc3901fcb35bc4653796164bb6cc84f7ca2d67fe3b98f3de0edcfb3daadaa4f1ccbeb8c5aae13dd8d50cfd8dca7cc +Description: Intel® oneAPI Threading Building Blocks Development Package + + +Package: intel-oneapi-tbb-devel +Architecture: amd64 +Version: 2021.2.0-357 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-tbb-devel-2021.2.0 +Filename: pool/main/intel-oneapi-tbb-devel-2021.2.0-357_amd64.deb +Size: 1856 +MD5sum: df2ebb988d95dfe6f1ff11ff3131dcfd +SHA1: 5fc3a6c655d18407a79de19bf9b40ec1a75ba125 +SHA256: f8738b80827aad07297b59aefb352894cee09fc24823cf674f9b1fa77b8010f2 +SHA512: 4dac06c3897913942ece91c1da93235da47bea48d82f8716bdfa68065931e19ef230551103fa955fe3bc5255c09a6a4ea1f6cdcd15e806369b3afeb4ef033689 +Description: Intel® oneAPI Threading Building Blocks Development Package + + +Package: intel-oneapi-tbb-devel-2021.3.0 +Architecture: amd64 +Version: 2021.3.0-511 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 4566 +Depends: intel-oneapi-tbb-2021.3.0, intel-oneapi-tbb-common-devel-2021.3.0, intel-oneapi-condaindex (>= 2021.3.0-159), intel-oneapi-common-vars (>= 2021.3.0-261), intel-oneapi-common-licensing-2021.3.0 +Filename: pool/main/intel-oneapi-tbb-devel-2021.3.0-2021.3.0-511_amd64.deb +Size: 811394 +MD5sum: db60b70b8a691d96aa0be68400c09fd2 +SHA1: 1197df082b1d93b9de7a8411d85c8c12a453fdfe +SHA256: 24713e89d43e133ad69fd2a3bd6510acc93a89b094230aab5f59bc75ee71efe7 +SHA512: a8958a40d811c4ce0e83ed3c45c0e4b1d6ae2749dae00db8e6fbbed8750d6a97a0df801e171012a1c5d7b557474cb3d456d22d9e943aaeb34d9afacd769c9bb5 +Description: Intel® oneAPI Threading Building Blocks Development Package + + +Package: intel-oneapi-tbb-devel +Architecture: amd64 +Version: 2021.3.0-511 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-tbb-devel-2021.3.0 +Filename: pool/main/intel-oneapi-tbb-devel-2021.3.0-511_amd64.deb +Size: 1856 +MD5sum: abd29029ad5369fb71ea016c11bf17ac +SHA1: 6a4df483532dba555725188c3464c517f38fa7af +SHA256: 9a57882e08ece757e67691e80abf8b809f009b65d2143a577279192213cd83fd +SHA512: 54a958631b137f60438dffa7d322ec9e137197f59595c86583a7913a81e950bbafcd2eea40553f01774bcee34b3c4d4577e375e03713d16c59247e127928d15a +Description: Intel® oneAPI Threading Building Blocks Development Package + + +Package: intel-oneapi-tbb-devel-2021.4.0 +Architecture: amd64 +Version: 2021.4.0-643 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 4629 +Depends: intel-oneapi-tbb-2021.4.0, intel-oneapi-tbb-common-devel-2021.4.0, intel-oneapi-condaindex (>= 2021.4.0-207), intel-oneapi-common-vars (>= 2021.4.0-327), intel-oneapi-common-licensing-2021.4.0 +Filename: pool/main/intel-oneapi-tbb-devel-2021.4.0-2021.4.0-643_amd64.deb +Size: 822944 +MD5sum: 7198df984618513e84390246c1619793 +SHA1: 7837a49eb8da55e486efa89adebddaa3fb518628 +SHA256: 046f49b103609f1b5b6b217a08c7971782fa1d2111aab27c1cebc46d3ac9985f +SHA512: a2296cc380ca5a1e5c6fd31af70360910a2c830923fa66e78f64aae6ec53bbde14e1ec80a7f393b957b08c3274584c80f0e9ead732639e49a8c6ce0154583131 +Description: Intel® oneAPI Threading Building Blocks Development Package + + +Package: intel-oneapi-tbb-devel +Architecture: amd64 +Version: 2021.4.0-643 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-tbb-devel-2021.4.0 +Filename: pool/main/intel-oneapi-tbb-devel-2021.4.0-643_amd64.deb +Size: 2268 +MD5sum: a734d29087a6e63de370d3340683b83a +SHA1: 77b86eb24289e6c467704ee566a9bb76124ed5a5 +SHA256: 6332ffc280c83718f985fa4e85867d9eb677b6f1e7080ce85d66755f3aa502aa +SHA512: a429cba100091c0ee17b9fe398e485257920b0cedfc2a501618b5afca7ace5ba7fa9c73e70c2c829733ee544e375fc499591ae9e8a9d1abd13de5c4fa470271f +Description: Intel® oneAPI Threading Building Blocks Development Package + + +Package: intel-oneapi-tbb-devel-2021.5.0 +Architecture: amd64 +Version: 2021.5.0-707 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 4632 +Depends: intel-oneapi-tbb-2021.5.0, intel-oneapi-tbb-common-devel-2021.5.0, intel-oneapi-condaindex (>= 2022.0.0-74), intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-tbb-devel-2021.5.0-2021.5.0-707_amd64.deb +Size: 823938 +MD5sum: ecaabe79d7597bbd656328ea6737f678 +SHA1: 8bf4f91c0c8b03b6127b12975cb7fa875dcbbc4c +SHA256: 0e33ec03e8cb76cc121a07a690a8c9491588c2dbd37653f6b16572317a44d38a +SHA512: da9ff21cacec533c6398f4ad6eb0aa2f4ac5c384915290160f58f9d572e3f438931ddc465d4676b2754e88894d140933baff4d670e7fafb157dc314dbb328f15 +Description: Intel® oneAPI Threading Building Blocks Development Package + + +Package: intel-oneapi-tbb-devel +Architecture: amd64 +Version: 2021.5.0-707 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-tbb-devel-2021.5.0 +Filename: pool/main/intel-oneapi-tbb-devel-2021.5.0-707_amd64.deb +Size: 2272 +MD5sum: 7b60495832e6be608cc7e43842fd8488 +SHA1: e0d9dc78e819cd89861c006893accba3973bb927 +SHA256: c1a95a1fe6adbaaa4423c3784a10d93fe4625b06e92e46428e68e2ff9a35b329 +SHA512: 3276009bf7da645ffe5db5f9a19b187dda47bcd7ae7bc819bc12ead493440b1df03c24fc557d7b753aeacf8f32d6f9921d7fe0c6045ca88f18bf848e9b44b476 +Description: Intel® oneAPI Threading Building Blocks Development Package + + +Package: intel-oneapi-tbb-devel-2021.5.1 +Architecture: amd64 +Version: 2021.5.1-738 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 4632 +Depends: intel-oneapi-tbb-2021.5.1, intel-oneapi-tbb-common-devel-2021.5.1, intel-oneapi-condaindex (>= 2022.0.0-74), intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-tbb-devel-2021.5.1-2021.5.1-738_amd64.deb +Size: 822884 +MD5sum: 2f6731304ed5215d5e3869a4e594aba7 +SHA1: e359effd8445057ca1ebc535b8549cdcbe189c9d +SHA256: ac9452385fc8024bdb8df5343d7ebd587b12702ca0d5e562535f310c1027a53e +SHA512: 08b0b46b2b72bcebb5521ecc291ac06b872ab4d419f695fd96fdce5b8a3a32cb7a682b2fe3d90c252a7dfc6f1acfca9e3612ace454e1b1968636ae486067dee5 +Description: Intel® oneAPI Threading Building Blocks Development Package + + +Package: intel-oneapi-tbb-devel +Architecture: amd64 +Version: 2021.5.1-738 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-tbb-devel-2021.5.1 +Filename: pool/main/intel-oneapi-tbb-devel-2021.5.1-738_amd64.deb +Size: 2268 +MD5sum: 4d7d1304c90b15d3d188b60bed1c3627 +SHA1: 4e1487c76dd71988c1a74b7e5969ebc064588713 +SHA256: 1235663c666fbbb9dffa5445fbb2a0a5974e18a2d3df8ce1b585972b66a020af +SHA512: 48cf986c07db58115e68a281d7f49745e85feef395a2b4849261175c2ad1feb991f5a9d55152ed6fb24bf3e8f0a028396d379bf0925a7326a20c92dba33f7d83 +Description: Intel® oneAPI Threading Building Blocks Development Package + + +Package: intel-oneapi-tbb-devel-2021.6.0 +Architecture: amd64 +Version: 2021.6.0-835 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 4629 +Depends: intel-oneapi-tbb-2021.6.0, intel-oneapi-tbb-common-devel-2021.6.0, intel-oneapi-condaindex (>= 2022.1.0-155), intel-oneapi-common-vars (>= 2022.1.0-161), intel-oneapi-common-licensing-2022.1.0 +Filename: pool/main/intel-oneapi-tbb-devel-2021.6.0-2021.6.0-835_amd64.deb +Size: 822068 +MD5sum: a76190f2d7480854ae1bee3661283fdf +SHA1: 6051c5bd7c7bdd432ea65e970e0518169ab33e7a +SHA256: cbd83ad505eebf77a519ddce5a49bfaab378d9595fe0d60c4202836ea9bdd871 +SHA512: 96e656c470108f40521e9756fad62d40b60e7da884f1951fe1e10f50454569afc027f20a3b413f1ac367c4e852caa9f974f6fd6abffc977a94086dc7a96ecb45 +Description: Intel® oneAPI Threading Building Blocks Development Package + + +Package: intel-oneapi-tbb-devel +Architecture: amd64 +Version: 2021.6.0-835 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-tbb-devel-2021.6.0 +Filename: pool/main/intel-oneapi-tbb-devel-2021.6.0-835_amd64.deb +Size: 2652 +MD5sum: 6206a75cf95c1df539f06e6ca455c66d +SHA1: 04f69c2a9134fd6c1c92036acba06f35bf489234 +SHA256: 39525cb7efb99e6f00f5f4c227c237b65f4e2a4da23d5e047d21ead75855d969 +SHA512: 248fb46d3561e982fbecad44f6f2eca5bc291bc3e5066be356b7f09f454b1ab2968e7486998c5ae7bc38280b098f906c03a33a48b8ae29115ac29c1b52aee8d0 +Description: Intel® oneAPI Threading Building Blocks Development Package + + +Package: intel-oneapi-tbb-devel-2021.7.0 +Architecture: amd64 +Version: 2021.7.0-8712 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 4772 +Depends: intel-oneapi-tbb-2021.7.0, intel-oneapi-tbb-common-devel-2021.7.0, intel-oneapi-condaindex (>= 2022.2.0-8695), intel-oneapi-common-vars (>= 2022.2.0-8694), intel-oneapi-common-licensing-2022.2.0 +Filename: pool/main/intel-oneapi-tbb-devel-2021.7.0-2021.7.0-8712_amd64.deb +Size: 889316 +MD5sum: 490ac3cdbda0112243fc5b8c5f11bfd3 +SHA1: 7b20a937bac7a0417118dd4c3f0af6972be72216 +SHA256: 9271fb69ee70e73e279fdf026bda8372d85e3e5fe92c0e82720ab5d31b767f2a +SHA512: a268477827418ea13d6e8941dc490ea54b5bb3544ac5d560290e2bcadba254d79c79480acee3d41f9a47e32d4ec29b81833ae261bdcc9990e7b85b53f4efd883 +Description: Intel® oneAPI Threading Building Blocks Development Package + + +Package: intel-oneapi-tbb-devel +Architecture: amd64 +Version: 2021.7.0-8712 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-tbb-devel-2021.7.0 +Filename: pool/main/intel-oneapi-tbb-devel-2021.7.0-8712_amd64.deb +Size: 2652 +MD5sum: c1bfcbf38ac968ca2466a255389bb91a +SHA1: 9f4bae0202d1c82b1ebed2c2081242faa4d00b07 +SHA256: 49dbe5d8884b4078749c13255f1a4df9e2103b1fa5bf8ee74a874636de778b71 +SHA512: 1de9d56b615b0e46260d4bdee7d07727cd583fc771deca46296868c4c7fdb935b58c1c3e3141277fd9dc5501b04ef0c0c951a0fada0a32c4077a132fa98975ac +Description: Intel® oneAPI Threading Building Blocks Development Package + + +Package: intel-oneapi-tbb-devel +Architecture: amd64 +Version: 2021.7.1-15005 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-tbb-devel-2021.7.1 +Filename: pool/main/intel-oneapi-tbb-devel-2021.7.1-15005_amd64.deb +Size: 2652 +MD5sum: e9269e6ae5eb4130bbdf60a63060674e +SHA1: 25274a2bfd99993718f4afba4e982a74f6db4245 +SHA256: fbd17473a4066f5ae4c8cf7004e9170bef7b612088c4b4c064861b62a25e950a +SHA512: 637ae37ea6ce1632c773f98bd2550129880c8213acfd2888671485e67576e8d1ba5399dada268fb853667917a558afe1a78c40467848a030179b68435bf40f60 +Description: Intel® oneAPI Threading Building Blocks Development Package + + +Package: intel-oneapi-tbb-devel-2021.7.1 +Architecture: amd64 +Version: 2021.7.1-15005 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 4772 +Depends: intel-oneapi-tbb-2021.7.1, intel-oneapi-tbb-common-devel-2021.7.1, intel-oneapi-condaindex (>= 2022.2.1-14970), intel-oneapi-common-vars (>= 2022.2.1-14969), intel-oneapi-common-licensing-2022.2.1 +Filename: pool/main/intel-oneapi-tbb-devel-2021.7.1-2021.7.1-15005_amd64.deb +Size: 889172 +MD5sum: 977951523569eeedd13cd9774764b314 +SHA1: 01460a702f0bc16221ad75af6333e1eef6626807 +SHA256: f8988aca0a3a16fd241273862c9c4278b77620a8da4c2684694ee667e5e86df4 +SHA512: 79ff21093c028d077fd9a7f316f8b719f4ee67d0ef77d2633c8e6419ff4bcc2d596c891d1bd8e26e03141c8f6c18b6fcc3042e7e9d393f6016869ce95f7b23e3 +Description: Intel® oneAPI Threading Building Blocks Development Package + + +Package: intel-oneapi-tbb-devel-2021.8.0 +Architecture: amd64 +Version: 2021.8.0-25334 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 4772 +Depends: intel-oneapi-tbb-2021.8.0, intel-oneapi-tbb-common-devel-2021.8.0, intel-oneapi-condaindex (>= 2023.0.0-25326), intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing-2023.0.0 +Filename: pool/main/intel-oneapi-tbb-devel-2021.8.0-2021.8.0-25334_amd64.deb +Size: 889568 +MD5sum: fe1a458bb547911bd55e19bbb9ba4471 +SHA1: 685f824abcac137aaf8214462c7a5dba3f2b380c +SHA256: aa9b2c98735953cd2d77588943d28b7b16e46ab55043518b7868b2d1d165352f +SHA512: 1e6b443c50be496288cfc36082e7312f3ec74c263fedfe1093f99e7c0ba52d9d6a15ec8c9adb91bdccbfd4075143b17aef39122560727960f6f806fec11b1647 +Description: Intel® oneAPI Threading Building Blocks Development Package + + +Package: intel-oneapi-tbb-devel +Architecture: amd64 +Version: 2021.8.0-25334 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-tbb-devel-2021.8.0 +Filename: pool/main/intel-oneapi-tbb-devel-2021.8.0-25334_amd64.deb +Size: 2652 +MD5sum: 2287121b4b06fca77a3884e4b75a73a1 +SHA1: a4425c47d6ef4ecadb68ea95a4be68435f1049d7 +SHA256: 27a9b7d1c05b7ccc6063d76c450e6b4a50568bac1ab63d22f140aa7438c9edd6 +SHA512: 88a8d99ac6e15e75791c950f9901716e870db81b075aecada38a6c8f52cd433027c212d5030edcba401bb0920384fdf9b332291f4b0fd0ebe73ff78270a97357 +Description: Intel® oneAPI Threading Building Blocks Development Package + + +Package: intel-oneapi-tbb-devel-2021.9.0 +Architecture: amd64 +Version: 2021.9.0-43484 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 4814 +Depends: intel-oneapi-tbb-2021.9.0, intel-oneapi-tbb-common-devel-2021.9.0, intel-oneapi-condaindex (>= 2023.1.0-43291), intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing-2023.1.0 +Filename: pool/main/intel-oneapi-tbb-devel-2021.9.0-2021.9.0-43484_amd64.deb +Size: 896940 +MD5sum: 1e9059d4159240db248cbcaa837dd52d +SHA1: 5f8a53e358ce4040e396319b71c77b86e25fcd41 +SHA256: dec4a9c18b10039dac5bd8a7c3158c9521cc018a986bff58a36d7a5daadfc3e3 +SHA512: a7d0af651a4362e6f0b0a1e3fa7d07dea00ccb02c5e78e8a847c769cd94e10d9fc80b436f8bc793a3797b60ca7c6484478202fbb45efc98c5e9c0401fd9b9944 +Description: Intel® oneAPI Threading Building Blocks Development Package + + +Package: intel-oneapi-tbb-devel +Architecture: amd64 +Version: 2021.9.0-43484 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-tbb-devel-2021.9.0 +Filename: pool/main/intel-oneapi-tbb-devel-2021.9.0-43484_amd64.deb +Size: 2652 +MD5sum: f7e154d18ddbae9cf4cb4736c01fc956 +SHA1: 88c11635ab8809ad243dba9a12c5025f76e70b60 +SHA256: 14eb9503ee2e46b2bdf830e036891cb7a899ab0b425c1ffc0ae658a5f106a9fd +SHA512: 36f819ea43f4a3a84a519c2cf4a573c5e6a65626348ebaf79ce2205edce668842838807fcaac113c7fdf7e6246df88c9f32b47ce5853c14aa30bec481a519131 +Description: Intel® oneAPI Threading Building Blocks Development Package + + +Package: intel-oneapi-tbb-devel-32bit +Architecture: amd64 +Version: 2021.1.1-119 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-tbb-devel-32bit-2021.1.1 +Filename: pool/main/intel-oneapi-tbb-devel-32bit-2021.1.1-119_amd64.deb +Size: 1872 +MD5sum: 033298c19b60a406d1588c7286ef6224 +SHA1: 2a2123f7a0fa262a4fe8710cc5a1b949237479b8 +SHA256: 0962cdf54027b8d68fa0453fa6b236a72c3bf39f6822763edb1ed95f604b725f +SHA512: c2af5b738548292b56c7bf21b85f8319078b1b84ae1e345ad0b82541b02e506c7b97c26ef0c11009daabda68acc405dbe3e298cc5a14ccac5dc632be38028a24 +Description: Intel® oneAPI Threading Building Blocks Development Package for IA-32 + + +Package: intel-oneapi-tbb-devel-32bit-2021.1.1 +Architecture: amd64 +Version: 2021.1.1-119 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 3582 +Depends: intel-oneapi-tbb-32bit-2021.1.1, intel-oneapi-tbb-common-devel-2021.1.1, intel-oneapi-condaindex, intel-oneapi-common-vars (>= 2021.1.1-60), intel-oneapi-common-licensing-2021.1.1,intel-oneapi-common-vars,intel-oneapi-common-licensing +Filename: pool/main/intel-oneapi-tbb-devel-32bit-2021.1.1-2021.1.1-119_amd64.deb +Size: 696402 +MD5sum: 36e3598fc9804daf4749dcc3bfa48bb4 +SHA1: 039b0d6b68968d900f44e6a26254f7eeae33f8c9 +SHA256: a94c6ba02e64f3e711f52785fd125d200bd9000134b266690b92c7baeffe718a +SHA512: f55ae2cfead3d120934d57e8164703a0d3d4be41335957db166fd3d377e0c4813acc4bf1fade43504ebb831d102f502a47dfc4900d4770a08617be44a09d8e5c +Description: Intel® oneAPI Threading Building Blocks Development Package for IA-32 + + +Package: intel-oneapi-tbb-devel-32bit-2021.2.0 +Architecture: amd64 +Version: 2021.2.0-357 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 3860 +Depends: intel-oneapi-tbb-32bit-2021.2.0, intel-oneapi-tbb-common-devel-2021.2.0, intel-oneapi-condaindex (>= 2021.2.0-94), intel-oneapi-common-vars (>= 2021.2.0-195), intel-oneapi-common-licensing-2021.2.0 +Filename: pool/main/intel-oneapi-tbb-devel-32bit-2021.2.0-2021.2.0-357_amd64.deb +Size: 727772 +MD5sum: 36baee22b33a9190075d42117ea13865 +SHA1: f2f2c4a28ffab7acfc4dab5ce851e470cef415ff +SHA256: c6e3edea4a395650c6c53edc927ff3d45a971dfafad15cb156615f51d34dc78e +SHA512: 2261d86b400d37348198ba0170b6b9a0ed723f82c4a76207f8b404c8bfdd0be47a7410e0a792e789aba3f079ee456ef2a9e1cf331e3bc041da93ed9982d66d62 +Description: Intel® oneAPI Threading Building Blocks Development Package for IA-32 + + +Package: intel-oneapi-tbb-devel-32bit +Architecture: amd64 +Version: 2021.2.0-357 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-tbb-devel-32bit-2021.2.0 +Filename: pool/main/intel-oneapi-tbb-devel-32bit-2021.2.0-357_amd64.deb +Size: 1864 +MD5sum: a7fd55732230c4f8cbf11df4da7ba918 +SHA1: 8d1bb22349c349ba6eff562a0f174e662f6b1fb8 +SHA256: ce934423385acf2c112a18506098c196ff5a4c317c82c69a46477c869ca9f097 +SHA512: 42f3c71c4f597e229f0a6e8ab1f5ab7d92cd1e03913a4eef7cfa0cae378428daa03eb9d5fb04d85a74ae80976e5dbd4ba461ba43676bde8a591b00db3ebfcff7 +Description: Intel® oneAPI Threading Building Blocks Development Package for IA-32 + + +Package: intel-oneapi-tbb-devel-32bit-2021.3.0 +Architecture: amd64 +Version: 2021.3.0-511 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 4158 +Depends: intel-oneapi-tbb-32bit-2021.3.0, intel-oneapi-tbb-common-devel-2021.3.0, intel-oneapi-condaindex (>= 2021.3.0-159), intel-oneapi-common-vars (>= 2021.3.0-261), intel-oneapi-common-licensing-2021.3.0 +Filename: pool/main/intel-oneapi-tbb-devel-32bit-2021.3.0-2021.3.0-511_amd64.deb +Size: 784376 +MD5sum: 74d96b1ff3b55bb0ab253c773b20546a +SHA1: 3a5409fe74e7005c1f0fe995f69fc37187a40bd1 +SHA256: f8333dd829aa9ab88fddb3e4fd1da6a1318eca20239330a4c3f08225ffc27126 +SHA512: 500975a822e471f48e312480ac12d9422a05c80a9497d00728af52dbba952d5a2855872c034c16c80b0c20a63309554517ba68f99a427b40be82ab4a7ae86c8f +Description: Intel® oneAPI Threading Building Blocks Development Package for IA-32 + + +Package: intel-oneapi-tbb-devel-32bit +Architecture: amd64 +Version: 2021.3.0-511 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-tbb-devel-32bit-2021.3.0 +Filename: pool/main/intel-oneapi-tbb-devel-32bit-2021.3.0-511_amd64.deb +Size: 1864 +MD5sum: 2efde9e2fcc07e0eee3a7bc32716a889 +SHA1: 7539767925b83e21539f965c6ec57eb098d2e509 +SHA256: 50488d27e86e4e5d8c1a6f6672d495fac2d3ba13728a6d03634324bddf5bdb82 +SHA512: e3f01d85aab2c0fb2e64c280db62ebb690784cf8ed10765bd66cfbfd01834e10a1124334d0bcbad479ff182770a8c5892a7c3306fa839cc9afc09b9018a25afd +Description: Intel® oneAPI Threading Building Blocks Development Package for IA-32 + + +Package: intel-oneapi-tbb-devel-32bit-2021.4.0 +Architecture: amd64 +Version: 2021.4.0-643 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 4217 +Depends: intel-oneapi-tbb-32bit-2021.4.0, intel-oneapi-tbb-common-devel-2021.4.0, intel-oneapi-condaindex (>= 2021.4.0-207), intel-oneapi-common-vars (>= 2021.4.0-327), intel-oneapi-common-licensing-2021.4.0 +Filename: pool/main/intel-oneapi-tbb-devel-32bit-2021.4.0-2021.4.0-643_amd64.deb +Size: 795162 +MD5sum: 4a4b35ef88026c8695472a22c79eecb8 +SHA1: f8480c31b226ab55e3c665d0bfb886640a405451 +SHA256: 920e7051ea638ef72743a7cb1ec30f9c7f7adc23f20664341b80f74e43ab5f04 +SHA512: e8dd577e5a5b5c8c7f8a1cba97a4e90a53409d7c58dda20c7580cdd3cf81d3960be27f922654d61def72ad9b4c9e2df91b7b40147dcbf977efa9f72dd3a391ff +Description: Intel® oneAPI Threading Building Blocks Development Package for IA-32 + + +Package: intel-oneapi-tbb-devel-32bit +Architecture: amd64 +Version: 2021.4.0-643 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-tbb-devel-32bit-2021.4.0 +Filename: pool/main/intel-oneapi-tbb-devel-32bit-2021.4.0-643_amd64.deb +Size: 2276 +MD5sum: 95e17da7763721817867231cfa0bc718 +SHA1: cb491ad74e40142557b78e4a9b8b7ddd5368b44d +SHA256: b16b4d63ae022f1b5f0fdc99c6274a4e0943a7f8b455a788699dc8d24158676c +SHA512: 1c6590c57db576220d606f79718573bbff3dd1ca3f901e6e09ae8cca4ece6f10be732e0f42ec871539b5fb0d943f851793c8cd815020386f97aefc7d4b1b9611 +Description: Intel® oneAPI Threading Building Blocks Development Package for IA-32 + + +Package: intel-oneapi-tbb-devel-32bit-2021.5.0 +Architecture: amd64 +Version: 2021.5.0-707 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 4220 +Depends: intel-oneapi-tbb-32bit-2021.5.0, intel-oneapi-tbb-common-devel-2021.5.0, intel-oneapi-condaindex (>= 2022.0.0-74), intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-tbb-devel-32bit-2021.5.0-2021.5.0-707_amd64.deb +Size: 795530 +MD5sum: a9149bc9b28cf11568c6110a7d023a8a +SHA1: 4e1d050a816fb9724843b89579a190d48f6c93ba +SHA256: c553e465c8390c065eb21669944781797c426786b63a34788d322c336bd160d9 +SHA512: eea0e23903b9e848ce10a5c4ed4de3d36530047c3014f6accc0d1e295943bb4989654d6bdddf615ca84965d4396d5b16e3d7f974544b44b48c725d5739abc289 +Description: Intel® oneAPI Threading Building Blocks Development Package for IA-32 + + +Package: intel-oneapi-tbb-devel-32bit +Architecture: amd64 +Version: 2021.5.0-707 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-tbb-devel-32bit-2021.5.0 +Filename: pool/main/intel-oneapi-tbb-devel-32bit-2021.5.0-707_amd64.deb +Size: 2276 +MD5sum: e3df5f1e3d0e1ff1e44bb0a14433bd29 +SHA1: d2a3d671eba5428e87e620fb60fda45c7f6a4de7 +SHA256: 41ef90f7e7cff29f78f52d422bd3398b2d0becd28d065f39f956264b11bd387f +SHA512: 7666235cf96bca266714dbb2654c58ff98085447fdf88b84a64b7cafd06ebf26d51ab1dfbd8550d21587da6692c044c50972bdc7536355eea6224245d5820c14 +Description: Intel® oneAPI Threading Building Blocks Development Package for IA-32 + + +Package: intel-oneapi-tbb-devel-32bit-2021.5.1 +Architecture: amd64 +Version: 2021.5.1-738 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 4220 +Depends: intel-oneapi-tbb-32bit-2021.5.1, intel-oneapi-tbb-common-devel-2021.5.1, intel-oneapi-condaindex (>= 2022.0.0-74), intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-tbb-devel-32bit-2021.5.1-2021.5.1-738_amd64.deb +Size: 794660 +MD5sum: f537d301311f7d4ed009ce51fe21aee3 +SHA1: 71371918a255d584ac80f615366df7e3da0b8ca4 +SHA256: 52e4944231812634354dc4d5806e37bece478ee1a3c9316dd4128fe9dcd71ca5 +SHA512: 4deb001ae3f58b5234b1678a8ddb49c4c7af5c6ec3017486516c7f9443d22efab72b7c2befbf9062774f7546e9aec26aac1fac8308febe78cf9787f088099763 +Description: Intel® oneAPI Threading Building Blocks Development Package for IA-32 + + +Package: intel-oneapi-tbb-devel-32bit +Architecture: amd64 +Version: 2021.5.1-738 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-tbb-devel-32bit-2021.5.1 +Filename: pool/main/intel-oneapi-tbb-devel-32bit-2021.5.1-738_amd64.deb +Size: 2276 +MD5sum: a3135f2fb072cada6a7c1436f979550f +SHA1: 6571901fe12e7b403f614ec84afbe1b80eb624fd +SHA256: cd8879b357fefe6ac2b90b3d24c54db9f10f3b4d1fd4480c3a73b76d9a577cca +SHA512: 2abd77c01715b9c6ee5f61e9e4bf951130c7883d8d6c005700eaf3f49661393a3d32dd82553cb12f85e93d953c31ce15e4399b13cbbcfdbeae7bdf660a47a6d4 +Description: Intel® oneAPI Threading Building Blocks Development Package for IA-32 + + +Package: intel-oneapi-tbb-devel-32bit-2021.6.0 +Architecture: amd64 +Version: 2021.6.0-835 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 4213 +Depends: intel-oneapi-tbb-32bit-2021.6.0, intel-oneapi-tbb-common-devel-2021.6.0, intel-oneapi-condaindex (>= 2022.1.0-155), intel-oneapi-common-vars (>= 2022.1.0-161), intel-oneapi-common-licensing-2022.1.0 +Filename: pool/main/intel-oneapi-tbb-devel-32bit-2021.6.0-2021.6.0-835_amd64.deb +Size: 794232 +MD5sum: b3755b20c7ad89edf5279487f83734b6 +SHA1: a9e74423e4a31c5d1575a963c499abd9a2216a63 +SHA256: 114f6fd22164dd1e0e12cbd1327a4a1dd855b0793b7662773efd75cdf78a30e9 +SHA512: 7243b89b22ab60f7b4efa9f7bdea26a0d94fa216d819397ad9c2756b0f7c6adc3dccba5542ba538982e8df55ed247636417a5282bf327c1b3362073707f2ca98 +Description: Intel® oneAPI Threading Building Blocks Development Package for IA-32 + + +Package: intel-oneapi-tbb-devel-32bit +Architecture: amd64 +Version: 2021.6.0-835 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-tbb-devel-32bit-2021.6.0 +Filename: pool/main/intel-oneapi-tbb-devel-32bit-2021.6.0-835_amd64.deb +Size: 2664 +MD5sum: 3dca3c5d04525b3350568355a3e4d212 +SHA1: a23d5d74ae1566f27f021050e2c18e873e21db57 +SHA256: 6ef6011815472430979556b070d01384a3160039d73afc2af305566010fe0e7d +SHA512: d07c17c81f34fe2bd395f7f8578fe8175fd71852286521676afca38ad089cafdb48c22fb1c9b0468206d4778f9dbc1243f7cd4bbebacb68e76fa49cf6d706555 +Description: Intel® oneAPI Threading Building Blocks Development Package for IA-32 + + +Package: intel-oneapi-tbb-devel-32bit-2021.7.0 +Architecture: amd64 +Version: 2021.7.0-8712 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 4373 +Depends: intel-oneapi-tbb-32bit-2021.7.0, intel-oneapi-tbb-common-devel-2021.7.0, intel-oneapi-condaindex (>= 2022.2.0-8695), intel-oneapi-common-vars (>= 2022.2.0-8694), intel-oneapi-common-licensing-2022.2.0 +Filename: pool/main/intel-oneapi-tbb-devel-32bit-2021.7.0-2021.7.0-8712_amd64.deb +Size: 883888 +MD5sum: b37ce07f60ee668803af7d738cdd77ba +SHA1: bf01bc9a376162e724b882cb8e83404f8f391207 +SHA256: ed7b73f200c493c818268082a55f9d33b4713fcd952092ee2fe552a4152c842d +SHA512: fdf7817d92e3c6be930222e0f808e02f1dbbc0bf77e0804829c051f0ba286ece82f205ec9ebd868917519325f10cdf5c5b58d89ac055df2041e96ff912d418f6 +Description: Intel® oneAPI Threading Building Blocks Development Package for IA-32 + + +Package: intel-oneapi-tbb-devel-32bit +Architecture: amd64 +Version: 2021.7.0-8712 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-tbb-devel-32bit-2021.7.0 +Filename: pool/main/intel-oneapi-tbb-devel-32bit-2021.7.0-8712_amd64.deb +Size: 2664 +MD5sum: 4b1e23857dac896defca0bf22f9d0789 +SHA1: c00191942a78902532489aaf6cb8334d178abb71 +SHA256: bad5868e33b363c9f4235ae92e62e2d798150559c5d850eff8d5a7e0a658add3 +SHA512: e8d52570443e84d089327b91351a3d4236c574c489aaad55a29dc079caad468a60e4d1799b6fe18127baf1838c6c97660f0ac1a6742a078de371921173c8562c +Description: Intel® oneAPI Threading Building Blocks Development Package for IA-32 + + +Package: intel-oneapi-tbb-devel-32bit +Architecture: amd64 +Version: 2021.7.1-15005 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-tbb-devel-32bit-2021.7.1 +Filename: pool/main/intel-oneapi-tbb-devel-32bit-2021.7.1-15005_amd64.deb +Size: 2664 +MD5sum: 86f9e70a556e1858b25d81d6835316f9 +SHA1: 9e7ddcd3266c3bc110163ee39e353ca63bd7f687 +SHA256: e24f7d331ed67fe9bae473bd1be1dd3ed9a7fe40066a367b50da35ec2e4b827f +SHA512: 5326f1ccebf91154f4a6480d74be58130bc9fef79e05795086ab64900519e9a324d3957a2dd26334a660fc1c9f1ef97a1bdf012be19cbfb51431a08b669e6770 +Description: Intel® oneAPI Threading Building Blocks Development Package for IA-32 + + +Package: intel-oneapi-tbb-devel-32bit-2021.7.1 +Architecture: amd64 +Version: 2021.7.1-15005 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 4373 +Depends: intel-oneapi-tbb-32bit-2021.7.1, intel-oneapi-tbb-common-devel-2021.7.1, intel-oneapi-condaindex (>= 2022.2.1-14970), intel-oneapi-common-vars (>= 2022.2.1-14969), intel-oneapi-common-licensing-2022.2.1 +Filename: pool/main/intel-oneapi-tbb-devel-32bit-2021.7.1-2021.7.1-15005_amd64.deb +Size: 883172 +MD5sum: c736550a281f33e9c6bb7679cae78479 +SHA1: bef446672f61186afefc3cc26d8f21c9a6237551 +SHA256: 93fd459f37e74739f5b85a8cbff807e2d4020fab825aada9b60a7a84eef07229 +SHA512: 018bc00e42c11f7731ecfabaedbd5dada4d7600a3b2756bdc0b8845250386847bdb202f38d98cf0f76ea81bb6b5101672cc3b0a1968707887d4a5d73d2d5ca4e +Description: Intel® oneAPI Threading Building Blocks Development Package for IA-32 + + +Package: intel-oneapi-tbb-devel-32bit-2021.8.0 +Architecture: amd64 +Version: 2021.8.0-25334 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 4373 +Depends: intel-oneapi-tbb-32bit-2021.8.0, intel-oneapi-tbb-common-devel-2021.8.0, intel-oneapi-condaindex (>= 2023.0.0-25326), intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing-2023.0.0 +Filename: pool/main/intel-oneapi-tbb-devel-32bit-2021.8.0-2021.8.0-25334_amd64.deb +Size: 882496 +MD5sum: d0b59ce64b90041d6864f38ef4944be1 +SHA1: a0448c42b9683719c4e2bb808071c26fb0739fcd +SHA256: 403bbf8453acd0da272786f9848568a0bd87026b6e0740c3cd61462321e2f500 +SHA512: 2be22d62cad02eb7f1b0314ccbf869aeb7554b34bd1b6763be40b5f58bf6c6d6cb91104b681f024fa2a405e6b30972a19d2f04743770acb4fc95f3d2e9bd8d7a +Description: Intel® oneAPI Threading Building Blocks Development Package for IA-32 + + +Package: intel-oneapi-tbb-devel-32bit +Architecture: amd64 +Version: 2021.8.0-25334 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-tbb-devel-32bit-2021.8.0 +Filename: pool/main/intel-oneapi-tbb-devel-32bit-2021.8.0-25334_amd64.deb +Size: 2664 +MD5sum: 0dab5f3f5c3d2c51cb1696264acbfe82 +SHA1: cc56ebfbede207f74e2fa695ad6d913bf086fc4f +SHA256: fb24d229a5bf102e3a431484d4e6fa07e9add5088d293018c2a03b7a34ae497a +SHA512: d015ec304287c53154f096ffadf54fe534b6ba5bcad26fd1a33db0fbf200002f00b22473c35d4a1862c0c51293a73de90e6ad6d86627b4c7383ffcab04523b6a +Description: Intel® oneAPI Threading Building Blocks Development Package for IA-32 + + +Package: intel-oneapi-tbb-devel-32bit-2021.9.0 +Architecture: amd64 +Version: 2021.9.0-43484 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 4404 +Depends: intel-oneapi-tbb-32bit-2021.9.0, intel-oneapi-tbb-common-devel-2021.9.0, intel-oneapi-condaindex (>= 2023.1.0-43291), intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing-2023.1.0 +Filename: pool/main/intel-oneapi-tbb-devel-32bit-2021.9.0-2021.9.0-43484_amd64.deb +Size: 888680 +MD5sum: 14beede4efd2167d4bd0c424e11b6344 +SHA1: ccdc1ded620f2f6faab82967ee26361cbdc662be +SHA256: 40a9742e750f989b09c92620633606fdeac4ba2530b06ec641dcb4b8d1fe2707 +SHA512: f4628143f36db6b33092f95310901a034cc1b526eaa18ebb2cd23fe613080fe5275609c10ff4b63c25da484aa72732f45121bf30da268a306cfdcda5f2f56f08 +Description: Intel® oneAPI Threading Building Blocks Development Package for IA-32 + + +Package: intel-oneapi-tbb-devel-32bit +Architecture: amd64 +Version: 2021.9.0-43484 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-tbb-devel-32bit-2021.9.0 +Filename: pool/main/intel-oneapi-tbb-devel-32bit-2021.9.0-43484_amd64.deb +Size: 2664 +MD5sum: 45784e5783656017ff077b761b848f36 +SHA1: 162bf227a6df1e5fab624bc3fe3e19dbab3f2634 +SHA256: 66a06a8889592c7e862c239a35a7aedc8e25d74ff1ede520b0770abccde83a4d +SHA512: 0a71ee39fd22eb4601a31c6a3343fcb7bc954ee004b1e7610e24de0c276bb35a05ead2a5e2533e2a67cb80c7671aef555fd818893ead3a7b0fbcbec75ebbdb64 +Description: Intel® oneAPI Threading Building Blocks Development Package for IA-32 + + +Package: intel-oneapi-tensorflow +Architecture: amd64 +Version: 2.10.0.0-31758 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1010386 +Provides: intel-oneapi-tensorflow +Depends: intel-oneapi-condaindex (>= 2023.0.0-25326), intel-oneapi-python (>= 2023.0.0-25636), intel-oneapi-mpi-devel-2021.8.0, intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing-2023.0.0 +Filename: pool/main/intel-oneapi-tensorflow-2.10.0.0-31758_amd64.deb +Size: 1031785412 +MD5sum: d59bb068ae940526b56684f135229f7d +SHA1: e330652686f97b287f2e53d6eb85606c6fd53744 +SHA256: eb021c5a324db1c9ab98f181bce0b6433f9f6ede03fd4ad8281da8e2195d8354 +SHA512: b42d549a3ed204cdacabebb96f794b8e8713e3f81d50ef8aa01867fccfd47391b932742989c5bb7abe6b0953773feff769196f15e007d9cdf0496c2ea6a19050 +Description: Intel® Optimization for TensorFlow* + + +Package: intel-oneapi-tensorflow +Architecture: amd64 +Version: 2.2.0-219 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 317267 +Provides: intel-oneapi-tensorflow +Depends: intel-oneapi-condaindex, intel-oneapi-python, intel-oneapi-mpi-devel,intel-oneapi-common-vars,intel-oneapi-common-licensing +Filename: pool/main/intel-oneapi-tensorflow-2.2.0-219_amd64.deb +Size: 323308798 +MD5sum: 54c10aea8bf03d042020904577727fa7 +SHA1: 6b3b6599c5c313b76df8000d54ca92f005b87063 +SHA256: 5d6c41ba78c8adfd6c469098aa4dc0af8499d69013bd448aaa6ca097d4f304ba +SHA512: bb9efcc245dd695139f43603b4e493ba89a9332f19175a08f4275e5372e6e56b38a410b6e8defbff0d2a91e3f28659f61de5103a06d98ade1de80532c9f34a79 +Description: Intel® Optimization for TensorFlow* + + +Package: intel-oneapi-tensorflow +Architecture: amd64 +Version: 2.3.0-365 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 353668 +Provides: intel-oneapi-tensorflow +Depends: intel-oneapi-condaindex (>= 2021.2.0-94), intel-oneapi-python (>= 2021.2.0-161), intel-oneapi-mpi-devel-2021.2.0, intel-oneapi-common-vars (>= 2021.2.0-195), intel-oneapi-common-licensing-2021.2.0 +Filename: pool/main/intel-oneapi-tensorflow-2.3.0-365_amd64.deb +Size: 360418772 +MD5sum: eccf790973ec13f62e199be4789610d9 +SHA1: 1dd065d0ea3306caee21776cb36adbae3f8fa8de +SHA256: 6054209eeecc03cd0f3ae135303aa4a26054099db8f9cf15483bc2390ebb995f +SHA512: f6f4b93bb754930387e4f70c92fbc368460d46ab592b7ee672c2b5f2176509d540663be96bac3c7fa201f5593f5ceb6786fd7f86881e6cfb4058bda880a4858b +Description: Intel® Optimization for TensorFlow* + + +Package: intel-oneapi-tensorflow +Architecture: amd64 +Version: 2.5.0-563 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 207586 +Provides: intel-oneapi-tensorflow +Depends: intel-oneapi-condaindex (>= 2021.3.0-159), intel-oneapi-python (>= 2021.3.0-3209), intel-oneapi-mpi-devel-2021.3.0, intel-oneapi-common-vars (>= 2021.3.0-261), intel-oneapi-common-licensing-2021.3.0 +Filename: pool/main/intel-oneapi-tensorflow-2.5.0-563_amd64.deb +Size: 211998662 +MD5sum: 99ea55279a6d3916a2aa422613f3603e +SHA1: f7588dbcad551978e05a2b74fc76b79d27a9d1d9 +SHA256: eebaea6cc8423701eb0b00865e6dd5e03d92a7e2eae6c2e3bb00d37434d9ab6b +SHA512: 387d4e9bcd1b1ff6ae94407d8469d7a81443e7e895d5332c9131634ea2895d56f6cf3b8765974421f5e38124aa9897727e1993bb64123f395a669b8271ae3349 +Description: Intel® Optimization for TensorFlow* + + +Package: intel-oneapi-tensorflow +Architecture: amd64 +Version: 2.5.0-736 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 207586 +Provides: intel-oneapi-tensorflow +Depends: intel-oneapi-condaindex (>= 2021.4.0-207), intel-oneapi-python (>= 2021.4.0-3353), intel-oneapi-mpi-devel-2021.4.0, intel-oneapi-common-vars (>= 2021.4.0-327), intel-oneapi-common-licensing-2021.4.0 +Filename: pool/main/intel-oneapi-tensorflow-2.5.0-736_amd64.deb +Size: 211998780 +MD5sum: 7e4d68eb1076e6f01e2c776c02ac4ab0 +SHA1: 1c80e712abd930ad2914bf7f36025ee3b1e4ff95 +SHA256: 266ecb8168b12f596dbcab4587560922e69122bc906e927d7adcb686eea6718e +SHA512: 560444d26043d5528a1b4504f365812c0f4c9603d251874c3e77378586898a7bd930c2c0efd958b83a3ee8cd2618c0e7fcc0c6e0ffa14239ceec985246e15fb6 +Description: Intel® Optimization for TensorFlow* + + +Package: intel-oneapi-tensorflow +Architecture: amd64 +Version: 2.6.0-101 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 246801 +Provides: intel-oneapi-tensorflow +Depends: intel-oneapi-condaindex (>= 2022.0.0-74), intel-oneapi-python (>= 2022.0.1-127), intel-oneapi-mpi-devel-2021.5.0, intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-tensorflow-2.6.0-101_amd64.deb +Size: 251955354 +MD5sum: d6599c03ee1a1f406792b8bb6de9a8cd +SHA1: 9493e90df8db9bf2eee9c529964c999d5009ed27 +SHA256: 12f46e47def5cb2adeb1fc55ae00dac0a3b503d311878c2665d497ed9a1a62c3 +SHA512: fef817086dadcee66ec6d138dc6083291b8808d7b21fc836359df1634a1f52c1c639b2d9d2e7425f382bf77d0329be81ae5027dc8b9279f6cc1b5a24d2deacf8 +Description: Intel® Optimization for TensorFlow* + + +Package: intel-oneapi-tensorflow +Architecture: amd64 +Version: 2.6.0-128 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 246801 +Provides: intel-oneapi-tensorflow +Depends: intel-oneapi-condaindex (>= 2022.0.0-74), intel-oneapi-python (>= 2022.0.2-155), intel-oneapi-mpi-devel-2021.5.1, intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-tensorflow-2.6.0-128_amd64.deb +Size: 251955272 +MD5sum: 327322fc0843391785de6c7442cd4d69 +SHA1: 268eb4272bf588146cbd5a6233cb343310358f54 +SHA256: 75a1a1435465848b733ba4f6a951d6c907c4ffdab0e84923736834c6e876e11c +SHA512: 96ce23161f9e6a8fd7e1ed188fd1e236109e7ac43b13c1ac2ca8ef94536ec09dac6b8ef364a82586c5b4aed266bfbda85ada940805584170a40766393327b2be +Description: Intel® Optimization for TensorFlow* + + +Package: intel-oneapi-tensorflow +Architecture: amd64 +Version: 2.8.0-243 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 283196 +Provides: intel-oneapi-tensorflow +Depends: intel-oneapi-condaindex (>= 2022.1.0-155), intel-oneapi-python (>= 2022.1.0-214), intel-oneapi-mpi-devel-2021.6.0, intel-oneapi-common-vars (>= 2022.1.0-161), intel-oneapi-common-licensing-2022.1.0 +Filename: pool/main/intel-oneapi-tensorflow-2.8.0-243_amd64.deb +Size: 289072982 +MD5sum: 2026d6204b366ffedd92de5bc677a454 +SHA1: 26a92b1212da05e80cf1e1f519b41d56ce545beb +SHA256: 3a9a761a5069544d583586ff52b764fd1ebd43ca5e2ec139d161e62f06bbb8b1 +SHA512: 0f8aed1193632b39ba3e1bc1e3f588275ae2ce68b12abe4dd689ade8d4125e2e7fb66dfbc1d1d39deb0ef93554a635b518f04941429736a7f7cc62718e99b15c +Description: Intel® Optimization for TensorFlow* + + +Package: intel-oneapi-tensorflow +Architecture: amd64 +Version: 2.9.1.0-20877 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 321113 +Provides: intel-oneapi-tensorflow +Depends: intel-oneapi-condaindex (>= 2022.2.1-14970), intel-oneapi-python (>= 2022.2.1-17274), intel-oneapi-mpi-devel-2021.7.1, intel-oneapi-common-vars (>= 2022.2.1-14969), intel-oneapi-common-licensing-2022.2.1 +Filename: pool/main/intel-oneapi-tensorflow-2.9.1.0-20877_amd64.deb +Size: 327770138 +MD5sum: 936eb74c194729a643ea42919b0cf534 +SHA1: afce9c2cb0ef38dd1eecfc09c165e7e8e2fe1f80 +SHA256: f93a7ba26bbb66fbba1682366bde4cecb444b15fc076cccc7a59f12ebd5ba418 +SHA512: c93be9b953065f13a36b8020a94ef78329062137cbb626919f982db02c5a8fff86524525ea99519b408eeefe22d88bf69968c19bfa91c1f1bd4a0f2110bc5f3e +Description: Intel® Optimization for TensorFlow* + + +Package: intel-oneapi-tensorflow +Architecture: amd64 +Version: 2.9.1.0-8766 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 331867 +Provides: intel-oneapi-tensorflow +Depends: intel-oneapi-condaindex (>= 2022.2.0-8695), intel-oneapi-python (>= 2022.2.0-8762), intel-oneapi-mpi-devel-2021.7.0, intel-oneapi-common-vars (>= 2022.2.0-8694), intel-oneapi-common-licensing-2022.2.0 +Filename: pool/main/intel-oneapi-tensorflow-2.9.1.0-8766_amd64.deb +Size: 338755946 +MD5sum: ea67ec56b2314091f1033acb0f139b19 +SHA1: 2e48288f56a0c3172847e1521ee9d504415493a2 +SHA256: 4d3098afafeaa77162e8bd5db5667465258086f7a24dcc29479bde8d98f180a9 +SHA512: 0e83cdea0418bb0dc0f320acfb5397e5511b9c7fe4c00ea034b3db7d3c14dfc3d5ba290c78fb0b20207ead9c1acbc87a51b414ec25668291171517f67986a26b +Description: Intel® Optimization for TensorFlow* + + +Package: intel-oneapi-tensorflow +Architecture: amd64 +Version: 2.9.1.1-25852 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 320225 +Provides: intel-oneapi-tensorflow +Depends: intel-oneapi-condaindex (>= 2023.0.0-25326), intel-oneapi-python (>= 2023.0.0-25636), intel-oneapi-mpi-devel-2021.8.0, intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing-2023.0.0 +Filename: pool/main/intel-oneapi-tensorflow-2.9.1.1-25852_amd64.deb +Size: 326851630 +MD5sum: 312c8e47a265654aa4bb3b78231d561e +SHA1: 0bb12dbdccf76464378c333b431c58cd5d7f3fe9 +SHA256: 441eb2c03882c8455bb7de971491eefed2fd53ea73f8892f1ba391fb2374c5e6 +SHA512: 375311a736dadb44f976b35485e453f4f85da3dc9c86a97738c59b60c255c761f5858206b20cf643eb5e1b4b8403e0151239ff612cbc7deae78b231fd73fbd02 +Description: Intel® Optimization for TensorFlow* + + +Package: intel-oneapi-vtune +Architecture: amd64 +Version: 2021.1.1-61 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1329054 +Depends: intel-oneapi-common-vars (>= 2021.1.1-60), intel-oneapi-common-licensing-2021.1.1,intel-oneapi-common-vars,intel-oneapi-common-licensing +Filename: pool/main/intel-oneapi-vtune-2021.1.1-61_amd64.deb +Size: 410943042 +MD5sum: 14ecf414ac5b7df9043c97e6b42e619e +SHA1: 3d91a8fda228a41f96983bc9cfa00f48a7e3eb9e +SHA256: bc45b96215f9e48d0649f71468353afcc57202fb7e96d75e0a9ab6972a0dd6cb +SHA512: 8b188b16317d28906ffa37cff5081acac0a774e9504df0bc0222e17f7a8b1f1f29fabc4aee3a2a2fd1b2ac1b45074b2312fb99c380bacbd6410b65449cacdfdd +Description: Intel® VTune(TM) Profiler + + +Package: intel-oneapi-vtune +Architecture: amd64 +Version: 2021.1.2-150 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1329052 +Depends: intel-oneapi-common-vars (>= 2021.1.1-60), intel-oneapi-common-licensing-2021.1.1,intel-oneapi-common-vars,intel-oneapi-common-licensing +Filename: pool/main/intel-oneapi-vtune-2021.1.2-150_amd64.deb +Size: 410967322 +MD5sum: 4f7b37449673a16077ff4fbf094742aa +SHA1: f88549e83a3cf1626b4640abe5f67a3cb054bddf +SHA256: 28ea0da4246f5e7e758e90c5163db3459aaaa104abde1cf9a3290b181c3ddd77 +SHA512: 9301c61df045996a091a38a605d7b9a077f805250ba41f57fdc38053b8d7d1454ab655f40214a646ce884a125601752151f1afd423175f4da44b2528c2370e61 +Description: Intel® VTune(TM) Profiler + + +Package: intel-oneapi-vtune +Architecture: amd64 +Version: 2021.2.0-263 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1481311 +Depends: intel-oneapi-common-vars (>= 2021.2.0-195), intel-oneapi-common-licensing-2021.2.0 +Filename: pool/main/intel-oneapi-vtune-2021.2.0-263_amd64.deb +Size: 457023276 +MD5sum: 9817baa3f31d31b821cb495a5327ea61 +SHA1: a694ca4b9c66c82983a47d97e4d76535e23fd731 +SHA256: 0d1c852064eb1c1669b697cd7064f2de67f9ec02a58ad5073a78e1843a0b320f +SHA512: b819ab4a27bd36b5f3d4eae657839912fcbd345d0ab7ada14909ac6c6446be1fbb4ea90bcbf4b98de55c849227d5b5000b6af337aa32249c434adb2d7193da0b +Description: Intel® VTune(TM) Profiler + + +Package: intel-oneapi-vtune +Architecture: amd64 +Version: 2021.3.0-323 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1470995 +Depends: intel-oneapi-common-vars (>= 2021.2.0-195), intel-oneapi-common-licensing-2021.2.0 +Filename: pool/main/intel-oneapi-vtune-2021.3.0-323_amd64.deb +Size: 450285102 +MD5sum: fa5bed9a07bfccd6119549143394bfef +SHA1: aba05c97c3353bcc1f9bec112c928000815dd41e +SHA256: b91bff99cdf07da7b489d6377b31710a5cea140617fbaecea2993ee9501868e1 +SHA512: 20384015db8e8e81e586fcf1b89ce68a4413ce01fdf640eab42c258884ac5b2b4eb415a23fc3df88c33c5141830f9593b32f055b9108d18036967822065ccf0c +Description: Intel® VTune(TM) Profiler + + +Package: intel-oneapi-vtune +Architecture: amd64 +Version: 2021.4.0-364 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1470829 +Depends: intel-oneapi-common-vars (>= 2021.2.0-195), intel-oneapi-common-licensing-2021.2.0 +Filename: pool/main/intel-oneapi-vtune-2021.4.0-364_amd64.deb +Size: 447972958 +MD5sum: 01a3b204d74efa3d955d6049f6653804 +SHA1: 9fc4c9741ed8bb3b7bfc9a0457d4e47533c08edd +SHA256: b0cc8fe6d4bc05f030aa1347e85ea3eac09eacf4eeb948bab891d0eb328d6f66 +SHA512: de110d1d68dfeb67ce7e36c47535ce3b3cb0c40b82729ca95228c1ff556047de5039deee6b6e1a3996e6f255ce74b1b066bcd99bde22cd480f3f15e86f2cadd6 +Description: Intel® VTune(TM) Profiler + + +Package: intel-oneapi-vtune +Architecture: amd64 +Version: 2021.5.0-381 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1484125 +Depends: intel-oneapi-common-vars (>= 2021.3.0-261), intel-oneapi-common-licensing-2021.3.0 +Filename: pool/main/intel-oneapi-vtune-2021.5.0-381_amd64.deb +Size: 453828934 +MD5sum: c67c4b086e9482631c0c9ddbd04cd170 +SHA1: 0aa829c7666c2745044fea79ea4ae9664f69ede1 +SHA256: e5e787924fcf28cc047cba92a3daed668990c38f91bed39662b21044ef8a6dbf +SHA512: 6e273102ddfa9bead9b05ea3848d3df3afbbf8040ee945c2910882c81c61d9c1fd9758be324adc9b648c7fc6b7b3242aabcd66e3fac58a1691cc24355c83b053 +Description: Intel® VTune(TM) Profiler + + +Package: intel-oneapi-vtune +Architecture: amd64 +Version: 2021.6.0-411 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1486242 +Depends: intel-oneapi-common-vars (>= 2021.3.0-261), intel-oneapi-common-licensing-2021.3.0 +Filename: pool/main/intel-oneapi-vtune-2021.6.0-411_amd64.deb +Size: 454504166 +MD5sum: e940a45c18ead05198fefaa362225ee9 +SHA1: 0c2b6cadc623c249f0d282ca9aae0fa1a8803e5d +SHA256: eafee6c1ca0ea813515fe294ce008ef7e4825c4e0ad50d07084f941388d5fd88 +SHA512: 8bcbc8ec9b278083fb6f906ff848ad5c571c58ca83b8de1a4ab6b929a321418eea362c89ff530c44fe95b485735938ca6f5e098b1e028663e4339c9d91dda913 +Description: Intel® VTune(TM) Profiler + + +Package: intel-oneapi-vtune +Architecture: amd64 +Version: 2021.7.0-479 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1491941 +Depends: intel-oneapi-common-vars (>= 2021.3.0-261), intel-oneapi-common-licensing-2021.3.0 +Filename: pool/main/intel-oneapi-vtune-2021.7.0-479_amd64.deb +Size: 456222130 +MD5sum: 8e3e21777172642e5b571e282262dabe +SHA1: 351f39f040cdc8a968821e2d103c063ae166564c +SHA256: 5e94084757f0aab315e7050918aec6c9081e5c18b1a5305b11edf8d77e33c878 +SHA512: 89fa08cd7c3e7112403c4bb1c4f1aec461f2f8a51990c4e1eb2fb4b706c28853ca4e8cbbb5b7853bd67f97788daae88e114751d9010db891b4c383bf48b782ec +Description: Intel® VTune(TM) Profiler + + +Package: intel-oneapi-vtune +Architecture: amd64 +Version: 2021.7.1-492 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1492007 +Depends: intel-oneapi-common-vars (>= 2021.3.0-261), intel-oneapi-common-licensing-2021.3.0 +Filename: pool/main/intel-oneapi-vtune-2021.7.1-492_amd64.deb +Size: 456205108 +MD5sum: 5aeebef6bda3236fad7ac989723e6759 +SHA1: d4d065ce45d96cd891212ff0bddf7060cc3f2e50 +SHA256: ccae1dcd82a818fdf4f7828cd1e8963ca2330b55d764e950f2addea54a50065d +SHA512: fa2f1e03984b0588c8433ad39dce42a22fa95b1f34d77ef7cfbc1c9c00652b7e169264e80f3b4ef2f7be401a0c0cf33062c46e6984f4bacb200d5682a5f7d177 +Description: Intel® VTune(TM) Profiler + + +Package: intel-oneapi-vtune +Architecture: amd64 +Version: 2021.8.0-533 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1274491 +Depends: intel-oneapi-common-vars (>= 2021.4.0-327), intel-oneapi-common-licensing-2021.4.0 +Filename: pool/main/intel-oneapi-vtune-2021.8.0-533_amd64.deb +Size: 401728350 +MD5sum: c503b7716f41cdf73d4ddc182e80a230 +SHA1: 0d4c45b9286afda156bd2e96716a2d030da041f5 +SHA256: a5cedfee28a2c1c4b78a0a61eeb7d0924cba3f5e15489cb9de6517da0e8b9f9e +SHA512: 99818730a789d3f05b50bc2f525505ead7c9a5e6980dc21768e5204f270013aeba9d9cc448ec5cb74b717c9a97828337773de606dd9048e137d4373783d08ae7 +Description: Intel® VTune(TM) Profiler + + +Package: intel-oneapi-vtune +Architecture: amd64 +Version: 2021.9.0-545 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1313403 +Depends: intel-oneapi-common-vars (>= 2021.4.0-327), intel-oneapi-common-licensing-2021.4.0 +Filename: pool/main/intel-oneapi-vtune-2021.9.0-545_amd64.deb +Size: 413096932 +MD5sum: 1232e6d935644c36bf57aad494a47042 +SHA1: 49cbf5c7a0ee31800b4454e6d9259635bcd2b368 +SHA256: d00c7680324eb62bead44baafad9727ba04c5c90ad85bdd65bebaa1ef163dd1e +SHA512: db0871c352e3eb5c0261b38b9443cc965882bca9b0f4d94bdc6453e85e8dba9553c724ac1244e453faa9a1552da7b9b54e8d536c0c784c0d7aab67296beafc1c +Description: Intel® VTune(TM) Profiler + + +Package: intel-oneapi-vtune +Architecture: amd64 +Version: 2022.0.0-94 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1313465 +Depends: intel-oneapi-vtune-eclipse-plugin-vtune, intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-vtune-2022.0.0-94_amd64.deb +Size: 413130036 +MD5sum: 5ab515da1e898d8266788a1db9682f3e +SHA1: ce5ee9ba0dfe866cc8d49f60e60060c6261a1ba9 +SHA256: f91a5937c9e50df7f41a1f1cb662ba40cf0a4efdf5135011619b2e45d6b2cf84 +SHA512: 7a704a3df2fcd13f658d49f14c964e1c117fc95668c65884479357f4111121011e38bd9445c76defdc4e96798b0fa5042539ffcfd34f4f5ed1c1a892ff3fa6be +Description: Intel® VTune(TM) Profiler + + +Package: intel-oneapi-vtune +Architecture: amd64 +Version: 2022.1.0-98 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1331976 +Depends: intel-oneapi-vtune-eclipse-plugin-vtune, intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 +Filename: pool/main/intel-oneapi-vtune-2022.1.0-98_amd64.deb +Size: 415106610 +MD5sum: b3d4fd85c0bfd6c7cadc67246acff657 +SHA1: bc304646d0f595976d25861b37a807d50f17c598 +SHA256: 4e91aa1e233ecf62208941e367386733715d63e269fcec789fb9cf7ceb51fafe +SHA512: c6288861f083edde68fbaad9c4d6471e718127b950f4a1d0f43866be3e184077feaa405ec7d21d9c0f9153986ae9435b28692f4663ef8ed20fb0387b04016bf4 +Description: Intel® VTune(TM) Profiler + + +Package: intel-oneapi-vtune +Architecture: amd64 +Version: 2022.2.0-172 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1446740 +Depends: intel-oneapi-vtune-eclipse-plugin-vtune, intel-oneapi-common-vars (>= 2022.0.1-139), intel-oneapi-common-licensing-2022.0.1 +Filename: pool/main/intel-oneapi-vtune-2022.2.0-172_amd64.deb +Size: 503454046 +MD5sum: fa997c24080b8d5381c91ba1e792a99e +SHA1: 0f650796994186ce6f3bcbc3b12ff4019be1baad +SHA256: b9cfe2ecbe8150c76b4c19f23774672841b7d1e62b63c4cad3c0415f6e89307c +SHA512: df8f593a9311b3a3f523412e2f54ebd76111682517b706fee94da8f6906ca2b7b25067a6270a029fb6bcad05ae4006b1963bf1fdd6b4b20c07e3010504939015 +Description: Intel® VTune(TM) Profiler + + +Package: intel-oneapi-vtune +Architecture: amd64 +Version: 2022.3.0-195 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1447432 +Depends: intel-oneapi-vtune-eclipse-plugin-vtune, intel-oneapi-common-vars (>= 2022.0.1-140), intel-oneapi-common-licensing-2022.0.1 +Filename: pool/main/intel-oneapi-vtune-2022.3.0-195_amd64.deb +Size: 502050852 +MD5sum: 2c65313e1cb79c49ebf5f9fc3dc50fed +SHA1: 9c957d252333c497c56e50ec792df2bb9a646705 +SHA256: c7563fb6813f28c22a9a071d24d2f5618b24c4ea1769f5be31d7dadbe0f65474 +SHA512: b7ba77c99e68943c3b91ebeae447ba2f5bf72bf98f41978ffcac77f8c4de1ec1b4fa5dabca771d64e06da7c46727544d2398441df4cc0ab1a6a48b0e9a88f17e +Description: Intel® VTune(TM) Profiler + + +Package: intel-oneapi-vtune +Architecture: amd64 +Version: 2022.4.0-8705 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1420479 +Depends: intel-oneapi-vtune-eclipse-plugin-vtune, intel-oneapi-common-vars (>= 2022.2.0-8694), intel-oneapi-common-licensing-2022.2.0 +Filename: pool/main/intel-oneapi-vtune-2022.4.0-8705_amd64.deb +Size: 463552434 +MD5sum: 2900e033ee4b7d93c0899200d978cdab +SHA1: 5a34281e9e0cc7f9f27583d60fb872be2a9a91af +SHA256: dacd24c4459fec0213011754f97a671c91a878dd1de5f46762771ce02e10a81f +SHA512: 864b4d2b53e4feac6f5e91a6870de1ca0527bb7d4164ab6a59269761ac0e0b91cb4fb6f8274c9242577fc413fef5069f01f43660974a1a77d176d2a3ab2a46d8 +Description: Intel® VTune(TM) Profiler + + +Package: intel-oneapi-vtune +Architecture: amd64 +Version: 2022.4.1-16919 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1441287 +Depends: intel-oneapi-vtune-eclipse-plugin-vtune, intel-oneapi-common-vars (>= 2022.2.1-14969), intel-oneapi-common-licensing-2022.2.1 +Filename: pool/main/intel-oneapi-vtune-2022.4.1-16919_amd64.deb +Size: 467164934 +MD5sum: 60ae97b0d32b995fca6f84d50aad8e13 +SHA1: cfc6aef2fdc94dcf4b1c1ac4e093aa78de1e6af1 +SHA256: 207dfedb24e3fbdb7966276519fd4c51e34bf5005859caa6cced2214aded2301 +SHA512: 0b54c5c25499ebef2f47e28189c152aa9d3b8c2c2b7ee65a04e87be426d867e6905c6e8f48b36d49abf4ff7f26033f20386344f23b753f1e7e3c2bc0519cf5c1 +Description: Intel® VTune(TM) Profiler + + +Package: intel-oneapi-vtune +Architecture: amd64 +Version: 2023.0.0-25339 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1457374 +Depends: intel-oneapi-vtune-eclipse-plugin-vtune, intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing-2023.0.0 +Filename: pool/main/intel-oneapi-vtune-2023.0.0-25339_amd64.deb +Size: 468035126 +MD5sum: d52d958a311b920f31fed6eb3a17e8d9 +SHA1: c12c3ff23e8b95c06a710d753ea1cc4b62209792 +SHA256: af2bb8663c9eff076957cb2ffe0ec8757b846b36d534d90474d9f54afc5833ff +SHA512: fd647ada841f487847354103f298828657419a2f5e277bd38b10737f10bc84e78e8231f44c05426f27c59e19295092958c9434ff897a1aedb735929e17c48b76 +Description: Intel® VTune(TM) Profiler + + +Package: intel-oneapi-vtune +Architecture: amd64 +Version: 2023.1.0-44286 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1531084 +Depends: intel-oneapi-vtune-eclipse-plugin-vtune, intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing-2023.1.0 +Filename: pool/main/intel-oneapi-vtune-2023.1.0-44286_amd64.deb +Size: 524424218 +MD5sum: 49e9498d23bf3522232d242e75b736d7 +SHA1: 504478bc020f07becd1b0df8c6d69922a7555c97 +SHA256: 770d9503d07411d94a45c8e0cf320e1b38d22e12ec3c39a769cc138008f2144a +SHA512: 7c2f301d7e9f8cab14fe7c7004d3b8befa2878d0e5ebdd98e754611d11b892b7645832d5334f0b02ea946d7b4c52e4fd1cdbc7c0415528497d231c32571a5f25 +Description: Intel® VTune(TM) Profiler + + +Package: intel-renderkit-2021.1.0 +Architecture: amd64 +Version: 2021.1.0-627 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-renderkit-getting-started (>= 2021.1.0-627), intel-oneapi-common-vars (>= 2021.1.1-60), intel-oneapi-common-licensing-2021.1.1 , intel-oneapi-embree-3.12.0 , intel-oneapi-ospray-studio-0.5.0 , intel-oneapi-rkutil-1.0.0 +Filename: pool/main/intel-renderkit-2021.1.0-2021.1.0-627_amd64.deb +Size: 1934 +MD5sum: 4eb523a9a5afb39058291b8ee0572a68 +SHA1: 0e95efa6a9d623f12f442936e941dd2e4eb04b9d +SHA256: 883570de54e03d5db804cbed68afa4f0f83aeecdbe034895666327558dc075dd +SHA512: 2ee81e72257c488b2a518c9c2bdb46c2ea9ea1850a69b24033bdba29ea4d5b9b4db07f03012b3e01dfdaa9da8445d21014351743ccbfa00d2beaa904add09f39 +Description: Intel® oneAPI Rendering Toolkit + + +Package: intel-renderkit +Architecture: amd64 +Version: 2021.1.0-627 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-renderkit-getting-started (>= 2021.1.0-627), intel-oneapi-common-vars (>= 2021.1.1-60), intel-oneapi-common-licensing (>= 2021.1.1-60), intel-oneapi-embree (>= 3.12.0-91), intel-oneapi-ospray-studio (>= 0.5.0-84), intel-oneapi-rkutil (>= 1.0.0-76) +Filename: pool/main/intel-renderkit-2021.1.0-627_amd64.deb +Size: 1940 +MD5sum: b16f6cb22833920c0d373f58c16e22a3 +SHA1: 2c972e5b57477c776f8ee27f863669638d3daeb0 +SHA256: fda1929c7dc3cd7ddd685235c8cb30a5856ff369f186802582d8c244524a63cb +SHA512: 3c398d736ca7cf744e5f2fc83fa3a610bf86df81d3b42d6472b6c00f4fc5fe6ba78feab917d0b96f50d8fdd6d2e779ca70d0c0b08c1b5132438dd67d3afd81e0 +Description: Intel® oneAPI Rendering Toolkit + + +Package: intel-renderkit-2021.2.0 +Architecture: amd64 +Version: 2021.2.0-739 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-renderkit-getting-started (>= 2021.2.0-739), intel-oneapi-common-vars (>= 2021.2.0-195), intel-oneapi-common-licensing-2021.2.0 , intel-oneapi-rkutil-1.1.0 , intel-oneapi-ospray-studio-0.6.0 , intel-oneapi-embree-3.12.2 +Filename: pool/main/intel-renderkit-2021.2.0-2021.2.0-739_amd64.deb +Size: 1932 +MD5sum: 0ea6e731854b0f0bad7b7ddcfde3c07e +SHA1: b9763dad4d91ae33929437dd014c957dc40d33dc +SHA256: c35ee6c14f14d977f5781a349fa3f7fb8d638bae2bea2f1d6be26b4d8749722e +SHA512: 01a71e02728b9859f5551de780dd68eb743cf80d248fe5a993c70001c6e7d88dc698799545ce69b9aa937883c4954aa728f8b7eaff57f73c3794298b770c14d0 +Description: Intel® oneAPI Rendering Toolkit + + +Package: intel-renderkit +Architecture: amd64 +Version: 2021.2.0-739 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-renderkit-getting-started (>= 2021.2.0-739), intel-oneapi-common-vars (>= 2021.2.0-195), intel-oneapi-common-licensing (>= 2021.2.0-195), intel-oneapi-rkutil (>= 1.1.0-84), intel-oneapi-ospray-studio (>= 0.6.0-108), intel-oneapi-embree (>= 3.12.2-123) +Filename: pool/main/intel-renderkit-2021.2.0-739_amd64.deb +Size: 1940 +MD5sum: fd23aad1141a03cc56ce92d998d66f59 +SHA1: e06569cd48269d04f7e3554ec835671fa20a358b +SHA256: 9b48ed5b19da06e8d0b9b2cf468679fbcb4c81bd8b50c716d74981f6c3c152ef +SHA512: f06991d921e43f57f73770e9c4b19e404d2813710b888ab0315549f1bfed955b3faf41ef88bb66788594ff7f12938d657908dc23afa29cdd145ef5c523a3ec65 +Description: Intel® oneAPI Rendering Toolkit + + +Package: intel-renderkit-2021.3.0 +Architecture: amd64 +Version: 2021.3.0-807 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-renderkit-getting-started (>= 2021.3.0-807), intel-oneapi-embree-3.13.0 , intel-oneapi-common-vars (>= 2021.3.0-261), intel-oneapi-common-licensing-2021.3.0 , intel-oneapi-rkutil-1.2.0 , intel-oneapi-ospray-studio-0.7.0 +Filename: pool/main/intel-renderkit-2021.3.0-2021.3.0-807_amd64.deb +Size: 1934 +MD5sum: 0c44690dc4153b5e0c92362b1181752c +SHA1: b73ca8a92a9a7ab56de8d5e09e15024af880c4f1 +SHA256: 2a63edad474dece99226181393b169604e453b79bfc9fc00715d1b6c8cf5fcd4 +SHA512: 3d9787d07ec997a94813b4dcc0a52a40b593ff18ea2fe63d8bde73753937b88ef52d110c9aa602e252354cdc84d1e9f8fa794fdf117852215cc29c8fa0f94fa2 +Description: Intel® oneAPI Rendering Toolkit + + +Package: intel-renderkit +Architecture: amd64 +Version: 2021.3.0-807 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-renderkit-getting-started (>= 2021.3.0-807), intel-oneapi-embree (>= 3.13.0-257), intel-oneapi-common-vars (>= 2021.3.0-261), intel-oneapi-common-licensing (>= 2021.3.0-261), intel-oneapi-rkutil (>= 1.2.0-47), intel-oneapi-ospray-studio (>= 0.7.0-65) +Filename: pool/main/intel-renderkit-2021.3.0-807_amd64.deb +Size: 1940 +MD5sum: 80d5bd4d2e613bc2f44e5f3a294ca52a +SHA1: 1ad56204953683cdca1111dfad0c368375a24bdb +SHA256: f8a8a88971dd02e7839847092e20b7bb36a92dd0bd734e2f5cd03395120362f8 +SHA512: ba77425c6e4f976411fd3f4e0f06935228cf67ab8d08c8f03a4ac9c4a37302e0d35f6a626426a236c744245bcb29fd8adc3bddafefbce6592243f02b2e5f8ae5 +Description: Intel® oneAPI Rendering Toolkit + + +Package: intel-renderkit-2021.4.0 +Architecture: amd64 +Version: 2021.4.0-845 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-renderkit-getting-started (>= 2021.4.0-845), intel-oneapi-common-vars (>= 2021.4.0-327), intel-oneapi-common-licensing-2021.4.0 , intel-oneapi-embree-3.13.1 , intel-oneapi-ospray-studio-0.8.0 , intel-oneapi-rkutil-1.3.0 +Filename: pool/main/intel-renderkit-2021.4.0-2021.4.0-845_amd64.deb +Size: 1936 +MD5sum: 4d0ac21d0eeae3866a179aa256a1e49a +SHA1: beb021dfdeeb17afaba9192e24ac06bdd13c6e7b +SHA256: 197283a102b76df8f56b87adcb24f1d8f87a1b052fb14702896c37c12f80e079 +SHA512: b393bc16c1c04f3c256305088652772f3d46cf2e00966c6b1346cf0a3c0facc9a8e76ed36c86d4bf9ad5a872a3cdc9238ef143ade12fe76d846960ca349d04e8 +Description: Intel® oneAPI Rendering Toolkit + + +Package: intel-renderkit +Architecture: amd64 +Version: 2021.4.0-845 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-renderkit-getting-started (>= 2021.4.0-845), intel-oneapi-common-vars (>= 2021.4.0-327), intel-oneapi-common-licensing (>= 2021.4.0-327), intel-oneapi-embree (>= 3.13.1-297), intel-oneapi-ospray-studio (>= 0.8.0-19), intel-oneapi-rkutil (>= 1.3.0-18) +Filename: pool/main/intel-renderkit-2021.4.0-845_amd64.deb +Size: 1940 +MD5sum: 9506f226d1c958725a1e3b84ccf20b2b +SHA1: d2d836b99b0acafede7a2d7f26aff8c72e30a242 +SHA256: abb37eef95c93191b17a762f4499fed3eaaaf8d7a14f7026d1c0d4aadc8e828e +SHA512: 4a8f957105f97887aea6bdd804635b9521422dfcdd8cb3d5d910b8f0ad11bfefaf49c86af3c2bdb1f9a316877cf55f8f0c9cc7cb1dae76798be7037559a18c54 +Description: Intel® oneAPI Rendering Toolkit + + +Package: intel-renderkit-2022.1.0 +Architecture: amd64 +Version: 2022.1.0-74 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-renderkit-getting-started (>= 2022.1.0-74), intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 , intel-oneapi-rkutil-1.4.0 , intel-oneapi-embree-3.13.2 , intel-oneapi-ospray-studio-0.9.0 , intel-oneapi-ispc-1.16.1 +Filename: pool/main/intel-renderkit-2022.1.0-2022.1.0-74_amd64.deb +Size: 1944 +MD5sum: f4f9a681fe795e9f1eadd77addd7f708 +SHA1: 2926f9fd58e2c815e1863e3f5b4b9d4ad5f68a9d +SHA256: 62d5d599874908c60d091c0cf2a05e0d2b1a02f43b35d394ece5d540bb43802f +SHA512: f2d841f4dc63d9f06ebbb72347fe4644eb932aa77e31dd5668cf6bebf9abdd91fff7eb93863cd6d0ebf9e388a082d1d8dfc496b94359d71b3c531cd81b0f821d +Description: Intel® oneAPI Rendering Toolkit + + +Package: intel-renderkit +Architecture: amd64 +Version: 2022.1.0-74 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-renderkit-getting-started (>= 2022.1.0-74), intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing (>= 2022.0.0-59), intel-oneapi-rkutil (>= 1.4.0-67), intel-oneapi-embree (>= 3.13.2-73), intel-oneapi-ospray-studio (>= 0.9.0-64), intel-oneapi-ispc (>= 1.16.1-81) +Filename: pool/main/intel-renderkit-2022.1.0-74_amd64.deb +Size: 1954 +MD5sum: caaecfa6bf1ef9b28da950f6143608c2 +SHA1: 4cdd354f92eaec1442cc9c1f172b0e7862a9b6c3 +SHA256: 0aa270159fa0a1b41c33f060528b73a3d5738af668056b0ced0ae88802fb0a05 +SHA512: 5205bbf7ec1023636cbd84aa9ed3cbe1c7867481eda7266aa0c4e236a158e161156d3f39c1883547f0ebdaa05d97343145aaee71803de3446a43ff9024558ba1 +Description: Intel® oneAPI Rendering Toolkit + + +Package: intel-renderkit +Architecture: amd64 +Version: 2022.2.0-151 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-renderkit-getting-started (>= 2022.2.0-151), intel-oneapi-common-vars (>= 2022.1.0-161), intel-oneapi-common-licensing (>= 2022.1.0-161), intel-oneapi-embree (>= 3.13.3-360), intel-oneapi-ospray-studio (>= 0.10.0-125), intel-oneapi-ispc (>= 1.17.0-140), intel-oneapi-rkutil (>= 1.5.0-126) +Filename: pool/main/intel-renderkit-2022.2.0-151_amd64.deb +Size: 2032 +MD5sum: 9ed3afb3ea4263e4d486f3a8f46bf252 +SHA1: cb4e46a836dc20568d85db9963849b762876d814 +SHA256: bc14710b340cd8500fc900f89ee31eb1da04f9e57a79db4a51955367f42656f5 +SHA512: 287333f28c9a86dbb0e8c82c2ad4735704173baed42457778949b658be00deb5f87b88e0b341f8ee399bda70fc8f5fd4111280fc7ab15caf1631947ed2e17dcf +Description: Intel® oneAPI Rendering Toolkit + + +Package: intel-renderkit-2022.2.0 +Architecture: amd64 +Version: 2022.2.0-151 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-renderkit-getting-started (>= 2022.2.0-151), intel-oneapi-common-vars (>= 2022.1.0-161), intel-oneapi-common-licensing-2022.1.0 , intel-oneapi-embree-3.13.3 , intel-oneapi-ospray-studio-0.10.0 , intel-oneapi-ispc-1.17.0 , intel-oneapi-rkutil-1.5.0 +Filename: pool/main/intel-renderkit-2022.2.0-2022.2.0-151_amd64.deb +Size: 2028 +MD5sum: a2e452ccd640e272108f0ede975b0226 +SHA1: 55147f8f6a5664f15a914858d69be5b4ebb31a02 +SHA256: f7c643a4e90325e636d0875bf1bb878561a5610416bda170a04a4b873e975c42 +SHA512: 5d56c56fd315969538fd3acaff1804920c065ff4c976d3432b41d2190592d31fe381d10b82154658d1079b17e9a534ea7b9ee16ce917a54e9512a9d2aa81143e +Description: Intel® oneAPI Rendering Toolkit + + +Package: intel-renderkit-2022.3.0 +Architecture: amd64 +Version: 2022.3.0-8742 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-renderkit-getting-started (>= 2022.3.0-8742), intel-oneapi-common-vars (>= 2022.2.0-8694), intel-oneapi-common-licensing-2022.2.0 , intel-oneapi-embree-3.13.4 , intel-oneapi-ospray-studio-0.11.1 , intel-oneapi-ispc-1.18.0 , intel-oneapi-rkutil-1.6.1 +Filename: pool/main/intel-renderkit-2022.3.0-2022.3.0-8742_amd64.deb +Size: 2024 +MD5sum: f6dc8a3236c7c92c8d27441262d2209c +SHA1: efe3dbf89bac8d4833560190f87a1ac8dd81fb93 +SHA256: e65c53bb6a3c23b777da4b2749b4104c0bfbaa75de0da5a69fe8e1f3dc67c706 +SHA512: 8f741c9d87d2572677253e26dbee95844b6c4b2c1615f70cb4263534a819657729a8ea7dd22bffcf3bf31be3df1079e817926bdaf6b6188204ffefea31c4facf +Description: Intel® oneAPI Rendering Toolkit + + +Package: intel-renderkit +Architecture: amd64 +Version: 2022.3.0-8742 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-renderkit-getting-started (>= 2022.3.0-8742), intel-oneapi-common-vars (>= 2022.2.0-8694), intel-oneapi-common-licensing (>= 2022.2.0-8694), intel-oneapi-embree (>= 3.13.4-8730), intel-oneapi-ospray-studio (>= 0.11.1-8738), intel-oneapi-ispc (>= 1.18.0-8709), intel-oneapi-rkutil (>= 1.6.1-8710) +Filename: pool/main/intel-renderkit-2022.3.0-8742_amd64.deb +Size: 2036 +MD5sum: 1acb71d95f986166eceaa0720f5864c7 +SHA1: 9ebb0bbf249d3a978b758b03fcc01ee02ff35622 +SHA256: faae6cf5ccb4123744d62cd00abb5258c186e0e7b834288ec3667814c15b9f66 +SHA512: 57b50293c205d81a6095e3b4c213ed47e264ec43f0aa7f692638bde56ec23d1c5534cf445ac461f7df0a66c988469dfc74719b63c6b5c52e93b9dfbd964b285d +Description: Intel® oneAPI Rendering Toolkit + + +Package: intel-renderkit-2022.3.1 +Architecture: amd64 +Version: 2022.3.1-21169 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-renderkit-getting-started (>= 2022.3.1-21169), intel-oneapi-common-vars (>= 2022.2.1-14969), intel-oneapi-common-licensing-2022.2.1 , intel-oneapi-embree-3.13.5 , intel-oneapi-ospray-studio-0.11.1 , intel-oneapi-ispc-1.18.1 , intel-oneapi-rkutil-1.6.2 +Filename: pool/main/intel-renderkit-2022.3.1-2022.3.1-21169_amd64.deb +Size: 2032 +MD5sum: 909e48a7f09ec314427ea567b8cc8e62 +SHA1: a8b9c64a0341284255e057bde60497d19b07547f +SHA256: c29c46852490bfef21b5c0e34c29c8c0ea2e62df4083af82ab5d325b760d0406 +SHA512: 0b83594f15c4d103f45ce23c4aee5905e9f9879480d64d3b8af43de4978b1117e1f0ca6c2ca59bf675b412fdd50285e9d2ae4c335e2811ddb2c0299ebac40a74 +Description: Intel® oneAPI Rendering Toolkit + + +Package: intel-renderkit +Architecture: amd64 +Version: 2022.3.1-21169 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-renderkit-getting-started (>= 2022.3.1-21169), intel-oneapi-common-vars (>= 2022.2.1-14969), intel-oneapi-common-licensing (>= 2022.2.1-14969), intel-oneapi-embree (>= 3.13.5-21152), intel-oneapi-ospray-studio (>= 0.11.1-21165), intel-oneapi-ispc (>= 1.18.1-21155), intel-oneapi-rkutil (>= 1.6.2-21147) +Filename: pool/main/intel-renderkit-2022.3.1-21169_amd64.deb +Size: 2036 +MD5sum: 3db4680b72a92db6c8c11def2d3e3526 +SHA1: 0fc90d43ee6f67ab427f5011d66fdef5d6b427fc +SHA256: d7e1e0d21c81139ce4647f08d66bdbfc764a755346b1dc84bcd5309148ee1fa6 +SHA512: 1546fcbc5d7e4b7dfa2f77e6de4e40a708ff0c49ca2576502deb0aad5cee210d91b261c5f54162ee37b23ad1eb0ab97cedc4dd830f08ab11de112ae477bc192b +Description: Intel® oneAPI Rendering Toolkit + + +Package: intel-renderkit-2023.0.0 +Architecture: amd64 +Version: 2023.0.0-25403 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-renderkit-getting-started (>= 2023.0.0-25403), intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing-2023.0.0 , intel-oneapi-embree-3.13.5 , intel-oneapi-ospray-studio-0.11.1 , intel-oneapi-ispc-1.18.1 , intel-oneapi-rkutil-1.6.2 +Filename: pool/main/intel-renderkit-2023.0.0-2023.0.0-25403_amd64.deb +Size: 2028 +MD5sum: 428ab6ec8a502a421516c19a5adb3f06 +SHA1: c73597996e708b89adb3224e669990638aaea7f6 +SHA256: a5bafaf501b8cf87b2ed52300eec30c33d518a927770368d6329c0b3973272c9 +SHA512: 23f0f0a332acdfc3975ba9b9cd63151d47b0c4e47b0de5588239c11d68e93b47cc58ea1f259f02ce138357a63a1b05cfde981f9c15585953a27adff3878fe42e +Description: Intel® oneAPI Rendering Toolkit + + +Package: intel-renderkit +Architecture: amd64 +Version: 2023.0.0-25403 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-renderkit-getting-started (>= 2023.0.0-25403), intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing (>= 2023.0.0-25325), intel-oneapi-embree (>= 3.13.5-25372), intel-oneapi-ospray-studio (>= 0.11.1-25387), intel-oneapi-ispc (>= 1.18.1-25344), intel-oneapi-rkutil (>= 1.6.2-25342) +Filename: pool/main/intel-renderkit-2023.0.0-25403_amd64.deb +Size: 2036 +MD5sum: a74b13249c82defdf5de3cce879ff37f +SHA1: ca7263200fa1f681d948d7b8cb64cf84457e4cb1 +SHA256: 1820b57209644ff71c818dce57d99a522f9e9bad49535dcca37c211744556aa9 +SHA512: 86e6e0ff30b185354a450706d2d2862719589c228a20e35943efe33c22eb754488eae4a3ef92082a2e9a12463b19dd921739ae668b1c725e0a94ea7dc5ce6eab +Description: Intel® oneAPI Rendering Toolkit + + +Package: intel-renderkit-2023.1.0 +Architecture: amd64 +Version: 2023.1.0-47259 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-renderkit-getting-started (>= 2023.1.0-47259), intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing-2023.1.0 , intel-oneapi-embree-4.0.1 , intel-oneapi-ospray-studio-0.12.0 , intel-oneapi-ispc-1.19.0 , intel-oneapi-rkutil-1.7.0 +Filename: pool/main/intel-renderkit-2023.1.0-2023.1.0-47259_amd64.deb +Size: 2028 +MD5sum: a68a2505164d9119467040dfa2dbdf1f +SHA1: 6565321dba0f653efd75d70d1766da7cbce1b021 +SHA256: fb2c8e7e1a90d4a4f002ac7f1ab3c97efa5bf2ac561196a87cf64a59742b72a3 +SHA512: 587288bd12ba1e37f53b92c3414bda429f966b1bb6cc3e74f16f6384b2514f6327f39be3f864ec856a6749ab35d7674dfa6ddbc862b3798cfd289cde74790fb8 +Description: Intel® oneAPI Rendering Toolkit + + +Package: intel-renderkit +Architecture: amd64 +Version: 2023.1.0-47259 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-renderkit-getting-started (>= 2023.1.0-47259), intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing (>= 2023.1.0-43473), intel-oneapi-embree (>= 4.0.1-46734), intel-oneapi-ospray-studio (>= 0.12.0-46753), intel-oneapi-ispc (>= 1.19.0-46484), intel-oneapi-rkutil (>= 1.7.0-46487) +Filename: pool/main/intel-renderkit-2023.1.0-47259_amd64.deb +Size: 2036 +MD5sum: 719541bf01740a3a2f4959aae5aa3a82 +SHA1: d1822db7e7a1424920fcfe950619a48c92a329cf +SHA256: 4cb036b0347c01b1e2e21b62cb4a0c3ad6131236042b68801ee093f32e90f0b1 +SHA512: c075b1934bc15b13ae9226fd8714f1663c6e9e847235ece7d9d35ae8990837189c582b7bde23bfaa15e4c24294976061da674686ed2b55d246ee0317fe94f9e2 +Description: Intel® oneAPI Rendering Toolkit + + +Package: intel-renderkit-runtime-2021.1.0 +Architecture: amd64 +Version: 2021.1.0-627 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-renderkit-getting-started (>= 2021.1.0-627), intel-oneapi-common-vars (>= 2021.1.1-60), intel-oneapi-common-licensing-2021.1.1 , intel-oneapi-embree-3.12.0 , intel-oneapi-oidn-1.2.4 , intel-oneapi-ospray-2.4.0 , intel-oneapi-ospray-studio-0.5.0 , intel-oneapi-rkutil-1.0.0 , intel-oneapi-openvkl-0.11.0 +Filename: pool/main/intel-renderkit-runtime-2021.1.0-2021.1.0-627_amd64.deb +Size: 1754 +MD5sum: 3d4261a0df27adeb406a8140af2b77ac +SHA1: 48605f65482bb7d3c97cc7c6bebc54908f8d24eb +SHA256: f64a280dedcab3f20da2744bc4ea60a23fd0825426cd482b5d4aa1aaed010e67 +SHA512: 8daccee52cfb04bfe1a5b78d16f6f70b9a1e408008c7238db41b4e6b62edd7c451341bf7636250e9012750d07df95163f261cf41002b78a3dbdd8fae52d8c627 +Description: Intel® oneAPI Rendering Toolkit + + +Package: intel-renderkit-runtime +Architecture: amd64 +Version: 2021.1.0-627 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-renderkit-getting-started (>= 2021.1.0-627), intel-oneapi-common-vars (>= 2021.1.1-60), intel-oneapi-common-licensing (>= 2021.1.1-60), intel-oneapi-embree (>= 3.12.0-91), intel-oneapi-oidn (>= 1.2.4-116), intel-oneapi-ospray (>= 2.4.0-55), intel-oneapi-ospray-studio (>= 0.5.0-84), intel-oneapi-rkutil (>= 1.0.0-76), intel-oneapi-openvkl (>= 0.11.0-87) +Filename: pool/main/intel-renderkit-runtime-2021.1.0-627_amd64.deb +Size: 1770 +MD5sum: 52087e1420d45b7f95cb6d0181d3963f +SHA1: f4767786a26c517b8e86a16c291411da0c32acbd +SHA256: de9fd04e2cdea3e6f06200573f54c582f43d8dc0f956e914d2aac6bd0fd78291 +SHA512: 002d3e7f5c6594f6758338cc9cac083b4f5e9bf684d9d96cfd724168135315d319f060f26d2526bede56c0eeb6bf4ed6c6e509c86b07d02f582aabaa7ef1836c +Description: Intel® oneAPI Rendering Toolkit + + +Package: intel-renderkit-runtime-2021.2.0 +Architecture: amd64 +Version: 2021.2.0-739 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-renderkit-getting-started (>= 2021.2.0-739), intel-oneapi-oidn-1.3.0 , intel-oneapi-common-vars (>= 2021.2.0-195), intel-oneapi-common-licensing-2021.2.0 , intel-oneapi-ospray-2.5.0 , intel-oneapi-rkutil-1.1.0 , intel-oneapi-ospray-studio-0.6.0 , intel-oneapi-embree-3.12.2 , intel-oneapi-openvkl-0.12.0 +Filename: pool/main/intel-renderkit-runtime-2021.2.0-2021.2.0-739_amd64.deb +Size: 1752 +MD5sum: 7bbe858d49d74112045e6ec0b657a33e +SHA1: f51a325c0e4cd96ba2bb877af2cded5983eb2b45 +SHA256: df991995cb7eb8f5180652975b63735f65464d8bd96696583be47aa6716c3bc9 +SHA512: ce0083937413526fcb849a608455437076a6ccab16cc9def12f4132e91141d9042c3609c617c7564d19bd5f61b78cd761acdbf7ee225070e3cc2945b45b6c7a8 +Description: Intel® oneAPI Rendering Toolkit + + +Package: intel-renderkit-runtime +Architecture: amd64 +Version: 2021.2.0-739 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-renderkit-getting-started (>= 2021.2.0-739), intel-oneapi-oidn (>= 1.3.0-167), intel-oneapi-common-vars (>= 2021.2.0-195), intel-oneapi-common-licensing (>= 2021.2.0-195), intel-oneapi-ospray (>= 2.5.0-122), intel-oneapi-rkutil (>= 1.1.0-84), intel-oneapi-ospray-studio (>= 0.6.0-108), intel-oneapi-embree (>= 3.12.2-123), intel-oneapi-openvkl (>= 0.12.0-26) +Filename: pool/main/intel-renderkit-runtime-2021.2.0-739_amd64.deb +Size: 1772 +MD5sum: 43de1fa50dce70270fc1ccb47e97c2f7 +SHA1: d24fd26c61f40ac6ffb9fd5323293f7835613224 +SHA256: cac90130e022b0ceed38c514628de456da64ddc4fbf9be28ee4054f8b7e3d6e1 +SHA512: e33d3b012c123b4ec54ee62bde6e9b52eed2470080b312a4c684d94686e70f4d463b1d598f51082215a7a0f2919625dd75aa1d745f68f8b023d913449917527c +Description: Intel® oneAPI Rendering Toolkit + + +Package: intel-renderkit-runtime-2021.3.0 +Architecture: amd64 +Version: 2021.3.0-807 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-renderkit-getting-started (>= 2021.3.0-807), intel-oneapi-embree-3.13.0 , intel-oneapi-common-vars (>= 2021.3.0-261), intel-oneapi-common-licensing-2021.3.0 , intel-oneapi-oidn-1.4.0 , intel-oneapi-openvkl-0.13.0 , intel-oneapi-ospray-2.6.0 , intel-oneapi-rkutil-1.2.0 , intel-oneapi-ospray-studio-0.7.0 +Filename: pool/main/intel-renderkit-runtime-2021.3.0-2021.3.0-807_amd64.deb +Size: 1752 +MD5sum: c1a79d27ef68dc3eb2e7135e32c5ce1c +SHA1: 88b267480434717e634e4be3dba33145d68757b0 +SHA256: af67f9117c9bea049b94b18971b7e5fc81301125aa43aa2009a901580e4674ea +SHA512: 2d4b755141c3035a367be65b5210bed966947030c061adf8ca7b766d2ffdd1077a72448993770b1ce325db9a0406d9b1dfc10be642e4d3a2f0b7b06484f0310f +Description: Intel® oneAPI Rendering Toolkit + + +Package: intel-renderkit-runtime +Architecture: amd64 +Version: 2021.3.0-807 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-renderkit-getting-started (>= 2021.3.0-807), intel-oneapi-embree (>= 3.13.0-257), intel-oneapi-common-vars (>= 2021.3.0-261), intel-oneapi-common-licensing (>= 2021.3.0-261), intel-oneapi-oidn (>= 1.4.0-63), intel-oneapi-openvkl (>= 0.13.0-65), intel-oneapi-ospray (>= 2.6.0-78), intel-oneapi-rkutil (>= 1.2.0-47), intel-oneapi-ospray-studio (>= 0.7.0-65) +Filename: pool/main/intel-renderkit-runtime-2021.3.0-807_amd64.deb +Size: 1766 +MD5sum: b0784f92b817495a2158fd7f0b74e6cf +SHA1: d822bf463e7b6c17a2fc201823352a30c579135a +SHA256: 76710a1e175ede869ada23da6aaaadb3e57c5cab5a2c30c0c38fde6202de48f9 +SHA512: 895eaec592cccaf989260ec46643b840e013d8e5fe629a0096360dbc4a8671df1b97f1ac77b45bbe93ee336d67e80348cee03e54cffd25c5f628ba9e0f16f5a3 +Description: Intel® oneAPI Rendering Toolkit + + +Package: intel-renderkit-runtime-2021.4.0 +Architecture: amd64 +Version: 2021.4.0-845 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-renderkit-getting-started (>= 2021.4.0-845), intel-oneapi-openvkl-1.0.0 , intel-oneapi-common-vars (>= 2021.4.0-327), intel-oneapi-common-licensing-2021.4.0 , intel-oneapi-embree-3.13.1 , intel-oneapi-oidn-1.4.1 , intel-oneapi-ospray-2.7.0 , intel-oneapi-ospray-studio-0.8.0 , intel-oneapi-rkutil-1.3.0 +Filename: pool/main/intel-renderkit-runtime-2021.4.0-2021.4.0-845_amd64.deb +Size: 1754 +MD5sum: 16c54daef42861b78320fe9841ce5185 +SHA1: 428344809dc7ce1288a912c607c7ef27e61fa4d7 +SHA256: 643aa97da7760fdcbd49cb32e6792d0f78e5f62ef063eed790df9137856c4cc8 +SHA512: 260e73dde967df74f8bdcd12ba13055481c00c7039dd38a1b4b03525b76fa6682db8f9308085655a1920f13a800802fedd1df552e1b8f8cf6b6a70c72c7423f8 +Description: Intel® oneAPI Rendering Toolkit + + +Package: intel-renderkit-runtime +Architecture: amd64 +Version: 2021.4.0-845 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-renderkit-getting-started (>= 2021.4.0-845), intel-oneapi-openvkl (>= 1.0.0-123), intel-oneapi-common-vars (>= 2021.4.0-327), intel-oneapi-common-licensing (>= 2021.4.0-327), intel-oneapi-embree (>= 3.13.1-297), intel-oneapi-oidn (>= 1.4.1-90), intel-oneapi-ospray (>= 2.7.0-27), intel-oneapi-ospray-studio (>= 0.8.0-19), intel-oneapi-rkutil (>= 1.3.0-18) +Filename: pool/main/intel-renderkit-runtime-2021.4.0-845_amd64.deb +Size: 1772 +MD5sum: 465d3f8d4245cfa06b8a24ad70563272 +SHA1: 58fddc80d04e33f0db0c50c57091b9d5af48133a +SHA256: 3456d661740c3c4f7395ac2d9fb5bfd9d0dd83331905a397fdff5f08a6269126 +SHA512: 1c0719ee9840643a2905e76e5a43e8128a81f8a40921687975415710f5a96dc7be3003ccaf569b19aad9651897e1171fd209503081c9c6995d649534797385b9 +Description: Intel® oneAPI Rendering Toolkit + + +Package: intel-renderkit-runtime-2022.1.0 +Architecture: amd64 +Version: 2022.1.0-74 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-renderkit-getting-started (>= 2022.1.0-74), intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing-2022.0.0 , intel-oneapi-rkutil-1.4.0 , intel-oneapi-embree-3.13.2 , intel-oneapi-openvkl-1.1.0 , intel-oneapi-oidn-1.4.2 , intel-oneapi-ospray-2.8.0 , intel-oneapi-ospray-studio-0.9.0 , intel-oneapi-ispc-1.16.1 +Filename: pool/main/intel-renderkit-runtime-2022.1.0-2022.1.0-74_amd64.deb +Size: 1762 +MD5sum: a99f24e6d2dc140877c3c4603a6001e8 +SHA1: 10a6651122e18f6aa0a54c3485b5c5c518fabcb4 +SHA256: badab7b0bce34938ab50a0bcb49965991a288ac9ba23663d3a70e1a7e918f726 +SHA512: 97133511ea9da7bf5ab6d955dd55e4946a2034dc2badd33fc6b12c54f27a831308082bd94807f00a13c6488c77312e0e6bdac502b6354ba00e0dbbecb204c20f +Description: Intel® oneAPI Rendering Toolkit + + +Package: intel-renderkit-runtime +Architecture: amd64 +Version: 2022.1.0-74 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-renderkit-getting-started (>= 2022.1.0-74), intel-oneapi-common-vars (>= 2022.0.0-59), intel-oneapi-common-licensing (>= 2022.0.0-59), intel-oneapi-rkutil (>= 1.4.0-67), intel-oneapi-embree (>= 3.13.2-73), intel-oneapi-openvkl (>= 1.1.0-77), intel-oneapi-oidn (>= 1.4.2-73), intel-oneapi-ospray (>= 2.8.0-77), intel-oneapi-ospray-studio (>= 0.9.0-64), intel-oneapi-ispc (>= 1.16.1-81) +Filename: pool/main/intel-renderkit-runtime-2022.1.0-74_amd64.deb +Size: 1776 +MD5sum: 7e29adf741bc372994cb987b33ca3222 +SHA1: e8b374339ee4e62d30c9f00f46f0c5cf38eefec1 +SHA256: c92ad010f57da833a2237536ac75f845b0377ec2ff0ee347ae7dfb8eff1caa07 +SHA512: b15c0b8be6a2b9776930e7930c47ad8bbeed0ce589fb0ce626f685e3e2f3e55eadfd6a1d0329038f941810d70e804206ef4f3e18d312b236f6fdab9be8f9abfb +Description: Intel® oneAPI Rendering Toolkit + + +Package: intel-renderkit-runtime +Architecture: amd64 +Version: 2022.2.0-151 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-renderkit-getting-started (>= 2022.2.0-151), intel-oneapi-common-vars (>= 2022.1.0-161), intel-oneapi-common-licensing (>= 2022.1.0-161), intel-oneapi-embree (>= 3.13.3-360), intel-oneapi-oidn (>= 1.4.3-160), intel-oneapi-openvkl (>= 1.2.0-187), intel-oneapi-ospray (>= 2.9.0-142), intel-oneapi-ospray-studio (>= 0.10.0-125), intel-oneapi-ispc (>= 1.17.0-140), intel-oneapi-rkutil (>= 1.5.0-126) +Filename: pool/main/intel-renderkit-runtime-2022.2.0-151_amd64.deb +Size: 1856 +MD5sum: a745373789de712b7c801d5d906f3c42 +SHA1: 4e398d268b9dbe4d6826f943d45e5a7d121982e7 +SHA256: 7191c22b94d1902e704870a391e32270a7553331ec8b03adf8ef4da2d4cc8ad3 +SHA512: 56ea7b3b367e66a637e4fc3faaeed29d601fc6008110530218a092f150113ea0e4f79c5722270ec56344c358d36a470eb239a99362927a3e490b5173c2a650ea +Description: Intel® oneAPI Rendering Toolkit + + +Package: intel-renderkit-runtime-2022.2.0 +Architecture: amd64 +Version: 2022.2.0-151 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-renderkit-getting-started (>= 2022.2.0-151), intel-oneapi-common-vars (>= 2022.1.0-161), intel-oneapi-common-licensing-2022.1.0 , intel-oneapi-embree-3.13.3 , intel-oneapi-oidn-1.4.3 , intel-oneapi-openvkl-1.2.0 , intel-oneapi-ospray-2.9.0 , intel-oneapi-ospray-studio-0.10.0 , intel-oneapi-ispc-1.17.0 , intel-oneapi-rkutil-1.5.0 +Filename: pool/main/intel-renderkit-runtime-2022.2.0-2022.2.0-151_amd64.deb +Size: 1844 +MD5sum: 0186494c15010bcda3af8d80fcab12c6 +SHA1: 91e912598fd65c8eadd30597f046db5aabbdfd9b +SHA256: e31d210e80709200aef043094e1db1ba785adb9a5ac34270ebe43e9a03313c59 +SHA512: 48dd2a9b43168f7dbbbb486b893447de161fbedaf8f61d62630531ddb27e8cbcbf086c59c97ce72fd7a05cdbc2ec3ebe4efecf61f665d9d5d32698d4e2b9d19f +Description: Intel® oneAPI Rendering Toolkit + + +Package: intel-renderkit-runtime-2022.3.0 +Architecture: amd64 +Version: 2022.3.0-8742 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-renderkit-getting-started (>= 2022.3.0-8742), intel-oneapi-common-vars (>= 2022.2.0-8694), intel-oneapi-common-licensing-2022.2.0 , intel-oneapi-embree-3.13.4 , intel-oneapi-oidn-1.4.3 , intel-oneapi-openvkl-1.3.0 , intel-oneapi-ospray-2.10.0 , intel-oneapi-ospray-studio-0.11.1 , intel-oneapi-ispc-1.18.0 , intel-oneapi-rkutil-1.6.1 +Filename: pool/main/intel-renderkit-runtime-2022.3.0-2022.3.0-8742_amd64.deb +Size: 1848 +MD5sum: 4b2d7acdc97a5ba775559ec64d37d886 +SHA1: 5877b02e3230f6416e41004341099b5f2a398d12 +SHA256: 8d85054e3d8fce210a0ce9af9e4b69e95b9afb955a1ec27e0d65a8ab9f2585b0 +SHA512: 52c714cb171a2d18049b83597a228c429c8ad7f1822fc8b4970dde5558b8c3e2b490ebaa1f10a029d4495fee2249245a48824392e6d3ba9bd4526cf525eba34f +Description: Intel® oneAPI Rendering Toolkit + + +Package: intel-renderkit-runtime +Architecture: amd64 +Version: 2022.3.0-8742 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-renderkit-getting-started (>= 2022.3.0-8742), intel-oneapi-common-vars (>= 2022.2.0-8694), intel-oneapi-common-licensing (>= 2022.2.0-8694), intel-oneapi-embree (>= 3.13.4-8730), intel-oneapi-oidn (>= 1.4.3-8731), intel-oneapi-openvkl (>= 1.3.0-8735), intel-oneapi-ospray (>= 2.10.0-8737), intel-oneapi-ospray-studio (>= 0.11.1-8738), intel-oneapi-ispc (>= 1.18.0-8709), intel-oneapi-rkutil (>= 1.6.1-8710) +Filename: pool/main/intel-renderkit-runtime-2022.3.0-8742_amd64.deb +Size: 1864 +MD5sum: adf8d8d07e918e92fa15f9b289ecd114 +SHA1: 508dc92ea9ee79be1024c94f30b6105b005af9ee +SHA256: 97ce322e0488bcfe89b8c13f7cbbb14a6e9182ce3a914540f0743651b97d532f +SHA512: d8537370330b20ecd2a56819538e762840a4e6d37cf177ea3fdfc59af33af9a3554ba73741257739dda85917c6a1eecdde64e61ca2e0686a5d0c04998f485700 +Description: Intel® oneAPI Rendering Toolkit + + +Package: intel-renderkit-runtime-2022.3.1 +Architecture: amd64 +Version: 2022.3.1-21169 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-renderkit-getting-started (>= 2022.3.1-21169), intel-oneapi-common-vars (>= 2022.2.1-14969), intel-oneapi-common-licensing-2022.2.1 , intel-oneapi-embree-3.13.5 , intel-oneapi-oidn-1.4.3 , intel-oneapi-openvkl-1.3.1 , intel-oneapi-ospray-2.10.0 , intel-oneapi-ospray-studio-0.11.1 , intel-oneapi-ispc-1.18.1 , intel-oneapi-rkutil-1.6.2 +Filename: pool/main/intel-renderkit-runtime-2022.3.1-2022.3.1-21169_amd64.deb +Size: 1852 +MD5sum: d8781d0eb081c185a5c1f0f2b740f850 +SHA1: 54c3721e250516156def9317bf2ed59dc69b6e04 +SHA256: 89b4c0f87436648dcb10302caa0d97fe3064d488ec5521debed28e4fcb112621 +SHA512: f59063506ae667020992a2b0187239f66c8d5635f02d61266500b985c9c67983cec6b2c081dc5115a4b70cf51a9512ff9555f88a8ba93fe9e576867ce70faa7d +Description: Intel® oneAPI Rendering Toolkit + + +Package: intel-renderkit-runtime +Architecture: amd64 +Version: 2022.3.1-21169 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-renderkit-getting-started (>= 2022.3.1-21169), intel-oneapi-common-vars (>= 2022.2.1-14969), intel-oneapi-common-licensing (>= 2022.2.1-14969), intel-oneapi-embree (>= 3.13.5-21152), intel-oneapi-oidn (>= 1.4.3-15341), intel-oneapi-openvkl (>= 1.3.1-21158), intel-oneapi-ospray (>= 2.10.0-21162), intel-oneapi-ospray-studio (>= 0.11.1-21165), intel-oneapi-ispc (>= 1.18.1-21155), intel-oneapi-rkutil (>= 1.6.2-21147) +Filename: pool/main/intel-renderkit-runtime-2022.3.1-21169_amd64.deb +Size: 1868 +MD5sum: 66456a013956ea9a20c0bed9fdb83f7e +SHA1: b30efeac4b004ce338c3125a895479a22beecd7d +SHA256: dcda3a4c3e0ddc2491688ba15308061f0621d2141439a2f0a1c9d311938eaff9 +SHA512: 49226fc635ab0398d5c1de1b08b8793d47fce7395f0258619214aff71581d0c4b6a913ce61552a4a58b4ca9c1c2891810597335892d4f6a88807e42925834209 +Description: Intel® oneAPI Rendering Toolkit + + +Package: intel-renderkit-runtime-2023.0.0 +Architecture: amd64 +Version: 2023.0.0-25403 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-renderkit-getting-started (>= 2023.0.0-25403), intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing-2023.0.0 , intel-oneapi-embree-3.13.5 , intel-oneapi-oidn-1.4.3 , intel-oneapi-openvkl-1.3.1 , intel-oneapi-ospray-2.10.0 , intel-oneapi-ospray-studio-0.11.1 , intel-oneapi-ispc-1.18.1 , intel-oneapi-rkutil-1.6.2 +Filename: pool/main/intel-renderkit-runtime-2023.0.0-2023.0.0-25403_amd64.deb +Size: 1848 +MD5sum: 3534bd9bd37d507e9578794635eb4be0 +SHA1: 398030c2e8b919708bd9e1492d8c02dfcde3deee +SHA256: 7e68f91edf97409a92e35132caba594befb98bd767e578507c1ed18e5b951ff7 +SHA512: 491c41d0c82a53f5bea830017a84b321e46504746f4306f22ec10a1d6ac419188ce1e4e30c935d4853a5b80190f66701865c4fd9e390e62962ba220d97586a50 +Description: Intel® oneAPI Rendering Toolkit + + +Package: intel-renderkit-runtime +Architecture: amd64 +Version: 2023.0.0-25403 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-renderkit-getting-started (>= 2023.0.0-25403), intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing (>= 2023.0.0-25325), intel-oneapi-embree (>= 3.13.5-25372), intel-oneapi-oidn (>= 1.4.3-25373), intel-oneapi-openvkl (>= 1.3.1-25381), intel-oneapi-ospray (>= 2.10.0-25384), intel-oneapi-ospray-studio (>= 0.11.1-25387), intel-oneapi-ispc (>= 1.18.1-25344), intel-oneapi-rkutil (>= 1.6.2-25342) +Filename: pool/main/intel-renderkit-runtime-2023.0.0-25403_amd64.deb +Size: 1864 +MD5sum: e4204135f2dbfcc995b91cfa85843c8e +SHA1: 85b4f4d469e940afa488e6f72573dc58b928a300 +SHA256: 090f8aca529d2fc9ce881eccb3ace62e296265d72cdd52936c02da57c2abc13c +SHA512: 23226e8356454f965efa36503dab8475771e3ec294996d871e615d860c26faf31bd815699bc77bf6e9a7172b88410166ecea076724a5edf09e6248be96330645 +Description: Intel® oneAPI Rendering Toolkit + + +Package: intel-renderkit-runtime-2023.1.0 +Architecture: amd64 +Version: 2023.1.0-47259 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-renderkit-getting-started (>= 2023.1.0-47259), intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing-2023.1.0 , intel-oneapi-embree-4.0.1 , intel-oneapi-oidn-1.4.3 , intel-oneapi-openvkl-1.3.2 , intel-oneapi-ospray-2.11.0 , intel-oneapi-ospray-studio-0.12.0 , intel-oneapi-ispc-1.19.0 , intel-oneapi-rkutil-1.7.0 , intel-oneapi-openpgl-0.5.0 +Filename: pool/main/intel-renderkit-runtime-2023.1.0-2023.1.0-47259_amd64.deb +Size: 1856 +MD5sum: 8b634b9453090d05c07ff54c8514048e +SHA1: 10ea78cc3c9e20540d7239abe0b5e0ae325f89f9 +SHA256: 5a4c1c09902cbede614e4bd87d3f071c832fc8dec2a20ad234016aaf9cf2cffb +SHA512: 7205850f2ba49301a5f85bd2d49da524fc9b4bec69077d79324d7a3925fd6282cfefbaeb53ca9f666a8a141c57347a4855d06eebdafbfe15bcc30bc96b088b5a +Description: Intel® oneAPI Rendering Toolkit + + +Package: intel-renderkit-runtime +Architecture: amd64 +Version: 2023.1.0-47259 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-renderkit-getting-started (>= 2023.1.0-47259), intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing (>= 2023.1.0-43473), intel-oneapi-embree (>= 4.0.1-46734), intel-oneapi-oidn (>= 1.4.3-46735), intel-oneapi-openvkl (>= 1.3.2-46749), intel-oneapi-ospray (>= 2.11.0-46752), intel-oneapi-ospray-studio (>= 0.12.0-46753), intel-oneapi-ispc (>= 1.19.0-46484), intel-oneapi-rkutil (>= 1.7.0-46487), intel-oneapi-openpgl (>= 0.5.0-47121) +Filename: pool/main/intel-renderkit-runtime-2023.1.0-47259_amd64.deb +Size: 1872 +MD5sum: a9a82560c02cb3626cdb6d8a2b47f2c0 +SHA1: 9169ce7daa7b9c3be37b72fecafbbcfd3b5fc4d7 +SHA256: d0220265abd0e1a3949780088050d836c524cb27481666335d906c5e00c11c89 +SHA512: e746a0565c590020d003eb00af1ad80f8a01aa73454dd2967a23a667c113e8a2b391f60b4f024de7e572cb1592df9965ca8c4be4c859d013ff98a79868307761 +Description: Intel® oneAPI Rendering Toolkit + + +Package: python3-opae.pac-sign +Architecture: amd64 +Version: 1.0.3-1 +Priority: optional +Section: python +Source: opae-pac-sign +Maintainer: unknown +Installed-Size: 6183 +Depends: python3 (<< 3.7), python3 (>= 3.6~), python3:any (>= 3.3.2-2~) +Filename: pool/main/python3-opae.pac-sign_1.0.3-1_amd64.deb +Size: 2566344 +MD5sum: 697f788cb3cad7d9eb56273258c910b7 +SHA1: 0d131e95bf4c197a35b564bdbf9d951f79a7ca9d +SHA256: 184fa971acafde58ed62e44eca7f2cf0a31a663990b2272170233806b4afd6d7 +SHA512: 5c5bfa0552f2a3a4da4115c12a5ef72421b469b2fd9576bcc525902156c6988e3999b95bdaa95dee08b9b8e33064a13da53b45375cc2d2ca55c48191eb64ffe4 +Homepage: https://01.org/OPAE +Description: opae.pac_sign provides Python classes for interfacing withOP + + +Package: intel-aikit-runtime-2023.1.1 +Architecture: amd64 +Version: 2023.1.1-48862 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-aikit-getting-started (>= 2023.1.1-48862), intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing-2023.1.0 , intel-oneapi-dev-utilities-2021.9.0 +Filename: pool/main/intel-aikit-runtime-2023.1.1-2023.1.1-48862_amd64.deb +Size: 1792 +MD5sum: ca79bd4b383cc34268c96b35b7ecfaac +SHA1: 6d2d6ea0257150fb93c265db6b27383e3acf9f62 +SHA256: e6cd35ce6a85d4927f1bb6cbe2edf0743fbd0fe223522d9ee967ec46e4fe52c6 +SHA512: 8be09839f94418a91fceb3f7d8726be890970931b5e092fd56f45f5460ca3485f342bdc013a568bb66db8e109e46cc922844dac1030d63826a7ac052f39d1341 +Description: Intel® oneAPI AI Analytics Toolkit + + +Package: intel-aikit-2023.1.1 +Architecture: amd64 +Version: 2023.1.1-48862 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-aikit-getting-started (>= 2023.1.1-48862), intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing-2023.1.0 , intel-oneapi-dev-utilities-2021.9.0 , intel-oneapi-model-zoo (>= 2.11.0-48867), intel-oneapi-python (>= 2023.1.0-46399), intel-oneapi-tensorflow (>= 2.12.0-48868), intel-oneapi-neural-compressor (>= 2.1.0-48866), intel-oneapi-pytorch (>= 1.13.10.2-48866), intel-oneapi-modin (>= 0.19.0.0-48867) +Filename: pool/main/intel-aikit-2023.1.1-2023.1.1-48862_amd64.deb +Size: 2072 +MD5sum: 525a996167cfa00c0deb3e3614ae2ea0 +SHA1: 1f42f540cf11bd428edab4d72bd526b8d4ec0319 +SHA256: d2d6b4ba967df4b1b88b07bfa90b5b171cd2ecec31eaa8d8d5d477d43303b023 +SHA512: addde7528eed96c8a963a0b594313b70c700b987a615b2a3dea7044851295b8c96690295df179e7664f929f9152a6a61399d538e252bba6209638083dd6c488a +Description: Intel® oneAPI AI Analytics Toolkit + + +Package: intel-aikit-runtime +Architecture: amd64 +Version: 2023.1.1-48862 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-aikit-getting-started (>= 2023.1.1-48862), intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing (>= 2023.1.0-43473), intel-oneapi-dev-utilities (>= 2021.9.0-44447) +Filename: pool/main/intel-aikit-runtime-2023.1.1-48862_amd64.deb +Size: 1792 +MD5sum: d5445fdf98f9ff9959f11ef420195b96 +SHA1: 09374f75fa8aa29baba610d3c90ce1621c659ee2 +SHA256: 301fdb89cc8d960be37c6e5990864d1fa72b0d8d3892a8d465c8746de53b6b7f +SHA512: aaeef0036c43c459129623b6b5bd1dfb59e10e3d7935bd687e4e60c93e7d85ca6ffd62a02ef461d6d237b22cb6afb230f1b54c80ccf6e363405ee029af831590 +Description: Intel® oneAPI AI Analytics Toolkit + + +Package: intel-aikit +Architecture: amd64 +Version: 2023.1.1-48862 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-aikit-getting-started (>= 2023.1.1-48862), intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing (>= 2023.1.0-43473), intel-oneapi-dev-utilities (>= 2021.9.0-44447), intel-oneapi-model-zoo (>= 2.11.0-48867), intel-oneapi-python (>= 2023.1.0-46399), intel-oneapi-tensorflow (>= 2.12.0-48868), intel-oneapi-neural-compressor (>= 2.1.0-48866), intel-oneapi-pytorch (>= 1.13.10.2-48866), intel-oneapi-modin (>= 0.19.0.0-48867) +Filename: pool/main/intel-aikit-2023.1.1-48862_amd64.deb +Size: 2068 +MD5sum: d3548c3aafafa46e413a3f4d2288ed20 +SHA1: a659105a6d093610d0995aeb0986144bd6a37417 +SHA256: a8b278fda852f508529c298339cd8a58d610f1afbb9ccd65ca549b508736b80b +SHA512: 8c05876145e6715b26a4ae29b9e2354d81fcc88c6f8ec1f0b9abdc880ab1617c052d69c691a880210097ab2b2579b5d48064fb7524c5cec679c4fd4a7427ee3f +Description: Intel® oneAPI AI Analytics Toolkit + + +Package: intel-oneapi-model-zoo +Architecture: amd64 +Version: 2.11.0-48867 +Multi-Arch: +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 73868 +Depends: intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing-2023.1.0 +Filename: pool/main/intel-oneapi-model-zoo-2.11.0-48867_amd64.deb +Size: 8474492 +MD5sum: ae4bdf970a79a60ee299df584cb073e1 +SHA1: 2678d1aaca791f1175e229d34a36c46a3d641e79 +SHA256: 154356390f99ead554217b38665f28520d23b10007040024009fdaf41cda1da1 +SHA512: 23e0432e7095cea072fe2a3c583cf6fd2bab1f0da1c0d6d05ea6d89e5b0d68f16efa44430517b35681f2112c423d6ba6c1d6f2b28820511358ec7fdc28f66e45 +Description: Model Zoo + + +Package: intel-oneapi-tensorflow +Architecture: amd64 +Version: 2.12.0-48868 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 762813 +Depends: intel-oneapi-condaindex (>= 2023.1.0-43291), intel-oneapi-python (>= 2023.1.0-46399), intel-oneapi-mpi-devel-2021.9.0, intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing-2023.1.0 +Filename: pool/main/intel-oneapi-tensorflow-2.12.0-48868_amd64.deb +Size: 777871110 +MD5sum: dfec8a36712f9995e911cd47a5ea2a85 +SHA1: a11ff47d28144208c61933da719920f69f7dce48 +SHA256: 365bf871ddb9ba1faef6cab08609b1142744a452f125c2dc3912a522fcaa1b32 +SHA512: 0e2a9d1ececf93201d420f212b660fe868bdac46abeac6abcf8974c94106b822577743e183ec9289b3a42a141bba8e79a9987c32c10c0357efe9a28c0db0bdb3 +Description: Intel® Optimization for TensorFlow* + + +Package: intel-oneapi-modin +Architecture: amd64 +Version: 0.19.0.0-48867 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 141576 +Depends: intel-oneapi-condaindex (>= 2023.1.0-43291), intel-oneapi-python (>= 2023.1.0-46399), intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing-2023.1.0 +Filename: pool/main/intel-oneapi-modin-0.19.0.0-48867_amd64.deb +Size: 144135862 +MD5sum: 05f1ba77c388664becd2a79929944fb1 +SHA1: 9fd225048c56800c261a2c5d93afbef89e92a49f +SHA256: 48db28ddcb84e16eb90a34767009e3235359d13127018bf2d14210f23679052e +SHA512: 5a892d6cc97a81c364a70361b51e21af5a66ef079a7c2c71ea893186cb0e8bd3814bfe55125348f6b281003a65623cad8079ec808a73f889a2eeb0b0ba627e97 +Description: Intel® Distribution of Modin + + +Package: intel-oneapi-pytorch +Architecture: amd64 +Version: 1.13.10.2-48866 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 547897 +Depends: intel-oneapi-condaindex (>= 2023.1.0-43291), intel-oneapi-python (>= 2023.1.0-46399), intel-oneapi-mpi-devel-2021.9.0, intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing-2023.1.0 +Filename: pool/main/intel-oneapi-pytorch-1.13.10.2-48866_amd64.deb +Size: 558931382 +MD5sum: 3fb0486272403d97f56fee03cd552f4f +SHA1: 1e5e23011e353e14ae6be913ffbe3e6526da5eee +SHA256: ce51b91a08ad0420f4632874b7194e44c39075bb3843643a225090b517668907 +SHA512: ab679440291f558ca101170c977f58205af3522d72fd75cbbf50fc58cd0e471e589018255f462c9e4dfa668b5035b51654280051a9ddec26a2d6d879ed2cb67a +Description: PyTorch* + + +Package: intel-oneapi-neural-compressor +Architecture: amd64 +Version: 2.1.0-48866 +Multi-Arch: +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 82021 +Depends: intel-oneapi-condaindex (>= 2023.1.0-43291), intel-oneapi-python (>= 2023.1.0-46399), intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing-2023.1.0 +Filename: pool/main/intel-oneapi-neural-compressor-2.1.0-48866_amd64.deb +Size: 83689002 +MD5sum: 6d8b7e6e4fcffe508f459eab6fcc8853 +SHA1: f5a5f2636ebcf9d5e862d590b08cf5f0ab03f07c +SHA256: a3e06273fa1169cb91b261827b840fcba61ace22dcbe43f8ec9cfb6f80dab6f7 +SHA512: 2b0cf523db0297994ae812091268368b26dc6328d52b029cddc0b8b8affaf27d450287ca478fea2653b21eee64aa86db8fc8ffcb7e0621afcb326d801aa43b3d +Description: Intel® Neural Compressor + + +Package: intel-renderkit-2023.1.1 +Architecture: amd64 +Version: 2023.1.1-18 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-renderkit-getting-started (>= 2023.1.1-18), intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing-2023.1.0 , intel-oneapi-embree-4.0.1 , intel-oneapi-openvkl-1.3.2 , intel-oneapi-ospray-studio-0.12.0 , intel-oneapi-ispc-1.19.0 , intel-oneapi-rkutil-1.7.0 , intel-oneapi-openpgl-0.5.0 +Filename: pool/main/intel-renderkit-2023.1.1-2023.1.1-18_amd64.deb +Size: 2044 +MD5sum: efb0474314107f76c8affae449c05d80 +SHA1: 81b3243ae4a03301ae3386d10a30df43c0c56410 +SHA256: 43304d86a53d01e2739755b2fc71c93cbce0e5c729b128b99984e489b012ef25 +SHA512: 353da7c77fa15398f313ed25fef455c3c8aef7bed5a98e4ab8b5d155d36c836618317c509459f7abfdcf52640feb47cae3c0637415ecb9913fbdf714809ddf82 +Description: Intel® oneAPI Rendering Toolkit + + +Package: intel-renderkit-runtime +Architecture: amd64 +Version: 2023.1.1-18 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-renderkit-getting-started (>= 2023.1.1-18), intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing (>= 2023.1.0-43473), intel-oneapi-embree (>= 4.0.1-21), intel-oneapi-oidn (>= 1.4.3-18), intel-oneapi-openvkl (>= 1.3.2-19), intel-oneapi-ospray (>= 2.11.0-22), intel-oneapi-ospray-studio (>= 0.12.0-18), intel-oneapi-ispc (>= 1.19.0-19), intel-oneapi-rkutil (>= 1.7.0-18), intel-oneapi-openpgl (>= 0.5.0-19) +Filename: pool/main/intel-renderkit-runtime-2023.1.1-18_amd64.deb +Size: 1868 +MD5sum: 596fbd8d3ac6591c78a351e0deb03b16 +SHA1: dd5adf1fe8aa12b1cbcd976b9db7e3251c02b180 +SHA256: b03cf97e771b282dbfb42452f2936d8ac7d23678698f20b044a0fa699140f9e7 +SHA512: a7392d42318fd8c79aed5c6d9881bbbee52e3f98c9151554ae97af920752fe87907ca5d9a89f5220a12c54c755c6586beb33c9ba2bcdb5c8aed98c50cd9c82a7 +Description: Intel® oneAPI Rendering Toolkit + + +Package: intel-renderkit-runtime-2023.1.1 +Architecture: amd64 +Version: 2023.1.1-18 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-renderkit-getting-started (>= 2023.1.1-18), intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing-2023.1.0 , intel-oneapi-embree-4.0.1 , intel-oneapi-oidn-1.4.3 , intel-oneapi-openvkl-1.3.2 , intel-oneapi-ospray-2.11.0 , intel-oneapi-ospray-studio-0.12.0 , intel-oneapi-ispc-1.19.0 , intel-oneapi-rkutil-1.7.0 , intel-oneapi-openpgl-0.5.0 +Filename: pool/main/intel-renderkit-runtime-2023.1.1-2023.1.1-18_amd64.deb +Size: 1856 +MD5sum: b9af2754548b8d0882c1eccc9035e4e0 +SHA1: 4e46468580def2639f7a67511da4be8ad604bf8c +SHA256: d0e108d4e2210fcdb8e73fc906e91d2899ab7b08ad211717efa15705c395e756 +SHA512: 042b7bdea88785af0c61d3761ea2ddb6088352d6e1196922b9c2537315b7ecf6906d627f5c8244f4dbd72ebace229759231c6e990c10ed8eb1a8d855fd3c2c69 +Description: Intel® oneAPI Rendering Toolkit + + +Package: intel-renderkit +Architecture: amd64 +Version: 2023.1.1-18 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-renderkit-getting-started (>= 2023.1.1-18), intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing (>= 2023.1.0-43473), intel-oneapi-embree (>= 4.0.1-21), intel-oneapi-openvkl (>= 1.3.2-19), intel-oneapi-ospray-studio (>= 0.12.0-18), intel-oneapi-ispc (>= 1.19.0-19), intel-oneapi-rkutil (>= 1.7.0-18), intel-oneapi-openpgl (>= 0.5.0-19) +Filename: pool/main/intel-renderkit-2023.1.1-18_amd64.deb +Size: 2052 +MD5sum: 11575af7782d9fe697bd441719ee7afa +SHA1: 8318e4de821cf617964469160cfee881287f9e08 +SHA256: b1e7ead71946e2f5d2a49d25ac5dbe8640cb1c3e7b99143810d0c6b0b4459677 +SHA512: c76305a714f9993000afa47cf701e24c0cc4132d5768fa1b96ddaf6d601a1be5d46b10433ad9bb8fb96097f221453827ea0ae0457a43d30d9c9f6c1c5c62fd8a +Description: Intel® oneAPI Rendering Toolkit + + +Package: intel-oneapi-rkcommon +Architecture: amd64 +Version: 1.11.0-18 +Multi-Arch: +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-rkcommon-1.11.0 +Filename: pool/main/intel-oneapi-rkcommon-1.11.0-18_amd64.deb +Size: 1696 +MD5sum: ddb2260714fecf622777cfcb6053cf42 +SHA1: a10f417863359d76e34c7d696418ced405fadbb0 +SHA256: 2c0cfb0ec83bcd11721849fd2a8ce778b4acbd76d1ac6a0422def1ab50c76df3 +SHA512: 0d740fbcf2f85be48194a16489114a1a26b83ef6b19be26608274908a119deb6152615eb23c7b2e91348b274a3833884135be2585676092a69eead136e5cab0b +Description: Rendering toolkit common + + +Package: intel-oneapi-rkcommon-1.11.0 +Architecture: amd64 +Version: 1.11.0-18 +Multi-Arch: +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1141 +Depends: intel-oneapi-tbb-devel-2021.9.0, intel-oneapi-compiler-dpcpp-cpp-runtime-2023.1.0, intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing-2023.1.0 +Filename: pool/main/intel-oneapi-rkcommon-1.11.0-1.11.0-18_amd64.deb +Size: 177096 +MD5sum: 7445a6f3a229ef4594f68b6675c0f426 +SHA1: 92d703880904337c0c5de849851087d2edfd59fa +SHA256: b45545f8d569e4267a00864f0b6e76659bb7bc768a438e5d0af7e785aa06bf98 +SHA512: b174512637dce5a48ec5c48841c698a8f10986cbb91af02421b54e71029ebff0096677f7073c2a0ddc47a8b83fc74b9a356e0df1e477f57f4e3bebfb341fab94 +Description: Rendering toolkit common + + +Package: intel-oneapi-openpgl +Architecture: amd64 +Version: 0.5.0-19 +Multi-Arch: +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-openpgl-0.5.0 +Filename: pool/main/intel-oneapi-openpgl-0.5.0-19_amd64.deb +Size: 1704 +MD5sum: 26c4126d2e2bca729fac74643901c889 +SHA1: d47a4c8b8db969705f5815cefb3be7dac14410c3 +SHA256: 872171cf6d85fdc24b4e7c541bfb204837a1aa8484466ab03fe369d5cf713ee4 +SHA512: 0813490df4d1a4c29914e6ca60254da7685a7471dc9ac9c2db4c9c37f3df8d0220f4d0bedae1e3169583cfc86d5bd339c41488e6efea0f0a6c218c98ddb5848d +Description: Intel® Open Path Guiding Library + + +Package: intel-oneapi-openpgl-0.5.0 +Architecture: amd64 +Version: 0.5.0-19 +Multi-Arch: +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1826 +Depends: intel-oneapi-rkcommon-1.11.0, intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing-2023.1.0 +Filename: pool/main/intel-oneapi-openpgl-0.5.0-0.5.0-19_amd64.deb +Size: 310916 +MD5sum: ef4f7f83efbe54e55abe264ec65c828a +SHA1: 6af26c89e5d22864868f84bfa71b8a36abab47b9 +SHA256: d445248a31a1d382b8b908b1b2c72257f8e241080681845cfb1c801c22f2a66e +SHA512: b7001a0f715cc94231ade302ac4d5b66bd7230faba081ab775c9635c88d12e77abf65687dc71e2944c9f89da3bd93e63f964ac1005cbe54b5e337f6175b0a613 +Description: Intel® Open Path Guiding Library + + +Package: intel-oneapi-openvkl-1.3.2 +Architecture: amd64 +Version: 1.3.2-19 +Multi-Arch: +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 35932 +Depends: intel-oneapi-rkcommon-1.11.0, intel-oneapi-embree-4.0.1, intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing-2023.1.0 +Filename: pool/main/intel-oneapi-openvkl-1.3.2-1.3.2-19_amd64.deb +Size: 6593672 +MD5sum: d333766a7c51df8fc439179842148237 +SHA1: 442c7431d27bf60bddb628d520fb4d6ff5187ebc +SHA256: 6c5d968337652235ea88d9ad6c07e46f9ac13d7161f64b952e2574215d9b7de3 +SHA512: a021356c87e83e4060d109ba9606142d13bdd1d0993a526eebdef8471c072dfec602ee796683f7eaed657813df619865e13b87bc0db2575ba3cb18206fc7cc64 +Description: Intel® Open Volume Kernel Library + + +Package: intel-oneapi-openvkl +Architecture: amd64 +Version: 1.3.2-19 +Multi-Arch: +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-openvkl-1.3.2 +Filename: pool/main/intel-oneapi-openvkl-1.3.2-19_amd64.deb +Size: 1708 +MD5sum: df5f0e76ee97cb6e5add806317ce334c +SHA1: 3c7e9d44c1601a11bb41f8987e9f12651c405f5d +SHA256: 53e265c86f07dff3365813f51f10c1c75b864fccfd80915515ea7cf4b68d0822 +SHA512: ffaeed013ccef4e76a4eda2a727916ad851849659dacdf1b557c50b7a7d6fac298e34cf54ae5674fc509bcbbb728c7af4902db4a3c0a6caf8e73aeac70e3e76a +Description: Intel® Open Volume Kernel Library + + +Package: intel-oneapi-oidn-1.4.3 +Architecture: amd64 +Version: 1.4.3-18 +Multi-Arch: +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 54453 +Depends: intel-oneapi-rkcommon-1.11.0, intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing-2023.1.0 +Filename: pool/main/intel-oneapi-oidn-1.4.3-1.4.3-18_amd64.deb +Size: 45291354 +MD5sum: c36500a09127f504c711e13156ccf42e +SHA1: 272e40cbcbd2ae0ed63bb981c271ebaa7da2ca0d +SHA256: 67d3cf876d3036fefc7a8c124d2e0ad17dcee91391a03ff16b02ee2d6554d925 +SHA512: 4e6ba94daf976652ac26458a57624652d2816b0c46fc727a9aff39e77bab35e546103b2c5ea83172244486c40bbbb15c43b4cf54015df489c52430bd9b2459ce +Description: Intel® Open Image Denoise + + +Package: intel-oneapi-oidn +Architecture: amd64 +Version: 1.4.3-18 +Multi-Arch: +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-oidn-1.4.3 +Filename: pool/main/intel-oneapi-oidn-1.4.3-18_amd64.deb +Size: 1696 +MD5sum: 13ad7dec47a67d2ea595a7dcd25dbb5e +SHA1: 242a9a6cce41ed419afb01d81d2e9b267ef1cf9a +SHA256: 44b89730aed8e4c6eeb19dd5ddbb02e123b19c7dc51bfa168d9238874bf58d02 +SHA512: 5d05733d1b8aa6c68049a45bd843c8a61248c1fe91a1b3288a6cba2439cbae1baaea8b33b5976395ab616fae5190a0a6fdf009e1a2b16480da3f6d38d604ab25 +Description: Intel® Open Image Denoise + + +Package: intel-oneapi-ispc-1.19.0 +Architecture: amd64 +Version: 1.19.0-19 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 104421 +Depends: intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing-2023.1.0, intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing-2023.1.0 +Filename: pool/main/intel-oneapi-ispc-1.19.0-1.19.0-19_amd64.deb +Size: 19792200 +MD5sum: 4807d8f210ed6a7e1b37777e9b9567c1 +SHA1: d66b4205650c8abf7bb62085b70b0d6399831c28 +SHA256: 16c21e606bbfbf27ed72ce284b51463dfbefb04a34538a359620f2b950c5c5d7 +SHA512: 33fceef053f3616f4bd0b14ae537f5476946395fce91b12f97c79c0cacba2c0aef29badb99fb6d22131c71a5b004f090250eeaa6fbfdda0d69a8ccfb6b1fcc44 +Description: Intel® Implicit SPMD Program Compiler + + +Package: intel-oneapi-ispc +Architecture: amd64 +Version: 1.19.0-19 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ispc-1.19.0 +Filename: pool/main/intel-oneapi-ispc-1.19.0-19_amd64.deb +Size: 1732 +MD5sum: 3d514148a004a15f15bca4b04c83504c +SHA1: 055205bc5767242b8bb22a37b315ecc95bfd85e1 +SHA256: e30dd53e6f05492553c9759eb91975b015a93bfc1ea91a302459a056c9f245e6 +SHA512: 8331688eccc66ba82ae7b91712db70493d6b7a528caf177194da9c540dc4f2f722caab94450fac39922a7f87589fb6736395701114ce2a7d3020350723535281 +Description: Intel® Implicit SPMD Program Compiler + + +Package: intel-oneapi-rkutil-1.7.0 +Architecture: amd64 +Version: 1.7.0-18 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 92 +Depends: intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing-2023.1.0 +Filename: pool/main/intel-oneapi-rkutil-1.7.0-1.7.0-18_amd64.deb +Size: 14566 +MD5sum: ccf991843edeeeeb0e9638e9b9191b6c +SHA1: b9f5b7201e261c0c855f51dc99830d6094e5037b +SHA256: 83ced4b9e8235c8e6eb80a49a2b372629e8d100a6b1a15fecbf4e37d910c3f90 +SHA512: 9be2d07cb9f46e3864a156e2b04fc7bd74811c7b3ed423ad3a8264f368e971f877312cc610609870c952c36654ac54583c187994bd401428becdbfef88e86b73 +Description: Rendering Toolkit Utilities + + +Package: intel-oneapi-rkutil +Architecture: amd64 +Version: 1.7.0-18 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-rkutil-1.7.0 +Filename: pool/main/intel-oneapi-rkutil-1.7.0-18_amd64.deb +Size: 2156 +MD5sum: 81a3958840c499d4a30993a74c100ab2 +SHA1: 6b004e35383526a147505dd5b76d8eb3c22d0d05 +SHA256: e551f801e3c771a043db87f5f009502ed8f6b84b37119204bd46f8e0bafcbc5c +SHA512: 78d33184ed1d5c60b584b5e57948622b85b38573529bcefe7e6bab5e523061d66499444100e1153b41176c5feff233bad74e4e56d94c96c9191d07be670e16cf +Description: Rendering Toolkit Utilities + + +Package: intel-oneapi-embree +Architecture: amd64 +Version: 4.0.1-21 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-embree-4.0.1 +Filename: pool/main/intel-oneapi-embree-4.0.1-21_amd64.deb +Size: 1712 +MD5sum: 33405ea75f5eae9bf1fdc06fb0efa924 +SHA1: a2f0362046411816406ce162e56e72477cc50b54 +SHA256: 6aa546f12d3feaa2eb815cdcdb4ff09f988634adac20024a83bc44b8c3d6cc6d +SHA512: d29fe1d14dece51a62b9c3736a14a2dfb8d0c75fae6ff0b6650b8d46e2d1e44510b367a82c1c8e0690965531ce1669471238ab263e3b17176543d57e014e9c63 +Description: Intel® Embree + + +Package: intel-oneapi-embree-4.0.1 +Architecture: amd64 +Version: 4.0.1-21 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 295817 +Depends: intel-oneapi-rkcommon-1.11.0, intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing-2023.1.0 +Filename: pool/main/intel-oneapi-embree-4.0.1-4.0.1-21_amd64.deb +Size: 41225806 +MD5sum: a791a7212605d89dd02eae376065ce1a +SHA1: 808c56214dff9fc29bb023e2ec01c844b600120e +SHA256: 0c030f3b2be6450943d5ae6528cdcc9c3d96778c4a141f1f4f2de4b842e5eb81 +SHA512: 0153eb75e447d6f01d288dc4a14380e56c943721ac94a85b4b42b3cc323b4613a2a5741b4c6544a4821740c7a7a144a854fc3fb89a25b74c615ab35f9b7f55c9 +Description: Intel® Embree + + +Package: intel-oneapi-ospray +Architecture: amd64 +Version: 2.11.0-22 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ospray-2.11.0 +Filename: pool/main/intel-oneapi-ospray-2.11.0-22_amd64.deb +Size: 1704 +MD5sum: a0caaff2337509757a161b93067193df +SHA1: e0eac9fa314a3b14340c7aead1cd0f10ac3104f0 +SHA256: 8c9d9e35f8e7ddeb20fece8e82747274f2a6efd55cd5348f2ea5f26bcc8c09d0 +SHA512: 7e8a8b00958b3def9faef78cb3dc46625cfc66d416aa92a4d29f03898badbf9fbcad2c0e6df49b3681b3d265ae25493a25206cd2e18bc6e16a1cac91258f2fa2 +Description: Intel® OSPRay + + +Package: intel-oneapi-ospray-2.11.0 +Architecture: amd64 +Version: 2.11.0-22 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 24065 +Depends: intel-oneapi-embree-4.0.1, intel-oneapi-rkcommon-1.11.0, intel-oneapi-openvkl-1.3.2, intel-oneapi-oidn-1.4.3, intel-oneapi-mpi-2021.9.0, intel-oneapi-ispc-1.19.0, intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing-2023.1.0 +Filename: pool/main/intel-oneapi-ospray-2.11.0-2.11.0-22_amd64.deb +Size: 5158564 +MD5sum: f90ea5ec50cdad489295fc341bc138ee +SHA1: a5a925c89d8650817a67e8040b75cd7e1fa16a05 +SHA256: 1751677e118c4e04afb904a062e1452b59cdc135045153bae3d83e2c6ab90afd +SHA512: 66a284e2dab2e6e03fe44359885127a7ff59e3a3cf687b6e5d6934a577464198e2b293d1dc77ad36135a177cf780c7a6113895ba47caed2330748e31f12c43b9 +Description: Intel® OSPRay + + +Package: intel-oneapi-ospray-studio +Architecture: amd64 +Version: 0.12.0-18 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ospray-studio-0.12.0 +Filename: pool/main/intel-oneapi-ospray-studio-0.12.0-18_amd64.deb +Size: 2160 +MD5sum: aee5dd24a8e249e36931b8a10b765c51 +SHA1: 16f26c1b0c392e050531d49d3deb8e34475b8188 +SHA256: 36fefc380d60e540200231c0cf9029d2a84da18288d5cf7552834eb63402735f +SHA512: 4b263e241c287c46376ca6f96bbff2be54c4de9aabc6e8f513d11f7e22c47143a7f10229b92bea12cb37c55df75bb242e35cf08646a174cfa320848fe259deca +Description: Intel® OSPRay Studio + + +Package: intel-oneapi-ospray-studio-0.12.0 +Architecture: amd64 +Version: 0.12.0-18 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 8251 +Depends: intel-oneapi-ospray-2.11.0, intel-oneapi-common-vars (>= 2023.1.0-43473), intel-oneapi-common-licensing-2023.1.0 +Filename: pool/main/intel-oneapi-ospray-studio-0.12.0-0.12.0-18_amd64.deb +Size: 1982044 +MD5sum: c2c9f7873f5bc700b4ec2d26c75baa87 +SHA1: 0c58516ba772134d2901517f90342443ba51d051 +SHA256: 26f0d6462accb9e6972b91bd4bcf3d8c89e291d2c9c3e33eb559ab1674b730f7 +SHA512: 329437276a1f5ef3d6a90c1512af9c7023257c230af4bb768ed3e590f17ba62c00574751985203b513775cc7ba12a149ebade57391b04dbea82f5b7779919d2f +Description: Intel® OSPRay Studio + + +Package: intel-oneapi-dnnl-devel +Architecture: amd64 +Version: 2023.2.0-49516 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 6244 +Depends: intel-oneapi-dnnl (= 2023.2.0-49516), intel-oneapi-tbb-devel-2021.10.0, intel-oneapi-common-vars (>= 2023.2.0-0), intel-oneapi-common-licensing-2023.2.0 +Filename: pool/main/intel-oneapi-dnnl-devel-2023.2.0-49516_amd64.deb +Size: 226504 +MD5sum: e6362129bb30d510031e1ecd7df0c4e8 +SHA1: e8506067e1ac852d3deb488a3107bb4de7916447 +SHA256: ddf430a014b164ce5cadd7f2c188e2b2fa93c0bfdc891977429fbeed6a58e8d0 +SHA512: dd2bd6dce90ed6674918cc2bb4dc61517f98e02973f4ba5a07b49e9bb9796cc2d7d2333cbc6aaad5a2c0a6667d0f2164c9114203118227e2dbb647158f03c2da +Description: Intel® oneAPI Deep Neural Network Library Development Package + +Package: intel-oneapi-dnnl +Architecture: amd64 +Version: 2023.2.0-49516 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 265029 +Depends: intel-oneapi-tbb-2021.10.0, intel-oneapi-compiler-dpcpp-cpp-runtime-2023.2.0, intel-oneapi-common-vars (>= 2023.2.0-0), intel-oneapi-common-licensing-2023.2.0 +Filename: pool/main/intel-oneapi-dnnl-2023.2.0-49516_amd64.deb +Size: 33578278 +MD5sum: 4621a5a7395e27e0e63105f039449126 +SHA1: 340ea79b28628d0b686fd97e0f3637fd06b33c8a +SHA256: 2c468b0161df5c7c693ba3feb56a907e4827b05b1a79108323ea6f0a9c434171 +SHA512: 8a6d332af85f28da7217d70e7ed51908a2dd342bc5aacbcdaf5b172df6bfd41a7d2bf13d1b040c5c38cddafb3216f1bfb5553ddd4dcff8fdbd950150c9695065 +Description: Intel® oneAPI Deep Neural Network Library + +Package: intel-oneapi-runtime-dnnl +Architecture: amd64 +Version: 2023.2.0-49516 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 264918 +Depends: intel-oneapi-runtime-tbb (>= 2021.10.0-0), intel-oneapi-runtime-dpcpp-cpp (>= 2023.2.0-0) +Filename: pool/main/intel-oneapi-runtime-dnnl-2023.2.0-49516_amd64.deb +Size: 33566928 +MD5sum: 77e969ba02e0c7cad76111674a670732 +SHA1: 95621a95b70a4a205acd7a6fd740e4ceed69ed84 +SHA256: 5a475be7ea57f51daa357f11a8630b439fabd2396862ea30ad86079a4d0af719 +SHA512: 76169bcfcafcf54876d2d539bb6463657f6cac1f9d339ec8cf9a8921cbe9475b62bf030afeadde73cca2d39d6ffc4a48d90e2bf98e4b581b916c82c93e494174 +Description: Intel® oneAPI Deep Neural Network Library runtime + +Package: intel-oneapi-ispc-1.20.0 +Architecture: amd64 +Version: 1.20.0-49477 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 80341 +Depends: intel-oneapi-common-vars (>= 2023.2.0-0), intel-oneapi-common-licensing-2023.2.0, intel-oneapi-common-vars (>= 2023.2.0-0), intel-oneapi-common-licensing-2023.2.0 +Filename: pool/main/intel-oneapi-ispc-1.20.0-1.20.0-49477_amd64.deb +Size: 14357454 +MD5sum: 934a27db01d901df3654a8d251e57d8c +SHA1: 5dc399358035b43d74cf80ab9188a1e14707b253 +SHA256: 243b1a38efc572e3681f1dd697c97469b48ebcea1061840a2d10cb222df1eb00 +SHA512: 27cfcb5a8fe0da15970131549317c1e1b9a2f6806c81dd683f21344e34e72909897076b408f3aa0eb69d95d1c53f6509cf54a831e159fa2af816dd719d1026e9 +Description: Intel® Implicit SPMD Program Compiler + +Package: intel-oneapi-ispc +Architecture: amd64 +Version: 1.20.0-49477 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ispc-1.20.0 +Filename: pool/main/intel-oneapi-ispc-1.20.0-49477_amd64.deb +Size: 1736 +MD5sum: 1dd80f06d9fa2058334365a2d364027c +SHA1: 9e6b3a242fbac35d78fcdec451863a2da0634703 +SHA256: 04e09fdda2c5812de9108d289d8d72e478050bc4ac4197e28e6403063592b0ce +SHA512: 4ec743e719daa7f2df36b95dcc607dd0dc075792a723b0eafa04afe0b45e8dc873cbad20e4a59eec0b8f9c1a703eb538a92611b69efeb7741f0b70758b21b5e3 +Description: Intel® Implicit SPMD Program Compiler + +Package: intel-oneapi-dpcpp-ct +Architecture: amd64 +Version: 2023.2.0-49330 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-dpcpp-ct-2023.2.0 +Filename: pool/main/intel-oneapi-dpcpp-ct-2023.2.0-49330_amd64.deb +Size: 2272 +MD5sum: 7e26d3da6ee26d1069ded83f1d8a61e7 +SHA1: c040affe58c52f3285951b1ec13b95ce47f22015 +SHA256: 11d8712d8900cb593fcac09af9dfa31c5422ef70fe826f75ba42b7078b7dd31b +SHA512: f2337bc1061cd4f9e2276ff21d458d143a1a8c77b479b40667fa7c5058e38a6cb1db8be665023f2aafc3dabe4eaba3f929525881598b9b8b5a8a85f08ed9820b +Description: Intel® DPC++ Compatibility Tool + +Package: intel-oneapi-dpcpp-ct-2023.2.0 +Architecture: amd64 +Version: 2023.2.0-49330 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 172872 +Depends: intel-oneapi-dpcpp-ct-eclipse-cfg (>= 2023.2.0-49330), intel-oneapi-common-vars (>= 2023.2.0-0), intel-oneapi-common-licensing-2023.2.0 +Filename: pool/main/intel-oneapi-dpcpp-ct-2023.2.0-2023.2.0-49330_amd64.deb +Size: 32157734 +MD5sum: 82cfbb0bb182e5a9086ce232ea0c6efe +SHA1: c83b71976e512e3a3da2bc09748135d26b12d2db +SHA256: 701145ea2b3003e90dadf7e28496e028e6ec6ea51333982aa7ee00545a7f2878 +SHA512: 6df3cd58d7daf0efb134cf64a208edb43fe4fd1ad4916b2a039b11aa385d1c3c5c9a631ca011ae01b113392e2a8e68498cfbfb3aa13b1d771b58c1770060ab55 +Description: Intel® DPC++ Compatibility Tool + +Package: intel-oneapi-runtime-ccl +Architecture: amd64 +Version: 2021.10.0-49084 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 15585 +Depends: intel-oneapi-runtime-mpi +Filename: pool/main/intel-oneapi-runtime-ccl-2021.10.0-49084_amd64.deb +Size: 3025924 +MD5sum: 2b7b15f38f8a72434c2d3106b9adb717 +SHA1: be900f07b318b8ad73add81e68a2efcf0a0d2540 +SHA256: 5057eb0f0e4481cec319cb9d72ca2d6d08f3b2c1338097fbae7ef919a79f2a14 +SHA512: 2eb0564d217540acfaf65d215bd80ab2de3f3d03fc89c3d01aa97204edab37ce478c14ebdfd5a3862e27c1542f9b620deb5a19b9bacc95befd71c1a87dcbdc6f +Description: Intel® oneAPI Collective Communications Library runtime + +Package: intel-oneapi-ccl-devel +Architecture: amd64 +Version: 2021.10.0-49084 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ccl-devel-2021.10.0 +Filename: pool/main/intel-oneapi-ccl-devel-2021.10.0-49084_amd64.deb +Size: 1740 +MD5sum: 00685c508dd8763fe72d3154edd6b440 +SHA1: 860415c3ba4204794bfed87f119310d58d4ac8cd +SHA256: 24759ae86fe0ac34145a6cdc190e452caba04c209899989f99ab6509360db54f +SHA512: ca94e30652b9edc6f976c6d4d471f12371cd0768df10a93148f475f503d98184ae19ad6a46380f1fed1c043e7fad972bde197c3ab356bf93659ee7b67ea43cf0 +Description: Intel® oneAPI Collective Communications Library + +Package: intel-oneapi-ccl-devel-2021.10.0 +Architecture: amd64 +Version: 2021.10.0-49084 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 33091 +Depends: intel-oneapi-ccl-2021.10.0, intel-oneapi-mpi-devel-2021.10.0, intel-oneapi-common-vars (>= 2023.2.0-0), intel-oneapi-common-licensing-2023.2.0 +Filename: pool/main/intel-oneapi-ccl-devel-2021.10.0-2021.10.0-49084_amd64.deb +Size: 2863652 +MD5sum: 7ea55ed0dfa7e8457063f319734d5b49 +SHA1: 78bdd7cb27e2781a063e1d684729d5d8cd387abc +SHA256: bd882f526127e1159be0582cf7a0393c140e21a33afe8cb32e4e4f77431c55cd +SHA512: 8120c33f8f5f7761151b86c9930ca496ecc2fe633c902027f1ac8f1b5eb6fcdf6eb1d2c7e5e56890c67674bad01d1b1d8fe69fcf392835171ec37a474e77963e +Description: Intel® oneAPI Collective Communications Library + +Package: intel-oneapi-ccl +Architecture: amd64 +Version: 2021.10.0-49084 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ccl-2021.10.0 +Filename: pool/main/intel-oneapi-ccl-2021.10.0-49084_amd64.deb +Size: 1744 +MD5sum: f14333a2bc26c094b40a573ea27f307b +SHA1: ac5c7caaac62927e5c08a62b1ca4e8529a0964a3 +SHA256: 0ffa7e51474f60275b55cb3648c407377edbc8e8652f66f07fc9cf0d8791c7b1 +SHA512: dc1a2942cfcd1984f93825a64de072e1cc969150d45f9f7031c60ea482334e178fb87cba32bfed90091a64b7815bf6b6d0b2533f61e5f7b335458e7f75010daf +Description: Intel® oneAPI Collective Communications Library Runtime Environment + +Package: intel-oneapi-ccl-2021.10.0 +Architecture: amd64 +Version: 2021.10.0-49084 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 15602 +Depends: intel-oneapi-mpi-devel-2021.10.0, intel-oneapi-common-vars (>= 2023.2.0-0), intel-oneapi-common-licensing-2023.2.0 +Filename: pool/main/intel-oneapi-ccl-2021.10.0-2021.10.0-49084_amd64.deb +Size: 2774500 +MD5sum: 19555093e1a5bad2d50785c9dcd5c2b6 +SHA1: 5e77997f59644fb140a281df93e00218c0b7303d +SHA256: db263bca7a3536bdc8942347edb878e7f2ade683906ab1a2f769a68a5653f7dc +SHA512: 9815ed3c82c07237b172df8e386e1cd98998209d64997afbf2797d470e98944dc8e41a5cd5c6207d619729b91a5747377a34a16c8e756704324e6ab9c6659b48 +Description: Intel® oneAPI Collective Communications Library Runtime Environment + +Package: intel-oneapi-tbb-2021.10.0 +Architecture: amd64 +Version: 2021.10.0-49541 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 6041 +Depends: intel-oneapi-tbb-common-2021.10.0, intel-oneapi-condaindex (>= 2023.2.0-0), intel-oneapi-common-vars (>= 2023.2.0-0), intel-oneapi-common-licensing-2023.2.0 +Filename: pool/main/intel-oneapi-tbb-2021.10.0-2021.10.0-49541_amd64.deb +Size: 2032784 +MD5sum: 4415b790d44563ebd62b1ffb1b5627ee +SHA1: e3cac9eddabbc0b1a7dc9f49e813ade7dc2e343a +SHA256: 199fb74900e1bb6eaf6c4378681178b3e76dd58d2637385f19980150d92fddbf +SHA512: 6f531182bf052db80dc37089ef82c72afca2436ba62fd76a416f9f01590fd8ea92abdc84401f13544178d35015c5532f891186b970e8d9f4c9613656665cb586 +Description: Intel® oneAPI Threading Building Blocks + +Package: intel-oneapi-tbb-devel-2021.10.0 +Architecture: amd64 +Version: 2021.10.0-49541 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 5147 +Depends: intel-oneapi-tbb-2021.10.0, intel-oneapi-tbb-common-devel-2021.10.0, intel-oneapi-condaindex (>= 2023.2.0-0), intel-oneapi-common-vars (>= 2023.2.0-0), intel-oneapi-common-licensing-2023.2.0 +Filename: pool/main/intel-oneapi-tbb-devel-2021.10.0-2021.10.0-49541_amd64.deb +Size: 900360 +MD5sum: aad9befcbd76ede2181506cf35f95b8d +SHA1: cb349aa5ca69bb8a5c73e6a41ad5aa0432473b19 +SHA256: 0e6d7d70b3bd95f1569e491708bc7576987366c010eca539c7bd4eade09d18ff +SHA512: 7da7f3a9bdf53dd35e5ef14b3421e388a10d0dba4dc4a32c03c4630ade657f178b2dd1ab9fcbae28430f481a47d80780fcfc0268e1843685abe60d158eb8635f +Description: Intel® oneAPI Threading Building Blocks Development Package + +Package: intel-oneapi-tbb-devel-32bit-2021.10.0 +Architecture: amd64 +Version: 2021.10.0-49541 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 4712 +Depends: intel-oneapi-tbb-32bit-2021.10.0, intel-oneapi-tbb-common-devel-2021.10.0, intel-oneapi-condaindex (>= 2023.2.0-0), intel-oneapi-common-vars (>= 2023.2.0-0), intel-oneapi-common-licensing-2023.2.0 +Filename: pool/main/intel-oneapi-tbb-devel-32bit-2021.10.0-2021.10.0-49541_amd64.deb +Size: 870396 +MD5sum: e9e6f337ba69f1337d62062943e294bf +SHA1: 9559f514c4e5d23246a804a41811acf28d9ac0fe +SHA256: 6a6e06a2974ae59988eb157094a1c8a3a97c8b01fafed2744fb2a30080dad201 +SHA512: 07242aad54b46e1753e6d214c61667c253d41b4ceea0452080c58fa1d25318845cb65927b5008b57fe64a69c20605113a114d0a6253f699693359940b015983d +Description: Intel® oneAPI Threading Building Blocks Development Package for IA-32 + +Package: intel-oneapi-runtime-tbb +Architecture: amd64 +Version: 2021.10.0-49541 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 4828 +Depends: intel-oneapi-runtime-tbb-common (= 2021.10.0-49541) +Filename: pool/main/intel-oneapi-runtime-tbb-2021.10.0-49541_amd64.deb +Size: 820894 +MD5sum: 680db783e92166537d8a74b1f84858ba +SHA1: 1259496c44dcdf3183921192b8fda231b90e3214 +SHA256: 336a1b145f5014824a9159f88a06e83713a57b86069154bde0e920361a9f44bd +SHA512: 17473ffacc6242eef777094dac03878e63149402ecdc9b404dc48654f220b338e21ea8eee5a6cd7aa1f85b6022c4c8149a3528a1d63857f659f63b5f684179a6 +Description: Intel® oneAPI Threading Building Blocks runtime + +Package: intel-oneapi-tbb-devel-32bit +Architecture: amd64 +Version: 2021.10.0-49541 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-tbb-devel-32bit-2021.10.0 +Filename: pool/main/intel-oneapi-tbb-devel-32bit-2021.10.0-49541_amd64.deb +Size: 2664 +MD5sum: 657fcc882daa81a4ce92a70f0bf520ed +SHA1: 227bc45273f0507c73139d59462b307d27d07614 +SHA256: 6743d2dbbaf72d348d531ecafe3e8af06ee67e8424247f18ceffa8cdc2cd8ce5 +SHA512: e6a400454416555608ab6a52d1f765607295390388016644e18f582edf48c6ab1a3f23c4f4a6c9bcd0b7636a44995f9be4beb18d2d56613bbee9b23a79ef423a +Description: Intel® oneAPI Threading Building Blocks Development Package for IA-32 + +Package: intel-oneapi-tbb +Architecture: amd64 +Version: 2021.10.0-49541 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-tbb-2021.10.0 +Filename: pool/main/intel-oneapi-tbb-2021.10.0-49541_amd64.deb +Size: 2280 +MD5sum: a17ee1fc6e311e5c89541990df086892 +SHA1: d3359dd92293558ef52018dcca38fff8768e1156 +SHA256: 7b7c9997c1c1ab68401999dcf24ad926691c741c7c16960fee0f4fbeedd0029e +SHA512: b892a6369a3a2449b612bacc60aea949235dc8de5018dd15a35c73e78f9773d66ee43a469e05de79cc8f3979ef912a58bdb973a4ce101a19601082f7ec44136e +Description: Intel® oneAPI Threading Building Blocks + +Package: intel-oneapi-tbb-devel +Architecture: amd64 +Version: 2021.10.0-49541 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-tbb-devel-2021.10.0 +Filename: pool/main/intel-oneapi-tbb-devel-2021.10.0-49541_amd64.deb +Size: 2652 +MD5sum: fac90c10c5ffa8758fff47a0116c3093 +SHA1: 81f826d23077358d75f9d648e241de4ba9556c24 +SHA256: 6c35854cce3d616fdb7305ff41e147be68f54ccca1491625dfe044df7d6cae14 +SHA512: 38b418916d3934be470bcd10b5ef51b3b6661b2411a505a4f4dcd32012302a3beb2a7ad749c50ce69d8d6ff4250f03b312fb45f144ad6116f4787347a3b1a11e +Description: Intel® oneAPI Threading Building Blocks Development Package + +Package: intel-oneapi-openvkl-1.3.2 +Architecture: amd64 +Version: 1.3.2-49396 +Multi-Arch: +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 36149 +Depends: intel-oneapi-rkcommon-1.11.0, intel-oneapi-embree-4.1.0, intel-oneapi-common-vars (>= 2023.2.0-0), intel-oneapi-common-licensing-2023.2.0 +Filename: pool/main/intel-oneapi-openvkl-1.3.2-1.3.2-49396_amd64.deb +Size: 6623132 +MD5sum: 8753c91e5be2a5e6e366ea523801325d +SHA1: 5874b8c43b136a6c77ed0e8ccab5fa873d14bbe3 +SHA256: 30e8d0fcacf4d77c297b34b8f83790593eae50eee503c5fd27206da496bd701d +SHA512: 5d9e10b07648dc22db9e13a4b69412c662f33f256c017be8d5efda7e05b5649313b7446313be63a223bafbb611f7fb35056cd81e8f1cfcea186dd434c42beda8 +Description: Intel® Open Volume Kernel Library + +Package: intel-oneapi-openvkl +Architecture: amd64 +Version: 1.3.2-49396 +Multi-Arch: +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-openvkl-1.3.2 +Filename: pool/main/intel-oneapi-openvkl-1.3.2-49396_amd64.deb +Size: 1708 +MD5sum: ab9bfe53757ba28237675e191e73f2c6 +SHA1: 791a3a464dd340700145c234dedab6805bc6217d +SHA256: 997a95426f4fe1a621920d529cf2df9c52c9ba55616ce162cbd45db44204e0a9 +SHA512: cc9c1dfa4ee4213a11f7fd6905c80d1a03dbe5469f82ec8e2a9aa32dce8e2a8194f0a9d0ac75a646768243e34c527a95556605ea709aa39004d1a8ffcca1cbbc +Description: Intel® Open Volume Kernel Library + +Package: intel-oneapi-libdpstd-devel +Architecture: amd64 +Version: 2022.2.0-49284 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-libdpstd-devel-2022.2.0 +Filename: pool/main/intel-oneapi-libdpstd-devel-2022.2.0-49284_amd64.deb +Size: 1740 +MD5sum: 6c8c2313c012e6253fd17bcc6bd744d5 +SHA1: 0823b96b07462dfb69c239b47756d3d7f0df740e +SHA256: a3ef62073f63e712d59e9d718a136ec965c1206145ab20bdd5006b0516254f78 +SHA512: ab2995b28f1b8a7362bd6f9b43b4a1bb5d81b916606a02aec50d8e42e0089806e97243491088d6b89a2cf0c110ae8a0b89138cee54a9419fe9e9dc15dd72406c +Description: Intel® oneAPI DPC++ Library 2022.2.0 for Linux* + +Package: intel-oneapi-runtime-dpcpp-library +Architecture: amd64 +Version: 2022.2.0-49284 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-runtime-dpcpp-cpp, intel-oneapi-runtime-tbb +Filename: pool/main/intel-oneapi-runtime-dpcpp-library-2022.2.0-49284_amd64.deb +Size: 1740 +MD5sum: 0def0ed6ffeca8e18464a4a0bf4a5744 +SHA1: 0475633e2210edde9625d2dcd0746aabaa3a3ce6 +SHA256: 00e1581737f809b6ef701f7cf43f05aadc5b31fbbb13cadeb8b8d90df48cc22b +SHA512: 9e2f197a2034b1937b6e07ed3269b3405e8f0ab6147d3499bcaeea72b20c2accc5c199263822a227d275c8ac667f4f70a9c2f3177ad07f8d31e2c5db05e4a4b8 +Description: Intel® oneAPI DPC++ Library runtime + +Package: intel-oneapi-libdpstd-devel-2022.2.0 +Architecture: amd64 +Version: 2022.2.0-49284 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 2350 +Depends: intel-oneapi-condaindex (>= 2023.2.0-0), intel-oneapi-common-vars (>= 2023.2.0-0), intel-oneapi-common-licensing-2023.2.0 +Filename: pool/main/intel-oneapi-libdpstd-devel-2022.2.0-2022.2.0-49284_amd64.deb +Size: 231072 +MD5sum: 00cdca64c7c65fc3fc479780ac2a325d +SHA1: 8a3b380736267284fb0e9ccdc1b67a4c366f2323 +SHA256: aa7c4d6540eae7c54bff02602ff8c5403bf6987476f27a02887ca514d9e1dfed +SHA512: afd20ecf8502cb546949a90f92ecc99f525163202ff2a11e2ca656018ac37b64e533faab114e6ffd04797b41bb92851324a3cac9171c92b0dc765d85a0b999cf +Description: Intel® oneAPI DPC++ Library 2022.2.0 for Linux* + +Package: intel-oneapi-advisor +Architecture: amd64 +Version: 2023.2.0-49486 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 997359 +Depends: intel-oneapi-common-vars (>= 2023.2.0-0), intel-oneapi-common-licensing-2023.2.0 +Filename: pool/main/intel-oneapi-advisor-2023.2.0-49486_amd64.deb +Size: 227248666 +MD5sum: 9de3ac9c6c0a02a994e78d2525f0820f +SHA1: aa129805a1823ac2efbeb54f1463fd73a1dc230c +SHA256: cec155294c0b05be0aee00af2f859a684efd9668998057538010438c60980807 +SHA512: 50470633ad9d67b2fc64ccf81b240f623b116fb29dd76b7516ba740d528090c6630f3c498cff2edac6e261eb57a57ece93f118b7c8b0154d43c1e91a92e1ae9b +Description: Intel® Advisor + +Package: intel-oneapi-ippcp +Architecture: amd64 +Version: 2021.8.0-49490 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ippcp-2021.8.0 +Filename: pool/main/intel-oneapi-ippcp-2021.8.0-49490_amd64.deb +Size: 2560 +MD5sum: 76865b3cad46c3f1cb1b49e7240d1c50 +SHA1: 6800ca04a8739fbfea6d757f8bd7f2cc9bb42f83 +SHA256: 7966c270161bdd3d69b332c9d5271f4d5b9f018f449e55b14645bc54b070b8e7 +SHA512: 5be6172097062dcf725d62bb29b0e1ce6d92a8af1b177f0039bf93e7cee47552f06c2d448f699147b5267892ff21dfbb108048f565c6f39a681dcf7048fc389b +Description: Intel® Integrated Performance Primitives Cryptography + +Package: intel-oneapi-ippcp-devel-2021.8.0 +Architecture: amd64 +Version: 2021.8.0-49490 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 59880 +Depends: intel-oneapi-ippcp-2021.8.0, intel-oneapi-ippcp-common-devel-2021.8.0, intel-oneapi-condaindex (>= 2023.2.0-0), intel-oneapi-common-vars (>= 2023.2.0-0), intel-oneapi-common-licensing-2023.2.0 +Filename: pool/main/intel-oneapi-ippcp-devel-2021.8.0-2021.8.0-49490_amd64.deb +Size: 9178536 +MD5sum: 987feab3a6a03d5fb2da0c3993f981df +SHA1: a3f9f4add92c996860896bab3f15710467989d03 +SHA256: 77fa23696f034c7ece73e4b9ca1d0981a5c326326551bbb5436db9a6ff536e52 +SHA512: 3cfef8dcc84d10d79602b6d9976b7fcd7c00f935b27c37ab44003043db86803b5a7cd888888bd6670ef782eb66ecb314ef508ecf0249e45620c6d450a1f64bca +Description: Intel® Integrated Performance Primitives Cryptography Development Package + +Package: intel-oneapi-ippcp-devel +Architecture: amd64 +Version: 2021.8.0-49490 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ippcp-devel-2021.8.0 +Filename: pool/main/intel-oneapi-ippcp-devel-2021.8.0-49490_amd64.deb +Size: 2688 +MD5sum: 47ed987e1313b244c1b3e82ac42ee78d +SHA1: f238f028328daa72ac66187df2cf827b3ba308d4 +SHA256: 6a199d5af23d1d5a8c41a06cc4bed0c0a43a2131663301d04c29f13d13b431ce +SHA512: ca5a3592f727744d7861141bf18f7bbe538921b99c80388ccf3e6b846545dc5a6e3e050ecf4768dc2c0d854bb8d9911897437b41fb2f2f0bab61d08997850f6d +Description: Intel® Integrated Performance Primitives Cryptography Development Package + +Package: intel-oneapi-ippcp-2021.8.0 +Architecture: amd64 +Version: 2021.8.0-49490 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 15794 +Depends: intel-oneapi-ippcp-common-2021.8.0, intel-oneapi-condaindex (>= 2023.2.0-0), libssl-dev, intel-oneapi-common-vars (>= 2023.2.0-0), intel-oneapi-common-licensing-2023.2.0 +Filename: pool/main/intel-oneapi-ippcp-2021.8.0-2021.8.0-49490_amd64.deb +Size: 4090044 +MD5sum: 6a235c154e86428d8c4c6064de4a369b +SHA1: a591ceecd964c8c271d6b4274a4f233975c58860 +SHA256: db2ef705d720dc20e4c9cdf640ce77fa10cf706de7f1a8b1095a3e2a3f006a91 +SHA512: 6a89bbfd6ac08d8b599932959f647a11aa9ea55a23965886ba2d3e8d92bce75ed2f40fb35e16781be6d234ec292912782e3c03156ef0f04291c1a327e3d30bd6 +Description: Intel® Integrated Performance Primitives Cryptography + +Package: intel-oneapi-ippcp-devel-32bit-2021.8.0 +Architecture: amd64 +Version: 2021.8.0-49490 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 24739 +Depends: intel-oneapi-ippcp-32bit-2021.8.0, intel-oneapi-ippcp-common-devel-2021.8.0, intel-oneapi-condaindex (>= 2023.2.0-0), intel-oneapi-common-vars (>= 2023.2.0-0), intel-oneapi-common-licensing-2023.2.0 +Filename: pool/main/intel-oneapi-ippcp-devel-32bit-2021.8.0-2021.8.0-49490_amd64.deb +Size: 4389840 +MD5sum: 8b54c46c13288653da697c38f0b1520e +SHA1: 3dd4ea339cb511361d9151d7eb9aa243435eb6ed +SHA256: b50edd2c7dac22f8329d93c5c1619ed414e8836e4174e80e6964f32a16001fa8 +SHA512: 8afc9c024aa4942dc54490a113371d48ce70b63d57d3609d1c7cd972fe86abbdae15eece76268e6da153f6ce977ce7420af716a8ba1481daf50369f93c432387 +Description: Intel® Integrated Performance Primitives Cryptography Development Package for IA-32 + +Package: intel-oneapi-ippcp-devel-32bit +Architecture: amd64 +Version: 2021.8.0-49490 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ippcp-devel-32bit-2021.8.0 +Filename: pool/main/intel-oneapi-ippcp-devel-32bit-2021.8.0-49490_amd64.deb +Size: 2700 +MD5sum: 1ecc4bb95a71359a5165391a618fa7a2 +SHA1: 0b84748228c595a1e47a8766f51bbf75b18881cf +SHA256: b6a5999037e08d5773ad3c97d544e048e68ed546fbc50ff3e7846c90356f571a +SHA512: 82be4ee518a6c9f8efff82f5020b4d80431c249812bb96acb4e26cb43d74aa4b05d1644624a546cb31edb4eef098477fc1cc99641f06d31c0febf07aaf0bef9a +Description: Intel® Integrated Performance Primitives Cryptography Development Package for IA-32 + +Package: intel-oneapi-runtime-ipp-crypto +Architecture: amd64 +Version: 2021.8.0-49490 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 15771 +Depends: intel-oneapi-runtime-ipp-crypto-common (= 2021.8.0-49490) +Filename: pool/main/intel-oneapi-runtime-ipp-crypto-2021.8.0-49490_amd64.deb +Size: 4090812 +MD5sum: d403e914cc294f8568a45353ccdf5b13 +SHA1: 29561810ee19d579f3f51c436a5044c31274d1a4 +SHA256: 7018460ba3916e60c85c6b57d3ae962ef357ec6ab720ec3a41e6432fba5f9bdd +SHA512: f5cdd47362632f0efe6b3b85f4887e94c0890bdcc40185c04bd9adc62afefdc67f57e2f8a4f6e27b21e0f186ef69aff63a6597c123d9af4b79e3ea70735c35cf +Description: Intel® Integrated Performance Primitives Cryptography runtime + +Package: intel-oneapi-openpgl-0.5.0 +Architecture: amd64 +Version: 0.5.0-49408 +Multi-Arch: +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 2263 +Depends: intel-oneapi-rkcommon-1.11.0, intel-oneapi-common-vars (>= 2023.2.0-0), intel-oneapi-common-licensing-2023.2.0 +Filename: pool/main/intel-oneapi-openpgl-0.5.0-0.5.0-49408_amd64.deb +Size: 351616 +MD5sum: f60edee785e70c1d12c3b956341d0ffd +SHA1: 3465351e1164e6dc82cd60ed23a8bf027c38dcc6 +SHA256: ccc85843f8c76bb44e461e1e52389bdd339c16e7bda633789b5b87c304424ed2 +SHA512: 8d2ab02ab4a80a170c3782b07c89ceb6a030aacd102940241ce34cb186efedf4330035ea7ba1eb3d3a5bc966d2c9370b0beb3e3cd487b1dc1ec084582ab6ea3b +Description: Intel® Open Path Guiding Library + +Package: intel-oneapi-openpgl +Architecture: amd64 +Version: 0.5.0-49408 +Multi-Arch: +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-openpgl-0.5.0 +Filename: pool/main/intel-oneapi-openpgl-0.5.0-49408_amd64.deb +Size: 1708 +MD5sum: 247145766ef57afdad140dc03564d341 +SHA1: 06ff2af947aaaafa15e0a5fb511d91353251a926 +SHA256: 95970d81594b5d062aa4722279a96101bf92547ea6238de7828701dc0c5d4481 +SHA512: 8f7bbe3b229be1f9f604334ac5e8098508a3c52c45ad4b4517d1020fac75625ff961eb89f29d169b62200ae27c72a3216419edf513464eab81029c44755fd0d4 +Description: Intel® Open Path Guiding Library + +Package: intel-oneapi-runtime-libs +Architecture: amd64 +Version: 2023.2.0-49016 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-runtime-dpcpp-library (>= 2022.2.0-0), intel-oneapi-runtime-mpi (>= 2021.10.0-0), intel-oneapi-runtime-tbb (>= 2021.10.0-0), intel-oneapi-runtime-dpcpp-cpp (>= 2023.2.0-0), intel-oneapi-runtime-fortran (>= 2023.2.0-0), intel-oneapi-runtime-openmp (>= 2023.2.0-0), intel-oneapi-runtime-dal (>= 2023.2.0-0), intel-oneapi-runtime-ipp (>= 2021.9.0-0), intel-oneapi-runtime-mkl (>= 2023.2.0-0), intel-oneapi-runtime-ipp-crypto (>= 2021.8.0-0), intel-oneapi-runtime-ccl (>= 2021.10.0-0), intel-oneapi-runtime-dnnl (>= 2023.2.0-0) +Filename: pool/main/intel-oneapi-runtime-libs-2023.2.0-49016_amd64.deb +Size: 1812 +MD5sum: e34bdfd758b8e906c9649c1e88c6974c +SHA1: eba052cead48c495f7b103b78921c21a298e6395 +SHA256: c49d7076fd740faf059031805cc5280f214f829acdd0ee8b9474feff205e2173 +SHA512: 7c8ecba4958d05567600f49a33ba6f2286a26a9182b3f9ce523219f04e3b4ba150930808870aa7da87580071035bfe1662324fe6280bb5bb08577ac774762296 +Description: Intel® oneAPI Runtime Libraries + +Package: intel-oneapi-itac-2021.10.0 +Architecture: amd64 +Version: 2021.10.0-11 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 552027 +Depends: intel-oneapi-common-vars (>= 2023.2.0-0), intel-oneapi-common-licensing-2023.2.0 +Filename: pool/main/intel-oneapi-itac-2021.10.0-2021.10.0-11_amd64.deb +Size: 50701414 +MD5sum: c6a0e2561f944434bc4ff704c4a48ae3 +SHA1: 914a8d0fdbf7f25f3723dae711f0eaba98b38b7c +SHA256: e239495ea1ca6146ed14d9df60b0bd99260bd7d1d098a0b4c20e7147c74363f4 +SHA512: 4d131e8ff972aa809fd1d75c7eae4ecb30d51ab30cf11773ebf9bea32e6fbf1cf00935baa31fd14ff38ea95271998dc0e170e9b7bfb7f0e788d56b214bd14dd5 +Description: Intel® Trace Analyzer and Collector + +Package: intel-oneapi-itac +Architecture: amd64 +Version: 2021.10.0-11 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-itac-2021.10.0 +Filename: pool/main/intel-oneapi-itac-2021.10.0-11_amd64.deb +Size: 1724 +MD5sum: cbfc117f034010d26039e945bf0d5b91 +SHA1: a5a734c5eedac4e73abe00de55b0c8ed935e6b5f +SHA256: a15f109859eebd126b6b8d8c8e1f2a95c0c6bbe68e9eb633b01f1183636c9a1e +SHA512: d0ff0b3e9ed93ad6a874733a6466d2e74173195a1112aef96101e181a406fa3eb4c2a57f36edae70eade3b5631c59e6bf011adfae510086d0b876913ecfb49b5 +Description: Intel® Trace Analyzer and Collector + +Package: intel-oneapi-inspector +Architecture: amd64 +Version: 2023.2.0-49301 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 345050 +Depends: intel-oneapi-common-vars (>= 2023.2.0-0), intel-oneapi-common-licensing-2023.2.0 +Filename: pool/main/intel-oneapi-inspector-2023.2.0-49301_amd64.deb +Size: 78368748 +MD5sum: 1f43f4e01d7ab1b77cebe2b9b34f879a +SHA1: 0c2b0602b9160315842655dc69c880bb7e5c50b3 +SHA256: c8112c2a8b94d11108d478f58c24503280493a3537a24b8cfb0a79e783487ec0 +SHA512: 17ea9d508abaf42664c20cc1e668d9a7cff9af0664444707f5b70c74b9f63bd79ca6b9dfd8f5615c1e0a76cc85bc1236987dacbd017db34e445cdb0131b64e8d +Description: Intel® Inspector + +Package: intel-oneapi-mkl-2023.2.0 +Architecture: amd64 +Version: 2023.2.0-49495 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1414090 +Depends: intel-oneapi-mkl-common-2023.2.0, intel-oneapi-tbb-2021.10.0, intel-oneapi-compiler-dpcpp-cpp-runtime-2023.2.0, intel-oneapi-condaindex (>= 2023.2.0-0), intel-oneapi-common-vars (>= 2023.2.0-0), intel-oneapi-common-licensing-2023.2.0 +Filename: pool/main/intel-oneapi-mkl-2023.2.0-2023.2.0-49495_amd64.deb +Size: 188203098 +MD5sum: 6614bbf9b15d80714831082e96f5387c +SHA1: 7c677ff671db4ea56d96582c6ad376598ab835e0 +SHA256: 6d65a60faa308c9faf2224ad79ea3fad16742715fc3d10e53926225b5f28525d +SHA512: 2cba064e617301d803917e7dcfb96e785a3c8c431617cd03a349ffaf871cd2a73c6992c277b73d9933b09e5c7efd33ff71a07e15dff5c1af1cae123fff9578a1 +Description: Intel® oneAPI Math Kernel Library runtime package for Intel(R) 64 + +Package: intel-oneapi-mkl-devel-32bit-2023.2.0 +Architecture: amd64 +Version: 2023.2.0-49495 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 609744 +Depends: intel-oneapi-mkl-32bit-2023.2.0, intel-oneapi-mkl-common-devel-2023.2.0, intel-oneapi-condaindex (>= 2023.2.0-0), intel-oneapi-common-vars (>= 2023.2.0-0), intel-oneapi-common-licensing-2023.2.0 +Filename: pool/main/intel-oneapi-mkl-devel-32bit-2023.2.0-2023.2.0-49495_amd64.deb +Size: 73210294 +MD5sum: 6f6a3216d5b1227e9b0b2fd5162346bd +SHA1: 8062ad9763082193323cb5694ecfbfb2dba61199 +SHA256: da7f16e39a297e6019d9200869553b5bfb39758b2375d9c1bccda38583c3c942 +SHA512: 90a068c3b77a4d63124fca6da3168b417caf23f926335e6ae38b0c362700f4966ac0798e37a008e99122933b43d8e0b52e13367dc2837f0eb603eea58de762b7 +Description: Intel® oneAPI Math Kernel Library 2023.2.0 for Linux* development package for IA-32 + +Package: intel-oneapi-mkl +Architecture: amd64 +Version: 2023.2.0-49495 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-mkl-2023.2.0 +Filename: pool/main/intel-oneapi-mkl-2023.2.0-49495_amd64.deb +Size: 2300 +MD5sum: a0aee2fc1e024eec5eeef78fda90165b +SHA1: 8d58418c0f221b6795b57d25f4bf2fd0a35799d8 +SHA256: 757adbdd93bc5b36c480d6b34c8281ef9d746383118ae96621876ac11cb6fd39 +SHA512: 2a99009b9ec5950dbf852c0b7c3d76b1796e1f7ca73b3fd1324abe7b2adea9031537f97ec9c03cd17f324d633165224c4cf4dc3e46c88ac54f8d35c2a42d7fb8 +Description: Intel® oneAPI Math Kernel Library runtime package for Intel(R) 64 + +Package: intel-oneapi-mkl-devel-2023.2.0 +Architecture: amd64 +Version: 2023.2.0-49495 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1961967 +Depends: intel-oneapi-mkl-2023.2.0, intel-oneapi-mkl-common-devel-2023.2.0, intel-oneapi-condaindex (>= 2023.2.0-0), intel-oneapi-common-vars (>= 2023.2.0-0), intel-oneapi-common-licensing-2023.2.0 +Filename: pool/main/intel-oneapi-mkl-devel-2023.2.0-2023.2.0-49495_amd64.deb +Size: 186207094 +MD5sum: a39fa74856a537c0d3b3b597fb003458 +SHA1: 3ace32e6f0ea0d0073e5227f4e6e39495c329252 +SHA256: 6a9a8bebbaee82d64d052b55f6ccacfbde6d7bc6e18292a6e135e180a5813a95 +SHA512: 3438e3ad340f5ff154e76711db78b50e7559f2be83de6ced417dd4629035c917abcacdc01ea642f3f46b297316ddbe5a5e126acc68406291682dd8bac2e15e9f +Description: Intel® oneAPI Math Kernel Library 2023.2.0 for Linux* development package for Intel(R) 64 + +Package: intel-oneapi-runtime-mkl +Architecture: amd64 +Version: 2023.2.0-49495 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1414047 +Depends: intel-oneapi-runtime-mkl-common (= 2023.2.0-49495), intel-oneapi-runtime-tbb (>= 2021.10.0-0), intel-oneapi-runtime-dpcpp-cpp (>= 2023.2.0-0) +Filename: pool/main/intel-oneapi-runtime-mkl-2023.2.0-49495_amd64.deb +Size: 188196314 +MD5sum: 3f2954ec6efb94f37a57b643db7bce4b +SHA1: ca457d6da9b48b362cb700ca0b99cc061d487303 +SHA256: 177690cfb8b0e5e965488e2a66f9c9b2df7c28c4b5e29223ef6b42c84a4bf033 +SHA512: 1c06cd7d331d4ac53a859b6fae2d5944451731b133001d48874d6c56bd12fe2f3cea80e1ca045cbe93fb17e2fe5c36e34a3b50f0b4b54b66c45a6d4db60fb909 +Description: Intel® oneAPI Math Kernel Library runtime + +Package: intel-oneapi-mkl-devel +Architecture: amd64 +Version: 2023.2.0-49495 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-mkl-devel-2023.2.0 +Filename: pool/main/intel-oneapi-mkl-devel-2023.2.0-49495_amd64.deb +Size: 2336 +MD5sum: b377ef9c823d3626ce43068c8a0717aa +SHA1: 9ac52f100612fdcc555b21293b63e1ab76864204 +SHA256: 6c11daa080af369f871baee7e95dcd0c0a9018950b9f0dcb43691e215236b6d2 +SHA512: 395bfa2107b00bcad13da0f0292608f95cf6397082420929e00dd95fda27d31413267a71ee9250d978fe3304a388c22cf46d1c019a7a0ece3e4586f0f2df5832 +Description: Intel® oneAPI Math Kernel Library 2023.2.0 for Linux* development package for Intel(R) 64 + +Package: intel-oneapi-mkl-devel-32bit +Architecture: amd64 +Version: 2023.2.0-49495 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-mkl-devel-32bit-2023.2.0 +Filename: pool/main/intel-oneapi-mkl-devel-32bit-2023.2.0-49495_amd64.deb +Size: 2328 +MD5sum: 2fc875ab91d45327948669d5efd31e90 +SHA1: a5da1086e94f8c6cdec736b4cc9c24c555efa7ce +SHA256: 1aa9fb2a1455069826da86858c5aa663d07fa30962fdd40cd749ed3e9dbdbde6 +SHA512: 60d6ea071d38ea6893e3b447cfaddee6be04c4e9463d105baf8eaa4c8ce27a97b10cc5fdf032e819d51755b01f71349098885b368803b43a1632a651747c4202 +Description: Intel® oneAPI Math Kernel Library 2023.2.0 for Linux* development package for IA-32 + +Package: intel-oneapi-rkcommon +Architecture: amd64 +Version: 1.11.0-49407 +Multi-Arch: +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-rkcommon-1.11.0 +Filename: pool/main/intel-oneapi-rkcommon-1.11.0-49407_amd64.deb +Size: 1700 +MD5sum: 01369f88eb2c57bbbab7c31fb3b14478 +SHA1: 07ac43758bda46919bdde08f23dd9b42b5576931 +SHA256: 6bcb2091519f6036fd7b525612b1216f7f02783695ffdb075b90f63583276898 +SHA512: b706f1dbe90ad587db01d1c433a056c664cf9aa15190eaff9222447479f109c8f7d40db57244537731b7e7cb17e09bd72a60052773c941392b58f09913c6e510 +Description: Rendering toolkit common + +Package: intel-oneapi-rkcommon-1.11.0 +Architecture: amd64 +Version: 1.11.0-49407 +Multi-Arch: +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1141 +Depends: intel-oneapi-tbb-devel-2021.10.0, intel-oneapi-compiler-dpcpp-cpp-runtime-2023.2.0, intel-oneapi-common-vars (>= 2023.2.0-0), intel-oneapi-common-licensing-2023.2.0 +Filename: pool/main/intel-oneapi-rkcommon-1.11.0-1.11.0-49407_amd64.deb +Size: 177024 +MD5sum: d3d60f65071018592bbd8b5c40939c5b +SHA1: f1ddf0fdb29961c74a17624befdeb6cf9fc5284f +SHA256: 064e8ed91a3f1deca39033dce3bcee2bc3f312cbbfa750d5b3d86808bc24f9e5 +SHA512: cf409264a9aa2789f6e5646632befb90df55e24d2dea0c11cc8801453b5737735318df864ec9b78f3df4fb2276d1daf7889392fd6d210d5c648b64567ef4a8b5 +Description: Rendering toolkit common + +Package: intel-iotkit-runtime +Architecture: amd64 +Version: 2023.2.0-49271 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit (>= 2023.2.0), intel-oneapi-common-vars (>= 2023.2.0-0), intel-oneapi-common-licensing (>= 2023.2.0-0), intel-oneapi-dev-utilities (>= 2021.10.0-0) +Filename: pool/main/intel-iotkit-runtime-2023.2.0-49271_amd64.deb +Size: 1776 +MD5sum: 02206ef2efac5ccf0fc3106a4e5ba101 +SHA1: 78b8069f6b1fd992dde2c3adad2255ab65539771 +SHA256: 715797d5586e18d5c3fb330f8f68cb2843d2d553270850e0a4e6ecc5da0442af +SHA512: 557c2a402dce0c2a4d6f13848e994642fbf63a537cde2241733bbd84fdeda8fecccaa93ef307f39cca790494813bc99a2554fd07f86e42f43a727e9d236dd305 +Description: Intel® oneAPI IoT Toolkit + +Package: intel-iotkit-runtime-2023.2.0 +Architecture: amd64 +Version: 2023.2.0-49271 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit-runtime-2023.2.0, intel-iotkit-getting-started (>= 2023.2.0-49271), intel-oneapi-common-vars (>= 2023.2.0-0), intel-oneapi-common-licensing-2023.2.0 , intel-oneapi-dev-utilities-2021.10.0 +Filename: pool/main/intel-iotkit-runtime-2023.2.0-2023.2.0-49271_amd64.deb +Size: 1796 +MD5sum: 5ed934c7a3435305f7df939aa8d0f9ef +SHA1: 6c9eda86f58e37c5978bcff17f3fc4bb55b5e22e +SHA256: a2841bdbdbae229e9ff8cd38d06b50a48a15ea65db912606aeb96c6038e9d9f0 +SHA512: 1c592870e73b7ae32a3790685abcbae4dab03175299a4c95769cd1ace9b93ea89b6b92c5a454e32f04c171b60455353e6dfabc8eb43f65ea500181e7dcbd65f1 +Description: Intel® oneAPI IoT Toolkit + +Package: intel-iotkit +Architecture: amd64 +Version: 2023.2.0-49271 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit (>= 2023.2.0), intel-iotkit-getting-started (>= 2023.2.0-49271), intel-oneapi-common-vars (>= 2023.2.0-0), intel-oneapi-common-licensing (>= 2023.2.0-0), intel-oneapi-dev-utilities (>= 2021.10.0-0), intel-oneapi-inspector (>= 2023.2.0-0), intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic (>= 2023.2.0-0) +Filename: pool/main/intel-iotkit-2023.2.0-49271_amd64.deb +Size: 2020 +MD5sum: fcaf51f1787c779aae41eec040ac84cc +SHA1: f3fe8cc50e0dd548d63b4c4ccf8d0132d0f0a00c +SHA256: cc648f8c06a7eccfa2fb2077b5a964bd6c4d453564f33b926015d0eb5323bac3 +SHA512: 51c5f045dc6fb9268f77e1225328299d69eaf974415fd920a6f5b79598e35b3cc2a042884758461fe9afd59a78d25088dfd92a3cf20171d7a94ceb0fcabcc279 +Description: Intel® oneAPI IoT Toolkit + +Package: intel-iotkit-2023.2.0 +Architecture: amd64 +Version: 2023.2.0-49271 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit-2023.2.0, intel-iotkit-getting-started (>= 2023.2.0-49271), intel-oneapi-common-vars (>= 2023.2.0-0), intel-oneapi-common-licensing-2023.2.0 , intel-oneapi-dev-utilities-2021.10.0 , intel-oneapi-inspector (>= 2023.2.0-0), intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-2023.2.0 +Filename: pool/main/intel-iotkit-2023.2.0-2023.2.0-49271_amd64.deb +Size: 2020 +MD5sum: 93587252b4d96aa1b16241e78e896ab1 +SHA1: a3e626f7ddc8fe87f9ea08c1c5f1bf787191cadc +SHA256: 67f8d46fd1613e706ddae184367f6892b4d62c5d4d583c445e72e821b47ca7e9 +SHA512: 13d600040c6c6ed25a329fe9107a625e657b0b647531650f7eed182a287abaf83a1a0fc8c8f0be0e2be6da2384d71d4dc9a946f9f893e2fafdaabbabe26affeb +Description: Intel® oneAPI IoT Toolkit + +Package: intel-oneapi-mpi-devel +Architecture: amd64 +Version: 2021.10.0-49371 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-mpi-devel-2021.10.0 +Filename: pool/main/intel-oneapi-mpi-devel-2021.10.0-49371_amd64.deb +Size: 1716 +MD5sum: 26979cee1c332d74ee751ff26d49c29c +SHA1: 6b9365aeb164ff0294e0e36d7f0119bd0718675b +SHA256: 63ff67096a8db90f7b2eb421416350b226d98ce0e93facab7ffa467bdc368d78 +SHA512: 777478d3d172a6ee55c8fca086fc25c21ef63d85b895ccf0e227475d8a893cbfb7b6a93c88c00a001631d817baab2602af1e2274c733695439058d8cf56168e8 +Description: Intel® MPI Library + +Package: intel-oneapi-mpi +Architecture: amd64 +Version: 2021.10.0-49371 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-mpi-2021.10.0 +Filename: pool/main/intel-oneapi-mpi-2021.10.0-49371_amd64.deb +Size: 1728 +MD5sum: bf1fad514d1cf8092ef49afa5b77826a +SHA1: 85646ed0e27ba35ab2378db40a2848bafe5adeca +SHA256: f9631e3af108a8d30695cc5d2fecf694f53b68410f9362fa5203a37d92b88964 +SHA512: 81c51fd5f600ad0f1a576d1999d56e350d820f75a825b58cec06485e776237675e884d96a45c2e46f9539bf0008b025468af3a2cba7e7ee07f248d49bfe314fd +Description: Intel® MPI Library Runtime Environment + +Package: intel-oneapi-mpi-devel-2021.10.0 +Architecture: amd64 +Version: 2021.10.0-49371 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 364907 +Depends: intel-oneapi-mpi-2021.10.0, intel-oneapi-condaindex (>= 2023.2.0-0), intel-oneapi-common-vars (>= 2023.2.0-0), intel-oneapi-common-licensing-2023.2.0 +Filename: pool/main/intel-oneapi-mpi-devel-2021.10.0-2021.10.0-49371_amd64.deb +Size: 36825762 +MD5sum: ed14f1df22021f0c72f16af837dee0ca +SHA1: 910143e26cc51a0fe98b89ba89936362a3629f2b +SHA256: 98f8d143ea470c22118d66831cd52311c2c5b4c52c670ba70bf773361c7f06f1 +SHA512: 5b3ce209c8ae59abb63a83a9f89a2dec74b76a3e32bea2983ead6de86426a6f6060ee384a205c7767edf634d61c238c8addd9d79f2e4ab9cc3e13c79b164b69b +Description: Intel® MPI Library + +Package: intel-oneapi-mpi-2021.10.0 +Architecture: amd64 +Version: 2021.10.0-49371 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 68238 +Depends: intel-oneapi-condaindex (>= 2023.2.0-0), intel-oneapi-common-vars (>= 2023.2.0-0), intel-oneapi-common-licensing-2023.2.0 +Filename: pool/main/intel-oneapi-mpi-2021.10.0-2021.10.0-49371_amd64.deb +Size: 22757018 +MD5sum: 003f4a3599bd46bd620c0bdb148a0014 +SHA1: 532c58f6d005785a8db7b0da4608fb0f0bc39731 +SHA256: b0597aad5fb6b8afc6e92a57e32fa013c3469af7768de97961399d413cf81405 +SHA512: c588fa1b6618d1771a4375406ec2c51d4bc748efdc49fd2ed613a6a34bb6c04f5afc7a61a8719e30cf758d5df7fb2fddf2a4bf7b4e5175e9cc5dbe592d50594d +Description: Intel® MPI Library Runtime Environment + +Package: intel-oneapi-runtime-mpi +Architecture: amd64 +Version: 2021.10.0-49371 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 68170 +Depends: +Filename: pool/main/intel-oneapi-runtime-mpi-2021.10.0-49371_amd64.deb +Size: 22685500 +MD5sum: be7927d4ce3f8d925f1fe15202a66102 +SHA1: 2d73500bf8a981a53b072b477c147b4e412b99c2 +SHA256: dce9489c836a8e1a90becc1e7e657c22da8cc14aaabd802966300b9440dac5b4 +SHA512: 531f910ec7689f04330747475668fb9b50407bcf42007d7f3206a10d19a31a33ab929fb20ffb7624bde229adddb22273ba68cf51d88bb23d6da7d4bd4d90a5f7 +Description: Intel® MPI Library runtime + +Package: intel-oneapi-python +Architecture: amd64 +Version: 2023.2.0-49420 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 230455 +Depends: intel-oneapi-tbb-2021.10.0, intel-oneapi-mkl-2023.2.0, intel-oneapi-condaindex (>= 2023.2.0-0), intel-oneapi-dal-daal4py-2023.2.0 ,intel-oneapi-dal-2023.2.0 ,intel-oneapi-dal-scikit-learn-intelex-2023.2.0, intel-oneapi-openmp-2023.2.0, intel-oneapi-ipp-2021.9.0, intel-oneapi-mpi-2021.10.0, intel-oneapi-common-vars (>= 2023.2.0-0), intel-oneapi-common-licensing-2023.2.0 +Filename: pool/main/intel-oneapi-python-2023.2.0-49420_amd64.deb +Size: 234058774 +MD5sum: 61b26a0f0c9679472b1c596b8dd435c5 +SHA1: c97138c055b54b991308a5eb7fb4a8de1aa28018 +SHA256: 50f2e02db0dd3d31329cc38b77415ee96a5a0232a23bab3726f695e687dbbb06 +SHA512: c247ccf2a37e30d2bbdb767963ed201adeb65cf60ace7918c50994fe510613c870347876288424b70638c6845ee5069b90f55d0a2747878eb2449b2257a9dafe +Description: Intel® Distribution for Python* + +Package: intel-oneapi-rkutil-1.8.1 +Architecture: amd64 +Version: 1.8.1-49486 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 81 +Depends: intel-oneapi-common-vars (>= 2023.2.0-0), intel-oneapi-common-licensing-2023.2.0 +Filename: pool/main/intel-oneapi-rkutil-1.8.1-1.8.1-49486_amd64.deb +Size: 14494 +MD5sum: 2c43e8a06245508eb97ac7ae2e2a4fb5 +SHA1: 203cd82fc9348d545333eeca395493ad819bc6c7 +SHA256: c7dad016715393778a44b55f24d43e3a6db458cc0754d1c409aac4743745b53e +SHA512: ec1fd95cc6e7f631bc2b1922e926d05595210b08eee529c8b1afd184bef5e659245f1a3ac71ac754dd63a16ec3a6c8bbaa85d824cfb96149c094c34940418de0 +Description: Rendering Toolkit Utilities + +Package: intel-oneapi-rkutil +Architecture: amd64 +Version: 1.8.1-49486 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-rkutil-1.8.1 +Filename: pool/main/intel-oneapi-rkutil-1.8.1-49486_amd64.deb +Size: 2156 +MD5sum: 5e466db4e15ce479796e69b7a0f8480a +SHA1: 0a56db2d4c593ae4c7899dd10e1da25fdeb26dde +SHA256: bc90c73aa6c0445177f32cdd64a6eb274e33fc891ce4e2904898637557034cf2 +SHA512: e352f8b90bd7c4a99e879dc572ce5e274a554350d1324ea754e4a49ca76c5f2ab0874ca85952f0b38a5b36393cc29d028f2deea6d34aefd98ba8cf06b2a73a46 +Description: Rendering Toolkit Utilities + +Package: intel-oneapi-embree-4.1.0 +Architecture: amd64 +Version: 4.1.0-49414 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 295382 +Depends: intel-oneapi-rkcommon-1.11.0, intel-oneapi-common-vars (>= 2023.2.0-0), intel-oneapi-common-licensing-2023.2.0 +Filename: pool/main/intel-oneapi-embree-4.1.0-4.1.0-49414_amd64.deb +Size: 40712834 +MD5sum: 2bc1c3e50414e35a21c3550b93677aa9 +SHA1: 6805acc14ae0e571b46996e51ec7cbad2ff0ddc8 +SHA256: 6272a9caca7ce4d9b7b7a97d3b08382aff73918a1037f35a0408d5f2faf13d53 +SHA512: 9c1b859f510b09e041643321ff401be0f8c9ef3d00958a907d21b78a25b77687e1797a2fd254e09c35e2f4fb26e73869c5c4e629430147e4877342698e5e630c +Description: Intel® Embree + +Package: intel-oneapi-embree +Architecture: amd64 +Version: 4.1.0-49414 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-embree-4.1.0 +Filename: pool/main/intel-oneapi-embree-4.1.0-49414_amd64.deb +Size: 1712 +MD5sum: f2badbe97c6c31f62ee38f1ae30d6981 +SHA1: fd232d91690da165cb8a999df00122b81bccc518 +SHA256: 07258d2f7fc50b43a6ce40ca7c9dc5671e1ac8367bd52773264f8ad75db9e139 +SHA512: fa3ca8744f51c53247938d0dba7fd37c348bd22dd28aad3f47792ac9482dea4f68caf85915238a7a2feeb7ed0283531639ec4faaaf7dd3fab73709c47ba72362 +Description: Intel® Embree + +Package: intel-fortran-compiler-2023.2.0 +Architecture: amd64 +Version: 2023.2.0-49252 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-compiler-fortran-2023.2.0 +Filename: pool/main/intel-fortran-compiler-2023.2.0-2023.2.0-49252_amd64.deb +Size: 1736 +MD5sum: 864646b42d4f15a1aef53836433b6e05 +SHA1: cc6b3a03940b78a15dd6db416c8ed4b763e3c86c +SHA256: 07ccd151ecab7621ba6768dfe1d291d196e2d8b3eaaaa878db997363b60e84f8 +SHA512: f3058262632bc86fc87d82d193b8a0e1df237fbec3d0d3b496e8631260e38c7fb822a7eeb29375c75aa919a30087431f64713a7e919b34f2b6b0009bb5dbf3c8 +Description: Intel® Fortran Compiler & Intel® Fortran Compiler Classic + +Package: intel-oneapi-oidn-2.0.0 +Architecture: amd64 +Version: 2.0.0-49414 +Multi-Arch: +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 32302 +Depends: intel-oneapi-rkcommon-1.11.0, intel-oneapi-common-vars (>= 2023.2.0-0), intel-oneapi-common-licensing-2023.2.0 +Filename: pool/main/intel-oneapi-oidn-2.0.0-2.0.0-49414_amd64.deb +Size: 24510230 +MD5sum: b52a9056342ecf3498bfab6ccd2f4432 +SHA1: f78f38b348832e1f23333908531e0b6a429cc718 +SHA256: 350018d5561429ed8cd3389d3657631f02fbb38a4a7ce442aeb387386e17e073 +SHA512: 26c2d91616060a4e07c563970b8134207a0d397b6f140c8ec644c74bdb59c2a2e29828caf584fc634f76c7406547512e366b33b720d35d97ba84177cac76d6c6 +Description: Intel® Open Image Denoise + +Package: intel-oneapi-oidn +Architecture: amd64 +Version: 2.0.0-49414 +Multi-Arch: +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-oidn-2.0.0 +Filename: pool/main/intel-oneapi-oidn-2.0.0-49414_amd64.deb +Size: 1700 +MD5sum: 5be3a6f577ee38bd9d06779513e65632 +SHA1: e44ab99c37a69deb5dddab82ddd62fd37f3ebf00 +SHA256: 9407c821836d6b79b23b68c11470c9e62d3364d9e7b3e36779b36edad457cba7 +SHA512: 96177c3efcde7822fbb866eccaa80c4a50ed029a35a1963f970760372a8167975deec5f17ec75c41bb3a3917d614502d9505deced6dc197c93277d4f8d0de459 +Description: Intel® Open Image Denoise + +Package: intel-oneapi-compiler-dpcpp-cpp-runtime-2023.2.0 +Architecture: amd64 +Version: 2023.2.0-49495 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 5598 +Depends: intel-oneapi-compiler-shared-runtime-2023.2.0, intel-oneapi-tbb-2021.10.0, intel-oneapi-common-vars (>= 2023.2.0-0), intel-oneapi-common-licensing-2023.2.0 +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-runtime-2023.2.0-2023.2.0-49495_amd64.deb +Size: 1170864 +MD5sum: a006012c425d41915133b52eed5c7667 +SHA1: 6a9765e1dfd60c6d501cc653a5ccb89a8b7ce16e +SHA256: f63d47400f85feb6c1fb06ade0390bae2481a30dc10e8e0b445d18da7cecfcf0 +SHA512: b23bedb0fec937a37a741cd7b0c7892d5dc2822f839310b8b709a8ac37a8ac9e246f13d1e1057bede7f8f6ac9a1b5f81aa72c241b67677b601725e2306fe1c73 +Description: Intel® oneAPI DPC++/C++ Compiler 2023.2.0 for Linux* runtime package for Intel(R) 64 + +Package: intel-oneapi-compiler-dpcpp-cpp-2023.2.0 +Architecture: amd64 +Version: 2023.2.0-49495 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-dpcpp-cpp-2023.2.0, intel-oneapi-libdpstd-devel-2022.2.0, intel-oneapi-common-vars (>= 2023.2.0-0), intel-oneapi-common-licensing-2023.2.0 +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-2023.2.0-2023.2.0-49495_amd64.deb +Size: 1776 +MD5sum: 03b416a9d6ba78c8aeed6a4cd036d826 +SHA1: ae217b9ca8ee0cb5ac9c08137aa548d3acb49027 +SHA256: 4cc9bff0a76d3b4a3e2b1e50a48a15dc43959025d60ae1e9617cc09985c3a6e1 +SHA512: a75b161cf487116528e10d226b5427098ef47e69565592827d4ec2335b6f2c6249b94f861484c62d59ac046aeac61681c40c6760721844486f2d9063bb686599 +Description: Intel® oneAPI DPC++/C++ Compiler + +Package: intel-oneapi-runtime-opencl +Architecture: amd64 +Version: 2023.2.0-49495 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 216 +Depends: intel-oneapi-runtime-tbb (>= 2021.10.0-0), intel-oneapi-runtime-dpcpp-sycl-opencl-cpu (>= 2023.2.0-49495) +Filename: pool/main/intel-oneapi-runtime-opencl-2023.2.0-49495_amd64.deb +Size: 46566 +MD5sum: fe6106a80061d25e595eee2c8a8174b5 +SHA1: 86f193c9fb1054d24ef295cef18c60343f9a2b0d +SHA256: fad24a736e896ae50dd91a5f0f6bbf4861762f7f9da3d57f4ffd068f14326464 +SHA512: 3e8aec7128dc0bc57bec2a8f0798752af7d151a78b047423f918fc2b449c24807e579e8a8afda9bfde24b899a973f83bd75455324654a5a3db3c9aac4c8fbd0c +Description: Intel® CPU Runtime for OpenCL(TM) Applications runtime + +Package: intel-oneapi-openmp-2023.2.0 +Architecture: amd64 +Version: 2023.2.0-49495 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 257802 +Depends: intel-oneapi-condaindex (>= 2023.2.0-0), intel-oneapi-openmp-common-2023.2.0, intel-oneapi-common-vars (>= 2023.2.0-0), intel-oneapi-common-licensing-2023.2.0 +Filename: pool/main/intel-oneapi-openmp-2023.2.0-2023.2.0-49495_amd64.deb +Size: 207855842 +MD5sum: aa4fae2eb792b621b2e05da4810a9d69 +SHA1: 2e27e816338ff7acd22f80f80c42ea9599bdaff9 +SHA256: 50010e27c1cdf887cd18846058fb60d5a7d47a634341a73be2f0f902f5bb750b +SHA512: fb6f4f1a68fde1db4e82eb7300ebecf8f490508d95312d036f1a643506730fe3a584d4b9ae07c5aab844ec085f4a5cf9743c2afc8c0723be2ea9faa19746e04c +Description: Intel® OpenMP* Runtime Library 2023.2.0 for Linux* for Intel(R) 64 + +Package: intel-oneapi-runtime-fortran +Architecture: amd64 +Version: 2023.2.0-49495 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 2827 +Depends: intel-oneapi-runtime-mpi (>= 2021.10.0-0), intel-oneapi-runtime-fortran-common (= 2023.2.0-49495), intel-oneapi-runtime-compilers (= 2023.2.0-49495) +Filename: pool/main/intel-oneapi-runtime-fortran-2023.2.0-49495_amd64.deb +Size: 527190 +MD5sum: 97418d6aecf2dc4f4f07cba443f53d9d +SHA1: 187bac6ef5ae42d1e0bf59d865aa7863f34893d1 +SHA256: e484a08ef24e30a347cc32f1aee666de59ad0ae0c3c86979e03baf42f152c90d +SHA512: 3175884ae74d2d67a3820441741b28a1723b81b36838965cde8153470041d0ba5637ca488a4ca167ae5e3abd15030382dc52def314d1ea5c5e5c159ba21c813b +Description: Intel® Fortran Compiler & Intel® Fortran Compiler Classic runtime + +Package: intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-2023.2.0 +Architecture: amd64 +Version: 2023.2.0-49495 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 76726 +Depends: intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-runtime-2023.2.0, intel-oneapi-compiler-dpcpp-cpp-classic-fortran-shared-runtime-2023.2.0, intel-oneapi-dpcpp-cpp-2023.2.0, intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-common-2023.2.0, intel-oneapi-common-vars (>= 2023.2.0-0), intel-oneapi-common-licensing-2023.2.0 +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-2023.2.0-2023.2.0-49495_amd64.deb +Size: 18010792 +MD5sum: fffc373e2b2643374892eabe65b94500 +SHA1: 3b48a4cc1753e02aacb72e6d12fabe6af212d832 +SHA256: dab0feb30c3e3850be98176e2b8ca57e5f73cd447b6f9953f13b4140875be5fa +SHA512: e0873b3ae5bf42f4c4370202a777d246484ce12e6f25400be178205fb15885e450f316342d141b2e43a48f951a817d3c850d3c1ce1148ef269368cd86330c252 +Description: Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic 2023.2.0 for Linux* for Intel(R) 64 + +Package: intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic +Architecture: amd64 +Version: 2023.2.0-49495 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-2023.2.0 +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-2023.2.0-49495_amd64.deb +Size: 1812 +MD5sum: 15810e77dd01091974a6fff2cc6430cd +SHA1: f7536139ab0a0c10d43a1bf74225bdbac15aa781 +SHA256: acb124ea38d5f155068aa2f7b300d6ffb7aa7e21f5bd1a61c42bae3d78612d7e +SHA512: e2e16808f76ce96628713b7601f5270d977c67651a5203a7fc395ed623484e3c1b69b09ca10827200c89ef7ff55817dd879fdf3c8bb5b2c3fdbcff256de9cb86 +Description: Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic 2023.2.0 for Linux* for Intel(R) 64 + +Package: intel-oneapi-openmp +Architecture: amd64 +Version: 2023.2.0-49495 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-openmp-2023.2.0 +Filename: pool/main/intel-oneapi-openmp-2023.2.0-49495_amd64.deb +Size: 2660 +MD5sum: 73886a92290403d3b9142ef82c566f52 +SHA1: 62b5e6090e892fa37eb71c3b14b84f75416368a6 +SHA256: a102e71eee5e8e8780407cfa70c4f976cb28e85ffaaf426c73527898a8e8439e +SHA512: e0fad3184f0dc9b05b98835ec921b939b51902e157917bc3d3597d3a311987a5f94a7d99ccf73dd8066b41984404bb76e5132d3535bfc190d246c562e065fedc +Description: Intel® OpenMP* Runtime Library 2023.2.0 for Linux* for Intel(R) 64 + +Package: intel-oneapi-compiler-fortran-2023.2.0 +Architecture: amd64 +Version: 2023.2.0-49495 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 158680 +Depends: intel-oneapi-compiler-shared-2023.2.0, intel-oneapi-compiler-fortran-common-2023.2.0, intel-oneapi-compiler-fortran-runtime-2023.2.0, intel-oneapi-common-vars (>= 2023.2.0-0), intel-oneapi-common-licensing-2023.2.0 +Filename: pool/main/intel-oneapi-compiler-fortran-2023.2.0-2023.2.0-49495_amd64.deb +Size: 36486612 +MD5sum: df9d17c167f86fc00200246034ee1ba3 +SHA1: 67d395370e0c45ee160435cb369666c87d2cfdaa +SHA256: 587477ec985309ccfdc8c40733adb2b6f2cf0cb79e91caa3323fd39913d04826 +SHA512: 1acedf812bdfd2acc02420b37c122fe2986291d640423fbaaae789add7a13869e09fda016063edf7d6b786b39ed6165a2704cec4767a0e9cbda37849a9b51218 +Description: Intel® Fortran Compiler & Intel® Fortran Compiler Classic 2023.2.0 for Linux* for Intel(R) 64 + +Package: intel-oneapi-compiler-shared-runtime-2023.2.0 +Architecture: amd64 +Version: 2023.2.0-49495 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 727855 +Depends: intel-oneapi-openmp-2023.2.0, intel-oneapi-common-vars (>= 2023.2.0-0), intel-oneapi-common-licensing-2023.2.0 +Filename: pool/main/intel-oneapi-compiler-shared-runtime-2023.2.0-2023.2.0-49495_amd64.deb +Size: 134192542 +MD5sum: 8dad7a3490670de098d1cd58e2a7e1ea +SHA1: 1269b3f9b0abe2088ce30372101ef405801774c5 +SHA256: 6bad4b5ad0dac988e1d4820a908b86f74f050d716fd307cbd1549bd1d46fc1ab +SHA512: 89b3c0111d36d2920f1a5f94deedf7a234c96f6213d523ee289e153f643484844eb2c02bfd72dd46b026dc1b7095c6180ebbd21b67f4207895abef2c13bbe87d +Description: Intel(R) Compiler Shared Files runtime contents + +Package: intel-oneapi-compiler-dpcpp-cpp +Architecture: amd64 +Version: 2023.2.0-49495 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-compiler-dpcpp-cpp-2023.2.0 +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-2023.2.0-49495_amd64.deb +Size: 1768 +MD5sum: 84731b1f719acf86e383b54c10716caf +SHA1: 48cf7463f8a0cc5b3fa117429db76152eddf3f33 +SHA256: 62abbb1c60c84a16115621e309703137a2a81877243b83c047d513a55b13aaee +SHA512: ac9ec0b7c1e0a4ddaa6eba5a6ef3347a34f65a93a73933d1491883b2aaed69e9b69ce90e5377408979d3c2d08e7f2ab8c89b0533f4997fcad6cc4f1dbae8a97e +Description: Intel® oneAPI DPC++/C++ Compiler + +Package: intel-oneapi-runtime-openmp +Architecture: amd64 +Version: 2023.2.0-49495 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 66677 +Depends: +Filename: pool/main/intel-oneapi-runtime-openmp-2023.2.0-49495_amd64.deb +Size: 13937652 +MD5sum: 1a437e9e4e33e04fc44a48b3136f7a03 +SHA1: 6cefcec9a2bfb07f6a574e3123a3ef3f28e052a5 +SHA256: 75b871b906aca3477f20f9784aee3dbc08c5ce08dea63beea114e63daa2ff1cb +SHA512: a5bb43f1bf2cb7a438afe3e4f3341176747ed10d3264d0876d23505ac5e5a3a18d7aa7c8940858473a3fc066908d8163b65e0f664eb858f7211301440fbe895a +Description: Intel® oneAPI DPC++/C++ Compiler OpenMP Offload Runtime + +Package: intel-oneapi-runtime-compilers +Architecture: amd64 +Version: 2023.2.0-49495 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 143886 +Depends: intel-oneapi-runtime-openmp (= 2023.2.0-49495), intel-oneapi-runtime-compilers-common (= 2023.2.0-49495) +Filename: pool/main/intel-oneapi-runtime-compilers-2023.2.0-49495_amd64.deb +Size: 26872648 +MD5sum: 43b8ddd17da792e4f2921bca635cd6c4 +SHA1: c28ee4795783666607d2c8c4ef4fdc071aab17f5 +SHA256: 7560e8fd5a8353fb05f0324b8e7fa0c92f0fc1774416ef01361e5370721d2397 +SHA512: 4736a4a9720606a9a6616ee4540ece104e5f0f925ff98ee643fe9d00fc52c9faf6534e8ff363b4ddd343a6d9a0f1f7e9562d2a41d84822e4cd3d46cd4550ba76 +Description: Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic runtime common files + +Package: intel-oneapi-compiler-fortran-runtime-2023.2.0 +Architecture: amd64 +Version: 2023.2.0-49495 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 2843 +Depends: intel-oneapi-mpi-2021.10.0, intel-oneapi-compiler-shared-runtime-2023.2.0, intel-oneapi-compiler-dpcpp-cpp-classic-fortran-shared-runtime-2023.2.0, intel-oneapi-common-vars (>= 2023.2.0-0), intel-oneapi-common-licensing-2023.2.0 +Filename: pool/main/intel-oneapi-compiler-fortran-runtime-2023.2.0-2023.2.0-49495_amd64.deb +Size: 526634 +MD5sum: 0e0b48bee55e0bf48340259ee0e44c45 +SHA1: fcb3746a324342455cbd7f6c80d1352af8ee0602 +SHA256: 804cca062b7a75712b075170c34f04cbb96425c0331055882ca62cbaa2a5efa7 +SHA512: a43d849e955a6807983dcb80c4ba1ae2cff7be90c5dfadb112aa7c2bfadee53378021a06523bf0fb1d1e88a3be985986ea0bb0067520a9114c23e92ac3d64ec5 +Description: Intel® Fortran Compiler & Intel® Fortran Compiler Classic 2023.2.0 for Linux* runtime package for Intel(R) 64 + +Package: intel-oneapi-compiler-fortran-runtime +Architecture: amd64 +Version: 2023.2.0-49495 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-compiler-fortran-runtime-2023.2.0 +Filename: pool/main/intel-oneapi-compiler-fortran-runtime-2023.2.0-49495_amd64.deb +Size: 1804 +MD5sum: d8c0a567642525566d101ece29a27ba0 +SHA1: fec3236db532f9cc22f3695ecbf4a19c54131f63 +SHA256: 044752a2ad8349164669f446603ee6648f8877c8482093c1afb86eafa5da0529 +SHA512: 9b2f0b51c61ad617c4de9b973a25d563c77a46866223b2cbaec0aed3267b102e334e87bfe3c5d311a06d39ee12c471f528ad21e111b496e629519a7d64f7d01b +Description: Intel® Fortran Compiler & Intel® Fortran Compiler Classic 2023.2.0 for Linux* runtime package for Intel(R) 64 + +Package: intel-oneapi-runtime-dpcpp-cpp +Architecture: amd64 +Version: 2023.2.0-49495 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 25 +Depends: intel-oneapi-runtime-tbb (>= 2021.10.0-0), intel-oneapi-runtime-compilers (= 2023.2.0-49495), intel-oneapi-runtime-dpcpp-cpp-common (= 2023.2.0-49495), intel-oneapi-runtime-opencl (= 2023.2.0-49495), intel-oneapi-runtime-dpcpp-sycl-core (>= 2023.2.0-49495), intel-oneapi-runtime-dpcpp-sycl-fpga-emul (>= 2023.2.0-49495) +Filename: pool/main/intel-oneapi-runtime-dpcpp-cpp-2023.2.0-49495_amd64.deb +Size: 2968 +MD5sum: 6d33cc75250cb08cd5d7cda75ccf2b99 +SHA1: ae0fc239e1958da7cbbc8880fc4d461799a7bb08 +SHA256: f9c84007e0f7f00ebe15163c4d24605c03ad5f45941a61fd7d6cb89c4e1e9d85 +SHA512: 1b39fe8e92bfc46368703d92a38b0e29bf0f3520bf58d85fb35c73678788724781991303223d9014c09eee12856f6be541a8680fb24854df29ecf89100c74f85 +Description: Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic runtime + +Package: intel-oneapi-compiler-dpcpp-cpp-classic-fortran-shared-runtime-2023.2.0 +Architecture: amd64 +Version: 2023.2.0-49495 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 358 +Depends: intel-oneapi-compiler-shared-runtime-2023.2.0, intel-oneapi-common-vars (>= 2023.2.0-0), intel-oneapi-common-licensing-2023.2.0 +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-classic-fortran-shared-runtime-2023.2.0-2023.2.0-49495_amd64.deb +Size: 80030 +MD5sum: c4bdafe87586bb90ead704c45e2099ab +SHA1: 8aca79370ed8b54e1df54799efd4ef2d2a9b1c29 +SHA256: 3b1c1c19e7f7388ef07f54fa05051796a391cb9c8c5a28d54e8a56c227093df8 +SHA512: 366cc05d758cbe147d89a2276002dacf8f237fdc73113422191259e3c5a08864ca2bcdce6f9490441c29774f33cb3105b551ad727214f525c0a9a73586cf12db +Description: Intel(R) DPC++/C++ Pro / Fortran Compiler Runtime Shared Files + +Package: intel-oneapi-dpcpp-cpp-2023.2.0 +Architecture: amd64 +Version: 2023.2.0-49495 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 2153861 +Depends: intel-oneapi-compiler-dpcpp-cpp-common-2023.2.0, intel-oneapi-compiler-dpcpp-cpp-runtime-2023.2.0, intel-oneapi-compiler-shared-2023.2.0, intel-oneapi-tbb-devel-2021.10.0, intel-oneapi-dev-utilities-2021.10.0, intel-oneapi-common-vars (>= 2023.2.0-0), intel-oneapi-common-licensing-2023.2.0 +Filename: pool/main/intel-oneapi-dpcpp-cpp-2023.2.0-2023.2.0-49495_amd64.deb +Size: 451873382 +MD5sum: 81a2072df82c807369da286785d8da85 +SHA1: 9afe6557ea1885ae0fdb2f96597cee37ef5b5cd9 +SHA256: e9061ab1a0e6f2b8d38b6dbdc47b4883d1ba47d191e032d5c12752715c5efc5e +SHA512: c436fbf199b2a3a0b6837539c913a4ee3e5a4a228f04317aacf761df53bede6b75840e21582cca7cceea7948a873eee05a251c8ea29991ecdc4a7283341ef5bb +Description: Intel® oneAPI DPC++/C++ Compiler 2023.2.0 for Linux* for Intel(R) 64 + +Package: intel-oneapi-compiler-shared-2023.2.0 +Architecture: amd64 +Version: 2023.2.0-49495 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 148751 +Depends: intel-oneapi-compiler-shared-common-2023.2.0, intel-oneapi-compiler-shared-runtime-2023.2.0, intel-oneapi-dpcpp-debugger-2023.2.0, intel-oneapi-common-vars (>= 2023.2.0-0), intel-oneapi-common-licensing-2023.2.0 +Filename: pool/main/intel-oneapi-compiler-shared-2023.2.0-2023.2.0-49495_amd64.deb +Size: 16582216 +MD5sum: 0c159e229cbe15a559ee9ff8b43a496a +SHA1: 0cfda56eccbf88b0218dbfc69d6a250a37568796 +SHA256: bfb600319ebc88042ce53a90e8f6195451b4730a1c065821018dedd925bb4100 +SHA512: 18864bc0d33c9a11fca23c69fc539e369cab46b098c8a72d6a8f2cb460aabc6c342934dd4d8bea783e7d3af3cd656a8ddf561d2fdf5dfc337886816a15c8ee7b +Description: Intel(R) Compiler Shared Files + +Package: intel-oneapi-compiler-fortran +Architecture: amd64 +Version: 2023.2.0-49495 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-compiler-fortran-2023.2.0 +Filename: pool/main/intel-oneapi-compiler-fortran-2023.2.0-49495_amd64.deb +Size: 1788 +MD5sum: 2fb6a87878a0ad697a9ee6e1e6188083 +SHA1: a85d9218277b4c7f6945db1ab3c43c03ac90cdf1 +SHA256: 076d71f5115d66c4e48901409d6fe5f342d5c72058f98672345a06aef2b5ba6e +SHA512: 62efd35f8baf84359f8cd841c964fb52b0ae6d0c00f479f998ba093e59523fc26be5ad5b20477fa4e742487bd7a5230a6fccbf2821c385a8bb94e9601c2615ed +Description: Intel® Fortran Compiler & Intel® Fortran Compiler Classic 2023.2.0 for Linux* for Intel(R) 64 + +Package: intel-oneapi-compiler-dpcpp-cpp-runtime +Architecture: amd64 +Version: 2023.2.0-49495 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-compiler-dpcpp-cpp-runtime-2023.2.0 +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-runtime-2023.2.0-49495_amd64.deb +Size: 1804 +MD5sum: aa7f3f3f2682e4a8f610bf55bcd9826c +SHA1: 00a9c74483e31e2333d10d59eed2dbcd1577980a +SHA256: 56eb7d776813f469b06bbf7b320b211dc7d82fa44c2a5a9690b902778f61d179 +SHA512: 33c6e0e42d4431519016e169418d46f5313f3b50f2eeecfa6922c0a205eedf67372acc0e5b13f76de4bd3e31f3c41f4fe4f07b8f2a7be7d06de60ab240a85eb9 +Description: Intel® oneAPI DPC++/C++ Compiler 2023.2.0 for Linux* runtime package for Intel(R) 64 + +Package: intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-runtime-2023.2.0 +Architecture: amd64 +Version: 2023.2.0-49495 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 88 +Depends: intel-oneapi-compiler-dpcpp-cpp-classic-fortran-shared-runtime-2023.2.0, intel-oneapi-compiler-dpcpp-cpp-runtime-2023.2.0, intel-oneapi-common-vars (>= 2023.2.0-0), intel-oneapi-common-licensing-2023.2.0 +Filename: pool/main/intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-runtime-2023.2.0-2023.2.0-49495_amd64.deb +Size: 14246 +MD5sum: d962f11bfa462c73c7a00dc6eadbc350 +SHA1: 535393d5de6734ab17a4b8637305f75090bf273b +SHA256: 780f739dea6f3ecdb860873ae1746526a322d793bf3850826792921982c9aefa +SHA512: 41c401aef3b23e94d718f964da931bdc837c3b7506b21690171ea5e20a5c985096351ee9e34291c5f53cd20d2557b671ef4df04d48330d37fd434aba3bdcfad1 +Description: Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic 2023.2.0 for Linux* runtime package for Intel(R) 64 + +Package: intel-oneapi-runtime-dpcpp-sycl-opencl-cpu +Architecture: amd64 +Version: 2023.2.0-49495 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 583619 +Depends: +Filename: pool/main/intel-oneapi-runtime-dpcpp-sycl-opencl-cpu-2023.2.0-49495_amd64.deb +Size: 106933102 +MD5sum: 01a50692d97309c800f4e446dfe139ac +SHA1: 6dea0ccf36497150a9f65af7025446e351d52d32 +SHA256: 3c7459c1dc6efdb4ade050804028343b2ca7c8dc5ae8ca4a024759e439218a7f +SHA512: 072ea05a78e0ad959ea3c61f9d0068b399d8dfc5640a28b6786f1a70ba8233272cad46a95bbc39c127aaecf14158bda72af481dd58f9f7f7d855a9e602f1b4f0 +Description: Intel® CPU Runtime for OpenCL(TM) Applications runtime + +Package: intel-oneapi-ospray-studio +Architecture: amd64 +Version: 0.12.1-49375 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ospray-studio-0.12.1 +Filename: pool/main/intel-oneapi-ospray-studio-0.12.1-49375_amd64.deb +Size: 2164 +MD5sum: ea79cebe3d417a16c42e2f7600883233 +SHA1: 047813f6463c26a4aa1390d015806756e0bb43f0 +SHA256: f3bddc6acc6ecd34e19b191da9353346b0a6bf43aa46b892682c35f57d6e8d6e +SHA512: a62e62bfe35d213dbfc874ebec4ab9783b76e21edddb69118062ca3c1c13c6b3dae8f0c2f60357bdbbd99acd690a522275ba147fb30d8d195fc0cb5eb3e2e12f +Description: Intel® OSPRay Studio + +Package: intel-oneapi-ospray-studio-0.12.1 +Architecture: amd64 +Version: 0.12.1-49375 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 8298 +Depends: intel-oneapi-ospray-2.12.0, intel-oneapi-common-vars (>= 2023.2.0-0), intel-oneapi-common-licensing-2023.2.0 +Filename: pool/main/intel-oneapi-ospray-studio-0.12.1-0.12.1-49375_amd64.deb +Size: 1984440 +MD5sum: ae5ec81ca77717e7c88b0cf82870728f +SHA1: 14a5e535a3855a903e84e6dfa373b9fb4623a71f +SHA256: cd8feb090a01d3208e3373043d746161acbac255f5c6acd25d4967ec91c694b3 +SHA512: 40a69d05ff5824d16c8b63571ec4bf187ff335ca13e6d52be6211c6091c8417374df5697147903022c84a40c4204a22658b8a1c6f6656037382889e872dfd0ca +Description: Intel® OSPRay Studio + +Package: intel-oneapi-dal +Architecture: amd64 +Version: 2023.2.0-49572 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-dal-2023.2.0 +Filename: pool/main/intel-oneapi-dal-2023.2.0-49572_amd64.deb +Size: 2544 +MD5sum: ba54c3db64c2a844b1f270285defeac1 +SHA1: c596b556531e4b4871e3d881321eb6ae1bc2b853 +SHA256: cc276b110226032fe7d11501bfbcf44efcb50b921d340feebbe83dd075c573b6 +SHA512: 1024aadb98a8fc27860eef78447c82d6ea114e4e37b910a278bf21d9389f86c5b7d0988d1ed2aa356b0f439ebd67d580cbeb46254c5ee2394cd15c39c29de224 +Description: Intel® oneAPI Data Analytics Library + +Package: intel-oneapi-dal-devel +Architecture: amd64 +Version: 2023.2.0-49572 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-dal-devel-2023.2.0 +Filename: pool/main/intel-oneapi-dal-devel-2023.2.0-49572_amd64.deb +Size: 2672 +MD5sum: 66c4fed6013e4c98eaa075307f6811d0 +SHA1: 8f8df54b0742db4bd47d9702ba1a102a750a0953 +SHA256: 023168c6d3be1f24121c3c046ea48f6b89a74f2bcdbefdd8bae010537cf90bdf +SHA512: 77b6f1b7f78574d92090b65f7e7c83b3d7b2684377d748596ffbf7ba454bd77e422c1d8f34508cfd922de59712bc15874a3d535ed77774b9009cdde12dd4609a +Description: Intel® oneAPI Data Analytics Library Development Package + +Package: intel-oneapi-runtime-dal +Architecture: amd64 +Version: 2023.2.0-49572 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 526079 +Depends: intel-oneapi-runtime-tbb (>= 2021.10.0-0), intel-oneapi-runtime-dpcpp-cpp (>= 2023.2.0-0) +Filename: pool/main/intel-oneapi-runtime-dal-2023.2.0-49572_amd64.deb +Size: 54173412 +MD5sum: 61c7e6e3f881c019d56c4902d18cc27a +SHA1: 6824857d61e16c37f89692d713a1264861b50479 +SHA256: 840ad0f101128d4d24f741c6e517a6b5da8c5c07214a0ecb25029d7bccda6196 +SHA512: 416b4247679ac696d1ef9ea669200600b97c47d235ab8bad76c4da41675f3e8701fd1bf9f5bf57199cf89104759955865818160c0020977634ad43b92f483db4 +Description: Intel® oneAPI Data Analytics Library runtime + +Package: intel-oneapi-dal-daal4py-2023.2.0 +Architecture: amd64 +Version: 2023.2.0-49572 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 39467 +Depends: intel-oneapi-condaindex (>= 2023.2.0-0), intel-oneapi-common-vars (>= 2023.2.0-0), intel-oneapi-common-licensing-2023.2.0 +Filename: pool/main/intel-oneapi-dal-daal4py-2023.2.0-2023.2.0-49572_amd64.deb +Size: 40278304 +MD5sum: b206a2fef6e44d87df0c858b2f9e6298 +SHA1: 87110896e6a1e9a8b732576f81ee52c06419fc7a +SHA256: 10d520b1238ff24497c680d5322d2f43a78826d7c397b04747adf47271edd0fc +SHA512: 2a12fb6faf2941a33723e51bc9ea36ebcc8744bc26b02a6c1124e64fcafc5d97b2a5264657055e07ad2dc3c5e26e7ace5ee54a1690cafbf345528f93367d7e19 +Description: Intel® oneAPI Data Analytics Library daal4py Package + +Package: intel-oneapi-dal-devel-2023.2.0 +Architecture: amd64 +Version: 2023.2.0-49572 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1028881 +Depends: intel-oneapi-dal-2023.2.0, intel-oneapi-tbb-devel-2021.10.0, intel-oneapi-dal-common-devel-2023.2.0, intel-oneapi-condaindex (>= 2023.2.0-0), intel-oneapi-common-vars (>= 2023.2.0-0), intel-oneapi-common-licensing-2023.2.0 +Filename: pool/main/intel-oneapi-dal-devel-2023.2.0-2023.2.0-49572_amd64.deb +Size: 69615438 +MD5sum: 1c8144add023b6b3f75519a87498ebb3 +SHA1: 73007af08a293d460ceb961590120b4a79bbff68 +SHA256: 7d7f4f417af1546291ba226698440f055275db18ee9d33c3644c3b022e1becca +SHA512: a275a696f5910686206fbc63100d3073793b9bbf49181fc0eae8842c565c95b28cd70f476d50770e9bbf6c0e8c74bce5ec428f895ac1c268d6ad6d45e65e9aef +Description: Intel® oneAPI Data Analytics Library Development Package + +Package: intel-oneapi-dal-2023.2.0 +Architecture: amd64 +Version: 2023.2.0-49572 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 523929 +Depends: intel-oneapi-dal-common-2023.2.0, intel-oneapi-tbb-2021.10.0, intel-oneapi-condaindex (>= 2023.2.0-0), intel-oneapi-compiler-dpcpp-cpp-runtime-2023.2.0, intel-oneapi-common-vars (>= 2023.2.0-0), intel-oneapi-common-licensing-2023.2.0 +Filename: pool/main/intel-oneapi-dal-2023.2.0-2023.2.0-49572_amd64.deb +Size: 53921538 +MD5sum: 00a53e0609814d717d6d1e05c0cadeaf +SHA1: f8ba58dbec478bd961e7fa753c212d3d125fce45 +SHA256: dcfb137e92edbe3a52c1efaf05fdc78cbdf278d88e9e886ebb4570686554605a +SHA512: 406e2c5a7759a04bb767d7c6b8e9fff13460cbabee871224f6bfa1ae3e7767b3bcc6d9eb4fb7e9c22d01ec217af16505dac076e45f35f90b3479caab90ee4ec8 +Description: Intel® oneAPI Data Analytics Library + +Package: intel-oneapi-dal-scikit-learn-intelex-2023.2.0 +Architecture: amd64 +Version: 2023.2.0-49572 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 231 +Depends: intel-oneapi-condaindex (>= 2023.2.0-0), intel-oneapi-common-vars (>= 2023.2.0-0), intel-oneapi-common-licensing-2023.2.0 +Filename: pool/main/intel-oneapi-dal-scikit-learn-intelex-2023.2.0-2023.2.0-49572_amd64.deb +Size: 207246 +MD5sum: 29b05155dd7b97ab3451fe2272789323 +SHA1: 4301759cd9a2defa1540910b4eaeaa2440d43b81 +SHA256: 0fdb5d4b02b7ba9e60320d86d7e695045425e861c55533f4af5354d6dca5a9ba +SHA512: 4a52ea1809f3e3efe2c665d80600ed6dc0f90466556b62dcb8646d9b233617dd72d7e21a632e4c86972daf6ee99f4564118f831ecf1eaf6a4e4599d3965555c1 +Description: Intel® oneAPI Data Analytics Library scikit-learn-intelex Package + +Package: intel-basekit-runtime +Architecture: amd64 +Version: 2023.2.0-49384 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit-getting-started (>= 2023.2.0-49384), intel-oneapi-common-vars (>= 2023.2.0-0), intel-oneapi-common-licensing (>= 2023.2.0-0), intel-oneapi-dev-utilities (>= 2021.10.0-0), intel-oneapi-dnnl (>= 2023.2.0-0) +Filename: pool/main/intel-basekit-runtime-2023.2.0-49384_amd64.deb +Size: 1788 +MD5sum: 2b99d789b791b27e3a629b42cf6801d7 +SHA1: a00dac340aa42e7fb57c638dedfeda70955007ca +SHA256: 1e9eda1c258fdd2ecdf42f423e6ea8c308966ef1d13962cd6d4773e3ecdafea1 +SHA512: 8cab84d9b17a8a0da86fc63f7c7bfade2171a2196c24c2a2558380b0149525babb63f613163664a5cce5538e8256df3e265fccb8e7cd7ad031f4d9c9e2b5c0fa +Description: Intel® oneAPI Base Toolkit + +Package: intel-basekit-2023.2.0 +Architecture: amd64 +Version: 2023.2.0-49384 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit-getting-started (>= 2023.2.0-49384), intel-oneapi-common-vars (>= 2023.2.0-0), intel-oneapi-common-licensing-2023.2.0 , intel-oneapi-dpcpp-ct-2023.2.0 , intel-oneapi-dev-utilities-2021.10.0 , intel-oneapi-dpcpp-debugger-2023.2.0 , intel-oneapi-libdpstd-devel-2022.2.0 , intel-oneapi-diagnostics-utility (>= 2022.4.0-0), intel-oneapi-tbb-devel-2021.10.0 , intel-oneapi-ccl-devel-2021.10.0 , intel-oneapi-compiler-dpcpp-cpp-2023.2.0 , intel-oneapi-dal-devel-2023.2.0 , intel-oneapi-ipp-devel-2021.9.0 , intel-oneapi-ippcp-devel-2021.8.0 , intel-oneapi-mkl-devel-2023.2.0 , intel-oneapi-advisor (>= 2023.2.0-0), intel-oneapi-vtune (>= 2023.2.0-0), intel-oneapi-dnnl-devel (>= 2023.2.0-0) +Filename: pool/main/intel-basekit-2023.2.0-2023.2.0-49384_amd64.deb +Size: 2092 +MD5sum: 6bc68fa5b107a7e72f1d5a58d88e7394 +SHA1: 42dd6e6465932b6312bd8c460fea8ab53fe24043 +SHA256: 45421b04d0d4ee77448792953c4fad361ed2acf612058d3c8ab3aa4853275695 +SHA512: abc46c678bbc814bf2a20c4010c11d780fb023dd0e6dc1398a07b29dba0a4a56c095355498d9b5536361fef9540cc6b0d259fb91b0fa2536dcaba0ac6c793158 +Description: Intel® oneAPI Base Toolkit + +Package: intel-basekit +Architecture: amd64 +Version: 2023.2.0-49384 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit-getting-started (>= 2023.2.0-49384), intel-oneapi-common-vars (>= 2023.2.0-0), intel-oneapi-common-licensing (>= 2023.2.0-0), intel-oneapi-dpcpp-ct (>= 2023.2.0-0), intel-oneapi-dev-utilities (>= 2021.10.0-0), intel-oneapi-dpcpp-debugger (>= 2023.2.0-0), intel-oneapi-libdpstd-devel (>= 2022.2.0-0), intel-oneapi-diagnostics-utility (>= 2022.4.0-0), intel-oneapi-tbb-devel (>= 2021.10.0-0), intel-oneapi-ccl-devel (>= 2021.10.0-0), intel-oneapi-compiler-dpcpp-cpp (>= 2023.2.0-0), intel-oneapi-dal-devel (>= 2023.2.0-0), intel-oneapi-ipp-devel (>= 2021.9.0-0), intel-oneapi-ippcp-devel (>= 2021.8.0-0), intel-oneapi-mkl-devel (>= 2023.2.0-0), intel-oneapi-advisor (>= 2023.2.0-0), intel-oneapi-vtune (>= 2023.2.0-0), intel-oneapi-dnnl-devel (>= 2023.2.0-0) +Filename: pool/main/intel-basekit-2023.2.0-49384_amd64.deb +Size: 2088 +MD5sum: 5e71e60bbd5aae4718f4d53225681e4d +SHA1: b31df7350a4caf2922b1abef2993e6e035d2b464 +SHA256: 66544353030df58ec42956cacf359135b1851d9ac2fe5a6cdf8a57fd896ab2bc +SHA512: 80d75967eab42d10af69431e68c6c4e828a4aeb0bab1833975e61071916a2990a93dd50bf20145588e240d4a0c75243817eab56aea2558c2cb2a1853ed58df94 +Description: Intel® oneAPI Base Toolkit + +Package: intel-basekit-runtime-2023.2.0 +Architecture: amd64 +Version: 2023.2.0-49384 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit-getting-started (>= 2023.2.0-49384), intel-oneapi-common-vars (>= 2023.2.0-0), intel-oneapi-common-licensing-2023.2.0 , intel-oneapi-dev-utilities-2021.10.0 , intel-oneapi-dnnl (>= 2023.2.0-0) +Filename: pool/main/intel-basekit-runtime-2023.2.0-2023.2.0-49384_amd64.deb +Size: 1792 +MD5sum: 7f3aa2be0cbdf3da698c95ce90494c1a +SHA1: f45703a54b40f83049ea4e46d2585a5bdbee73e2 +SHA256: a24a8a0dbe1d4e21a5dd0607eb97175ea03ba3c11c48b822a7ad571855d70ebc +SHA512: 215dbec5930a19da0a7df4b7837289e64fcc2f802feb165adca0a020b147ee588ef01d618a5dd9360d92c4d45619cc8546d7b809f538ea627d1cbdf6c60a2996 +Description: Intel® oneAPI Base Toolkit + +Package: intel-hpckit +Architecture: amd64 +Version: 2023.2.0-49438 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit (>= 2023.2.0), intel-hpckit-getting-started (>= 2023.2.0-49438), intel-oneapi-common-vars (>= 2023.2.0-0), intel-oneapi-common-licensing (>= 2023.2.0-0), intel-oneapi-dev-utilities (>= 2021.10.0-0), intel-oneapi-inspector (>= 2023.2.0-0), intel-oneapi-itac (>= 2021.10.0-0), intel-oneapi-diagnostics-utility (>= 2022.4.0-0), intel-oneapi-mpi-devel (>= 2021.10.0-0), intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic (>= 2023.2.0-0), intel-oneapi-compiler-fortran (>= 2023.2.0-0) +Filename: pool/main/intel-hpckit-2023.2.0-49438_amd64.deb +Size: 2056 +MD5sum: c110be8d2dce40504b3f409a1d9c82b3 +SHA1: 4804799db317824b8634200063792eb2795dbee0 +SHA256: 070388a9a09a01036df9be022b0881114775e323e91da0598a9d5c8dd359dfce +SHA512: a25f9c4bc738b4b40aedaa87818a921dccc0e45b7f0fb5705fdc7c9f929c4b1c032d428c137e0fc9782b731fae9edb7c2638ed6068768e7094971afee892fcd2 +Description: Intel® oneAPI HPC Toolkit + +Package: intel-hpckit-2023.2.0 +Architecture: amd64 +Version: 2023.2.0-49438 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit-2023.2.0, intel-hpckit-getting-started (>= 2023.2.0-49438), intel-oneapi-common-vars (>= 2023.2.0-0), intel-oneapi-common-licensing-2023.2.0 , intel-oneapi-dev-utilities-2021.10.0 , intel-oneapi-inspector (>= 2023.2.0-0), intel-oneapi-itac-2021.10.0 , intel-oneapi-diagnostics-utility (>= 2022.4.0-0), intel-oneapi-mpi-devel-2021.10.0 , intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-2023.2.0 , intel-oneapi-compiler-fortran-2023.2.0 +Filename: pool/main/intel-hpckit-2023.2.0-2023.2.0-49438_amd64.deb +Size: 2060 +MD5sum: ac58aa29d7bed79aeb4f6466b8a723e4 +SHA1: 85d2070440ea5293de2a74c7f00a4bce0cde36e1 +SHA256: de901dfa552ee47d8dc42929e4e905998c223f5fdc01e0b9ce27ea61cbd9a8db +SHA512: 8ebc30810d657b4ff38954b2ac66dc4192da3cf908229dcbcb397ce9cb4a10c5bcfda8663d706e2db58f2c4d1239cd8a8a066473b8304cb1a4c16a345196267c +Description: Intel® oneAPI HPC Toolkit + +Package: intel-hpckit-runtime +Architecture: amd64 +Version: 2023.2.0-49438 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit (>= 2023.2.0), intel-oneapi-common-vars (>= 2023.2.0-0), intel-oneapi-common-licensing (>= 2023.2.0-0), intel-oneapi-dev-utilities (>= 2021.10.0-0), intel-oneapi-compiler-dpcpp-cpp-runtime (>= 2023.2.0-0), intel-oneapi-compiler-fortran-runtime (>= 2023.2.0-0) +Filename: pool/main/intel-hpckit-runtime-2023.2.0-49438_amd64.deb +Size: 1804 +MD5sum: a127d95a373739bce697d72df6b51d78 +SHA1: 036c6ec00b4b13a569ed4533e20609142d4b630b +SHA256: d684d590f4d390e06634fac4d6e5551efb57729dc7035a0ec77ec3a2fbe97ae6 +SHA512: 8f07ad3965de7cab06c4be92c9769954bb229440c4534f3e67cb7e15ee47099a6309b7b24e4d58bf303e2e407fb077e9829b9c8adccf5fe2d530743cfc9cb6db +Description: Intel® oneAPI HPC Toolkit + +Package: intel-hpckit-runtime-2023.2.0 +Architecture: amd64 +Version: 2023.2.0-49438 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-basekit-runtime-2023.2.0, intel-hpckit-getting-started (>= 2023.2.0-49438), intel-oneapi-common-vars (>= 2023.2.0-0), intel-oneapi-common-licensing-2023.2.0 , intel-oneapi-dev-utilities-2021.10.0 , intel-oneapi-compiler-dpcpp-cpp-runtime-2023.2.0 , intel-oneapi-compiler-fortran-runtime-2023.2.0 +Filename: pool/main/intel-hpckit-runtime-2023.2.0-2023.2.0-49438_amd64.deb +Size: 1820 +MD5sum: 76f562f0a4b73cb5cf6b62b21a1668ec +SHA1: e975c9e005a2bc40942309f722ca87fcdf20148a +SHA256: 213405343bedd8b99f38a916960163314b0217230c2785fe1275b286892fa242 +SHA512: be30950d4c39aecf7b3b08b2c03687ad65b6a02770f8585fe5d08ffbc4bd47933473d1c8b33a8a11c0e289aded13d661cb73951fc0d621b783248fb97020999b +Description: Intel® oneAPI HPC Toolkit + +Package: intel-oneapi-dev-utilities-2021.10.0 +Architecture: amd64 +Version: 2021.10.0-49423 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 18412 +Depends: intel-oneapi-dev-utilities-eclipse-cfg (>= 2021.10.0-49423), intel-oneapi-common-vars (>= 2023.2.0-0), intel-oneapi-common-licensing-2023.2.0 +Filename: pool/main/intel-oneapi-dev-utilities-2021.10.0-2021.10.0-49423_amd64.deb +Size: 11513918 +MD5sum: 19a4d6316abd1d5f3e76726c55dd4d51 +SHA1: 13f07f184123bc2ea114a73456ed9e87f9697b71 +SHA256: 49a2f8632259a13439818be208f1741a3f5ed7eca841704967dbdfdac7776865 +SHA512: bb3b056551417ea044f34b99db4381c6950e43a2a290589ca6ca35b4238ea182b3c1c58bab5fa105d5b8cd131b90185c2dfc585be04e5b994d4ee0b050baaa95 +Description: Dev Utilities + +Package: intel-oneapi-dev-utilities +Architecture: amd64 +Version: 2021.10.0-49423 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-dev-utilities-2021.10.0 +Filename: pool/main/intel-oneapi-dev-utilities-2021.10.0-49423_amd64.deb +Size: 2260 +MD5sum: c45ec97eb6d9e930304aa0e61ab6a626 +SHA1: a713f506152f9d31277a2279792c9dc09a1d3b4b +SHA256: 1b8a91511532dbeac9a5446821964842dbd44625100afa11541771b1b0bfcc57 +SHA512: c7387d81b5d5df742e2b501ae8e2da7bb471b6db998829f860218017e34df6de89bc838fe2adda1f908153cf8191b29542b1dde20ef7d27530c7faaf510eb365 +Description: Dev Utilities + +Package: intel-renderkit-2023.2.0 +Architecture: amd64 +Version: 2023.2.0-49365 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-renderkit-getting-started (>= 2023.2.0-49365), intel-oneapi-embree-4.1.0 , intel-oneapi-openvkl-1.3.2 , intel-oneapi-ospray-studio-0.12.1 , intel-oneapi-ispc-1.20.0 , intel-oneapi-rkutil-1.8.1 , intel-oneapi-openpgl-0.5.0 +Filename: pool/main/intel-renderkit-2023.2.0-2023.2.0-49365_amd64.deb +Size: 2016 +MD5sum: 526d9fb8d0d2350ff85eefbdd0eafcf2 +SHA1: 971dfbb8b079fd4f82aac599f3cab00b809c6255 +SHA256: f4cd27de49d05d5732201bf210a965e0cbc7803d7d836f380d5869706fd7fddc +SHA512: e0db9da3d65df33a9a0cf87f9c574d5edc479857b279f567cd41f47d94ec0988d30fc8e2069a9afc04f66fb0c489a5d0926438e546e4897af3f454369c31aa79 +Description: Intel® oneAPI Rendering Toolkit + +Package: intel-renderkit-runtime-2023.2.0 +Architecture: amd64 +Version: 2023.2.0-49365 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-renderkit-getting-started (>= 2023.2.0-49365), intel-oneapi-embree-4.1.0 , intel-oneapi-oidn-2.0.0 , intel-oneapi-openvkl-1.3.2 , intel-oneapi-ospray-2.12.0 , intel-oneapi-ospray-studio-0.12.1 , intel-oneapi-ispc-1.20.0 , intel-oneapi-rkutil-1.8.1 , intel-oneapi-openpgl-0.5.0 +Filename: pool/main/intel-renderkit-runtime-2023.2.0-2023.2.0-49365_amd64.deb +Size: 1832 +MD5sum: 350e2a259566309cdb67c21954ad00e4 +SHA1: e6d92caade17a4dbeeb64d694a75a346752ab6b4 +SHA256: 0f1af8e223049a6cf15600dd32cbd040f2416cc8ced3be616eaa62c79011de83 +SHA512: ac65700d85c303c3c7951e365f6789c05bd04df69a5f15f4a122517b9befe000c680ec26e5b3ce10956431e7155ed8faced83375a6f162d6b187e9d1a96c5fc1 +Description: Intel® oneAPI Rendering Toolkit + +Package: intel-renderkit-runtime +Architecture: amd64 +Version: 2023.2.0-49365 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-renderkit-getting-started (>= 2023.2.0-49365), intel-oneapi-embree (>= 4.1.0-0), intel-oneapi-oidn (>= 2.0.0-0), intel-oneapi-openvkl (>= 1.3.2-0), intel-oneapi-ospray (>= 2.12.0-0), intel-oneapi-ospray-studio (>= 0.12.1-0), intel-oneapi-ispc (>= 1.20.0-0), intel-oneapi-rkutil (>= 1.8.1-0), intel-oneapi-openpgl (>= 0.5.0-0) +Filename: pool/main/intel-renderkit-runtime-2023.2.0-49365_amd64.deb +Size: 1832 +MD5sum: 2214a7c26d193998912f7e6673c2f9ee +SHA1: 3f567834727f8992b2e582fdc2645265e3703669 +SHA256: c692d2a4b5c0f2d74c7f0af9c49df7dcae8a70d59097c4c6da102d60e88142b0 +SHA512: c59568d9cb5f1ebba08918e6e346e525178805598a80f8528cd67134614c2f4e067085f4f44021efbec84ca2e67ee6bfb2c921b8c43e6abe11520b0e75cde420 +Description: Intel® oneAPI Rendering Toolkit + +Package: intel-renderkit +Architecture: amd64 +Version: 2023.2.0-49365 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-renderkit-getting-started (>= 2023.2.0-49365), intel-oneapi-embree (>= 4.1.0-0), intel-oneapi-openvkl (>= 1.3.2-0), intel-oneapi-ospray-studio (>= 0.12.1-0), intel-oneapi-ispc (>= 1.20.0-0), intel-oneapi-rkutil (>= 1.8.1-0), intel-oneapi-openpgl (>= 0.5.0-0) +Filename: pool/main/intel-renderkit-2023.2.0-49365_amd64.deb +Size: 2024 +MD5sum: bd7467140d9cdcbf3b1c3fd5db2cb9a8 +SHA1: 4d678718174cb3ab530e4ffc5089e87026f96bdf +SHA256: 9e2262e22bb3019226744b0e5ad1063ad62723ef8a68ef43b82252cc38e84708 +SHA512: 7fad2ddfc17ea26b5f56a9d6304d65fc8f7f15526be612feced2d5df8608e82e220caad0d8b866f53da9df1a063a81d45863178f066902032c1f8e7d92655105 +Description: Intel® oneAPI Rendering Toolkit + +Package: intel-oneapi-condaindex +Architecture: amd64 +Version: 2023.2.0-49417 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 2277 +Depends: +Filename: pool/main/intel-oneapi-condaindex-2023.2.0-49417_amd64.deb +Size: 675946 +MD5sum: 8cb80c6e4ba32033d67a4ea144941998 +SHA1: 2999ab6bc7416066f38d68a82eb8559f387692b7 +SHA256: 833a4a4d535e21f51ce4b7123948baf8a94c16729f8af729f44cf0a14f9b33e1 +SHA512: 61bf2668581766efa83d2feff145c7d0b7e13c4dac421aab677c7629547de952a6af5859581bad17dcd83c6963eda2dcb1320376a610586d58b8bc33cc514bd1 +Description: oneAPI Common Install components + +Package: intel-oneapi-dpcpp-debugger-2023.2.0 +Architecture: amd64 +Version: 2023.2.0-49330 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 351497 +Depends: intel-oneapi-common-vars (>= 2023.2.0-0), intel-oneapi-common-licensing-2023.2.0 +Filename: pool/main/intel-oneapi-dpcpp-debugger-2023.2.0-2023.2.0-49330_amd64.deb +Size: 200934574 +MD5sum: 94267c49bbc170273bb6845f5c51a841 +SHA1: 8b1a81e8b7111f467adcb68f4135808bf9c98f85 +SHA256: f00ec116f5c30e1d5586ae1baaeef33acb1edc81a6462982c6146023c0d4ddcd +SHA512: cfdce9196814cf3ba7f2cb29f6cdf6be1241b8a736cf41f072f43927a500f917bf2035ccaa796ae5782b1c9488c1ae4295cf712658b449746d1e6a037045e3fe +Description: Intel® Distribution for GDB* + +Package: intel-oneapi-dpcpp-debugger +Architecture: amd64 +Version: 2023.2.0-49330 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-dpcpp-debugger-2023.2.0 +Filename: pool/main/intel-oneapi-dpcpp-debugger-2023.2.0-49330_amd64.deb +Size: 2152 +MD5sum: 1b9cbaef935b27422807b77b5b87ea81 +SHA1: 0a7adc20a79d656d73a897639da2d8371d883a04 +SHA256: 4c67c05c2fe153396c8626549d9693e2b1cae749dab9c9ce8e9020d51cf552ce +SHA512: 6fa82a52f585109fbad618f8a2e1fb3fc7f0f626ff0cffe7d49342928ab13ebb5e9e6a9e37fa6350e67a5ece10fd19abc6dd8352e882456dd0d7879e82f05d95 +Description: Intel® Distribution for GDB* + +Package: intel-oneapi-vtune +Architecture: amd64 +Version: 2023.2.0-49484 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1528460 +Depends: intel-oneapi-vtune-eclipse-plugin-vtune, intel-oneapi-common-vars (>= 2023.2.0-0), intel-oneapi-common-licensing-2023.2.0 +Filename: pool/main/intel-oneapi-vtune-2023.2.0-49484_amd64.deb +Size: 538005010 +MD5sum: 498e31298846f7057018da423eb38096 +SHA1: 4605a1eec3db346fb6814a5a3c9bdf451494981d +SHA256: 12e16519ae65188fd56f8a146dcd33241679586d606367895c4f922670dc6f35 +SHA512: f8051c77911cf02ac8f7f86a473681734c660b85176b336488a226fd0383c9d59da6a07173037831cda224861e79fe3d8f5e981d378b8d712665e8538b87b93b +Description: Intel® VTune(TM) Profiler + +Package: intel-dpcpp-cpp-compiler-2023.2.0 +Architecture: amd64 +Version: 2023.2.0-49254 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-2023.2.0 +Filename: pool/main/intel-dpcpp-cpp-compiler-2023.2.0-2023.2.0-49254_amd64.deb +Size: 1752 +MD5sum: 68781d49f5c6ef3eac64c67405073a03 +SHA1: 64709122e17b3b2124f188c9ac8edaa6443e8f99 +SHA256: 6acea2bbf78a52cff95d52013eefbfeb2dd5a727b0f4ca2b93033252c667d8de +SHA512: 40575dda14b1db3d3c2faa7d4d917a7922c42b35fb75f4edd851953cd4d320b3c6b3eb19750b45016567a01eff5c4431b7bd99b24e8bf3e95ecd7514c3d52ccc +Description: Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic + +Package: intel-oneapi-diagnostics-utility +Architecture: amd64 +Version: 2022.4.0-49091 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1180 +Depends: intel-oneapi-common-vars (>= 2023.2.0-0), intel-oneapi-common-licensing-2023.2.0 +Filename: pool/main/intel-oneapi-diagnostics-utility-2022.4.0-49091_amd64.deb +Size: 205258 +MD5sum: bd47becafad68dbe70911a7ed01ba3a7 +SHA1: 9c835afffc72371e8f1c9d7fc07f61098ec8e8fe +SHA256: 7424b33f75a29077533b9a88509c5ceb7a4af44d5d31d9a9c41f94aa6b2d2853 +SHA512: b3c4063f4528df95ed41b162d9f34ed82481b423a94dd36a707940e60d7b2897a7d56c7b7840d11648150c2ed3246052a94f188fe99d898f4a31bb93cf8e5fa8 +Description: Diagnostics Utility for Intel® oneAPI Toolkits + +Package: intel-oneapi-ipp-2021.9.0 +Architecture: amd64 +Version: 2021.9.0-49452 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 506109 +Depends: intel-oneapi-ipp-common-2021.9.0, intel-oneapi-tbb-2021.10.0, intel-oneapi-openmp-2023.2.0, intel-oneapi-condaindex (>= 2023.2.0-0), intel-oneapi-common-vars (>= 2023.2.0-0), intel-oneapi-common-licensing-2023.2.0 +Filename: pool/main/intel-oneapi-ipp-2021.9.0-2021.9.0-49452_amd64.deb +Size: 88477994 +MD5sum: aee9f68371f5a99087d88867f0696722 +SHA1: d8f16c22ae86f4bd2b3f923ec23c6d2a05a2b957 +SHA256: 7244589fc582c06ad52d06f6cbb3d121527e75684dddbad77bf9e7733c64c9eb +SHA512: 9a4ab66e935382d9110e033f69678fea939254895f2c112fbe62416f24fc3f343f72c941e94d73d26fceea14fff7f683000199bbecafd9037dcedeaa7e4fd28f +Description: Intel® Integrated Performance Primitives + +Package: intel-oneapi-ipp-devel +Architecture: amd64 +Version: 2021.9.0-49452 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ipp-devel-2021.9.0 +Filename: pool/main/intel-oneapi-ipp-devel-2021.9.0-49452_amd64.deb +Size: 2316 +MD5sum: fb39855869aeb2fffa918bee6a2c6a69 +SHA1: cfff873b16133e6814a554666165ddd45a9caa15 +SHA256: 6622e26e9c14fe1bdfbbc4520f17918ca06c1ec9bb841fb8fd7cfbbe88a829e4 +SHA512: 2c5b959678c391c0a8ef5be4530217c2097e2f535049564603764c1e669986e9a795b28660ef49e97d63b0eb94b3c4cf965701e046888c5cc272ed341169e172 +Description: Intel® Integrated Performance Primitives Development Package + +Package: intel-oneapi-ipp-devel-2021.9.0 +Architecture: amd64 +Version: 2021.9.0-49452 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 1116456 +Depends: intel-oneapi-ipp-2021.9.0, intel-oneapi-ipp-common-devel-2021.9.0, intel-oneapi-condaindex (>= 2023.2.0-0), intel-oneapi-common-vars (>= 2023.2.0-0), intel-oneapi-common-licensing-2023.2.0 +Filename: pool/main/intel-oneapi-ipp-devel-2021.9.0-2021.9.0-49452_amd64.deb +Size: 132965926 +MD5sum: 38a20a9cbd25f027d7d81707c3976377 +SHA1: b47d8aaf1018269c866e33796d26b483206da9ba +SHA256: bf9403a19351c5382cfe0dcfe4e3cea5f47bd761128c0292e6b4bd8c80ae0948 +SHA512: 24fdcd3467523725272884a9267085d7cca5d575ab4bcf695c8ae03d8096f9a2265a4e5a96be08e541ac0ec44ad75ffd5c0fdc36aaf0d6b9ff024f68875fcc5c +Description: Intel® Integrated Performance Primitives Development Package + +Package: intel-oneapi-ipp-devel-32bit-2021.9.0 +Architecture: amd64 +Version: 2021.9.0-49452 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 600679 +Depends: intel-oneapi-ipp-32bit-2021.9.0, intel-oneapi-ipp-common-devel-2021.9.0, intel-oneapi-condaindex (>= 2023.2.0-0), intel-oneapi-common-vars (>= 2023.2.0-0), intel-oneapi-common-licensing-2023.2.0 +Filename: pool/main/intel-oneapi-ipp-devel-32bit-2021.9.0-2021.9.0-49452_amd64.deb +Size: 75535102 +MD5sum: 526ba8021f3601131050a8dcd83535a9 +SHA1: 2cc426541230e7cf716a20f12f8b787b02e8ab68 +SHA256: 34e10cf911857d70567f9461849c078b2d6539777e9a1f5d5c00d6d7f005c47e +SHA512: 2177c8236f51c6b328e6fffc0d1e8a99cf838ebd06c5adb40413eaafa802c736c159175147cd7aad52f5e58c400808ae8725c8e4e315d8d3854756ca22baeb01 +Description: Intel® Integrated Performance Primitives Development Package for IA-32 + +Package: intel-oneapi-runtime-ipp +Architecture: amd64 +Version: 2021.9.0-49452 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 506069 +Depends: intel-oneapi-runtime-ipp-common (= 2021.9.0-49452), intel-oneapi-runtime-tbb (>= 2021.10.0-0), intel-oneapi-runtime-openmp (>= 2023.2.0-0) +Filename: pool/main/intel-oneapi-runtime-ipp-2021.9.0-49452_amd64.deb +Size: 87010264 +MD5sum: cdeef408635c96ccd7e9016c2a7e3671 +SHA1: 5edeca6cb27db42e322f9a72276b79be93fc8778 +SHA256: c0e20c75a1064f19e988a3a7b03c9058cba86c8f8f1ae3c0a19cc4eaff9e0c69 +SHA512: 5fdc304aa50946e07fda054c2cbd970c4344c13f3b8574fea7e512cce04e6fbf56b89ad4371aa6282dfbfef29442727e2232d9d0c5adc4568ede2f85feadd1ee +Description: Intel® Integrated Performance Primitives runtime + +Package: intel-oneapi-ipp +Architecture: amd64 +Version: 2021.9.0-49452 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ipp-2021.9.0 +Filename: pool/main/intel-oneapi-ipp-2021.9.0-49452_amd64.deb +Size: 2548 +MD5sum: 5f891fc0a736f539aeb81ead20cf2f62 +SHA1: 2cd6c7ebc094c5dc7a3636744f52dfb725f7bc4c +SHA256: 26f18297359cb923f9db157575c0173e4913fdc86783a186a2042a75f71d007b +SHA512: 17cb5a947a8d95709cbfb63c93fb0e01196219bf23cadaf3fb305408ad41e7ff23c54530bf9bcf8935506f3ddd57b0cd07f2466b5955c9c634a61a5302537316 +Description: Intel® Integrated Performance Primitives + +Package: intel-oneapi-ipp-devel-32bit +Architecture: amd64 +Version: 2021.9.0-49452 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ipp-devel-32bit-2021.9.0 +Filename: pool/main/intel-oneapi-ipp-devel-32bit-2021.9.0-49452_amd64.deb +Size: 2320 +MD5sum: a7f0dbc937d314e1c4dd76ce039d7e05 +SHA1: 196acf4e1e46cbea90bd659db27bd75f6bfd92c6 +SHA256: 56ed7a0f7875107e01e584ab6704642a40b35dece6bcd4e8a043ed6277e50ac1 +SHA512: 2bf9394b7e0ccb65cd7da60ae1cdfc9385970ae4eaf68ebd48c4e6e9f72f1c4b61862d79e9aa4b4212994effe983a57f4705e49d8fa3e503e4e8358f4f2836a3 +Description: Intel® Integrated Performance Primitives Development Package for IA-32 + +Package: intel-oneapi-ospray +Architecture: amd64 +Version: 2.12.0-49389 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 0 +Depends: intel-oneapi-ospray-2.12.0 +Filename: pool/main/intel-oneapi-ospray-2.12.0-49389_amd64.deb +Size: 1708 +MD5sum: d6f1695d8cb91bed353614c080026b26 +SHA1: bc9003d29d8121b664ea8fdd0facddfa60981beb +SHA256: 435ec4c41097428c3f38e88278c1fd779aeb75741ed2ef0c26edf3a3c884cf7f +SHA512: d8605ecf7084426e360af522f3d5263dfa2682b3310cf0e996086442f951def5b561357a93a7860983037a532900c4a49c70ea8847b99398a30b3243d49da3f4 +Description: Intel® OSPRay + +Package: intel-oneapi-ospray-2.12.0 +Architecture: amd64 +Version: 2.12.0-49389 +Multi-Arch: foreign +Priority: optional +Section: libs +Maintainer: Intel Corporation +Installed-Size: 24685 +Depends: intel-oneapi-embree-4.1.0, intel-oneapi-rkcommon-1.11.0, intel-oneapi-openvkl-1.3.2, intel-oneapi-oidn-2.0.0, intel-oneapi-mpi-2021.10.0, intel-oneapi-ispc-1.20.0, intel-oneapi-common-vars (>= 2023.2.0-0), intel-oneapi-common-licensing-2023.2.0 +Filename: pool/main/intel-oneapi-ospray-2.12.0-2.12.0-49389_amd64.deb +Size: 5266056 +MD5sum: 4b69d6d75c7b38ada8dd06145be8c301 +SHA1: 6e25212ecbd14b6a208f80dda71847ec1c1bfa62 +SHA256: 24e5b1ea19fb5d1396485b9051730cb6f224bd26c69519eeb0b92665fd4cba7b +SHA512: 7fd1129b0f071684aae8d674a8a49384d0ba89bfb82368caf203df09cd54de852df4723a5614aadbab16ef601238b0b0629d0d5be7448ff1aaa25e7f9698928c +Description: Intel® OSPRay + diff --git a/bsc/intel-oneapi/update.sh b/bsc/intel-oneapi/update.sh new file mode 100755 index 0000000..4829237 --- /dev/null +++ b/bsc/intel-oneapi/update.sh @@ -0,0 +1,4 @@ +#!/bin/sh + +curl https://apt.repos.intel.com/oneapi/dists/all/main/binary-amd64/Packages -o amd64-packages +curl https://apt.repos.intel.com/oneapi/dists/all/main/binary-all/Packages -o all-packages From f015e5f71cc5a055a374e68bcfa52dd2a68e88c9 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 17 Jul 2023 10:52:28 +0200 Subject: [PATCH 823/987] Use builtin.fetchurl to see the progress --- bsc/intel-oneapi/2023.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bsc/intel-oneapi/2023.nix b/bsc/intel-oneapi/2023.nix index eaa9cd0..f4bd902 100644 --- a/bsc/intel-oneapi/2023.nix +++ b/bsc/intel-oneapi/2023.nix @@ -93,7 +93,7 @@ let let urls = builtins.map (x: getUrl aptPackages x) names; sums = builtins.map (x: getSum aptPackages x) names; - getsrc = url: sha256: fetchurl { inherit url sha256; }; + getsrc = url: sha256: builtins.fetchurl { inherit url sha256; }; debs = lib.zipListsWith getsrc urls sums; in uncompressDebs debs "${name}-source"; From 976cdd5a4d98a4b772d35d9cdcc758bbd4eef1c6 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 26 Jul 2023 16:00:02 +0200 Subject: [PATCH 824/987] Update ovni to 1.2.2 --- bsc/ovni/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bsc/ovni/default.nix b/bsc/ovni/default.nix index 49fc847..3595d18 100644 --- a/bsc/ovni/default.nix +++ b/bsc/ovni/default.nix @@ -15,12 +15,12 @@ with lib; let release = rec { - version = "1.2.0"; + version = "1.2.2"; src = fetchFromGitHub { owner = "bsc-pm"; repo = "ovni"; rev = "${version}"; - sha256 = "sha256-J6eC62RT/0CHN7IXJuIw1c9GBkjvVEyh0HjIF7uG0FM="; + sha256 = "sha256-Hf6aeUN/uElfA9Lzzrejffb8RA6lcZQytqBdmIiBBJk="; }; }; From b4a20d7c3af854b39682484adfd1c7979319f439 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 28 Jul 2023 18:00:45 +0200 Subject: [PATCH 825/987] Update NODES to 1.0.1 --- bsc/nodes/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bsc/nodes/default.nix b/bsc/nodes/default.nix index b5f60f7..a109301 100644 --- a/bsc/nodes/default.nix +++ b/bsc/nodes/default.nix @@ -25,12 +25,12 @@ with lib; let release = rec { - version = "1.0"; + version = "1.0.1"; src = fetchFromGitHub { owner = "bsc-pm"; repo = "nodes"; rev = "version-${version}"; - sha256 = "sha256-UqqvbAqF512qsHsEE24WNSxnV1wCGAXuzc7FkzQxu10="; + sha256 = "sha256-+gnFSjScxq+AB0FJxqxk388chayyDiQ+wBpCMKnX6m4="; }; }; From c30851d6e90458ba2707520bdc1ca14b66acd429 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 31 Aug 2023 12:40:54 +0200 Subject: [PATCH 826/987] Add packages to flake.nix --- flake.nix | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/flake.nix b/flake.nix index 266eb61..3757e49 100644 --- a/flake.nix +++ b/flake.nix @@ -1,5 +1,19 @@ { - outputs = {...}: { - bscOverlay = import ./overlay.nix; + inputs = { + nixpkgs.url = "nixpkgs"; }; + + outputs = { self, nixpkgs, ...}: + let + pkgs = import nixpkgs { + # For now we only support x86 + system = "x86_64-linux"; + overlays = [ self.overlays.default ]; + }; + in + { + bscOverlay = import ./overlay.nix; + overlays.default = self.bscOverlay; + packages.x86_64-linux = pkgs; + }; } From bcf2df64c8f63da1ec2ad3764a9e8aa1cb9410e6 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 31 Aug 2023 12:41:15 +0200 Subject: [PATCH 827/987] Add initial flake.lock --- flake.lock | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 flake.lock diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..badc279 --- /dev/null +++ b/flake.lock @@ -0,0 +1,24 @@ +{ + "nodes": { + "nixpkgs": { + "locked": { + "lastModified": 1692447944, + "narHash": "sha256-fkJGNjEmTPvqBs215EQU4r9ivecV5Qge5cF/QDLVn3U=", + "path": "/nix/store/s4jqyj35hii03rs7j5n6vn7gpgp6ja81-source", + "rev": "d680ded26da5cf104dd2735a51e88d2d8f487b4d", + "type": "path" + }, + "original": { + "id": "nixpkgs", + "type": "indirect" + } + }, + "root": { + "inputs": { + "nixpkgs": "nixpkgs" + } + } + }, + "root": "root", + "version": 7 +} From 124cb6a4c314b08301a946ec06d91ead80348f8c Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 31 Aug 2023 12:43:07 +0200 Subject: [PATCH 828/987] Update nixpkgs in default.nix too --- default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/default.nix b/default.nix index ab22cbd..f374124 100644 --- a/default.nix +++ b/default.nix @@ -1,7 +1,7 @@ let bscOverlay = import ./overlay.nix; - commit = "d6b863fd9b7bb962e6f9fdf292419a775e772891"; + commit = "d680ded26da5cf104dd2735a51e88d2d8f487b4d"; # Pin the nixpkgs nixpkgsPath = builtins.fetchTarball { @@ -9,7 +9,7 @@ let name = "nixpkgs-${commit}"; url = "https://github.com/nixos/nixpkgs/archive/${commit}.tar.gz"; # Hash obtained using `nix-prefetch-url --unpack ` - sha256 = "02rd1n6d453rdp2978bvnp99nyfa26jxgbsg78yb9mmdxvha3hnr"; + sha256 = "0xczslr40zy1wlg0ir8mwyyn5gz22i2f9dfd0vmgnk1664v4chky"; }; pkgs = import nixpkgsPath { From 18d64c352c10f9ce74aabddeba5a5db02b74ec27 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 31 Aug 2023 12:56:35 +0200 Subject: [PATCH 829/987] Add pkg-config dependency for paraverKernel --- bsc/paraver/kernel.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/bsc/paraver/kernel.nix b/bsc/paraver/kernel.nix index 5e4d192..697d10a 100644 --- a/bsc/paraver/kernel.nix +++ b/bsc/paraver/kernel.nix @@ -7,6 +7,7 @@ , wxGTK30 , autoconf , automake +, pkg-config }: let @@ -49,5 +50,6 @@ stdenv.mkDerivation rec { xml2 autoconf automake + pkg-config ]; } From fd5fb5c055d6cbf15f92bce68ceec142cab1fba4 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 1 Sep 2023 16:43:49 +0200 Subject: [PATCH 830/987] Add asan test for clangOmpss2 --- overlay.nix | 5 +++++ test/compilers/asan.nix | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+) create mode 100644 test/compilers/asan.nix diff --git a/overlay.nix b/overlay.nix index 0f054e5..3c7c9bc 100644 --- a/overlay.nix +++ b/overlay.nix @@ -359,6 +359,7 @@ let compilers.hello-cpp = callPackage ./test/compilers/hello-cpp.nix { }; compilers.hello-f = callPackage ./test/compilers/hello-f.nix { }; compilers.lto = callPackage ./test/compilers/lto.nix { }; + compilers.asan = callPackage ./test/compilers/asan.nix { }; compilers.intel2023.icx.c = compilers.hello-c.override { stdenv = bsc.intel2023.stdenv; }; @@ -377,6 +378,9 @@ let compilers.clangOmpss2.lto = compilers.lto.override { stdenv = bsc.stdenvClangOmpss2; }; + compilers.clangOmpss2.asan = compilers.asan.override { + stdenv = bsc.stdenvClangOmpss2; + }; compilers.clangOmpss2.task = callPackage ./test/compilers/ompss2.nix { stdenv = bsc.stdenvClangOmpss2; }; @@ -393,6 +397,7 @@ let compilers.intel2023.ifort compilers.clangOmpss2.lto compilers.clangOmpss2.task + compilers.clangOmpss2.asan compilers.clangNodes.task ]; diff --git a/test/compilers/asan.nix b/test/compilers/asan.nix new file mode 100644 index 0000000..63b057e --- /dev/null +++ b/test/compilers/asan.nix @@ -0,0 +1,32 @@ +{ stdenv, writeText, which, strace }: + +let + hello_c = writeText "hello.c" '' + #include + + int main() + { + printf("Hello world!\n"); + return 0; + } + ''; +in + +stdenv.mkDerivation rec { + version = "0.0.1"; + name = "asan-c"; + buildInputs = [ stdenv which strace ]; + src = hello_c; + dontUnpack = true; + dontConfigure = true; + NIX_DEBUG = 0; + buildPhase = '' + cp ${hello_c} hello.c + $CC -v -fsanitize=address hello.c -o hello + ./hello + ''; + + installPhase = '' + touch $out + ''; +} From 4b1d4c18af60879b61a79bb8c85d9167f600db32 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 1 Sep 2023 16:44:17 +0200 Subject: [PATCH 831/987] Set the host triple in clang Fixes the problem where the triple used by newer versions of config.guess don't match due to a change in x86 from x86_64-unknown-linux-gnu to x86_64-pc-linux-gnu. --- bsc/llvm-ompss2/clang.nix | 3 +++ 1 file changed, 3 insertions(+) diff --git a/bsc/llvm-ompss2/clang.nix b/bsc/llvm-ompss2/clang.nix index a1b05a6..13683f5 100644 --- a/bsc/llvm-ompss2/clang.nix +++ b/bsc/llvm-ompss2/clang.nix @@ -62,11 +62,14 @@ stdenv.mkDerivation rec { dontUseCmakeBuildDir = true; enableAssertions = if enableDebug then "ON" else "OFF"; + # Fix the host triple, as it has changed in a newer config.guess: + # https://git.savannah.gnu.org/gitweb/?p=config.git;a=commitdiff;h=ca9bfb8cc75a2be1819d89c664a867785c96c9ba preConfigure = '' mkdir -p build cd build cmakeDir="../llvm" cmakeFlagsArray=( + "-DLLVM_HOST_TRIPLE=${stdenv.targetPlatform.config}" "-DLLVM_ENABLE_LLD=ON" "-DCMAKE_CXX_FLAGS_DEBUG=-g -ggnu-pubnames" "-DCMAKE_EXE_LINKER_FLAGS_DEBUG=-Wl,-gdb-index" From ee24b910a1cb95bd222e253da43238e843816f2f Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 1 Sep 2023 16:51:32 +0200 Subject: [PATCH 832/987] Use clang++ for C++ tests --- test/compilers/clang-ompss2.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/compilers/clang-ompss2.nix b/test/compilers/clang-ompss2.nix index db7e820..3907bb8 100644 --- a/test/compilers/clang-ompss2.nix +++ b/test/compilers/clang-ompss2.nix @@ -10,7 +10,7 @@ stdenv.mkDerivation rec { #export NIX_DEBUG=6 clang -fompss-2 hello.c -o hello ./hello - clang -fompss-2 hello.cc -o hello + clang++ -fompss-2 hello.cc -o hello ./hello ''; From 4b06175b42f2c59a89facfa91885fcff42620e94 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 5 Sep 2023 17:55:38 +0200 Subject: [PATCH 833/987] Only build clangOmpss2 to target the host --- bsc/llvm-ompss2/clang.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/bsc/llvm-ompss2/clang.nix b/bsc/llvm-ompss2/clang.nix index 13683f5..ce1a585 100644 --- a/bsc/llvm-ompss2/clang.nix +++ b/bsc/llvm-ompss2/clang.nix @@ -70,6 +70,7 @@ stdenv.mkDerivation rec { cmakeDir="../llvm" cmakeFlagsArray=( "-DLLVM_HOST_TRIPLE=${stdenv.targetPlatform.config}" + "-DLLVM_TARGETS_TO_BUILD=host" "-DLLVM_ENABLE_LLD=ON" "-DCMAKE_CXX_FLAGS_DEBUG=-g -ggnu-pubnames" "-DCMAKE_EXE_LINKER_FLAGS_DEBUG=-Wl,-gdb-index" From 01e07d559cd235667cfcc87dc92dc7e857e9d65a Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 6 Sep 2023 14:14:40 +0200 Subject: [PATCH 834/987] Link clang with the dynamic llvm library It dramatically reduces the size of the installation to 250 MiB. We also need to inject the rpath of the libraries during the build phase with CMAKE_BUILD_RPATH as well as zlib. The CMAKE_BUILD_WITH_INSTALL_PATH option is disabled, as it contradicts the former. --- bsc/llvm-ompss2/clang.nix | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/bsc/llvm-ompss2/clang.nix b/bsc/llvm-ompss2/clang.nix index ce1a585..f38bfea 100644 --- a/bsc/llvm-ompss2/clang.nix +++ b/bsc/llvm-ompss2/clang.nix @@ -71,6 +71,10 @@ stdenv.mkDerivation rec { cmakeFlagsArray=( "-DLLVM_HOST_TRIPLE=${stdenv.targetPlatform.config}" "-DLLVM_TARGETS_TO_BUILD=host" + "-DLLVM_BUILD_LLVM_DYLIB=ON" + "-DLLVM_LINK_LLVM_DYLIB=ON" + # Required to run clang-ast-dump and clang-tblgen during build + "-DCMAKE_BUILD_RPATH=$PWD/lib:${zlib}/lib" "-DLLVM_ENABLE_LLD=ON" "-DCMAKE_CXX_FLAGS_DEBUG=-g -ggnu-pubnames" "-DCMAKE_EXE_LINKER_FLAGS_DEBUG=-Wl,-gdb-index" @@ -83,7 +87,6 @@ stdenv.mkDerivation rec { "-DLLVM_ENABLE_LIBXML2=OFF" # Set the rpath to include external libraries (zlib) both on build and # install - "-DCMAKE_BUILD_WITH_INSTALL_RPATH=ON" "-DCMAKE_INSTALL_RPATH_USE_LINK_PATH=ON" "-DCMAKE_INSTALL_RPATH=${zlib}/lib" ) From a63f578c99a5a2ff8fbd485495b9c8d6d4471541 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 6 Sep 2023 15:12:51 +0200 Subject: [PATCH 835/987] Update clangOmpss2 to 2023.05.1 --- bsc/llvm-ompss2/clang.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bsc/llvm-ompss2/clang.nix b/bsc/llvm-ompss2/clang.nix index f38bfea..a3d583b 100644 --- a/bsc/llvm-ompss2/clang.nix +++ b/bsc/llvm-ompss2/clang.nix @@ -15,14 +15,14 @@ }: stdenv.mkDerivation rec { - version = "2023.05"; + version = "2023.05.1"; pname = "clang-ompss2"; src = fetchFromGitHub { owner = "bsc-pm"; repo = "llvm"; rev = "refs/tags/github-release-${version}"; - sha256 = "sha256-AWkIfF3ZuYqbwkXt5L5cs+obl7aXuyYGVOVHMauD4Wk="; + sha256 = "sha256-NB/27F1ZRJf6MXFQjinT2gCsoPbEZYlBMhd3uKcK2GM="; }; enableParallelBuilding = true; From abfd8484ee8a0746990133f79b997ec087e0c40a Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 6 Sep 2023 15:33:55 +0200 Subject: [PATCH 836/987] Add sonar library --- bsc/sonar/default.nix | 24 ++++++++++++++++++++++++ overlay.nix | 3 +++ 2 files changed, 27 insertions(+) create mode 100644 bsc/sonar/default.nix diff --git a/bsc/sonar/default.nix b/bsc/sonar/default.nix new file mode 100644 index 0000000..951cca0 --- /dev/null +++ b/bsc/sonar/default.nix @@ -0,0 +1,24 @@ +{ + stdenv +, autoreconfHook +, ovni +, mpi +}: + +stdenv.mkDerivation rec { + pname = "sonar"; + version = src.shortRev; + src = builtins.fetchGit { + url = "ssh://git@bscpm03.bsc.es/ovni/sonar"; + ref = "main"; + rev = "1ab3d99d57e1da785bc1addac620b3358c8bbb16"; + }; + hardeningDisable = [ "all" ]; + dontStrip = true; + configureFlags = [ "--with-ovni=${ovni}" ]; + buildInputs = [ + autoreconfHook + ovni + mpi + ]; +} diff --git a/overlay.nix b/overlay.nix index 3c7c9bc..6450399 100644 --- a/overlay.nix +++ b/overlay.nix @@ -224,6 +224,9 @@ let tampiRelease = callPackage ./bsc/tampi/default.nix { }; tampiGit = callPackage ./bsc/tampi/git.nix { }; + # Sonar + sonar = callPackage ./bsc/sonar/default.nix { }; + # ================================================================= # GASPI # ================================================================= From 61bd7ee947b6ca0a40deaed76f79156be28bef07 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 6 Sep 2023 16:20:59 +0200 Subject: [PATCH 837/987] Fix ovni gitUrl input parameter --- bsc/ovni/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bsc/ovni/default.nix b/bsc/ovni/default.nix index 3595d18..44fd2a4 100644 --- a/bsc/ovni/default.nix +++ b/bsc/ovni/default.nix @@ -6,7 +6,7 @@ , fetchFromGitHub , useGit ? false , gitBranch ? "master" -, gitURL ? "ssh://git@bscpm03.bsc.es/rarias/ovni.git" +, gitUrl ? "ssh://git@bscpm03.bsc.es/rarias/ovni.git" , gitCommit ? "d0a47783f20f8b177a48418966dae45454193a6a" , enableDebug ? false }: From ee5cbd08dd87707b866475a2998201b81a4ff852 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 6 Sep 2023 17:57:18 +0200 Subject: [PATCH 838/987] Update sonar commit --- bsc/sonar/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bsc/sonar/default.nix b/bsc/sonar/default.nix index 951cca0..691422e 100644 --- a/bsc/sonar/default.nix +++ b/bsc/sonar/default.nix @@ -11,7 +11,7 @@ stdenv.mkDerivation rec { src = builtins.fetchGit { url = "ssh://git@bscpm03.bsc.es/ovni/sonar"; ref = "main"; - rev = "1ab3d99d57e1da785bc1addac620b3358c8bbb16"; + rev = "1299731b56addc18f530f7327f62267624c4363a"; }; hardeningDisable = [ "all" ]; dontStrip = true; From 4883b750bd2edcc9c43c458a8c9bd46cb94f68c4 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 7 Sep 2023 09:08:36 +0200 Subject: [PATCH 839/987] Fix bench6 commit --- bsc/bench6/default.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/bsc/bench6/default.nix b/bsc/bench6/default.nix index fcd49d4..36519a6 100644 --- a/bsc/bench6/default.nix +++ b/bsc/bench6/default.nix @@ -8,6 +8,7 @@ , tampiGit , gitBranch ? "master" , gitURL ? "ssh://git@bscpm03.bsc.es/rarias/bench6.git" +, gitCommit ? "1e6ce2aa8ad7b4eef38df1581d7ec48a8815f85d" }: stdenv.mkDerivation rec { @@ -17,6 +18,7 @@ stdenv.mkDerivation rec { src = builtins.fetchGit { url = gitURL; ref = gitBranch; + rev = gitCommit; }; buildInputs = [ cmake clangOmpss2Git nanos6Git nodes mpi tampiGit ]; From 065ab83083e08bcecd92b537502791863b754a96 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 7 Sep 2023 09:11:52 +0200 Subject: [PATCH 840/987] Use release for bench6 dependencies --- bsc/bench6/default.nix | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/bsc/bench6/default.nix b/bsc/bench6/default.nix index 36519a6..f6a908a 100644 --- a/bsc/bench6/default.nix +++ b/bsc/bench6/default.nix @@ -1,11 +1,11 @@ { stdenv , cmake -, clangOmpss2Git -, nanos6Git +, clangOmpss2 +, nanos6 , nodes , mpi -, tampiGit +, tampi , gitBranch ? "master" , gitURL ? "ssh://git@bscpm03.bsc.es/rarias/bench6.git" , gitCommit ? "1e6ce2aa8ad7b4eef38df1581d7ec48a8815f85d" @@ -21,7 +21,7 @@ stdenv.mkDerivation rec { rev = gitCommit; }; - buildInputs = [ cmake clangOmpss2Git nanos6Git nodes mpi tampiGit ]; + buildInputs = [ cmake clangOmpss2 nanos6 nodes mpi tampi ]; enableParallelBuilding = false; cmakeFlags = [ From 3efc10e57d515be698f2ccad7df87036a8354b19 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 7 Sep 2023 10:43:13 +0200 Subject: [PATCH 841/987] Use version tag for sonar --- bsc/sonar/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bsc/sonar/default.nix b/bsc/sonar/default.nix index 691422e..b362976 100644 --- a/bsc/sonar/default.nix +++ b/bsc/sonar/default.nix @@ -7,10 +7,10 @@ stdenv.mkDerivation rec { pname = "sonar"; - version = src.shortRev; + version = "0.1.0"; src = builtins.fetchGit { url = "ssh://git@bscpm03.bsc.es/ovni/sonar"; - ref = "main"; + ref = version; rev = "1299731b56addc18f530f7327f62267624c4363a"; }; hardeningDisable = [ "all" ]; From 7d4c9a57c6fc7a36ed97eca5554eec1b306daa80 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 7 Sep 2023 10:54:15 +0200 Subject: [PATCH 842/987] Update ovni to 1.3.0 --- bsc/ovni/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bsc/ovni/default.nix b/bsc/ovni/default.nix index 44fd2a4..a37dcf7 100644 --- a/bsc/ovni/default.nix +++ b/bsc/ovni/default.nix @@ -15,12 +15,12 @@ with lib; let release = rec { - version = "1.2.2"; + version = "1.3.0"; src = fetchFromGitHub { owner = "bsc-pm"; repo = "ovni"; rev = "${version}"; - sha256 = "sha256-Hf6aeUN/uElfA9Lzzrejffb8RA6lcZQytqBdmIiBBJk="; + sha256 = "sha256-4ulohGnbQwAZ/qnm5bmceoMhTuAHlCfLAWEodZ9YMP0="; }; }; From 8597bb97ab94464ae9d9ac062f73eb84a352fe7d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ra=C3=BAl=20Pe=C3=B1acoba?= Date: Fri, 1 Sep 2023 19:05:41 +0200 Subject: [PATCH 843/987] Add nix-wrap, which enables isolated environment in clusters --- bsc/nix-wrap/default.nix | 89 ++++++++++++++++++++++++++++++++++++++++ overlay.nix | 2 + 2 files changed, 91 insertions(+) create mode 100644 bsc/nix-wrap/default.nix diff --git a/bsc/nix-wrap/default.nix b/bsc/nix-wrap/default.nix new file mode 100644 index 0000000..6b9a4af --- /dev/null +++ b/bsc/nix-wrap/default.nix @@ -0,0 +1,89 @@ +{ + stdenv +, bashInteractive +, busybox +, nix +, writeText +, pkgsStatic +}: + +let + bubblewrap = pkgsStatic.bubblewrap; + nixPrefix = "/gpfs/projects/bsc15/nix"; + nixConfDir = "share"; + nix_wrap_sh = writeText "nix-wrap.sh" '' + #!/usr/bin/env bash + # + busybox_bin="${nixPrefix}${busybox}/bin" + bubblewrap_bin="${nixPrefix}/${bubblewrap}/bin" + + bashInteractive_bin="${bashInteractive}/bin" + nix_bin="${nix}/bin" + + rootdir=$(mktemp -d) + tmpdir=$(mktemp -d) + + args=( + --bind "$rootdir/" / + --bind "${nixPrefix}/nix" /nix + --bind "$busybox_bin" /bin + --dev-bind /dev /dev + --bind /boot /boot + --proc /proc + --bind /run /run + --bind /sys /sys + --bind "$tmpdir" /tmp + --bind "$PWD" "$PWD" + --bind /etc/host.conf /etc/host.conf + --bind /etc/hosts /etc/hosts + --bind /etc/networks /etc/networks + --bind /etc/passwd /etc/passwd + --bind /etc/group /etc/group + --bind /etc/nsswitch.conf /etc/nsswitch.conf + --bind /etc/resolv.conf /etc/resolv.conf + ) + + export PATH="/bin:$bashInteractive_bin" + export PATH="$nix_bin:$PATH" + export TMPDIR=/tmp + export PS1="[nix-wrap] \u@\h \W $ " + export NIX_CONF_DIR=@out@/share + + if [ $# -eq 0 ]; then + "$bubblewrap_bin/bwrap" ''${args[@]} /bin/sh + else + "$bubblewrap_bin/bwrap" ''${args[@]} "''${@}" + fi + + ''; + nix_conf = writeText "nix.conf" '' + experimental-features = nix-command flakes + sandbox-fallback = false + ''; + +in + +stdenv.mkDerivation rec { + version = "0.0.1"; + name = "nix-wrap"; + buildInputs = [ + bashInteractive + busybox + nix + ]; + src = null; + dontUnpack = true; + dontConfigure = true; + dontBuild = true; + NIX_DEBUG = 0; + + installPhase = '' + mkdir -p $out/bin + substituteAll ${nix_wrap_sh} $out/bin/nix-wrap + chmod +x $out/bin/nix-wrap + + mkdir -p $out/share + cp ${nix_conf} $out/share/nix.conf + ''; +} + diff --git a/overlay.nix b/overlay.nix index 6450399..7e4a71f 100644 --- a/overlay.nix +++ b/overlay.nix @@ -340,6 +340,8 @@ let cpuid = callPackage ./bsc/cpuid/default.nix { }; bench6 = callPackage ./bsc/bench6/default.nix { }; + nix-wrap = callPackage ./bsc/nix-wrap/default.nix { }; + # ================================================================= # Garlic benchmark # ================================================================= From 6122fef92701701e1a0622550ac0fc5c2beb5906 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 7 Sep 2023 11:00:16 +0200 Subject: [PATCH 844/987] Don't replace the shebang in nix-wrap --- bsc/nix-wrap/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/bsc/nix-wrap/default.nix b/bsc/nix-wrap/default.nix index 6b9a4af..587be82 100644 --- a/bsc/nix-wrap/default.nix +++ b/bsc/nix-wrap/default.nix @@ -75,6 +75,7 @@ stdenv.mkDerivation rec { dontUnpack = true; dontConfigure = true; dontBuild = true; + dontPatchShebangs = true; NIX_DEBUG = 0; installPhase = '' From a3e1047f515e90292eadbe9dbc5f3aa00ba87730 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 14 Sep 2023 17:54:32 +0200 Subject: [PATCH 845/987] Remove flake-lock file --- flake.lock | 24 ------------------------ 1 file changed, 24 deletions(-) delete mode 100644 flake.lock diff --git a/flake.lock b/flake.lock deleted file mode 100644 index badc279..0000000 --- a/flake.lock +++ /dev/null @@ -1,24 +0,0 @@ -{ - "nodes": { - "nixpkgs": { - "locked": { - "lastModified": 1692447944, - "narHash": "sha256-fkJGNjEmTPvqBs215EQU4r9ivecV5Qge5cF/QDLVn3U=", - "path": "/nix/store/s4jqyj35hii03rs7j5n6vn7gpgp6ja81-source", - "rev": "d680ded26da5cf104dd2735a51e88d2d8f487b4d", - "type": "path" - }, - "original": { - "id": "nixpkgs", - "type": "indirect" - } - }, - "root": { - "inputs": { - "nixpkgs": "nixpkgs" - } - } - }, - "root": "root", - "version": 7 -} From 3a4062ac04be6263c64a481420d8e768c2521b80 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 14 Sep 2023 18:21:50 +0200 Subject: [PATCH 846/987] Revert "Remove flake-lock file" This reverts commit a3e1047f515e90292eadbe9dbc5f3aa00ba87730. --- flake.lock | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 flake.lock diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..badc279 --- /dev/null +++ b/flake.lock @@ -0,0 +1,24 @@ +{ + "nodes": { + "nixpkgs": { + "locked": { + "lastModified": 1692447944, + "narHash": "sha256-fkJGNjEmTPvqBs215EQU4r9ivecV5Qge5cF/QDLVn3U=", + "path": "/nix/store/s4jqyj35hii03rs7j5n6vn7gpgp6ja81-source", + "rev": "d680ded26da5cf104dd2735a51e88d2d8f487b4d", + "type": "path" + }, + "original": { + "id": "nixpkgs", + "type": "indirect" + } + }, + "root": { + "inputs": { + "nixpkgs": "nixpkgs" + } + } + }, + "root": "root", + "version": 7 +} From fd766d8ff8534c35a6849d5ff7939ddcb7871c07 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 15 Sep 2023 19:05:55 +0200 Subject: [PATCH 847/987] Don't build nanos6 with debug symbols by default --- bsc/nanos6/default.nix | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/bsc/nanos6/default.nix b/bsc/nanos6/default.nix index de0d8e4..4c21d80 100644 --- a/bsc/nanos6/default.nix +++ b/bsc/nanos6/default.nix @@ -11,6 +11,7 @@ , papi , boost , ovni +, enableDebug ? false , enableJemalloc ? true , jemalloc ? null , cachelineBytes ? 64 @@ -75,12 +76,17 @@ in (optional enableJemalloc "--with-jemalloc=${jemalloc}") ++ (optional enableGlibcxxDebug "CXXFLAGS=-D_GLIBCXX_DEBUG"); + postConfigure = lib.optionalString (!enableDebug) '' + # Disable debug + sed -i 's/\([a-zA-Z0-9_]*nanos6_debug[a-zA-Z0-9_]*\)\s*[+]\?=.*/\1 =/g' Makefile.am + ''; + # The "bindnow" flags are incompatible with ifunc resolution mechanism. We # disable all by default, which includes bindnow. hardeningDisable = [ "all" ]; - # Keep debug symbols in the verbose variant of the library - dontStrip = true; + # Keep debug symbols in the debug variant of the library + dontStrip = enableDebug; buildInputs = [ autoconf From 51dcc6896e6d0cdf0e7739d69a7b08569f461447 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 19 Sep 2023 10:33:32 +0200 Subject: [PATCH 848/987] Begin moving bsc packages to root attribute --- bsc/llvm-ompss2/clang.nix | 9 +- bsc/llvm-ompss2/default.nix | 15 +- bsc/nanos6/default.nix | 12 +- bsc/ovni/default.nix | 3 +- flake.nix | 6 +- overlay.nix | 803 ++++++++++++++++++------------------ test/ci.nix | 20 +- test/compilers/ompss2.nix | 2 +- 8 files changed, 432 insertions(+), 438 deletions(-) diff --git a/bsc/llvm-ompss2/clang.nix b/bsc/llvm-ompss2/clang.nix index a3d583b..3ce87d8 100644 --- a/bsc/llvm-ompss2/clang.nix +++ b/bsc/llvm-ompss2/clang.nix @@ -1,8 +1,7 @@ { - stdenv + llvmPackages_latest , fetchFromGitHub , cmake -, lld , bash , python3 , perl @@ -14,7 +13,9 @@ , enableDebug ? false }: -stdenv.mkDerivation rec { +let + stdenv = llvmPackages_latest.stdenv; +in stdenv.mkDerivation rec { version = "2023.05.1"; pname = "clang-ompss2"; @@ -43,7 +44,7 @@ stdenv.mkDerivation rec { python3 perl cmake - lld + llvmPackages_latest.lld elfutils libffi pkg-config diff --git a/bsc/llvm-ompss2/default.nix b/bsc/llvm-ompss2/default.nix index 2b4e3d1..711f1b0 100644 --- a/bsc/llvm-ompss2/default.nix +++ b/bsc/llvm-ompss2/default.nix @@ -1,10 +1,9 @@ { stdenv , gcc -, rt , clangOmpss2Unwrapped , wrapCCWith -, llvmPackages +, llvmPackages_latest }: @@ -13,16 +12,12 @@ let # We need to replace the lld linker from bintools with our linker just built, # otherwise we run into incompatibility issues when mixing compiler and linker # versions. - bintools-unwrapped = llvmPackages.tools.bintools-unwrapped.override { + bintools-unwrapped = llvmPackages_latest.tools.bintools-unwrapped.override { lld = clangOmpss2Unwrapped; }; - bintools = llvmPackages.tools.bintools.override { + bintools = llvmPackages_latest.tools.bintools.override { bintools = bintools-unwrapped; }; - - homevar = if rt.pname == "nanos6" then "NANOS6_HOME" else "NODES_HOME"; - rtname = if rt.pname == "nanos6" then "libnanos6" else "libnodes"; - targetConfig = stdenv.targetPlatform.config; inherit gcc; cc = clangOmpss2Unwrapped; @@ -43,10 +38,6 @@ in wrapCCWith { echo "--gcc-toolchain=${gcc}" >> $out/nix-support/cc-cflags - # Setup NANOS6_HOME or NODES_HOME, based on the runtime. - echo "export ${homevar}=${rt}" >> $out/nix-support/setup-hook - echo "export OMPSS2_RUNTIME=${rtname}" >> $out/nix-support/setup-hook - wrap clang++ $wrapper $ccPath/clang++ ''; } diff --git a/bsc/nanos6/default.nix b/bsc/nanos6/default.nix index 4c21d80..ef27496 100644 --- a/bsc/nanos6/default.nix +++ b/bsc/nanos6/default.nix @@ -13,7 +13,7 @@ , ovni , enableDebug ? false , enableJemalloc ? true -, jemalloc ? null +, jemallocNanos6 ? null , cachelineBytes ? 64 , enableGlibcxxDebug ? false , useGit ? false @@ -22,7 +22,7 @@ , gitCommit ? "58712e669ac02f721fb841247361ea54f53a6a47" }: -assert enableJemalloc -> (jemalloc != null); +assert enableJemalloc -> (jemallocNanos6 != null); with lib; @@ -73,7 +73,7 @@ in "--enable-ovni-instrumentation" "--with-ovni=${ovni}" ] ++ - (optional enableJemalloc "--with-jemalloc=${jemalloc}") ++ + (optional enableJemalloc "--with-jemalloc=${jemallocNanos6}") ++ (optional enableGlibcxxDebug "CXXFLAGS=-D_GLIBCXX_DEBUG"); postConfigure = lib.optionalString (!enableDebug) '' @@ -99,4 +99,10 @@ in papi ovni ]; + + # Create a script that sets NANOS6_HOME + postInstall = '' + mkdir -p $out/nix-support + echo "export NANOS6_HOME=$out" >> $out/nix-support/setup-hook + ''; } diff --git a/bsc/ovni/default.nix b/bsc/ovni/default.nix index a37dcf7..34fdaa4 100644 --- a/bsc/ovni/default.nix +++ b/bsc/ovni/default.nix @@ -21,7 +21,7 @@ let repo = "ovni"; rev = "${version}"; sha256 = "sha256-4ulohGnbQwAZ/qnm5bmceoMhTuAHlCfLAWEodZ9YMP0="; - }; + } // { shortRev = "b6903bc4"; }; }; git = rec { @@ -40,5 +40,6 @@ in inherit (source) src version; buildInputs = [ cmake mpi ]; cmakeBuildType = if (enableDebug) then "Debug" else "Release"; + cmakeFlags = [ "-DOVNI_GIT_COMMIT=${src.shortRev}" ]; dontStrip = true; } diff --git a/flake.nix b/flake.nix index 3757e49..73e3697 100644 --- a/flake.nix +++ b/flake.nix @@ -1,7 +1,5 @@ { - inputs = { - nixpkgs.url = "nixpkgs"; - }; + inputs.nixpkgs.url = "nixpkgs"; outputs = { self, nixpkgs, ...}: let @@ -14,6 +12,6 @@ { bscOverlay = import ./overlay.nix; overlays.default = self.bscOverlay; - packages.x86_64-linux = pkgs; + legacyPackages.x86_64-linux = pkgs; }; } diff --git a/overlay.nix b/overlay.nix index 7e4a71f..91e6261 100644 --- a/overlay.nix +++ b/overlay.nix @@ -15,407 +15,420 @@ let # BSC Packages # =================================================================== - _bsc = makeExtensible (bsc: - let - callPackage = callPackageWith (self // bsc // bsc.garlic); - in - { - inherit callPackage; +# _bsc = makeExtensible (bsc: +# let +# callPackage = callPackageWith (self // bsc // bsc.garlic); +# in +# { +# inherit callPackage; +# +# # ================================================================= +# # Compilers +# # ================================================================= +# +# # Default C (and C++) compiler to use. It will be overwritten by the +# # experiments. +# cc = bsc.icc; +# +# # By default we use Intel compiler 2020 update 1 +# intelLicense = callPackage ./bsc/intel-compiler/license.nix { }; +# iccUnwrapped = bsc.icc2020Unwrapped; +# icc2020Unwrapped = callPackage ./bsc/intel-compiler/icc2020.nix { +# intel-mpi = bsc.intelMpi; +# }; +# +# icc2021Unwrapped = callPackage ./bsc/intel-compiler/icc2021.nix { }; +# +# intel-oneapi-2023 = callPackage ./bsc/intel-oneapi/2023.nix { +# libffi = self.libffi_3_3; +# }; +# +# intel2023 = { +# inherit (bsc.intel-oneapi-2023) +# stdenv icx stdenv-ifort ifort +# # Deprecated in mid 2023 +# stdenv-icc icc; +# }; +# +# intel2022 = { +# icc = bsc.icc2021; +# }; +# +# intel2021 = { +# icc = bsc.icc2021; +# }; +# +# # A wrapper script that puts all the flags and environment vars +# # properly and calls the intel compiler binary +# icc2020 = appendPasstru (callPackage ./bsc/intel-compiler/default.nix { +# iccUnwrapped = bsc.iccUnwrapped; +# intelLicense = bsc.intelLicense; +# }) { CC = "icc"; CXX = "icpc"; }; +# +# icc2021 = appendPasstru (callPackage ./bsc/intel-compiler/wrapper2021.nix { +# iccUnwrapped = bsc.icc2021Unwrapped; +# }) { CC = "icx"; CXX = "icpx"; }; +# +# ifort2022 = callPackage ./bsc/intel-compiler/default.nix { +# iccUnwrapped = bsc.ifort2022Unwrapped; +# intelLicense = bsc.intelLicense; +# }; +# +# icx = bsc.intel2023.icx; +# icc = bsc.intel2023.icc; +# ifort = bsc.intel2023.ifort; +# +# # We need to set the cc.CC and cc.CXX attributes, in order to +# # determine the name of the compiler +# gcc = appendPasstru self.gcc { CC = "gcc"; CXX = "g++"; }; +# +# # Last llvm release by default +# llvmPackages = self.llvmPackages_latest // { +# clang = appendPasstru self.llvmPackages_latest.clang { +# CC = "clang"; CXX = "clang++"; +# }; +# }; +# +# lld = bsc.llvmPackages.lld; +# +# clangOmpss2Unwrapped = callPackage ./bsc/llvm-ompss2/clang.nix { +# stdenv = bsc.llvmPackages.stdenv; +# }; +# +# clangOmpss2UnwrappedGit = bsc.clangOmpss2Unwrapped.overrideAttrs (old: rec { +# src = builtins.fetchGit { +# url = "ssh://git@bscpm03.bsc.es/llvm-ompss/llvm-mono.git"; +# ref = "master"; +# }; +# version = src.shortRev; +# }); +# +# clangOmpss2 = appendPasstru ( +# callPackage ./bsc/llvm-ompss2/default.nix { +# rt = bsc.nanos6; +# llvmPackages = bsc.llvmPackages; +# clangOmpss2Unwrapped = bsc.clangOmpss2Unwrapped; +# }) { CC = "clang"; CXX = "clang++"; }; +# +# clangOmpss2Git = appendPasstru ( +# callPackage ./bsc/llvm-ompss2/default.nix { +# rt = bsc.nanos6; +# llvmPackages = bsc.llvmPackages; +# clangOmpss2Unwrapped = bsc.clangOmpss2UnwrappedGit; +# }) { CC = "clang"; CXX = "clang++"; }; +# +# stdenvClangOmpss2 = self.stdenv.override { +# cc = bsc.clangOmpss2; +# allowedRequisites = null; +# }; +# +# clangNodes = bsc.clangOmpss2.override { +# rt = bsc.nodes; +# }; +# +# stdenvClangNodes = self.stdenv.override { +# cc = bsc.clangNodes; +# allowedRequisites = null; +# }; +# +# mcxx = bsc.mcxxRelease; +# mcxxRelease = callPackage ./bsc/mcxx/default.nix { }; +# mcxxGit = callPackage ./bsc/mcxx/git.nix { }; +# mcxxRarias = callPackage ./bsc/mcxx/rarias.nix { +# bison = self.bison_3_5; +# }; +# +# # ================================================================= +# # MPI +# # ================================================================= +# +# # Default MPI implementation to use. Will be overwritten by the +# # experiments. +# mpi = bsc.impi; +# +# # ParaStation MPI +# pscom = callPackage ./bsc/parastation/pscom.nix { }; +# psmpi = callPackage ./bsc/parastation/psmpi.nix { }; +# +# # MPICH +# #mpich_3 = callPackage ./bsc/mpich/default.nix { }; +# #mpichDebug_3 = bsc.mpich.override { enableDebug = true; }; +# mpich = super.mpich.overrideAttrs (old: { +# buildInputs = old.buildInputs ++ [ self.libfabric ]; +# configureFlags = old.configureFlags ++ [ +# "--with-device=ch4:ofi" +# "--with-libfabric=${self.libfabric}" +# ]; +# hardeningDisable = [ "all" ]; +# }); +# +# impi = bsc.intel-mpi; +# # The version of MPI for 2023 is labeled 2021.9 ... +# intel-mpi = bsc.intel-oneapi-2023.intel-mpi; +# # Old releases +# intel-mpi-2019 = callPackage ./bsc/intel-mpi/default.nix { }; +# +# # OpenMPI +# openmpi = bsc.openmpi-mn4; +# openmpi-mn4 = callPackage ./bsc/openmpi/default.nix { +# pmix = bsc.pmix2; +# pmi2 = bsc.slurm17-libpmi2; +# enableCxx = true; +# }; +# +# # ================================================================= +# # GASPI +# # ================================================================= +# gpi-2 = callPackage ./bsc/gpi-2/default.nix { }; +# +# # Use GPI-2 as the default implementation for GASPI +# gaspi = bsc.gpi-2; +# +# tagaspi = callPackage ./bsc/tagaspi/default.nix { }; +# +# # ================================================================= +# # Tracing +# # ================================================================= +# +# # We should maintain these... +# paraverKernelFast = callPackage ./bsc/paraver/kernel-fast.nix { }; +# wxparaverFast = callPackage ./bsc/paraver/wxparaver-fast.nix { }; +# +# extrae = callPackage ./bsc/extrae/default.nix { +# libdwarf = super.libdwarf_20210528; +# }; +# otf = callPackage ./bsc/otf/default.nix { }; +# vite = self.qt5.callPackage ./bsc/vite/default.nix { }; +# babeltrace = callPackage ./bsc/babeltrace/default.nix { }; +# babeltrace2 = callPackage ./bsc/babeltrace2/default.nix { }; +# +# # Perf for MN4 kernel +# perf = callPackage ./bsc/perf/default.nix { +# kernel = self.linuxPackages_4_9.kernel; +# systemtap = self.linuxPackages_4_9.systemtap; +# }; +# +# cn6 = callPackage ./bsc/cn6/default.nix { }; +# +# # ================================================================= +# # MN4 specific +# # ================================================================= +# +# lmbench = callPackage ./bsc/lmbench/default.nix { }; +# pmix2 = callPackage ./bsc/pmix/pmix2.nix { }; +# slurm17 = callPackage ./bsc/slurm/default.nix { +# pmix = bsc.pmix2; +# }; +# slurm17-libpmi2 = callPackage ./bsc/slurm/pmi2.nix { +# pmix = bsc.pmix2; +# }; +# +# pmix4 = +# let +# libevent-all = with final; symlinkJoin { +# name = "${libevent.name}-all"; +# paths = [ libevent.dev libevent.out ]; +# }; +# in +# prev.pmix.overrideAttrs (old: rec { +# version = "4.2.3"; +# # Don't use fetchFromGitHub as is not a release! +# src = builtins.fetchTarball { +# url = "https://github.com/openpmix/openpmix/releases/download/v${version}/pmix-${version}.tar.gz"; +# sha256 = "sha256:1iakrjkgydjz2f17if4cpyk1ldjff2790x4z787zdbbdnisxhdz2"; +# }; +# configureFlags = [ +# "--with-munge=${self.munge}" +# "--with-hwloc=${self.hwloc.dev}" +# ]; +# # libevent is not working, so use libev +# buildInputs = old.buildInputs ++ [ self.python3 libevent-all ]; +# nativeBuildInputs = old.nativeBuildInputs ++ [ self.pkgconfig ]; +# }); +# +# slurm-16-05-8-1 = callPackage ./bsc/slurm/16.05.8.1/default.nix { +# hwloc = bsc.hwloc-1-11-6; +# }; +# +# hwloc-1-11-6 = callPackage ./bsc/hwloc/1.11.6/default.nix {}; +# +# # Use a slurm compatible with MN4 +# slurm = bsc.slurm17; +# # We need the unstable branch to get the fallocate problem fixed, as it is +# # not yet in stable nix, see: +# # https://pm.bsc.es/gitlab/rarias/bscpkgs/-/issues/83 +# nix-mn4 = self.nixUnstable; +# # Our custom version that lacks the binaries. Disabled by default. +# #rdma-core = callPackage ./bsc/rdma-core/default.nix { }; +# +# # ================================================================= +# # Patched from upstream +# # ================================================================= +# +# groff = callPackage ./bsc/groff/default.nix { }; +# fftw = callPackage ./bsc/fftw/default.nix { }; +# vtk = callPackage ./bsc/vtk/default.nix { +# inherit (self.xorg) libX11 xorgproto libXt; +# }; +# +# busybox = self.busybox.override { +# enableStatic = true; +# }; +# +# # ================================================================= +# # Misc +# # ================================================================= +# +# dummy = callPackage ./bsc/dummy/default.nix { }; +# mpptest = callPackage ./bsc/mpptest/default.nix { }; +# cpuid = callPackage ./bsc/cpuid/default.nix { }; +# +# # ================================================================= +# # Garlic benchmark +# # ================================================================= +# +# nixtools = callPackage ./bsc/nixtools/default.nix { }; +# +# garlicTools = callPackage ./garlic/tools.nix {}; +# +# # Aliases bsc.apps -> bsc.garlic.apps +# inherit (bsc.garlic) apps fig exp ds; +# +# garlic = import ./garlic/index.nix { +# inherit self super bsc callPackage; +# }; +# +# test = rec { +## hwloc = callPackage ./test/bugs/hwloc.nix { }; +# sigsegv = callPackage ./test/reproducers/sigsegv.nix { }; +# compilers.hello-c = callPackage ./test/compilers/hello-c.nix { }; +# compilers.hello-cpp = callPackage ./test/compilers/hello-cpp.nix { }; +# compilers.hello-f = callPackage ./test/compilers/hello-f.nix { }; +# compilers.lto = callPackage ./test/compilers/lto.nix { }; +# compilers.asan = callPackage ./test/compilers/asan.nix { }; +# compilers.intel2023.icx.c = compilers.hello-c.override { +# stdenv = bsc.intel2023.stdenv; +# }; +# compilers.intel2023.icc.c = compilers.hello-c.override { +# stdenv = bsc.intel2023.stdenv-icc; +# }; +# compilers.intel2023.icx.cpp = compilers.hello-cpp.override { +# stdenv = bsc.intel2023.stdenv; +# }; +# compilers.intel2023.icc.cpp = compilers.hello-cpp.override { +# stdenv = bsc.intel2023.stdenv-icc; +# }; +# compilers.intel2023.ifort = compilers.hello-f.override { +# stdenv = bsc.intel2023.stdenv-ifort; +# }; +# compilers.clangOmpss2.lto = compilers.lto.override { +# stdenv = bsc.stdenvClangOmpss2; +# }; +# compilers.clangOmpss2.asan = compilers.asan.override { +# stdenv = bsc.stdenvClangOmpss2; +# }; +# compilers.clangOmpss2.task = callPackage ./test/compilers/ompss2.nix { +# stdenv = bsc.stdenvClangOmpss2; +# }; +# compilers.clangNodes.task = callPackage ./test/compilers/ompss2.nix { +# stdenv = bsc.stdenvClangNodes; +# }; +# }; +# +# ci = import ./test/ci.nix { +# inherit self super bsc callPackage; +# }; +# +# testAll = with bsc.test; [ +# compilers.intel2023.icx.c +# compilers.intel2023.icc.c +# compilers.intel2023.icx.cpp +# compilers.intel2023.icc.cpp +# compilers.intel2023.ifort +# compilers.clangOmpss2.lto +# compilers.clangOmpss2.task +# compilers.clangOmpss2.asan +# compilers.clangNodes.task +# ]; +# +# }); - # ================================================================= - # Compilers - # ================================================================= + callPackage = super.callPackage; - # Default C (and C++) compiler to use. It will be overwritten by the - # experiments. - cc = bsc.icc; +in { + ovni = callPackage ./bsc/ovni/default.nix { }; + ovniGit = self.ovni.override { useGit = true; }; + nanos6 = callPackage ./bsc/nanos6/default.nix { }; + nanos6Debug = self.nanos6.override { enableDebug = true; }; + jemallocNanos6 = super.jemalloc.overrideAttrs (old: { + configureFlags = old.configureFlags ++ [ + "--with-jemalloc-prefix=nanos6_je_" + "--enable-stats" + ]; + hardeningDisable = [ "all" ]; + }); + nosv = callPackage ./bsc/nosv/default.nix { }; + nodes = callPackage ./bsc/nodes/default.nix { }; + bench6 = callPackage ./bsc/bench6/default.nix { }; + nix-wrap = callPackage ./bsc/nix-wrap/default.nix { }; + osumb = callPackage ./bsc/osu/default.nix { }; + paraverKernel = callPackage ./bsc/paraver/kernel.nix { }; + wxparaver = callPackage ./bsc/paraver/default.nix { }; + tampi = callPackage ./bsc/tampi/default.nix { }; + sonar = callPackage ./bsc/sonar/default.nix { }; + clangOmpss2Unwrapped = callPackage ./bsc/llvm-ompss2/clang.nix { }; + clangOmpss2 = callPackage ./bsc/llvm-ompss2/default.nix { }; + stdenvClangOmpss2 = self.stdenv.override { + cc = self.clangOmpss2; + allowedRequisites = null; + }; - # By default we use Intel compiler 2020 update 1 - intelLicense = callPackage ./bsc/intel-compiler/license.nix { }; - iccUnwrapped = bsc.icc2020Unwrapped; - icc2020Unwrapped = callPackage ./bsc/intel-compiler/icc2020.nix { - intel-mpi = bsc.intelMpi; - }; - - icc2021Unwrapped = callPackage ./bsc/intel-compiler/icc2021.nix { }; - - intel-oneapi-2023 = callPackage ./bsc/intel-oneapi/2023.nix { - libffi = self.libffi_3_3; - }; - - intel2023 = { - inherit (bsc.intel-oneapi-2023) - stdenv icx stdenv-ifort ifort - # Deprecated in mid 2023 - stdenv-icc icc; - }; - - intel2022 = { - icc = bsc.icc2021; - }; - - intel2021 = { - icc = bsc.icc2021; - }; - - # A wrapper script that puts all the flags and environment vars - # properly and calls the intel compiler binary - icc2020 = appendPasstru (callPackage ./bsc/intel-compiler/default.nix { - iccUnwrapped = bsc.iccUnwrapped; - intelLicense = bsc.intelLicense; - }) { CC = "icc"; CXX = "icpc"; }; - - icc2021 = appendPasstru (callPackage ./bsc/intel-compiler/wrapper2021.nix { - iccUnwrapped = bsc.icc2021Unwrapped; - }) { CC = "icx"; CXX = "icpx"; }; - - ifort2022 = callPackage ./bsc/intel-compiler/default.nix { - iccUnwrapped = bsc.ifort2022Unwrapped; - intelLicense = bsc.intelLicense; - }; - - icx = bsc.intel2023.icx; - icc = bsc.intel2023.icc; - ifort = bsc.intel2023.ifort; - - # We need to set the cc.CC and cc.CXX attributes, in order to - # determine the name of the compiler - gcc = appendPasstru self.gcc { CC = "gcc"; CXX = "g++"; }; - - # Last llvm release by default - llvmPackages = self.llvmPackages_latest // { - clang = appendPasstru self.llvmPackages_latest.clang { - CC = "clang"; CXX = "clang++"; - }; - }; - - lld = bsc.llvmPackages.lld; - - clangOmpss2Unwrapped = callPackage ./bsc/llvm-ompss2/clang.nix { - stdenv = bsc.llvmPackages.stdenv; - }; - - clangOmpss2UnwrappedGit = bsc.clangOmpss2Unwrapped.overrideAttrs (old: rec { - src = builtins.fetchGit { - url = "ssh://git@bscpm03.bsc.es/llvm-ompss/llvm-mono.git"; - ref = "master"; - }; - version = src.shortRev; - }); - - clangOmpss2 = appendPasstru ( - callPackage ./bsc/llvm-ompss2/default.nix { - rt = bsc.nanos6; - llvmPackages = bsc.llvmPackages; - clangOmpss2Unwrapped = bsc.clangOmpss2Unwrapped; - }) { CC = "clang"; CXX = "clang++"; }; - - clangOmpss2Git = appendPasstru ( - callPackage ./bsc/llvm-ompss2/default.nix { - rt = bsc.nanos6; - llvmPackages = bsc.llvmPackages; - clangOmpss2Unwrapped = bsc.clangOmpss2UnwrappedGit; - }) { CC = "clang"; CXX = "clang++"; }; - - stdenvClangOmpss2 = self.stdenv.override { - cc = bsc.clangOmpss2; - allowedRequisites = null; - }; - - clangNodes = bsc.clangOmpss2.override { - rt = bsc.nodes; - }; - - stdenvClangNodes = self.stdenv.override { - cc = bsc.clangNodes; - allowedRequisites = null; - }; - - mcxx = bsc.mcxxRelease; - mcxxRelease = callPackage ./bsc/mcxx/default.nix { }; - mcxxGit = callPackage ./bsc/mcxx/git.nix { }; - mcxxRarias = callPackage ./bsc/mcxx/rarias.nix { - bison = self.bison_3_5; - }; - - # ================================================================= - # nanos6 - # ================================================================= - nanos6 = bsc.nanos6Release; - nanos6Release = callPackage ./bsc/nanos6/default.nix { }; - nanos6Git = callPackage ./bsc/nanos6/default.nix { useGit = true; }; - nanos6-icx = bsc.nanos6.override { - stdenv = bsc.intel2023.stdenv; - }; - nanos6-icc = bsc.nanos6.override { - stdenv = bsc.intel2023.stdenv-icc; - }; - - nanos6Debug = bsc.nanos6.overrideAttrs (old: { - dontStrip = true; - enableDebugging = true; - }); - - nanos6GlibcxxDebug = bsc.nanos6Debug.override { - enableGlibcxxDebug = true; - }; - - jemalloc = self.jemalloc.overrideAttrs (old: - { - # Custom nanos6 configure options - configureFlags = old.configureFlags ++ [ - "--with-jemalloc-prefix=nanos6_je_" - "--enable-stats" + # Internal for our tests + bsc-ci = { + pkgs = super.runCommand "ci-pkgs" { + buildInputs = with self; [ + ovni nanos6 nosv nodes nix-wrap osumb wxparaver tampi sonar + clangOmpss2 bench6 ]; - - hardeningDisable = [ "all" ]; - }); - - nodes = bsc.nodesRelease; - nodesRelease = callPackage ./bsc/nodes/default.nix { }; - nodesGit = callPackage ./bsc/nodes/default.nix { useGit = true; }; - nodesWithOvni = bsc.nodes.override { enableOvni = true; }; - - # ================================================================= - # nosv - # ================================================================= - nosv = callPackage ./bsc/nosv/default.nix { }; - - # ================================================================= - # MPI - # ================================================================= - - # Default MPI implementation to use. Will be overwritten by the - # experiments. - mpi = bsc.impi; - - # ParaStation MPI - pscom = callPackage ./bsc/parastation/pscom.nix { }; - psmpi = callPackage ./bsc/parastation/psmpi.nix { }; - - # MPICH - #mpich_3 = callPackage ./bsc/mpich/default.nix { }; - #mpichDebug_3 = bsc.mpich.override { enableDebug = true; }; - mpich = super.mpich.overrideAttrs (old: { - buildInputs = old.buildInputs ++ [ self.libfabric ]; - configureFlags = old.configureFlags ++ [ - "--with-device=ch4:ofi" - "--with-libfabric=${self.libfabric}" - ]; - hardeningDisable = [ "all" ]; - }); - - impi = bsc.intel-mpi; - # The version of MPI for 2023 is labeled 2021.9 ... - intel-mpi = bsc.intel-oneapi-2023.intel-mpi; - # Old releases - intel-mpi-2019 = callPackage ./bsc/intel-mpi/default.nix { }; - - # OpenMPI - openmpi = bsc.openmpi-mn4; - openmpi-mn4 = callPackage ./bsc/openmpi/default.nix { - pmix = bsc.pmix2; - pmi2 = bsc.slurm17-libpmi2; - enableCxx = true; - }; - - # TAMPI - tampi = bsc.tampiRelease; - tampiRelease = callPackage ./bsc/tampi/default.nix { }; - tampiGit = callPackage ./bsc/tampi/git.nix { }; - - # Sonar - sonar = callPackage ./bsc/sonar/default.nix { }; - - # ================================================================= - # GASPI - # ================================================================= - gpi-2 = callPackage ./bsc/gpi-2/default.nix { }; - - # Use GPI-2 as the default implementation for GASPI - gaspi = bsc.gpi-2; - - tagaspi = callPackage ./bsc/tagaspi/default.nix { }; - - # ================================================================= - # Tracing - # ================================================================= - - paraverKernel = callPackage ./bsc/paraver/kernel.nix { }; - wxparaver = callPackage ./bsc/paraver/default.nix { }; - - # We should maintain these... - paraverKernelFast = callPackage ./bsc/paraver/kernel-fast.nix { }; - wxparaverFast = callPackage ./bsc/paraver/wxparaver-fast.nix { }; - - extrae = callPackage ./bsc/extrae/default.nix { - libdwarf = super.libdwarf_20210528; - }; - otf = callPackage ./bsc/otf/default.nix { }; - vite = self.qt5.callPackage ./bsc/vite/default.nix { }; - babeltrace = callPackage ./bsc/babeltrace/default.nix { }; - babeltrace2 = callPackage ./bsc/babeltrace2/default.nix { }; - - # Perf for MN4 kernel - perf = callPackage ./bsc/perf/default.nix { - kernel = self.linuxPackages_4_9.kernel; - systemtap = self.linuxPackages_4_9.systemtap; - }; - - cn6 = callPackage ./bsc/cn6/default.nix { }; - ovni = callPackage ./bsc/ovni/default.nix { }; - - # ================================================================= - # MN4 specific - # ================================================================= - - osumb = callPackage ./bsc/osu/default.nix { }; - lmbench = callPackage ./bsc/lmbench/default.nix { }; - pmix2 = callPackage ./bsc/pmix/pmix2.nix { }; - slurm17 = callPackage ./bsc/slurm/default.nix { - pmix = bsc.pmix2; - }; - slurm17-libpmi2 = callPackage ./bsc/slurm/pmi2.nix { - pmix = bsc.pmix2; - }; - - pmix4 = - let - libevent-all = with final; symlinkJoin { - name = "${libevent.name}-all"; - paths = [ libevent.dev libevent.out ]; - }; - in - prev.pmix.overrideAttrs (old: rec { - version = "4.2.3"; - # Don't use fetchFromGitHub as is not a release! - src = builtins.fetchTarball { - url = "https://github.com/openpmix/openpmix/releases/download/v${version}/pmix-${version}.tar.gz"; - sha256 = "sha256:1iakrjkgydjz2f17if4cpyk1ldjff2790x4z787zdbbdnisxhdz2"; - }; - configureFlags = [ - "--with-munge=${self.munge}" - "--with-hwloc=${self.hwloc.dev}" - ]; - # libevent is not working, so use libev - buildInputs = old.buildInputs ++ [ self.python3 libevent-all ]; - nativeBuildInputs = old.nativeBuildInputs ++ [ self.pkgconfig ]; - }); - - slurm-16-05-8-1 = callPackage ./bsc/slurm/16.05.8.1/default.nix { - hwloc = bsc.hwloc-1-11-6; - }; - - hwloc-1-11-6 = callPackage ./bsc/hwloc/1.11.6/default.nix {}; - - # Use a slurm compatible with MN4 - slurm = bsc.slurm17; - # We need the unstable branch to get the fallocate problem fixed, as it is - # not yet in stable nix, see: - # https://pm.bsc.es/gitlab/rarias/bscpkgs/-/issues/83 - nix-mn4 = self.nixUnstable; - # Our custom version that lacks the binaries. Disabled by default. - #rdma-core = callPackage ./bsc/rdma-core/default.nix { }; - - # ================================================================= - # Patched from upstream - # ================================================================= - - groff = callPackage ./bsc/groff/default.nix { }; - fftw = callPackage ./bsc/fftw/default.nix { }; - vtk = callPackage ./bsc/vtk/default.nix { - inherit (self.xorg) libX11 xorgproto libXt; - }; - - busybox = self.busybox.override { - enableStatic = true; - }; - - # ================================================================= - # Misc - # ================================================================= - - dummy = callPackage ./bsc/dummy/default.nix { }; - mpptest = callPackage ./bsc/mpptest/default.nix { }; - cpuid = callPackage ./bsc/cpuid/default.nix { }; - bench6 = callPackage ./bsc/bench6/default.nix { }; - - nix-wrap = callPackage ./bsc/nix-wrap/default.nix { }; - - # ================================================================= - # Garlic benchmark - # ================================================================= - - nixtools = callPackage ./bsc/nixtools/default.nix { }; - - garlicTools = callPackage ./garlic/tools.nix {}; - - # Aliases bsc.apps -> bsc.garlic.apps - inherit (bsc.garlic) apps fig exp ds; - - garlic = import ./garlic/index.nix { - inherit self super bsc callPackage; - }; + } "printf '%s\n' $buildInputs > $out"; test = rec { -# hwloc = callPackage ./test/bugs/hwloc.nix { }; - sigsegv = callPackage ./test/reproducers/sigsegv.nix { }; - compilers.hello-c = callPackage ./test/compilers/hello-c.nix { }; - compilers.hello-cpp = callPackage ./test/compilers/hello-cpp.nix { }; - compilers.hello-f = callPackage ./test/compilers/hello-f.nix { }; - compilers.lto = callPackage ./test/compilers/lto.nix { }; - compilers.asan = callPackage ./test/compilers/asan.nix { }; - compilers.intel2023.icx.c = compilers.hello-c.override { - stdenv = bsc.intel2023.stdenv; - }; - compilers.intel2023.icc.c = compilers.hello-c.override { - stdenv = bsc.intel2023.stdenv-icc; - }; - compilers.intel2023.icx.cpp = compilers.hello-cpp.override { - stdenv = bsc.intel2023.stdenv; - }; - compilers.intel2023.icc.cpp = compilers.hello-cpp.override { - stdenv = bsc.intel2023.stdenv-icc; - }; - compilers.intel2023.ifort = compilers.hello-f.override { - stdenv = bsc.intel2023.stdenv-ifort; - }; - compilers.clangOmpss2.lto = compilers.lto.override { - stdenv = bsc.stdenvClangOmpss2; - }; - compilers.clangOmpss2.asan = compilers.asan.override { - stdenv = bsc.stdenvClangOmpss2; - }; - compilers.clangOmpss2.task = callPackage ./test/compilers/ompss2.nix { - stdenv = bsc.stdenvClangOmpss2; - }; - compilers.clangNodes.task = callPackage ./test/compilers/ompss2.nix { - stdenv = bsc.stdenvClangNodes; + hello-c = callPackage ./test/compilers/hello-c.nix { }; + hello-cpp = callPackage ./test/compilers/hello-cpp.nix { }; + hello-f = callPackage ./test/compilers/hello-f.nix { }; + lto = callPackage ./test/compilers/lto.nix { }; + asan = callPackage ./test/compilers/asan.nix { }; + #intel2023.icx.c = hello-c.override { + # stdenv = bsc.intel2023.stdenv; + #}; + #intel2023.icc.c = hello-c.override { + # stdenv = bsc.intel2023.stdenv-icc; + #}; + #intel2023.icx.cpp = hello-cpp.override { + # stdenv = bsc.intel2023.stdenv; + #}; + #intel2023.icc.cpp = hello-cpp.override { + # stdenv = bsc.intel2023.stdenv-icc; + #}; + #intel2023.ifort = hello-f.override { + # stdenv = bsc.intel2023.stdenv-ifort; + #}; + clangOmpss2.lto = lto.override { stdenv = self.stdenvClangOmpss2; }; + clangOmpss2.asan = asan.override { stdenv = self.stdenvClangOmpss2; }; + clangOmpss2.task = callPackage ./test/compilers/ompss2.nix { + stdenv = self.stdenvClangOmpss2; }; + #clangNodes.task = callPackage ./test/compilers/ompss2.nix { + # stdenv = bsc.stdenvClangNodes; + #}; }; - testAll = with bsc.test; [ - compilers.intel2023.icx.c - compilers.intel2023.icc.c - compilers.intel2023.icx.cpp - compilers.intel2023.icc.cpp - compilers.intel2023.ifort - compilers.clangOmpss2.lto - compilers.clangOmpss2.task - compilers.clangOmpss2.asan - compilers.clangNodes.task - ]; - - ci = import ./test/ci.nix { - inherit self super bsc callPackage; - }; - }); - -in - { - bsc = _bsc; - garlic = _bsc.garlic; - - # Aliases apps -> bsc.garlic.apps - inherit (_bsc.garlic) apps fig exp ds; - } + all = super.runCommand "ci-all" { + buildInputs = with self.bsc-ci.test; [ + clangOmpss2.lto + clangOmpss2.task + clangOmpss2.asan + ]; + } "printf '%s\n' $buildInputs > $out"; + }; +} diff --git a/test/ci.nix b/test/ci.nix index a523982..341a17b 100644 --- a/test/ci.nix +++ b/test/ci.nix @@ -1,4 +1,4 @@ -{ self, super, bsc, callPackage }: +{ self, super, bsc, testPkgs }: let stdenv = self.stdenv; @@ -10,23 +10,7 @@ stdenv.mkDerivation rec { dontUnpack = true; # Just build some packages - buildInputs = with bsc; [ - # Compilers - icc - clangOmpss2 - mcxx - # MPI - impi - mpich - openmpi - tampi - # Tools - ovni - # extrae # Broken - wxparaver - # Runtimes - nanos6 - ] ++ bsc.testAll; + buildInputs = testPkgs; buildPhase = '' if [ -e /boot ]; then diff --git a/test/compilers/ompss2.nix b/test/compilers/ompss2.nix index 4ac142d..9ce3728 100644 --- a/test/compilers/ompss2.nix +++ b/test/compilers/ompss2.nix @@ -24,7 +24,7 @@ stdenv.mkDerivation rec { dontConfigure = true; hardeningDisable = [ "all" ]; #NIX_DEBUG = 1; - buildInputs = [ strace gdb ]; + buildInputs = [ ]; #strace gdb; # NODES requires access to /sys/devices to request NUMA information. It will # fail to run otherwise, so we disable the sandbox for this test. __noChroot = true; From 552ebdbedebb87f712ff9f56acaba71bcbb21523 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 28 Sep 2023 09:14:36 +0200 Subject: [PATCH 849/987] Export the runtime home for clang if given --- bsc/llvm-ompss2/default.nix | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/bsc/llvm-ompss2/default.nix b/bsc/llvm-ompss2/default.nix index 711f1b0..07f6c9d 100644 --- a/bsc/llvm-ompss2/default.nix +++ b/bsc/llvm-ompss2/default.nix @@ -1,13 +1,17 @@ { stdenv +, lib , gcc , clangOmpss2Unwrapped , wrapCCWith , llvmPackages_latest +, ompss2rt ? null }: let + homevar = if ompss2rt.pname == "nanos6" then "NANOS6_HOME" else "NODES_HOME"; + rtname = if ompss2rt.pname == "nanos6" then "libnanos6" else "libnodes"; # We need to replace the lld linker from bintools with our linker just built, # otherwise we run into incompatibility issues when mixing compiler and linker @@ -39,5 +43,8 @@ in wrapCCWith { echo "--gcc-toolchain=${gcc}" >> $out/nix-support/cc-cflags wrap clang++ $wrapper $ccPath/clang++ + '' + lib.optionalString (ompss2rt != null) '' + echo "export OMPSS2_RUNTIME=${rtname}" >> $out/nix-support/cc-wrapper-hook + echo "export ${homevar}=${ompss2rt}" >> $out/nix-support/cc-wrapper-hook ''; } From ce7238c780c85f60b671191582e2b1421a8fd6c1 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 28 Sep 2023 09:15:09 +0200 Subject: [PATCH 850/987] Remove tracing output from intel packages --- bsc/intel-oneapi/2023.nix | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/bsc/intel-oneapi/2023.nix b/bsc/intel-oneapi/2023.nix index f4bd902..079d951 100644 --- a/bsc/intel-oneapi/2023.nix +++ b/bsc/intel-oneapi/2023.nix @@ -71,7 +71,9 @@ let matches = lib.filter (x: name == x.Package) pkgList; #match = assert lib.length matches == 1; lib.elemAt matches 0; n = lib.length matches; - match = builtins.trace (name + " -- n=${builtins.toString n}") (lib.elemAt matches 0); + match = + #builtins.trace (name + " -- n=${builtins.toString n}") + (lib.elemAt matches 0); in apthost + match.Filename; From 8dbd1a3c34fe2f012390f1ac6a5e4946ec13de46 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 28 Sep 2023 09:15:34 +0200 Subject: [PATCH 851/987] Port clang and intel packages and enable tests --- overlay.nix | 68 +++++++++++++++++++++++++++++------------------------ 1 file changed, 37 insertions(+), 31 deletions(-) diff --git a/overlay.nix b/overlay.nix index 91e6261..e7e8d08 100644 --- a/overlay.nix +++ b/overlay.nix @@ -356,6 +356,9 @@ let callPackage = super.callPackage; in { + # Prevent accidental usage of bsc attribute + bsc = throw "the bsc attribute is deprecated, packages are now in the root"; + ovni = callPackage ./bsc/ovni/default.nix { }; ovniGit = self.ovni.override { useGit = true; }; nanos6 = callPackage ./bsc/nanos6/default.nix { }; @@ -378,57 +381,60 @@ in { sonar = callPackage ./bsc/sonar/default.nix { }; clangOmpss2Unwrapped = callPackage ./bsc/llvm-ompss2/clang.nix { }; clangOmpss2 = callPackage ./bsc/llvm-ompss2/default.nix { }; - stdenvClangOmpss2 = self.stdenv.override { - cc = self.clangOmpss2; + clangOmpss2Nanos6 = callPackage ./bsc/llvm-ompss2/default.nix { + ompss2rt = self.nanos6; + }; + clangOmpss2Nodes = callPackage ./bsc/llvm-ompss2/default.nix { + ompss2rt = self.nodes; + }; + stdenvClangOmpss2Nanos6 = self.stdenv.override { + cc = self.clangOmpss2Nanos6; allowedRequisites = null; }; + stdenvClangOmpss2Nodes = self.stdenv.override { + cc = self.clangOmpss2Nodes; + allowedRequisites = null; + }; + + # Intel packages + intelPackages_2023 = callPackage ./bsc/intel-oneapi/2023.nix { + libffi = self.libffi_3_3; + }; # Internal for our tests bsc-ci = { pkgs = super.runCommand "ci-pkgs" { buildInputs = with self; [ ovni nanos6 nosv nodes nix-wrap osumb wxparaver tampi sonar - clangOmpss2 bench6 + clangOmpss2Nanos6 bench6 intelPackages_2023.icx ]; } "printf '%s\n' $buildInputs > $out"; test = rec { hello-c = callPackage ./test/compilers/hello-c.nix { }; hello-cpp = callPackage ./test/compilers/hello-cpp.nix { }; - hello-f = callPackage ./test/compilers/hello-f.nix { }; lto = callPackage ./test/compilers/lto.nix { }; asan = callPackage ./test/compilers/asan.nix { }; - #intel2023.icx.c = hello-c.override { - # stdenv = bsc.intel2023.stdenv; - #}; - #intel2023.icc.c = hello-c.override { - # stdenv = bsc.intel2023.stdenv-icc; - #}; - #intel2023.icx.cpp = hello-cpp.override { - # stdenv = bsc.intel2023.stdenv; - #}; - #intel2023.icc.cpp = hello-cpp.override { - # stdenv = bsc.intel2023.stdenv-icc; - #}; - #intel2023.ifort = hello-f.override { - # stdenv = bsc.intel2023.stdenv-ifort; - #}; - clangOmpss2.lto = lto.override { stdenv = self.stdenvClangOmpss2; }; - clangOmpss2.asan = asan.override { stdenv = self.stdenvClangOmpss2; }; - clangOmpss2.task = callPackage ./test/compilers/ompss2.nix { - stdenv = self.stdenvClangOmpss2; + intel2023-icx-c = hello-c.override { stdenv = self.intelPackages_2023.stdenv; }; + intel2023-icc-c = hello-c.override { stdenv = self.intelPackages_2023.stdenv-icc; }; + intel2023-icx-cpp = hello-cpp.override { stdenv = self.intelPackages_2023.stdenv; }; + intel2023-icc-cpp = hello-cpp.override { stdenv = self.intelPackages_2023.stdenv-icc; }; + intel2023-ifort = callPackage ./test/compilers/hello-f.nix { + stdenv = self.intelPackages_2023.stdenv-ifort; + }; + clangOmpss2-lto = lto.override { stdenv = self.stdenvClangOmpss2Nanos6; }; + clangOmpss2-asan = asan.override { stdenv = self.stdenvClangOmpss2Nanos6; }; + clangOmpss2-task = callPackage ./test/compilers/ompss2.nix { + stdenv = self.stdenvClangOmpss2Nanos6; + }; + clangNodes-task = callPackage ./test/compilers/ompss2.nix { + stdenv = self.stdenvClangOmpss2Nodes; }; - #clangNodes.task = callPackage ./test/compilers/ompss2.nix { - # stdenv = bsc.stdenvClangNodes; - #}; }; all = super.runCommand "ci-all" { - buildInputs = with self.bsc-ci.test; [ - clangOmpss2.lto - clangOmpss2.task - clangOmpss2.asan - ]; + buildInputs = self.bsc-ci.pkgs.buildInputs ++ + (attrValues self.bsc-ci.test); } "printf '%s\n' $buildInputs > $out"; }; } From dd802e2ec932086e376eb56ab353a3d702704a74 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 28 Sep 2023 09:16:04 +0200 Subject: [PATCH 852/987] Use flakes for the CI build command --- .gitlab-ci.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index d623bfb..1159362 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,7 +1,6 @@ -build:bsc.ci: +build:bsc-ci.all: stage: build tags: - nix script: - - export NIXPKGS_ALLOW_INSECURE=1 - - nix build -v -L --tarball-ttl 0 --file default.nix bsc.ci + - nix build -v -L ".#bsc-ci.all" From bead8aea0a8989e836f180537ae1d166bb3f5b03 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 28 Sep 2023 11:20:28 +0200 Subject: [PATCH 853/987] Run the tests from the jungle flake --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 1159362..7e0510a 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -3,4 +3,4 @@ build:bsc-ci.all: tags: - nix script: - - nix build -v -L ".#bsc-ci.all" + - nix build -L "jungle#bsc-ci.all" --override-input bscpkgs . From 1864c08c95e392c865c1893a583af5dece7736f7 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 2 Oct 2023 07:50:36 +0200 Subject: [PATCH 854/987] Disable packages from PM GitLab while is down --- overlay.nix | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/overlay.nix b/overlay.nix index e7e8d08..d406dca 100644 --- a/overlay.nix +++ b/overlay.nix @@ -405,8 +405,12 @@ in { bsc-ci = { pkgs = super.runCommand "ci-pkgs" { buildInputs = with self; [ - ovni nanos6 nosv nodes nix-wrap osumb wxparaver tampi sonar - clangOmpss2Nanos6 bench6 intelPackages_2023.icx + ovni nanos6 nosv nodes + osumb wxparaver tampi + clangOmpss2Nanos6 + intelPackages_2023.icx + # depend on pm.bsc.es/gitlab + #bench6 sonar nix-wrap ]; } "printf '%s\n' $buildInputs > $out"; From be25283da5aa8d9a5cb4852c26374ac0a07253d8 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 2 Oct 2023 08:31:20 +0200 Subject: [PATCH 855/987] Update mcxx to 2023.05 --- bsc/mcxx/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bsc/mcxx/default.nix b/bsc/mcxx/default.nix index 3dfa1cf..9d925a3 100644 --- a/bsc/mcxx/default.nix +++ b/bsc/mcxx/default.nix @@ -15,7 +15,7 @@ stdenv.mkDerivation rec { pname = "mcxx"; - version = "2022.11"; + version = "2023.05"; passthru = { CC = "mcc"; @@ -27,7 +27,7 @@ stdenv.mkDerivation rec { owner = "bsc-pm"; repo = pname; rev = "github-release-${version}"; - sha256 = "DMT5UPwsjVo2d0r2wgQvYhcrAacOe+BkiXjAvFA0zGo="; + sha256 = "sha256-GyBvyy/HD3t9rHSXAYZRMhn4o4Nm/HFfjuOS8J0LPu8="; }; enableParallelBuilding = true; From 8fe74589690c1b53063f26d193871e8573358d6e Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 2 Oct 2023 10:38:49 +0200 Subject: [PATCH 856/987] Remove deprecated pkgs and improve CI --- bsc/intel-oneapi/2023.nix | 12 +- bsc/lmbench/default.nix | 1 + bsc/nanos6/jemalloc.nix | 9 + bsc/tagaspi/default.nix | 4 +- overlay.nix | 479 +++++--------------------------------- 5 files changed, 78 insertions(+), 427 deletions(-) create mode 100644 bsc/nanos6/jemalloc.nix diff --git a/bsc/intel-oneapi/2023.nix b/bsc/intel-oneapi/2023.nix index 079d951..304b461 100644 --- a/bsc/intel-oneapi/2023.nix +++ b/bsc/intel-oneapi/2023.nix @@ -4,7 +4,7 @@ , lib , dpkg , rsync -, libffi +, libffi_3_3 , libelf , libxml2 , hwloc @@ -157,7 +157,7 @@ let buildInputs = [ intel-mpi rsync - libffi + libffi_3_3 libelf libxml2 hwloc @@ -195,7 +195,7 @@ let intel-mpi intel-tbb rsync - libffi + libffi_3_3 libelf libxml2 hwloc @@ -256,7 +256,7 @@ let intel-mpi intel-compiler-shared rsync - libffi + libffi_3_3 libelf libxml2 hwloc @@ -338,7 +338,7 @@ let buildInputs = [ intel-compiler-shared rsync - libffi + libffi_3_3 libelf libxml2 hwloc @@ -468,7 +468,7 @@ let in { - inherit aptPackages aptPackageIndex intel-mpi; + inherit intel-mpi; icx = icx-wrapper; icc = icc-wrapper; ifort = ifort-wrapper; diff --git a/bsc/lmbench/default.nix b/bsc/lmbench/default.nix index 676556e..b822cac 100644 --- a/bsc/lmbench/default.nix +++ b/bsc/lmbench/default.nix @@ -1,4 +1,5 @@ { + lib, stdenv, fetchFromGitHub }: diff --git a/bsc/nanos6/jemalloc.nix b/bsc/nanos6/jemalloc.nix new file mode 100644 index 0000000..3966130 --- /dev/null +++ b/bsc/nanos6/jemalloc.nix @@ -0,0 +1,9 @@ +{ jemalloc }: + +jemalloc.overrideAttrs (old: { + configureFlags = old.configureFlags ++ [ + "--with-jemalloc-prefix=nanos6_je_" + "--enable-stats" + ]; + hardeningDisable = [ "all" ]; +}) diff --git a/bsc/tagaspi/default.nix b/bsc/tagaspi/default.nix index de893eb..9d9395c 100644 --- a/bsc/tagaspi/default.nix +++ b/bsc/tagaspi/default.nix @@ -5,7 +5,7 @@ , libtool , mpi , autoreconfHook -, gaspi +, gpi-2 , boost , numactl , rdma-core @@ -32,7 +32,7 @@ stdenv.mkDerivation rec { dontDisableStatic = true; configureFlags = [ - "--with-gaspi=${gaspi}" + "--with-gaspi=${gpi-2}" "CFLAGS=-fPIC" "CXXFLAGS=-fPIC" ]; diff --git a/overlay.nix b/overlay.nix index d406dca..96d1f73 100644 --- a/overlay.nix +++ b/overlay.nix @@ -1,444 +1,85 @@ -self: /* Future last stage */ -super: /* Previous stage */ +final: /* Future last stage */ +prev: /* Previous stage */ -with self.lib; +with final.lib; let - inherit (self.lib) callPackageWith; - inherit (self.lib) callPackagesWith; + callPackage = final.callPackage; - appendPasstru = drv: attrs: drv.overrideAttrs (old:{ - passthru = old.passthru // attrs; - }); + mkDeps = name: pkgs: final.runCommand name { } + "printf '%s\n' ${toString (collect (x: x ? outPath) pkgs)} > $out"; - # =================================================================== - # BSC Packages - # =================================================================== + bscPkgs = { + #bench6 = callPackage ./bsc/bench6/default.nix { }; + clangOmpss2 = callPackage ./bsc/llvm-ompss2/default.nix { }; + clangOmpss2Nanos6 = callPackage ./bsc/llvm-ompss2/default.nix { ompss2rt = final.nanos6; }; + clangOmpss2Nodes = callPackage ./bsc/llvm-ompss2/default.nix { ompss2rt = final.nodes; }; + clangOmpss2Unwrapped = callPackage ./bsc/llvm-ompss2/clang.nix { }; + #extrae = callPackage ./bsc/extrae/default.nix { }; # Broken and outdated + #gpi-2 = callPackage ./bsc/gpi-2/default.nix { }; + intelPackages_2023 = callPackage ./bsc/intel-oneapi/2023.nix { }; + jemallocNanos6 = callPackage ./bsc/nanos6/jemalloc.nix { }; + #lmbench = callPackage ./bsc/lmbench/default.nix { }; + mcxx = callPackage ./bsc/mcxx/default.nix { }; + nanos6 = callPackage ./bsc/nanos6/default.nix { }; + nanos6Debug = final.nanos6.override { enableDebug = true; }; + #nixtools = callPackage ./bsc/nixtools/default.nix { }; + #nix-wrap = callPackage ./bsc/nix-wrap/default.nix { }; + nodes = callPackage ./bsc/nodes/default.nix { }; + nosv = callPackage ./bsc/nosv/default.nix { }; + osumb = callPackage ./bsc/osu/default.nix { }; + ovni = callPackage ./bsc/ovni/default.nix { }; + ovniGit = final.ovni.override { useGit = true; }; + paraverKernel = callPackage ./bsc/paraver/kernel.nix { }; + #paraverKernelFast = callPackage ./bsc/paraver/kernel-fast.nix { }; + #pscom = callPackage ./bsc/parastation/pscom.nix { }; + #psmpi = callPackage ./bsc/parastation/psmpi.nix { }; + #sonar = callPackage ./bsc/sonar/default.nix { }; + stdenvClangOmpss2Nanos6 = final.stdenv.override { cc = final.clangOmpss2Nanos6; allowedRequisites = null; }; + stdenvClangOmpss2Nodes = final.stdenv.override { cc = final.clangOmpss2Nodes; allowedRequisites = null; }; + #tagaspi = callPackage ./bsc/tagaspi/default.nix { }; + tampi = callPackage ./bsc/tampi/default.nix { }; + wxparaver = callPackage ./bsc/paraver/default.nix { }; + #wxparaverFast = callPackage ./bsc/paraver/wxparaver-fast.nix { }; + }; -# _bsc = makeExtensible (bsc: -# let -# callPackage = callPackageWith (self // bsc // bsc.garlic); -# in -# { -# inherit callPackage; -# -# # ================================================================= -# # Compilers -# # ================================================================= -# -# # Default C (and C++) compiler to use. It will be overwritten by the -# # experiments. -# cc = bsc.icc; -# -# # By default we use Intel compiler 2020 update 1 -# intelLicense = callPackage ./bsc/intel-compiler/license.nix { }; -# iccUnwrapped = bsc.icc2020Unwrapped; -# icc2020Unwrapped = callPackage ./bsc/intel-compiler/icc2020.nix { -# intel-mpi = bsc.intelMpi; -# }; -# -# icc2021Unwrapped = callPackage ./bsc/intel-compiler/icc2021.nix { }; -# -# intel-oneapi-2023 = callPackage ./bsc/intel-oneapi/2023.nix { -# libffi = self.libffi_3_3; -# }; -# -# intel2023 = { -# inherit (bsc.intel-oneapi-2023) -# stdenv icx stdenv-ifort ifort -# # Deprecated in mid 2023 -# stdenv-icc icc; -# }; -# -# intel2022 = { -# icc = bsc.icc2021; -# }; -# -# intel2021 = { -# icc = bsc.icc2021; -# }; -# -# # A wrapper script that puts all the flags and environment vars -# # properly and calls the intel compiler binary -# icc2020 = appendPasstru (callPackage ./bsc/intel-compiler/default.nix { -# iccUnwrapped = bsc.iccUnwrapped; -# intelLicense = bsc.intelLicense; -# }) { CC = "icc"; CXX = "icpc"; }; -# -# icc2021 = appendPasstru (callPackage ./bsc/intel-compiler/wrapper2021.nix { -# iccUnwrapped = bsc.icc2021Unwrapped; -# }) { CC = "icx"; CXX = "icpx"; }; -# -# ifort2022 = callPackage ./bsc/intel-compiler/default.nix { -# iccUnwrapped = bsc.ifort2022Unwrapped; -# intelLicense = bsc.intelLicense; -# }; -# -# icx = bsc.intel2023.icx; -# icc = bsc.intel2023.icc; -# ifort = bsc.intel2023.ifort; -# -# # We need to set the cc.CC and cc.CXX attributes, in order to -# # determine the name of the compiler -# gcc = appendPasstru self.gcc { CC = "gcc"; CXX = "g++"; }; -# -# # Last llvm release by default -# llvmPackages = self.llvmPackages_latest // { -# clang = appendPasstru self.llvmPackages_latest.clang { -# CC = "clang"; CXX = "clang++"; -# }; -# }; -# -# lld = bsc.llvmPackages.lld; -# -# clangOmpss2Unwrapped = callPackage ./bsc/llvm-ompss2/clang.nix { -# stdenv = bsc.llvmPackages.stdenv; -# }; -# -# clangOmpss2UnwrappedGit = bsc.clangOmpss2Unwrapped.overrideAttrs (old: rec { -# src = builtins.fetchGit { -# url = "ssh://git@bscpm03.bsc.es/llvm-ompss/llvm-mono.git"; -# ref = "master"; -# }; -# version = src.shortRev; -# }); -# -# clangOmpss2 = appendPasstru ( -# callPackage ./bsc/llvm-ompss2/default.nix { -# rt = bsc.nanos6; -# llvmPackages = bsc.llvmPackages; -# clangOmpss2Unwrapped = bsc.clangOmpss2Unwrapped; -# }) { CC = "clang"; CXX = "clang++"; }; -# -# clangOmpss2Git = appendPasstru ( -# callPackage ./bsc/llvm-ompss2/default.nix { -# rt = bsc.nanos6; -# llvmPackages = bsc.llvmPackages; -# clangOmpss2Unwrapped = bsc.clangOmpss2UnwrappedGit; -# }) { CC = "clang"; CXX = "clang++"; }; -# -# stdenvClangOmpss2 = self.stdenv.override { -# cc = bsc.clangOmpss2; -# allowedRequisites = null; -# }; -# -# clangNodes = bsc.clangOmpss2.override { -# rt = bsc.nodes; -# }; -# -# stdenvClangNodes = self.stdenv.override { -# cc = bsc.clangNodes; -# allowedRequisites = null; -# }; -# -# mcxx = bsc.mcxxRelease; -# mcxxRelease = callPackage ./bsc/mcxx/default.nix { }; -# mcxxGit = callPackage ./bsc/mcxx/git.nix { }; -# mcxxRarias = callPackage ./bsc/mcxx/rarias.nix { -# bison = self.bison_3_5; -# }; -# -# # ================================================================= -# # MPI -# # ================================================================= -# -# # Default MPI implementation to use. Will be overwritten by the -# # experiments. -# mpi = bsc.impi; -# -# # ParaStation MPI -# pscom = callPackage ./bsc/parastation/pscom.nix { }; -# psmpi = callPackage ./bsc/parastation/psmpi.nix { }; -# -# # MPICH -# #mpich_3 = callPackage ./bsc/mpich/default.nix { }; -# #mpichDebug_3 = bsc.mpich.override { enableDebug = true; }; -# mpich = super.mpich.overrideAttrs (old: { -# buildInputs = old.buildInputs ++ [ self.libfabric ]; -# configureFlags = old.configureFlags ++ [ -# "--with-device=ch4:ofi" -# "--with-libfabric=${self.libfabric}" -# ]; -# hardeningDisable = [ "all" ]; -# }); -# -# impi = bsc.intel-mpi; -# # The version of MPI for 2023 is labeled 2021.9 ... -# intel-mpi = bsc.intel-oneapi-2023.intel-mpi; -# # Old releases -# intel-mpi-2019 = callPackage ./bsc/intel-mpi/default.nix { }; -# -# # OpenMPI -# openmpi = bsc.openmpi-mn4; -# openmpi-mn4 = callPackage ./bsc/openmpi/default.nix { -# pmix = bsc.pmix2; -# pmi2 = bsc.slurm17-libpmi2; -# enableCxx = true; -# }; -# -# # ================================================================= -# # GASPI -# # ================================================================= -# gpi-2 = callPackage ./bsc/gpi-2/default.nix { }; -# -# # Use GPI-2 as the default implementation for GASPI -# gaspi = bsc.gpi-2; -# -# tagaspi = callPackage ./bsc/tagaspi/default.nix { }; -# -# # ================================================================= -# # Tracing -# # ================================================================= -# -# # We should maintain these... -# paraverKernelFast = callPackage ./bsc/paraver/kernel-fast.nix { }; -# wxparaverFast = callPackage ./bsc/paraver/wxparaver-fast.nix { }; -# -# extrae = callPackage ./bsc/extrae/default.nix { -# libdwarf = super.libdwarf_20210528; -# }; -# otf = callPackage ./bsc/otf/default.nix { }; -# vite = self.qt5.callPackage ./bsc/vite/default.nix { }; -# babeltrace = callPackage ./bsc/babeltrace/default.nix { }; -# babeltrace2 = callPackage ./bsc/babeltrace2/default.nix { }; -# -# # Perf for MN4 kernel -# perf = callPackage ./bsc/perf/default.nix { -# kernel = self.linuxPackages_4_9.kernel; -# systemtap = self.linuxPackages_4_9.systemtap; -# }; -# -# cn6 = callPackage ./bsc/cn6/default.nix { }; -# -# # ================================================================= -# # MN4 specific -# # ================================================================= -# -# lmbench = callPackage ./bsc/lmbench/default.nix { }; -# pmix2 = callPackage ./bsc/pmix/pmix2.nix { }; -# slurm17 = callPackage ./bsc/slurm/default.nix { -# pmix = bsc.pmix2; -# }; -# slurm17-libpmi2 = callPackage ./bsc/slurm/pmi2.nix { -# pmix = bsc.pmix2; -# }; -# -# pmix4 = -# let -# libevent-all = with final; symlinkJoin { -# name = "${libevent.name}-all"; -# paths = [ libevent.dev libevent.out ]; -# }; -# in -# prev.pmix.overrideAttrs (old: rec { -# version = "4.2.3"; -# # Don't use fetchFromGitHub as is not a release! -# src = builtins.fetchTarball { -# url = "https://github.com/openpmix/openpmix/releases/download/v${version}/pmix-${version}.tar.gz"; -# sha256 = "sha256:1iakrjkgydjz2f17if4cpyk1ldjff2790x4z787zdbbdnisxhdz2"; -# }; -# configureFlags = [ -# "--with-munge=${self.munge}" -# "--with-hwloc=${self.hwloc.dev}" -# ]; -# # libevent is not working, so use libev -# buildInputs = old.buildInputs ++ [ self.python3 libevent-all ]; -# nativeBuildInputs = old.nativeBuildInputs ++ [ self.pkgconfig ]; -# }); -# -# slurm-16-05-8-1 = callPackage ./bsc/slurm/16.05.8.1/default.nix { -# hwloc = bsc.hwloc-1-11-6; -# }; -# -# hwloc-1-11-6 = callPackage ./bsc/hwloc/1.11.6/default.nix {}; -# -# # Use a slurm compatible with MN4 -# slurm = bsc.slurm17; -# # We need the unstable branch to get the fallocate problem fixed, as it is -# # not yet in stable nix, see: -# # https://pm.bsc.es/gitlab/rarias/bscpkgs/-/issues/83 -# nix-mn4 = self.nixUnstable; -# # Our custom version that lacks the binaries. Disabled by default. -# #rdma-core = callPackage ./bsc/rdma-core/default.nix { }; -# -# # ================================================================= -# # Patched from upstream -# # ================================================================= -# -# groff = callPackage ./bsc/groff/default.nix { }; -# fftw = callPackage ./bsc/fftw/default.nix { }; -# vtk = callPackage ./bsc/vtk/default.nix { -# inherit (self.xorg) libX11 xorgproto libXt; -# }; -# -# busybox = self.busybox.override { -# enableStatic = true; -# }; -# -# # ================================================================= -# # Misc -# # ================================================================= -# -# dummy = callPackage ./bsc/dummy/default.nix { }; -# mpptest = callPackage ./bsc/mpptest/default.nix { }; -# cpuid = callPackage ./bsc/cpuid/default.nix { }; -# -# # ================================================================= -# # Garlic benchmark -# # ================================================================= -# -# nixtools = callPackage ./bsc/nixtools/default.nix { }; -# -# garlicTools = callPackage ./garlic/tools.nix {}; -# -# # Aliases bsc.apps -> bsc.garlic.apps -# inherit (bsc.garlic) apps fig exp ds; -# -# garlic = import ./garlic/index.nix { -# inherit self super bsc callPackage; -# }; -# -# test = rec { -## hwloc = callPackage ./test/bugs/hwloc.nix { }; -# sigsegv = callPackage ./test/reproducers/sigsegv.nix { }; -# compilers.hello-c = callPackage ./test/compilers/hello-c.nix { }; -# compilers.hello-cpp = callPackage ./test/compilers/hello-cpp.nix { }; -# compilers.hello-f = callPackage ./test/compilers/hello-f.nix { }; -# compilers.lto = callPackage ./test/compilers/lto.nix { }; -# compilers.asan = callPackage ./test/compilers/asan.nix { }; -# compilers.intel2023.icx.c = compilers.hello-c.override { -# stdenv = bsc.intel2023.stdenv; -# }; -# compilers.intel2023.icc.c = compilers.hello-c.override { -# stdenv = bsc.intel2023.stdenv-icc; -# }; -# compilers.intel2023.icx.cpp = compilers.hello-cpp.override { -# stdenv = bsc.intel2023.stdenv; -# }; -# compilers.intel2023.icc.cpp = compilers.hello-cpp.override { -# stdenv = bsc.intel2023.stdenv-icc; -# }; -# compilers.intel2023.ifort = compilers.hello-f.override { -# stdenv = bsc.intel2023.stdenv-ifort; -# }; -# compilers.clangOmpss2.lto = compilers.lto.override { -# stdenv = bsc.stdenvClangOmpss2; -# }; -# compilers.clangOmpss2.asan = compilers.asan.override { -# stdenv = bsc.stdenvClangOmpss2; -# }; -# compilers.clangOmpss2.task = callPackage ./test/compilers/ompss2.nix { -# stdenv = bsc.stdenvClangOmpss2; -# }; -# compilers.clangNodes.task = callPackage ./test/compilers/ompss2.nix { -# stdenv = bsc.stdenvClangNodes; -# }; -# }; -# -# ci = import ./test/ci.nix { -# inherit self super bsc callPackage; -# }; -# -# testAll = with bsc.test; [ -# compilers.intel2023.icx.c -# compilers.intel2023.icc.c -# compilers.intel2023.icx.cpp -# compilers.intel2023.icc.cpp -# compilers.intel2023.ifort -# compilers.clangOmpss2.lto -# compilers.clangOmpss2.task -# compilers.clangOmpss2.asan -# compilers.clangNodes.task -# ]; -# -# }); - - callPackage = super.callPackage; - -in { +in bscPkgs // { # Prevent accidental usage of bsc attribute bsc = throw "the bsc attribute is deprecated, packages are now in the root"; - ovni = callPackage ./bsc/ovni/default.nix { }; - ovniGit = self.ovni.override { useGit = true; }; - nanos6 = callPackage ./bsc/nanos6/default.nix { }; - nanos6Debug = self.nanos6.override { enableDebug = true; }; - jemallocNanos6 = super.jemalloc.overrideAttrs (old: { - configureFlags = old.configureFlags ++ [ - "--with-jemalloc-prefix=nanos6_je_" - "--enable-stats" - ]; - hardeningDisable = [ "all" ]; - }); - nosv = callPackage ./bsc/nosv/default.nix { }; - nodes = callPackage ./bsc/nodes/default.nix { }; - bench6 = callPackage ./bsc/bench6/default.nix { }; - nix-wrap = callPackage ./bsc/nix-wrap/default.nix { }; - osumb = callPackage ./bsc/osu/default.nix { }; - paraverKernel = callPackage ./bsc/paraver/kernel.nix { }; - wxparaver = callPackage ./bsc/paraver/default.nix { }; - tampi = callPackage ./bsc/tampi/default.nix { }; - sonar = callPackage ./bsc/sonar/default.nix { }; - clangOmpss2Unwrapped = callPackage ./bsc/llvm-ompss2/clang.nix { }; - clangOmpss2 = callPackage ./bsc/llvm-ompss2/default.nix { }; - clangOmpss2Nanos6 = callPackage ./bsc/llvm-ompss2/default.nix { - ompss2rt = self.nanos6; - }; - clangOmpss2Nodes = callPackage ./bsc/llvm-ompss2/default.nix { - ompss2rt = self.nodes; - }; - stdenvClangOmpss2Nanos6 = self.stdenv.override { - cc = self.clangOmpss2Nanos6; - allowedRequisites = null; - }; - stdenvClangOmpss2Nodes = self.stdenv.override { - cc = self.clangOmpss2Nodes; - allowedRequisites = null; - }; - - # Intel packages - intelPackages_2023 = callPackage ./bsc/intel-oneapi/2023.nix { - libffi = self.libffi_3_3; - }; - - # Internal for our tests + # Internal for our CI tests bsc-ci = { - pkgs = super.runCommand "ci-pkgs" { - buildInputs = with self; [ - ovni nanos6 nosv nodes - osumb wxparaver tampi - clangOmpss2Nanos6 - intelPackages_2023.icx - # depend on pm.bsc.es/gitlab - #bench6 sonar nix-wrap - ]; - } "printf '%s\n' $buildInputs > $out"; - test = rec { + #hwloc = callPackage ./test/bugs/hwloc.nix { }; + #sigsegv = callPackage ./test/reproducers/sigsegv.nix { }; hello-c = callPackage ./test/compilers/hello-c.nix { }; hello-cpp = callPackage ./test/compilers/hello-cpp.nix { }; lto = callPackage ./test/compilers/lto.nix { }; asan = callPackage ./test/compilers/asan.nix { }; - intel2023-icx-c = hello-c.override { stdenv = self.intelPackages_2023.stdenv; }; - intel2023-icc-c = hello-c.override { stdenv = self.intelPackages_2023.stdenv-icc; }; - intel2023-icx-cpp = hello-cpp.override { stdenv = self.intelPackages_2023.stdenv; }; - intel2023-icc-cpp = hello-cpp.override { stdenv = self.intelPackages_2023.stdenv-icc; }; + intel2023-icx-c = hello-c.override { stdenv = final.intelPackages_2023.stdenv; }; + intel2023-icc-c = hello-c.override { stdenv = final.intelPackages_2023.stdenv-icc; }; + intel2023-icx-cpp = hello-cpp.override { stdenv = final.intelPackages_2023.stdenv; }; + intel2023-icc-cpp = hello-cpp.override { stdenv = final.intelPackages_2023.stdenv-icc; }; intel2023-ifort = callPackage ./test/compilers/hello-f.nix { - stdenv = self.intelPackages_2023.stdenv-ifort; + stdenv = final.intelPackages_2023.stdenv-ifort; }; - clangOmpss2-lto = lto.override { stdenv = self.stdenvClangOmpss2Nanos6; }; - clangOmpss2-asan = asan.override { stdenv = self.stdenvClangOmpss2Nanos6; }; + clangOmpss2-lto = lto.override { stdenv = final.stdenvClangOmpss2Nanos6; }; + clangOmpss2-asan = asan.override { stdenv = final.stdenvClangOmpss2Nanos6; }; clangOmpss2-task = callPackage ./test/compilers/ompss2.nix { - stdenv = self.stdenvClangOmpss2Nanos6; + stdenv = final.stdenvClangOmpss2Nanos6; }; clangNodes-task = callPackage ./test/compilers/ompss2.nix { - stdenv = self.stdenvClangOmpss2Nodes; + stdenv = final.stdenvClangOmpss2Nodes; }; }; - all = super.runCommand "ci-all" { - buildInputs = self.bsc-ci.pkgs.buildInputs ++ - (attrValues self.bsc-ci.test); - } "printf '%s\n' $buildInputs > $out"; + pkgs = final.runCommand "ci-pkgs" { } + "printf '%s\n' ${toString (collect isDerivation bscPkgs)} > $out"; + + tests = final.runCommand "ci-tests" { } + "printf '%s\n' ${toString (collect isDerivation final.bsc-ci.test)} > $out"; + + all = final.runCommand "ci-all" { } + "printf '%s\n' ${toString [ final.bsc-ci.pkgs final.bsc-ci.tests ]} > $out"; }; } From 916e4f49a6be0d1f872f6ad15567a911791300fe Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 2 Oct 2023 10:45:10 +0200 Subject: [PATCH 857/987] Move packages from bsc/ to pkgs/ --- overlay.nix | 54 +++++++++---------- {bsc => pkgs}/babeltrace/default.nix | 0 {bsc => pkgs}/babeltrace2/default.nix | 0 {bsc => pkgs}/bench6/default.nix | 0 {bsc => pkgs}/clsync/default.nix | 0 {bsc => pkgs}/cn6/default.nix | 0 {bsc => pkgs}/cpuid/default.nix | 0 {bsc => pkgs}/dummy/default.nix | 0 {bsc => pkgs}/extrae/PTR.patch | 0 {bsc => pkgs}/extrae/default.nix | 0 {bsc => pkgs}/extrae/use-command.patch | 0 {bsc => pkgs}/fftw/default.nix | 0 {bsc => pkgs}/gpi-2/default.nix | 0 ...-cross-compilation-by-looking-for-ar.patch | 0 {bsc => pkgs}/groff/default.nix | 0 {bsc => pkgs}/groff/site.tmac | 0 {bsc => pkgs}/hwloc/1.11.6/default.nix | 0 {bsc => pkgs}/intel-compiler/default.nix | 0 {bsc => pkgs}/intel-compiler/icc2020.nix | 0 {bsc => pkgs}/intel-compiler/icc2021.nix | 0 {bsc => pkgs}/intel-compiler/license.nix | 0 {bsc => pkgs}/intel-compiler/wrapper2021.nix | 0 {bsc => pkgs}/intel-mpi/default.nix | 0 {bsc => pkgs}/intel-mpi/mpicc.patch | 0 {bsc => pkgs}/intel-mpi/mpicxx.patch | 0 {bsc => pkgs}/intel-oneapi/2023.nix | 0 {bsc => pkgs}/intel-oneapi/all-packages | 0 {bsc => pkgs}/intel-oneapi/amd64-packages | 0 {bsc => pkgs}/intel-oneapi/update.sh | 0 {bsc => pkgs}/libpsm2/default.nix | 0 {bsc => pkgs}/llvm-ompss2/clang.nix | 0 {bsc => pkgs}/llvm-ompss2/default.nix | 0 {bsc => pkgs}/lmbench/default.nix | 0 {bsc => pkgs}/mcxx/default.nix | 0 {bsc => pkgs}/mcxx/git.nix | 0 {bsc => pkgs}/mcxx/intel.patch | 0 {bsc => pkgs}/mcxx/rarias.nix | 0 {bsc => pkgs}/mpich/default.nix | 0 {bsc => pkgs}/nanos6/default.nix | 0 {bsc => pkgs}/nanos6/jemalloc.nix | 0 {bsc => pkgs}/nix-wrap/default.nix | 0 {bsc => pkgs}/nix/default.nix | 0 {bsc => pkgs}/nix/static.nix | 0 {bsc => pkgs}/nix/upload.sh | 0 {bsc => pkgs}/nixtools/default.nix | 0 {bsc => pkgs}/nodes/default.nix | 0 {bsc => pkgs}/nosv/default.nix | 0 {bsc => pkgs}/openmpi/default.nix | 0 {bsc => pkgs}/openmpi/with-slurm.nix | 0 {bsc => pkgs}/osu/default.nix | 0 {bsc => pkgs}/otf/default.nix | 0 {bsc => pkgs}/otf/printf.patch | 0 {bsc => pkgs}/ovni/default.nix | 0 {bsc => pkgs}/parastation/pscom.nix | 0 {bsc => pkgs}/parastation/psmpi.nix | 0 {bsc => pkgs}/paraver/default.nix | 0 .../paraver/dont-expand-colors.patch | 0 {bsc => pkgs}/paraver/kernel-fast.nix | 0 {bsc => pkgs}/paraver/kernel.nix | 0 {bsc => pkgs}/paraver/mouse-label.patch | 0 {bsc => pkgs}/paraver/release.nix | 0 {bsc => pkgs}/paraver/wxparaver-fast.nix | 0 {bsc => pkgs}/paraver/wxparaver-fast.patch | 0 {bsc => pkgs}/paraver/wxparaver.nix | 0 {bsc => pkgs}/perf/default.nix | 0 {bsc => pkgs}/pmix/pmix2.nix | 0 {bsc => pkgs}/rdma-core/default.nix | 0 .../slurm/16.05.8.1/common-env-echo.patch | 0 {bsc => pkgs}/slurm/16.05.8.1/default.nix | 0 {bsc => pkgs}/slurm/16.05.8.1/major.patch | 0 {bsc => pkgs}/slurm/16.05.8.1/mvwprintw.patch | 0 {bsc => pkgs}/slurm/16.05.8.1/pmi2.nix | 0 .../slurm/16.05.8.1/pmix-configure.patch | 0 {bsc => pkgs}/slurm/default.nix | 0 {bsc => pkgs}/slurm/pmi2.nix | 0 {bsc => pkgs}/sonar/default.nix | 0 {bsc => pkgs}/tagaspi/default.nix | 0 {bsc => pkgs}/tampi/default.nix | 0 {bsc => pkgs}/tampi/git.nix | 0 {bsc => pkgs}/vite/cmake.patch | 0 {bsc => pkgs}/vite/default.nix | 0 {bsc => pkgs}/vtk/default.nix | 0 82 files changed, 27 insertions(+), 27 deletions(-) rename {bsc => pkgs}/babeltrace/default.nix (100%) rename {bsc => pkgs}/babeltrace2/default.nix (100%) rename {bsc => pkgs}/bench6/default.nix (100%) rename {bsc => pkgs}/clsync/default.nix (100%) rename {bsc => pkgs}/cn6/default.nix (100%) rename {bsc => pkgs}/cpuid/default.nix (100%) rename {bsc => pkgs}/dummy/default.nix (100%) rename {bsc => pkgs}/extrae/PTR.patch (100%) rename {bsc => pkgs}/extrae/default.nix (100%) rename {bsc => pkgs}/extrae/use-command.patch (100%) rename {bsc => pkgs}/fftw/default.nix (100%) rename {bsc => pkgs}/gpi-2/default.nix (100%) rename {bsc => pkgs}/groff/0001-Fix-cross-compilation-by-looking-for-ar.patch (100%) rename {bsc => pkgs}/groff/default.nix (100%) rename {bsc => pkgs}/groff/site.tmac (100%) rename {bsc => pkgs}/hwloc/1.11.6/default.nix (100%) rename {bsc => pkgs}/intel-compiler/default.nix (100%) rename {bsc => pkgs}/intel-compiler/icc2020.nix (100%) rename {bsc => pkgs}/intel-compiler/icc2021.nix (100%) rename {bsc => pkgs}/intel-compiler/license.nix (100%) rename {bsc => pkgs}/intel-compiler/wrapper2021.nix (100%) rename {bsc => pkgs}/intel-mpi/default.nix (100%) rename {bsc => pkgs}/intel-mpi/mpicc.patch (100%) rename {bsc => pkgs}/intel-mpi/mpicxx.patch (100%) rename {bsc => pkgs}/intel-oneapi/2023.nix (100%) rename {bsc => pkgs}/intel-oneapi/all-packages (100%) rename {bsc => pkgs}/intel-oneapi/amd64-packages (100%) rename {bsc => pkgs}/intel-oneapi/update.sh (100%) rename {bsc => pkgs}/libpsm2/default.nix (100%) rename {bsc => pkgs}/llvm-ompss2/clang.nix (100%) rename {bsc => pkgs}/llvm-ompss2/default.nix (100%) rename {bsc => pkgs}/lmbench/default.nix (100%) rename {bsc => pkgs}/mcxx/default.nix (100%) rename {bsc => pkgs}/mcxx/git.nix (100%) rename {bsc => pkgs}/mcxx/intel.patch (100%) rename {bsc => pkgs}/mcxx/rarias.nix (100%) rename {bsc => pkgs}/mpich/default.nix (100%) rename {bsc => pkgs}/nanos6/default.nix (100%) rename {bsc => pkgs}/nanos6/jemalloc.nix (100%) rename {bsc => pkgs}/nix-wrap/default.nix (100%) rename {bsc => pkgs}/nix/default.nix (100%) rename {bsc => pkgs}/nix/static.nix (100%) rename {bsc => pkgs}/nix/upload.sh (100%) rename {bsc => pkgs}/nixtools/default.nix (100%) rename {bsc => pkgs}/nodes/default.nix (100%) rename {bsc => pkgs}/nosv/default.nix (100%) rename {bsc => pkgs}/openmpi/default.nix (100%) rename {bsc => pkgs}/openmpi/with-slurm.nix (100%) rename {bsc => pkgs}/osu/default.nix (100%) rename {bsc => pkgs}/otf/default.nix (100%) rename {bsc => pkgs}/otf/printf.patch (100%) rename {bsc => pkgs}/ovni/default.nix (100%) rename {bsc => pkgs}/parastation/pscom.nix (100%) rename {bsc => pkgs}/parastation/psmpi.nix (100%) rename {bsc => pkgs}/paraver/default.nix (100%) rename {bsc => pkgs}/paraver/dont-expand-colors.patch (100%) rename {bsc => pkgs}/paraver/kernel-fast.nix (100%) rename {bsc => pkgs}/paraver/kernel.nix (100%) rename {bsc => pkgs}/paraver/mouse-label.patch (100%) rename {bsc => pkgs}/paraver/release.nix (100%) rename {bsc => pkgs}/paraver/wxparaver-fast.nix (100%) rename {bsc => pkgs}/paraver/wxparaver-fast.patch (100%) rename {bsc => pkgs}/paraver/wxparaver.nix (100%) rename {bsc => pkgs}/perf/default.nix (100%) rename {bsc => pkgs}/pmix/pmix2.nix (100%) rename {bsc => pkgs}/rdma-core/default.nix (100%) rename {bsc => pkgs}/slurm/16.05.8.1/common-env-echo.patch (100%) rename {bsc => pkgs}/slurm/16.05.8.1/default.nix (100%) rename {bsc => pkgs}/slurm/16.05.8.1/major.patch (100%) rename {bsc => pkgs}/slurm/16.05.8.1/mvwprintw.patch (100%) rename {bsc => pkgs}/slurm/16.05.8.1/pmi2.nix (100%) rename {bsc => pkgs}/slurm/16.05.8.1/pmix-configure.patch (100%) rename {bsc => pkgs}/slurm/default.nix (100%) rename {bsc => pkgs}/slurm/pmi2.nix (100%) rename {bsc => pkgs}/sonar/default.nix (100%) rename {bsc => pkgs}/tagaspi/default.nix (100%) rename {bsc => pkgs}/tampi/default.nix (100%) rename {bsc => pkgs}/tampi/git.nix (100%) rename {bsc => pkgs}/vite/cmake.patch (100%) rename {bsc => pkgs}/vite/default.nix (100%) rename {bsc => pkgs}/vtk/default.nix (100%) diff --git a/overlay.nix b/overlay.nix index 96d1f73..9389423 100644 --- a/overlay.nix +++ b/overlay.nix @@ -10,37 +10,37 @@ let "printf '%s\n' ${toString (collect (x: x ? outPath) pkgs)} > $out"; bscPkgs = { - #bench6 = callPackage ./bsc/bench6/default.nix { }; - clangOmpss2 = callPackage ./bsc/llvm-ompss2/default.nix { }; - clangOmpss2Nanos6 = callPackage ./bsc/llvm-ompss2/default.nix { ompss2rt = final.nanos6; }; - clangOmpss2Nodes = callPackage ./bsc/llvm-ompss2/default.nix { ompss2rt = final.nodes; }; - clangOmpss2Unwrapped = callPackage ./bsc/llvm-ompss2/clang.nix { }; - #extrae = callPackage ./bsc/extrae/default.nix { }; # Broken and outdated - #gpi-2 = callPackage ./bsc/gpi-2/default.nix { }; - intelPackages_2023 = callPackage ./bsc/intel-oneapi/2023.nix { }; - jemallocNanos6 = callPackage ./bsc/nanos6/jemalloc.nix { }; - #lmbench = callPackage ./bsc/lmbench/default.nix { }; - mcxx = callPackage ./bsc/mcxx/default.nix { }; - nanos6 = callPackage ./bsc/nanos6/default.nix { }; + #bench6 = callPackage ./pkgs/bench6/default.nix { }; + clangOmpss2 = callPackage ./pkgs/llvm-ompss2/default.nix { }; + clangOmpss2Nanos6 = callPackage ./pkgs/llvm-ompss2/default.nix { ompss2rt = final.nanos6; }; + clangOmpss2Nodes = callPackage ./pkgs/llvm-ompss2/default.nix { ompss2rt = final.nodes; }; + clangOmpss2Unwrapped = callPackage ./pkgs/llvm-ompss2/clang.nix { }; + #extrae = callPackage ./pkgs/extrae/default.nix { }; # Broken and outdated + #gpi-2 = callPackage ./pkgs/gpi-2/default.nix { }; + intelPackages_2023 = callPackage ./pkgs/intel-oneapi/2023.nix { }; + jemallocNanos6 = callPackage ./pkgs/nanos6/jemalloc.nix { }; + #lmbench = callPackage ./pkgs/lmbench/default.nix { }; + mcxx = callPackage ./pkgs/mcxx/default.nix { }; + nanos6 = callPackage ./pkgs/nanos6/default.nix { }; nanos6Debug = final.nanos6.override { enableDebug = true; }; - #nixtools = callPackage ./bsc/nixtools/default.nix { }; - #nix-wrap = callPackage ./bsc/nix-wrap/default.nix { }; - nodes = callPackage ./bsc/nodes/default.nix { }; - nosv = callPackage ./bsc/nosv/default.nix { }; - osumb = callPackage ./bsc/osu/default.nix { }; - ovni = callPackage ./bsc/ovni/default.nix { }; + #nixtools = callPackage ./pkgs/nixtools/default.nix { }; + #nix-wrap = callPackage ./pkgs/nix-wrap/default.nix { }; + nodes = callPackage ./pkgs/nodes/default.nix { }; + nosv = callPackage ./pkgs/nosv/default.nix { }; + osumb = callPackage ./pkgs/osu/default.nix { }; + ovni = callPackage ./pkgs/ovni/default.nix { }; ovniGit = final.ovni.override { useGit = true; }; - paraverKernel = callPackage ./bsc/paraver/kernel.nix { }; - #paraverKernelFast = callPackage ./bsc/paraver/kernel-fast.nix { }; - #pscom = callPackage ./bsc/parastation/pscom.nix { }; - #psmpi = callPackage ./bsc/parastation/psmpi.nix { }; - #sonar = callPackage ./bsc/sonar/default.nix { }; + paraverKernel = callPackage ./pkgs/paraver/kernel.nix { }; + #paraverKernelFast = callPackage ./pkgs/paraver/kernel-fast.nix { }; + #pscom = callPackage ./pkgs/parastation/pscom.nix { }; + #psmpi = callPackage ./pkgs/parastation/psmpi.nix { }; + #sonar = callPackage ./pkgs/sonar/default.nix { }; stdenvClangOmpss2Nanos6 = final.stdenv.override { cc = final.clangOmpss2Nanos6; allowedRequisites = null; }; stdenvClangOmpss2Nodes = final.stdenv.override { cc = final.clangOmpss2Nodes; allowedRequisites = null; }; - #tagaspi = callPackage ./bsc/tagaspi/default.nix { }; - tampi = callPackage ./bsc/tampi/default.nix { }; - wxparaver = callPackage ./bsc/paraver/default.nix { }; - #wxparaverFast = callPackage ./bsc/paraver/wxparaver-fast.nix { }; + #tagaspi = callPackage ./pkgs/tagaspi/default.nix { }; + tampi = callPackage ./pkgs/tampi/default.nix { }; + wxparaver = callPackage ./pkgs/paraver/default.nix { }; + #wxparaverFast = callPackage ./pkgs/paraver/wxparaver-fast.nix { }; }; in bscPkgs // { diff --git a/bsc/babeltrace/default.nix b/pkgs/babeltrace/default.nix similarity index 100% rename from bsc/babeltrace/default.nix rename to pkgs/babeltrace/default.nix diff --git a/bsc/babeltrace2/default.nix b/pkgs/babeltrace2/default.nix similarity index 100% rename from bsc/babeltrace2/default.nix rename to pkgs/babeltrace2/default.nix diff --git a/bsc/bench6/default.nix b/pkgs/bench6/default.nix similarity index 100% rename from bsc/bench6/default.nix rename to pkgs/bench6/default.nix diff --git a/bsc/clsync/default.nix b/pkgs/clsync/default.nix similarity index 100% rename from bsc/clsync/default.nix rename to pkgs/clsync/default.nix diff --git a/bsc/cn6/default.nix b/pkgs/cn6/default.nix similarity index 100% rename from bsc/cn6/default.nix rename to pkgs/cn6/default.nix diff --git a/bsc/cpuid/default.nix b/pkgs/cpuid/default.nix similarity index 100% rename from bsc/cpuid/default.nix rename to pkgs/cpuid/default.nix diff --git a/bsc/dummy/default.nix b/pkgs/dummy/default.nix similarity index 100% rename from bsc/dummy/default.nix rename to pkgs/dummy/default.nix diff --git a/bsc/extrae/PTR.patch b/pkgs/extrae/PTR.patch similarity index 100% rename from bsc/extrae/PTR.patch rename to pkgs/extrae/PTR.patch diff --git a/bsc/extrae/default.nix b/pkgs/extrae/default.nix similarity index 100% rename from bsc/extrae/default.nix rename to pkgs/extrae/default.nix diff --git a/bsc/extrae/use-command.patch b/pkgs/extrae/use-command.patch similarity index 100% rename from bsc/extrae/use-command.patch rename to pkgs/extrae/use-command.patch diff --git a/bsc/fftw/default.nix b/pkgs/fftw/default.nix similarity index 100% rename from bsc/fftw/default.nix rename to pkgs/fftw/default.nix diff --git a/bsc/gpi-2/default.nix b/pkgs/gpi-2/default.nix similarity index 100% rename from bsc/gpi-2/default.nix rename to pkgs/gpi-2/default.nix diff --git a/bsc/groff/0001-Fix-cross-compilation-by-looking-for-ar.patch b/pkgs/groff/0001-Fix-cross-compilation-by-looking-for-ar.patch similarity index 100% rename from bsc/groff/0001-Fix-cross-compilation-by-looking-for-ar.patch rename to pkgs/groff/0001-Fix-cross-compilation-by-looking-for-ar.patch diff --git a/bsc/groff/default.nix b/pkgs/groff/default.nix similarity index 100% rename from bsc/groff/default.nix rename to pkgs/groff/default.nix diff --git a/bsc/groff/site.tmac b/pkgs/groff/site.tmac similarity index 100% rename from bsc/groff/site.tmac rename to pkgs/groff/site.tmac diff --git a/bsc/hwloc/1.11.6/default.nix b/pkgs/hwloc/1.11.6/default.nix similarity index 100% rename from bsc/hwloc/1.11.6/default.nix rename to pkgs/hwloc/1.11.6/default.nix diff --git a/bsc/intel-compiler/default.nix b/pkgs/intel-compiler/default.nix similarity index 100% rename from bsc/intel-compiler/default.nix rename to pkgs/intel-compiler/default.nix diff --git a/bsc/intel-compiler/icc2020.nix b/pkgs/intel-compiler/icc2020.nix similarity index 100% rename from bsc/intel-compiler/icc2020.nix rename to pkgs/intel-compiler/icc2020.nix diff --git a/bsc/intel-compiler/icc2021.nix b/pkgs/intel-compiler/icc2021.nix similarity index 100% rename from bsc/intel-compiler/icc2021.nix rename to pkgs/intel-compiler/icc2021.nix diff --git a/bsc/intel-compiler/license.nix b/pkgs/intel-compiler/license.nix similarity index 100% rename from bsc/intel-compiler/license.nix rename to pkgs/intel-compiler/license.nix diff --git a/bsc/intel-compiler/wrapper2021.nix b/pkgs/intel-compiler/wrapper2021.nix similarity index 100% rename from bsc/intel-compiler/wrapper2021.nix rename to pkgs/intel-compiler/wrapper2021.nix diff --git a/bsc/intel-mpi/default.nix b/pkgs/intel-mpi/default.nix similarity index 100% rename from bsc/intel-mpi/default.nix rename to pkgs/intel-mpi/default.nix diff --git a/bsc/intel-mpi/mpicc.patch b/pkgs/intel-mpi/mpicc.patch similarity index 100% rename from bsc/intel-mpi/mpicc.patch rename to pkgs/intel-mpi/mpicc.patch diff --git a/bsc/intel-mpi/mpicxx.patch b/pkgs/intel-mpi/mpicxx.patch similarity index 100% rename from bsc/intel-mpi/mpicxx.patch rename to pkgs/intel-mpi/mpicxx.patch diff --git a/bsc/intel-oneapi/2023.nix b/pkgs/intel-oneapi/2023.nix similarity index 100% rename from bsc/intel-oneapi/2023.nix rename to pkgs/intel-oneapi/2023.nix diff --git a/bsc/intel-oneapi/all-packages b/pkgs/intel-oneapi/all-packages similarity index 100% rename from bsc/intel-oneapi/all-packages rename to pkgs/intel-oneapi/all-packages diff --git a/bsc/intel-oneapi/amd64-packages b/pkgs/intel-oneapi/amd64-packages similarity index 100% rename from bsc/intel-oneapi/amd64-packages rename to pkgs/intel-oneapi/amd64-packages diff --git a/bsc/intel-oneapi/update.sh b/pkgs/intel-oneapi/update.sh similarity index 100% rename from bsc/intel-oneapi/update.sh rename to pkgs/intel-oneapi/update.sh diff --git a/bsc/libpsm2/default.nix b/pkgs/libpsm2/default.nix similarity index 100% rename from bsc/libpsm2/default.nix rename to pkgs/libpsm2/default.nix diff --git a/bsc/llvm-ompss2/clang.nix b/pkgs/llvm-ompss2/clang.nix similarity index 100% rename from bsc/llvm-ompss2/clang.nix rename to pkgs/llvm-ompss2/clang.nix diff --git a/bsc/llvm-ompss2/default.nix b/pkgs/llvm-ompss2/default.nix similarity index 100% rename from bsc/llvm-ompss2/default.nix rename to pkgs/llvm-ompss2/default.nix diff --git a/bsc/lmbench/default.nix b/pkgs/lmbench/default.nix similarity index 100% rename from bsc/lmbench/default.nix rename to pkgs/lmbench/default.nix diff --git a/bsc/mcxx/default.nix b/pkgs/mcxx/default.nix similarity index 100% rename from bsc/mcxx/default.nix rename to pkgs/mcxx/default.nix diff --git a/bsc/mcxx/git.nix b/pkgs/mcxx/git.nix similarity index 100% rename from bsc/mcxx/git.nix rename to pkgs/mcxx/git.nix diff --git a/bsc/mcxx/intel.patch b/pkgs/mcxx/intel.patch similarity index 100% rename from bsc/mcxx/intel.patch rename to pkgs/mcxx/intel.patch diff --git a/bsc/mcxx/rarias.nix b/pkgs/mcxx/rarias.nix similarity index 100% rename from bsc/mcxx/rarias.nix rename to pkgs/mcxx/rarias.nix diff --git a/bsc/mpich/default.nix b/pkgs/mpich/default.nix similarity index 100% rename from bsc/mpich/default.nix rename to pkgs/mpich/default.nix diff --git a/bsc/nanos6/default.nix b/pkgs/nanos6/default.nix similarity index 100% rename from bsc/nanos6/default.nix rename to pkgs/nanos6/default.nix diff --git a/bsc/nanos6/jemalloc.nix b/pkgs/nanos6/jemalloc.nix similarity index 100% rename from bsc/nanos6/jemalloc.nix rename to pkgs/nanos6/jemalloc.nix diff --git a/bsc/nix-wrap/default.nix b/pkgs/nix-wrap/default.nix similarity index 100% rename from bsc/nix-wrap/default.nix rename to pkgs/nix-wrap/default.nix diff --git a/bsc/nix/default.nix b/pkgs/nix/default.nix similarity index 100% rename from bsc/nix/default.nix rename to pkgs/nix/default.nix diff --git a/bsc/nix/static.nix b/pkgs/nix/static.nix similarity index 100% rename from bsc/nix/static.nix rename to pkgs/nix/static.nix diff --git a/bsc/nix/upload.sh b/pkgs/nix/upload.sh similarity index 100% rename from bsc/nix/upload.sh rename to pkgs/nix/upload.sh diff --git a/bsc/nixtools/default.nix b/pkgs/nixtools/default.nix similarity index 100% rename from bsc/nixtools/default.nix rename to pkgs/nixtools/default.nix diff --git a/bsc/nodes/default.nix b/pkgs/nodes/default.nix similarity index 100% rename from bsc/nodes/default.nix rename to pkgs/nodes/default.nix diff --git a/bsc/nosv/default.nix b/pkgs/nosv/default.nix similarity index 100% rename from bsc/nosv/default.nix rename to pkgs/nosv/default.nix diff --git a/bsc/openmpi/default.nix b/pkgs/openmpi/default.nix similarity index 100% rename from bsc/openmpi/default.nix rename to pkgs/openmpi/default.nix diff --git a/bsc/openmpi/with-slurm.nix b/pkgs/openmpi/with-slurm.nix similarity index 100% rename from bsc/openmpi/with-slurm.nix rename to pkgs/openmpi/with-slurm.nix diff --git a/bsc/osu/default.nix b/pkgs/osu/default.nix similarity index 100% rename from bsc/osu/default.nix rename to pkgs/osu/default.nix diff --git a/bsc/otf/default.nix b/pkgs/otf/default.nix similarity index 100% rename from bsc/otf/default.nix rename to pkgs/otf/default.nix diff --git a/bsc/otf/printf.patch b/pkgs/otf/printf.patch similarity index 100% rename from bsc/otf/printf.patch rename to pkgs/otf/printf.patch diff --git a/bsc/ovni/default.nix b/pkgs/ovni/default.nix similarity index 100% rename from bsc/ovni/default.nix rename to pkgs/ovni/default.nix diff --git a/bsc/parastation/pscom.nix b/pkgs/parastation/pscom.nix similarity index 100% rename from bsc/parastation/pscom.nix rename to pkgs/parastation/pscom.nix diff --git a/bsc/parastation/psmpi.nix b/pkgs/parastation/psmpi.nix similarity index 100% rename from bsc/parastation/psmpi.nix rename to pkgs/parastation/psmpi.nix diff --git a/bsc/paraver/default.nix b/pkgs/paraver/default.nix similarity index 100% rename from bsc/paraver/default.nix rename to pkgs/paraver/default.nix diff --git a/bsc/paraver/dont-expand-colors.patch b/pkgs/paraver/dont-expand-colors.patch similarity index 100% rename from bsc/paraver/dont-expand-colors.patch rename to pkgs/paraver/dont-expand-colors.patch diff --git a/bsc/paraver/kernel-fast.nix b/pkgs/paraver/kernel-fast.nix similarity index 100% rename from bsc/paraver/kernel-fast.nix rename to pkgs/paraver/kernel-fast.nix diff --git a/bsc/paraver/kernel.nix b/pkgs/paraver/kernel.nix similarity index 100% rename from bsc/paraver/kernel.nix rename to pkgs/paraver/kernel.nix diff --git a/bsc/paraver/mouse-label.patch b/pkgs/paraver/mouse-label.patch similarity index 100% rename from bsc/paraver/mouse-label.patch rename to pkgs/paraver/mouse-label.patch diff --git a/bsc/paraver/release.nix b/pkgs/paraver/release.nix similarity index 100% rename from bsc/paraver/release.nix rename to pkgs/paraver/release.nix diff --git a/bsc/paraver/wxparaver-fast.nix b/pkgs/paraver/wxparaver-fast.nix similarity index 100% rename from bsc/paraver/wxparaver-fast.nix rename to pkgs/paraver/wxparaver-fast.nix diff --git a/bsc/paraver/wxparaver-fast.patch b/pkgs/paraver/wxparaver-fast.patch similarity index 100% rename from bsc/paraver/wxparaver-fast.patch rename to pkgs/paraver/wxparaver-fast.patch diff --git a/bsc/paraver/wxparaver.nix b/pkgs/paraver/wxparaver.nix similarity index 100% rename from bsc/paraver/wxparaver.nix rename to pkgs/paraver/wxparaver.nix diff --git a/bsc/perf/default.nix b/pkgs/perf/default.nix similarity index 100% rename from bsc/perf/default.nix rename to pkgs/perf/default.nix diff --git a/bsc/pmix/pmix2.nix b/pkgs/pmix/pmix2.nix similarity index 100% rename from bsc/pmix/pmix2.nix rename to pkgs/pmix/pmix2.nix diff --git a/bsc/rdma-core/default.nix b/pkgs/rdma-core/default.nix similarity index 100% rename from bsc/rdma-core/default.nix rename to pkgs/rdma-core/default.nix diff --git a/bsc/slurm/16.05.8.1/common-env-echo.patch b/pkgs/slurm/16.05.8.1/common-env-echo.patch similarity index 100% rename from bsc/slurm/16.05.8.1/common-env-echo.patch rename to pkgs/slurm/16.05.8.1/common-env-echo.patch diff --git a/bsc/slurm/16.05.8.1/default.nix b/pkgs/slurm/16.05.8.1/default.nix similarity index 100% rename from bsc/slurm/16.05.8.1/default.nix rename to pkgs/slurm/16.05.8.1/default.nix diff --git a/bsc/slurm/16.05.8.1/major.patch b/pkgs/slurm/16.05.8.1/major.patch similarity index 100% rename from bsc/slurm/16.05.8.1/major.patch rename to pkgs/slurm/16.05.8.1/major.patch diff --git a/bsc/slurm/16.05.8.1/mvwprintw.patch b/pkgs/slurm/16.05.8.1/mvwprintw.patch similarity index 100% rename from bsc/slurm/16.05.8.1/mvwprintw.patch rename to pkgs/slurm/16.05.8.1/mvwprintw.patch diff --git a/bsc/slurm/16.05.8.1/pmi2.nix b/pkgs/slurm/16.05.8.1/pmi2.nix similarity index 100% rename from bsc/slurm/16.05.8.1/pmi2.nix rename to pkgs/slurm/16.05.8.1/pmi2.nix diff --git a/bsc/slurm/16.05.8.1/pmix-configure.patch b/pkgs/slurm/16.05.8.1/pmix-configure.patch similarity index 100% rename from bsc/slurm/16.05.8.1/pmix-configure.patch rename to pkgs/slurm/16.05.8.1/pmix-configure.patch diff --git a/bsc/slurm/default.nix b/pkgs/slurm/default.nix similarity index 100% rename from bsc/slurm/default.nix rename to pkgs/slurm/default.nix diff --git a/bsc/slurm/pmi2.nix b/pkgs/slurm/pmi2.nix similarity index 100% rename from bsc/slurm/pmi2.nix rename to pkgs/slurm/pmi2.nix diff --git a/bsc/sonar/default.nix b/pkgs/sonar/default.nix similarity index 100% rename from bsc/sonar/default.nix rename to pkgs/sonar/default.nix diff --git a/bsc/tagaspi/default.nix b/pkgs/tagaspi/default.nix similarity index 100% rename from bsc/tagaspi/default.nix rename to pkgs/tagaspi/default.nix diff --git a/bsc/tampi/default.nix b/pkgs/tampi/default.nix similarity index 100% rename from bsc/tampi/default.nix rename to pkgs/tampi/default.nix diff --git a/bsc/tampi/git.nix b/pkgs/tampi/git.nix similarity index 100% rename from bsc/tampi/git.nix rename to pkgs/tampi/git.nix diff --git a/bsc/vite/cmake.patch b/pkgs/vite/cmake.patch similarity index 100% rename from bsc/vite/cmake.patch rename to pkgs/vite/cmake.patch diff --git a/bsc/vite/default.nix b/pkgs/vite/default.nix similarity index 100% rename from bsc/vite/default.nix rename to pkgs/vite/default.nix diff --git a/bsc/vtk/default.nix b/pkgs/vtk/default.nix similarity index 100% rename from bsc/vtk/default.nix rename to pkgs/vtk/default.nix From 0184f5e382628e5f6b6801d3fdef48bd9594dde0 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 2 Oct 2023 10:52:04 +0200 Subject: [PATCH 858/987] Print list of CI paths when building --- overlay.nix | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/overlay.nix b/overlay.nix index 9389423..9b1dcc2 100644 --- a/overlay.nix +++ b/overlay.nix @@ -80,6 +80,10 @@ in bscPkgs // { "printf '%s\n' ${toString (collect isDerivation final.bsc-ci.test)} > $out"; all = final.runCommand "ci-all" { } - "printf '%s\n' ${toString [ final.bsc-ci.pkgs final.bsc-ci.tests ]} > $out"; + '' + deps="${toString [ final.bsc-ci.pkgs final.bsc-ci.tests ]}" + cat $deps + printf '%s\n' $deps > $out + ''; }; } From 7f3d3b953da66df0da7134a690be1585fc2b4357 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 2 Oct 2023 10:53:42 +0200 Subject: [PATCH 859/987] Always rebuild CI target --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 7e0510a..da37591 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -3,4 +3,4 @@ build:bsc-ci.all: tags: - nix script: - - nix build -L "jungle#bsc-ci.all" --override-input bscpkgs . + - nix build -L "jungle#bsc-ci.all" --override-input bscpkgs . --rebuild From 2a3b269b9c60d6c82391b7e844c65ab81345a2b1 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 2 Oct 2023 11:05:55 +0200 Subject: [PATCH 860/987] Mark packages affected by PM GitLab --- overlay.nix | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/overlay.nix b/overlay.nix index 9b1dcc2..c728284 100644 --- a/overlay.nix +++ b/overlay.nix @@ -10,37 +10,37 @@ let "printf '%s\n' ${toString (collect (x: x ? outPath) pkgs)} > $out"; bscPkgs = { - #bench6 = callPackage ./pkgs/bench6/default.nix { }; + #bench6 = callPackage ./pkgs/bench6/default.nix { }; # FIXME: PM gitlab broken clangOmpss2 = callPackage ./pkgs/llvm-ompss2/default.nix { }; clangOmpss2Nanos6 = callPackage ./pkgs/llvm-ompss2/default.nix { ompss2rt = final.nanos6; }; clangOmpss2Nodes = callPackage ./pkgs/llvm-ompss2/default.nix { ompss2rt = final.nodes; }; clangOmpss2Unwrapped = callPackage ./pkgs/llvm-ompss2/clang.nix { }; #extrae = callPackage ./pkgs/extrae/default.nix { }; # Broken and outdated - #gpi-2 = callPackage ./pkgs/gpi-2/default.nix { }; + #gpi-2 = callPackage ./pkgs/gpi-2/default.nix { }; # FIXME: PM gitlab broken intelPackages_2023 = callPackage ./pkgs/intel-oneapi/2023.nix { }; jemallocNanos6 = callPackage ./pkgs/nanos6/jemalloc.nix { }; - #lmbench = callPackage ./pkgs/lmbench/default.nix { }; + #lmbench = callPackage ./pkgs/lmbench/default.nix { }; # Broken mcxx = callPackage ./pkgs/mcxx/default.nix { }; nanos6 = callPackage ./pkgs/nanos6/default.nix { }; nanos6Debug = final.nanos6.override { enableDebug = true; }; - #nixtools = callPackage ./pkgs/nixtools/default.nix { }; - #nix-wrap = callPackage ./pkgs/nix-wrap/default.nix { }; + #nixtools = callPackage ./pkgs/nixtools/default.nix { }; # FIXME: PM gitlab broken + #nix-wrap = callPackage ./pkgs/nix-wrap/default.nix { }; # FIXME: PM gitlab broken nodes = callPackage ./pkgs/nodes/default.nix { }; nosv = callPackage ./pkgs/nosv/default.nix { }; osumb = callPackage ./pkgs/osu/default.nix { }; ovni = callPackage ./pkgs/ovni/default.nix { }; ovniGit = final.ovni.override { useGit = true; }; paraverKernel = callPackage ./pkgs/paraver/kernel.nix { }; - #paraverKernelFast = callPackage ./pkgs/paraver/kernel-fast.nix { }; - #pscom = callPackage ./pkgs/parastation/pscom.nix { }; - #psmpi = callPackage ./pkgs/parastation/psmpi.nix { }; - #sonar = callPackage ./pkgs/sonar/default.nix { }; + #paraverKernelFast = callPackage ./pkgs/paraver/kernel-fast.nix { }; # Outdated + PM gitlab broken + #pscom = callPackage ./pkgs/parastation/pscom.nix { }; # Unmaintaned + #psmpi = callPackage ./pkgs/parastation/psmpi.nix { }; # Unmaintaned + #sonar = callPackage ./pkgs/sonar/default.nix { }; # FIXME: PM gitlab broken stdenvClangOmpss2Nanos6 = final.stdenv.override { cc = final.clangOmpss2Nanos6; allowedRequisites = null; }; stdenvClangOmpss2Nodes = final.stdenv.override { cc = final.clangOmpss2Nodes; allowedRequisites = null; }; - #tagaspi = callPackage ./pkgs/tagaspi/default.nix { }; + #tagaspi = callPackage ./pkgs/tagaspi/default.nix { }; # FIXME: PM gitlab broken tampi = callPackage ./pkgs/tampi/default.nix { }; wxparaver = callPackage ./pkgs/paraver/default.nix { }; - #wxparaverFast = callPackage ./pkgs/paraver/wxparaver-fast.nix { }; + #wxparaverFast = callPackage ./pkgs/paraver/wxparaver-fast.nix { }; # Outdated + PM gitlab broken }; in bscPkgs // { @@ -50,7 +50,7 @@ in bscPkgs // { # Internal for our CI tests bsc-ci = { test = rec { - #hwloc = callPackage ./test/bugs/hwloc.nix { }; + #hwloc = callPackage ./test/bugs/hwloc.nix { }; # Broken, no /sys #sigsegv = callPackage ./test/reproducers/sigsegv.nix { }; hello-c = callPackage ./test/compilers/hello-c.nix { }; hello-cpp = callPackage ./test/compilers/hello-cpp.nix { }; From c724ad2ad3f8302f52a88803fb3956a8980b2e1d Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 2 Oct 2023 11:17:01 +0200 Subject: [PATCH 861/987] Remove old CI derivation --- test/ci.nix | 32 -------------------------------- 1 file changed, 32 deletions(-) delete mode 100644 test/ci.nix diff --git a/test/ci.nix b/test/ci.nix deleted file mode 100644 index 341a17b..0000000 --- a/test/ci.nix +++ /dev/null @@ -1,32 +0,0 @@ -{ self, super, bsc, testPkgs }: - -let - stdenv = self.stdenv; -in - -stdenv.mkDerivation rec { - name = "ci"; - src = ./ci.nix; - dontUnpack = true; - - # Just build some packages - buildInputs = testPkgs; - - buildPhase = '' - if [ -e /boot ]; then - echo Build is NOT under chroot - echo This is the content of / : - ls -l / - exit 1 - fi - - echo "OK: Build is under chroot" - - echo "buildInputs:" - printf -- "- %s\n" $buildInputs - ''; - - installPhase = '' - touch $out - ''; -} From 779247691f0c1e54ca5fd70758faaef159716856 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 3 Oct 2023 10:00:34 +0200 Subject: [PATCH 862/987] Add metadata for Nanos6 --- pkgs/nanos6/default.nix | 8 ++++++++ pkgs/nanos6/jemalloc.nix | 3 +++ 2 files changed, 11 insertions(+) diff --git a/pkgs/nanos6/default.nix b/pkgs/nanos6/default.nix index ef27496..4bad276 100644 --- a/pkgs/nanos6/default.nix +++ b/pkgs/nanos6/default.nix @@ -105,4 +105,12 @@ in mkdir -p $out/nix-support echo "export NANOS6_HOME=$out" >> $out/nix-support/setup-hook ''; + + meta = with lib; { + homepage = "https://github.com/bsc-pm/nanos6"; + description = "Nanos6 runtime for OmpSs-2" + + optionalString (enableDebug) " (with debug symbols)"; + platforms = platforms.linux; + license = licenses.gpl3; + }; } diff --git a/pkgs/nanos6/jemalloc.nix b/pkgs/nanos6/jemalloc.nix index 3966130..59ee857 100644 --- a/pkgs/nanos6/jemalloc.nix +++ b/pkgs/nanos6/jemalloc.nix @@ -6,4 +6,7 @@ jemalloc.overrideAttrs (old: { "--enable-stats" ]; hardeningDisable = [ "all" ]; + meta = old.meta // { + description = old.meta.description + " (for Nanos6)"; + }; }) From 7b72b380237f21a7fbac06aafab7f6c3a1d1565d Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 3 Oct 2023 12:23:01 +0200 Subject: [PATCH 863/987] Remove garlic from README --- README.md | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/README.md b/README.md index aecda86..abbeb58 100644 --- a/README.md +++ b/README.md @@ -1,8 +1 @@ -This repository contains the garlic benchmark with all the BSC -packages and patches required to compile it. - -See the user guide at - (also available in -[PDF](https://pm.bsc.es/ftp/garlic/ug.pdf)). - -Questions? +Nix overlay with BSC packages. From 4533c94b4f367580b978803418965b3a760572b8 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 3 Oct 2023 12:24:58 +0200 Subject: [PATCH 864/987] Remove garlic from bscpkgs --- garlic/apps/bigsort/default.nix | 54 - garlic/apps/bigsort/genseq.nix | 46 - garlic/apps/bigsort/shuffle.nix | 46 - garlic/apps/cpic/default.nix | 43 - garlic/apps/creams/default.nix | 57 - garlic/apps/creams/gen_grid.py | 49 - garlic/apps/creams/git-table.nix | 12 - garlic/apps/creams/input.nix | 48 - garlic/apps/fwi/default.nix | 77 - garlic/apps/fwi/git-table.nix | 15 - garlic/apps/fwi/params.nix | 65 - garlic/apps/heat/default.nix | 39 - garlic/apps/heat/git-table.nix | 9 - garlic/apps/heat/print-times.patch | 13 - garlic/apps/hpccg/default.nix | 55 - garlic/apps/hpccg/git-table.nix | 9 - garlic/apps/hpcg/default.nix | 44 - garlic/apps/hpcg/git-table.nix | 18 - garlic/apps/hpcg/tampi.patch | 13 - garlic/apps/ifsker/default.nix | 60 - garlic/apps/ifsker/git-table.nix | 10 - garlic/apps/index.nix | 55 - garlic/apps/lulesh/default.nix | 48 - garlic/apps/lulesh/git-table.nix | 12 - garlic/apps/miniamr/default.nix | 48 - garlic/apps/nbody/default.nix | 59 - garlic/apps/nbody/git-table.nix | 13 - garlic/apps/ppong/default.nix | 35 - garlic/apps/saiph/default.nix | 106 -- garlic/apps/saiph/git-table.nix | 10 - garlic/bundleReport.nix | 31 - garlic/default.nix | 1 - garlic/develop/default.nix | 58 - garlic/develop/inputrc | 37 - garlic/doc/.gitignore | 6 - garlic/doc/Makefile | 42 - garlic/doc/blackbox.ms | 40 - garlic/doc/branch.ms | 22 - garlic/doc/execution.ms | 254 --- garlic/doc/gitbranch.pic | 152 -- garlic/doc/pp.ms | 256 --- garlic/doc/ref.i | 9 - garlic/doc/s.css | 19 - garlic/doc/slides/2.mm | 1468 ---------------- garlic/doc/slides/3.mm | 181 -- garlic/doc/slides/3.pdf | Bin 122774 -> 0 bytes garlic/doc/slides/Makefile | 29 - garlic/doc/slides/overview.svg | 479 ------ garlic/doc/slides/sat.png | Bin 79137 -> 0 bytes garlic/doc/slides/scalability.svg | 265 --- garlic/doc/slides/scaling-region.svg | 806 --------- garlic/doc/ug.ms | 1691 ------------------- garlic/ds/ctf-mode.py | 83 - garlic/ds/index.nix | 18 - garlic/ds/osu-bw.py | 64 - garlic/ds/osu-latency.py | 64 - garlic/ds/perf-stat.py | 90 - garlic/ds/py.nix | 34 - garlic/ds/std-timetable.py | 77 - garlic/exp/bigsort/genseq.nix | 73 - garlic/exp/bigsort/shuffle.nix | 102 -- garlic/exp/bigsort/sort.nix | 126 -- garlic/exp/cn6/nbody.nix | 164 -- garlic/exp/cn6/timediff.nix | 171 -- garlic/exp/creams/granularity.nix | 126 -- garlic/exp/creams/granularity16.nix | 132 -- garlic/exp/creams/size.nix | 131 -- garlic/exp/creams/ss.nix | 126 -- garlic/exp/examples/granularity.nix | 189 --- garlic/exp/fwi/common.nix | 128 -- garlic/exp/fwi/granularity.nix | 71 - garlic/exp/fwi/io.nix | 75 - garlic/exp/fwi/reuse.nix | 91 - garlic/exp/fwi/ss.nix | 90 - garlic/exp/heat/granularity.nix | 175 -- garlic/exp/hpcg/common.nix | 73 - garlic/exp/hpcg/gen.nix | 52 - garlic/exp/hpcg/granularity.nix | 76 - garlic/exp/hpcg/scaling.nix | 78 - garlic/exp/hpcg/size.nix | 65 - garlic/exp/index.nix | 108 -- garlic/exp/lulesh/test.nix | 85 - garlic/exp/nbody/common.nix | 37 - garlic/exp/nbody/granularity.nix | 60 - garlic/exp/nbody/numa.nix | 64 - garlic/exp/nbody/old/granularity-oss.nix | 60 - garlic/exp/nbody/old/nblocks.nix | 104 -- garlic/exp/nbody/old/scaling.nix | 110 -- garlic/exp/nbody/old/strong-scaling-oss.nix | 72 - garlic/exp/nbody/old/weak-scaling-mpi.nix | 63 - garlic/exp/nbody/old/weak-scaling-oss.nix | 63 - garlic/exp/nbody/ss.nix | 59 - garlic/exp/osu/bw.nix | 60 - garlic/exp/osu/eager.nix | 84 - garlic/exp/osu/impi.nix | 69 - garlic/exp/osu/latency.nix | 69 - garlic/exp/osu/mtu.nix | 84 - garlic/exp/saiph/granularity.nix | 132 -- garlic/exp/saiph/ss.nix | 122 -- garlic/exp/slurm/cpu.nix | 63 - garlic/exp/slurm/exit1.nix | 69 - garlic/exp/slurm/sigsegv.nix | 60 - garlic/fig/creams/granularity.R | 83 - garlic/fig/creams/granularity16.R | 136 -- garlic/fig/creams/size.R | 96 -- garlic/fig/creams/ss.R | 128 -- garlic/fig/dev/shell.nix | 14 - garlic/fig/examples/granularity.R | 195 --- garlic/fig/fwi/granularity.R | 74 - garlic/fig/fwi/io.R | 120 -- garlic/fig/fwi/ss.R | 95 -- garlic/fig/heat/cache.R | 78 - garlic/fig/heat/granularity.R | 68 - garlic/fig/heat/mode.R | 122 -- garlic/fig/hpcg/granularity.R | 63 - garlic/fig/hpcg/size.R | 71 - garlic/fig/hpcg/ss.R | 82 - garlic/fig/hpcg/ws.R | 71 - garlic/fig/index.nix | 97 -- garlic/fig/nbody/granularity.R | 62 - garlic/fig/nbody/numa.R | 86 - garlic/fig/nbody/old/baseline.R | 212 --- garlic/fig/nbody/old/freeCpu.R | 112 -- garlic/fig/nbody/old/jemalloc.R | 113 -- garlic/fig/nbody/old/scaling.R | 111 -- garlic/fig/nbody/ss.R | 66 - garlic/fig/osu/bw.R | 59 - garlic/fig/osu/eager.R | 63 - garlic/fig/osu/impi.R | 68 - garlic/fig/osu/latency.R | 77 - garlic/fig/osu/mtu.R | 69 - garlic/fig/saiph/granularity.R | 95 -- garlic/fig/saiph/ss.R | 110 -- garlic/garlicd/default.nix | 28 - garlic/garlicd/garlicd | 105 -- garlic/index.nix | 138 -- garlic/machines.nix | 63 - garlic/mpptest/default.nix | 16 - garlic/pp/hist/default.nix | 25 - garlic/pp/hist/hist.sh | 79 - garlic/pp/merge.nix | 24 - garlic/pp/rplot.nix | 165 -- garlic/pp/store.nix | 89 - garlic/report.nix | 24 - garlic/report/Makefile | 4 - garlic/report/report.tex | 31 - garlic/reportTar.nix | 28 - garlic/sedReport.nix | 19 - garlic/sh/default.nix | 41 - garlic/sh/fix-figure-subtitle.sh | 6 - garlic/sh/garlic | 298 ---- garlic/sh/garlic-add-copyright | 49 - garlic/sh/garlic-git-table | 27 - garlic/sh/garlic-propagate-commit | 63 - garlic/sh/garlic-query | 102 -- garlic/sh/garlic.1 | 61 - garlic/shell.nix | 29 - garlic/stages/baywatch.nix | 26 - garlic/stages/control.nix | 52 - garlic/stages/exec.nix | 42 - garlic/stages/experiment.nix | 60 - garlic/stages/extrae.nix | 34 - garlic/stages/isolate/default.nix | 44 - garlic/stages/isolate/stage1 | 58 - garlic/stages/isolate/stage2 | 16 - garlic/stages/perf.nix | 30 - garlic/stages/pgdb.nix | 30 - garlic/stages/runexp/default.nix | 29 - garlic/stages/runexp/runexp | 21 - garlic/stages/sbatch.nix | 105 -- garlic/stages/script.nix | 28 - garlic/stages/srun.nix | 58 - garlic/stages/strace.nix | 29 - garlic/stages/trebuchet.nix | 43 - garlic/stages/unit.nix | 107 -- garlic/stages/valgrind.nix | 29 - garlic/stdexp.nix | 148 -- garlic/tools.nix | 140 -- 178 files changed, 16994 deletions(-) delete mode 100644 garlic/apps/bigsort/default.nix delete mode 100644 garlic/apps/bigsort/genseq.nix delete mode 100644 garlic/apps/bigsort/shuffle.nix delete mode 100644 garlic/apps/cpic/default.nix delete mode 100644 garlic/apps/creams/default.nix delete mode 100755 garlic/apps/creams/gen_grid.py delete mode 100644 garlic/apps/creams/git-table.nix delete mode 100644 garlic/apps/creams/input.nix delete mode 100644 garlic/apps/fwi/default.nix delete mode 100644 garlic/apps/fwi/git-table.nix delete mode 100644 garlic/apps/fwi/params.nix delete mode 100644 garlic/apps/heat/default.nix delete mode 100644 garlic/apps/heat/git-table.nix delete mode 100644 garlic/apps/heat/print-times.patch delete mode 100644 garlic/apps/hpccg/default.nix delete mode 100644 garlic/apps/hpccg/git-table.nix delete mode 100644 garlic/apps/hpcg/default.nix delete mode 100644 garlic/apps/hpcg/git-table.nix delete mode 100644 garlic/apps/hpcg/tampi.patch delete mode 100644 garlic/apps/ifsker/default.nix delete mode 100644 garlic/apps/ifsker/git-table.nix delete mode 100644 garlic/apps/index.nix delete mode 100644 garlic/apps/lulesh/default.nix delete mode 100644 garlic/apps/lulesh/git-table.nix delete mode 100644 garlic/apps/miniamr/default.nix delete mode 100644 garlic/apps/nbody/default.nix delete mode 100644 garlic/apps/nbody/git-table.nix delete mode 100644 garlic/apps/ppong/default.nix delete mode 100644 garlic/apps/saiph/default.nix delete mode 100644 garlic/apps/saiph/git-table.nix delete mode 100644 garlic/bundleReport.nix delete mode 100644 garlic/default.nix delete mode 100644 garlic/develop/default.nix delete mode 100644 garlic/develop/inputrc delete mode 100644 garlic/doc/.gitignore delete mode 100644 garlic/doc/Makefile delete mode 100644 garlic/doc/blackbox.ms delete mode 100644 garlic/doc/branch.ms delete mode 100644 garlic/doc/execution.ms delete mode 100644 garlic/doc/gitbranch.pic delete mode 100644 garlic/doc/pp.ms delete mode 100644 garlic/doc/ref.i delete mode 100644 garlic/doc/s.css delete mode 100644 garlic/doc/slides/2.mm delete mode 100644 garlic/doc/slides/3.mm delete mode 100644 garlic/doc/slides/3.pdf delete mode 100644 garlic/doc/slides/Makefile delete mode 100644 garlic/doc/slides/overview.svg delete mode 100644 garlic/doc/slides/sat.png delete mode 100644 garlic/doc/slides/scalability.svg delete mode 100644 garlic/doc/slides/scaling-region.svg delete mode 100644 garlic/doc/ug.ms delete mode 100644 garlic/ds/ctf-mode.py delete mode 100644 garlic/ds/index.nix delete mode 100644 garlic/ds/osu-bw.py delete mode 100644 garlic/ds/osu-latency.py delete mode 100644 garlic/ds/perf-stat.py delete mode 100644 garlic/ds/py.nix delete mode 100644 garlic/ds/std-timetable.py delete mode 100644 garlic/exp/bigsort/genseq.nix delete mode 100644 garlic/exp/bigsort/shuffle.nix delete mode 100644 garlic/exp/bigsort/sort.nix delete mode 100644 garlic/exp/cn6/nbody.nix delete mode 100644 garlic/exp/cn6/timediff.nix delete mode 100644 garlic/exp/creams/granularity.nix delete mode 100644 garlic/exp/creams/granularity16.nix delete mode 100644 garlic/exp/creams/size.nix delete mode 100644 garlic/exp/creams/ss.nix delete mode 100644 garlic/exp/examples/granularity.nix delete mode 100644 garlic/exp/fwi/common.nix delete mode 100644 garlic/exp/fwi/granularity.nix delete mode 100644 garlic/exp/fwi/io.nix delete mode 100644 garlic/exp/fwi/reuse.nix delete mode 100644 garlic/exp/fwi/ss.nix delete mode 100644 garlic/exp/heat/granularity.nix delete mode 100644 garlic/exp/hpcg/common.nix delete mode 100644 garlic/exp/hpcg/gen.nix delete mode 100644 garlic/exp/hpcg/granularity.nix delete mode 100644 garlic/exp/hpcg/scaling.nix delete mode 100644 garlic/exp/hpcg/size.nix delete mode 100644 garlic/exp/index.nix delete mode 100644 garlic/exp/lulesh/test.nix delete mode 100644 garlic/exp/nbody/common.nix delete mode 100644 garlic/exp/nbody/granularity.nix delete mode 100644 garlic/exp/nbody/numa.nix delete mode 100644 garlic/exp/nbody/old/granularity-oss.nix delete mode 100644 garlic/exp/nbody/old/nblocks.nix delete mode 100644 garlic/exp/nbody/old/scaling.nix delete mode 100644 garlic/exp/nbody/old/strong-scaling-oss.nix delete mode 100644 garlic/exp/nbody/old/weak-scaling-mpi.nix delete mode 100644 garlic/exp/nbody/old/weak-scaling-oss.nix delete mode 100644 garlic/exp/nbody/ss.nix delete mode 100644 garlic/exp/osu/bw.nix delete mode 100644 garlic/exp/osu/eager.nix delete mode 100644 garlic/exp/osu/impi.nix delete mode 100644 garlic/exp/osu/latency.nix delete mode 100644 garlic/exp/osu/mtu.nix delete mode 100644 garlic/exp/saiph/granularity.nix delete mode 100644 garlic/exp/saiph/ss.nix delete mode 100644 garlic/exp/slurm/cpu.nix delete mode 100644 garlic/exp/slurm/exit1.nix delete mode 100644 garlic/exp/slurm/sigsegv.nix delete mode 100644 garlic/fig/creams/granularity.R delete mode 100644 garlic/fig/creams/granularity16.R delete mode 100644 garlic/fig/creams/size.R delete mode 100644 garlic/fig/creams/ss.R delete mode 100644 garlic/fig/dev/shell.nix delete mode 100644 garlic/fig/examples/granularity.R delete mode 100644 garlic/fig/fwi/granularity.R delete mode 100644 garlic/fig/fwi/io.R delete mode 100644 garlic/fig/fwi/ss.R delete mode 100644 garlic/fig/heat/cache.R delete mode 100644 garlic/fig/heat/granularity.R delete mode 100644 garlic/fig/heat/mode.R delete mode 100644 garlic/fig/hpcg/granularity.R delete mode 100644 garlic/fig/hpcg/size.R delete mode 100644 garlic/fig/hpcg/ss.R delete mode 100644 garlic/fig/hpcg/ws.R delete mode 100644 garlic/fig/index.nix delete mode 100644 garlic/fig/nbody/granularity.R delete mode 100644 garlic/fig/nbody/numa.R delete mode 100644 garlic/fig/nbody/old/baseline.R delete mode 100644 garlic/fig/nbody/old/freeCpu.R delete mode 100644 garlic/fig/nbody/old/jemalloc.R delete mode 100644 garlic/fig/nbody/old/scaling.R delete mode 100644 garlic/fig/nbody/ss.R delete mode 100644 garlic/fig/osu/bw.R delete mode 100644 garlic/fig/osu/eager.R delete mode 100644 garlic/fig/osu/impi.R delete mode 100644 garlic/fig/osu/latency.R delete mode 100644 garlic/fig/osu/mtu.R delete mode 100644 garlic/fig/saiph/granularity.R delete mode 100644 garlic/fig/saiph/ss.R delete mode 100644 garlic/garlicd/default.nix delete mode 100755 garlic/garlicd/garlicd delete mode 100644 garlic/index.nix delete mode 100644 garlic/machines.nix delete mode 100644 garlic/mpptest/default.nix delete mode 100644 garlic/pp/hist/default.nix delete mode 100755 garlic/pp/hist/hist.sh delete mode 100644 garlic/pp/merge.nix delete mode 100644 garlic/pp/rplot.nix delete mode 100644 garlic/pp/store.nix delete mode 100644 garlic/report.nix delete mode 100644 garlic/report/Makefile delete mode 100644 garlic/report/report.tex delete mode 100644 garlic/reportTar.nix delete mode 100644 garlic/sedReport.nix delete mode 100644 garlic/sh/default.nix delete mode 100755 garlic/sh/fix-figure-subtitle.sh delete mode 100755 garlic/sh/garlic delete mode 100755 garlic/sh/garlic-add-copyright delete mode 100755 garlic/sh/garlic-git-table delete mode 100755 garlic/sh/garlic-propagate-commit delete mode 100755 garlic/sh/garlic-query delete mode 100644 garlic/sh/garlic.1 delete mode 100644 garlic/shell.nix delete mode 100644 garlic/stages/baywatch.nix delete mode 100644 garlic/stages/control.nix delete mode 100644 garlic/stages/exec.nix delete mode 100644 garlic/stages/experiment.nix delete mode 100644 garlic/stages/extrae.nix delete mode 100644 garlic/stages/isolate/default.nix delete mode 100644 garlic/stages/isolate/stage1 delete mode 100644 garlic/stages/isolate/stage2 delete mode 100644 garlic/stages/perf.nix delete mode 100644 garlic/stages/pgdb.nix delete mode 100644 garlic/stages/runexp/default.nix delete mode 100755 garlic/stages/runexp/runexp delete mode 100644 garlic/stages/sbatch.nix delete mode 100644 garlic/stages/script.nix delete mode 100644 garlic/stages/srun.nix delete mode 100644 garlic/stages/strace.nix delete mode 100644 garlic/stages/trebuchet.nix delete mode 100644 garlic/stages/unit.nix delete mode 100644 garlic/stages/valgrind.nix delete mode 100644 garlic/stdexp.nix delete mode 100644 garlic/tools.nix diff --git a/garlic/apps/bigsort/default.nix b/garlic/apps/bigsort/default.nix deleted file mode 100644 index 4e7dd3d..0000000 --- a/garlic/apps/bigsort/default.nix +++ /dev/null @@ -1,54 +0,0 @@ -{ - stdenv -, lib -, cc -, nanos6 ? null -, mcxx ? null -, mpi -, gitBranch -}: - -with lib; -stdenv.mkDerivation rec { - name = "bigsort"; - - src = builtins.fetchGit { - url = "ssh://git@bscpm03.bsc.es/dalvare1/bigsort.git"; - ref = "${gitBranch}"; - }; - - #sourceRoot = "./BigSort"; - - preBuild = '' - cd BigSort - export I_MPI_CXX=${cc.CXX} - ''; - - buildInputs = [ - cc - mpi - ] - ++ optional (mcxx != null) mcxx - ++ optional (nanos6 != null) nanos6; - - makeFlags = [ - "CC=${cc.CC}" - "CXX=${cc.CXX}" - "CPP_BIN=mpicxx" - "CLUSTER=MareNostrum4" - "OPENMP=yes" - "Debug=no" - "OPENMP_FLAGS=-qopenmp" - ]; - - enableParallelBuilding = true; - - installPhase = '' - mkdir -p $out/bin - cp bigsort $out/bin/BigSort - ''; - - programPath = "/bin/BigSort"; - - hardeningDisable = [ "all" ]; -} diff --git a/garlic/apps/bigsort/genseq.nix b/garlic/apps/bigsort/genseq.nix deleted file mode 100644 index 6036467..0000000 --- a/garlic/apps/bigsort/genseq.nix +++ /dev/null @@ -1,46 +0,0 @@ -{ - stdenv -, lib -, cc -, mpi -}: - -with lib; -stdenv.mkDerivation rec { - name = "genseq"; - - src = builtins.fetchGit { - url = "ssh://git@bscpm03.bsc.es/dalvare1/bigsort.git"; - ref = "garlic/mpi+send+omp+task"; - }; - - postUnpack = "sourceRoot=$sourceRoot/GenSeq"; - - # FIXME: Remove the ../commons/Makefile as is not useful here, we only need - # the CPP_SRC and OBJ variables. - postPatch = '' - sed -i '1cCPP_SRC = $(wildcard *.cpp)' Makefile - sed -i '2cOBJ = $(CPP_SRC:.cpp=.o)' Makefile - ''; - - buildInputs = [ - cc - mpi - ]; - - makeFlags = [ - "I_MPI_CXX=${cc.CXX}" - "CPP_BIN=mpicxx" - ]; - - enableParallelBuilding = true; - - installPhase = '' - mkdir -p $out/bin - cp genseq $out/bin/genseq - ''; - - programPath = "/bin/genseq"; - - hardeningDisable = [ "all" ]; -} diff --git a/garlic/apps/bigsort/shuffle.nix b/garlic/apps/bigsort/shuffle.nix deleted file mode 100644 index 977d911..0000000 --- a/garlic/apps/bigsort/shuffle.nix +++ /dev/null @@ -1,46 +0,0 @@ -{ - stdenv -, lib -, cc -, mpi -}: - -with lib; -stdenv.mkDerivation rec { - name = "shuffle"; - - src = builtins.fetchGit { - url = "ssh://git@bscpm03.bsc.es/dalvare1/bigsort.git"; - ref = "garlic/mpi+send+omp+task"; - }; - - postUnpack = "sourceRoot=$sourceRoot/ShuffleSeq"; - - # FIXME: Remove the ../commons/Makefile as is not useful here, we only need - # the CPP_SRC and OBJ variables. - postPatch = '' - sed -i '1cCPP_SRC = $(wildcard *.cpp)' Makefile - sed -i '2cOBJ = $(CPP_SRC:.cpp=.o)' Makefile - ''; - - buildInputs = [ - cc - mpi - ]; - - makeFlags = [ - "I_MPI_CXX=${cc.CXX}" - "CPP_BIN=mpicxx" - ]; - - enableParallelBuilding = true; - - installPhase = '' - mkdir -p $out/bin - cp shuffle $out/bin/shuffle - ''; - - programPath = "/bin/shuffle"; - - hardeningDisable = [ "all" ]; -} diff --git a/garlic/apps/cpic/default.nix b/garlic/apps/cpic/default.nix deleted file mode 100644 index 284c1e9..0000000 --- a/garlic/apps/cpic/default.nix +++ /dev/null @@ -1,43 +0,0 @@ -{ - stdenv -, libconfig -, nanos6 -, mpi -, uthash -, fftw -, tampi -, hdf5 -}: - -stdenv.mkDerivation rec { - name = "cpic"; - - # Use my current cpic version, so I can test changes without commits - #src = /home/Computational/rarias/cpic; - - src = builtins.fetchGit { - url = "https://github.com/rodarima/cpic"; -# rev = "73bd70448587f0925b89e24c8f17e412ea3958e6"; - ref = "simd"; - }; - - enableParallelBuilding = true; - dontStrip = true; - - buildInputs = [ - libconfig - nanos6 - mpi - uthash - fftw - tampi - hdf5 - ]; - - installPhase = '' - mkdir -p $out/bin - cp cpic $out/bin/cpic - ''; - - hardeningDisable = [ "all" ]; -} diff --git a/garlic/apps/creams/default.nix b/garlic/apps/creams/default.nix deleted file mode 100644 index c083886..0000000 --- a/garlic/apps/creams/default.nix +++ /dev/null @@ -1,57 +0,0 @@ -{ - stdenv -, nanos6 -, mpi -, openmpi -, impi -, tampi -, mcxx -, gnuDef -, intelDef -, cc -, gitBranch ? "garlic/mpi+send+seq" -, gitCommit ? null -, garlicTools -}: - -assert (mpi == impi || mpi == openmpi); - -let - # FIXME: We should find a better way to specify the MPI implementation - # and the compiler. - mpiName = if mpi == openmpi then "OpenMPI" else "IntelMPI"; - compName = if cc == intelDef then "Intel" else "GNU"; - - gitSource = garlicTools.fetchGarlicApp { - appName = "creams"; - inherit gitCommit gitBranch; - gitTable = import ./git-table.nix; - }; -in - stdenv.mkDerivation rec { - name = "creams"; - - inherit (gitSource) src gitBranch gitCommit; - - programPath = "/bin/creams.exe"; - - buildInputs = [ nanos6 mpi cc tampi mcxx ]; - - configurePhase = '' - export TAMPI_HOME=${tampi} - - . etc/bashrc - - export FORTRAN_COMPILER=${compName} - export MPI_LIB=${mpiName} - - CREAMS_UPDATE_ENVIRONMENT - ''; - - installPhase = '' - mkdir -p $out/bin - cp -a build/* $out/bin - ''; - - hardeningDisable = [ "all" ]; - } diff --git a/garlic/apps/creams/gen_grid.py b/garlic/apps/creams/gen_grid.py deleted file mode 100755 index 723988b..0000000 --- a/garlic/apps/creams/gen_grid.py +++ /dev/null @@ -1,49 +0,0 @@ -#!/usr/bin/env python3 - -import argparse - -parser = argparse.ArgumentParser(description="Generate a grid.dat input file for CREAMS") - -parser.add_argument('--npx', type=int, help='number of processes in X', default=1) -parser.add_argument('--npy', type=int, help='number of processes in Y', default=1) -parser.add_argument('--npz', type=int, help='number of processes in Z', default=32) -parser.add_argument('--grain', type=int, help='granularity', default=9) -parser.add_argument('--nx', type=int, help='number of points in X', default=20) -parser.add_argument('--ny', type=int, help='number of points in Y', default=20) -parser.add_argument('--nz', type=int, help='number of points in Z', default=7000) -parser.add_argument('--dx', type=float, help='grid spacing in X', default=0.0025062657) -parser.add_argument('--dy', type=float, help='grid spacing in Y', default=0.0025062657) -parser.add_argument('--dz', type=float, help='grid spacing in Z', default=0.0025062657) - -args = parser.parse_args() - -grain_str = "%d %d" % (args.grain, args.grain) -boundary = "extrapolation" - -# Print -print(' %-49d number of processes in x-direction (0 if automatic)' % args.npx) -print(' %-49d number of processes in y-direction (0 if automatic)' % args.npy) -print(' %-49d number of processes in z-direction (0 if automatic)' % args.npz) -print(' ') -print(' %-49s subdomain granularity' % grain_str) -print(' ') -print(' %-49s -x boundary' % boundary) -print(' %-49s +x boundary' % boundary) -print(' %-49s -y boundary' % boundary) -print(' %-49s +y boundary' % boundary) -print(' %-49s -z boundary' % boundary) -print(' %-49s +z boundary' % boundary) -print(' ') -print(' x-direction') -for i in range(args.nx): - print("%.9e" % (i * args.dx)) -print(' ') -print(' y-direction') -for i in range(args.ny): - print("%.9e" % (i * args.dy)) -print(' ') -print(' z-direction') -for i in range(args.nz): - print("%.9e" % (i * args.dz)) -print(' ') -print(' END') diff --git a/garlic/apps/creams/git-table.nix b/garlic/apps/creams/git-table.nix deleted file mode 100644 index 9600240..0000000 --- a/garlic/apps/creams/git-table.nix +++ /dev/null @@ -1,12 +0,0 @@ -{ - # Auto-generated with garlic-git-table on 2021-03-31 for repo: - # ssh://git@bscpm03.bsc.es/pmartin1/creams-simplified.git - - "garlic/mpi+isend+omp+task" = "e6aa540820ee12d3d45d0eef8e7eeb2f0f1daea2"; - "garlic/mpi+isend+oss+task" = "016f33b8bec996a4546e8f08b1b6b1709f00499b"; - "garlic/mpi+send+omp+fork" = "e56e059264ad1bfe5e0c96a8b9303d21dd7fa20a"; - "garlic/mpi+send+omp+task" = "919580213de34bc5b6ba60c768c5dde5e501a1f6"; - "garlic/mpi+send+oss+task" = "adab8b66f27317d51445648302e7b133edf4837d"; - "garlic/mpi+send+seq" = "956125f9334493d31ceee3fa7024efa65bee9ca5"; - "garlic/tampi+isend+oss+task" = "14a121627679a251909d4b8103d260e27eac1d29"; -} diff --git a/garlic/apps/creams/input.nix b/garlic/apps/creams/input.nix deleted file mode 100644 index 5a12f91..0000000 --- a/garlic/apps/creams/input.nix +++ /dev/null @@ -1,48 +0,0 @@ -{ - stdenv -, python3 -, granul ? 9 -, nprocx ? 1 -, nprocy ? 1 -, nprocz ? 1 -, nx ? 20 -, ny ? 20 -, nz ? 7000 -, gitBranch ? "garlic/mpi+send+seq" -, gitCommit ? null -, garlicTools -}: - -let - gitSource = garlicTools.fetchGarlicApp { - appName = "creams"; - inherit gitCommit gitBranch; - gitTable = import ./git-table.nix; - }; - - gen = ./gen_grid.py; -in - stdenv.mkDerivation rec { - name = "creams-input"; - - buildInputs = [ python3 ]; - - inherit (gitSource) src gitBranch gitCommit; - - phases = [ "unpackPhase" "installPhase" ]; - - installPhase = '' - mkdir -p $out - cp -a SodTubeBenchmark $out/ - - python3 ${gen} \ - --npx ${toString nprocx} \ - --npy ${toString nprocy} \ - --npz ${toString nprocz} \ - --grain ${toString granul} \ - --nx ${toString nx} \ - --ny ${toString ny} \ - --nz ${toString nz} \ - > $out/SodTubeBenchmark/grid.dat - ''; - } diff --git a/garlic/apps/fwi/default.nix b/garlic/apps/fwi/default.nix deleted file mode 100644 index 681509a..0000000 --- a/garlic/apps/fwi/default.nix +++ /dev/null @@ -1,77 +0,0 @@ -{ - stdenv -, lib -, mpi ? null -, tampi ? null -, mcxx ? null -, cc -, gitBranch ? "garlic/tampi+send+oss+task" -, gitCommit ? null -, fwiParams -, garlicTools -}: - -with lib; - -assert !(tampi != null && mcxx == null); - -let - gitSource = garlicTools.fetchGarlicApp { - appName = "fwi"; - inherit gitCommit gitBranch; - gitTable = import ./git-table.nix; - }; -in - stdenv.mkDerivation rec { - name = "fwi"; - - inherit (gitSource) src gitBranch gitCommit; - - enableParallelBuilding = false; - - buildInputs = [ - cc - ] - ++ optional (mpi != null) mpi - ++ optional (tampi != null) tampi - ++ optional (mcxx != null) mcxx; - - # FIXME: Correct this on the Makefile so we can just type "make fwi" - # FIXME: Allow multiple MPI implementations - postPatch = '' - sed -i 's/= OPENMPI$/= INTEL/g' Makefile - sed -i 's/USE_O_DIRECT ?= NO/USE_O_DIRECT ?= YES/g' Makefile || true - ''; - - # FIXME: This is an ugly hack. - # When using _GNU_SOURCE or any other definition used in features.h, we need - # to define them before mcc includes nanos6.h from the command line. So the - # only chance is by setting it at the command line with -D. Using the DEFINES - # below, reaches the command line of the preprocessing stage with gcc. - preConfigure = '' - export DEFINES=-D_GNU_SOURCE - - make depend - - cp ${fwiParams}/generated_model_params.h src/ - ''; - - # We compile the ModelGenerator using gcc *only*, as otherwise it will - # be compiled with nanos6, which requires access to /sys to determine - # hardware capabilities. So it will fail in the nix-build environment, - # as there is no /sys mounted. - makeFlags = [ - #"COMPILER=GNU" - #"CC=${cc.cc.CC}" - "fwi" - ]; - - installPhase = '' - mkdir -p $out/bin - cp fwi $out/bin - ''; - - programPath = "/bin/fwi"; - - hardeningDisable = [ "all" ]; - } diff --git a/garlic/apps/fwi/git-table.nix b/garlic/apps/fwi/git-table.nix deleted file mode 100644 index c20adff..0000000 --- a/garlic/apps/fwi/git-table.nix +++ /dev/null @@ -1,15 +0,0 @@ -{ - # Auto-generated with garlic-git-table on 2021-04-19 for repo: - # ssh://git@bscpm03.bsc.es/garlic/apps/fwi.git - - "garlic/mpi+send+omp+fork" = "ea1ed53f20858dc082f9cbbe0e7e8fb28a6fe58a"; - "garlic/mpi+send+omp+task" = "aa8881056fb3fa98832d203899beacfb8fa702f6"; - "garlic/mpi+send+oss+task" = "c184484af8498fd939761575b34bb46ba3be0dde"; - "garlic/mpi+send+oss+task+NOREUSE" = "0062093ef744c694d69673d1881719958bbed353"; - "garlic/mpi+send+seq" = "cc184ad77f143481e2506933d0cdc038c349f071"; - "garlic/omp+task" = "1fe23690d74ae89ace5383ab165a6ce6346c2afd"; - "garlic/oss+task" = "68e6e8f17ee03addb460745acea2a38241ca89ee"; - "garlic/seq" = "aa6b6c5857125796c65fbf23018d557e4693f1ae"; - "garlic/tampi+isend+oss+task" = "7c98194e13786c4e8ecfa8a144587e5a95e09205"; - "garlic/tampi+send+oss+task" = "e08d66f7453c4034a363bb2d22c5248fe86ed740"; -} diff --git a/garlic/apps/fwi/params.nix b/garlic/apps/fwi/params.nix deleted file mode 100644 index 7fad46b..0000000 --- a/garlic/apps/fwi/params.nix +++ /dev/null @@ -1,65 +0,0 @@ -{ - stdenv -, lib -, nz ? 200 -, nx ? 200 -, ny ? 500 -, gitBranch ? "garlic/seq" -, gitCommit ? null -, garlicTools -}: - -with lib; -with builtins; - -let - gitSource = garlicTools.fetchGarlicApp { - appName = "fwi"; - inherit gitCommit gitBranch; - gitTable = import ./git-table.nix; - }; -in - stdenv.mkDerivation rec { - name = "fwi-params"; - - inherit (gitSource) src gitBranch gitCommit; - - enableParallelBuilding = false; - - # Set the input size with the weird order (nz,nx,ny). - postPatch = '' - sed -i 1c${toString nz} SetupParams/fwi_params.txt - sed -i 2c${toString nx} SetupParams/fwi_params.txt - sed -i 3c${toString ny} SetupParams/fwi_params.txt - ''; - - # FIXME: This is an ugly hack. - # When using _GNU_SOURCE or any other definition used in features.h, we need - # to define them before mcc includes nanos6.h from the command line. So the - # only chance is by setting it at the command line with -D. Using the DEFINES - # below, reaches the command line of the preprocessing stage with gcc. - preConfigure = '' - export DEFINES=-D_GNU_SOURCE - ''; - - # We compile the ModelGenerator using gcc *only*, as otherwise it will - # be compiled with nanos6, which requires access to /sys to determine - # hardware capabilities. So it will fail in the nix-build environment, - # as there is no /sys mounted. - # Also, we need to compile it with the builder platform as target, as is going - # to be executed during the build to generate the src/generated_model_params.h - # header. - makeFlags = [ "COMPILER=GNU" "params" ]; - - installPhase = '' - mkdir -p $out/ - cp src/generated_model_params.h $out/ - cp SetupParams/fwi_params.txt $out/ - cp SetupParams/fwi_frequencies.txt $out/ - - mkdir -p $out/bin - cp ModelGenerator $out/bin/ - ''; - - hardeningDisable = [ "all" ]; - } diff --git a/garlic/apps/heat/default.nix b/garlic/apps/heat/default.nix deleted file mode 100644 index 02e8b76..0000000 --- a/garlic/apps/heat/default.nix +++ /dev/null @@ -1,39 +0,0 @@ -{ - stdenv -, mpi -, tampi -, mcxx -, gitBranch ? "garlic/mpi+send+seq" -, gitCommit ? null -, garlicTools -}: - -let - gitSource = garlicTools.fetchGarlicApp { - appName = "heat"; - inherit gitCommit gitBranch; - gitTable = import ./git-table.nix; - }; -in - stdenv.mkDerivation rec { - - name = "heat"; - - inherit (gitSource) src gitBranch gitCommit; - - patches = [ ./print-times.patch ]; - - buildInputs = [ mpi mcxx tampi ]; - - programPath = "/bin/${name}"; - - installPhase = '' - mkdir -p $out/bin - cp ${name} $out/bin/ - - mkdir -p $out/etc - cp heat.conf $out/etc/ - ''; - - hardeningDisable = [ "all" ]; - } diff --git a/garlic/apps/heat/git-table.nix b/garlic/apps/heat/git-table.nix deleted file mode 100644 index c7670ac..0000000 --- a/garlic/apps/heat/git-table.nix +++ /dev/null @@ -1,9 +0,0 @@ -{ - # Auto-generated with garlic-git-table on 2021-04-01 for repo: - # ssh://git@bscpm03.bsc.es/garlic/apps/heat.git - - "garlic/mpi+send+oss+task" = "947c80070d4c53e441df54b8bfac8928b10c5fb2"; - "garlic/mpi+send+seq" = "f41e1433808d0cbecd88a869b451c927747e5d42"; - "garlic/tampi+isend+oss+task" = "b1273f9b4db32ba6e15e3d41343e67407ce2f54f"; - "garlic/tampi+send+oss+task" = "554bec249f9aa23dd92edcfa2ada1e03e05e121d"; -} diff --git a/garlic/apps/heat/print-times.patch b/garlic/apps/heat/print-times.patch deleted file mode 100644 index bf5d28a..0000000 --- a/garlic/apps/heat/print-times.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/src/mpi/main.c b/src/mpi/main.c -index 44f4a99..08a1f5c 100644 ---- a/src/mpi/main.c -+++ b/src/mpi/main.c -@@ -83,6 +83,8 @@ int main(int argc, char **argv) - conf.rows, conf.cols, conf.rows/nranks, totalElements, totalElements/nranks, - conf.rbs, conf.cbs, nranks, threads, conf.timesteps, end-start, throughput); - printf("time %e\n", end - start); -+ printf("start_time %.9f\n", start); -+ printf("end_time %.9f\n", end); - } - - if (conf.generateImage) { diff --git a/garlic/apps/hpccg/default.nix b/garlic/apps/hpccg/default.nix deleted file mode 100644 index bb827a7..0000000 --- a/garlic/apps/hpccg/default.nix +++ /dev/null @@ -1,55 +0,0 @@ -{ - stdenv -, lib -, icc -, mpi ? null -, tampi ? null -, mcxx ? null -, gitBranch ? "garlic/mpi+isend+seq" -, gitCommit ? null -, garlicTools -}: - -assert !(tampi != null && mcxx == null); - -with lib; - -let - gitSource = garlicTools.fetchGarlicApp { - appName = "hpccg"; - inherit gitCommit gitBranch; - gitTable = import ./git-table.nix; - }; -in - stdenv.mkDerivation rec { - name = "hpccg"; - - inherit (gitSource) src gitBranch gitCommit; - - programPath = "/bin/test_HPCCG-mpi.exe"; - - buildInputs = [ - icc - ] - ++ optional (mpi != null) mpi - ++ optional (tampi != null) tampi - ++ optional (mcxx != null) mcxx; - - # The hpccg app fails to compile in parallel. Makefile must be fixed before. - enableParallelBuilding = false; - - makeFlags = [ - "USE_MPI=-DUSING_MPI" - ] - ++ optional (tampi != null) "TAMPI_HOME=${tampi}"; - - dontPatchShebangs = true; - - installPhase = '' - echo ${tampi} - mkdir -p $out/bin - cp test_HPCCG-mpi.exe $out/bin - ''; - - hardeningDisable = [ "all" ]; - } diff --git a/garlic/apps/hpccg/git-table.nix b/garlic/apps/hpccg/git-table.nix deleted file mode 100644 index 507dab2..0000000 --- a/garlic/apps/hpccg/git-table.nix +++ /dev/null @@ -1,9 +0,0 @@ -{ - # Auto-generated with garlic-git-table on 2021-04-20 for repo: - # ssh://git@bscpm03.bsc.es/garlic/apps/hpccg.git - - "garlic/mpi+isend+omp+fork" = "c84af0480d231961201f2904ee4e3fced9d5f9be"; - "garlic/mpi+isend+seq" = "d1b47cd459440700de1b68233ec4fe794343dbd4"; - "garlic/tampi+isend+oss+task" = "7238e9be2e4a7b028abc05d40b476462eaa3de6a"; - "garlic/tampi+isend+oss+taskfor" = "02ec60f43b8d68d74575ea0563a9029fd441f1f1"; -} diff --git a/garlic/apps/hpcg/default.nix b/garlic/apps/hpcg/default.nix deleted file mode 100644 index 245012e..0000000 --- a/garlic/apps/hpcg/default.nix +++ /dev/null @@ -1,44 +0,0 @@ -{ - stdenv -, cc -, nanos6 -, mcxx -, mpi -, tampi -, gitBranch ? "garlic/seq" -, gitCommit ? null -, garlicTools -}: - -let - gitSource = garlicTools.fetchGarlicApp { - appName = "hpcg"; - inherit gitCommit gitBranch; - gitTable = import ./git-table.nix; - }; -in - stdenv.mkDerivation rec { - name = "hpcg"; - - inherit (gitSource) src gitBranch gitCommit; - - buildInputs = [ - cc nanos6 mcxx mpi tampi - ]; - - makeFlags = [ - "CC=${cc.CC}" - "CXX=${cc.CXX}" - ]; - - enableParallelBuilding = true; - - installPhase = '' - mkdir -p $out/bin - cp bin/* $out/bin/ - ''; - - programPath = "/bin/xhpcg"; - - hardeningDisable = [ "all" ]; - } diff --git a/garlic/apps/hpcg/git-table.nix b/garlic/apps/hpcg/git-table.nix deleted file mode 100644 index 0aa1fc8..0000000 --- a/garlic/apps/hpcg/git-table.nix +++ /dev/null @@ -1,18 +0,0 @@ -{ - # Auto-generated with garlic-git-table on 2021-04-20 for repo: - # ssh://git@bscpm03.bsc.es/garlic/apps/hpcg.git - - "garlic/mpi" = "8c94ccfd97518ed947bd6be3386260b72fdcdff2"; - "garlic/mpi+SAVEMAT" = "5dd2ad9eba13dba67086f46c6e8519804d837383"; - "garlic/mpi+omp" = "d24c372dd9fda584e711efb612f172e5c3602804"; - "garlic/mpi+oss" = "519a867bb3a3e07440df05e60a62abad764524e5"; - "garlic/mpi+send+omp+fork" = "a08d31aedbc108e1c0081cdc5021827ac9022688"; - "garlic/omp" = "dcc8a40831cda884b9240af47e883ac997150ed3"; - "garlic/omp+SAVEMAT" = "40dbac86c905e192ecc8146e0e65e4c3a3c6dbf8"; - "garlic/omp+fork" = "042752b3dbcd9b0f4db524b6cdc911278ee1a51b"; - "garlic/omp+initsplit" = "5370e7ee26fb72ef100a79624f73ed2baa6bcc79"; - "garlic/oss" = "7e6e2d969b7904572f2475bf471e637651337761"; - "garlic/oss+task" = "034940756ccab88876609c3cba4dea0a0f5c944b"; - "garlic/seq" = "dee225571ab2572d7aa51df9846b01237ee941a1"; - "garlic/tampi+isend+oss+task" = "449a3980a767f91ca65d429490080961dcfba498"; -} diff --git a/garlic/apps/hpcg/tampi.patch b/garlic/apps/hpcg/tampi.patch deleted file mode 100644 index c233dfc..0000000 --- a/garlic/apps/hpcg/tampi.patch +++ /dev/null @@ -1,13 +0,0 @@ ---- a/setup/Make.MPI_ICPC_OSS 2020-07-13 16:02:33.272257865 +0200 -+++ b/setup/Make.MPI_ICPC_OSS 2020-07-13 16:04:34.344413390 +0200 -@@ -91,8 +91,8 @@ - # - HPCG includes / libraries / specifics ------------------------------- - # ---------------------------------------------------------------------- - # --HPCG_INCLUDES = -I$(INCdir) -I$(INCdir)/$(arch) $(MPinc) -I{TAMPI_HOME}/include --HPCG_LIBS = ${TAMPI_HOME}/lib/libtampi.a -+HPCG_INCLUDES = -I$(INCdir) -I$(INCdir)/$(arch) $(MPinc) -I$(TAMPI_HOME)/include -+HPCG_LIBS = -l:libtampi.a - # - # - Compile time options ----------------------------------------------- - # diff --git a/garlic/apps/ifsker/default.nix b/garlic/apps/ifsker/default.nix deleted file mode 100644 index b575364..0000000 --- a/garlic/apps/ifsker/default.nix +++ /dev/null @@ -1,60 +0,0 @@ -{ - stdenv -, lib -, mpi -, gfortran -, tampi -, nanos6 -, mcxx -, gitBranch ? "garlic/mpi+isend+seq" -, gitCommit ? null -, garlicTools -}: - -with lib; - -let - gitSource = garlicTools.fetchGarlicApp { - appName = "ifsker"; - inherit gitCommit gitBranch; - gitTable = import ./git-table.nix; - }; -in - stdenv.mkDerivation rec { - name = "ifsker"; - - inherit (gitSource) src gitBranch gitCommit; - - buildInputs = [ tampi mpi nanos6 mcxx gfortran ]; - - # Mercurium seems to fail when building with fortran in parallel - enableParallelBuilding = false; - - # FIXME: Patch mcxx to use other directory than $HOME for the lock - # files. - preConfigure = '' - export TAMPI_HOME=${tampi} - - # $HOME is required for the lock files by mcxx to compile fortran. - # So we use the $TMPDIR to store them. - export HOME=$TMPDIR - ''; - - makeFlags = [ - "-f" "Makefile.gcc" - ]; - - - installPhase = '' - mkdir -p $out/bin - cp ${name} $out/bin/ - - mkdir -p $out/etc - cp -r data $out/etc/ - cp nanos6.toml $out/etc - ''; - - programPath = "/bin/${name}"; - - hardeningDisable = [ "all" ]; - } diff --git a/garlic/apps/ifsker/git-table.nix b/garlic/apps/ifsker/git-table.nix deleted file mode 100644 index 0242708..0000000 --- a/garlic/apps/ifsker/git-table.nix +++ /dev/null @@ -1,10 +0,0 @@ -{ - # Auto-generated with garlic-git-table on 2021-04-20 for repo: - # ssh://git@bscpm03.bsc.es/garlic/apps/ifsker.git - - "garlic/mpi+isend+oss+fork" = "a6a20303101cb140571ddc1166e66843fbe83017"; - "garlic/mpi+isend+oss+task" = "a7bdb6c9b57aafbc50cdc790eb42e5bdd850f213"; - "garlic/mpi+isend+seq" = "bc97cf30835bbf6a825209485bb96fc8314e5bcb"; - "garlic/tampi+isend+oss+task" = "33408215bc231b70b60733fddea3d1b7431bb0d1"; - "garlic/tampi+send+oss+task" = "19dae956b4ef69916c0e8ad15bb6ced0085275cd"; -} diff --git a/garlic/apps/index.nix b/garlic/apps/index.nix deleted file mode 100644 index c0e2d4d..0000000 --- a/garlic/apps/index.nix +++ /dev/null @@ -1,55 +0,0 @@ -{ - super -, self -, bsc -, garlic -, callPackage -}: - -{ - nbody = callPackage ./nbody/default.nix { }; - - saiph = callPackage ./saiph/default.nix { - cc = bsc.clangOmpss2; - L3SizeKB = garlic.targetMachine.config.hw.cacheSizeKB.L3; - cachelineBytes = garlic.targetMachine.config.hw.cachelineBytes; - }; - - creams = callPackage ./creams/default.nix { - gnuDef = self.gfortran10 ; # Default GNU compiler version - intelDef = bsc.icc ; # Default Intel compiler version - }; - - creamsInput = callPackage ./creams/input.nix { }; - - hpcg = callPackage ./hpcg/default.nix { }; - - bigsort = { - sort = callPackage ./bigsort/default.nix { - gitBranch = "garlic/mpi+send+omp+task"; - }; - - genseq = callPackage ./bigsort/genseq.nix { }; - - shuffle = callPackage ./bigsort/shuffle.nix { }; - }; - - heat = callPackage ./heat/default.nix { }; - - miniamr = callPackage ./miniamr/default.nix { - variant = "ompss-2"; - }; - - ifsker = callPackage ./ifsker/default.nix { }; - - lulesh = callPackage ./lulesh/default.nix { }; - - hpccg = callPackage ./hpccg/default.nix { }; - - fwi = rec { - params = callPackage ./fwi/params.nix { }; - solver = callPackage ./fwi/default.nix { - fwiParams = params; - }; - }; -} diff --git a/garlic/apps/lulesh/default.nix b/garlic/apps/lulesh/default.nix deleted file mode 100644 index 8f64682..0000000 --- a/garlic/apps/lulesh/default.nix +++ /dev/null @@ -1,48 +0,0 @@ -{ - stdenv -, lib -, impi -, mcxx -, icc -, tampi ? null -, gitBranch ? "garlic/mpi+isend+seq" -, gitCommit ? null -, garlicTools -}: - -with lib; - -let - gitSource = garlicTools.fetchGarlicApp { - appName = "lulesh"; - inherit gitCommit gitBranch; - gitTable = import ./git-table.nix; - }; -in - stdenv.mkDerivation rec { - name = "lulesh"; - - inherit (gitSource) src gitBranch gitCommit; - - dontConfigure = true; - - preBuild = optionalString (tampi != null) "export TAMPI_HOME=${tampi}"; - - #TODO: Allow multiple MPI implementations and compilers - buildInputs = [ - impi - icc - mcxx - ]; - - enableParallelBuilding = true; - - #TODO: Can we build an executable named "lulesh" in all branches? - installPhase = '' - mkdir -p $out/bin - find . -name 'lulesh*' -type f -executable -exec cp \{\} $out/bin/${name} \; - ''; - programPath = "/bin/${name}"; - - hardeningDisable = [ "all" ]; - } diff --git a/garlic/apps/lulesh/git-table.nix b/garlic/apps/lulesh/git-table.nix deleted file mode 100644 index 49c2bba..0000000 --- a/garlic/apps/lulesh/git-table.nix +++ /dev/null @@ -1,12 +0,0 @@ -{ - # Auto-generated with garlic-git-table on 2021-04-20 for repo: - # ssh://git@bscpm03.bsc.es/garlic/apps/lulesh.git - - "garlic/mpi+isend+omp+fork" = "6cc85c55cb4840d6cde12bb285f5ab1ae7878618"; - "garlic/mpi+isend+oss+task" = "0a9e2cd1d64ab4fcf1860ace02866278ad289637"; - "garlic/mpi+isend+seq" = "9df5475c7dd2b345559fae5bd07ceea38f2e7b91"; - "garlic/tampi+isend+oss+task" = "28ce0cd69f9b4e65eff8141ec455d5f60e9b98b3"; - "garlic/tampi+isend+oss+taskfor" = "928f315ea426585a32231d950da651399e48d762"; - "garlic/tampi+isend+oss+taskloop" = "7957c1a2c84ae80edddcec9eafe7efdeefa68d58"; - "garlic/tampi+isend+oss+taskloopfor" = "7efa0535130a6726f5a46669cf171412d21adc9b"; -} diff --git a/garlic/apps/miniamr/default.nix b/garlic/apps/miniamr/default.nix deleted file mode 100644 index a014a73..0000000 --- a/garlic/apps/miniamr/default.nix +++ /dev/null @@ -1,48 +0,0 @@ -{ - stdenv -, lib -, tampi -, clangOmpss2 -, mpi -, nanos6 -, mcxx -, variant -}: - -with lib; - -assert (assertOneOf "variant" variant [ "openmp" "openmp-tasks" "ompss-2" ]); - -let - cc=mcxx; -in -stdenv.mkDerivation rec { - name = "miniamr"; - - src = builtins.fetchGit { - url = "ssh://git@bscpm03.bsc.es/ksala/miniamr.git"; - ref = "master"; - }; - - postUnpack = '' - sourceRoot=$sourceRoot/${variant} - ''; - - buildInputs = [ tampi clangOmpss2 mpi nanos6 mcxx ]; - - makeFlags = [ - "CC=${cc.CC}" - "CXX=${cc.CXX}" - ]; - - enableParallelBuilding = true; - - installPhase = '' - mkdir -p $out/bin - cp miniAMR.x $out/bin/ - ''; - - programPath = "/bin/miniAMR.x"; - - hardeningDisable = [ "all" ]; -} diff --git a/garlic/apps/nbody/default.nix b/garlic/apps/nbody/default.nix deleted file mode 100644 index d5de8ce..0000000 --- a/garlic/apps/nbody/default.nix +++ /dev/null @@ -1,59 +0,0 @@ -{ - stdenv -, lib -, cc -, mpi ? null -, tampi ? null -, mcxx ? null -, cflags ? null -, gitBranch ? "garlic/seq" -, gitCommit ? null -, blocksize ? 2048 -, garlicTools -}: - -assert !(tampi != null && mcxx == null); - -with lib; - -let - gitSource = garlicTools.fetchGarlicApp { - appName = "nbody"; - inherit gitCommit gitBranch; - gitTable = import ./git-table.nix; - }; -in - stdenv.mkDerivation rec { - name = "nbody"; - - inherit (gitSource) src gitBranch gitCommit; - - programPath = "/bin/nbody"; - - buildInputs = [ - cc - ] - ++ optional (mpi != null) mpi - ++ optional (tampi != null) tampi - ++ optional (mcxx != null) mcxx; - - preBuild = (if cflags != null then '' - makeFlagsArray+=(CFLAGS="${cflags}") - '' else ""); - - makeFlags = [ - "CC=${cc.CC}" - "BS=${toString blocksize}" - ] - ++ optional (tampi != null) "TAMPI_HOME=${tampi}"; - - dontPatchShebangs = true; - - installPhase = '' - echo ${tampi} - mkdir -p $out/bin - cp nbody* $out/bin/${name} - ''; - - hardeningDisable = [ "all" ]; - } diff --git a/garlic/apps/nbody/git-table.nix b/garlic/apps/nbody/git-table.nix deleted file mode 100644 index e824251..0000000 --- a/garlic/apps/nbody/git-table.nix +++ /dev/null @@ -1,13 +0,0 @@ -{ - # Auto-generated with garlic-git-table on 2021-04-20 for repo: - # ssh://git@bscpm03.bsc.es/garlic/apps/nbody.git - - "garlic/mpi+send+oss+task" = "20aa856baa3268d99262588807911ad0b3318d09"; - "garlic/mpi+send+seq" = "3be64af0f949db5fd60fcd0334cf2cd8c9fa25c3"; - "garlic/omp+fork" = "9c869272df7c775f467a2220211a414e33321c00"; - "garlic/oss+task" = "13ab26fbad8662a1052cc94410386080bbf6a2ba"; - "garlic/seq" = "9dfea29189d14477bd75e6f741f0518e7e4e5e72"; - "garlic/seq+BLOCK" = "99408705628b374df4308dcf1cdbe2d21d1451c2"; - "garlic/tampi+isend+oss+task" = "653d26e4a0913d36ea18d4e72e65a04838bb138a"; - "garlic/tampi+send+oss+task" = "b1440ebc5f79165e5dfaa6a4ce7916eda410ec9a"; -} diff --git a/garlic/apps/ppong/default.nix b/garlic/apps/ppong/default.nix deleted file mode 100644 index 09a72a4..0000000 --- a/garlic/apps/ppong/default.nix +++ /dev/null @@ -1,35 +0,0 @@ -{ - stdenv -, mpi -, fetchurl -}: - -stdenv.mkDerivation { - name = "ppong"; - - src = fetchurl { - url = "http://www.csl.mtu.edu/cs4331/common/PPong.c"; - sha256 = "0d1w72gq9627448cb7ykknhgp2wszwd117dlbalbrpf7d0la8yc0"; - }; - - unpackCmd = '' - mkdir src - cp $src src/ppong.c - ''; - - dontConfigure = true; - - buildPhase = '' - echo mpicc -include stdlib.h ppong.c -o ppong - mpicc -include stdlib.h ppong.c -o ppong - ''; - - installPhase = '' - mkdir -p $out/bin - cp ppong $out/bin/ppong - ln -s $out/bin/ppong $out/bin/run - ''; - - buildInputs = [ mpi ]; - hardeningDisable = [ "all" ]; -} diff --git a/garlic/apps/saiph/default.nix b/garlic/apps/saiph/default.nix deleted file mode 100644 index bb81c89..0000000 --- a/garlic/apps/saiph/default.nix +++ /dev/null @@ -1,106 +0,0 @@ -{ - stdenv -, lib -, nanos6 -, mpi -, tampi -, cc -, vtk -, boost -, gitBranch ? "master" -, gitCommit ? null -, enableManualDist ? false -, nbgx ? null -, nbgy ? null -, nbgz ? null -, nblx ? null -, nbly ? null -, nblz ? null -, nsteps ? null -, numComm ? null -, enableVectFlags ? false -, enableDebugFlags ? false -, enableAsanFlags ? false -, cachelineBytes ? null -, L3SizeKB ? null -# Problem size: -, sizex ? 3 -, sizey ? 4 -, sizez ? 4 -, garlicTools -}: - -assert enableManualDist -> (nbgx != null); -assert enableManualDist -> (nbgy != null); -assert enableManualDist -> (nbgz != null); - -with lib; -with lib.versions; - -let - gitSource = garlicTools.fetchGarlicApp { - appName = "saiph"; - inherit gitCommit gitBranch; - gitTable = import ./git-table.nix; - }; -in - stdenv.mkDerivation rec { - name = "saiph"; - - inherit (gitSource) src gitBranch gitCommit; - - programPath = "/bin/Heat3D_vect"; - - enableParallelBuilding = true; - dontStrip = true; - enableDebugging = true; - - buildInputs = [ - nanos6 - mpi - tampi - cc - vtk - boost - ]; - - preBuild = '' - cd saiphv2/cpp/src - export VTK_VERSION=${majorMinor (getVersion vtk.name)} - export VTK_HOME=${vtk} - make clean - - sed -i '/SIZEX =/s/3/${toString sizex}/g' testApp/Heat3D_vect.cpp - sed -i '/SIZEY =/s/4/${toString sizey}/g' testApp/Heat3D_vect.cpp - sed -i '/SIZEZ =/s/4/${toString sizez}/g' testApp/Heat3D_vect.cpp - ''; - - makeFlags = [ - "-f" "Makefile.${cc.CC}" - "apps" - "APP=Heat3D_vect" - ] ++ optional (cachelineBytes != null) "ROW_ALIGNMENT=${toString cachelineBytes}" - ++ optional (L3SizeKB != null) "L3_SIZE_K=${toString L3SizeKB}" - ++ optional (enableManualDist) "DIST_SET=1" - ++ optional (enableManualDist) "NBG_X=${toString nbgx}" - ++ optional (enableManualDist) "NBG_Y=${toString nbgy}" - ++ optional (enableManualDist) "NBG_Z=${toString nbgz}" - ++ optional (nblx != null) "NBL_X=${toString nblx}" - ++ optional (nbly != null) "NBL_Y=${toString nbly}" - ++ optional (nblz != null) "NBL_Z=${toString nblz}" - ++ optional (nsteps != null) "NSTEPS=${toString nsteps}" - ++ optional (numComm != null) "NUM_COMM=${toString numComm}" - ++ optional (enableVectFlags) "VECT_CHECKS=1" - ++ optional (enableDebugFlags) "DEBUG_CHECKS=1" - ++ optional (enableAsanFlags) "SANITIZE_CHECKS=1" - ; - - installPhase = '' - mkdir -p $out/lib - mkdir -p $out/bin - cp obj/libsaiphv2.so $out/lib/ - cp bin/Heat3D_vect $out/bin/ - ''; - - hardeningDisable = [ "all" ]; - } diff --git a/garlic/apps/saiph/git-table.nix b/garlic/apps/saiph/git-table.nix deleted file mode 100644 index 13cc477..0000000 --- a/garlic/apps/saiph/git-table.nix +++ /dev/null @@ -1,10 +0,0 @@ -{ - # Auto-generated with garlic-git-table on 2021-04-19 for repo: - # ssh://git@bscpm03.bsc.es/garlic/apps/saiph.git - - "garlic/mpi+isend+omp+fork+simd" = "96823846b327b6860f05d428f0cd5ed8ca537a0e"; - "garlic/mpi+isend+omp+task+simd" = "de0346a559120f561bff554aa86b34d01214b714"; - "garlic/mpi+isend+seq+simd" = "1411dad765231f5d3cec9f621526583974232d42"; - "garlic/tampi+isend+omp+task+simd" = "587a7651df8eb69cae4a79bdfc5cb7f50723f3ce"; - "garlic/tampi+isend+oss+task+simd" = "3731197d3e35df248fa6bdb7e4cb05c5dd4f2597"; -} diff --git a/garlic/bundleReport.nix b/garlic/bundleReport.nix deleted file mode 100644 index fd84775..0000000 --- a/garlic/bundleReport.nix +++ /dev/null @@ -1,31 +0,0 @@ -{ - stdenv -, fig -}: - -stdenv.mkDerivation { - name = "report.tar.gz"; - src = ./report; - buildPhase = '' - pwd - ls -l - grep -o '@[^ @]*@' report.tex | sed 's/@//g' | sort -u > list - - echo "fig:" > fun.nix - echo "'''" >> fun.nix - for line in $(cat list); do - localPath=$(echo $line | tr '.' '/') - echo "mkdir -p $localPath" >> fun.nix - echo "cp -r \''${$line}/* $localPath" >> fun.nix - echo "sed -i 's;@$line@;$localPath;g' report.tex" >> fun.nix - done - echo "'''" >> fun.nix - - echo " ---------- this is the fun.nix -------------" - cat fun.nix - echo " --------------------------------------------" - ''; - installPhase = '' - cp fun.nix $out - ''; -} diff --git a/garlic/default.nix b/garlic/default.nix deleted file mode 100644 index af0a194..0000000 --- a/garlic/default.nix +++ /dev/null @@ -1 +0,0 @@ -import ../default.nix diff --git a/garlic/develop/default.nix b/garlic/develop/default.nix deleted file mode 100644 index 6ea0930..0000000 --- a/garlic/develop/default.nix +++ /dev/null @@ -1,58 +0,0 @@ -{ - stdenv -, bash -, bashInteractive -, busybox -, extraInputs ? [] -}: - -let - inputrc = ./inputrc; -in -stdenv.mkDerivation { - name = "develop"; - preferLocalBuild = true; - phases = [ "installPhase" ]; - buildInputs = extraInputs ++ [ busybox ]; - installPhase = '' - cat > $out < $@ - -%.html: %.ms Makefile - mkdir -p img - REFER=ref.i groff -ms -mwww $(HTML_OPT) $< > $@ - echo $(HTML_OPT) - sed -i '/<\/head>/i' $@ - sed -i 's/^<\/a>/\§<\/a>/g' $@ - #sed -i '/

/s/^ $@ - -killall -HUP mupdf - -%.utf8: %.ms - REFER=ref.i groff -ms -mwww $(PREPROC) $(TTYOPT) -Tutf8 $^ > $@ - -%.ascii: %.ms - REFER=ref.i groff -ms -mwww -c $(PREPROC) $(TTYOPT) -Tascii $^ > $@ - -doc.tar.gz: ug.pdf ug.html s.css - tar czf $@ $^ img s.css - -clean: - rm -rf img ug.pdf ug.html doc.tar.gz diff --git a/garlic/doc/blackbox.ms b/garlic/doc/blackbox.ms deleted file mode 100644 index 313a0f5..0000000 --- a/garlic/doc/blackbox.ms +++ /dev/null @@ -1,40 +0,0 @@ -.\" Use helvetica family -.fam H -.PS -moveht=0.1 -boxwid=1 -sht=boxht + 0.1 -hspace = boxwid + 0.2 -right -G: [ - boxwid=1 - extrawid=1.8 - right - A: box "nix"; arrow; - B1: box wid extrawid "App source code" "PM branch, defines..."; - move to (A.sw.x, A.y - boxht - moveht) - A: box "garlic/nix"; arrow; - B2: box wid extrawid "App run config" "Input size, algorithm..."; - move to (A.sw.x, A.y - boxht - moveht) - A: box "garlic/nix"; arrow; - B3: box wid extrawid "Build config" "MPI impl, O3, CC version..."; - move to (A.sw.x, A.y - boxht - moveht) - A: box "garlic/nix"; arrow; - B4: box wid extrawid "Run config" "Nodes, affinity"; - move to (A.sw.x, A.y - boxht - moveht) - A: box "MN4"; arrow; - B5: box wid extrawid "Hardware" "Cache size, intercomm..."; -] -movewid=1 -move -circlerad=0.4 -E: circle "Execution" -arrow -box "Result" -rspline = 0.5 -arrow from G.B1.e to E chop 0 chop circlerad -arrow from G.B2.e to E chop 0 chop circlerad -arrow from G.B3.e to E chop 0 chop circlerad -arrow from G.B4.e to E chop 0 chop circlerad -arrow from G.B5.e to E chop 0 chop circlerad -.PE diff --git a/garlic/doc/branch.ms b/garlic/doc/branch.ms deleted file mode 100644 index b4e6216..0000000 --- a/garlic/doc/branch.ms +++ /dev/null @@ -1,22 +0,0 @@ -.\".fam CMU -.\".TL -.\"Garlic: git branch name -.\".AU -.\"Rodrigo Arias Mallo -.\".AI -.\"Barcelona Supercomputing Center -.\"##################################################################### -.nr GROWPS 3 -.nr PSINCR 1.5p -.\".nr PD 0.5m -.nr PI 2m -\".2C -.\"##################################################################### -\".NH 1 -\"Instructions -\".LP -\"To name a branch of a program, please follow the flowchart below. -.ps -2 -.PS 5/25.4 -copy "gitbranch.pic" -.PE diff --git a/garlic/doc/execution.ms b/garlic/doc/execution.ms deleted file mode 100644 index 81742d3..0000000 --- a/garlic/doc/execution.ms +++ /dev/null @@ -1,254 +0,0 @@ -.TL -Garlic: the execution pipeline -.AU -Rodrigo Arias Mallo -.AI -Barcelona Supercomputing Center -.AB -.LP -This document covers the execution of experiments in the Garlic -benchmark, which are performed under strict conditions. The several -stages of the execution are documented so the experimenter can have a -global overview of how the benchmark runs under the hood. -The results of the experiment are stored in a known path to be used in -posterior processing steps. -.AE -.\"##################################################################### -.nr GROWPS 3 -.nr PSINCR 1.5p -.\".nr PD 0.5m -.nr PI 2m -\".2C -.\"##################################################################### -.NH 1 -Introduction -.LP -Every experiment in the Garlic -benchmark is controlled by a single -.I nix -file placed in the -.CW garlic/exp -subdirectory. -Experiments are formed by several -.I "experimental units" -or simply -.I units . -A unit is the result of each unique configuration of the experiment -(typically involves the cartesian product of all factors) and -consists of several shell scripts executed sequentially to setup the -.I "execution environment" , -which finally launch the actual program being analyzed. -The scripts that prepare the environment and the program itself are -called the -.I stages -of the execution and altogether form the -.I "execution pipeline" -or simply the -.I pipeline . -The experimenter must know with very good details all the stages -involved in the pipeline, as they have a large impact on the execution. -.PP -Additionally, the execution time is impacted by the target machine in -which the experiments run. The software used for the benchmark is -carefully configured and tuned for the hardware used in the execution; -in particular, the experiments are designed to run in MareNostrum 4 -cluster with the SLURM workload manager and the Omni-Path -interconnection network. In the future we plan to add -support for other clusters in order to execute the experiments in other -machines. -.\"##################################################################### -.NH 1 -Isolation -.LP -The benchmark is designed so that both the compilation of every software -package and the execution of the experiment is performed under strict -conditions. We can ensure that two executions of the same experiment are -actually running the same program in the same software environment. -.PP -All the software used by an experiment is included in the -.I "nix store" -which is, by convention, located at the -.CW /nix -directory. Unfortunately, it is common for libraries to try to load -software from other paths like -.CW /usr -or -.CW /lib . -It is also common that configuration files are loaded from -.CW /etc -and from the home directory of the user that runs the experiment. -Additionally, some environment variables are recognized by the libraries -used in the experiment, which change their behavior. As we cannot -control the software and configuration files in those directories, we -couldn't guarantee that the execution behaves as intended. -.PP -In order to avoid this problem, we create a -.I sandbox -where only the files in the nix store are available (with some other -exceptions). Therefore, even if the libraries try to access any path -outside the nix store, they will find that the files are not there -anymore. Additionally, the environment variables are cleared before -entering the environment (with some exceptions as well). -.\"##################################################################### -.NH 1 -Execution pipeline -.LP -Several predefined stages form the -.I standard -execution pipeline and are defined in the -.I stdPipeline -array. The standard pipeline prepares the resources and the environment -to run a program (usually in parallel) in the compute nodes. It is -divided in two main parts: -connecting to the target machine to submit a job and executing the job. -Finally, the complete execution pipeline ends by running the actual -program, which is not part of the standard pipeline, as should be -defined differently for each program. -.NH 2 -Job submission -.LP -Some stages are involved in the job submission: the -.I trebuchet -stage connects via -.I ssh -to the target machine and executes the next stage there. Once in the -target machine, the -.I runexp -stage computes the output path to store the experiment results, using -the user in the target machine and changes the working directory there. -In MareNostrum 4 the output path is at -.CW /gpfs/projects/bsc15/garlic/$user/out . -Then the -.I isolate -stage is executed to enter the sandbox and the -.I experiment -stage begins, which creates a directory to store the experiment output, -and launches several -.I unit -stages. -.PP -Each unit executes a -.I sbatch -stage which runs the -.I sbatch(1) -program with a job script that simply calls the next stage. The -sbatch program internally reads the -.CW /etc/slurm/slurm.conf -file from outside the sandbox, so we must explicitly allow this file to -be available, as well as the -.I munge -socket used for authentication by the SLURM daemon. Once the jobs are -submitted to SLURM, the experiment stage ends and the trebuchet finishes -the execution. The jobs will be queued for execution without any other -intervention from the user. -.PP -The rationale behind running sbatch from the sandbox is because the -options provided in environment variables override the options from the -job script. Therefore, we avoid this problem by running sbatch from the -sandbox, where the interfering environment variables are removed. The -sbatch program is also provided in the -.I "nix store" , -with a version compatible with the SLURM daemon running in the target -machine. -.NH 2 -Job execution -.LP -Once an unit job has been selected for execution, SLURM -allocates the resources (usually several nodes) and then selects one of -the nodes to run the job script: it is not executed in parallel yet. -The job script runs from a child process forked from on of the SLURM -daemon processes, which are outside the sandbox. Therefore, we first run the -.I isolate -stage -to enter the sandbox again. -.PP -The next stage is called -.I control -and determines if enough data has been generated by the experiment unit -or if it should continue repeating the execution. At the current time, -it is only implemented as a simple loop that runs the next stage a fixed -amount of times (by default, it is repeated 30 times). -.PP -The following stage is -.I srun -which launches several copies of the next stage to run in -parallel (when using more than one task). Runs one copy per task, -effectively creating one process per task. The CPUs affinity is -configured by the parameter -.I --cpu-bind -and is important to set it correctly (see more details in the -.I srun(1) -manual). Appending the -.I verbose -value to the cpu bind option causes srun to print the assigned affinity -of each task, which is very valuable when examining the execution log. -.PP -The mechanism by which srun executes multiple processes is the same used -by sbatch, it forks from a SLURM daemon running in the computing nodes. -Therefore, the execution begins outside the sandbox. The next stage is -.I isolate -which enters again the sandbox in every task. All remaining stages are -running now in parallel. -.\" ################################################################### -.NH 2 -The program -.LP -At this point in the execution, the standard pipeline has been -completely executed, and we are ready to run the actual program that is -the matter of the experiment. Usually, programs require some arguments -to be passed in the command line. The -.I exec -stage sets the arguments (and optionally some environment variables) and -executes the last stage, the -.I program . -.PP -The experimenters are required to define these last stages, as they -define the specific way in which the program must be executed. -Additional stages may be included before or after the program run, so -they can perform additional steps. -.\" ################################################################### -.NH 2 -Stage overview -.LP -The complete execution pipeline using the standard pipeline is shown in -the Table 1. Some properties are also reflected about the execution -stages. -.KF -.TS -center; -lB cB cB cB cB cB -l c c c c c. -_ -Stage Target Safe Copies User Std -_ -trebuchet xeon no no yes yes -runexp login no no yes yes -isolate login no no no yes -experiment login yes no no yes -unit login yes no no yes -sbatch login yes no no yes -_ -isolate comp no no no yes -control comp yes no no yes -srun comp yes no no yes -isolate comp no yes no yes -_ -exec comp yes yes no no -program comp yes yes no no -_ -.TE -.QS -.B "Table 1" : -The stages of a complete execution pipeline. The -.B target -column determines where the stage is running, -.B safe -states if the stage begins the execution inside the sandbox, -.B user -if it can be executed directly by the user, -.B copies -if there are several instances running in parallel and -.B std -if is part of the standard execution pipeline. -.QE -.KE diff --git a/garlic/doc/gitbranch.pic b/garlic/doc/gitbranch.pic deleted file mode 100644 index 939e926..0000000 --- a/garlic/doc/gitbranch.pic +++ /dev/null @@ -1,152 +0,0 @@ -#.ps -3 -#.fam CMU -#.PS 4.5/25.4 # Scale drawing to 20/25.4 in = -# = 20/25.4[in]/25.4[mm/in] = 20 mm -# FLOWCHART - Basic flow chart blocks. -scale=25.4 #Scale units from inches to mm -csize=2.0 #Cell size in mm -pstricks=0 -dx=0; dy=2; -define process -{[ - box $1; -]} -# decision(): rhomboid -> if block -define decision {[ - boxwid=boxwid*1.2 - boxht=boxht*1.2 - B: box invis $1; - line from B.n to B.e to B.s to B.w to B.n; -]} - -#--- END OF MACROS --- -boxwid=30 -fillval=1 -circlerad=10 -down -START: circle "Start" -arrow -D_MPIB: decision("MPI-based?") -arrow " Yes" ljust -D_TAMPI: decision("TAMPI?") -arrow " Yes" ljust -TAMPI: process("\fB+tampi\fP") -right -move to D_TAMPI.e -arrow "No" above -D_MPI: decision("MPI?") -down -move to D_MPI.s -arrow " Yes" ljust -MPI: process("\fB+mpi\fP") -move to TAMPI.s -A_TAMPI: arrow linewid -line from MPI.s to MPI.c - (0,boxht) \ - to A_TAMPI.c -circle at A_TAMPI.c rad 0.7 filled -move at A_TAMPI -D_ISEND: decision("MPI_Isend()?") -arrow " Yes" ljust -ISEND: process("\fB+isend\fP") -A_ISEND: arrow -right -move to D_ISEND.e -arrow "No" above -D_SEND: decision("MPI_Send()?") -down -move to D_SEND.s -arrow " Yes" ljust -SEND: process("\fB+send\fP") -right -move to D_SEND.e -arrow "No" above -D_RMA: decision("MPI_Get()?") -down -move to D_RMA.s -arrow " Yes" ljust -RMA: process("\fB+rma\fP") -line "No" above from D_MPIB.w to D_MPIB.w - (boxwid,0) -line to (D_MPIB.w.x-boxwid, A_ISEND.c.y) \ - to A_ISEND.c -line from SEND.s to SEND.c - (0,boxht) \ - to A_ISEND.c -line from RMA.s to RMA.c - (0,boxht) \ - to SEND.c - (0,boxht) -circle at A_ISEND.c rad 0.7 filled -move at A_ISEND -D_MT: decision("multithread?") -arrow " Yes" ljust -D_OMP: decision("OpenMP?") -arrow " Yes" ljust -OMP: process("\fB+omp\fP") -right -move to D_OMP.e -arrow "No" above -D_OSS: decision("OmpSs-2?") -down -move to D_OSS.s -arrow " Yes" ljust -OSS: process("\fB+oss\fP") -down -move to OMP.s -A_OMP: arrow -circle at A_OMP.c rad 0.7 filled -line from OSS.s to OSS.c - (0,boxht) \ - to A_OMP.c -move to A_OMP.s -D_FJ: decision("fork-join?") -arrow " Yes" ljust -FJ: process("\fB+fork\fP") -right -move to D_FJ.e -arrow "No" above -D_TASKFOR: decision("task for?") -arrow "No" above -down -move to D_TASKFOR.s -arrow " Yes" ljust -TASKFOR: process("\fB+taskfor\fP") -right -move to D_TASKFOR.e -arrow "No" above -D_TASK: decision("task model?") -down -move to D_TASK.s -arrow " Yes" ljust -TASK: process("\fB+task\fP") -move to FJ.s -A_FJ: arrow -circle at A_FJ.c rad 0.7 filled -line from TASKFOR.s to TASKFOR.c - (0,boxht) \ - to A_FJ.c -line from TASK.s to TASK.c - (0,boxht) \ - to TASKFOR.c - (0,boxht) -left -move to OMP.c - (boxwid,0) -SEQ: process("\fB+seq\fP") -line "No" above from D_MT.w to (SEQ.x, D_MT.w.y) -arrow to SEQ.n -line from SEQ.s to (SEQ.s.x, A_FJ.c.y) to A_FJ.c -down -move to A_FJ.s -D_SIMD: decision("SIMD opt.?") -move to D_SIMD.e -right -arrow "Yes" above -SIMD: process("\fB+simd\fP") -down -move to D_SIMD.s -arrow " No" ljust -END: circle "End" -circle radius circlerad*0.9 at END -arrow from SIMD.s to (SIMD.x, END.y) to END.e - -# Error lines -ERR: circle "Error" at (TASK.x+boxwid, END.y) -circle radius circlerad*0.9 at ERR -line "No" above from D_TASK.e to (ERR.n.x,D_TASK.e.y) -line "No" above from D_OSS.e to (ERR.n.x,D_OSS.e.y) -line "No" above from D_RMA.e to (ERR.n.x,D_RMA.e.y) -line "No" above from D_MPI.e to (ERR.n.x,D_MPI.e.y) -arrow to ERR.n -#.PE diff --git a/garlic/doc/pp.ms b/garlic/doc/pp.ms deleted file mode 100644 index 700057a..0000000 --- a/garlic/doc/pp.ms +++ /dev/null @@ -1,256 +0,0 @@ -.TL -Garlic: the postprocess pipeline -.AU -Rodrigo Arias Mallo -.AI -Barcelona Supercomputing Center -.AB -.LP -This document covers the format used to store the results of the -execution of experiments and the postprocess steps used to generate a -set of figures from the results to present the data. The several stages -of the postprocess pipeline are documented to provide a general picture. -.AE -.\"##################################################################### -.nr GROWPS 3 -.nr PSINCR 1.5p -.\".nr PD 0.5m -.nr PI 2m -.\".2C -.R1 -bracket-label " [" ] ", " -accumulate -move-punctuation -.R2 -.\"##################################################################### -.NH 1 -Introduction -.LP -After the correct execution of an experiment the results are stored for -further investigation. Typically the time of the execution or other -quantities are measured and presented later in a figure (generally a -plot or a table). The -.I "postprocess pipeline" -consists of all the steps required to create a set of figures from the -results. Similarly to the execution pipeline where several stages run -sequentially, -.[ -garlic execution -.] -the postprocess pipeline is also formed by multiple stages executed -in order. -.PP -The rationale behind dividing execution and postprocess is -that usually the experiments are costly to run (they take a long time to -complete) while generating a figure require less time. Refining the -figures multiple times reusing the same experimental results doesn't -require the execution of the complete experiment, so the experimenter -can try multiple ways to present the data without waiting a large delay. -.NH 1 -Results -.LP -The results are generated in the same -.I "target" -machine where the experiment is executed and are stored in the garlic -\fCout\fP -directory, organized into a tree structure following the experiment -name, the unit name and the run number (governed by the -.I control -stage): -.DS L -\fC -|-- 6lp88vlj7m8hvvhpfz25p5mvvg7ycflb-experiment -| |-- 8lpmmfix52a8v7kfzkzih655awchl9f1-unit -| | |-- 1 -| | | |-- stderr.log -| | | |-- stdout.log -| | | |-- ... -| | |-- 2 -\&... -\fP -.DE -In order to provide an easier access to the results, an index is also -created by taking the -.I expName -and -.I unitName -attributes (defined in the experiment configuration) and linking them to -the appropriate experiment and unit directories. These links are -overwritten by the last experiment with the same names so they are only -valid for the last execution. The out and index directories are -placed into a per-user directory, as we cannot guarantee the complete -execution of each unit when multiple users share units. -.PP -The messages printed to -.I stdout -and -.I stderr -are stored in the log files with the same name inside each run -directory. Additional data is sometimes generated by the experiments, -and is found in each run directory. As the generated data can be very -large, is ignored by default when fetching the results. -.NH 1 -Fetching the results -.LP -Consider a program of interest for which an experiment has been designed to -measure some properties that the experimenter wants to present in a -visual plot. When the experiment is launched, the execution -pipeline (EP) is completely executed and it will generate some -results. In this escenario, the execution pipeline depends on the -program\[em]any changes in the program will cause nix to build the -pipeline again -using the updated program. The results will also depend on the -execution pipeline as well as the postprocess pipeline (PP) and the plot -on the results. This chain of dependencies can be shown in the -following dependency graph: -.ie t \{\ -.PS -circlerad=0.22; -linewid=0.3; -right -circle "Prog" -arrow -circle "EP" -arrow -circle "Result" -arrow -circle "PP" -arrow -circle "Plot" -.PE -.\} -.el \{\ -.nf - - Prog ---> EP ---> Result ---> PP ---> Plot - -.fi -.\} -Ideally, the dependencies should be handled by nix, so it can detect any -change and rebuild the necessary parts automatically. Unfortunately, nix -is not able to build the result as a derivation directly, as it requires -access to the -.I "target" -machine with several user accounts. In order to let several users reuse -the same results from a shared cache, we would like to use the -.I "nix store" . -.PP -To generate the results from the -experiment, we add some extra steps that must be executed manually: -.PS -circle "Prog" -arrow -diag=linewid + circlerad; -far=circlerad*3 + linewid*4 -E: circle "EP" -R: circle "Result" at E + (far,0) -RUN: circle "Run" at E + (diag,-diag) dashed -FETCH: circle "Fetch" at R + (-diag,-diag) dashed -move to R.e -arrow -P: circle "PP" -arrow -circle "Plot" -arrow dashed from E to RUN chop -arrow dashed from RUN to FETCH chop -arrow dashed from FETCH to R chop -arrow from E to R chop -.PE -The run and fetch steps are provided by the helper tool -.I "garlic(1)" , -which launches the experiment using the user credentials at the -.I "target" -machine and then fetches the results, placing them in a directory known -by nix. When the result derivation needs to be built, nix will look in -this directory for the results of the execution. If the directory is not -found, a message is printed to suggest the user to launch the experiment -and the build process is stopped. When the result is successfully built -by any user, is stored in the -.I "nix store" -and it won't need to be rebuilt again until the experiment changes, as -the hash only depends on the experiment and not on the contents of the -results. -.PP -Notice that this mechanism violates the deterministic nature of the nix -store, as from a given input (the experiment) we can generate different -outputs (each result from different executions). We knowingly relaxed -this restriction by providing a guarantee that the results are -equivalent and there is no need to execute an experiment more than once. -.PP -To force the execution of an experiment you can use the -.I rev -attribute which is a number assigned to each experiment -and can be incremented to create copies that only differs on that -number. The experiment hash will change but the experiment will be the -same, as long as the revision number is ignored along the execution -stages. -.NH 1 -Postprocess stages -.LP -Once the results are completely generated in the -.I "target" -machine there are several stages required to build a set of figures: -.PP -.I fetch \[em] -waits until all the experiment units are completed and then executes the -next stage. This stage is performed by the -.I garlic(1) -tool using the -.I -F -option and also reports the current state of the execution. -.PP -.I store \[em] -copies from the -.I target -machine into the nix store all log files generated by the experiment, -keeping the same directory structure. It tracks the execution state of -each unit and only copies the results once the experiment is complete. -Other files are ignored as they are often very large and not required -for the subsequent stages. -.PP -.I timetable \[em] -converts the results of the experiment into a NDJSON file with one -line per run for each unit. Each line is a valid JSON object, containing -the -.I exp , -.I unit -and -.I run -keys and the unit configuration (as a JSON object) in the -.I config -key. The execution time is captured from the standard output and is -added in the -.I time -key. -.PP -.I merge \[em] -one or more timetable datasets are joined, by simply concatenating them. -This step allows building one dataset to compare multiple experiments in -the same figure. -.PP -.I rPlot \[em] -one ot more figures are generated by a single R script -.[ -r cookbook -.] -which takes as input the previously generated dataset. -The path of the dataset is recorded in the figure as well, which -contains enough information to determine all the stages in the execution -and postprocess pipelines. -.SH 1 -Appendix A: Current setup -.LP -As of this moment, the -.I build -machine which contains the nix store is -.I xeon07 -and the -.I "target" -machine used to run the experiments is Mare Nostrum 4 with the -.I output -directory placed at -.CW /gpfs/projects/bsc15/garlic . -By default, the experiment results are never deleted from the -.I target -so you may want to remove the ones already stored in the nix store to -free space. diff --git a/garlic/doc/ref.i b/garlic/doc/ref.i deleted file mode 100644 index 1bd3e70..0000000 --- a/garlic/doc/ref.i +++ /dev/null @@ -1,9 +0,0 @@ -%A Rodrigo Arias Mallo -%D 2020 -%T Garlic: the execution pipeline - -%A Winston Chang -%T R Graphics Cookbook: Practical Recipes for Visualizing Data -%D 2020 -%I O'Reilly Media -%O 2nd edition diff --git a/garlic/doc/s.css b/garlic/doc/s.css deleted file mode 100644 index 324f1ce..0000000 --- a/garlic/doc/s.css +++ /dev/null @@ -1,19 +0,0 @@ -html { - line-height: 1.6; - margin-bottom: 50px; - padding-bottom: 80px; -} - -body { - max-width: 700px; - text-align: justify; - margin:0 auto; -} - -pre { - overflow: auto; - display: block; - padding: 3px 3px; - line-height: 1.4; - background-color: #eeeeee; -} diff --git a/garlic/doc/slides/2.mm b/garlic/doc/slides/2.mm deleted file mode 100644 index 7cb81ce..0000000 --- a/garlic/doc/slides/2.mm +++ /dev/null @@ -1,1468 +0,0 @@ -.\"usage: NS title -.de NS \" New Slide -.SK -.ev gp-top -.fam H -.vs 1.5m -.ll \\n[@ll]u -.lt \\n[@ll]u -.rs -.sp 2v -.ps +5 -\\$* -.ps -5 -.sp 1.5v -.br -.ev -.. -.\" Remove headers -.de TP -.. -.\" Bigger page number in footer -.de EOP -.fam H -.ps +2 -. ie o .tl \\*[pg*odd-footer] -. el .tl \\*[pg*even-footer] -. ds hd*format \\g[P] -. af P 0 -. ie (\\n[P]=1)&(\\n[N]=1) .tl \\*[pg*header] -. el .tl \\*[pg*footer] -. af P \\*[hd*format] -. tl ''\\*[Pg_type!\\n[@copy_type]]'' -.. -.\" Remove top and bottom margin -.VM 0 0 -.\" -.\" -.\" Set virtual page dimensions for a physical size of 16x12 cm -.PGFORM 14c 12c 1c 1 -.ND "November 24, 2020" -.\" .vs 1.5m -.S C 1.5m -.fam H -.\".PH "'cosas'''" -.COVER ms -.de cov@print-date -.DS C -.fam H -.B -\\*[cov*new-date] -.DE -.. -.TL -.ps 20 -.fam H -Garlic update -.AF "Barcelona Supercomputing Center" -.AU "Rodrigo Arias Mallo" -.COVEND -.PF "'''%'" -.\" Turn off justification -.SA 0 -.\".PF '''%' -.\"================================================================== -.NS "Changelog" -Important changes since the last meeting (2020-09-23) -.BL -.LI -Execution of experiments is now \fBisolated\fP: no $HOME or /usr at run time -.LI -Added a \fBpostprocess\fP pipeline -.LI -New \fBgarlic(1)\fP helper tool (manual included) -.LI -A plot has an experiment result as \fBdependency\fP -.LI -Experiments run on demand based on article \fBfigures\fP -.LI -Fast pkg overrides (MPI) -.LE 1 -.\"================================================================== -.NS "Overview" -Dependency graph of a complete experiment that produces a figure. Each box -is a derivation and arrows represent \fBbuild dependencies\fP. -.DS CB -.S -3.5 -.PS -circlerad=0.3; -linewid=0.3; -boxwid=0.52; -boxht=0.35; -fillval=0.2; -right -P: box "Program" -arrow -box "..." -arrow -T: box "Trebuchet" -arrow -box "Result" "(MN4)" dashed -arrow -R: box "ResultTree" -arrow -box "..." -arrow -F: box "Figure" -arrow <-> from P.nw + (0, 0.2) to T.ne + (0, 0.2) \ -"Execution pipeline (EP)" above -arrow <-> from R.nw + (0, 0.2) to F.ne + (0, 0.2) \ -"Postprocess pipeline (PP)" above -.PE -.S P P -.DE -.P -The \fBResult\fP is not covered by nix (yet). This is what it looks like -when executed: -.DS CB -.S -3.5 -.PS -circlerad=0.25; -linewid=0.3; -boxwid=0.52; -boxht=0.35; -fillval=0.2; -right -circle "Build EP" -arrow -circle "Run EP" -arrow -box "Result" "(MN4)" dashed -arrow -circle "Fetch" -arrow -R: box "ResultTree" -arrow -circle "Build PP" -arrow -F: box "Figure" -.PE -.S P P -.DE -.P -Notice dependency order is not the same as execution order. -.\"================================================================== -.NS "Building the execution pipeline (EP)" -.DS CB -.S -3.5 -.PS -circlerad=0.25; -linewid=0.3; -boxwid=0.52; -boxht=0.35; -fillval=0.2; -right -B: circle "Build EP" fill -arrow -R: circle "Run EP" -arrow -box "Result" "(MN4)" dashed -arrow -circle "Fetch" -arrow -box "ResultTree" -arrow -circle "Build PP" -arrow -F: box "Figure" -arrow from B.w + (0, 0.35) to F.e + (0, 0.35) \ -"Order or execution" above -.PE -.S P P -.DE -.P -Run nix-build with the experiment name: -.P -.VERBON -xeon07$ nix-build -A exp.nbody.baseline -\&... -/nix/store/5zhmdzi5mf0mfsran74cxngn07ba522m-trebuchet -.VERBOFF -.P -Outputs the first stage (the trebuchet). All other stages -are built as dependencies, as they are required to build the trebuchet. -.\"================================================================== -.NS "Running the EP" -.DS CB -.S -3.5 -.PS -circlerad=0.25; -linewid=0.3; -boxwid=0.52; -boxht=0.35; -fillval=0.2; -right -B: circle "Build EP" -arrow -R: circle "Run EP" fill -arrow -box "Result" "(MN4)" dashed -arrow -circle "Fetch" -arrow -box "ResultTree" -arrow -circle "Build PP" -arrow -F: box "Figure" -circlerad=0.2; -linewid=0.3; -T: circle at B + (0,-1.3) "trebu." -arrow -circle "runexp" -arrow -circle "isolate" -arrow -circle "exp." -arrow -circle "..." -arrow -circle "exec" -arrow -P: circle "program" -line from R.sw to T.nw dashed -line from R.se to P.n dashed -arrow <-> from T.w - (0, 0.35) to P.e - (0, 0.35) \ -"Execution pipeline stages" below -arrow from B.w + (0, 0.35) to F.e + (0, 0.35) \ -"Order or execution" above -.PE -.S P P -.DE -.SP 1m -.P -The stages are launched sequentially. Let see what happens in each one. -.\"================================================================== -.NS "Execution pipeline" -.2C -List of stages required to run the program of the experiment: -.BL -.S -1 -.LI -The -.B target -column determines where the stage is running. -.LI -.B Safe -states if the stage begins the execution inside the isolated namespace -.LI -.B User -if it can be executed directly by the user -.LI -.B Copies -if there are several instances running in parallel and -.LI -.B Std -if is part of the standard execution pipeline. -.LE -.S P P -.P -Sorted by the \fBexecution order\fP. -.\" Go to the next column -.NCOL -.KF -.defcolor white rgb #FFFFFF -.S 8 14p -.\".S C +0.2v -.TS -center expand; -lB lB cB cB cB cB cB -lB lB cB cB cB cB cB -r lw(5.5m) c c c c c. - _ _ _ _ _ _ - Stage Target Safe Copies User Std - _ _ _ _ _ _ -\m[white]\(rh\m[]\ - trebuchet xeon no no yes yes - runexp login no no yes yes - isolate login no no no yes - experiment login yes no no yes - unit login yes no no yes - sbatch login yes no no yes - _ _ _ _ _ _ - isolate comp no no no yes - control comp yes no no yes - srun comp yes no no yes - isolate comp no yes no yes - _ _ _ _ _ _ - exec comp yes yes no no - program comp yes yes no no - _ _ _ _ _ _ -.TE -.S P P -.KE -.1C -.\"================================================================== -.NS "Execution stages" -.2C -\fBtrebuchet\fP: connects via ssh to the target machine and executes the -next stage there. -.P -The target machine is set to MN4, which by default uses the host -\fBmn1\fP -.P -Literally: -.P -.VERBON -ssh mn1 /path/to/next/stage -.VERBOFF -.P -You need to define the ssh config to be able to connect to mn1. -.\" Go to the next column -.NCOL -.KF -.S 8 14p -.\".S C +0.2v -.TS -center expand; -lB lB cB cB cB cB cB -lB lB cB cB cB cB cB -r lw(5.5m) c c c c c. - _ _ _ _ _ _ - Stage Target Safe Copies User Std - _ _ _ _ _ _ -\(rh \fBtrebuchet\fP xeon no no yes yes - runexp login no no yes yes - isolate login no no no yes - experiment login yes no no yes - unit login yes no no yes - sbatch login yes no no yes - _ _ _ _ _ _ - isolate comp no no no yes - control comp yes no no yes - srun comp yes no no yes - isolate comp no yes no yes - _ _ _ _ _ _ - exec comp yes yes no no - program comp yes yes no no - _ _ _ _ _ _ -.TE -.S P P -.KE -.1C -.\"================================================================== -.NS "Execution stages" -.2C -\fBrunexp\fP: sets a few \fCGARLIC_*\fP environment variables used by the -benchmark and changes the current directory to the \fBout\fP directory. -.P -At build time, next stages don't know these values (cyclic dependency), -so they are populated at execution time. -.\" Go to the next column -.NCOL -.KF -.S 8 14p -.\".S C +0.2v -.TS -center expand; -lB lB cB cB cB cB cB -lB lB cB cB cB cB cB -r lw(5.5m) c c c c c. - _ _ _ _ _ _ - Stage Target Safe Copies User Std - _ _ _ _ _ _ - trebuchet xeon no no yes yes -\(rh \fBrunexp\fP login no no yes yes - isolate login no no no yes - experiment login yes no no yes - unit login yes no no yes - sbatch login yes no no yes - _ _ _ _ _ _ - isolate comp no no no yes - control comp yes no no yes - srun comp yes no no yes - isolate comp no yes no yes - _ _ _ _ _ _ - exec comp yes yes no no - program comp yes yes no no - _ _ _ _ _ _ -.TE -.S P P -.KE -.1C -.\"================================================================== -.NS "Execution stages" -.2C -\fBisolate\fP: once on the target machine, we enter an isolated -namespace to load the nix store. -.P -Notice that this and the previous stages require the \fBsh\fP shell to be -available on the target machine -.P -They are not \fBsafe\fP as we run target machine code -.\" Go to the next column -.NCOL -.KF -.S 8 14p -.\".S C +0.2v -.TS -center expand; -lB lB cB cB cB cB cB -lB lB cB cB cB cB cB -r lw(5.5m) c c c c c. - _ _ _ _ _ _ - Stage Target Safe Copies User Std - _ _ _ _ _ _ - trebuchet xeon no no yes yes - runexp login no no yes yes -\(rh \fBisolate\fP login no no no yes - experiment login yes no no yes - unit login yes no no yes - sbatch login yes no no yes - _ _ _ _ _ _ - isolate comp no no no yes - control comp yes no no yes - srun comp yes no no yes - isolate comp no yes no yes - _ _ _ _ _ _ - exec comp yes yes no no - program comp yes yes no no - _ _ _ _ _ _ -.TE -.S P P -.KE -.1C -.\"================================================================== -.NS "Execution stages" -.2C -\fBexperiment\fP: runs several units sequentially. -.P -Defines the \fCGARLIC_EXPERIMENT\fP environment variable. -.P -Creates a directory for the experiment and changes the current directory -there. -.\" Go to the next column -.NCOL -.KF -.S 8 14p -.\".S C +0.2v -.TS -center expand; -lB lB cB cB cB cB cB -lB lB cB cB cB cB cB -r lw(5.5m) c c c c c. - _ _ _ _ _ _ - Stage Target Safe Copies User Std - _ _ _ _ _ _ - trebuchet xeon no no yes yes - runexp login no no yes yes - isolate login no no no yes -\(rh \fBexperiment\fP login yes no no yes - unit login yes no no yes - sbatch login yes no no yes - _ _ _ _ _ _ - isolate comp no no no yes - control comp yes no no yes - srun comp yes no no yes - isolate comp no yes no yes - _ _ _ _ _ _ - exec comp yes yes no no - program comp yes yes no no - _ _ _ _ _ _ -.TE -.S P P -.KE -.1C -.\"================================================================== -.NS "Execution stages" -.2C -\fBunit\fP: creates an index entry for the unit and the experiment. -.P -Creates a directory for the unit and changes the current directory -there. -.P -Copies the unit configuration in the \fCgarlic_config.json\fP file -.\" Go to the next column -.NCOL -.KF -.S 8 14p -.\".S C +0.2v -.TS -center expand; -lB lB cB cB cB cB cB -lB lB cB cB cB cB cB -r lw(5.5m) c c c c c. - _ _ _ _ _ _ - Stage Target Safe Copies User Std - _ _ _ _ _ _ - trebuchet xeon no no yes yes - runexp login no no yes yes - isolate login no no no yes - experiment login yes no no yes -\(rh \fBunit\fP login yes no no yes - sbatch login yes no no yes - _ _ _ _ _ _ - isolate comp no no no yes - control comp yes no no yes - srun comp yes no no yes - isolate comp no yes no yes - _ _ _ _ _ _ - exec comp yes yes no no - program comp yes yes no no - _ _ _ _ _ _ -.TE -.S P P -.KE -.1C -.\"================================================================== -.NS "Execution stages" -.2C -\fBsbatch\fP: allocates resources and executes the next stage in the -first node. -.P -The execve call is performed by a SLURM daemon, so is \fBout\fP of the -isolated environment. -.\" Go to the next column -.NCOL -.KF -.S 8 14p -.\".S C +0.2v -.TS -center expand; -lB lB cB cB cB cB cB -lB lB cB cB cB cB cB -r lw(5.5m) c c c c c. - _ _ _ _ _ _ - Stage Target Safe Copies User Std - _ _ _ _ _ _ - trebuchet xeon no no yes yes - runexp login no no yes yes - isolate login no no no yes - experiment login yes no no yes - unit login yes no no yes -\(rh \fBsbatch\fP login yes no no yes - _ _ _ _ _ _ - isolate comp no no no yes - control comp yes no no yes - srun comp yes no no yes - isolate comp no yes no yes - _ _ _ _ _ _ - exec comp yes yes no no - program comp yes yes no no - _ _ _ _ _ _ -.TE -.S P P -.KE -.1C -.\"================================================================== -.NS "Execution stages" -.2C -\fBisolate\fP: enters the isolated namespace again, with the nix store. -.P -Notice that we are now running in the compute node allocated by SLURM. -.\" Go to the next column -.NCOL -.KF -.S 8 14p -.\".S C +0.2v -.TS -center expand; -lB lB cB cB cB cB cB -lB lB cB cB cB cB cB -r lw(5.5m) c c c c c. - _ _ _ _ _ _ - Stage Target Safe Copies User Std - _ _ _ _ _ _ - trebuchet xeon no no yes yes - runexp login no no yes yes - isolate login no no no yes - experiment login yes no no yes - unit login yes no no yes - sbatch login yes no no yes - _ _ _ _ _ _ -\(rh \fBisolate\fP comp no no no yes - control comp yes no no yes - srun comp yes no no yes - isolate comp no yes no yes - _ _ _ _ _ _ - exec comp yes yes no no - program comp yes yes no no - _ _ _ _ _ _ -.TE -.S P P -.KE -.1C -.\"================================================================== -.NS "Execution stages" -.2C -\fBcontrol\fP: runs the next stage several times -.P -Is controlled by the \fCloops\fP attribute, which specifies the number -of runs. -.P -Creates a directory with the number of the run and enters it. -.P -Generated results are placed in this directory. -.\" Go to the next column -.NCOL -.KF -.S 8 14p -.\".S C +0.2v -.TS -center expand; -lB lB cB cB cB cB cB -lB lB cB cB cB cB cB -r lw(5.5m) c c c c c. - _ _ _ _ _ _ - Stage Target Safe Copies User Std - _ _ _ _ _ _ - trebuchet xeon no no yes yes - runexp login no no yes yes - isolate login no no no yes - experiment login yes no no yes - unit login yes no no yes - sbatch login yes no no yes - _ _ _ _ _ _ - isolate comp no no no yes -\(rh \fBcontrol\fP comp yes no no yes - srun comp yes no no yes - isolate comp no yes no yes - _ _ _ _ _ _ - exec comp yes yes no no - program comp yes yes no no - _ _ _ _ _ _ -.TE -.S P P -.KE -.1C -.\"================================================================== -.NS "Execution stages" -.2C -\fBsrun\fP: launches the tasks in the compute nodes and sets the -affinity. -.P -From here on, all stages are executed in parallel for each task. -.P -The srun program also forks from a SLURM daemon, exiting the -previous isolated namespace. -.\" Go to the next column -.NCOL -.KF -.S 8 14p -.\".S C +0.2v -.TS -center expand; -lB lB cB cB cB cB cB -lB lB cB cB cB cB cB -r lw(5.5m) c c c c c. - _ _ _ _ _ _ - Stage Target Safe Copies User Std - _ _ _ _ _ _ - trebuchet xeon no no yes yes - runexp login no no yes yes - isolate login no no no yes - experiment login yes no no yes - unit login yes no no yes - sbatch login yes no no yes - _ _ _ _ _ _ - isolate comp no no no yes - control comp yes no no yes -\(rh \fBsrun\fP comp yes no no yes - isolate comp no yes no yes - _ _ _ _ _ _ - exec comp yes yes no no - program comp yes yes no no - _ _ _ _ _ _ -.TE -.S P P -.KE -.1C -.\"================================================================== -.NS "Execution stages" -.2C -\fBisolate\fP: enter the isolated namespace again. -.P -Now we are ready to execute the program of the experiment. -.\" Go to the next column -.NCOL -.KF -.S 8 14p -.\".S C +0.2v -.TS -center expand; -lB lB cB cB cB cB cB -lB lB cB cB cB cB cB -r lw(5.5m) c c c c c. - _ _ _ _ _ _ - Stage Target Safe Copies User Std - _ _ _ _ _ _ - trebuchet xeon no no yes yes - runexp login no no yes yes - isolate login no no no yes - experiment login yes no no yes - unit login yes no no yes - sbatch login yes no no yes - _ _ _ _ _ _ - isolate comp no no no yes - control comp yes no no yes - srun comp yes no no yes -\(rh \fBisolate\fP comp no yes no yes - _ _ _ _ _ _ - exec comp yes yes no no - program comp yes yes no no - _ _ _ _ _ _ -.TE -.S P P -.KE -.1C -.\"================================================================== -.NS "Execution stages" -.2C -\fBexec\fP: sets the environment variables and argv of the program. -.P -Additional commands can be specified in the \fCpre\fP and \fCpost\fP -attributes. -.\" Go to the next column -.NCOL -.KF -.S 8 14p -.\".S C +0.2v -.TS -center expand; -lB lB cB cB cB cB cB -lB lB cB cB cB cB cB -r lw(5.5m) c c c c c. - _ _ _ _ _ _ - Stage Target Safe Copies User Std - _ _ _ _ _ _ - trebuchet xeon no no yes yes - runexp login no no yes yes - isolate login no no no yes - experiment login yes no no yes - unit login yes no no yes - sbatch login yes no no yes - _ _ _ _ _ _ - isolate comp no no no yes - control comp yes no no yes - srun comp yes no no yes - isolate comp no yes no yes - _ _ _ _ _ _ -\(rh \fBexec\fP comp yes yes no no - program comp yes yes no no - _ _ _ _ _ _ -.TE -.S P P -.KE -.1C -.\"================================================================== -.NS "Execution stages" -.2C -\fBprogram\fP: the path to the program itself. -.P -This stage can be used to do some changes: -.BL -.LI -Set the mpi implementation of all dependencies. -.LI -Pass build options -.LI -Custom packages (nanos6 with jemalloc) -.LE -.\" Go to the next column -.NCOL -.KF -.S 8 14p -.\".S C +0.2v -.TS -center expand; -lB lB cB cB cB cB cB -lB lB cB cB cB cB cB -r lw(5.5m) c c c c c. - _ _ _ _ _ _ - Stage Target Safe Copies User Std - _ _ _ _ _ _ - trebuchet xeon no no yes yes - runexp login no no yes yes - isolate login no no no yes - experiment login yes no no yes - unit login yes no no yes - sbatch login yes no no yes - _ _ _ _ _ _ - isolate comp no no no yes - control comp yes no no yes - srun comp yes no no yes - isolate comp no yes no yes - _ _ _ _ _ _ - exec comp yes yes no no -\(rh \fBprogram\fP comp yes yes no no - _ _ _ _ _ _ -.TE -.S P P -.KE -.1C -.\"================================================================== -.NS "Execution stages" -.2C -The \fCstdexp.nix\fP file defines standard pipeline. The last two stages -are usually added to complete the pipeline: -.P -.VERBON -pipeline = stdPipeline ++ - [ exec program ]; -.VERBOFF -.P -Any stage can be modified to fit a custom experiment. -.\" Go to the next column -.NCOL -.KF -.S 8 14p -.\".S C +0.2v -.TS -center expand; -lB lB cB cB cB cB cB -lB lB cB cB cB cB cB -r lw(5.5m) c c c c c. - _ _ _ _ _ _ - Stage Target Safe Copies User Std - _ _ _ _ _ _ -\(rh \fBtrebuchet\fP xeon no no yes \fByes\fP -\(rh \fBrunexp\fP login no no yes \fByes\fP -\(rh \fBisolate\fP login no no no \fByes\fP -\(rh \fBexperiment\fP login yes no no \fByes\fP -\(rh \fBunit\fP login yes no no \fByes\fP -\(rh \fBsbatch\fP login yes no no \fByes\fP - _ _ _ _ _ _ -\(rh \fBisolate\fP comp no no no \fByes\fP -\(rh \fBcontrol\fP comp yes no no \fByes\fP -\(rh \fBsrun\fP comp yes no no \fByes\fP -\(rh \fBisolate\fP comp no yes no \fByes\fP - _ _ _ _ _ _ - exec comp yes yes no no - program comp yes yes no no - _ _ _ _ _ _ -.TE -.S P P -.KE -.1C -.\"================================================================== -.NS "Isolated execution" -.2C -The filesystem is \fBnow\fP isolated to prevent irreproducible -scenarios. -.P -The nix store is mounted at /nix and only some other paths are -available like: -.BL -.S -1 1m -.LI -/var/run/munge (required for SLURM) -.LI -/dev, /sys, /proc for MPI comm -.LI -/etc for hosts (FIXME) -.LI -/gpfs/projects/bsc15 to store data -.LE -.S P P -.P -Additional mounts can be requested by using the \fCextraMounts\fP -attribute. -.\" Go to the next column -.NCOL -.KF -.S 8 14p -.\".S C +0.2v -.TS -center expand; -lB lB cB cB cB cB cB -lB lB cB cB cB cB cB -r lw(5.5m) c c c c c. - _ _ _ _ _ _ - Stage Target Safe Copies User Std - _ _ _ _ _ _ - trebuchet xeon no no yes yes - runexp login no no yes yes -\(rh \fBisolate\fP login no no no yes - experiment login yes no no yes - unit login yes no no yes - sbatch login yes no no yes - _ _ _ _ _ _ -\(rh \fBisolate\fP comp no no no yes - control comp yes no no yes - srun comp yes no no yes -\(rh \fBisolate\fP comp no yes no yes - _ _ _ _ _ _ - exec comp yes yes no no - program comp yes yes no no - _ _ _ _ _ _ -.TE -.S P P -.KE -.1C -.\"================================================================== -.NS "Running the EP" -.DS CB -.S -3.5 -.PS -circlerad=0.25; -linewid=0.3; -boxwid=0.52; -boxht=0.35; -fillval=0.2; -right -B: circle "Build EP" -arrow -R: circle "Run EP" fill -arrow -box "Result" "(MN4)" dashed -arrow -circle "Fetch" -arrow -box "ResultTree" -arrow -circle "Build PP" -arrow -F: box "Figure" -arrow from B.w + (0, 0.35) to F.e + (0, 0.35) \ -"Order or execution" above -.PE -.S P P -.DE -.P -We cannot access MN4 from nix, as it doesn't has the SSH keys nor -network access when building derivations. -.P -The garlic(1) tool is used to run experiments and fetch the results. See -the manual for details. -.\"================================================================== -.NS "Running the EP" -.DS CB -.S -3.5 -.PS -circlerad=0.25; -linewid=0.3; -boxwid=0.52; -boxht=0.35; -fillval=0.2; -right -B: circle "Build EP" -arrow -R: circle "Run EP" fill -arrow -box "Result" "(MN4)" dashed -arrow -circle "Fetch" -arrow -box "ResultTree" -arrow -circle "Build PP" -arrow -F: box "Figure" -arrow from B.w + (0, 0.35) to F.e + (0, 0.35) \ -"Order or execution" above -.PE -.S P P -.DE -.P -To launch the EP use \fBgarlic -R\fP and provide the trebuchet path: -.P -.VERBON -.S -2 -xeon07$ garlic -Rv /nix/store/5zhmdzi5mf0mfsran74cxngn07ba522m-trebuchet -Running experiment 1qcc...9w5-experiment -sbatch: error: spank: x11.so: Plugin file not found -Submitted batch job 12719522 -\&... -xeon07$ -.S P P -.VERBOFF -.P -Once the jobs are submited, you can leave the session: it will run -in MN4 automatically at some point. - -.\"================================================================== -.NS "Execution complete" -.DS CB -.S -3.5 -.PS -circlerad=0.25; -linewid=0.3; -boxwid=0.52; -boxht=0.35; -fillval=0.2; -right -B: circle "Build EP" -arrow -R: circle "Run EP" -arrow -box "Result" "(MN4)" dashed fill -arrow -circle "Fetch" -arrow -box "ResultTree" -arrow -circle "Build PP" -arrow -F: box "Figure" -arrow from B.w + (0, 0.35) to F.e + (0, 0.35) \ -"Order or execution" above -.PE -.S P P -.DE -.P -When the EP is complete, the generated results are stored in MN4. -.P -As stated previously, nix cannot access MN4 (yet), so we need to manually -fetch the results. -.\"================================================================== -.NS "Fetching the results" -.DS CB -.S -3.5 -.PS -circlerad=0.25; -linewid=0.3; -boxwid=0.52; -boxht=0.35; -fillval=0.2; -right -B: circle "Build EP" -arrow -R: circle "Run EP" -arrow -box "Result" "(MN4)" dashed -arrow -circle "Fetch" fill -arrow -box "ResultTree" -arrow -circle "Build PP" -arrow -F: box "Figure" -arrow from B.w + (0, 0.35) to F.e + (0, 0.35) \ -"Order or execution" above -.PE -.S P P -.DE -.P -To fetch the results, use \fBgarlic -F\fP: -.P -.VERBON -.S -3.5 -xeon07$ garlic -Fv /nix/store/5zhmdzi5mf0mfsran74cxngn07ba522m-trebuchet -/mnt/garlic/bsc15557/out/1qc...9w5-experiment: checking units -3qnm6drx5y95kxrr43gnwqz8v4x641c7-unit: running 7 of 10 -awd3jzbcw0cwwvjrcrxzjvii3mgj663d-unit: completed -bqnnrwcbcixag0dfflk1zz34zidk97nf-unit: no status -\&... -/mn...w5-experiment: \f[CB]execution complete, fetching results\fP -these derivations will be built: - /nix/store/mqdr...q4z-resultTree.drv -\&... -\f[CB]/nix/store/jql41hms1dr49ipbjcw41i4dj4pq2cb0-resultTree\fP -.S P P -.VERBOFF -.P -Notice that if the experiments are still running, it waits for the -completion of all units first. -.\"================================================================== -.NS "Fetching the results" -.DS CB -.S -3.5 -.PS -circlerad=0.25; -linewid=0.3; -boxwid=0.52; -boxht=0.35; -fillval=0.2; -right -B: circle "Build EP" -arrow -R: circle "Run EP" -arrow -box "Result" "(MN4)" dashed -arrow -circle "Fetch" -arrow -box "ResultTree" fill -arrow -circle "Build PP" -arrow -F: box "Figure" -arrow from B.w + (0, 0.35) to F.e + (0, 0.35) \ -"Order or execution" above -.PE -.S P P -.DE -.P -.VERBON -.S -3.5 -\&... -\f[CB]/nix/store/jql41hms1dr49ipbjcw41i4dj4pq2cb0-resultTree\fP -.S P P -.VERBOFF -.P -When the fetch operation success, the \fBresultTree\fP derivation is -built, with the \fBlogs\fP of the execution. -.P -All other generated data is \fBignored by now\fP, as we don't want to -store large files in the nix store of xeon07. -.\"================================================================== -.NS "Running and fetching" -.DS CB -.S -3.5 -.PS -circlerad=0.25; -linewid=0.3; -boxwid=0.52; -boxht=0.35; -fillval=0.2; -right -B: circle "Build EP" -arrow -R: circle "Run EP" fill -arrow -box "Result" "(MN4)" dashed fill -arrow -circle "Fetch" fill -arrow -box "ResultTree" fill -arrow -circle "Build PP" -arrow -F: box "Figure" -arrow from B.w + (0, 0.35) to F.e + (0, 0.35) \ -"Order or execution" above -.PE -.S P P -.DE -.P -You can run an experiment and fetch the results with \fBgarlic -RF\fP in -one go: -.P -.VERBON -.S -2 -xeon07$ garlic -RF /nix/store/5zhmdzi5mf0mfsran74cxngn07ba522m-trebuchet -.S P P -.VERBOFF -.P -Remember that you can interrupt the fetching while is waiting, and come -later if the experiment takes too long. -.P -If nix tries to build \fBResultTree\fP and doesn't find the experiment -results, it will tell you to run this command to run and fetch the -experiment. Example: building the figure before running the experiment: -.P -.VERBON -.S -2 -xeon07$ nix-build -A fig.nbody.baseline -.S P P -.VERBOFF -.\"================================================================== -.NS "Postprocess pipeline (PP)" -.DS CB -.S -3.5 -.PS -circlerad=0.25; -linewid=0.3; -boxwid=0.52; -boxht=0.35; -fillval=0.2; -right -B: circle "Build EP" -arrow -R: circle "Run EP" -arrow -box "Result" "(MN4)" dashed -arrow -circle "Fetch" -arrow -box "ResultTree" -arrow -circle "Build PP" fill -arrow -F: box "Figure" -arrow from B.w + (0, 0.35) to F.e + (0, 0.35) \ -"Order or execution" above -.PE -.S P P -.DE -.P -Once the \fBresultTree\fP derivation is built, multiple figures can be created -without re-running the experiment. -.P -The postprocess pipeline is formed of several stages as well, but is -considered \fBexperimental\fP; there is no standard yet. -.P -It only needs to be built, as nix can perform all tasks to create the -figures (no manual intervention) -.\"================================================================== -.NS "Building the postprocess pipeline (PP)" -.DS CB -.S -3.5 -.PS -circlerad=0.25; -linewid=0.3; -boxwid=0.52; -boxht=0.35; -fillval=0.2; -right -B: circle "Build EP" -arrow -circle "Run EP" -arrow -box "Result" "(MN4)" dashed -arrow -circle "Fetch" -arrow -R: box "ResultTree" -arrow -PP: circle "Build PP" fill -arrow -F: box "Figure" -circlerad=0.2; -linewid=0.3; -T: box at R + (-0.02,-0.8) "timetable" -arrow -box "merge" -arrow -P: box "rPlot" -line from PP.sw to T.n dashed -line from PP.se to P.n dashed -arrow <-> from T.w - (0, 0.35) to P.e - (0, 0.35) \ - "Execution pipeline stages" below -arrow from B.w + (0, 0.35) to F.e + (0, 0.35) \ - "Order or execution" above -.PE -.S P P -.DE -.P -To build the figure, only three stages are required: timetable, merge -and rPlot. -.\"================================================================== -.NS "PP stages: timetable" -.DS CB -.S -3.5 -.PS -circlerad=0.25; -linewid=0.3; -boxwid=0.52; -boxht=0.35; -fillval=0.2; -right -box "timetable" fill -arrow -box "merge" -arrow -P: box "rPlot" -.PE -.S P P -.DE -.P -The timetable transforms the logs of the execution into a NDJSON file, -which contains all the unit configuration and the execution time in one -line in JSON: -.P -.VERBON -.S -2 -{ "unit":"...", "experiment":"...", "run":1, "config":{...}, "time":1.2345 } -{ "unit":"...", "experiment":"...", "run":2, "config":{...}, "time":1.2333 } -{ "unit":"...", "experiment":"...", "run":3, "config":{...}, "time":1.2323 } -.S P P -.VERBOFF -.P -This format allows R (and possibly other programs) to load \fBall\fP -information regarding the experiment configuration into a table. -.P -It requires the execution logs to contain a line with the time: -.P -.VERBON -.S -2 -time 1.2345 -.S P P -.VERBOFF -.\"================================================================== -.NS "PP stages: merge" -.DS CB -.S -3.5 -.PS -circlerad=0.25; -linewid=0.3; -boxwid=0.52; -boxht=0.35; -fillval=0.2; -right -box "timetable" -arrow -box "merge" fill -arrow -P: box "rPlot" -.PE -.S P P -.DE -.P -The merge stage allows multiple results of several experiments to be -merged in one dataset. -.P -In this way, multiple results can be presented in one figure. -.P -It simple concatenates all the NDJSON files together. -.P -This stage can be build directly with: -.P -.VERBON -$ nix-build ds.nbody.baseline -.VERBOFF -.P -So you can inspect the dataset and play with it before generating the -plots (is automatically built by nix as a dependency). -.\"================================================================== -.NS "PP stages: rPlot" -.DS CB -.S -3.5 -.PS -circlerad=0.25; -linewid=0.3; -boxwid=0.52; -boxht=0.35; -fillval=0.2; -right -box "timetable" -arrow -box "merge" -arrow -P: box "rPlot" fill -.PE -.S P P -.DE -.P -Finally, the rPlot stage runs a R script that loads the NDJSON dataset -and generates some plots. -.\"================================================================== -.NS "Building the figures" -.DS CB -.S -3.5 -.PS -circlerad=0.25; -linewid=0.3; -boxwid=0.52; -boxht=0.35; -fillval=0.2; -right -B: circle "Build EP" -arrow -circle "Run EP" -arrow -box "Result" "(MN4)" dashed -arrow -circle "Fetch" -arrow -R: box "ResultTree" -arrow -PP: circle "Build PP" -arrow -F: box "Figure" fill -arrow from B.w + (0, 0.35) to F.e + (0, 0.35) \ - "Order or execution" above -.PE -.S P P -.DE -.P -The complete PP and the figures can be build by using: -.P -.VERBON -xeon07$ nix-build -A fig.nbody.baseline -.VERBOFF -.P -A interactive R shell can be used to play with the presentation of the -plots: -.P -.VERBON -xeon07$ nix-shell garlic/fig/dev/shell.nix -$ cp /nix/store/...-merge.json input.json -$ R -> source("garlic/fig/nbody/baseline.R") -.VERBOFF -.P -More about this later. -.\"================================================================== -.NS "Figure dependencies" -.DS CB -.S -3.5 -.PS -circlerad=0.3; -linewid=0.3; -boxwid=0.52; -boxht=0.35; -fillval=0.2; -right -P: box "Program" -arrow -box "..." -arrow -T: box "Trebuchet" -arrow -box "Result" "(MN4)" dashed -arrow -R: box "ResultTree" -arrow -box "..." -arrow -F: box "Figure" fill -arrow <-> from P.nw + (0, 0.2) to T.ne + (0, 0.2) \ -"Execution pipeline (EP)" above -arrow <-> from R.nw + (0, 0.2) to F.ne + (0, 0.2) \ -"Postprocess pipeline (PP)" above -.PE -.S P P -.DE -.P -The figure contains as dependencies all the EP, results and PP. -.P -Any change in any of the stages (or dependencies) will lead to a new -figure, \fBautomatically\fP. -.P -Figures contain the hash of the dataset in the title, so they can -be tracked. -.\"================================================================== -.NS "Article with figures" -.P -An example LaTeX document uses the name of the figures in nix: -.P -.VERBON - \\includegraphics[]{@fig.nbody.small@/scatter.png} -.VERBOFF -.P -Then, nix will extract all figure references, build them (re-running the -experiment if required) and build the report: \fC$ nix-build -garlic.report\fP -.P -We also have \fBreportTar\fP that puts the figures, LaTeX sources and -a Makefile required to build the report into a self-contained tar.gz. -.P -It can be compiled with \fBmake\fP (no nix required) so it can be sent -to a journal for further changes in the LaTeX source. -.\"================================================================== -.NS "Other changes" -.DL -.LI -We can provide the complete benchmark and BSC packages as a simple -overlay. This allows others to load their own changes on top or below our -benchmark. -.LI -We now avoid reevaluation of nixpkgs when setting the MPI -implementation (allows faster evaluations: 2 s/unit \(-> 2 s total). -.LI -Dependencies between experiments results are posible (experimental): -allows generation of a dataset + computation with dependencies. -.LE -.\"================================================================== -.NS "Questions?" -.defcolor gray rgb #bbbbbb -\m[gray] -.P -Example questions: -.DL -.LI -What software was used to build this presentation? -.LI -I used groff. -.LI -And the diagrams? -.LI -Same :-D -.LI -How long takes to build? -.LI -0,39s user 0,02s system 129% cpu 0,316 total -.LE -\m[] diff --git a/garlic/doc/slides/3.mm b/garlic/doc/slides/3.mm deleted file mode 100644 index 39b07d7..0000000 --- a/garlic/doc/slides/3.mm +++ /dev/null @@ -1,181 +0,0 @@ -.\"usage: NS title -.EQ -delim $$ -.EN -.de NS \" New Slide -.SK -.ev gp-top -.fam H -.vs 1.5m -.ll \\n[@ll]u -.lt \\n[@ll]u -.rs -.sp 2v -.ps +5 -\\$* -.ps -5 -.sp 1.5v -.br -.ev -.. -.\" Remove headers -.de TP -.. -.\" Bigger page number in footer -.de EOP -.fam H -.ps +2 -. ie o .tl \\*[pg*odd-footer] -. el .tl \\*[pg*even-footer] -. ds hd*format \\g[P] -. af P 0 -. ie (\\n[P]=1)&(\\n[N]=1) .tl \\*[pg*header] -. el .tl \\*[pg*footer] -. af P \\*[hd*format] -. tl ''\\*[Pg_type!\\n[@copy_type]]'' -.. -.\" Remove top and bottom margin -.VM 0 0 -.\" -.\" -.\" Set virtual page dimensions for a physical size of 16x12 cm -.PGFORM 14c 12c 1c 1 -.ND "January 14, 2021" -.\" .vs 1.5m -.S C 1.5m -.fam H -.\".PH "'cosas'''" -.COVER ms -.de cov@print-date -.DS C -.fam H -.B -\\*[cov*new-date] -.DE -.. -.TL -.ps 20 -.fam H -Garlic experiments -.AF "Barcelona Supercomputing Center" -.AU "Rodrigo Arias Mallo" -.COVEND -.PF "'''%'" -.\" Turn off justification -.SA 0 -.\".PF '''%' -.\"================================================================== -.NS "Approach 1" -This was the approach proposed for hybrids PM -.BL -.LI -Perform a granularity experiment with a \fIreasonable\fP problem size. -.LI -Take the best blocksize -.LI -Analyze strong and weak scaling with that blocksize. -.LI -Plot speedup and efficiency comparing multiple PM. -.LE 1 -The main problem is that it may lead to \fBbogus comparisons\fP. -Additionally, there is no guarantee that the best blocksize is the one -that performs better with more resources. -.\"================================================================== -.NS "Approach 2" -We want to measure scalability of the application \fBonly\fP, not mixed -with runtime overhead or lack of parallelism. -.P -We define \fBsaturation\fP as the state of an execution that allows a -program to potentially use all the resources (the name comes from the -transistor state, when current flows freely). -.P -Design a new experiment which tests multiple blocksizes and multiple -input sizes to find these states: \fBthe saturation experiment\fP. -.P -Begin with small problems and increase the size, so you get to the -answer quickly. -.\"================================================================== -.NS "Saturation experiment" -.2C -\X'pdf: pdfpic sat.png.tk.pdf -R 7c' -.NCOL -.S -1 -3 -.BL 1m -.LI -The objetive is to find the minimum input size that allows us to get -meaningful scalability results. -.LI -More precisely, a unit is in \fBsaturation state\fP if the median time -is below the \fBsaturation time limit\fP, currently set to 110% the minimum -median time (red dashed lines). -.LI -An input size is in \fBsaturation zone\fP if it allows at least K=3 -consecutive points in the saturation state. -.LI -With less than 512 particles/CPU (green line) we cannot be sure that the -performance is not impacted by the runtime overhead or lack of -parallelism. -.LE -.S P P -.1C -.\"================================================================== -.NS "Experiment space" -.2C -\X'pdf: pdfpic scaling-region.svg.tk.pdf -L 7c' -.NCOL -.S -1 -3 -.BL 1m -.LI -\fBSaturation limit\fP: small tasks cannot be solved without overhead -from the runtime, no matter the blocksize. -.LI -Different limits for OmpSs-2 and OpenMP. -.LI -Experiment A will show the scaling of the app while in the saturation -zone. -.LI -Experiment B will show that OpenMP scales bad in the last 2 points. -.LI -Experiment C will show that at some point both OpenMP and OmpSs-2 scale -bad. -.LE -.S P P -.1C -.\"================================================================== -.NS "Experiment space: experiment C" -.2C -\X'pdf: pdfpic scalability.svg.tk.pdf -L 7c' -.NCOL -.BL 1m -.LI -The experiment C will show a difference in performance when approached -to the saturation limit. -.LI -We could say that OmpSs-2 introduces less overhead, therefore allows -better scalability. -.LE -.1C -.\"================================================================== -.NS "Reproducibility" -How easy can we get the same results? Three properties R0 < R1 < R2 (no common nomenclature yet!): -.BL 1m -.LI -R0: \fBSame\fP humans on the \fBsame\fP machine obtain the same result -.LI -R1: \fBDifferent\fP humans on the \fBsame\fP machine obtain the same result -.LI -R2: \fBDifferent\fP humans on a \fBdifferent\fP machine obtain same result -.LE -.P -Garlic provides 2 types of properties: for software and for experimental -results: -.BL 1m -.LI -Software is R2: you can get the exact same software by any one, in any -machine -.LI -Experimental results are R1: you cannot change the machine MN4 (yet) -.LE -.P -Same experimental result means that the mean of your results is in the confidence -interval of our results \fBand the relative std is < 1%\fP. diff --git a/garlic/doc/slides/3.pdf b/garlic/doc/slides/3.pdf deleted file mode 100644 index 0bbb7dcf0c3e7bda53062758fcf21c0e2a67f93e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 122774 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%0DEs$f`t$ZX zZtG>k!6VVL6vY2N#x_WepV<`iW!vpM=KnQsHXe_PiaKZcT;@l8UY?$2 z)x%ct2j{)@_g+DDrH{Jbo8(;{->tJ9TqeI^RW!6(w(Y__E%Pq3E1qusn|z_wyYQ1m zXV0EJE?2$gQs?FTy3f*=Ixo+$EIu*k%a@YH=Cv#(fiCaP-(Trr$$v9W)r(pz2& zkM>1j`{$k!WM@BdwesX!qpG)ypgF7ab^Ml1n?6nQ*0X%MWU}6#4^9EWMxUny`&qu* z@%Uc-|Juddt3{AfkzSz@t6Gx>fe}R%!xrsuwFX5?t01B64(2 zqmjVHo_~`v+7}f_Wv`eVyJhdy7hAjAAuYnCPeJ!yz2dL?(A+C+t|fb`zkS-YX-`j2 zm#=&>G5h*DQv>91ZMB%m9qe-J)#g*OUAKy44!&Uaate3<@~TE71=o>Ytru%5C%c zxc$G6Pp8M%oz~rM^WgyV>1n#Vzun3f*Ndq*#Hl_ZZ?2#H-!I|uwW2E5UhrIS6^w-z z!L@}(vTxj@9<5Q8?P6=4@MpUQNAK579ox1_?9I9bwXU6g(Npn8HFMWgT~|a*eF%)*`wARwA%U^WeH^P-op( zKDkA&3)Z00>7MMFXn84WsdJ#>rG+arxTdjz#&SH9o@FhT!q$43cJ$;D1L>94Pi|hF z&aHRrMQ7him2Xk0f@@b#W9o^Us}8jVJo*i5DHv$`J!`$`@tIA_!R4~7YLm+R4KDM| zf4$jrH|@(RS@_r_s6qP$+L}x|dUDSO$;{pB+if(>u`}BQjdeiZ#mndKwT?!LUd_Ts%*&M4%4abP-c3DS+OGUel80mK z)lXM{#;v}%+Kdt6=1WI*X88G?+rIyAZt9Ek)$ew)r_~ud1qM#Mc-xi>QQ9SX&H2$V z*Q5Q=z1UjI2aCSWGc$6}$(|_fs{3`)%5#yB0w%L5X3N^OZ?ofnOKH3~Djxsm*X#A# zdR4F2Za+8A_V?-de?{r(%P-EhV?wmIHYoeuIpDYCC-YQ=MVWt(HmTef*RuMx`24wQ zTetPMjzD8i_{pNv({!2t*L*n0esX?SH&gcYb*=XAcfHm_Et3=7=j>>l=wbc0_Q^!m zXoH~D?M+U#y)~uxZsnFZ3AaH?Bi{+#|K9)q_ulZhjIe~Pqu1-28nJ%&S zr81&~*-qz+%;&6(+%xj0O1nzGK2r*xL{vNB+Hd#k1*k1}YW_w& zu0Ox7?`I1(MXkxjj&vGFbU>P@*QdP~e-b8JSkS=pU6XfbZ(q6*G$U{pT{J#t@%VN8 z|6QNb*K{|1lC6HT(f-%P{+@eZ1d*baweS(oVP#p4on^P4xKF!PGqL^Y;l!fSxEHSs ztY&*2f;S8DcRXbKa9%fh+XVaM*pkC-ydR#&|Nj+^8fbZ96eVS=^~xw=+%2JZ4$zDyLRnL?z4RMVsZb!>-+z)Mhc3z-nm!%{qEvEt5+Wm z^Xu#BnW6f-B=D7l^va{R8I^Wz);}&OHR*rZ?h{ulFIr}l7)*v%556(~7tJ=yWfEuQ zo@-le_NV&EME6PmWy)?OuHW;i3pE`&iZAVJoLI&BKQCHuN5c288>lTGI zcPzWneP~gQm(XsjCvF#iNok50Sxwc1_WJzJSA02`aN+ca4LecwE>?Q`?Y2kzBHOx1 z1DB_-{w#QzT?)ylB~>v~3NN_ATH@@nQ>@xRY3bxQCxMGe>1+R(&zUTx9RB=vbnm%l zXiqNlQA|le!H3P~?V`8m-Hnn(jdzF)IMaLyXw)sbA8p`2C#SPUnka>uvTee<9fwH@Eylf|O7^tgW{9#iH&5W}utN zrfP@(3uZ@6E{@_$&zZO*H6KrhKi36SXJ*oKSxljY3d_zHoa%EvTwPzcb^G?~FWyRv zqlDVr%)TurFMC>v$nuc5G+5CC+|9-mV->Gm!boELC zU-_gju~Xb|d>Xr6l&#A4rmnd40nw`FUEgl^^fju%3!*QVy!CCrUJ35Kx8q}z9=!ek zV$qeE=RmE%Cw#8IyPc9Egj^S{bj%aU-RLp#qW#WBcoFgL-rnkKYa-9veD1k;+guMd z9xsb!<{xmh650Ce?T6(Vucx|h*~WG4zzZG?XzN66o&WOX^XsHaO788cTphl?E{Yp7 z5Wl!c!DmN8p9C)sfByT-#}!9g5M^F!YU*+MdYiR&bFHkc=hy%Hc{_jq-&d>G$L%ai z4GX&_p)V&TRrU31c>cbh&!qGB6yDuc`dH8yQD}pr>WfR%+dMYGySb;ow$x72=+YJ2 z8MtL-J*{EWq3-MJj%Y zUv|PugO=_pn|YC&({y8Y6uio3Wq$)It3fwXUN=8S7hNc zYmxO>@?=d*0Hg9!KDi%PJTsQOly#jw`+Lo`S(mckOTTzsEGBN%{fYhc>z;crjx@2` zl~#0>yuG!x^F`dt!~FK3^OGFi#dRV+9AM^Ob1_LMKRO};bcPo4HdUDXp=pQu zRFB;m#l^*M&Rn^2#XtGRo=W2#D~><@I8$c&>D2B&E=Ec2R=VqB^g9aXI`s8NHK!zKd^}Ob~xV+-4Ec^PjsoSi| z>Vf~p&9QYUD;I`wwfEk;^RfX_j-}plJ*eoYKV2u%=$!i}`=3vQ1+E`E=JqMw-TnB} z>GA*m{eIuSR|L@-ThJY(E;#WSZ^#MRE-NpVK!I4lNSACa)#;aCVU}UFmFl z$!xu-i-=lvK>$~KYg^P!SL<6n_b$9_hWKvj(?w4TRVudMuwVY~O;B9iy;LiK_jfm^ z^Z%*8yv+BMQgd_j>uYP7xk34Ce*M47-FNFQ_!}6ukc_2ujW4_7Ye4rn&P)VoRRZ+6DYZtA#p-D}l6PD^M*a_Q4W z{q7oCT1xf*ie*48#~Bx0jeqmkSbnvca3*-ue-n|uzW6m|7pF&=AI|3Uo%jFt-*Pk` znqLYEx9!k)q2aOeMVagRbJpz3|D98VmRqTR>Mp)K*rQjKa*AofnVTnzlS@s`xpsEQ zO)}yC*Lw0rsF^A}ImmWRyw%(c8iZaS-gMa~dG4P#HPx#x&bGJEze@ z=CPi6v8eZ5S<;M+R#LAQ6)OGe{v+KJmm1sz86kVI=*mKPAEc7`(}JsuwtDA@tX(bE z?6}yxa2IsUPV=6A)g@1L$-SnNkM!tqne4QFRC2}ciGrS#`Xc+Y`|rJ&YO0NJUDU*D z{97A4-feoi>u}sfW0!U3y7}auB*Ml?UM!lF85>D#}S*#v**>(bDLbe}Itg{JPJx=L#Qu;VXaejh@!g7b}eBPAs2$QTr$} z-1fPeZc-x7o}dO_Q21VzE~jA7KyuQ=W9AJC)1eVl@_W~O0k`~L95OpJDkD7SeG?S7 z)!ueLFy#_-aCnzS=`xATovQ_1O4jS%*Jp8wUazxgYv_k%Zu!$DLJfJbXwuKvk}JWV zH+9c5t-c>wc=v(wWat>|1=p3vQ$2n+`xTY$JDc8W-W4}@`&Y@mzHHFON>Itg_chP0 z|8*vOS=OJBCEojb-^<@K!_Q1|{j%of4J$8ZNT(Upm{_7Ls%m(-kio^Id_jzm>&Bx> z-5JG?eGuL3k2h6Mp3#%K-=FcWbVIt_i#00KU!HXKQBRNUv$D!WMCjzcEf+7t`UFC6 zx4kHsZ#Vy_t+;@W_;@C@LGI)aekj& zqR+K+6wsGVno=ZM@8# zFJ4_;J-_mqFomYPQ`$Q{f>Tb^|X;t#dj~U@*w(&v_cIS6!jSl+pdm&7X?f zFG?Ro%+RGoiH91ubqhHqRqWr~_5w5u7SAEI_tYBbwB3tES0w9~d{}IEI*`jW>zl(& z2`;X$rk}3<%xh!YnFejOio}M@^3?O%P+?tm>q-2_li!@&FQk5nGUkPs-|2rQnpIkR zwl8W{+xBOePNTS&ixtC`tH@~+;5L~zwJVV@G;4i=5OvN zpKk8ja_g?n&N&xXf7V-marJp6ctS8yjt%L$vgpYrAs_ZRrHL26%%0DIi1^1nQ|^44 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 QBSUjTBQ8}{SARDy0KqwSod5s; diff --git a/garlic/doc/slides/Makefile b/garlic/doc/slides/Makefile deleted file mode 100644 index 5dfe6b1..0000000 --- a/garlic/doc/slides/Makefile +++ /dev/null @@ -1,29 +0,0 @@ -GENFIG=scaling-region.svg.tk.pdf \ - sat.png.tk.pdf \ - scalability.svg.tk.pdf -GENPDF=2.pdf 3.pdf - -all: $(GENPDF) - -keep_figs: $(GENFIG) - -%.svg.pdf: %.svg Makefile - inkscape $< --export-pdf=$@ - -%.png.pdf: %.png Makefile - gm convert $< -density 30 $@ - -%.tk.pdf: %.pdf Makefile - pdftk $< output $@ - -%.pdf: %.mm $(GENFIG) - groff -Tpdf -e -t -p -P-p12c,16c -mm $< > $@ - -killall -HUP mupdf - -watch: - while [ 1 ]; do inotifywait -e modify *; make; done - -.PRECIOUS: *.svg.pdf *.tk.pdf - -clean: - rm -f $(GENFIG) $(GENPDF) diff --git a/garlic/doc/slides/overview.svg b/garlic/doc/slides/overview.svg deleted file mode 100644 index e36e047..0000000 --- a/garlic/doc/slides/overview.svg +++ /dev/null @@ -1,479 +0,0 @@ - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - Garlic overview - bscpkgs - - Isolation - Apps - Postprocess - Replicable - - - - - - - - - - - - - - - - - - Filesystem isolation ensures the appsalways use the same software libraries - Zero human intervention, all datapostprocessing scripts are included - Different team, same results onthe same system (ACM) - Repository with BSC and custompackages - nix - Backwards tracking - Every result is hashed by the softwareused to generate it (datasets, plots ...) - Reproducible builds from source usingthe nix package manager - Several benchmark programs withmultiple programming models - nixpkgs - Large repository of common packages,maintaned by the community - Reproducible - Different team, same results ona different system (ACM). - Is a complete benchmark framework(green = not mature yet) - - diff --git a/garlic/doc/slides/sat.png b/garlic/doc/slides/sat.png deleted file mode 100644 index bca6bed66d6e30a8ea0b5814d4d1a85e5df78e05..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 79137 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 Y{^*Zd$=@Ld%|VuUy85}Sb4q9e04!CrVE_OC diff --git a/garlic/doc/slides/scalability.svg b/garlic/doc/slides/scalability.svg deleted file mode 100644 index 19fb326..0000000 --- a/garlic/doc/slides/scalability.svg +++ /dev/null @@ -1,265 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - Efficiency - Nodes: log(n) - - - Too small - OmpSs-2 scale bad - OpenMP scale bad - - - - We can explain this difference - - - diff --git a/garlic/doc/slides/scaling-region.svg b/garlic/doc/slides/scaling-region.svg deleted file mode 100644 index 3cb2857..0000000 --- a/garlic/doc/slides/scaling-region.svg +++ /dev/null @@ -1,806 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - Problemsize: log(N) - Nodes: log(n) - - Constant workper CPU - - - OpenMPsat. limit - OmpSs-2sat. limit - - Too small - - ENOMEM - - - - - - - - - - - - - - - - - - - - - - - - - - - - Strong - A - B - C - - - - - Weak - - - - - - - Saturation - OpenMP scale bad - OmpSs-2 scale bad - ENOTIME - - - Saturationzone - - - - - 1 task/CPUlimit - - - diff --git a/garlic/doc/ug.ms b/garlic/doc/ug.ms deleted file mode 100644 index 8b7c579..0000000 --- a/garlic/doc/ug.ms +++ /dev/null @@ -1,1691 +0,0 @@ -.\" Point size fails when rending html in the code blocks -.\".nr PS 11p -.nr GROWPS 3 -.nr PSINCR 2p -.fam P -.\" =================================================================== -.\" Some useful macros -.\" =================================================================== -.\" -.\" Code start (CS) and end (CE) blocks -.de CS -.DS L -\fC -.. -.de CE -\fP -.DE -.. -.\" Code inline: -.\" .CI "inline code" -.de CI -\fC\\$1\fP\\$2 -.. -.\" =================================================================== -.\" \& -.\" .sp 3c -.\" .LG -.\" .LG -.\" .LG -.\" .LG -.\" Garlic: User guide -.\" .br -.\" .NL -.\" Rodrigo Arias Mallo -.\" .br -.\" .I "Barcelona Supercomputing Center" -.\" .br -.\" \*[curdate] -.\" .sp 17c -.\" .DE -.\" .CI \*[gitcommit] -.TL -Garlic: User Guide -.AU -Rodrigo Arias Mallo -.AI -Barcelona Supercomputing Center -.AB -.LP -This document contains all the information to configure and use the -garlic benchmark. All stages from the development to the publication -are covered, as well as the introductory steps required to setup the -machines. -.DS L -.SM -\fC -Generated on \*[curdate] -Git commit: \*[gitcommit] -\fP -.DE -.AE -.\" =================================================================== -.NH 1 -Introduction -.LP -The garlic framework is designed to fulfill all the requirements of an -experimenter in all the steps up to publication. The experience gained -while using it suggests that we move along three stages despicted in the -following diagram: -.DS L -.SM -.PS 5 -linewid=1.4; -arcrad=1; -right -S: box "Source" "code" -line "Development" invis -P: box "Program" -line "Experimentation" invis -R:box "Results" -line "Data" "exploration" invis -F:box "Figures" -# Creates a "cycle" around two boxes -define cycle { - arc cw from 1/2 of the way between $1.n and $1.ne \ - to 1/2 of the way between $2.nw and $2.n ->; - arc cw from 1/2 of the way between $2.s and $2.sw \ - to 1/2 of the way between $1.se and $1.s ->; -} -cycle(S, P) -cycle(P, R) -cycle(R, F) -.PE -.DE -In the development phase the experimenter changes the source code in -order to introduce new features or fix bugs. Once the program is -considered functional, the next phase is the experimentation, where -several experiment configurations are tested to evaluate the program. It -is common that some problems are spotted during this phase, which lead -the experimenter to go back to the development phase and change the -source code. -.PP -Finally, when the experiment is considered completed, the -experimenter moves to the next phase, which envolves the exploration of -the data generated by the experiment. During this phase, it is common to -generate results in the form of plots or tables which provide a clear -insight in those quantities of interest. It is also common that after -looking at the figures, some changes in the experiment configuration -need to be introduced (or even in the source code of the program). -.PP -Therefore, the experimenter may move forward and backwards along three -phases several times. The garlic framework provides support for all the -three stages (with different degrees of madurity). -.\" =================================================================== -.NH 2 -Machines and clusters -.LP -Our current setup employs multiple machines to build and execute the -experiments. Each cluster and node has it's own name and will be -different in other clusters. Therefore, instead of using the names of -the machines we use machine classes to generalize our setup. Those -machine clases currently correspond to a physical machine each: -.IP \(bu 12p -.B Builder -(xeon07): runs the nix-daemon and performs the builds in /nix. Requires -root access to setup the -.I nix-daemon -with multiple users. -.IP \(bu -.B Target -(MareNostrum 4 compute nodes): the nodes where the experiments -are executed. It doesn't need to have /nix installed or root access. -.IP \(bu -.B Login -(MareNostrum 4 login nodes): used to allocate resources and run jobs. It -doesn't need to have /nix installed or root access. -.IP \(bu -.B Laptop -(where the keyboard is attached, can be anything): used to connect to the other machines. -No root access is required or /nix, but needs to be able to connect to -the builder. -.LP -The machines don't need to be different of each others, as one machine -can implement several classes. For example the laptop can act as the -builder too but is not recommended. Or the login machine can also -perform the builds, but is not possible yet in our setup. -.\" =================================================================== -.NH 2 -Reproducibility -.LP -An effort to facilitate the reproducibility of the experiments has been -done, with varying degrees of success. The names of the different levels -of reproducibility have not been yet standarized, so we define our own -to avoid any confusion. We define three levels of reproducibility based -on the people and the machine involved: -.IP \(bu 12p -R0: The \fIsame\fP people on the \fIsame\fP machine obtain the same result -.IP \(bu -R1: \fIDifferent\fP people on the \fIsame\fP machine obtain the same result -.IP \(bu -R2: \fIDifferent\fP people on a \fIdifferent\fP machine obtain the same result -.LP -The garlic framework distinguishes two types of results: the result of -\fIbuilding a derivation\fP (usually building a binary or a library from the -sources) and the results of the \fIexecution of an experiment\fP (typically -those are the measurements performed during the execution of the program -of study). -.PP -For those two types, the meaning of -.I "same result" -is different. In the case of building a binary, we define the same -result if it is bit-by-bit identical. In the packages provided by nixos -is usually the case except some rare cases. One example is that during the build process, -a directory is listed by the order of the inodes, giving a random order -which is different between builds. These problems are tracked by the -.URL https://r13y.com/ r13y -project. About 99% of the derivations of the minimal package set achieve -the R2 property. -.PP -On the other hand, the results of the experiments are always bit-by-bit -different. So we change the definition to state that they are the same -if the conclusions that can be obtained are the same. In particular, we -assume that the results are within the confidence interval. With this -definition, all experiments are currently R1. The reproducibility level -R2 is not posible yet as the software is compiled to support only the -target machine, with an specific interconnection. -.\" =================================================================== -.bp -.NH 1 -Preliminary steps -.LP -The peculiarities of our setup require that users perform some actions -to use the garlic framework. The content of this section is only -intended for the users of our machines, but can serve as reference in -other machines. -.PP -The names of the machine classes are used in the command line prompt -instead of the actual name of the machine, to indicate that the command -needs to be executed in the stated machine class, for example: -.CS -builder% echo hi -hi -.CE -When the machine class is not important, it is ignored and only the -.CI "%" -prompt appears. -.\" =================================================================== -.NH 2 -Configure your laptop -.LP -To easily connect to the builder (xeon07) in one step, configure the SSH -client to perform a jump over the Cobi login node. The -.I ProxyJump -directive is only available in version 7.3 and upwards. Add the -following lines in the -.CI \(ti/.ssh/config -file of your laptop: -.CS -Host cobi - HostName ssflogin.bsc.es - User your-username-here - -Host xeon07 - ProxyJump cobi - HostName xeon07 - User your-username-here -.CE -You should be able to connect to the builder typing: -.CS -laptop$ ssh xeon07 -.CE -To spot any problems try with the -.CI -v -option to enable verbose output. -.\" =================================================================== -.NH 2 -Configure the builder (xeon07) -.LP -In order to use nix you would need to be able to download the sources -from Internet. Usually the download requires the ports 22, 80 and 443 -to be open for outgoing traffic. -.PP -Check that you have network access in -xeon07 provided by the environment variables \fIhttp_proxy\fP and -\fIhttps_proxy\fP. Try to fetch a webpage with curl, to ensure the proxy -is working: -.CS -xeon07$ curl x.com -x -.CE -.\" =================================================================== -.NH 3 -Create a new SSH key -.LP -There is one DSA key in your current home called "cluster" that is no -longer supported in recent SSH versions and should not be used. Before -removing it, create a new one without password protection leaving the -passphrase empty (in case that you don't have one already created) by -running: -.CS -xeon07$ ssh-keygen -Generating public/private rsa key pair. -Enter file in which to save the key (\(ti/.ssh/id_rsa): -Enter passphrase (empty for no passphrase): -Enter same passphrase again: -Your identification has been saved in \(ti/.ssh/id_rsa. -Your public key has been saved in \(ti/.ssh/id_rsa.pub. -\&... -.CE -By default it will create the public key at \f(CW\(ti/.ssh/id_rsa.pub\fP. -Then add the newly created key to the authorized keys, so you can -connect to other nodes of the Cobi cluster: -.CS -xeon07$ cat \(ti/.ssh/id_rsa.pub >> \(ti/.ssh/authorized_keys -.CE -Finally, delete the old "cluster" key: -.CS -xeon07$ rm \(ti/.ssh/cluster \(ti/.ssh/cluster.pub -.CE -And remove the section in the configuration \f(CW\(ti/.ssh/config\fP -where the key was assigned to be used in all hosts along with the -\f(CWStrictHostKeyChecking=no\fP option. Remove the following lines (if -they exist): -.CS -Host * - IdentityFile \(ti/.ssh/cluster - StrictHostKeyChecking=no -.CE -By default, the SSH client already searchs for a keypair called -\f(CW\(ti/.ssh/id_rsa\fP and \f(CW\(ti/.ssh/id_rsa.pub\fP, so there is -no need to manually specify them. -.PP -You should be able to access the login node with your new key by using: -.CS -xeon07$ ssh ssfhead -.CE -.\" =================================================================== -.NH 3 -Authorize access to the repository -.LP -The sources of BSC packages are usually downloaded directly from the PM -git server, so you must be able to access all repositories without a -password prompt. -.PP -Most repositories are open to read for logged in users, but there are -some exceptions (for example the nanos6 repository) where you must have -explicitly granted read access. -.PP -Copy the contents of your public SSH key in \f(CW\(ti/.ssh/id_rsa.pub\fP -and paste it in GitLab at -.CS -https://pm.bsc.es/gitlab/profile/keys -.CE -Finally verify the SSH connection to the server works and you get a -greeting from the GitLab server with your username: -.CS -xeon07$ ssh git@bscpm03.bsc.es -PTY allocation request failed on channel 0 -Welcome to GitLab, @rarias! -Connection to bscpm03.bsc.es closed. -.CE -Verify that you can access the nanos6 repository (otherwise you -first need to ask to be granted read access), at: -.CS -https://pm.bsc.es/gitlab/nanos6/nanos6 -.CE -Finally, you should be able to download the nanos6 git -repository without any password interaction by running: -.CS -xeon07$ git clone git@bscpm03.bsc.es:nanos6/nanos6.git -.CE -Which will create the nanos6 directory. -.\" =================================================================== -.NH 3 -Authorize access to MareNostrum 4 -.LP -You will also need to access MareNostrum 4 from the xeon07 machine, in -order to run experiments. Add the following lines to the -\f(CW\(ti/.ssh/config\fP file and set your user name: -.CS -Host mn0 mn1 mn2 - User -.CE -Then copy your SSH key to MareNostrum 4 (it will ask you for your login -password): -.CS -xeon07$ ssh-copy-id -i \(ti/.ssh/id_rsa.pub mn1 -.CE -Finally, ensure that you can connect without a password: -.CS -xeon07$ ssh mn1 -\&... -login1$ -.CE -.\" =================================================================== -.NH 3 -Clone the bscpkgs repository -.LP -Once you have Internet and you have granted access to the PM GitLab -repositories you can begin building software with nix. First ensure -that the nix binaries are available from your shell in xeon07: -.CS -xeon07$ nix --version -nix (Nix) 2.3.6 -.CE -Now you are ready to build and install packages with nix. Clone the -bscpkgs repository: -.CS -xeon07$ git clone git@bscpm03.bsc.es:rarias/bscpkgs.git -.CE -Nix looks in the current folder for a file named \f(CWdefault.nix\fP for -packages, so go to the bscpkgs directory: -.CS -xeon07$ cd bscpkgs -.CE -Now you should be able to build nanos6 (which is probably already -compiled): -.CS -xeon07$ nix-build -A bsc.nanos6 -\&... -/nix/store/...2cm1ldx9smb552sf6r1-nanos6-2.4-6f10a32 -.CE -The installation is placed in the nix store (with the path stated in -the last line of the build process), with the \f(CWresult\fP symbolic -link pointing to the same location: -.CS -xeon07$ readlink result -/nix/store/...2cm1ldx9smb552sf6r1-nanos6-2.4-6f10a32 -.CE -.\" ################################################################### -.NH 3 -Configure garlic -.LP -In order to launch experiments in the -.I target -machine, it is required to configure nix to allow a directory to be -available during the build process, where the results will be stored -before being copied in the nix store. Create a new -.CI garlic -directory in your -personal cache directory and copy the full path: -.CS -xeon07$ mkdir -p \(ti/.cache/garlic -xeon07$ readlink -f \(ti/.cache/garlic -/home/Computational/rarias/.cache/garlic -.CE -Then create the nix configuration directory (if it has not already been -created): -.CS -xeon07$ mkdir -p \(ti/.config/nix -.CE -And add the following line in the -.CI \(ti/.config/nix/nix.conf -file, replacing it with the path you copied before: -.CS -.SM -extra-sandbox-paths = /garlic=/home/Computational/rarias/.cache/garlic -.CE -This option creates a virtual directory called -.CI /garlic -inside the build environment, whose contents are the ones you specify at -the right hand side of the equal sign (in this case the -.CI \(ti/.cache/garlic -directory). It will be used to allow the results of the experiments to -be passed to nix from the -.I target -machine. -.\" ################################################################### -.NH 3 -Run the garlic daemon (optional) -.LP -The garlic benchmark has a daemon which can be used to -automatically launch the experiments in the -.I target -machine on demand, when they are required to build other derivations, so -they can be launched without user interaction. The daemon creates some -FIFO pipes to communicate with the build environment, and must be -running to be able to run the experiments. To execute it, go to the -.CI bscpkgs/garlic -directory and run -.CS -xeon07$ nix-shell -nix-shell$ -.CE -to enter the nix shell (or specify the path to the -.CI garlic/shell.nix -file as argument). Then, run the daemon inside the nix shell: -.CS -nix-shell$ garlicd -garlicd: Waiting for experiments ... -.CE -Notice that the daemon stays running in the foreground, waiting for -experiments. At this moment, it can only process one experiment at a -time. -.\" =================================================================== -.NH 2 -Configure the login and target (MareNostrum 4) -.LP -In order to execute the programs in MareNostrum 4, you first need load -some utilities in the PATH. Add to the end of the file -\f(CW\(ti/.bashrc\fP in MareNostrum 4 the following line: -.CS -export PATH=/gpfs/projects/bsc15/nix/bin:$PATH -.CE -Then logout and login again (our source the \f(CW\(ti/.bashrc\fP file) -and check that now you have the \f(CWnix-develop\fP command available: -.CS -login1$ which nix-develop -/gpfs/projects/bsc15/nix/bin/nix-develop -.CE -The new utilities are available both in the login nodes and in the -compute (target) nodes, as they share the file system over the network. -.\" =================================================================== -.bp -.NH 1 -Development -.LP -During the development phase, a functional program is produced by -modifying its source code. This process is generally cyclic: the -developer needs to compile, debug and correct mistakes. We want to -minimize the delay times, so the programs can be executed as soon as -needed, but under a controlled environment so that the same behavior -occurs during the experimentation phase. -.PP -In particular, we want that several developers can reproduce the -same development environment so they can debug each other programs -when reporting bugs. Therefore, the environment must be carefully -controlled to avoid non-reproducible scenarios. -.PP -The current development environment provides an isolated shell with a -clean environment, which runs in a new mount namespace where access to -the filesystem is restricted. Only the project directory and the nix -store are available (with some other exceptions), to ensure that you -cannot accidentally link with the wrong library or modify the build -process with a forgotten environment variable in the \f(CW\(ti/.bashrc\fP -file. -.\" =================================================================== -.NH 2 -Getting the development tools -.LP -To create a development -environment, first copy or download the sources of your program (not the -dependencies) in a new directory placed in the target machine -(MareNostrum\~4). -.PP -The default environment contains packages commonly used to develop -programs, listed in the \fIgarlic/index.nix\fP file: -.\" FIXME: Unify garlic.unsafeDevelop in garlic.develop, so we can -.\" specify the packages directly -.CS -develop = let - commonPackages = with self; [ - coreutils htop procps-ng vim which strace - tmux gdb kakoune universal-ctags bashInteractive - glibcLocales ncurses git screen curl - # Add more nixpkgs packages here... - ]; - bscPackages = with bsc; [ - slurm clangOmpss2 icc mcxx perf tampi impi - # Add more bsc packages here... - ]; - ... -.CE -If you need additional packages, add them to the list, so that they -become available in the environment. Those may include any dependency -required to build your program. -.PP -Then use the build machine (xeon07) to build the -.I garlic.develop -derivation: -.CS -build% nix-build -A garlic.develop -\&... -build% grep ln result -ln -fs /gpfs/projects/.../bin/stage1 .nix-develop -.CE -Copy the \fIln\fP command and run it in the target machine -(MareNostrum\~4), inside the new directory used for your program -development, to create the link \fI.nix-develop\fP (which is used to -remember your environment). Several environments can be stored in -different directories using this method, with different packages in each -environment. You will need -to rebuild the -.I garlic.develop -derivation and update the -.I .nix-develop -link after the package list is changed. Once the -environment link is created, there is no need to repeat these steps again. -.PP -Before entering the environment, you will need to access the required -resources for your program, which may include several compute nodes. -.\" =================================================================== -.NH 2 -Allocating resources for development -.LP -Our target machine (MareNostrum 4) provides an interactive shell, that -can be requested with the number of computational resources required for -development. To do so, connect to the login node and allocate an -interactive session: -.CS -% ssh mn1 -login% salloc ... -target% -.CE -This operation may take some minutes to complete depending on the load -of the cluster. But once the session is ready, any subsequent execution -of programs will be immediate. -.\" =================================================================== -.NH 2 -Accessing the developement environment -.PP -The utility program \fInix-develop\fP has been designed to access the -development environment of the current directory, by looking for the -\fI.nix-develop\fP file. It creates a namespace where the required -packages are installed and ready to be used. Now you can access the -newly created environment by running: -.CS -target% nix-develop -develop% -.CE -The spawned shell contains all the packages pre-defined in the -\fIgarlic.develop\fP derivation, and can now be accessed by typing the -name of the commands. -.CS -develop% which gcc -/nix/store/azayfhqyg9...s8aqfmy-gcc-wrapper-9.3.0/bin/gcc -develop% which gdb -/nix/store/1c833b2y8j...pnjn2nv9d46zv44dk-gdb-9.2/bin/gdb -.CE -If you need additional packages, you can add them in the -\fIgarlic/index.nix\fP file as mentioned previously. To keep the -same current resources, so you don't need to wait again for the -resources to be allocated, exit only from the development shell: -.CS -develop% exit -target% -.CE -Then update the -.I .nix-develop -link and enter into the new develop environment: -.CS -target% nix-develop -develop% -.CE -.\" =================================================================== -.NH 2 -Execution -.LP -The allocated shell can only execute tasks in the current node, which -may be enough for some tests. To do so, you can directly run your -program as: -.CS -develop$ ./program -.CE -If you need to run a multi-node program, typically using MPI -communications, then you can do so by using srun. Notice that you need -to allocate several nodes when calling salloc previously. The srun -command will execute the given program \fBoutside\fP the development -environment if executed as-is. So we re-enter the develop environment by -calling nix-develop as a wrapper of the program: -.\" FIXME: wrap srun to reenter the develop environment by its own -.CS -develop$ srun nix-develop ./program -.CE -.\" =================================================================== -.NH 2 -Debugging -.LP -The debugger can be used to directly execute the program if is executed -in only one node by using: -.CS -develop$ gdb ./program -.CE -Or it can be attached to an already running program by using its PID. -You will need to first connect to the node running it (say target2), and -run gdb inside the nix-develop environment. Use -.I squeue -to see the compute nodes running your program: -.CS -login$ ssh target2 -target2$ cd project-develop -target2$ nix-develop -develop$ gdb -p $pid -.CE -You can repeat this step to control the execution of programs running in -different nodes simultaneously. -.PP -In those cases where the program crashes before being able to attach the -debugger, enable the generation of core dumps: -.CS -develop$ ulimit -c unlimited -.CE -And rerun the program, which will generate a core file that can be -opened by gdb and contains the state of the memory when the crash -happened. Beware that the core dump file can be very large, depending on -the memory used by your program at the crash. -.\" =================================================================== -.NH 2 -Git branch name convention -.LP -The garlic benchmark imposes a set of requirements to be meet for each -application in order to coordinate the execution of the benchmark and -the gathering process of the results. -.PP -Each application must be available in a git repository so it can be -included into the garlic benchmark. The different combinations of -programming models and communication schemes should be each placed in -one git branch, which are referred to as \fIbenchmark branches\fP. At -least one benchmark branch should exist and they all must begin with the -prefix \f(CWgarlic/\fP (other branches will be ignored). -.PP -The branch name is formed by adding keywords separated by the "+" -character. The keywords must follow the given order and can only -appear zero or once each. At least one keyword must be included. The -following keywords are available: -.IP \f(CWmpi\fP 5m -A significant fraction of the communications uses only the standard MPI -(without extensions like TAMPI). -.IP \f(CWtampi\fP -A significant fraction of the communications uses TAMPI. -.IP \f(CWsend\fP -A significant part of the MPI communication uses the blocking family of -methods -.I MPI_Send , ( -.I MPI_Recv , -.I MPI_Gather "...)." -.IP \f(CWisend\fP -A significant part of the MPI communication uses the non-blocking family -of methods -.I MPI_Isend , ( -.I MPI_Irecv , -.I MPI_Igather "...)." -.IP \f(CWrma\fP -A significant part of the MPI communication uses remote memory access -(one-sided) methods -.I MPI_Get , ( -.I MPI_Put "...)." -.IP \f(CWseq\fP -The complete execution is sequential in each process (one thread per -process). -.IP \f(CWomp\fP -A significant fraction of the execution uses the OpenMP programming -model. -.IP \f(CWoss\fP -A significant fraction of the execution uses the OmpSs-2 programming -model. -.IP \f(CWtask\fP -A significant part of the execution involves the use of the tasking -model. -.IP \f(CWtaskfor\fP -A significant part of the execution uses the taskfor construct. -.IP \f(CWfork\fP -A significant part of the execution uses the fork-join model (including -hybrid programming techniques with parallel computations and sequential -communications). -.IP \f(CWsimd\fP -A significant part of the computation has been optimized to use SIMD -instructions. -.LP -In the -.URL #appendixA "Appendix A" -there is a flowchart to help the decision -process of the branch name. Additional user defined keywords may be -added at the end using the separator "+" as well. User keywords must -consist of capital alphanumeric characters only and be kept short. These -additional keywords must be different (case insensitive) to the already -defined above. Some examples: -.CS -garlic/mpi+send+seq -garlic/mpi+send+omp+fork -garlic/mpi+isend+oss+task -garlic/tampi+isend+oss+task -garlic/tampi+isend+oss+task+COLOR -garlic/tampi+isend+oss+task+COLOR+BTREE -.CE -.\" =================================================================== -.NH 2 -Initialization time -.LP -It is common for programs to have an initialization phase prior to the -execution of the main computation task which is the objective of the study. -The initialization phase is usually not considered when taking -measurements, but the time it takes to complete can limit seriously the -amount of information that can be extracted from the computation phase. -As an example, if the computation phase is in the order of seconds, but -the initialization phase takes several minutes, the number of runs would -need to be set low, as the units could exceed the time limits. Also, the -experimenter may be reluctant to modify the experiments to test other -parameters, as the waiting time for the results is unavoidably large. -.PP -To prevent this problem the programs must reduce the time of the -initialization phase to be no larger than the computation time. To do -so, the initialization phase can be optimized either with -parallelization, or it can be modified to store the result of the -initialization to the disk to be later at the computation phase. In the -garlic framework an experiment can have a dependency over the results of -another experiment (the results of the initialization). The -initialization results will be cached if the derivation is kept -invariant, when modifying the computation phase parameters. -.\" =================================================================== -.NH 2 -Measurement of the execution time -.LP -The programs must measure the wall time of the computation phase following a -set of rules. The way in which the wall time is measured is very important to -get accurate results. The measured time must be implemented by using a -monotonic clock which is able to correct the drift of the oscillator of -the internal clock due to changes in temperature. This clock must be -measured in C and C++ with: -.CS -clock_gettime(CLOCK_MONOTONIC, &ts); -.CE -A helper function can be used the approximate value of the clock in a -double precision float, in seconds: -.CS -double get_time() -{ - struct timespec tv; - if(clock_gettime(CLOCK_MONOTONIC, &tv) != 0) - { - perror("clock_gettime failed"); - exit(EXIT_FAILURE); - } - return (double)(ts.tv_sec) + - (double)ts.tv_nsec * 1.0e-9; -} -.CE -The start and end points must be measured after the synchronization of -all the processes and threads, so the complete computation work can be -bounded to fit inside the measured interval. An example for a MPI -program: -.CS -double start, end, delta_time; -MPI_Barrier(); -start = get_time(); -run_simulation(); -MPI_Barrier(); -end = get_time(); -delta_time = end - start; -.CE -.\" =================================================================== -.NH 2 -Format of the execution time -.LP -The measured execution time must be printed to the standard output -(stdout) in scientific notation with at least 7 significative digits. -The following the printf format (or the strict equivalent in other languages) -must be used: -.CS -printf("time %e\\n", delta_time); -.CE -The line must be printed alone and only once: for MPI programs, -only one process shall print the time: -.CS -if(rank == 0) printf("time %e\\n", delta_time); -.CE -Other lines can be printed in the stdout, but without the -.I time -prefix, so that the following pipe can be used to capture the line: -.CS -% ./app | grep "^time" -1.234567e-01 -.CE -Ensure that your program follows this convention by testing it with the -above -.I grep -filter; otherwise the results will fail to be parsed when building -the dataset with the execution time. -.\" =================================================================== -.bp -.NH 1 -Experimentation -.LP -During the experimentation, a program is studied by running it and -measuring some properties. The experimenter is in charge of the -experiment design, which is typically controlled by a single -.I nix -file placed in the -.CI garlic/exp -subdirectory. -Experiments are formed by several -.I "experimental units" -or simply -.I units . -A unit is the result of each unique configuration of the experiment -(typically involves the cartesian product of all factors) and -consists of several shell scripts executed sequentially to setup the -.I "execution environment" , -which finally launch the actual program being analyzed. -The scripts that prepare the environment and the program itself are -called the -.I stages -of the execution and altogether form the -.I "execution pipeline" -or simply the -.I pipeline . -The experimenter must know with very good details all the stages -involved in the pipeline, as they have a large impact on the execution. -.PP -Additionally, the execution time is impacted by the target machine in -which the experiments run. The software used for the benchmark is -carefully configured and tuned for the hardware used in the execution; -in particular, the experiments are designed to run in MareNostrum 4 -cluster with the SLURM workload manager and the Omni-Path -interconnection network. In the future we plan to add -support for other clusters in order to execute the experiments in other -machines. -.\"##################################################################### -.NH 2 -Isolation -.LP -The benchmark is designed so that both the compilation of every software -package and the execution of the experiment is performed under strict -conditions. We can ensure that two executions of the same experiment are -actually running the same program in the same software environment. -.PP -All the software used by an experiment is included in the -.I "nix store" -which is, by convention, located at the -.CI /nix -directory. Unfortunately, it is common for libraries to try to load -software from other paths like -.CI /usr -or -.CI /lib . -It is also common that configuration files are loaded from -.CW /etc -and from the home directory of the user that runs the experiment. -Additionally, some environment variables are recognized by the libraries -used in the experiment, which change their behavior. As we cannot -control the software and configuration files in those directories, we -couldn't guarantee that the execution behaves as intended. -.PP -In order to avoid this problem, we create a -.I sandbox -where only the files in the nix store are available (with some other -exceptions). Therefore, even if the libraries try to access any path -outside the nix store, they will find that the files are not there -anymore. Additionally, the environment variables are cleared before -entering the environment (with some exceptions as well). -.\"##################################################################### -.NH 2 -Execution pipeline -.LP -Several predefined stages form the -.I standard -execution pipeline and are defined in the -.I stdPipeline -array. The standard pipeline prepares the resources and the environment -to run a program (usually in parallel) in the compute nodes. It is -divided in two main parts: -connecting to the target machine to submit a job and executing the job. -Finally, the complete execution pipeline ends by running the actual -program, which is not part of the standard pipeline, as should be -defined differently for each program. -.\"##################################################################### -.NH 3 -Job submission -.LP -Some stages are involved in the job submission: the -.I trebuchet -stage connects via -.I ssh -to the target machine and executes the next stage there. Once in the -target machine, the -.I runexp -stage computes the output path to store the experiment results, using -the user in the target machine and changes the working directory there. -In MareNostrum 4 the output path is at -.CI /gpfs/projects/bsc15/garlic/$user/out . -Then the -.I isolate -stage is executed to enter the sandbox and the -.I experiment -stage begins, which creates a directory to store the experiment output, -and launches several -.I unit -stages. -.PP -Each unit executes a -.I sbatch -stage which runs the -.I sbatch(1) -program with a job script that simply calls the next stage. The -sbatch program internally reads the -.CW /etc/slurm/slurm.conf -file from outside the sandbox, so we must explicitly allow this file to -be available, as well as the -.I munge -socket used for authentication by the SLURM daemon. Once the jobs are -submitted to SLURM, the experiment stage ends and the trebuchet finishes -the execution. The jobs will be queued for execution without any other -intervention from the user. -.PP -The rationale behind running sbatch from the sandbox is because the -options provided in environment variables override the options from the -job script. Therefore, we avoid this problem by running sbatch from the -sandbox, where the interfering environment variables are removed. The -sbatch program is also provided in the -.I "nix store" , -with a version compatible with the SLURM daemon running in the target -machine. -.\"##################################################################### -.NH 3 -Job execution -.LP -Once an unit job has been selected for execution, SLURM -allocates the resources (usually several nodes) and then selects one of -the nodes to run the job script: it is not executed in parallel yet. -The job script runs from a child process forked from on of the SLURM -daemon processes, which are outside the sandbox. Therefore, we first run the -.I isolate -stage -to enter the sandbox again. -.PP -The next stage is called -.I control -and determines if enough data has been generated by the experiment unit -or if it should continue repeating the execution. At the current time, -it is only implemented as a simple loop that runs the next stage a fixed -amount of times (by default, it is repeated 30 times). -.PP -The following stage is -.I srun -which launches several copies of the next stage to run in -parallel (when using more than one task). Runs one copy per task, -effectively creating one process per task. The CPUs affinity is -configured by the parameter -.I --cpu-bind -and is important to set it correctly (see more details in the -.I srun(1) -manual). Appending the -.I verbose -value to the cpu bind option causes srun to print the assigned affinity -of each task, which is very valuable when examining the execution log. -.PP -The mechanism by which srun executes multiple processes is the same used -by sbatch, it forks from a SLURM daemon running in the computing nodes. -Therefore, the execution begins outside the sandbox. The next stage is -.I isolate -which enters again the sandbox in every task. All remaining stages are -running now in parallel. -.\" ################################################################### -.NH 3 -The program -.LP -At this point in the execution, the standard pipeline has been -completely executed, and we are ready to run the actual program that is -the matter of the experiment. Usually, programs require some arguments -to be passed in the command line. The -.I exec -stage sets the arguments (and optionally some environment variables) and -executes the last stage, the -.I program . -.PP -The experimenters are required to define these last stages, as they -define the specific way in which the program must be executed. -Additional stages may be included before or after the program run, so -they can perform additional steps. -.\" ################################################################### -.NH 3 -Stage overview -.LP -The complete execution pipeline using the standard pipeline is shown in -the Table 1. Some properties are also reflected about the execution -stages. -.DS L -.TS -center; -lB cB cB cB cB cB -l c c c c c. -_ -Stage Where Safe Copies User Std -_ -trebuchet * no no yes yes -runexp login no no no yes -isolate login no no no yes -experiment login yes no no yes -unit login yes no no yes -sbatch login yes no no yes -_ -isolate target no no no yes -control target yes no no yes -srun target yes no no yes -isolate target no yes no yes -_ -exec target yes yes no no -program target yes yes no no -_ -.TE -.DE -.QS -.SM -.B "Table 1" : -The stages of a complete execution pipeline. The -.I where -column determines where the stage is running, -.I safe -states if the stage begins the execution inside the sandbox, -.I user -if it can be executed directly by the user, -.I copies -if there are several instances running in parallel and -.I std -if is part of the standard execution pipeline. -.QE -.\" ################################################################### -.NH 2 -Writing the experiment -.LP -The experiments are generally written in the -.I nix -language as it provides very easy management for the packages an their -customization. An experiment file is formed by several parts, which -produce the execution pipeline when built. The experiment file describes -a function (which is typical in nix) and takes as argument an -attribute set with some common packages, tools and options: -.CS -{ stdenv, lib, bsc, stdexp, targetMachine, stages, garlicTools }: -.CE -The -.I bsc -attribute contains all the BSC and nixpkgs packages, as defined in the -overlay. The -.I stdexp -contains some useful tools and functions to build the experiments, like -the standard execution pipeline, so you don't need to redefine the -stages in every experiment. The configuration of the target machine is -specified in the -.I targetMachine -attribute which includes information like the number of CPUs per node or -the cache line length. It is used to define the experiments in such a -way that they are not tailored to an specific machine hardware -(sometimes this is not posible). All the execution stages are available -in the -.I stages -attribute which are used when some extra stage is required. And finally, -the -.I garlicTools -attribute provide some functions to aid common tasks when defining the -experiment configuration -.\" ################################################################### -.NH 3 -Experiment configuration -.LP -The next step is to define some variables in a -.CI let -\&... -.CI in -\&... -.CI ; -construct, to be used later. The first one, is the variable -configuration of the experiment called -.I varConf , -which include all -the factors that will be changed. All the attributes of this set -.I must -be arrays, even if they only contain one element: -.CS -varConf = { - blocks = [ 1 2 4 ]; - nodes = [ 1 ]; -}; -.CE -In this example, the variable -.I blocks -will be set to the values 1, 2 and 4; while -.I nodes -will remain set to 1 always. These variables are used later to build the -experiment configuration. The -.I varConf -is later converted to a list of attribute sets, where every attribute -contains only one value, covering all the combinations (the Cartesian -product is computed): -.CS -[ { blocks = 1; nodes = 1; } - { blocks = 2; nodes = 1; } - { blocks = 4; nodes = 1; } ] -.CE -These configurations are then passed to the -.I genConf -function one at a time, which is the central part of the description of -the experiment: -.CS -genConf = var: fix (self: targetMachine.config // { - expName = "example"; - unitName = self.expName + "-b" + toString self.blocks; - blocks = var.blocks; - cpusPerTask = 1; - tasksPerNode = self.hw.socketsPerNode; - nodes = var.nodes; -}); -.CE -It takes as input -.I one -configuration from the Cartesian product, for example: -.CS -{ blocks = 2; nodes = 1; } -.CE -And returns the complete configuration for that input, which usually -expand the input configuration with some derived variables along with -other constant parameters. The return value can be inspected by calling -the function in the interactive -.I "nix repl" -session: -.CS -nix-repl> genConf { blocks = 2; nodes = 1; } -{ - blocks = 2; - cpusPerTask = 1; - expName = "example"; - hw = { ... }; - march = "skylake-avx512"; - mtune = "skylake-avx512"; - name = "mn4"; - nixPrefix = "/gpfs/projects/bsc15/nix"; - nodes = 1; - sshHost = "mn1"; - tasksPerNode = 2; - unitName = "example-b2"; -} -.CE -Some configuration parameters were added by -.I targetMachine.config , -such as the -.I nixPrefix , -.I sshHost -or the -.I hw -attribute set, which are specific for the cluster they experiment is -going to run. Also, the -.I unitName -got assigned the proper name based on the number of blocks, but the -number of tasks per node were assigned based on the hardware description -of the target machine. -.PP -By following this rule, the experiments can easily be ported to machines -with other hardware characteristics, and we only need to define the -hardware details once. Then all the experiments will be updated based on -those details. -.\" ################################################################### -.NH 3 -Adding the stages -.LP -Once the configuration is ready, it will be passed to each stage of the -execution pipeline which will take the parameters it needs. The -connection between the parameters and how they are passed to each stage -is done either by convention or manually. There is a list of parameters that -are recognized by the standard pipeline stages. For example the -attribute -.I nodes , -it is recognized as the number of nodes in the standard -.I sbatch -stage when allocating resources: -.DS L -.TS -center; -lB lB cB cB lB -l l c c l. -_ -Stage Attribute Std Req Description -_ -* nixPrefix yes yes Path to the nix store in the target -unit expName yes yes Name of the experiment -unit unitName yes yes Name of the unit -control loops yes yes Number of runs of each unit -sbatch cpusPerTask yes yes Number of CPUs per task (process) -sbatch jobName yes yes Name of the job -sbatch nodes yes yes Number of nodes allocated -sbatch ntasksPerNode yes yes Number of tasks (processes) per node -sbatch qos yes no Name of the QoS queue -sbatch reservation yes no Name of the reservation -sbatch time yes no Maximum allocated time (string) -_ -exec argv no no Array of arguments to execve -exec env no no Environment variable settings -exec pre no no Code before the execution -exec post no no Code after the execution -_ -.TE -.DE -.QS -.SM -.B "Table 2" : -The attributes recognized by the stages in the execution pipeline. The -column -.I std -indicates if they are part of the standard execution pipeline. Some -attributes are required as indicated by the -.I req -column. -.QE -.LP -Other attribute names can be used to specify custom information used in -additional stages. The two most common stages required to complete the -pipeline are the -.I exec -and the -.I program . -Let see an example of -.I exec : -.CS -exec = {nextStage, conf, ...}: stages.exec { - inherit nextStage; - argv = [ "--blocks" conf.blocks ]; -}; -.CE -The -.I exec -stage is defined as a function that uses the predefined -.I stages.exec -stage, which accepts the -.I argv -array, and sets the argv of the program. In our case, we fill the -.I argv -array by setting the -.I --blocks -parameter to the number of blocks, specified in the configuration in the -attribute -.I blocks . -The name of this attribute can be freely choosen, as long as the -.I exec -stage refers to it properly. The -.I nextStage -attribute is mandatory in all stages, and is automatically set when -building the pipeline. -.PP -The last step is to configure the actual program to be executed, -which can be specified as another stage: -.CS -program = {nextStage, conf, ...}: bsc.apps.example; -.CE -Notice that this function only returns the -.I bsc.apps.example -derivation, which will be translated to the path where the example -program is installed. If the program is located inside a directory -(typically -.I bin ), -it must define the attribute -.I programPath -in the -.I bsc.apps.example -derivation, which points to the executable program. An example: -.CS -stdenv.mkDerivation { -\& ... - programPath = "/bin/example"; -\& ... -}; -.CE -.\" ################################################################### -.NH 3 -Building the pipeline -.LP -With the -.I exec -and -.I program -stages defined and the ones provided by the standard pipeline, the -complete execution pipeline can be formed. To do so, the stages are -placed in an array, in the order they will be executed: -.CS -pipeline = stdexp.stdPipeline ++ [ exec program ]; -.CE -The attribute -.I stdexp.stdPipeline -contains the standard pipeline stages, and we only append our two -defined stages -.I exec -and -.I program . -The -.I pipeline -is an array of functions, and must be transformed in something that can -be executed in the target machine. For that purpose, the -.I stdexp -provides the -.I genExperiment -function, which takes the -.I pipeline -array and the list of configurations and builds the execution pipeline: -.CS -stdexp.genExperiment { inherit configs pipeline; } -.CE -The complete example experiment can be shown here: -.CS -{ stdenv, lib, stdexp, bsc, targetMachine, stages }: -with lib; -let - # Initial variable configuration - varConf = { - blocks = [ 1 2 4 ]; - nodes = [ 1 ]; - }; - # Generate the complete configuration for each unit - genConf = c: targetMachine.config // rec { - expName = "example"; - unitName = "${expName}-b${toString blocks}"; - inherit (targetMachine.config) hw; - inherit (c) blocks nodes; - loops = 30; - ntasksPerNode = hw.socketPerNode; - cpusPerTask = hw.cpusPerSocket; - jobName = unitName; - }; - # Compute the array of configurations - configs = stdexp.buildConfigs { - inherit varConf genConf; - }; - exec = {nextStage, conf, ...}: stages.exec { - inherit nextStage; - argv = [ "--blocks" conf.blocks ]; - }; - program = {nextStage, conf, ...}: bsc.garlic.apps.example; - pipeline = stdexp.stdPipeline ++ [ exec program ]; -in - stdexp.genExperiment { inherit configs pipeline; } -.CE -.\" ################################################################### -.NH 3 -Adding the experiment to the index -.LP -The experiment file must be located in a named directory inside the -.I garlic/exp -directory. The name is usually the program name. Once the experiment is -placed in a nix file, it must be added to the index of experiments, so -it can be build. The index is hyerarchically organized as attribute -sets, with -.I exp -containing all the experiments; -.I exp.example -the experiments of the -.I example -program; and -.I exp.example.test1 -referring to the -.I test1 -experiment of the -.I example -program. Additional attributes can be added, like -.I exp.example.test1.variantA -to handle more details. -.PP -For this example we are going to use the attribute path -.I exp.example.test -and add it to the index, in the -.I garlic/exp/index.nix -file. We append to the end of the attribute set, the following -definition: -.CS -\&... - example = { - test = callPackage ./example/test.nix { }; - }; -} -.CE -The experiment can now be built with: -.CS -builder% nix-build -A exp.example.test -.CE -.\" ################################################################### -.NH 2 -Recommendations -.PP -The complete results generally take a long time to be finished, so it is -advisable to design the experiments iteratively, in order to quickly -obtain some feedback. Some recommendations: -.BL -.LI -Start with one unit only. -.LI -Set the number of runs low (say 5) but more than one. -.LI -Use a small problem size, so the execution time is low. -.LI -Set the time limit low, so deadlocks are caught early. -.LE -.PP -As soon as the first runs are complete, examine the results and test -that everything looks good. You would likely want to check: -.BL -.LI -The resources where assigned as intended (nodes and CPU affinity). -.LI -No errors or warnings: look at stderr and stdout logs. -.LI -If a deadlock happens, it will run out of the time limit. -.LE -.PP -As you gain confidence over that the execution went as planned, begin -increasing the problem size, the number of runs, the time limit and -lastly the number of units. The rationale is that each unit that is -shared among experiments gets assigned the same hash. Therefore, you can -iteratively add more units to an experiment, and if they are already -executed (and the results were generated) is reused. -.\" ################################################################### -.bp -.NH 1 -Post-processing -.LP -After the correct execution of an experiment the results are stored for -further investigation. Typically the time of the execution or other -quantities are measured and presented later in a figure (generally a -plot or a table). The -.I "postprocess pipeline" -consists of all the steps required to create a set of figures from the -results. Similarly to the execution pipeline where several stages run -sequentially, -.[ -garlic execution -.] -the postprocess pipeline is also formed by multiple stages executed -in order. -.PP -The rationale behind dividing execution and postprocess is -that usually the experiments are costly to run (they take a long time to -complete) while generating a figure require less time. Refining the -figures multiple times reusing the same experimental results doesn't -require the execution of the complete experiment, so the experimenter -can try multiple ways to present the data without waiting a large delay. -.NH 2 -Results -.LP -The results are generated in the same -.I "target" -machine where the experiment is executed and are stored in the garlic -\fCout\fP -directory, organized into a tree structure following the experiment -name, the unit name and the run number (governed by the -.I control -stage): -.DS L -\fC -|-- 6lp88vlj7m8hvvhpfz25p5mvvg7ycflb-experiment -| |-- 8lpmmfix52a8v7kfzkzih655awchl9f1-unit -| | |-- 1 -| | | |-- stderr.log -| | | |-- stdout.log -| | | |-- ... -| | |-- 2 -\&... -\fP -.DE -In order to provide an easier access to the results, an index is also -created by taking the -.I expName -and -.I unitName -attributes (defined in the experiment configuration) and linking them to -the appropriate experiment and unit directories. These links are -overwritten by the last experiment with the same names so they are only -valid for the last execution. The out and index directories are -placed into a per-user directory, as we cannot guarantee the complete -execution of each unit when multiple users share units. -.PP -The messages printed to -.I stdout -and -.I stderr -are stored in the log files with the same name inside each run -directory. Additional data is sometimes generated by the experiments, -and is found in each run directory. As the generated data can be very -large, is ignored by default when fetching the results. -.NH 2 -Fetching the results -.LP -Consider a program of interest for which an experiment has been designed to -measure some properties that the experimenter wants to present in a -visual plot. When the experiment is launched, the execution -pipeline (EP) is completely executed and it will generate some -results. In this escenario, the execution pipeline depends on the -program\[em]any changes in the program will cause nix to build the -pipeline again -using the updated program. The results will also depend on the -execution pipeline as well as the postprocess pipeline (PP) and the plot -on the results. This chain of dependencies can be shown in the -following dependency graph: -.PS -circlerad=0.22; -linewid=0.3; -right -circle "Prog" -arrow -circle "EP" -arrow -circle "Result" -arrow -circle "PP" -arrow -circle "Plot" -.PE -Ideally, the dependencies should be handled by nix, so it can detect any -change and rebuild the necessary parts automatically. Unfortunately, nix -is not able to build the result as a derivation directly, as it requires -access to the -.I "target" -machine with several user accounts. In order to let several users reuse -the same results from a shared cache, we would like to use the -.I "nix store" . -.PP -To generate the results from the -experiment, we add some extra steps that must be executed manually: -.PS -circle "Prog" -arrow -diag=linewid + circlerad; -far=circlerad*3 + linewid*4 -E: circle "EP" -R: circle "Result" at E + (far,0) -RUN: circle "Run" at E + (diag,-diag) dashed -FETCH: circle "Fetch" at R + (-diag,-diag) dashed -move to R.e -arrow -P: circle "PP" -arrow -circle "Plot" -arrow dashed from E to RUN chop -arrow dashed from RUN to FETCH chop -arrow dashed from FETCH to R chop -arrow from E to R chop -.PE -The run and fetch steps are provided by the helper tool -.I "garlic(1)" , -which launches the experiment using the user credentials at the -.I "target" -machine and then fetches the results, placing them in a directory known -by nix. When the result derivation needs to be built, nix will look in -this directory for the results of the execution. If the directory is not -found, a message is printed to suggest the user to launch the experiment -and the build process is stopped. When the result is successfully built -by any user, is stored in the -.I "nix store" -and it won't need to be rebuilt again until the experiment changes, as -the hash only depends on the experiment and not on the contents of the -results. -.PP -Notice that this mechanism violates the deterministic nature of the nix -store, as from a given input (the experiment) we can generate different -outputs (each result from different executions). We knowingly relaxed -this restriction by providing a guarantee that the results are -equivalent and there is no need to execute an experiment more than once. -.PP -To force the execution of an experiment you can use the -.I rev -attribute which is a number assigned to each experiment -and can be incremented to create copies that only differs on that -number. The experiment hash will change but the experiment will be the -same, as long as the revision number is ignored along the execution -stages. -.NH 2 -Postprocess stages -.LP -Once the results are completely generated in the -.I "target" -machine there are several stages required to build a set of figures: -.PP -.I fetch \[em] -waits until all the experiment units are completed and then executes the -next stage. This stage is performed by the -.I garlic(1) -tool using the -.I -F -option and also reports the current state of the execution. -.PP -.I store \[em] -copies from the -.I target -machine into the nix store all log files generated by the experiment, -keeping the same directory structure. It tracks the execution state of -each unit and only copies the results once the experiment is complete. -Other files are ignored as they are often very large and not required -for the subsequent stages. -.PP -.I timetable \[em] -converts the results of the experiment into a NDJSON file with one -line per run for each unit. Each line is a valid JSON object, containing -the -.I exp , -.I unit -and -.I run -keys and the unit configuration (as a JSON object) in the -.I config -key. The execution time is captured from the standard output and is -added in the -.I time -key. -.PP -.I merge \[em] -one or more timetable datasets are joined, by simply concatenating them. -This step allows building one dataset to compare multiple experiments in -the same figure. -.PP -.I rPlot \[em] -one ot more figures are generated by a single R script -.[ -r cookbook -.] -which takes as input the previously generated dataset. -The path of the dataset is recorded in the figure as well, which -contains enough information to determine all the stages in the execution -and postprocess pipelines. -.NH 2 -Current setup -.LP -As of this moment, the -.I build -machine which contains the nix store is -.I xeon07 -and the -.I "target" -machine used to run the experiments is Mare Nostrum 4 with the -.I output -directory placed at -.CW /gpfs/projects/bsc15/garlic . -By default, the experiment results are never deleted from the -.I target -so you may want to remove the ones already stored in the nix store to -free space. -.\" ################################################################### -.bp -.SH 1 -Appendix A: Branch name diagram -.LP -.TAG appendixA -.DS B -.SM -.PS 4.4/25.4 -copy "gitbranch.pic" -.PE -.DE diff --git a/garlic/ds/ctf-mode.py b/garlic/ds/ctf-mode.py deleted file mode 100644 index 669508f..0000000 --- a/garlic/ds/ctf-mode.py +++ /dev/null @@ -1,83 +0,0 @@ -import json, re, sys, os, glob -from os import path - -def eprint(*args, **kwargs): - print(*args, file=sys.stderr, flush=True, **kwargs) - -def process_run(tree, runPath): - - ctf_mode = {} - - with open(".garlic/time_mode_runtime.csv", "r") as f: - ctf_mode['runtime'] = float(f.readline()) - - with open(".garlic/time_mode_dead.csv", "r") as f: - ctf_mode['dead'] = float(f.readline()) - - with open(".garlic/time_mode_task.csv", "r") as f: - ctf_mode['task'] = float(f.readline()) - - tree['ctf_mode'] = ctf_mode - - with open("stdout.log", "r") as f: - lines = [line.strip() for line in f.readlines()] - - time_line = None - for line in lines: - - if re.match(r'^ ?time .*', line): - time_line = line - break - - if time_line is None: - eprint("missing time line, aborting") - eprint("stdout file = {}/stdout.log".format(runPath)) - exit(1) - - time_str = time_line.split()[1] - - tree['time'] = float(time_str) - - print(json.dumps(tree)) - -def process_result_tree(resultTree): - - eprint("processing resultTree: " + resultTree) - - os.chdir(resultTree) - - experiments = glob.glob(resultTree + "/*-experiment") - - for exp in glob.glob("*-experiment"): - eprint("found experiment: " + exp) - expPath = path.join(resultTree, exp) - os.chdir(expPath) - - for unit in glob.glob("*-unit"): - eprint("found unit: " + unit) - unitPath = path.join(resultTree, exp, unit) - os.chdir(unitPath) - - with open('garlic_config.json') as json_file: - garlic_conf = json.load(json_file) - - tree = {"exp":exp, "unit":unit, "config":garlic_conf} - - for i in range(garlic_conf['loops']): - run = str(i + 1) - runPath = path.join(resultTree, exp, unit, run) - if path.isdir(runPath) == False: - eprint("missing run {}, aborting".format(run)) - exit(1) - - tree["run"] = run - os.chdir(runPath) - - process_run(tree, runPath) - - -if len(sys.argv) != 2: - eprint("usage: python {} ".format(argv[0])) - exit(1) - -process_result_tree(sys.argv[1]) diff --git a/garlic/ds/index.nix b/garlic/ds/index.nix deleted file mode 100644 index 95cb388..0000000 --- a/garlic/ds/index.nix +++ /dev/null @@ -1,18 +0,0 @@ -{ - super -, self -, bsc -, garlic -, callPackage -}: - -rec { - - py = callPackage ./py.nix {}; - - std.timetable = py { script = ./std-timetable.py; compress = false; }; - osu.latency = py { script = ./osu-latency.py; }; - osu.bw = py { script = ./osu-bw.py; }; - perf.stat = py { script = ./perf-stat.py; }; - ctf.mode = py { script = ./ctf-mode.py; }; -} diff --git a/garlic/ds/osu-bw.py b/garlic/ds/osu-bw.py deleted file mode 100644 index 4b1df43..0000000 --- a/garlic/ds/osu-bw.py +++ /dev/null @@ -1,64 +0,0 @@ -import json, re, sys, os, glob -from os import path - -def eprint(*args, **kwargs): - print(*args, file=sys.stderr, flush=True, **kwargs) - -def process_run(tree, runPath): - with open("stdout.log", "r") as f: - lines = [line.strip() for line in f.readlines()] - - for line in lines: - - if not re.match('^[0-9]+ *[0-9\.]+$', line): - continue - - slices = line.split() - size = slices[0] - bw = slices[1] - - tree['size'] = int(size) - tree['bw'] = float(bw) - print(json.dumps(tree)) - -def process_result_tree(resultTree): - - eprint("processing resultTree: " + resultTree) - - os.chdir(resultTree) - - experiments = glob.glob(resultTree + "/*-experiment") - - for exp in glob.glob("*-experiment"): - eprint("found experiment: " + exp) - expPath = path.join(resultTree, exp) - os.chdir(expPath) - - for unit in glob.glob("*-unit"): - eprint("found unit: " + unit) - unitPath = path.join(resultTree, exp, unit) - os.chdir(unitPath) - - with open('garlic_config.json') as json_file: - garlic_conf = json.load(json_file) - - tree = {"exp":exp, "unit":unit, "config":garlic_conf} - - for i in range(garlic_conf['loops']): - run = str(i + 1) - runPath = path.join(resultTree, exp, unit, run) - if path.isdir(runPath) == False: - eprint("missing run {}, aborting".format(run)) - exit(1) - - tree["run"] = run - os.chdir(runPath) - - process_run(tree, runPath) - - -if len(sys.argv) != 2: - eprint("usage: python {} ".format(argv[0])) - exit(1) - -process_result_tree(sys.argv[1]) diff --git a/garlic/ds/osu-latency.py b/garlic/ds/osu-latency.py deleted file mode 100644 index 2df08ee..0000000 --- a/garlic/ds/osu-latency.py +++ /dev/null @@ -1,64 +0,0 @@ -import json, re, sys, os, glob -from os import path - -def eprint(*args, **kwargs): - print(*args, file=sys.stderr, flush=True, **kwargs) - -def process_run(tree, runPath): - with open("stdout.log", "r") as f: - lines = [line.strip() for line in f.readlines()] - - for line in lines: - - if not re.match('^[0-9]+ *[0-9\.]+$', line): - continue - - slices = line.split() - size = slices[0] - latency = slices[1] - - tree['size'] = int(size) - tree['latency'] = float(latency) - print(json.dumps(tree)) - -def process_result_tree(resultTree): - - eprint("processing resultTree: " + resultTree) - - os.chdir(resultTree) - - experiments = glob.glob(resultTree + "/*-experiment") - - for exp in glob.glob("*-experiment"): - eprint("found experiment: " + exp) - expPath = path.join(resultTree, exp) - os.chdir(expPath) - - for unit in glob.glob("*-unit"): - eprint("found unit: " + unit) - unitPath = path.join(resultTree, exp, unit) - os.chdir(unitPath) - - with open('garlic_config.json') as json_file: - garlic_conf = json.load(json_file) - - tree = {"exp":exp, "unit":unit, "config":garlic_conf} - - for i in range(garlic_conf['loops']): - run = str(i + 1) - runPath = path.join(resultTree, exp, unit, run) - if path.isdir(runPath) == False: - eprint("missing run {}, aborting".format(run)) - exit(1) - - tree["run"] = run - os.chdir(runPath) - - process_run(tree, runPath) - - -if len(sys.argv) != 2: - eprint("usage: python {} ".format(argv[0])) - exit(1) - -process_result_tree(sys.argv[1]) diff --git a/garlic/ds/perf-stat.py b/garlic/ds/perf-stat.py deleted file mode 100644 index a6d69bc..0000000 --- a/garlic/ds/perf-stat.py +++ /dev/null @@ -1,90 +0,0 @@ -import json, re, sys, os, glob -from os import path - -def eprint(*args, **kwargs): - print(*args, file=sys.stderr, flush=True, **kwargs) - -def process_run(tree, runPath): - with open(".garlic/perf.csv", "r") as f: - lines = [line.strip() for line in f.readlines()] - - perf_data = {} - - for line in lines: - if len(line) == 0: continue - if line[0] == '#': continue - - slices = line.split(',') - if len(slices) != 7: - print("error: mismatched columns") - exit(1) - - name = slices[2].replace("-", "_") - value = float(slices[0]) - - perf_data[name] = value - - tree['perf'] = perf_data - - with open("stdout.log", "r") as f: - lines = [line.strip() for line in f.readlines()] - - time_line = None - for line in lines: - - if re.match(r'^ ?time .*', line): - time_line = line - break - - if time_line is None: - eprint("missing time line, aborting") - eprint("stdout file = {}/stdout.log".format(runPath)) - exit(1) - - time_str = time_line.split()[1] - - tree['time'] = float(time_str) - - print(json.dumps(tree)) - -def process_result_tree(resultTree): - - eprint("processing resultTree: " + resultTree) - - os.chdir(resultTree) - - experiments = glob.glob(resultTree + "/*-experiment") - - for exp in glob.glob("*-experiment"): - eprint("found experiment: " + exp) - expPath = path.join(resultTree, exp) - os.chdir(expPath) - - for unit in glob.glob("*-unit"): - eprint("found unit: " + unit) - unitPath = path.join(resultTree, exp, unit) - os.chdir(unitPath) - - with open('garlic_config.json') as json_file: - garlic_conf = json.load(json_file) - - tree = {"exp":exp, "unit":unit, "config":garlic_conf} - - for i in range(garlic_conf['loops']): - run = str(i + 1) - runPath = path.join(resultTree, exp, unit, run) - if path.isdir(runPath) == False: - eprint("missing run {}, aborting".format(run)) - exit(1) - - tree["run"] = run - os.chdir(runPath) - - process_run(tree, runPath) - - -if len(sys.argv) != 2: - eprint("usage: python {} ".format(argv[0])) - exit(1) - -process_result_tree(sys.argv[1]) diff --git a/garlic/ds/py.nix b/garlic/ds/py.nix deleted file mode 100644 index 012a159..0000000 --- a/garlic/ds/py.nix +++ /dev/null @@ -1,34 +0,0 @@ -{ - stdenv -, python3 -, gzip -}: - -{ - script, - compress ? true -}: - -tree: - -stdenv.mkDerivation { - name = "dataset"; - preferLocalBuild = true; - phases = [ "installPhase" ]; - buildInputs = [ python3 gzip ]; - installPhase = '' - mkdir -p $out - ln -s ${tree} $out/tree - ln -s ${script} $out/script - - COMPRESS_DATASET=${toString compress} - - if [ $COMPRESS_DATASET ]; then - python $out/script $out/tree | gzip > $out/dataset.json.gz - ln -s dataset.json.gz $out/dataset - else - python $out/script $out/tree > $out/dataset.json - ln -s dataset.json $out/dataset - fi - ''; -} diff --git a/garlic/ds/std-timetable.py b/garlic/ds/std-timetable.py deleted file mode 100644 index c183097..0000000 --- a/garlic/ds/std-timetable.py +++ /dev/null @@ -1,77 +0,0 @@ -import json, re, sys, os, glob -from os import path - -def eprint(*args, **kwargs): - print(*args, file=sys.stderr, flush=True, **kwargs) - -def process_run(tree, runPath): - - with open(".garlic/total_time_start", "r") as f: - total_time_start = float(f.readline().strip()) - - with open(".garlic/total_time_end", "r") as f: - total_time_end = float(f.readline().strip()) - - with open("stdout.log", "r") as f: - lines = [line.strip() for line in f.readlines()] - - time_line = None - for line in lines: - - if re.match(r'^ ?time .*', line): - time_line = line - break - - if time_line is None: - eprint("missing time line, aborting") - eprint("stdout file = {}/stdout.log".format(runPath)) - exit(1) - - time_str = time_line.split()[1] - - tree['time'] = float(time_str) - tree['total_time'] = total_time_end - total_time_start - - print(json.dumps(tree)) - -def process_result_tree(resultTree): - - eprint("processing resultTree: " + resultTree) - - os.chdir(resultTree) - - experiments = glob.glob(resultTree + "/*-experiment") - - for exp in glob.glob("*-experiment"): - eprint("found experiment: " + exp) - expPath = path.join(resultTree, exp) - os.chdir(expPath) - - for unit in glob.glob("*-unit"): - eprint("found unit: " + unit) - unitPath = path.join(resultTree, exp, unit) - os.chdir(unitPath) - - with open('garlic_config.json') as json_file: - garlic_conf = json.load(json_file) - - tree = {"exp":exp, "unit":unit, "config":garlic_conf} - - for i in range(garlic_conf['loops']): - run = str(i + 1) - runPath = path.join(resultTree, exp, unit, run) - if path.isdir(runPath) == False: - eprint("missing run {}, aborting".format(run)) - exit(1) - - tree["run"] = run - os.chdir(runPath) - - process_run(tree, runPath) - - -if len(sys.argv) != 2: - eprint("usage: python {} ".format(argv[0])) - exit(1) - -process_result_tree(sys.argv[1]) diff --git a/garlic/exp/bigsort/genseq.nix b/garlic/exp/bigsort/genseq.nix deleted file mode 100644 index 99a59f1..0000000 --- a/garlic/exp/bigsort/genseq.nix +++ /dev/null @@ -1,73 +0,0 @@ -{ - stdenv -, lib -, stdexp -, bsc -, targetMachine -, stages -, n # must be a string -, dram # must be a string -, strace -}: - -with lib; - -# Ensure the arguments are strings, to avoid problems with large numbers -assert (isString n); -assert (isString dram); - -let - # Initial variable configuration - varConf = with bsc; { }; - - inherit (targetMachine) fs; - - # Generate the complete configuration for each unit - genConf = with bsc; c: targetMachine.config // rec { - expName = "genseq"; - unitName = "${expName}.n${n}.dram${dram}"; - inherit (targetMachine.config) hw; - inherit n dram; - - # Don't repeat - loops = 1; - - # Resources - qos = "debug"; - ntasksPerNode = 1; - nodes = 1; - time = "01:00:00"; - cpusPerTask = hw.cpusPerNode; - jobName = unitName; - }; - - # Compute the array of configurations - configs = stdexp.buildConfigs { - inherit varConf genConf; - }; - - exec = {nextStage, conf, ...}: with conf; - let - #FIXME: We need a better mechanism to get the output paths - outDir = "${fs.shared.fast}/out/$GARLIC_USER/$GARLIC_UNIT/$GARLIC_RUN"; - outFile = "${outDir}/seq.dat"; - in - stages.exec { - inherit nextStage; - pre = '' - mkdir -p "${outDir}" - ''; - argv = [ n dram outFile ]; - post = '' - # Link the output here - ln -s "${outFile}" seq.dat - ''; - }; - - program = {...}: bsc.apps.bigsort.genseq; - - pipeline = stdexp.stdPipeline ++ [ exec program ]; - -in - - stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/bigsort/shuffle.nix b/garlic/exp/bigsort/shuffle.nix deleted file mode 100644 index a841720..0000000 --- a/garlic/exp/bigsort/shuffle.nix +++ /dev/null @@ -1,102 +0,0 @@ -{ - stdenv -, lib -, stdexp -, bsc -, targetMachine -, stages -, inputTre -, n -, dram -, garlicTools -, resultFromTrebuchet -}: - -with lib; -with garlicTools; - -let - # Initial variable configuration - varConf = with bsc; { }; - - inherit (targetMachine) fs; - - # Generate the complete configuration for each unit - genConf = with bsc; c: targetMachine.config // rec { - expName = "shuffle"; - unitName = "${expName}.n${n}.dram${dram}"; - inherit (targetMachine.config) hw; - inherit n dram; - - # Don't repeat - loops = 1; - - # Resources - qos = "debug"; - ntasksPerNode = 1; - nodes = 1; - time = "01:00:00"; - cpusPerTask = hw.cpusPerNode; - jobName = unitName; - - # We need access to a fast shared filesystem to store the shuffled input - # dataset - extraMounts = [ fs.shared.fast ]; - }; - - # Compute the array of configurations - configs = stdexp.buildConfigs { - inherit varConf genConf; - }; - - exec = {nextStage, conf, ...}: with conf; - let - inputExp = inputTre.experiment; - inputUnit = elemAt inputExp.units 0; - unitName = baseNameOf (toString inputUnit); - - # We also need the result. This is only used to ensure that we have the - # results, so it has been executed. - inputRes = resultFromTrebuchet inputTre; - - #FIXME: We need a better mechanism to get the output paths - inFile = "${fs.shared.fast}/out/$GARLIC_USER/${unitName}/1/seq.dat"; - outDir = "${fs.shared.fast}/out/$GARLIC_USER/$GARLIC_UNIT/$GARLIC_RUN"; - outFile = "${outDir}/shuffled.dat"; - - in - stages.exec { - inherit nextStage; - pre = '' - # This line ensures that the previous results are complete: - # ${inputRes} - - # Exit on error - set -e - - # Ensure the input file exists - if [ ! -f "${inFile}" ]; then - echo "input file not found: ${inFile}" - exit 1 - fi - - mkdir -p "${outDir}" - - # Copy the input as we are going to overwrite it - cp "${inFile}" "${outFile}" - ''; - argv = [ n dram outFile 16 64 ]; - post = '' - # Link the output here - ln -s "${outFile}" shuffled.dat - ''; - }; - - program = {...}: - bsc.apps.bigsort.shuffle; - - pipeline = stdexp.stdPipeline ++ [ exec program ]; - -in - - stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/bigsort/sort.nix b/garlic/exp/bigsort/sort.nix deleted file mode 100644 index 2ae73e9..0000000 --- a/garlic/exp/bigsort/sort.nix +++ /dev/null @@ -1,126 +0,0 @@ -{ - stdenv -, lib -, stdexp -, bsc -, targetMachine -, stages -, removeOutput ? true -, resultFromTrebuchet -, inputTre -}: - -with lib; - -let - varConf = { }; # Not used - - inherit (targetMachine) fs; - - # Generate the complete configuration for each unit - genConf = with bsc; c: targetMachine.config // rec { - expName = "bigsort"; - unitName = "${expName}.bs${toString bs}"; - inherit (targetMachine.config) hw; - - # bigsort options - n = 1024 * 1024 * 1024 / 8; # In longs (?) - bs = n; # In bytes - pageSize = bs / 2; # In bytes (?) - cc = bsc.icc; - mpi = bsc.impi; - gitBranch = "garlic/mpi+send+omp+task"; - - # Repeat the execution of each unit 30 times - loops = 1; - - # Resources - qos = "debug"; - ntasksPerNode = 1; - nodes = 1; - time = "01:00:00"; - # All CPUs of the socket to each task - cpusPerTask = hw.cpusPerSocket; - jobName = "bigsort-${toString n}-${toString bs}-${gitBranch}"; - - # Load the dataset from the same fs where it was stored in the shuffle - # step. Also we use a local temp fs to store intermediate results. - extraMounts = [ fs.shared.fast fs.local.temp ]; - - rev = 1; - }; - - # Compute the array of configurations - configs = stdexp.buildConfigs { - inherit varConf genConf; - }; - - exec = {nextStage, conf, ...}: with conf; - let - inputExp = inputTre.experiment; - unit = elemAt inputExp.units 0; - expName = baseNameOf (toString inputExp); - unitName = baseNameOf (toString unit); - - # We also need the result. This is only used to ensure that we have the - # results, so it has been executed. - inputRes = resultFromTrebuchet inputTre; - - #FIXME: We need a better mechanism to get the output paths - inFile = "${fs.shared.fast}/out/$GARLIC_USER/${unitName}/1/shuffled.dat"; - outDir = "${fs.shared.fast}/out/$GARLIC_USER/$GARLIC_UNIT/$GARLIC_RUN"; - outFile = "${outDir}/sorted.dat"; - tmpDir = fs.local.temp; - in - stages.exec { - inherit nextStage; - pre = '' - # This line ensures that the shuffled results are complete: nix needs to - # compute the hash of the execution log to write the path here. - # ${inputRes} - - # Exit on error - set -e - - # Ensure the input file exists - if [ ! -f "${inFile}" ]; then - echo "input file not found: ${inFile}" - exit 1 - fi - - # Create the output path - mkdir -p ${outDir} - - # Verbose args: - echo "INPUT = ${inFile}" - echo "OUTPUT = ${outFile}" - echo "TMPDIR = ${tmpDir}" - ''; - - argv = [ n bs inFile outFile tmpDir pageSize ]; - - # Optionally remove the potentially large output dataset - post = '' - # Link the output here - ln -s "${outFile}" sorted.dat - '' + optionalString (removeOutput) '' - # Remove the sorted output - stat "${outFile}" > "${outFile}.stat" - echo "file removed to save space" > "${outFile}" - ''; - }; - - program = {nextStage, conf, ...}: with conf; - let - customPkgs = stdexp.replaceMpi conf.mpi; - in - customPkgs.apps.bigsort.sort.override { - inherit cc mpi gitBranch; - }; - - pipeline = stdexp.stdPipeline ++ [ exec program ]; - -in - - #{ inherit configs pipeline; } - stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/cn6/nbody.nix b/garlic/exp/cn6/nbody.nix deleted file mode 100644 index e48018f..0000000 --- a/garlic/exp/cn6/nbody.nix +++ /dev/null @@ -1,164 +0,0 @@ -{ - stdenv -, lib -, stdexp -, bsc -, pkgs -, targetMachine -, stages -, garlicTools -, writeText -, enableHWC ? false -}: - -with lib; -with garlicTools; - -let - # Initial variable configuration - varConf = { - nodes = [ 2 ]; - }; - - machineConfig = targetMachine.config; - - genConf = c: targetMachine.config // rec { - expName = "cn6-nbody"; - unitName = expName + "-nodes${toString nodes}"; - - inherit (machineConfig) hw; - - # Parameters for nbody - particles = 4 * 512 * hw.cpusPerSocket; - timesteps = 2; - blocksize = 512; - gitBranch = "garlic/tampi+isend+oss+task"; - - loops = 1; - - # Resources - cpusPerTask = hw.cpusPerSocket; - ntasksPerNode = hw.socketsPerNode; - nodes = c.nodes; - - qos = "debug"; - time = "02:00:00"; - - jobName = unitName; - }; - - configs = stdexp.buildConfigs { - inherit varConf genConf; - }; - - # Custom BSC packages - bsc' = bsc.extend (self: super: { - - # For nanos6 we use my fork for distributed instrumentation at the - # latest commit - nanos6 = (super.nanos6Git.override { - enableJemalloc = true; - }).overrideAttrs (old: rec { - - src = builtins.fetchGit { - url = "git@bscpm03.bsc.es:nanos6/forks/nanos6-fixes.git"; - ref = "distributed-instrumentation-fixes"; - rev = "80058512527961fbde9bd81474b0a29141d7982c"; - }; - - dontStrip = false; - version = src.shortRev; - - # Disable all unused instrumentations for faster builds - configureFlags = old.configureFlags ++ [ - "--disable-extrae-instrumentation" - "--disable-lint-instrumentation" - "--disable-graph-instrumentation" - "--disable-stats-instrumentation" - "--with-babeltrace2=${super.babeltrace2}" - ]; - }); - - # Use clang from master - clangOmpss2Unwrapped = super.clangOmpss2Unwrapped.overrideAttrs (old: rec { - version = src.shortRev; - src = builtins.fetchGit { - url = "ssh://git@bscpm03.bsc.es/llvm-ompss/llvm-mono.git"; - ref = "master"; - rev = "ce47d99d2b2b968c87187cc7818cc5040b082d6c"; - }; - }); - - # Use mcxx from master - mcxx = super.mcxxGit; - - # We also need the instrumented version of TAMPI - tampi = super.tampiGit.overrideAttrs (old: rec { - version = src.shortRev; - #dontStrip = true; - #NIX_CFLAGS = "-O0 -g"; - src = builtins.fetchGit { - url = "ssh://git@bscpm03.bsc.es/interoperability/tampi.git"; - ref = "master"; - rev = "f1e77e6f439a0e964e98b5e0a4738b2e95e4fd3d"; - }; - }); - }); - - ctf = {nextStage, conf, ...}: let - # Create the nanos6 configuration file - nanos6ConfigFile = writeText "nanos6.toml" '' - version.instrument = "ctf" - turbo.enabled = false - instrument.ctf.converter.enabled = true - instrument.ctf.converter.fast = false - ''; - - in stages.exec { - inherit nextStage; - - # And use it - env = '' - export NANOS6_CONFIG=${nanos6ConfigFile} - - # Add nanos6 and babeltrace2 binaries to the PATH - export PATH="$PATH:${bsc'.nanos6}/bin:${bsc'.babeltrace2}/bin" - - # Also add the babeltrace2 python module to python search path - export PYTHONPATH="$PYTHONPATH:${bsc'.babeltrace2}/lib/python3.8/site-packages" - ''; - - post = '' - rank=$SLURM_PROCID - tracedir=trace_nbody - - # Merge on rank 0 only - if [ $rank != 0 ]; then - exit 0; - fi - - # Wait a bit for all ranks to finish the conversion - sleep 5 - - # Run the merger - nanos6-mergeprv "$tracedir" - ''; - }; - - exec = {nextStage, conf, ...}: stages.exec { - inherit nextStage; - argv = with conf; [ - "-t" timesteps - "-p" particles - ]; - }; - - program = {nextStage, conf, ...}: bsc'.garlic.apps.nbody.override { - inherit (conf) blocksize gitBranch; - }; - - pipeline = stdexp.stdPipeline ++ [ ctf exec program ]; - -in - - stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/cn6/timediff.nix b/garlic/exp/cn6/timediff.nix deleted file mode 100644 index 7d2d42f..0000000 --- a/garlic/exp/cn6/timediff.nix +++ /dev/null @@ -1,171 +0,0 @@ -{ - stdenv -, lib -, stdexp -, bsc -, pkgs -, targetMachine -, stages -, garlicTools -, writeText -, enableHWC ? false -}: - -with lib; -with garlicTools; - -let - # Initial variable configuration - varConf = { - nodes = [ 1 2 4 8 ]; - }; - - machineConfig = targetMachine.config; - - genConf = c: targetMachine.config // rec { - expName = "timediff"; - unitName = expName + "-nodes${toString nodes}"; - - inherit (machineConfig) hw; - - loops = 1; - - # Resources - cpusPerTask = hw.cpusPerSocket; - ntasksPerNode = hw.socketsPerNode; - nodes = c.nodes; - - qos = "debug"; - time = "02:00:00"; - - jobName = unitName; - }; - - configs = stdexp.buildConfigs { - inherit varConf genConf; - }; - - # Custom BSC packages - bsc' = bsc.extend (self: super: { - - # For nanos6 we use my fork for distributed instrumentation at the - # latest commit - nanos6 = (super.nanos6Git.override { - enableJemalloc = true; - }).overrideAttrs (old: rec { - - src = builtins.fetchGit { - url = "git@bscpm03.bsc.es:rarias/nanos6.git"; - ref = "rodrigo"; - rev = "5cbeabb4e0446c2c293cc3005f76e6139465caee"; - }; - - dontStrip = false; - version = src.shortRev; - - # Disable all unused instrumentations for faster builds - configureFlags = old.configureFlags ++ [ - "--disable-extrae-instrumentation" - "--disable-lint-instrumentation" - "--disable-graph-instrumentation" - "--disable-stats-instrumentation" - ]; - }); - - # Use clang from master - clangOmpss2Unwrapped = super.clangOmpss2Unwrapped.overrideAttrs (old: rec { - version = src.shortRev; - src = builtins.fetchGit { - url = "ssh://git@bscpm03.bsc.es/llvm-ompss/llvm-mono.git"; - ref = "master"; - rev = "ce47d99d2b2b968c87187cc7818cc5040b082d6c"; - }; - }); - - # Use mcxx from master - mcxx = super.mcxxGit; - - # We also need the instrumented version of TAMPI - tampi = super.tampiGit.overrideAttrs (old: rec { - version = src.shortRev; - dontStrip = true; - NIX_CFLAGS = "-O0 -g"; - src = builtins.fetchGit { - url = "ssh://git@bscpm03.bsc.es/rarias/tampi.git"; - ref = "instrument"; - rev = "6e4294299bf761a1cc31f4181d9479cefa1c7f3e"; - }; - }); - - # We use the latest commit in master as src for cn6 - cn6Git = ((super.cn6.overrideAttrs (old: rec { - version = src.shortRev; - src = builtins.fetchGit { - url = "ssh://git@bscpm03.bsc.es/rarias/cn6.git"; - ref = "master"; - rev = "1d23d01d60164b8641746d5a204128a9d31b9650"; - }; - })).override { enableTest = true; }); - - cn6 = self.cn6Git; - }); - - - ctf = {nextStage, conf, ...}: let - # Create the nanos6 configuration file - nanos6ConfigFile = writeText "nanos6.toml" '' - version.instrument = "ctf" - turbo.enabled = false - instrument.ctf.converter.enabled = false - '' + optionalString (enableHWC) '' - hardware_counters.papi.enabled = true - hardware_counters.papi.counters = [ - "PAPI_TOT_INS", "PAPI_TOT_CYC", - "PAPI_L1_TCM", "PAPI_L2_TCM", "PAPI_L3_TCM" - ] - ''; - - in stages.exec { - inherit nextStage; - - # And use it - env = '' - export NANOS6_CONFIG=${nanos6ConfigFile} - ''; - - post = '' - rank=$SLURM_PROCID - tracedir=trace_timediff_mpi - - # Convert CTF trace to PRV - ${bsc'.cn6}/bin/cn6 $tracedir/$rank - - # Merge on rank 0 only - if [ $rank != 0 ]; then - exit 0; - fi - - # Wait a bit for all ranks to finish the conversion - sleep 5 - - # Run the merger - ${bsc'.cn6}/bin/merge-prv $tracedir - - # We need some tools the path - export PATH="$PATH:${bsc'.babeltrace2}/bin:${pkgs.ministat}/bin" - - ${bsc'.cn6}/bin/sync-err.sh $tracedir - ''; - }; - - exec = {nextStage, conf, ...}: stages.exec { - inherit nextStage; - program = "${bsc'.cn6}/bin/timediff_mpi"; - argv = [ conf.cpusPerTask ]; - }; - - pipeline = stdexp.stdPipeline ++ [ ctf exec ]; - -in - - stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/creams/granularity.nix b/garlic/exp/creams/granularity.nix deleted file mode 100644 index 3fab638..0000000 --- a/garlic/exp/creams/granularity.nix +++ /dev/null @@ -1,126 +0,0 @@ -{ - stdenv -, lib -, stdexp -, bsc -, targetMachine -, stages -, garlicTools -, enableExtended ? false -}: - -with lib; -with garlicTools; - -let - # Initial variable configuration - varConf = { - granul = range2 4 128; - - gitBranch = [ - "garlic/tampi+isend+oss+task" - "garlic/mpi+isend+omp+task" - ] ++ optionals (enableExtended) [ - #"garlic/mpi+send+omp+fork" # Don't use fork for granularity - "garlic/mpi+send+seq" - "garlic/mpi+send+omp+task" - "garlic/mpi+send+oss+task" - "garlic/mpi+isend+oss+task" - ]; - - # Max. number of iterations - iterations = [ 20 ] ++ optionals (enableExtended) [ 10 ]; - - nodes = [ 1 ] ++ optionals (enableExtended) (range2 2 16); - }; - - # We use these auxiliary functions to assign different configurations - # depending on the git branch. - getGranul = branch: oldGranul: - if (branch == "garlic/mpi+send+seq") - then 999999 else oldGranul; - - getCpusPerTask = branch: hw: - if (branch == "garlic/mpi+send+seq") - then 1 else hw.cpusPerSocket; - - getNtasksPerNode = branch: hw: - if (branch == "garlic/mpi+send+seq") - then hw.cpusPerNode else hw.socketsPerNode; - - # Generate the complete configuration for each unit - genConf = c: targetMachine.config // rec { - - expName = "creams-gran"; - unitName = "${expName}"+ - "-nodes${toString nodes}"+ - "-granul${toString granul}"+ - "-${gitBranch}"; - - inherit (targetMachine.config) hw; - - # Options for creams - inherit (c) gitBranch nodes iterations; - granul = getGranul gitBranch c.granul; - nprocz = ntasksPerNode * nodes; - - # Repeat the execution of each unit 10 times - loops = 10; - - # Resources - qos = "debug"; - time = "02:00:00"; - ntasksPerNode = getNtasksPerNode gitBranch hw; - cpusPerTask = getCpusPerTask gitBranch hw; - jobName = unitName; - }; - - # Compute the array of configurations - configs = unique (stdexp.buildConfigs { - inherit varConf genConf; - }); - - # Custom srun stage to copy the creams input dataset - customSrun = {nextStage, conf, ...}: - let - input = bsc.garlic.apps.creamsInput.override { - inherit (conf) gitBranch granul nprocz; - }; - in - stdexp.stdStages.srun { - inherit nextStage conf; - # Now we add some commands to execute before calling srun. These will - # only run in one rank (the first in the list of allocated nodes) - preSrun = '' - cp -r ${input}/SodTubeBenchmark/* . - chmod +w -R . - sed -i '/maximum number of iterations/s/50/${toString conf.iterations}/' input.dat - rm -f nanos6.toml - ''; - }; - - exec = {nextStage, conf, ...}: stages.exec { - inherit nextStage; - env = '' - export NANOS6_CONFIG_OVERRIDE="version.dependencies=regions" - ''; - - # Remove restarts as is not needed and is huge - post = '' - rm -rf restarts || true - ''; - }; - - # Creams program - creams = {nextStage, conf, ...}: bsc.apps.creams.override { - inherit (conf) gitBranch; - }; - - pipeline = stdexp.stdPipelineOverride { - # Replace the stdandard srun stage with our own - overrides = { srun = customSrun; }; - } ++ [ exec creams ]; - -in - - stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/creams/granularity16.nix b/garlic/exp/creams/granularity16.nix deleted file mode 100644 index fa8dc6f..0000000 --- a/garlic/exp/creams/granularity16.nix +++ /dev/null @@ -1,132 +0,0 @@ -{ - stdenv -, lib -, stdexp -, bsc -, targetMachine -, stages -, garlicTools -, enableExtended ? false -}: - -with lib; -with garlicTools; - -let - # Initial variable configuration - varConf = { - - #nodes = range2 1 16; - nodes = [ 16 ]; - sizeFactor = [ 1 2 4 8 16 32 ]; - granul = [ 1 2 4 8 16 ]; - - # Max. number of iterations - iterations = [ 20 ] ++ optionals (enableExtended) [ 10 ]; - - gitBranch = [ - "garlic/tampi+isend+oss+task" - #"garlic/mpi+send+omp+fork" - #"garlic/mpi+send+omp+task" - #"garlic/mpi+send+seq" - ] ++ optionals (enableExtended) [ - "garlic/mpi+send+oss+task" - "garlic/mpi+isend+omp+task" - "garlic/mpi+isend+oss+task" - ]; - }; - - # We use these auxiliary functions to assign different configurations - # depending on the git branch. - getGranul = branch: oldGranul: - if (branch == "garlic/mpi+send+seq") - then 999999 else oldGranul; - - getCpusPerTask = branch: hw: - if (branch == "garlic/mpi+send+seq") - then 1 else hw.cpusPerSocket; - - getNtasksPerNode = branch: hw: - if (branch == "garlic/mpi+send+seq") - then hw.cpusPerNode else hw.socketsPerNode; - - # Generate the complete configuration for each unit - genConf = c: targetMachine.config // rec { - - expName = "creams-granularity16"; - unitName = "${expName}" - + "-granul.${toString granul}" - + "-sf.${toString sizeFactor}"; - - inherit (targetMachine.config) hw; - - # Options for creams - inherit (c) iterations gitBranch nodes sizeFactor; - granul = getGranul gitBranch c.granul; - nprocz = ntasksPerNode * nodes; - baseSizePerCpu = 2; - baseSize = baseSizePerCpu * cpusPerTask * ntasksPerNode * nodes; - - nz = baseSize * sizeFactor; - - # Repeat the execution of each unit 10 times - loops = 10; - - # Resources - qos = "debug"; - time = "02:00:00"; - ntasksPerNode = getNtasksPerNode gitBranch hw; - cpusPerTask = getCpusPerTask gitBranch hw; - jobName = unitName; - }; - - # Compute the array of configurations - configs = unique ( - filter (c: !(c.granul == 1 && c.sizeFactor >= 32))(stdexp.buildConfigs { - inherit varConf genConf; - })); - - # Custom srun stage to copy the creams input dataset - customSrun = {nextStage, conf, ...}: - let - input = bsc.garlic.apps.creamsInput.override { - inherit (conf) gitBranch granul nprocz nz; - }; - in - stdexp.stdStages.srun { - inherit nextStage conf; - # Now we add some commands to execute before calling srun. These will - # only run in one rank (the first in the list of allocated nodes) - preSrun = '' - cp -r ${input}/SodTubeBenchmark/* . - chmod +w -R . - sed -i '/maximum number of iterations/s/50/${toString conf.iterations}/' input.dat - rm -f nanos6.toml - ''; - }; - - exec = {nextStage, conf, ...}: stages.exec { - inherit nextStage; - env = '' - export NANOS6_CONFIG_OVERRIDE="version.dependencies=regions" - ''; - - # Remove restarts as is not needed and is huge - post = '' - rm -rf restarts || true - ''; - }; - - # Creams program - creams = {nextStage, conf, ...}: bsc.apps.creams.override { - inherit (conf) gitBranch; - }; - - pipeline = stdexp.stdPipelineOverride { - # Replace the stdandard srun stage with our own - overrides = { srun = customSrun; }; - } ++ [ exec creams ]; - -in - - stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/creams/size.nix b/garlic/exp/creams/size.nix deleted file mode 100644 index dea3c8d..0000000 --- a/garlic/exp/creams/size.nix +++ /dev/null @@ -1,131 +0,0 @@ -{ - stdenv -, lib -, stdexp -, bsc -, targetMachine -, stages -, garlicTools -, enableExtended ? false -}: - -with lib; -with garlicTools; - -let - # Initial variable configuration - varConf = { - - #nodes = range2 1 16; - nodes = [ 16 ]; - sizeFactor = range2 1 32; - baseGranul = [ 1 ] ++ optionals (enableExtended) [ 2 4 8 ]; - - # Max. number of iterations - iterations = [ 20 ] ++ optionals (enableExtended) [ 10 ]; - - gitBranch = [ - "garlic/tampi+isend+oss+task" - "garlic/mpi+send+omp+fork" - #"garlic/mpi+send+omp+task" - #"garlic/mpi+send+seq" - ] ++ (optionals (enableExtended) [ - "garlic/mpi+send+oss+task" - "garlic/mpi+isend+omp+task" - "garlic/mpi+isend+oss+task" - ]); - }; - - # We use these auxiliary functions to assign different configurations - # depending on the git branch. - getGranul = branch: oldGranul: - if (branch == "garlic/mpi+send+seq") - then 999999 else oldGranul; - - getCpusPerTask = branch: hw: - if (branch == "garlic/mpi+send+seq") - then 1 else hw.cpusPerSocket; - - getNtasksPerNode = branch: hw: - if (branch == "garlic/mpi+send+seq") - then hw.cpusPerNode else hw.socketsPerNode; - - # Generate the complete configuration for each unit - genConf = c: targetMachine.config // rec { - - expName = "creams-size"; - unitName = "${expName}" - + "-granul.${toString granul}" - + "-sf.${toString sizeFactor}"; - - inherit (targetMachine.config) hw; - - # Options for creams - inherit (c) iterations gitBranch nodes sizeFactor baseGranul; - granul = getGranul gitBranch (max 2 (baseGranul * sizeFactor)); - nprocz = ntasksPerNode * nodes; - baseSizePerCpu = 2; - baseSize = baseSizePerCpu * cpusPerTask * ntasksPerNode * nodes; - - nz = baseSize * sizeFactor; - - # Repeat the execution of each unit 10 times - loops = 10; - - # Resources - qos = "debug"; - time = "02:00:00"; - ntasksPerNode = getNtasksPerNode gitBranch hw; - cpusPerTask = getCpusPerTask gitBranch hw; - jobName = unitName; - }; - - # Compute the array of configurations - configs = unique (stdexp.buildConfigs { - inherit varConf genConf; - }); - - # Custom srun stage to copy the creams input dataset - customSrun = {nextStage, conf, ...}: - let - input = bsc.garlic.apps.creamsInput.override { - inherit (conf) gitBranch granul nprocz nz; - }; - in - stdexp.stdStages.srun { - inherit nextStage conf; - # Now we add some commands to execute before calling srun. These will - # only run in one rank (the first in the list of allocated nodes) - preSrun = '' - cp -r ${input}/SodTubeBenchmark/* . - chmod +w -R . - sed -i '/maximum number of iterations/s/50/${toString conf.iterations}/' input.dat - rm -f nanos6.toml - ''; - }; - - exec = {nextStage, conf, ...}: stages.exec { - inherit nextStage; - env = '' - export NANOS6_CONFIG_OVERRIDE="version.dependencies=regions" - ''; - - # Remove restarts as is not needed and is huge - post = '' - rm -rf restarts || true - ''; - }; - - # Creams program - creams = {nextStage, conf, ...}: bsc.apps.creams.override { - inherit (conf) gitBranch; - }; - - pipeline = stdexp.stdPipelineOverride { - # Replace the stdandard srun stage with our own - overrides = { srun = customSrun; }; - } ++ [ exec creams ]; - -in - - stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/creams/ss.nix b/garlic/exp/creams/ss.nix deleted file mode 100644 index 86723be..0000000 --- a/garlic/exp/creams/ss.nix +++ /dev/null @@ -1,126 +0,0 @@ -{ - stdenv -, lib -, stdexp -, bsc -, targetMachine -, stages -, garlicTools -, enableExtended ? false -}: - -with lib; -with garlicTools; - -let - # Initial variable configuration - varConf = { - - nodes = range2 1 16; - granul = [ 16 ] ++ optionals (enableExtended) [ 8 32 ]; - - # Max. number of iterations - iterations = [ 20 ] ++ optionals (enableExtended) [ 10 ]; - - gitBranch = [ - "garlic/tampi+isend+oss+task" - "garlic/mpi+send+omp+task" - "garlic/mpi+send+seq" - ] ++ optionals (enableExtended) [ - "garlic/mpi+send+omp+fork" - "garlic/mpi+send+oss+task" - "garlic/mpi+isend+omp+task" - "garlic/mpi+isend+oss+task" - ]; - }; - - # We use these auxiliary functions to assign different configurations - # depending on the git branch. - getGranul = branch: oldGranul: - if (branch == "garlic/mpi+send+seq") - then 999999 else oldGranul; - - getCpusPerTask = branch: hw: - if (branch == "garlic/mpi+send+seq") - then 1 else hw.cpusPerSocket; - - getNtasksPerNode = branch: hw: - if (branch == "garlic/mpi+send+seq") - then hw.cpusPerNode else hw.socketsPerNode; - - # Generate the complete configuration for each unit - genConf = c: targetMachine.config // rec { - - expName = "creams-ss"; - unitName = "${expName}"+ - "-nodes${toString nodes}"+ - "-granul${toString granul}"+ - "-${gitBranch}"; - - inherit (targetMachine.config) hw; - - # Options for creams - inherit (c) iterations gitBranch nodes; - granul = getGranul gitBranch c.granul; - nprocz = ntasksPerNode * nodes; - - # Repeat the execution of each unit 10 times - loops = 10; - - # Resources - qos = "debug"; - time = "02:00:00"; - ntasksPerNode = getNtasksPerNode gitBranch hw; - cpusPerTask = getCpusPerTask gitBranch hw; - jobName = unitName; - }; - - # Compute the array of configurations - configs = unique (stdexp.buildConfigs { - inherit varConf genConf; - }); - - # Custom srun stage to copy the creams input dataset - customSrun = {nextStage, conf, ...}: - let - input = bsc.garlic.apps.creamsInput.override { - inherit (conf) gitBranch granul nprocz; - }; - in - stdexp.stdStages.srun { - inherit nextStage conf; - # Now we add some commands to execute before calling srun. These will - # only run in one rank (the first in the list of allocated nodes) - preSrun = '' - cp -r ${input}/SodTubeBenchmark/* . - chmod +w -R . - sed -i '/maximum number of iterations/s/50/${toString conf.iterations}/' input.dat - rm -f nanos6.toml - ''; - }; - - exec = {nextStage, conf, ...}: stages.exec { - inherit nextStage; - env = '' - export NANOS6_CONFIG_OVERRIDE="version.dependencies=regions" - ''; - - # Remove restarts as is not needed and is huge - post = '' - rm -rf restarts || true - ''; - }; - - # Creams program - creams = {nextStage, conf, ...}: bsc.apps.creams.override { - inherit (conf) gitBranch; - }; - - pipeline = stdexp.stdPipelineOverride { - # Replace the stdandard srun stage with our own - overrides = { srun = customSrun; }; - } ++ [ exec creams ]; - -in - - stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/examples/granularity.nix b/garlic/exp/examples/granularity.nix deleted file mode 100644 index 1c01244..0000000 --- a/garlic/exp/examples/granularity.nix +++ /dev/null @@ -1,189 +0,0 @@ -# This file defines an experiment. It is designed as a function that takes -# several parameters and returns a derivation. This derivation, when built will -# create several scripts that can be executed and launch the experiment. - -# These are the inputs to this function: an attribute set which must contain the -# following keys: -{ - stdenv -, lib -, stdexp -, bsc -, targetMachine -, stages -, garlicTools -}: - -# We import in the scope the content of the `lib` attribute, which -# contain useful functions like `toString`, which will be used later. This is -# handy to avoid writting `lib.tostring`. - -with lib; - -# We also have some functions specific to the garlic benchmark which we import -# as well. Take a look at the garlic/tools.nix file for more details. -with garlicTools; - -# The `let` keyword allows us to define some local variables which will be used -# later. It works as the local variable concept in the C language. -let - - # Initial variable configuration: every attribute in this set contains lists - # of options which will be used to compute the configuration of the units. The - # cartesian product of all the values will be computed. - varConf = { - # In this case we will vary the columns and rows of the blocksize. This - # configuration will create 3 x 2 = 6 units. - cbs = [ 256 1024 4096 ]; - rbs = [ 512 1024 ]; - }; - - # Generate the complete configuration for each unit: genConf is a function - # that accepts the argument `c` and returns a attribute set. The attribute set - # is formed by joining the configuration of the machine (which includes - # details like the number of nodes or the architecture) and the configuration - # that we define for our units. - # - # Notice the use of the `rec` keyword, which allows us to access the elements - # of the set while is being defined. - genConf = c: targetMachine.config // rec { - - # These attributes are user defined, and thus the user will need to handle - # them manually. They are not read by the standard pipeline: - - # Here we load the `hw` attribute from the machine configuration, so we can - # access it, for example, the number of CPUs per socket as hw.cpusPerSocket. - hw = targetMachine.config.hw; - - # These options will be used by the heat app, be we write them here so they - # are stored in the unit configuration. - timesteps = 10; - cols = 1024 * 16; # Columns - rows = 1024 * 16; # Rows - - # The blocksize is set to the values passed in the `c` parameter, which will - # be set to one of all the configurations of the cartesian product. for - # example: cbs = 256 and rbs = 512. - # We can also write `inherit (c) cbs rbs`, as is a shorthand notation. - cbs = c.cbs; - rbs = c.rbs; - - # The git branch is specified here as well, as will be used when we specify - # the heat app - gitBranch = "garlic/tampi+isend+oss+task"; - - # ------------------------------------------------------------------------- - - # These attributes are part of the standard pipeline, and are required for - # each experiment. They are automatically recognized by the standard - # execution pipeline. - - # The experiment name: - expName = "example-granularity-heat"; - - # The experimental unit name. It will be used to create a symlink in the - # index (at /gpfs/projects/bsc15/garlic/$USER/index/) so you can easily find - # the unit. Notice that the symlink is overwritten each time you run a unit - # with the same same. - # - # We use the toString function to convert the numeric value of cbs and rbs - # to a string like: "example-granularity-heat.cbs-256.rbs-512" - unitName = expName + - ".cbs-${toString cbs}" + - ".rbs-${toString rbs}"; - - # Repeat the execution of each unit a few times: this option is - # automatically taken by the experiment, which will repeat the execution of - # the program that many times. It is recommended to run the app at least 30 - # times, but we only used 10 here for demostration purposes (as it will be - # faster to run) - loops = 10; - - # Resources: here we configure the resources in the machine. The queue to be - # used is `debug` as is the fastest for small jobs. - qos = "debug"; - - # Then the number of MPI processes or tasks per node: - ntasksPerNode = 1; - - # And the number of nodes: - nodes = 1; - - # We use all the CPUs available in one socket to each MPI process or task. - # Notice that the number of CPUs per socket is not specified directly. but - # loaded from the configuration of the machine that will be used to run our - # experiment. The affinity mask is set accordingly. - cpusPerTask = hw.cpusPerSocket; - - # The time will limit the execution of the program in case of a deadlock - time = "02:00:00"; - - # The job name will appear in the `squeue` and helps to identify what is - # running. Currently is set to the name of the unit. - jobName = unitName; - }; - - # Using the `varConf` and our function `genConf` we compute a list of the - # complete configuration of every unit. - configs = stdexp.buildConfigs { - inherit varConf genConf; - }; - - # Now that we have the list of configs, we need to write how that information - # is used to run our program. In our case we will use some params such as the - # number of rows and columns of the input problem or the blocksize as argv - # values. - - # The exec stage is used to run a program with some arguments. - exec = {nextStage, conf, ...}: stages.exec { - # All stages require the nextStage attribute, which is passed as parameter. - inherit nextStage; - - # Then, we fill the argv array with the elements that will be used when - # running our program. Notice that we load the attributes from the - # configuration which is passed as argument as well. - argv = [ - "--rows" conf.rows - "--cols" conf.cols - "--rbs" conf.rbs - "--cbs" conf.cbs - "--timesteps" conf.timesteps - ]; - - # This program requires a file called `head.conf` in the current directory. - # To do it, we run this small script in the `pre` hook, which simple runs - # some commands before running the program. Notice that this command is - # executed in every MPI task. - pre = '' - ln -sf ${nextStage}/etc/heat.conf heat.conf || true - ''; - }; - - # The program stage is only used to specify which program we should run. - # We use this stage to specify build-time parameters such as the gitBranch, - # which will be used to fetch the source code. We use the `override` function - # of the `bsc.garlic.apps.heat` derivation to change the input paramenters. - program = {nextStage, conf, ...}: bsc.garlic.apps.heat.override { - inherit (conf) gitBranch; - }; - - # Other stages may be defined here, in case that we want to do something - # additional, like running the program under `perf stats` or set some - # envionment variables. - - # Once all the stages are defined, we build the pipeline array. The - # `stdexp.stdPipeline` contains the standard pipeline stages, so we don't need - # to specify them. We only specify how we run our program, and what program - # exactly, by adding our `exec` and `program` stages: - pipeline = stdexp.stdPipeline ++ [ exec program ]; - -# Then, we use the `configs` and the `pipeline` just defined inside the `in` -# part, to build the complete experiment: -in - - # The `stdexp.genExperiment` function generates an experiment by calling every - # stage of the pipeline with the different configs, and thus creating - # different units. The result is the top level derivation which is the - # `trebuchet`, which is the script that, when executed, launches the complete - # experiment. - stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/fwi/common.nix b/garlic/exp/fwi/common.nix deleted file mode 100644 index 63e88de..0000000 --- a/garlic/exp/fwi/common.nix +++ /dev/null @@ -1,128 +0,0 @@ -{ - stdenv -, lib -, stdexp -, bsc -, stages -}: - -with lib; - -# Common definitions used by fwi experiments -rec { - - branchesWithoutBlocksize = [ - "garlic/mpi+send+omp+fork" - "garlic/mpi+send+seq" - ]; - - # Returns true if the given config is in the forkJoinBranches list - needsBlocksize = c: ! any (e: c.gitBranch == e) branchesWithoutBlocksize; - - # Set the blocksize to null for the fork join branch - fixBlocksize = c: if (needsBlocksize c) then c - else (c // { blocksize = null; }); - - # Generate the configs by filtering the unneded blocksizes - getConfigs = {varConf, genConf}: - let - allConfigs = stdexp.buildConfigs { inherit varConf genConf; }; - in - # The unique function ensures that we only run one config for the fork - # join branch, even if we have multiple blocksizes. - unique (map fixBlocksize allConfigs); - - getResources = {gitBranch, hw}: - if (gitBranch == "garlic/mpi+send+seq") then { - cpusPerTask = 1; - ntasksPerNode = hw.cpusPerNode; - } else { - cpusPerTask = hw.cpusPerSocket; - ntasksPerNode = hw.socketsPerNode; - }; - - exec = {nextStage, conf, ...}: - let - fwiParams = bsc.apps.fwi.params.override { - inherit (conf) nx ny nz; - }; - - ioFreq = if (conf.enableIO) then (conf.ioFreq or "-1") else "9999"; - - in stages.exec { - inherit nextStage; - - # FIXME: FWI should allow the I/O directory to be specified as a - # parameter - pre = '' - FWI_SRUNDIR=$(pwd) - FWI_EXECDIR="${conf.tempDir}/out/$GARLIC_USER/$GARLIC_UNIT/$GARLIC_RUN" - FWI_PARAMS="${fwiParams}/fwi_params.txt" - FWI_FREQ="${fwiParams}/fwi_frequencies.txt" - - # Run fwi in a directory with fast local storage - mkdir -p "$FWI_EXECDIR" - cd "$FWI_EXECDIR" - - # Only generate the input if we have the CPU 0 (once per node) - if grep -o 'Cpus_allowed_list:[[:space:]]0' \ - /proc/self/status > /dev/null; - then - FWI_CAPTAIN=1 - fi - - if [ $FWI_CAPTAIN ]; then - >&2 echo "generating the input dataset" - ${fwiParams}/bin/ModelGenerator -m "$FWI_PARAMS" "$FWI_FREQ" - fi - - echo >&2 "Current dir: $(pwd)" - echo >&2 "Using PARAMS=$FWI_PARAMS and FREQ=$FWI_FREQ" - '' + optionalString (conf.enableCTF) '' - export NANOS6_CONFIG_OVERRIDE="version.instrument=ctf" - ''; - - argv = [ - ''"$FWI_PARAMS"'' - ''"$FWI_FREQ"'' - ] ++ optional (needsBlocksize conf) conf.blocksize ++ [ - "-1" # Fordward steps - "-1" # Backward steps - ioFreq # Write/read frequency - ]; - - post = '' - # Go back to the garlic out directory - cd "$FWI_SRUNDIR" - - if [ $FWI_CAPTAIN ]; then - '' + optionalString (conf.enableCTF) '' - # FIXME: We should specify the path in the nanos6 config, so we - # can avoid the race condition while they are generating the - # traces - sleep 3 - - # Save the traces - mv "$FWI_EXECDIR"/trace_* . - '' + '' - rm -rf "$FWI_EXECDIR" - fi - ''; - }; - - apps = bsc.garlic.apps; - - # FWI program - program = {nextStage, conf, ...}: - let - fwiParams = bsc.apps.fwi.params.override { - inherit (conf) nx ny nz; - }; - in - apps.fwi.solver.override { - inherit (conf) gitBranch; - inherit fwiParams; - }; - - pipeline = stdexp.stdPipeline ++ [ exec program ]; -} diff --git a/garlic/exp/fwi/granularity.nix b/garlic/exp/fwi/granularity.nix deleted file mode 100644 index 15bc484..0000000 --- a/garlic/exp/fwi/granularity.nix +++ /dev/null @@ -1,71 +0,0 @@ -# Regular granularity test for FWI - -{ - stdenv -, lib -, stdexp -, bsc -, targetMachine -, stages -, garlicTools -, callPackage -}: - -with lib; -with garlicTools; - -let - - inherit (targetMachine) fs; - - # Initial variable configuration - varConf = { - gitBranch = [ "garlic/tampi+isend+oss+task" ]; - blocksize = range2 1 256; - n = [ {nx=100; nz=100; ny=8000; ntpn=2; nodes=1;} ]; - }; - - machineConfig = targetMachine.config; - - # Generate the complete configuration for each unit - genConf = c: targetMachine.config // rec { - expName = "fwi-granularity"; - unitName = "${expName}" - + "-bs${toString blocksize}" - + "-${toString gitBranch}"; - - inherit (machineConfig) hw; - inherit (c) gitBranch blocksize; - inherit (c.n) nx ny nz ntpn nodes; - - # Other FWI parameters - enableIO = true; - enableCTF = false; - - # Repeat the execution of each unit several times - loops = 10; - - # Resources - cpusPerTask = hw.cpusPerSocket; - ntasksPerNode = ntpn; - qos = "debug"; - time = "02:00:00"; - jobName = unitName; - - # Enable permissions to write in the local storage - extraMounts = [ fs.local.temp ]; - tempDir = fs.local.temp; - - }; - - common = callPackage ./common.nix {}; - - inherit (common) getConfigs pipeline; - - configs = getConfigs { - inherit varConf genConf; - }; - -in - - stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/fwi/io.nix b/garlic/exp/fwi/io.nix deleted file mode 100644 index 0d107d7..0000000 --- a/garlic/exp/fwi/io.nix +++ /dev/null @@ -1,75 +0,0 @@ -# Test FWI variants based on tasks with and without I/O. -# This experiment solves a computationally expensive input which brings the -# storage devices to saturation when I/O is enabled. The same input runs -# without I/O for comparison purposes. Also, a range of block sizes -# deemed as efficient according to the granularity experiment are -# explored. - -{ - stdenv -, lib -, stdexp -, bsc -, targetMachine -, stages -, callPackage -, enableExtended ? false -}: - -with lib; - -let - common = callPackage ./common.nix {}; - inherit (common) getConfigs getResources pipeline; - - inherit (targetMachine) fs; - - # Initial variable configuration - varConf = { - gitBranch = [ "garlic/tampi+send+oss+task" ]; - blocksize = [ 1 2 4 8 ]; - n = [ {nx=500; nz=500; ny=16000;} ]; - nodes = if (enableExtended) then range2 1 16 else [ 4 ]; - enableIO = [ false true ]; - }; - - machineConfig = targetMachine.config; - - # Generate the complete configuration for each unit - genConf = c: targetMachine.config // rec { - expName = "fwi-io"; - unitName = "${expName}" - + "-nodes${toString nodes}" - + "-bs${toString blocksize}" - + (if (enableIO) then "-io1" else "-io0") - + "-${toString gitBranch}"; - - inherit (machineConfig) hw; - inherit (c) gitBranch blocksize enableIO nodes; - inherit (c.n) nx ny nz; - - # Repeat the execution of each unit several times - loops = 10; - - # Resources - inherit (getResources { inherit gitBranch hw; }) - cpusPerTask ntasksPerNode; - - qos = "debug"; - time = "02:00:00"; - jobName = unitName; - - enableCTF = false; - - # Enable permissions to write in the local storage - extraMounts = [ fs.local.temp ]; - tempDir = fs.local.temp; - }; - - configs = getConfigs { - inherit varConf genConf; - }; - -in - - stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/fwi/reuse.nix b/garlic/exp/fwi/reuse.nix deleted file mode 100644 index 9a725e2..0000000 --- a/garlic/exp/fwi/reuse.nix +++ /dev/null @@ -1,91 +0,0 @@ -# This test compares a FWI version using poor data locality (+NOREUSE) versus -# the optimized version (used for all other experiments). Follows a pseudocode -# snippet illustrating the fundamental difference between version. -# -# NOREUSE -# ---------------------- -# for (y) for (x) for (z) -# computA(v[y][x][z]); -# for (y) for (x) for (z) -# computB(v[y][x][z]); -# for (y) for (x) for (z) -# computC(v[y][x][z]); -# -# Optimized version -# ---------------------- -# for (y) for (x) for (z) -# computA(v[y][x][z]); -# computB(v[y][x][z]); -# computC(v[y][x][z]); - -{ - stdenv -, lib -, stdexp -, bsc -, targetMachine -, stages -, callPackage -}: - -with lib; - -let - - inherit (targetMachine) fs; - - # Initial variable configuration - varConf = { - gitBranch = [ - "garlic/mpi+send+oss+task" - "garlic/mpi+send+oss+task+NOREUSE" - ]; - - blocksize = [ 1 2 4 8 ]; - - n = [ {nx=300; ny=2000; nz=300;} ]; # / half node - }; - - machineConfig = targetMachine.config; - - # Generate the complete configuration for each unit - genConf = c: targetMachine.config // rec { - expName = "fwi-reuse"; - unitName = "${expName}" - + "-bs${toString blocksize}" - + "-${toString gitBranch}"; - - inherit (machineConfig) hw; - inherit (c) gitBranch blocksize; - inherit (c.n) nx ny nz; - - enableCTF = false; - enableIO = true; - - # Repeat the execution of each unit several times - loops = 10; - - # Resources - cpusPerTask = hw.cpusPerSocket; - ntasksPerNode = 1; - nodes = 1; - qos = "debug"; - time = "02:00:00"; - jobName = unitName; - - # Enable permissions to write in the local storage - extraMounts = [ fs.local.temp ]; - tempDir = fs.local.temp; - }; - - common = callPackage ./common.nix {}; - - inherit (common) getConfigs pipeline; - - configs = getConfigs { - inherit varConf genConf; - }; - -in - - stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/fwi/ss.nix b/garlic/exp/fwi/ss.nix deleted file mode 100644 index c54370e..0000000 --- a/garlic/exp/fwi/ss.nix +++ /dev/null @@ -1,90 +0,0 @@ -# Strong scaling test for FWI variants based on tasks. This -# experiment explores a range of block sizes deemed as efficient -# according to the granularity experiment. - -{ - stdenv -, lib -, stdexp -, bsc -, targetMachine -, stages -, garlicTools -, callPackage -, enableExtended ? false -}: - -with lib; -with garlicTools; - -let - common = callPackage ./common.nix {}; - inherit (common) getConfigs getResources pipeline; - - inherit (targetMachine) fs; - - # Initial variable configuration - varConf = { - gitBranch = [ - "garlic/tampi+isend+oss+task" - ] ++ optionals (enableExtended) [ - "garlic/tampi+send+oss+task" - "garlic/mpi+send+omp+task" - "garlic/mpi+send+oss+task" - "garlic/mpi+send+omp+fork" - # FIXME: the mpi pure version has additional constraints with the - # number of planes in Y. By now is disabled. - #"garlic/mpi+send+seq" - ]; - - blocksize = if (enableExtended) - then range2 1 16 - else [ 2 ]; - - n = [ { nx=100; ny=8000; nz=100; } ]; - - nodes = range2 1 16; - }; - - machineConfig = targetMachine.config; - - # Generate the complete configuration for each unit - genConf = c: machineConfig // rec { - expName = "fwi-ss"; - unitName = "${expName}" - + "-nodes${toString nodes}" - + "-bs${toString blocksize}" - + "-${toString gitBranch}"; - - inherit (machineConfig) hw; - inherit (c) gitBranch blocksize; - inherit (c.n) nx ny nz; - - # Other FWI parameters - enableIO = true; - enableCTF = false; - - # Repeat the execution of each unit several times - loops = 10; - - # Resources - inherit (getResources { inherit gitBranch hw; }) - cpusPerTask ntasksPerNode; - - nodes = c.nodes; - qos = "debug"; - time = "02:00:00"; - jobName = unitName; - - # Enable permissions to write in the local storage - extraMounts = [ fs.local.temp ]; - tempDir = fs.local.temp; - }; - - configs = getConfigs { - inherit varConf genConf; - }; - -in - - stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/heat/granularity.nix b/garlic/exp/heat/granularity.nix deleted file mode 100644 index 8ebe5db..0000000 --- a/garlic/exp/heat/granularity.nix +++ /dev/null @@ -1,175 +0,0 @@ -{ - stdenv -, lib -, stdexp -, bsc -, targetMachine -, stages -, garlicTools -, writeText -, enablePerf ? false -, enableCTF ? false -, enableHWC ? false -, enableExtended ? false -}: - -# TODO: Finish HWC first -assert (enableHWC == false); - -with lib; -with garlicTools; - -let - # Initial variable configuration - varConf = with bsc; { - cbs = range2 32 4096; - rbs = range2 32 4096; - }; - - machineConfig = targetMachine.config; - - # Generate the complete configuration for each unit - genConf = with bsc; c: targetMachine.config // rec { - expName = "heat"; - unitName = expName + - ".cbs-${toString cbs}" + - ".rbs-${toString rbs}"; - - inherit (machineConfig) hw; - - # heat options - timesteps = 10; - cols = 1024 * 16; # Columns - rows = 1024 * 16; # Rows - inherit (c) cbs rbs; - gitBranch = "garlic/tampi+isend+oss+task"; - - # Repeat the execution of each unit 30 times - loops = 10; - - # Resources - qos = "debug"; - ntasksPerNode = 1; - nodes = 1; - time = "02:00:00"; - # Assign one socket to each task (only one process) - cpusPerTask = hw.cpusPerSocket; - jobName = unitName; - }; - - filterConfigs = c: let - # Too small sizes lead to huge overheads - goodSize = (c.cbs * c.rbs >= 1024); - # When the extended units are not enabled, we only select those in - # the diagonal. - extended = if (enableExtended) then true - else c.cbs == c.rbs; - in - goodSize && extended; - - # Compute the array of configurations - configs = filter (filterConfigs) (stdexp.buildConfigs { - inherit varConf genConf; - }); - - perf = {nextStage, conf, ...}: stages.perf { - inherit nextStage; - perfOptions = "stat -o .garlic/perf.csv -x , " + - "-e cycles,instructions,cache-references,cache-misses"; - }; - - ctf = {nextStage, conf, ...}: let - # Create the nanos6 configuration file - nanos6ConfigFile = writeText "nanos6.toml" '' - version.instrument = "ctf" - turbo.enabled = false - instrument.ctf.converter.enabled = false - '' + optionalString (enableHWC) '' - hardware_counters.papi.enabled = true - hardware_counters.papi.counters = [ - "PAPI_TOT_INS", "PAPI_TOT_CYC", - "PAPI_L1_TCM", "PAPI_L2_TCM", "PAPI_L3_TCM" - ] - ''; - - in stages.exec { - inherit nextStage; - - # And use it - env = '' - export NANOS6_CONFIG=${nanos6ConfigFile} - ''; - - # FIXME: We should run a hook *after* srun has ended, so we can - # execute it in one process only (not in N ranks). This hack works - # with one process only. Or be able to compute the name of the trace - # directory so we can begin the conversion in parallel - post = assert (conf.nodes * conf.ntasksPerNode == 1); '' - tracedir=$(ls -d trace_* | head -1) - echo "using tracedir=$tracedir" - - offset=$(grep 'offset =' $tracedir/ctf/ust/uid/1000/64-bit/metadata | \ - grep -o '[0-9]*') - echo "offset = $offset" - - start_time=$(awk '/^start_time / {print $2}' stdout.log) - end_time=$(awk '/^end_time / {print $2}' stdout.log) - - begin=$(awk "BEGIN{print $start_time*1e9 - $offset}") - end=$(awk "BEGIN{print $end_time*1e9 - $offset}") - - echo "only events between $begin and $end" - - ${bsc.cn6}/bin/cn6 -s $tracedir - - ${bsc.cn6}/bin/cut $begin $end < $tracedir/prv/trace.prv |\ - ${bsc.cn6}/bin/hcut 1 ${toString conf.cpusPerTask} \ - > $tracedir/prv/trace-cut.prv - - ${bsc.cn6}/bin/dur 6400025 0 < $tracedir/prv/trace-cut.prv |\ - awk '{s+=$1} END {print s}' >> .garlic/time_mode_dead.csv & - - ${bsc.cn6}/bin/dur 6400025 1 < $tracedir/prv/trace-cut.prv |\ - awk '{s+=$1} END {print s}' >> .garlic/time_mode_runtime.csv & - - ${bsc.cn6}/bin/dur 6400025 3 < $tracedir/prv/trace-cut.prv |\ - awk '{s+=$1} END {print s}' >> .garlic/time_mode_task.csv & - - wait - - # Remove the traces at the end, as they are huge - rm -rf $tracedir - ''; - # TODO: To enable HWC we need to first add a taskwait before the - # first get_time() measurement, otherwise we get the HWC of the - # main task, which will be huge. - }; - - exec = {nextStage, conf, ...}: stages.exec { - inherit nextStage; - argv = [ - "--rows" conf.rows - "--cols" conf.cols - "--rbs" conf.rbs - "--cbs" conf.cbs - "--timesteps" conf.timesteps - ]; - - # The next stage is the program - env = '' - ln -sf ${nextStage}/etc/heat.conf heat.conf || true - ''; - }; - - program = {nextStage, conf, ...}: bsc.garlic.apps.heat.override { - inherit (conf) gitBranch; - }; - - pipeline = stdexp.stdPipeline ++ - (optional enablePerf perf) ++ - (optional enableCTF ctf) ++ - [ exec program ]; - -in - - stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/hpcg/common.nix b/garlic/exp/hpcg/common.nix deleted file mode 100644 index a7c19e3..0000000 --- a/garlic/exp/hpcg/common.nix +++ /dev/null @@ -1,73 +0,0 @@ -{ - stdenv -, lib -, stdexp -, bsc -, stages -, callPackage -}: - -with lib; - -rec { - - checkInput = {nextStage, conf, ...}: stages.exec { - inherit nextStage; - pre = optionalString (! (conf.enableGen or false)) ( - let - gen = callPackage ./gen.nix { }; - inputTre = gen.getInputTre conf; - exp = inputTre.experiment; - unit = elemAt exp.units 0; - expName = baseNameOf (toString exp); - unitName = baseNameOf (toString unit); - inputPath = "$GARLIC_OUT/${expName}/${unitName}/1"; - in - '' - # Force the generation of the input resultTree as a dependency: - # ${toString inputTre.result} - - # Ensure the input dataset is still available - export HPCG_INPUT_PATH="${toString inputPath}" - - if [ ! -e "$HPCG_INPUT_PATH" ]; then - >&2 echo "Missing input dataset: $HPCG_INPUT_PATH" - exit 1 - fi - '' - ); - }; - - getSizePerTask = cpusPerTask: sizePerCpu: - mapAttrs (name: val: val * cpusPerTask) sizePerCpu; - - exec = {nextStage, conf, ...}: let - actionArg = if (conf.enableGen or false) - then "--store=." - else "--load=\"$HPCG_INPUT_PATH\""; - - in stages.exec { - inherit nextStage; - argv = [ - "--nx=${toString conf.sizePerTask.x}" - "--ny=${toString conf.sizePerTask.y}" - "--nz=${toString conf.sizePerTask.z}" - "--npx=${toString conf.nprocs.x}" - "--npy=${toString conf.nprocs.y}" - "--npz=${toString conf.nprocs.z}" - "--nblocks=${toString conf.nblocks}" - "--ncomms=${toString conf.ncomms}" - # The input symlink is generated by the input stage, which is generated by - # the genInput function. - actionArg - ] ++ optional (conf.disableAspectRatio or false) "--no-ar=1"; - }; - - program = {nextStage, conf, ...}: bsc.apps.hpcg.override { - inherit (conf) gitBranch; - }; - - pipeline = stdexp.stdPipeline ++ [ - checkInput - exec program ]; -} diff --git a/garlic/exp/hpcg/gen.nix b/garlic/exp/hpcg/gen.nix deleted file mode 100644 index d34eccc..0000000 --- a/garlic/exp/hpcg/gen.nix +++ /dev/null @@ -1,52 +0,0 @@ -{ - stdenv -, lib -, stdexp -, bsc -, targetMachine -, stages -, garlicTools -, callPackage -}: - -with lib; -with garlicTools; - -rec { - - # Generate the complete configuration for each unit - genConf = c: targetMachine.config // rec { - expName = "hpcg-gen"; - unitName = expName - + "-nodes${toString nodes}" - + "-spt.z${toString sizePerTask.z}"; - - inherit (targetMachine.config) hw; - - # Inherit options from the current conf - inherit (c) sizePerTask nprocs disableAspectRatio gitBranch - cpusPerTask ntasksPerNode nodes; - - # nblocks and ncomms are ignored from c - ncomms = 1; - nblocks = 1; - - # We only need one run - loops = 1; - - # Generate the input - enableGen = true; - - # Resources - qos = "debug"; - time = "02:00:00"; - jobName = unitName; - }; - - common = callPackage ./common.nix {}; - - getInputTre = conf: stdexp.genExperiment { - configs = [ (genConf conf) ]; - pipeline = common.pipeline; - }; -} diff --git a/garlic/exp/hpcg/granularity.nix b/garlic/exp/hpcg/granularity.nix deleted file mode 100644 index 7c3d2a8..0000000 --- a/garlic/exp/hpcg/granularity.nix +++ /dev/null @@ -1,76 +0,0 @@ -{ - stdenv -, lib -, stdexp -, bsc -, targetMachine -, stages -, garlicTools -, callPackage -}: - -with lib; -with garlicTools; - -let - common = callPackage ./common.nix { }; - - inherit (common) pipeline getSizePerTask; - - maxNodes = 16; - - # Initial variable configuration - varConf = { - blocksPerCpu = range2 0.5 256; - gitBranch = [ - "garlic/tampi+isend+oss+task" - ]; - }; - - # Generate the complete configuration for each unit - genConf = c: targetMachine.config // rec { - expName = "hpcg-granularity"; - unitName = "${expName}" - + "-nodes${toString nodes}" - + "-bpc${toString blocksPerCpu}"; - - inherit (targetMachine.config) hw; - - inherit maxNodes; - sizeFactor = maxNodes / nodes; - - # hpcg options - inherit (c) blocksPerCpu gitBranch; - baseSizeZ = 16; - nodes = 1; - totalTasks = ntasksPerNode * nodes; - sizePerCpu = { - x = 2; - y = 2; - z = baseSizeZ * sizeFactor; - }; - sizePerTask = getSizePerTask cpusPerTask sizePerCpu; - nprocs = { x=1; y=1; z=totalTasks; }; - nblocks = floatTruncate (blocksPerCpu * cpusPerTask); - ncomms = 1; - disableAspectRatio = true; - - # Repeat the execution of each unit several times - loops = 3; - - # Resources - qos = "debug"; - time = "02:00:00"; - cpusPerTask = hw.cpusPerSocket; - ntasksPerNode = hw.socketsPerNode; - jobName = unitName; - }; - - # Compute the array of configurations - configs = stdexp.buildConfigs { - inherit varConf genConf; - }; - -in - - stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/hpcg/scaling.nix b/garlic/exp/hpcg/scaling.nix deleted file mode 100644 index afb1aee..0000000 --- a/garlic/exp/hpcg/scaling.nix +++ /dev/null @@ -1,78 +0,0 @@ -{ - stdenv -, lib -, stdexp -, bsc -, targetMachine -, stages -, garlicTools -, callPackage -, enableExtended ? false -, enableStrong ? true -}: - -with lib; -with garlicTools; - -let - common = callPackage ./common.nix { }; - - inherit (common) pipeline getSizePerTask; - - maxNodes = 16; - - # Initial variable configuration - varConf = { - nodes = range2 1 maxNodes; - baseSizeZ = if (enableExtended) then [ 8 16 ] else [ 16 ]; - blocksPerCpu = if (enableExtended) then range2 1 8 else [ 4 ]; - gitBranch = [ - "garlic/tampi+isend+oss+task" - ]; - }; - - # Generate the complete configuration for each unit - genConf = c: targetMachine.config // rec { - expName = if (enableStrong) then "hpcg-ss" else "hpcg-ws"; - unitName = "${expName}" - + "-nodes${toString nodes}" - + "-bpc${toString blocksPerCpu}"; - - inherit (targetMachine.config) hw; - - inherit maxNodes; - sizeFactor = if (enableStrong) then maxNodes / nodes else 1; - - # hpcg options - inherit (c) nodes blocksPerCpu gitBranch; - totalTasks = ntasksPerNode * nodes; - sizePerCpu = { - x = 2; - y = 2; - z = c.baseSizeZ * sizeFactor; - }; - sizePerTask = getSizePerTask cpusPerTask sizePerCpu; - nprocs = { x=1; y=1; z=totalTasks; }; - nblocks = blocksPerCpu * cpusPerTask; - ncomms = 1; - disableAspectRatio = true; - - # Repeat the execution of each unit several times - loops = 10; - - # Resources - qos = "debug"; - time = "02:00:00"; - cpusPerTask = hw.cpusPerSocket; - ntasksPerNode = hw.socketsPerNode; - jobName = unitName; - }; - - # Compute the array of configurations - configs = stdexp.buildConfigs { - inherit varConf genConf; - }; - -in - - stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/hpcg/size.nix b/garlic/exp/hpcg/size.nix deleted file mode 100644 index 1124323..0000000 --- a/garlic/exp/hpcg/size.nix +++ /dev/null @@ -1,65 +0,0 @@ -{ - stdenv -, lib -, stdexp -, bsc -, targetMachine -, stages -, garlicTools -, callPackage -}: - -with lib; -with garlicTools; - -let - common = callPackage ./common.nix { }; - - inherit (common) pipeline getSizePerTask; - - # Initial variable configuration - varConf = { - sizeFactor = [ 1 2 4 8 16 32 ]; - }; - - # Generate the complete configuration for each unit - genConf = c: targetMachine.config // rec { - expName = "hpcg-size"; - unitName = "${expName}" - + "-nodes${toString nodes}" - + "-sf${toString sizeFactor}"; - - inherit (targetMachine.config) hw; - - # hpcg options - inherit (c) sizeFactor; - gitBranch = "garlic/tampi+isend+oss+task"; - nodes = 16; - totalTasks = ntasksPerNode * nodes; - sizePerCpu = { x = 2; y = 2; z = 4 * sizeFactor; }; - sizePerTask = getSizePerTask cpusPerTask sizePerCpu; - nprocs = { x=1; y=1; z=totalTasks; }; - blocksPerCpu = 4; - nblocks = blocksPerCpu * cpusPerTask; - ncomms = 1; - disableAspectRatio = true; - - # Repeat the execution of each unit several times - loops = 5; - - # Resources - qos = "debug"; - time = "02:00:00"; - cpusPerTask = hw.cpusPerSocket; - ntasksPerNode = hw.socketsPerNode; - jobName = unitName; - }; - - # Compute the array of configurations - configs = stdexp.buildConfigs { - inherit varConf genConf; - }; - -in - - stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/index.nix b/garlic/exp/index.nix deleted file mode 100644 index 2f2bcc4..0000000 --- a/garlic/exp/index.nix +++ /dev/null @@ -1,108 +0,0 @@ -{ - super -, self -, bsc -, garlic -, callPackage -}: - -{ - nbody = rec { - granularity = callPackage ./nbody/granularity.nix { }; - ss = callPackage ./nbody/ss.nix { }; - numa = callPackage ./nbody/numa.nix { }; - }; - - saiph = { - granularity = callPackage ./saiph/granularity.nix { }; - ss = callPackage ./saiph/ss.nix { }; - }; - - creams = rec { - ss = callPackage ./creams/ss.nix { }; - granularity = callPackage ./creams/granularity.nix { }; - size = callPackage ./creams/size.nix { }; - granularity16 = callPackage ./creams/granularity16.nix { }; - - # These experiments are the extended versions of the previous - # ones. We split them so we can keep a reasonable execution time - big.granularity = granularity.override { enableExtended = true; }; - big.ss = granularity.override { enableExtended = true; }; - }; - - hpcg = rec { - granularity = callPackage ./hpcg/granularity.nix { }; - ss = callPackage ./hpcg/scaling.nix { }; - ws = ss.override { enableStrong=false; }; - size = callPackage ./hpcg/size.nix { }; - - big.ss = ss.override { enableExtended = true; }; - }; - - heat = rec { - granularity = callPackage ./heat/granularity.nix { }; - cache = granularity.override { enablePerf = true; }; - ctf = granularity.override { enableCTF = true; }; - }; - - bigsort = rec { - genseq = callPackage ./bigsort/genseq.nix { - n = toString (1024 * 1024 * 1024 / 8); # 1 GB input size - dram = toString (1024 * 1024 * 1024); # 1 GB chunk - }; - - shuffle = callPackage ./bigsort/shuffle.nix { - inputTre = genseq; - n = toString (1024 * 1024 * 1024 / 8); # 1 GB input size - dram = toString (1024 * 1024 * 1024); # 1 GB chunk - inherit (bsc.garlic.pp) resultFromTrebuchet; - }; - - sort = callPackage ./bigsort/sort.nix { - inputTre = shuffle; - inherit (bsc.garlic.pp) resultFromTrebuchet; - removeOutput = false; - }; - }; - - slurm = { - cpu = callPackage ./slurm/cpu.nix { }; - sigsegv = callPackage ./slurm/sigsegv.nix { }; - exit1 = callPackage ./slurm/exit1.nix { }; - }; - - lulesh = { - test = callPackage ./lulesh/test.nix { }; - }; - - fwi = rec { - granularity = callPackage ./fwi/granularity.nix { }; - ss = callPackage ./fwi/ss.nix { }; - reuse = callPackage ./fwi/reuse.nix { }; - io = callPackage ./fwi/io.nix { }; - - # Extended experiments - big.io = io.override { enableExtended = true; }; - }; - - osu = rec { - latency = callPackage ./osu/latency.nix { }; - latencyShm = latency.override { interNode = false; }; - latencyMt = latency.override { enableMultithread = true; }; - latencyMtShm = latency.override { enableMultithread = true; interNode = true; }; - bw = callPackage ./osu/bw.nix { }; - impi = callPackage ./osu/impi.nix { }; - bwShm = bw.override { interNode = false; }; - mtu = callPackage ./osu/mtu.nix { }; - eager = callPackage ./osu/eager.nix { }; - }; - - examples = { - granularity = callPackage ./examples/granularity.nix { }; - }; - - cn6 = { - timediff = callPackage ./cn6/timediff.nix { }; - nbody = callPackage ./cn6/nbody.nix { }; - }; -} diff --git a/garlic/exp/lulesh/test.nix b/garlic/exp/lulesh/test.nix deleted file mode 100644 index eb9b078..0000000 --- a/garlic/exp/lulesh/test.nix +++ /dev/null @@ -1,85 +0,0 @@ -{ - stdenv -, lib -, stdexp -, bsc -, targetMachine -, stages -}: - -with lib; - -let - - # Initial variable configuration - varConf = with bsc; { - gitBranch = [ - "garlic/mpi+isend+seq" - "garlic/tampi+isend+oss+taskloop" - "garlic/tampi+isend+oss+taskfor" - "garlic/tampi+isend+oss+task" - "garlic/mpi+isend+seq" - "garlic/mpi+isend+oss+task" - "garlic/mpi+isend+omp+fork" - "garlic/tampi+isend+oss+taskloopfor" - ]; - }; - - machineConfig = targetMachine.config; - - # Generate the complete configuration for each unit - genConf = with bsc; c: targetMachine.config // rec { - expName = "lulesh"; - unitName = "${expName}-test"; - inherit (machineConfig) hw; - - # options - iterations = 10; - size = 30; - gitBranch = c.gitBranch; - - # Repeat the execution of each unit several times - loops = 10; - - # Resources - qos = "debug"; - cpusPerTask = hw.cpusPerSocket; - ntasksPerNode = 1; - nodes = 1; - time = "02:00:00"; - jobName = unitName; - }; - - # Compute the array of configurations - configs = stdexp.buildConfigs { - inherit varConf genConf; - }; - - /* Lulesh options: - -q : quiet mode - suppress all stdout - -i : number of cycles to run - -s : length of cube mesh along side - -r : Number of distinct regions (def: 11) - -b : Load balance between regions of a domain (def: 1) - -c : Extra cost of more expensive regions (def: 1) - -f : Number of files to split viz dump into (def: (np+10)/9) - -p : Print out progress - -v : Output viz file (requires compiling with -DVIZ_MESH - -h : This message - */ - exec = {nextStage, conf, ...}: with conf; stages.exec { - inherit nextStage; - argv = [ "-i" iterations "-s" size ]; - }; - - apps = bsc.garlic.apps; - - program = {nextStage, conf, ...}: apps.lulesh.override { - inherit (conf) gitBranch; - }; - - pipeline = stdexp.stdPipeline ++ [ exec program ]; - -in - - stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/nbody/common.nix b/garlic/exp/nbody/common.nix deleted file mode 100644 index 8570332..0000000 --- a/garlic/exp/nbody/common.nix +++ /dev/null @@ -1,37 +0,0 @@ -{ - stdenv -, lib -, stdexp -, bsc -, stages -, numactl -, garlicTools -}: - -with lib; -with garlicTools; - -rec { - getConfigs = {varConf, genConf}: stdexp.buildConfigs { - inherit varConf genConf; - }; - - exec = {nextStage, conf, ...}: stages.exec - ( - { - inherit nextStage; - argv = with conf; [ "-t" timesteps "-p" particles ]; - } - # Use numactl to use the interleave policy if requested (default is - # false) - // optionalAttrs (conf.interleaveMem or false) { - program = "${numactl}/bin/numactl --interleave=all ${stageProgram nextStage}"; - } - ); - - program = {nextStage, conf, ...}: bsc.garlic.apps.nbody.override { - inherit (conf) blocksize gitBranch; - }; - - pipeline = stdexp.stdPipeline ++ [ exec program ]; -} diff --git a/garlic/exp/nbody/granularity.nix b/garlic/exp/nbody/granularity.nix deleted file mode 100644 index 4b59bae..0000000 --- a/garlic/exp/nbody/granularity.nix +++ /dev/null @@ -1,60 +0,0 @@ -{ - stdenv -, lib -, stdexp -, bsc -, targetMachine -, stages -, garlicTools -, callPackage -}: - -with lib; -with garlicTools; - -let - # Initial variable configuration - varConf = { - blocksize = range2 64 2048; - gitBranch = [ -# "garlic/mpi+send+oss+task" -# "garlic/tampi+send+oss+task" - "garlic/tampi+isend+oss+task" - ]; - }; - - # Generate the complete configuration for each unit - genConf = c: targetMachine.config // rec { - hw = targetMachine.config.hw; - particles = 8 * 1024 * hw.cpusPerSocket; - timesteps = 10; - blocksize = c.blocksize; - gitBranch = c.gitBranch; - - expName = "nbody-granularity"; - unitName = expName + - "-${toString gitBranch}" + - "-bs${toString blocksize}"; - - loops = 10; - - qos = "debug"; - cpusPerTask = hw.cpusPerSocket; - ntasksPerNode = hw.socketsPerNode; - nodes = 1; - time = "02:00:00"; - jobName = unitName; - }; - - - common = callPackage ./common.nix {}; - - inherit (common) getConfigs pipeline; - - configs = getConfigs { - inherit varConf genConf; - }; - -in - - stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/nbody/numa.nix b/garlic/exp/nbody/numa.nix deleted file mode 100644 index a860fdc..0000000 --- a/garlic/exp/nbody/numa.nix +++ /dev/null @@ -1,64 +0,0 @@ -{ - stdenv -, lib -, stdexp -, bsc -, targetMachine -, stages -, garlicTools -, numactl -, callPackage -}: - -with lib; -with garlicTools; - -let - # Initial variable configuration - varConf = { - blocksize = range2 256 1024; - gitBranch = [ "garlic/tampi+send+oss+task" ]; - attachToSocket = [ true false ]; - interleaveMem = [ true false ]; - }; - - # Generate the complete configuration for each unit - genConf = c: targetMachine.config // rec { - hw = targetMachine.config.hw; - particles = 4 * 1024 * hw.cpusPerSocket; - timesteps = 10; - - inherit (c) attachToSocket interleaveMem gitBranch blocksize; - - expName = "nbody-numa"; - unitName = expName + - "-${toString gitBranch}" + - "-bs.${toString blocksize}" + - "-tpn.${toString ntasksPerNode}" + - "-interleave.${if (interleaveMem) then "yes" else "no"}"; - - loops = 10; - - qos = "debug"; - cpusPerTask = if (attachToSocket) - then hw.cpusPerSocket - else hw.cpusPerNode; - ntasksPerNode = if (attachToSocket) - then hw.socketsPerNode - else 1; - nodes = 4; - time = "02:00:00"; - jobName = unitName; - }; - - common = callPackage ./common.nix {}; - - inherit (common) getConfigs pipeline; - - configs = getConfigs { - inherit varConf genConf; - }; - -in - - stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/nbody/old/granularity-oss.nix b/garlic/exp/nbody/old/granularity-oss.nix deleted file mode 100644 index 2dbe81c..0000000 --- a/garlic/exp/nbody/old/granularity-oss.nix +++ /dev/null @@ -1,60 +0,0 @@ -{ - stdenv -, lib -, stdexp -, bsc -, targetMachine -, stages -, garlicTools -}: - -with lib; -with garlicTools; - -let - - # Initial variable configuration - varConf = { - blocksize = [ 128 256 512 1024 2048 4096 ]; - }; - - # Generate the complete configuration for each unit - genConf = c: targetMachine.config // rec { - hw = targetMachine.config.hw; - particles = 4096 * hw.cpusPerSocket; - timesteps = 10; - blocksize = c.blocksize; - - gitBranch = "garlic/oss+task"; - expName = "nbody-granularity"; - unitName = expName + "-bs${toString blocksize}"; - - loops = 30; - - qos = "debug"; - ntasksPerNode = 1; - nodes = 1; - time = "02:00:00"; - cpusPerTask = hw.cpusPerSocket; - jobName = unitName; - }; - - # Compute the array of configurations - configs = stdexp.buildConfigs { - inherit varConf genConf; - }; - - exec = {nextStage, conf, ...}: stages.exec { - inherit nextStage; - argv = [ "-t" conf.timesteps "-p" conf.particles ]; - }; - - program = {nextStage, conf, ...}: with conf; bsc.garlic.apps.nbody.override { - inherit (conf) blocksize gitBranch; - }; - - pipeline = stdexp.stdPipeline ++ [ exec program ]; - -in - - stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/nbody/old/nblocks.nix b/garlic/exp/nbody/old/nblocks.nix deleted file mode 100644 index 4e7dd94..0000000 --- a/garlic/exp/nbody/old/nblocks.nix +++ /dev/null @@ -1,104 +0,0 @@ -{ - stdenv -, lib -, stdexp -, bsc -, targetMachine -, stages -, garlicTools - -# Options for the experiment -, enableCTF ? false -# Number of cases tested -, steps ? 7 -# nbody iterations -, timesteps ? 10 -# nbody total number of particles -, particles ? null -, gitBranch ? "garlic/tampi+send+oss+task" -, loops ? 10 -, nblocks0 ? null -}: - -with lib; -with garlicTools; - -let - - defaultOpt = var: def: if (var != null) then var else def; - - machineConfig = targetMachine.config; - inherit (machineConfig) hw; - - # Initial variable configuration - varConf = with bsc; { - # Create a list with values 2^n with n from 0 to (steps - 1) inclusive - i = expRange 2 0 (steps - 1); - }; - - # Generate the complete configuration for each unit - genConf = var: fix (self: var // targetMachine.config // { - expName = "nbody-nblocks"; - unitName = "${self.expName}${toString self.nblocks}"; - - inherit (machineConfig) hw; - - # nbody options - particles = defaultOpt particles (4096 * self.hw.cpusPerSocket); - nblocks0 = defaultOpt nblocks0 (self.hw.cpusPerSocket / 2); - # The number of blocks is then computed from the multiplier "i" and - # the initial number of blocks "nblocks0" - nblocks = self.i * self.nblocks0; - - totalTasks = self.ntasksPerNode * self.nodes; - particlesPerTask = self.particles / self.totalTasks; - blocksize = self.particlesPerTask / self.nblocks; - cc = bsc.icc; - mpi = bsc.impi; - cflags = "-g"; - inherit timesteps gitBranch enableCTF loops; - - # Resources - qos = "debug"; - cpusPerTask = self.hw.cpusPerSocket; - ntasksPerNode = self.hw.socketsPerNode; - nodes = 1; - jobName = self.unitName; - }); - - # Compute the array of configurations - configs = stdexp.buildConfigs { - inherit varConf genConf; - }; - - perf = {nextStage, conf, ...}: with conf; stages.perf { - inherit nextStage; - perfOptions = "record --call-graph dwarf -o \\$\\$.perf"; - }; - - ctf = {nextStage, conf, ...}: with conf; stages.exec { - inherit nextStage; - env = optionalString (conf.enableCTF) '' - export NANOS6_CONFIG_OVERRIDE="version.instrument=ctf,\ - instrument.ctf.converter.enabled=false" - ''; - }; - - exec = {nextStage, conf, ...}: with conf; stages.exec { - inherit nextStage; - argv = [ "-t" timesteps "-p" particles ]; - }; - - program = {nextStage, conf, ...}: with conf; - let - customPkgs = stdexp.replaceMpi conf.mpi; - in - customPkgs.apps.nbody.override ({ - inherit cc blocksize mpi gitBranch cflags; - }); - - pipeline = stdexp.stdPipeline ++ [ ctf exec program ]; - -in - - stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/nbody/old/scaling.nix b/garlic/exp/nbody/old/scaling.nix deleted file mode 100644 index 47fd221..0000000 --- a/garlic/exp/nbody/old/scaling.nix +++ /dev/null @@ -1,110 +0,0 @@ -{ - stdenv -, lib -, stdexp -, bsc -, targetMachine -, stages -, garlicTools - -# Options for the experiment -, enableCTF ? false -# Number of cases tested -, steps ? 6 -# nbody iterations -, timesteps ? 10 -# nbody total number of particles -, particles ? null -, loops ? 10 -, nblocks0 ? null -}: - -with lib; -with garlicTools; - -let - - defaultOpt = var: def: if (var != null) then var else def; - - machineConfig = targetMachine.config; - inherit (machineConfig) hw; - - # Initial variable configuration - varConf = with bsc; { - # Create a list with values 2^n with n from 0 to (steps - 1) inclusive - i = expRange 2 0 (steps - 1); - nodes = [ 1 2 4 8 16 ]; - gitBranch = [ - "garlic/tampi+send+oss+task" - "garlic/tampi+isend+oss+task" - "garlic/mpi+send+oss+task" - ]; - }; - - # Generate the complete configuration for each unit - genConf = var: fix (self: var // targetMachine.config // { - expName = "nbody-scaling"; - unitName = self.expName + - "-nb${toString self.nblocks}"+ - "-nodes${toString self.nodes}"; - - inherit (machineConfig) hw; - - # nbody options - particles = defaultOpt particles (4096 * self.hw.cpusPerSocket); - nblocks0 = defaultOpt nblocks0 (self.hw.cpusPerSocket / 2); - # The number of blocks is then computed from the multiplier "i" and - # the initial number of blocks "nblocks0" - nblocks = self.i * self.nblocks0; - - totalTasks = self.ntasksPerNode * self.nodes; - particlesPerTask = self.particles / self.totalTasks; - blocksize = self.particlesPerTask / self.nblocks; - cc = bsc.icc; - mpi = bsc.impi; - cflags = "-g"; - inherit timesteps enableCTF loops; - - # Resources - qos = "debug"; - cpusPerTask = self.hw.cpusPerSocket; - ntasksPerNode = self.hw.socketsPerNode; - jobName = self.unitName; - }); - - # Compute the array of configurations - configs = stdexp.buildConfigs { - inherit varConf genConf; - }; - - perf = {nextStage, conf, ...}: with conf; stages.perf { - inherit nextStage; - perfOptions = "record --call-graph dwarf -o \\$\\$.perf"; - }; - - ctf = {nextStage, conf, ...}: with conf; stages.exec { - inherit nextStage; - env = optionalString (conf.enableCTF) '' - export NANOS6_CONFIG_OVERRIDE="version.instrument=ctf,\ - instrument.ctf.converter.enabled=false" - ''; - }; - - exec = {nextStage, conf, ...}: with conf; stages.exec { - inherit nextStage; - argv = [ "-t" timesteps "-p" particles ]; - }; - - program = {nextStage, conf, ...}: with conf; - let - customPkgs = stdexp.replaceMpi conf.mpi; - in - customPkgs.apps.nbody.override ({ - inherit (conf) cc blocksize mpi gitBranch cflags; - }); - - pipeline = stdexp.stdPipeline ++ [ ctf exec program ]; - -in - - stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/nbody/old/strong-scaling-oss.nix b/garlic/exp/nbody/old/strong-scaling-oss.nix deleted file mode 100644 index 2a6f789..0000000 --- a/garlic/exp/nbody/old/strong-scaling-oss.nix +++ /dev/null @@ -1,72 +0,0 @@ -{ - stdenv -, lib -, stdexp -, bsc -, targetMachine -, stages -}: - -with lib; - -let - # Initial variable configuration - varConf = with bsc; { - numProcsAndParticles = [ 1 2 4 8 16 32 48 ]; - input = [ - { numParticles=1 ; cpuMask="0x1"; } - { numParticles=2 ; cpuMask="0x3"; } - { numParticles=4 ; cpuMask="0xf"; } - { numParticles=8 ; cpuMask="0xff"; } - { numParticles=16; cpuMask="0xffff"; } - { numParticles=32; cpuMask="0xffffffff"; } - { numParticles=48; cpuMask="0xffffffffffff"; } - ]; - }; - - # Generate the complete configuration for each unit - genConf = with bsc; c: targetMachine.config // rec { - # nbody options - inherit (c.input) numParticles cpuMask; - particles = 1024 * numParticles * 2; - timesteps = 10; - blocksize = 1024; - cc = icc; - mpi = impi; - gitBranch = "garlic/oss+task"; - - # Repeat the execution of each unit 30 times - loops = 30; - - # Resources - qos = "debug"; - ntasksPerNode = 1; - nodes = 1; - time = "02:00:00"; - cpuBind = "verbose,mask_cpu:${cpuMask}"; - jobName = "nbody-bs-${toString numParticles}-${gitBranch}"; - }; - - # Compute the array of configurations - configs = stdexp.buildConfigs { - inherit varConf genConf; - }; - - exec = {nextStage, conf, ...}: with conf; stages.exec { - inherit nextStage; - argv = [ "-t" timesteps "-p" particles ]; - }; - - program = {nextStage, conf, ...}: with conf; - let - customPkgs = stdexp.replaceMpi conf.mpi; - in - customPkgs.apps.nbody.override { - inherit cc blocksize mpi gitBranch; - }; - - pipeline = stdexp.stdPipeline ++ [ exec program ]; - -in - - stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/nbody/old/weak-scaling-mpi.nix b/garlic/exp/nbody/old/weak-scaling-mpi.nix deleted file mode 100644 index e830a42..0000000 --- a/garlic/exp/nbody/old/weak-scaling-mpi.nix +++ /dev/null @@ -1,63 +0,0 @@ -{ - stdenv -, lib -, stdexp -, bsc -, targetMachine -, stages -}: - -with lib; - -let - # Initial variable configuration - varConf = with bsc; { - numProcs = [ 1 2 4 8 16 32 48 ]; - }; - - # Generate the complete configuration for each unit - genConf = with bsc; c: targetMachine.config // rec { - # nbody options - particles = 1024 * 64; - timesteps = 10; - blocksize = 1024; - inherit (c) numProcs; - cc = icc; - mpi = impi; - gitBranch = "garlic/mpi+send"; - - # Repeat the execution of each unit 30 times - loops = 30; - - # Resources - qos = "debug"; - ntasksPerNode = numProcs; - nodes = 1; - time = "02:00:00"; - cpuBind = "sockets,verbose"; - jobName = "nbody-bs-${toString numProcs}-${gitBranch}"; - }; - - # Compute the array of configurations - configs = stdexp.buildConfigs { - inherit varConf genConf; - }; - - exec = {nextStage, conf, ...}: with conf; stages.exec { - inherit nextStage; - argv = [ "-t" timesteps "-p" particles ]; - }; - - program = {nextStage, conf, ...}: with conf; - let - customPkgs = stdexp.replaceMpi conf.mpi; - in - customPkgs.apps.nbody.override { - inherit cc blocksize mpi gitBranch; - }; - - pipeline = stdexp.stdPipeline ++ [ exec program ]; - -in - - stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/nbody/old/weak-scaling-oss.nix b/garlic/exp/nbody/old/weak-scaling-oss.nix deleted file mode 100644 index 4c7e574..0000000 --- a/garlic/exp/nbody/old/weak-scaling-oss.nix +++ /dev/null @@ -1,63 +0,0 @@ -{ - stdenv -, lib -, stdexp -, bsc -, targetMachine -, stages -}: - -with lib; - -let - # Initial variable configuration - varConf = with bsc; { - cpuMask = [ "0x1" "0x3" "0xf" "0xff" "0xffff" "0xffffffff" "0xffffffffffff" ]; - }; - - # Generate the complete configuration for each unit - genConf = with bsc; c: targetMachine.config // rec { - # nbody options - particles = 1024 * 64; - timesteps = 10; - blocksize = 1024; - inherit (c) cpuMask; - cc = icc; - mpi = impi; - gitBranch = "garlic/oss+task"; - - # Repeat the execution of each unit 30 times - loops = 30; - - # Resources - qos = "debug"; - ntasksPerNode = 1; - nodes = 1; - time = "02:00:00"; - cpuBind = "verbose,mask_cpu:${cpuMask}"; - jobName = "nbody-bs-${cpuMask}-${gitBranch}"; - }; - - # Compute the array of configurations - configs = stdexp.buildConfigs { - inherit varConf genConf; - }; - - exec = {nextStage, conf, ...}: with conf; stages.exec { - inherit nextStage; - argv = [ "-t" timesteps "-p" particles ]; - }; - - program = {nextStage, conf, ...}: with conf; - let - customPkgs = stdexp.replaceMpi conf.mpi; - in - customPkgs.apps.nbody.override { - inherit cc blocksize mpi gitBranch; - }; - - pipeline = stdexp.stdPipeline ++ [ exec program ]; - -in - - stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/nbody/ss.nix b/garlic/exp/nbody/ss.nix deleted file mode 100644 index d9ebf07..0000000 --- a/garlic/exp/nbody/ss.nix +++ /dev/null @@ -1,59 +0,0 @@ -{ - stdenv -, lib -, stdexp -, bsc -, targetMachine -, stages -, garlicTools -, callPackage -}: - -with lib; -with garlicTools; - -let - # Initial variable configuration - varConf = { - blocksize = [ 128 ]; - nodes = range2 1 16; - gitBranch = [ -# "garlic/mpi+send+oss+task" -# "garlic/tampi+send+oss+task" - "garlic/tampi+isend+oss+task" - ]; - }; - - # Generate the complete configuration for each unit - genConf = c: targetMachine.config // rec { - hw = targetMachine.config.hw; - particles = 8 * 1024 * hw.cpusPerSocket; - timesteps = 10; - - inherit (c) blocksize nodes gitBranch; - - expName = "nbody-scaling"; - unitName = expName + - "-${toString gitBranch}" + - "-nodes${toString nodes}"; - - loops = 5; - - qos = "debug"; - ntasksPerNode = hw.socketsPerNode; - time = "02:00:00"; - cpusPerTask = hw.cpusPerSocket; - jobName = unitName; - }; - - common = callPackage ./common.nix {}; - - inherit (common) getConfigs pipeline; - - configs = getConfigs { - inherit varConf genConf; - }; - -in - - stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/osu/bw.nix b/garlic/exp/osu/bw.nix deleted file mode 100644 index e2c3f37..0000000 --- a/garlic/exp/osu/bw.nix +++ /dev/null @@ -1,60 +0,0 @@ -{ - stdenv -, lib -, stdexp -, bsc -, targetMachine -, stages - -# Should we test the network (true) or the shared memory (false)? -, interNode ? true -}: - -with builtins; -with lib; - -let - - machineConfig = targetMachine.config; - - # Initial variable configuration - varConf = with bsc; { - mpi = [ impi bsc.openmpi mpich ]; #psmpi ]; - }; - - # Generate the complete configuration for each unit - genConf = with bsc; c: targetMachine.config // rec { - inherit (machineConfig) hw; - nodes = if interNode then 2 else 1; - ntasksPerNode = if interNode then 1 else 2; - cpusPerTask = 1; - time = "00:10:00"; - qos = "debug"; - loops = 30; - expName = "osu-bw-${mpi.name}"; - unitName = expName; - jobName = expName; - inherit (c) mpi; - }; - - # Compute the array of configurations - configs = stdexp.buildConfigs { - inherit varConf genConf; - }; - - exec = {nextStage, conf, ...}: with conf; stages.exec { - inherit nextStage; - - program = "${nextStage}/bin/osu_bw"; - }; - - program = {nextStage, conf, ...}: bsc.osumb.override { - # Use the specified MPI implementation - inherit (conf) mpi; - }; - - pipeline = stdexp.stdPipeline ++ [ exec program ]; - -in - - stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/osu/eager.nix b/garlic/exp/osu/eager.nix deleted file mode 100644 index 69ee939..0000000 --- a/garlic/exp/osu/eager.nix +++ /dev/null @@ -1,84 +0,0 @@ -{ - stdenv -, lib -, stdexp -, bsc -, targetMachine -, stages -}: - -with builtins; -with lib; - -let - - machineConfig = targetMachine.config; - - # Initial variable configuration - varConf = with bsc; { - sizeKB = range 5 25; - mpi = [ impi ]; - #mpi = [ impi bsc.openmpi mpich ]; #psmpi ]; - PSM2_MQ_EAGER_SDMA_SZ_KB = [ 16 20 24 ]; - PSM2_MTU_KB = [ 10 ]; - }; - - # Generate the complete configuration for each unit - genConf = with bsc; c: targetMachine.config // rec { - inherit (machineConfig) hw; - nodes = 2; - ntasksPerNode = 1; - cpusPerTask = 1; - time = "00:30:00"; - qos = "debug"; - loops = 10; - iterations = 50000; - #FIXME: Notice the switchover is 16000 and MTU is 10240 - PSM2_MQ_EAGER_SDMA_SZ = PSM2_MQ_EAGER_SDMA_SZ_KB * 1000; - PSM2_MTU = PSM2_MTU_KB * 1024; - expName = "osu-bw"; - unitName = expName + - "-size.${toString sizeKB}K" + - "-mtu.${toString PSM2_MTU_KB}K" + - "-sdma.${toString PSM2_MQ_EAGER_SDMA_SZ_KB}K"; - jobName = expName; - inherit (c) mpi sizeKB - PSM2_MQ_EAGER_SDMA_SZ_KB - PSM2_MTU_KB; - - size = sizeKB * 1024; - }; - - # Compute the array of configurations - configs = stdexp.buildConfigs { - inherit varConf genConf; - }; - - exec = {nextStage, conf, ...}: with conf; stages.exec { - inherit nextStage; - - program = "${nextStage}/bin/osu_bw"; - - env = '' - export PSM2_MQ_EAGER_SDMA_SZ=${toString PSM2_MQ_EAGER_SDMA_SZ} - export PSM2_MTU=${toString PSM2_MTU} - export PSM2_TRACEMASK=0x101 - export PSM2_MQ_PRINT_STATS=-1 - ''; - - argv = [ - "-m" "${toString size}:${toString size}" - "-i" iterations - ]; - }; - - program = {nextStage, conf, ...}: bsc.osumb.override { - # Use the specified MPI implementation - inherit (conf) mpi; - }; - - pipeline = stdexp.stdPipeline ++ [ exec program ]; - -in - - stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/osu/impi.nix b/garlic/exp/osu/impi.nix deleted file mode 100644 index 97f6283..0000000 --- a/garlic/exp/osu/impi.nix +++ /dev/null @@ -1,69 +0,0 @@ -{ - stdenv -, lib -, stdexp -, bsc -, targetMachine -, stages - -# Should we test the network (true) or the shared memory (false)? -, interNode ? true -}: - -with builtins; -with lib; - -let - - machineConfig = targetMachine.config; - - # Initial variable configuration - varConf = with bsc; { - threshold = [ 8000 16000 32000 64000 ]; - #threshold = [ 4096 8192 10240 ]; - }; - - # Generate the complete configuration for each unit - genConf = with bsc; c: targetMachine.config // rec { - inherit (machineConfig) hw; - nodes = if interNode then 2 else 1; - ntasksPerNode = if interNode then 1 else 2; - mpi = impi; - cpusPerTask = 1; - time = "00:10:00"; - qos = "debug"; - loops = 10; - expName = "osu-impi-rndv"; - unitName = expName + "-${toString threshold}"; - jobName = expName; - inherit (c) threshold; - }; - - # Compute the array of configurations - configs = stdexp.buildConfigs { - inherit varConf genConf; - }; - - exec = {nextStage, conf, ...}: stages.exec { - inherit nextStage; - env = '' - export PSM2_MQ_RNDV_SHM_THRESH=${toString conf.threshold} - export PSM2_MQ_RNDV_HFI_THRESH=${toString conf.threshold} - export PSM2_MQ_EAGER_SDMA_SZ=${toString conf.threshold} - #export PSM2_MTU=${toString conf.threshold} - export PSM2_TRACEMASK=0x101 - ''; - - program = "${nextStage}/bin/osu_bw"; - }; - - program = {nextStage, conf, ...}: bsc.osumb.override { - # Use the specified MPI implementation - inherit (conf) mpi; - }; - - pipeline = stdexp.stdPipeline ++ [ exec program ]; - -in - - stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/osu/latency.nix b/garlic/exp/osu/latency.nix deleted file mode 100644 index f58eb60..0000000 --- a/garlic/exp/osu/latency.nix +++ /dev/null @@ -1,69 +0,0 @@ -{ - stdenv -, lib -, stdexp -, bsc -, targetMachine -, stages - -# Should we test the network (true) or the shared memory (false)? -, interNode ? true -, enableMultithread ? false -}: - -with builtins; -with lib; - -let - - machineConfig = targetMachine.config; - - # Initial variable configuration - varConf = with bsc; { - mpi = [ impi bsc.openmpi mpich ]; #psmpi ]; - }; - - # Generate the complete configuration for each unit - genConf = with bsc; c: targetMachine.config // rec { - inherit (machineConfig) hw; - nodes = if interNode then 2 else 1; - ntasksPerNode = if interNode then 1 else 2; - cpusPerTask = if (enableMultithread) then hw.cpusPerSocket else 1; - time = "00:10:00"; - qos = "debug"; - loops = 30; - expName = "osu-latency-${mpi.name}"; - unitName = expName; - jobName = expName; - inherit (c) mpi; - inherit enableMultithread; - }; - - # Compute the array of configurations - configs = stdexp.buildConfigs { - inherit varConf genConf; - }; - - exec = {nextStage, conf, ...}: with conf; stages.exec { - inherit nextStage; - - program = if (enableMultithread) then - "${nextStage}/bin/osu_latency_mt" - else - "${nextStage}/bin/osu_latency"; - - argv = optionals (enableMultithread) [ - "-t" "${toString conf.cpusPerTask}:${toString conf.cpusPerTask}" - ]; - }; - - program = {nextStage, conf, ...}: bsc.osumb.override { - # Use the specified MPI implementation - inherit (conf) mpi; - }; - - pipeline = stdexp.stdPipeline ++ [ exec program ]; - -in - - stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/osu/mtu.nix b/garlic/exp/osu/mtu.nix deleted file mode 100644 index ca99091..0000000 --- a/garlic/exp/osu/mtu.nix +++ /dev/null @@ -1,84 +0,0 @@ -{ - stdenv -, lib -, stdexp -, bsc -, targetMachine -, stages -}: - -with builtins; -with lib; - -let - - machineConfig = targetMachine.config; - - # Initial variable configuration - varConf = with bsc; { - sizeKB = range 5 25; - mpi = [ impi ]; - #mpi = [ impi bsc.openmpi mpich ]; #psmpi ]; - PSM2_MQ_EAGER_SDMA_SZ_KB = [ 16 ]; - PSM2_MTU_KB = [ 8 10 ]; - }; - - # Generate the complete configuration for each unit - genConf = with bsc; c: targetMachine.config // rec { - inherit (machineConfig) hw; - nodes = 2; - ntasksPerNode = 1; - cpusPerTask = 1; - time = "00:30:00"; - qos = "debug"; - loops = 10; - iterations = 50000; - #FIXME: Notice the switchover is 16000 and MTU is 10240 - PSM2_MQ_EAGER_SDMA_SZ = PSM2_MQ_EAGER_SDMA_SZ_KB * 1000; - PSM2_MTU = PSM2_MTU_KB * 1024; - expName = "osu-bw"; - unitName = expName + - "-size.${toString sizeKB}K" + - "-mtu.${toString PSM2_MTU_KB}K" + - "-sdma.${toString PSM2_MQ_EAGER_SDMA_SZ_KB}K"; - jobName = expName; - inherit (c) mpi sizeKB - PSM2_MQ_EAGER_SDMA_SZ_KB - PSM2_MTU_KB; - - size = sizeKB * 1024; - }; - - # Compute the array of configurations - configs = stdexp.buildConfigs { - inherit varConf genConf; - }; - - exec = {nextStage, conf, ...}: with conf; stages.exec { - inherit nextStage; - - program = "${nextStage}/bin/osu_bw"; - - env = '' - export PSM2_MQ_EAGER_SDMA_SZ=${toString PSM2_MQ_EAGER_SDMA_SZ} - export PSM2_MTU=${toString PSM2_MTU} - export PSM2_TRACEMASK=0x101 - export PSM2_MQ_PRINT_STATS=-1 - ''; - - argv = [ - "-m" "${toString size}:${toString size}" - "-i" iterations - ]; - }; - - program = {nextStage, conf, ...}: bsc.osumb.override { - # Use the specified MPI implementation - inherit (conf) mpi; - }; - - pipeline = stdexp.stdPipeline ++ [ exec program ]; - -in - - stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/saiph/granularity.nix b/garlic/exp/saiph/granularity.nix deleted file mode 100644 index 30b9b28..0000000 --- a/garlic/exp/saiph/granularity.nix +++ /dev/null @@ -1,132 +0,0 @@ -####################################################################### -# Saiph, granularity experiment: -# -# App:Heat 3D - garlic/tampi+isend+oss+task+simd branch -# App details: -# 3D mesh of ~400*400*400 points -# nbgx = global blocks in the X dimension -# nbgy = global blocks in the Y dimension -# nbgz = global blocks in the Z dimension -# --> nbgx*nbgy*nbgz = global distributed blocks -# nbly = local blocks in the Y dimension -# nblz = local blocks in the Z dimension -# --> nbly*nblz = local blocks (#tasks) -# -# Granularity experiment configuration: -# Single-core run -# MPI binded to sockets: MPI procs = 2 -# Mesh distributed across third dimension to ensure contiguous -# communications -# --> nbgx = 1, nbgy = 1 -# First dimension cannot be locally blocked (simd reasons) -# Second and third dimension local blocking limited by local mesh size -# -####################################################################### - -# Common packages, tools and options -{ - stdenv -, lib -, stdexp -, bsc -, targetMachine -, stages -, garlicTools -}: - -with lib; -with garlicTools; - -let - - # Variable configurations - varConf = with targetMachine.config; { - # Local blocks per dimension - nblx = [ 1 ]; # SIMD - nbly = range2 1 (hw.cpusPerNode * 8); - nblz = [ 8 ]; - sizex = [ 3 ]; - gitBranch = [ "garlic/tampi+isend+oss+task+simd" ]; - }; - - # Generate the complete configuration for each unit - genConf = c: targetMachine.config // rec { - - # Experiment, units and job names - expName = "saiph-granularity"; - unitName = "${expName}" - + "-N${toString nodes}" - + "-nbg.x${toString nbgx}.y${toString nbgy}.z${toString nbgz}" - + "-nbl.x${toString nblx}.y${toString nbly}.z${toString nblz}"; - - jobName = unitName; - - # saiph options - totalTasks = ntasksPerNode * nodes; - nodes = 1; - enableManualDist = true; # allows to manually set nbg{x-y-z} - nbgx = 1; - nbgy = 1; - nbgz = totalTasks; # forcing distribution by last dim - - inherit (c) nblx nbly nblz gitBranch sizex; - - blocksPerTask = nblx * nbly * nblz * 1.0; - blocksPerCpu = blocksPerTask / cpusPerTask; - - # fix a specific commit - gitCommit = "8052494d7dc62bef95ebaca9938e82fb029686f6"; - - # Repeat the execution of each unit 10 times - loops = 10; - - # Resources - inherit (targetMachine.config) hw; - qos = "debug"; - ntasksPerNode = hw.socketsPerNode; # MPI binded to sockets - cpusPerTask = hw.cpusPerSocket; # Using the 24 CPUs of each socket - }; - - #*** Compute the final set of configurations *** - # Compute the array of configurations: cartesian product of all - # factors - allConfigs = stdexp.buildConfigs { - inherit varConf genConf; - }; - - # Filter to remove non-desired configurations: - # --> tasks/proc < 0.5 - # --> nblz > 50 - isGoodConfig = c: - let - maxNblz = c.cpusPerTask * 2; - in - ! (c.blocksPerCpu < 0.5 || c.nblz > maxNblz); - - configs = filter (isGoodConfig) allConfigs; - - #*** Sets the env/argv of the program *** - exec = {nextStage, conf, ...}: stages.exec { - inherit nextStage; - env = '' - export OMP_NUM_THREADS=${toString conf.cpusPerTask} - ''; - }; - - #*** Configure the program according to the app *** - program = {nextStage, conf, ...}: bsc.apps.saiph.override { - inherit (conf) enableManualDist - nbgx nbgy nbgz nblx nbly nblz - sizex - gitBranch gitCommit; - - L3SizeKB = conf.hw.cacheSizeKB.L3; - cachelineBytes = conf.hw.cachelineBytes; - }; - - #*** Add stages to the pipeline *** - pipeline = stdexp.stdPipeline ++ [ exec program ]; - -in - - stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/saiph/ss.nix b/garlic/exp/saiph/ss.nix deleted file mode 100644 index 5ddc47a..0000000 --- a/garlic/exp/saiph/ss.nix +++ /dev/null @@ -1,122 +0,0 @@ -###################################################################################### -# Saiph, scalability experiment: -# -# App:Heat 3D - garlic/tampi+isend+oss+task+simd branch -# App details: -# 3D mesh of ~400*400*400 points -# nbgx = global blocks in the X dimension -# nbgy = global blocks in the Y dimension -# nbgz = global blocks in the Z dimension -# --> nbgx*nbgy*nbgz = global distributed blocks -# nbly = local blocks in the Y dimension -# nblz = local blocks in the Z dimension -# --> nbly*nblz = local blocks (#tasks) -# -# Scalability experiment configuration: -# From a single-core granularity experiment, use a suited local blocking set: -# --> nbly*nblz >= 48 (at least 3tasks/proc) -# MPI binded to sockets: MPI procs = 2*nodes -# Mesh distributed across third dimension to ensure contiguous communications -# --> nbgx = 1, nbgy = 1 -# Global distribution limited by global mesh size -# First dimension cannot be locally blocked (simd reasons) -# Second and third dimension local blocking limited by local mesh size -# -###################################################################################### - -# Common packages, tools and options -{ - stdenv -, lib -, stdexp -, bsc -, targetMachine -, stages -, garlicTools -}: - -with lib; -with garlicTools; - -let - - #*** Variable configurations *** - varConf = with targetMachine.config; { - # FIXME: None of those selected nbl* and problem size is able to give good - # efficiency when testing strong scaling. We should find better values. - # Local blocks per dimension - nblx = [ 1 ]; # SIMD - nbly = [ 32 ]; - nblz = [ 8 ]; - sizex = [ 3 6 ]; - gitBranch = [ "garlic/tampi+isend+oss+task+simd" ]; - nodes = range2 1 8; - }; - - #*** Generate the complete configuration for each unit *** - genConf = c: targetMachine.config // rec { - - # Experiment, units and job names - expName = "saiph-ss"; - unitName = "${expName}" - + "-N${toString nodes}" - + "-nbg.x${toString nbgx}.y${toString nbgy}.z${toString nbgz}" - + "-nbl.x${toString nblx}.y${toString nbly}.z${toString nblz}"; - jobName = unitName; - - # saiph options - enableManualDist = true; # allows to manually set nbg{x-y-z} - nbgx = 1; - nbgy = 1; - nbgz = nodes * ntasksPerNode; # forcing distribution by last dim - - inherit (c) nblx nbly nblz nodes sizex; - - gitBranch = "garlic/tampi+isend+oss+task+simd"; - gitCommit = "8052494d7dc62bef95ebaca9938e82fb029686f6"; # fix a specific commit - - blocksPerTask = nblx * nbly * nblz * 1.0; - blocksPerCpu = blocksPerTask / cpusPerTask; - - # Repeat the execution of each unit 10 times - loops = 10; - - # Resources - inherit (targetMachine.config) hw; - - qos = "debug"; - ntasksPerNode = hw.socketsPerNode; # MPI binded to sockets - cpusPerTask = hw.cpusPerSocket; # Using the 24 CPUs of each socket - }; - - #*** Compute the final set of configurations *** - # Compute the array of configurations: cartesian product of all factors - configs = stdexp.buildConfigs { - inherit varConf genConf; - }; - - #*** Sets the env/argv of the program *** - exec = {nextStage, conf, ...}: with conf; stages.exec { - inherit nextStage; - env = '' - export OMP_NUM_THREADS=${toString hw.cpusPerSocket} - ''; - }; - - #*** Configure the program according to the app *** - program = {nextStage, conf, ...}: bsc.apps.saiph.override { - inherit (conf) enableManualDist - nbgx nbgy nbgz nblx nbly nblz - sizex - gitBranch gitCommit; - - L3SizeKB = conf.hw.cacheSizeKB.L3; - cachelineBytes = conf.hw.cachelineBytes; - }; - - #*** Add stages to the pipeline *** - pipeline = stdexp.stdPipeline ++ [ exec program ]; - -in - - stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/slurm/cpu.nix b/garlic/exp/slurm/cpu.nix deleted file mode 100644 index d2ee632..0000000 --- a/garlic/exp/slurm/cpu.nix +++ /dev/null @@ -1,63 +0,0 @@ -{ - stdenv -, lib -, stdexp -, bsc -, targetMachine -, stages -, garlicTools -}: - -with lib; -with garlicTools; - -let - - machineConfig = targetMachine.config; - - inherit (machineConfig) hw; - - # Initial variable configuration - varConf = with bsc; { - # Create a list of cpus per task by computing the divisors of the number of - # cpus per socket, example: divisors 24 = [ 1 2 3 4 6 8 12 24 ] - cpusPerTask = divisors hw.cpusPerSocket; - }; - - # Generate the complete configuration for each unit - genConf = with bsc; c: targetMachine.config // rec { - expName = "cpu"; - unitName = "${expName}.${toString cpusPerTask}"; - - inherit (machineConfig) hw; - - # Repeat the execution of each unit 30 times - loops = 1; - - # Resources - qos = "debug"; - inherit (c) cpusPerTask; - # As cpusPerTask is a divisor of the cpusPerSocket and thus cpusPerNode, we - # know the remainder is zero: - ntasksPerNode = hw.cpusPerNode / cpusPerTask; - nodes = 1; - jobName = unitName; - }; - - # Compute the array of configurations - configs = stdexp.buildConfigs { - inherit varConf genConf; - }; - - exec = {nextStage, conf, ...}: with conf; stages.exec { - inherit nextStage; - env = "date"; - }; - - program = {nextStage, conf, ...}: bsc.dummy; - - pipeline = stdexp.stdPipeline ++ [ program ]; - -in - - stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/slurm/exit1.nix b/garlic/exp/slurm/exit1.nix deleted file mode 100644 index bf60136..0000000 --- a/garlic/exp/slurm/exit1.nix +++ /dev/null @@ -1,69 +0,0 @@ -{ - stdenv -, lib -, stdexp -, bsc -, targetMachine -, stages -, garlicTools -}: - -with lib; -with garlicTools; - -let - - machineConfig = targetMachine.config; - - inherit (machineConfig) hw; - - # Initial variable configuration - varConf = { - script = [ - "exit 1" - "exit 0" - "kill -SEGV $$" - "kill -TERM $$" - ]; - }; - - # Generate the complete configuration for each unit - genConf = with bsc; c: targetMachine.config // rec { - expName = "exit1"; - unitName = expName + "-" + - builtins.replaceStrings [" " "$"] ["-" "-"] script; - - inherit (machineConfig) hw; - - # Repeat the execution of each unit 30 times - loops = 1; - inherit (c) script; - - # Resources - qos = "debug"; - cpusPerTask = 1; - ntasksPerNode = 2; - nodes = 1; - jobName = unitName; - }; - - # Compute the array of configurations - configs = stdexp.buildConfigs { - inherit varConf genConf; - }; - - exec = {nextStage, conf, ...}: with conf; stages.exec { - inherit nextStage; - pre = "sleep 5"; - post = "echo dummy"; - }; - - prog = {conf,...}: stages.script { - inherit (conf) script; - }; - - pipeline = stdexp.stdPipeline ++ [ exec prog ]; - -in - - stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/slurm/sigsegv.nix b/garlic/exp/slurm/sigsegv.nix deleted file mode 100644 index b77f58b..0000000 --- a/garlic/exp/slurm/sigsegv.nix +++ /dev/null @@ -1,60 +0,0 @@ -{ - stdenv -, lib -, stdexp -, bsc -, targetMachine -, stages -, garlicTools -}: - -with lib; -with garlicTools; - -let - - machineConfig = targetMachine.config; - - inherit (machineConfig) hw; - - # Initial variable configuration - varConf = { - when = [ "before" "after" "never" ]; - }; - - # Generate the complete configuration for each unit - genConf = c: targetMachine.config // rec { - expName = "sigsegv"; - unitName = expName + "-" + when; - - inherit (machineConfig) hw; - inherit (c) when; - - loops = 3; - - # Resources - qos = "debug"; - cpusPerTask = 1; - ntasksPerNode = hw.cpusPerNode; - nodes = 1; - jobName = unitName; - }; - - # Compute the array of configurations - configs = stdexp.buildConfigs { - inherit varConf genConf; - }; - - exec = {nextStage, conf, ...}: with conf; stages.exec { - inherit nextStage; - env = "date"; - argv = [ conf.when ]; - }; - - program = {nextStage, conf, ...}: bsc.test.sigsegv; - - pipeline = stdexp.stdPipeline ++ [ exec program ]; - -in - - stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/fig/creams/granularity.R b/garlic/fig/creams/granularity.R deleted file mode 100644 index 524c987..0000000 --- a/garlic/fig/creams/granularity.R +++ /dev/null @@ -1,83 +0,0 @@ -library(ggplot2) -library(dplyr, warn.conflicts = FALSE) -library(scales) -library(jsonlite) -library(viridis, warn.conflicts = FALSE) -library(stringr) - -args = commandArgs(trailingOnly=TRUE) - -# Set the input dataset if given in argv[1], or use "input" as default -if (length(args)>0) { input_file = args[1] } else { input_file = "input" } -if (length(args)>1) { output = args[2] } else { output = "?" } - -df = jsonlite::stream_in(file(input_file), verbose=FALSE) %>% - - jsonlite::flatten() %>% - - select(unit, - config.nodes, - config.gitBranch, - config.granul, - config.iterations, - time, - total_time) %>% - - rename(nodes=config.nodes, - gitBranch=config.gitBranch, - granul=config.granul, - iterations=config.iterations) %>% - - # Remove the "garlic/" prefix from the gitBranch - mutate(branch = str_replace(gitBranch, "garlic/", "")) %>% - - # Computations before converting to factor - mutate(time.iter = time / iterations) %>% - - # Convert to factors - mutate(unit = as.factor(unit)) %>% - mutate(nodesFactor = as.factor(nodes)) %>% - mutate(gitBranch = as.factor(gitBranch)) %>% - mutate(granul = as.factor(granul)) %>% - mutate(iterations = as.factor(iterations)) %>% - mutate(unit = as.factor(unit)) %>% - - # Compute median times - group_by(unit) %>% - mutate(median.time = median(time)) %>% - mutate(normalized.time = time / median.time - 1) %>% - mutate(log.median.time = log(median.time)) %>% - mutate(median.time.iter = median(time.iter)) %>% - ungroup() - -dpi = 300 -h = 6 -w = 6 - -# --------------------------------------------------------------------- - -p = ggplot(df, aes(x=granul, y=normalized.time)) + - geom_boxplot() + - geom_hline(yintercept=c(-0.01, 0.01), linetype="dashed", color="red") + - theme_bw() + - facet_wrap(branch ~ .) + - labs(x="granul", y="Normalized time", - title="Creams granularity: normalized time", - subtitle=output) + - theme(plot.subtitle=element_text(size=8)) - -ggsave("normalized.time.png", plot=p, width=w, height=h, dpi=dpi) -ggsave("normalized.time.pdf", plot=p, width=w, height=h, dpi=dpi) - -# --------------------------------------------------------------------- - -p = ggplot(df, aes(x=granul, y=time, color=branch)) + - geom_point(shape=21, size=3) + - geom_line(aes(y=median.time, group=branch)) + - theme_bw() + - labs(x="granul", y="Time (s)", title="Creams granularity: time", - subtitle=output) + - theme(plot.subtitle=element_text(size=8)) - -ggsave("time.png", plot=p, width=w, height=h, dpi=dpi) -ggsave("time.pdf", plot=p, width=w, height=h, dpi=dpi) diff --git a/garlic/fig/creams/granularity16.R b/garlic/fig/creams/granularity16.R deleted file mode 100644 index 24f3bf7..0000000 --- a/garlic/fig/creams/granularity16.R +++ /dev/null @@ -1,136 +0,0 @@ -library(ggplot2) -library(dplyr, warn.conflicts = FALSE) -library(scales) -library(jsonlite) -library(viridis, warn.conflicts = FALSE) -library(stringr) - -args = commandArgs(trailingOnly=TRUE) - -# Set the input dataset if given in argv[1], or use "input" as default -if (length(args)>0) { input_file = args[1] } else { input_file = "input" } -if (length(args)>1) { output = args[2] } else { output = "?" } - -df = jsonlite::stream_in(file(input_file), verbose=FALSE) %>% - - jsonlite::flatten() %>% - - select(unit, - config.nodes, - config.gitBranch, - config.granul, - config.iterations, - config.sizeFactor, - config.nz, - time, - total_time) %>% - - rename(nodes=config.nodes, - gitBranch=config.gitBranch, - granul=config.granul, - sizeFactor=config.sizeFactor, - nz=config.nz, - iterations=config.iterations) %>% - - # Remove the "garlic/" prefix from the gitBranch - mutate(branch = str_replace(gitBranch, "garlic/", "")) %>% - - # Computations before converting to factor - mutate(time.nodes = time * nodes) %>% - mutate(time.elem = time / sizeFactor) %>% - mutate(time.nodes.iter = time.nodes / iterations) %>% - - # Convert to factors - mutate(unit = as.factor(unit)) %>% - mutate(nodes = as.factor(nodes)) %>% - mutate(gitBranch = as.factor(gitBranch)) %>% - mutate(granul = as.factor(granul)) %>% - mutate(iterations = as.factor(iterations)) %>% - mutate(sizeFactor = as.factor(sizeFactor)) %>% - mutate(nz = as.factor(nz)) %>% - mutate(unit = as.factor(unit)) %>% - - # Compute median times - group_by(unit) %>% - mutate(median.time = median(time)) %>% - mutate(median.time.nodes = median(time.nodes)) %>% - mutate(median.time.elem = median(time.elem)) %>% - mutate(normalized.time = time / median.time - 1) %>% - mutate(log.median.time = log(median.time)) %>% - mutate(log.median.time.elem = log(median.time.elem)) %>% - mutate(median.time.nodes.iter = median(time.nodes.iter)) %>% - ungroup() %>% - group_by(sizeFactor) %>% - mutate(optimal.granul = (median.time.elem == min(median.time.elem))) %>% - ungroup() - -dfopt = df %>% filter(optimal.granul == TRUE) - -dpi = 300 -h = 4 -w = 10 - -# --------------------------------------------------------------------- - -#p = ggplot(df, aes(x=sizeFactor, y=normalized.time, fill=granul, color=iterations)) + -# geom_boxplot() + -# geom_hline(yintercept=c(-0.01, 0.01), linetype="dashed", color="red") + -# theme_bw() + -# facet_wrap(branch ~ .) + -# labs(x="nodes", y="Normalized time", -# title="Creams strong scaling: normalized time", -# subtitle=output) + -# theme(plot.subtitle=element_text(size=8)) -# -#ggsave("normalized.time.png", plot=p, width=w, height=h, dpi=dpi) -#ggsave("normalized.time.pdf", plot=p, width=w, height=h, dpi=dpi) - -# --------------------------------------------------------------------- - -p = ggplot(df, aes(x=granul, y=time.elem, color=branch)) + - geom_point(shape=21, size=3) + -# geom_line(aes(y=median.time, group=gitBranch)) + - theme_bw() + - facet_wrap(sizeFactor ~ ., labeller=label_both, nrow=1) + - labs(x="Granularity", y="Time / k (s)", - #title="Creams size: time per object", - subtitle=output) + - theme(plot.subtitle=element_text(size=8, family="mono"), - legend.position="bottom") - -ggsave("time.png", plot=p, width=w, height=h, dpi=dpi) -ggsave("time.pdf", plot=p, width=w, height=h, dpi=dpi) - -# --------------------------------------------------------------------- - -p = ggplot(df, aes(x=granul, y=median.time.elem, color=sizeFactor)) + - geom_line(aes(group=sizeFactor)) + - geom_point(data=dfopt, aes(x=granul, y=median.time.elem)) + - theme_bw() + - labs(x="Granularity", y="Time / k (s)", - color="Size factor k", - subtitle=output) + - theme(plot.subtitle=element_text(size=8, family="mono"), - legend.position="bottom") - -ggsave("median.time.png", plot=p, width=5, height=5, dpi=dpi) -ggsave("median.time.pdf", plot=p, width=5, height=5, dpi=dpi) - -# --------------------------------------------------------------------- - -p = ggplot(df, aes(x=granul, y=sizeFactor, fill=log.median.time.elem)) + - geom_raster() + - scale_fill_viridis(option="plasma") + - coord_fixed() + - theme_bw() + - theme(axis.text.x=element_text(angle = -45, hjust = 0)) + - theme(plot.subtitle=element_text(size=8)) + - #guides(fill = guide_colorbar(barwidth=15, title.position="top")) + - guides(fill = guide_colorbar(barwidth=12, title.vjust=0.8)) + - labs(x="Granularity", y="Size factor", fill="Time / k (s)", subtitle=output) + - theme(plot.subtitle=element_text(size=8, family="mono"), - legend.position="bottom") - -k=1 -ggsave("heatmap.png", plot=p, width=4.8*k, height=5*k, dpi=300) -ggsave("heatmap.pdf", plot=p, width=4.8*k, height=5*k, dpi=300) diff --git a/garlic/fig/creams/size.R b/garlic/fig/creams/size.R deleted file mode 100644 index 21e3335..0000000 --- a/garlic/fig/creams/size.R +++ /dev/null @@ -1,96 +0,0 @@ -library(ggplot2) -library(dplyr, warn.conflicts = FALSE) -library(scales) -library(jsonlite) -library(viridis, warn.conflicts = FALSE) -library(stringr) - -args = commandArgs(trailingOnly=TRUE) - -# Set the input dataset if given in argv[1], or use "input" as default -if (length(args)>0) { input_file = args[1] } else { input_file = "input" } -if (length(args)>1) { output = args[2] } else { output = "?" } - -df = jsonlite::stream_in(file(input_file), verbose=FALSE) %>% - - jsonlite::flatten() %>% - - select(unit, - config.nodes, - config.gitBranch, - config.granul, - config.iterations, - config.sizeFactor, - config.nz, - time, - total_time) %>% - - rename(nodes=config.nodes, - gitBranch=config.gitBranch, - granul=config.granul, - sizeFactor=config.sizeFactor, - nz=config.nz, - iterations=config.iterations) %>% - - # Remove the "garlic/" prefix from the gitBranch - mutate(branch = str_replace(gitBranch, "garlic/", "")) %>% - - # Computations before converting to factor - mutate(time.nodes = time * nodes) %>% - mutate(time.elem = time / sizeFactor) %>% - mutate(time.nodes.iter = time.nodes / iterations) %>% - - # Convert to factors - mutate(unit = as.factor(unit)) %>% - mutate(nodes = as.factor(nodes)) %>% - mutate(gitBranch = as.factor(gitBranch)) %>% - mutate(granul = as.factor(granul)) %>% - mutate(iterations = as.factor(iterations)) %>% - mutate(sizeFactor = as.factor(sizeFactor)) %>% - mutate(nz = as.factor(nz)) %>% - mutate(unit = as.factor(unit)) %>% - - # Compute median times - group_by(unit) %>% - mutate(median.time = median(time)) %>% - mutate(median.time.nodes = median(time.nodes)) %>% - mutate(normalized.time = time / median.time - 1) %>% - mutate(log.median.time = log(median.time)) %>% - mutate(median.time.nodes.iter = median(time.nodes.iter)) %>% - ungroup() - -dpi = 300 -h = 3 -w = 6 - -# --------------------------------------------------------------------- - -#p = ggplot(df, aes(x=sizeFactor, y=normalized.time, fill=granul, color=iterations)) + -# geom_boxplot() + -# geom_hline(yintercept=c(-0.01, 0.01), linetype="dashed", color="red") + -# theme_bw() + -# facet_wrap(branch ~ .) + -# labs(x="nodes", y="Normalized time", -# title="Creams strong scaling: normalized time", -# subtitle=output) + -# theme(plot.subtitle=element_text(size=8)) -# -#ggsave("normalized.time.png", plot=p, width=w, height=h, dpi=dpi) -#ggsave("normalized.time.pdf", plot=p, width=w, height=h, dpi=dpi) - -# --------------------------------------------------------------------- - -p = ggplot(df, aes(x=sizeFactor, y=time.elem, color=branch)) + - geom_point(shape=21, size=3) + -# geom_line(aes(y=median.time, group=gitBranch)) + - theme_bw() + -# facet_wrap(branch ~ .) + - labs(x="Size factor k (nz=k*3072)", y="Time / k (s)", - #title="Creams size: time per object", - subtitle=output) + - theme(plot.subtitle=element_text(size=8, family="mono"), - legend.position="bottom") - -ggsave("time.png", plot=p, width=w, height=h, dpi=dpi) -ggsave("time.pdf", plot=p, width=w, height=h, dpi=dpi) - diff --git a/garlic/fig/creams/ss.R b/garlic/fig/creams/ss.R deleted file mode 100644 index b367781..0000000 --- a/garlic/fig/creams/ss.R +++ /dev/null @@ -1,128 +0,0 @@ -library(ggplot2) -library(dplyr, warn.conflicts = FALSE) -library(scales) -library(jsonlite) -library(viridis, warn.conflicts = FALSE) -library(stringr) - -args = commandArgs(trailingOnly=TRUE) - -# Set the input dataset if given in argv[1], or use "input" as default -if (length(args)>0) { input_file = args[1] } else { input_file = "input" } -if (length(args)>1) { output = args[2] } else { output = "?" } - -df = jsonlite::stream_in(file(input_file), verbose=FALSE) %>% - - jsonlite::flatten() %>% - - select(unit, - config.nodes, - config.gitBranch, - config.granul, - config.iterations, - time, - total_time) %>% - - rename(nodes=config.nodes, - gitBranch=config.gitBranch, - granul=config.granul, - iterations=config.iterations) %>% - - # Remove the "garlic/" prefix from the gitBranch - mutate(branch = str_replace(gitBranch, "garlic/", "")) %>% - - # Computations before converting to factor - mutate(time.nodes = time * nodes) %>% - mutate(time.nodes.iter = time.nodes / iterations) %>% - - # Convert to factors - mutate(unit = as.factor(unit)) %>% - mutate(nodes = as.factor(nodes)) %>% - mutate(gitBranch = as.factor(gitBranch)) %>% - mutate(granul = as.factor(granul)) %>% - mutate(iterations = as.factor(iterations)) %>% - mutate(unit = as.factor(unit)) %>% - - # Compute median times - group_by(unit) %>% - mutate(median.time = median(time)) %>% - mutate(median.time.nodes = median(time.nodes)) %>% - mutate(normalized.time = time / median.time - 1) %>% - mutate(log.median.time = log(median.time)) %>% - mutate(median.time.nodes.iter = median(time.nodes.iter)) %>% - ungroup() - -dpi = 300 -h = 5 -w = 8 - -# --------------------------------------------------------------------- - -p = ggplot(df, aes(x=nodes, y=normalized.time, fill=granul, color=iterations)) + - geom_boxplot() + - geom_hline(yintercept=c(-0.01, 0.01), linetype="dashed", color="red") + - theme_bw() + - facet_wrap(branch ~ .) + - labs(x="nodes", y="Normalized time", - title="Creams strong scaling: normalized time", - subtitle=output) + - theme(plot.subtitle=element_text(size=8)) - -ggsave("normalized.time.png", plot=p, width=w, height=h, dpi=dpi) -ggsave("normalized.time.pdf", plot=p, width=w, height=h, dpi=dpi) - -# --------------------------------------------------------------------- - -p = ggplot(df, aes(x=nodes, y=time, color=gitBranch)) + - geom_point(shape=21, size=3) + - geom_line(aes(y=median.time, group=gitBranch)) + - theme_bw() + -# facet_wrap(branch ~ .) + - labs(x="nodes", y="Time (s)", title="Creams strong scaling: time", - subtitle=output) + - theme(plot.subtitle=element_text(size=8)) - -ggsave("time.png", plot=p, width=w, height=h, dpi=dpi) -ggsave("time.pdf", plot=p, width=w, height=h, dpi=dpi) - -# --------------------------------------------------------------------- - -p = ggplot(df, aes(x=nodes, y=median.time.nodes, color=branch)) + - geom_point(shape=21, size=3) + - geom_line(aes(group=branch)) + - theme_bw() + - #facet_wrap(branch ~ .) + - labs(x="nodes", y="Median time * nodes (s)", title="Creams strong scaling: median time * nodes", - subtitle=output) + - theme(plot.subtitle=element_text(size=8)) - -ggsave("median.time.nodes.png", plot=p, width=w, height=h, dpi=dpi) -ggsave("median.time.nodes.pdf", plot=p, width=w, height=h, dpi=dpi) - -# --------------------------------------------------------------------- - -p = ggplot(df, aes(x=nodes, y=time.nodes, color=branch)) + - geom_boxplot() + - theme_bw() + - facet_wrap(branch ~ .) + - labs(x="nodes", y="Time * nodes (s)", title="Creams strong scaling: time * nodes", - subtitle=output) + - theme(plot.subtitle=element_text(size=8)) - -ggsave("time.nodes.boxplot.png", plot=p, width=w, height=h, dpi=dpi) -ggsave("time.nodes.boxplot.pdf", plot=p, width=w, height=h, dpi=dpi) - -# --------------------------------------------------------------------- - -#p = ggplot(df, aes(x=nodes, y=time.nodes.iter, color=branch)) + -# geom_point(shape=21, size=3) + -# geom_line(aes(y=median.time.nodes.iter, group=interaction(granul,iterations))) + -# theme_bw() + -# #facet_wrap(branch ~ .) + -# labs(x="nodes", y="Time * nodes / iterations (s)", -# title="Creams strong scaling: time * nodes / iterations", -# subtitle=output) + -# theme(plot.subtitle=element_text(size=8)) -# -#ggsave("time.nodes.iter.png", plot=p, width=w, height=h, dpi=dpi) -#ggsave("time.nodes.iter.pdf", plot=p, width=w, height=h, dpi=dpi) diff --git a/garlic/fig/dev/shell.nix b/garlic/fig/dev/shell.nix deleted file mode 100644 index 840c83e..0000000 --- a/garlic/fig/dev/shell.nix +++ /dev/null @@ -1,14 +0,0 @@ -{ pkgs ? import ../../../default.nix }: - -with pkgs; - -let - rWrapper = pkgs.rWrapper.override { - packages = with pkgs.rPackages; [ tidyverse rjson jsonlite egg ]; - }; -in -stdenv.mkDerivation { - name = "R"; - - buildInputs = [ rWrapper ]; -} diff --git a/garlic/fig/examples/granularity.R b/garlic/fig/examples/granularity.R deleted file mode 100644 index 7577dca..0000000 --- a/garlic/fig/examples/granularity.R +++ /dev/null @@ -1,195 +0,0 @@ -# This R program takes as argument the dataset that contains the results of the -# execution of the heat example experiment and produces some plots. All the -# knowledge to understand how this script works is covered by this nice R book: -# -# Winston Chang, R Graphics Cookbook: Practical Recipes for Visualizing Data, -# O’Reilly Media (2020). 2nd edition -# -# Which can be freely read it online here: https://r-graphics.org/ -# -# Please, search in this book before copying some random (and probably oudated) -# reply on stack overflow. - -# We load some R packages to import the required functions. We mainly use the -# tidyverse packages, which are very good for ploting data, -library(ggplot2) -library(dplyr, warn.conflicts = FALSE) -library(scales) -library(jsonlite) -library(viridis, warn.conflicts = FALSE) - -# Here we simply load the arguments to find the input dataset. If nothing is -# specified we use the file named `input` in the current directory. -# We can run this script directly using: -# Rscript - -# Load the arguments (argv) -args = commandArgs(trailingOnly=TRUE) - -# Set the input dataset if given in argv[1], or use "input" as default -if (length(args)>0) { input_file = args[1] } else { input_file = "input" } -if (length(args)>1) { output = args[2] } else { output = "?" } - -# Here we build of dataframe from the input dataset by chaining operations using -# the magritte operator `%>%`, which is similar to a UNIX pipe. -# First we read the input file, which is expected to be NDJSON -df = jsonlite::stream_in(file(input_file), verbose=FALSE) %>% - - # Then we flatten it, as it may contain dictionaries inside the columns - jsonlite::flatten() %>% - - # Now the dataframe contains all the configuration of the units inside the - # columns named `config.*`, for example `config.cbs`. We first select only - # the columns that we need: - select(config.cbs, config.rbs, unit, time) %>% - - # And then we rename those columns to something shorter: - rename(cbs=config.cbs, rbs=config.rbs) %>% - - # The columns contain the values that we specified in the experiment as - # integers. However, we need to tell R that those values are factors. So we - # apply to those columns the `as.factor()` function: - mutate(cbs = as.factor(cbs)) %>% - mutate(rbs = as.factor(rbs)) %>% - - # The same for the unit (which is the hash that nix has given to each unit) - mutate(unit = as.factor(unit)) %>% - - # Then, we can group our dataset by each unit. This will always work - # independently of the variables that vary from unit to unit. - group_by(unit) %>% - - # And compute some metrics which are applied to each group. For example we - # compute the median time within the runs of a unit: - mutate(median.time = median(time)) %>% - mutate(normalized.time = time / median.time - 1) %>% - mutate(log.median.time = log(median.time)) %>% - - # Then, we remove the grouping. This step is very important, otherwise the - # plotting functions get confused: - ungroup() - - -# These constants will be used when creating the plots. We use high quality -# images with 300 dots per inch and 5 x 5 inches of size by default. -dpi = 300 -h = 5 -w = 5 - - -# --------------------------------------------------------------------- - - -# We plot the median time (of each unit) as we vary the block size. As we vary -# both the cbs and rbs, we plot cbs while fixing rbs at a time. -p = ggplot(df, aes(x=cbs, y=median.time, color=rbs)) + - # We add a point to the median - geom_point() + - - # We also add the lines to connect the points. We need to specify which - # variable will do the grouping, otherwise we will have one line per point. - geom_line(aes(group=rbs)) + - - # The bw theme is recommended for publications - theme_bw() + - - # Here we add the title and the labels of the axes - labs(x="cbs", y="Median time (s)", title="Heat granularity: median time", - subtitle=output) + - - # And set the subtitle font size a bit smaller, so it fits nicely - theme(plot.subtitle=element_text(size=8)) - -# Then, we save the plot both in png and pdf -ggsave("median.time.png", plot=p, width=w, height=h, dpi=dpi) -ggsave("median.time.pdf", plot=p, width=w, height=h, dpi=dpi) - - -# --------------------------------------------------------------------- - - -# Another interesting plot is the normalized time, which shows the variance of -# the execution times, and can be used to find problems: -p = ggplot(df, aes(x=cbs, y=normalized.time)) + - - # The boxplots are useful to identify outliers and problems with the - # distribution of time - geom_boxplot() + - - # We add a line to mark the 1% limit above and below the median - geom_hline(yintercept=c(-0.01, 0.01), linetype="dashed", color="red") + - - # We split the plot into subplots, one for each value of the rbs column - facet_wrap(~ rbs) + - - # The bw theme is recommended for publications - theme_bw() + - - # Here we add the title and the labels of the axes - labs(x="cbs", y="Normalized time", title="Heat granularity: normalized time", - subtitle=output) + - - # And set the subtitle font size a bit smaller, so it fits nicely - theme(plot.subtitle=element_text(size=8)) - -# Then, we save the plot both in png and pdf -ggsave("normalized.time.png", plot=p, width=w, height=h, dpi=dpi) -ggsave("normalized.time.pdf", plot=p, width=w, height=h, dpi=dpi) - - -# --------------------------------------------------------------------- - - -# We plot the time of each run as we vary the block size -p = ggplot(df, aes(x=cbs, y=time, color=rbs)) + - - # We add a points (scatter plot) using circles (shape=21) a bit larger - # than the default (size=3) - geom_point(shape=21, size=3) + - - # The bw theme is recommended for publications - theme_bw() + - - # Here we add the title and the labels of the axes - labs(x="cbs", y="Time (s)", title="Heat granularity: time", - subtitle=output) + - - # And set the subtitle font size a bit smaller, so it fits nicely - theme(plot.subtitle=element_text(size=8)) - -# Then, we save the plot both in png and pdf -ggsave("time.png", plot=p, width=w, height=h, dpi=dpi) -ggsave("time.pdf", plot=p, width=w, height=h, dpi=dpi) - - -# --------------------------------------------------------------------- - - -# We can also plot both cbs and rbs in each dimension by mapping the time with a -# color. The `fill` argument instruct R to use the `median.time` as color -p = ggplot(df, aes(x=cbs, y=rbs, fill=median.time)) + - - # Then we use the geom_raster method to paint rectangles filled with color - geom_raster() + - - # The colors are set using the viridis package, using the plasma palete. Those - # colors are designed to be safe for color impaired people and also when - # converting the figures to grayscale. - scale_fill_viridis(option="plasma") + - - # We also force each tile to be an square - coord_fixed() + - - # The bw theme is recommended for publications - theme_bw() + - - # Here we add the title and the labels of the axes - labs(x="cbs", y="rbs", title="Heat granularity: time", - subtitle=output) + - - # And set the subtitle font size a bit smaller, so it fits nicely - theme(plot.subtitle=element_text(size=8)) - -# Then, we save the plot both in png and pdf -ggsave("time.heatmap.png", plot=p, width=w, height=h, dpi=dpi) -ggsave("time.heatmap.pdf", plot=p, width=w, height=h, dpi=dpi) diff --git a/garlic/fig/fwi/granularity.R b/garlic/fig/fwi/granularity.R deleted file mode 100644 index da9f1a4..0000000 --- a/garlic/fig/fwi/granularity.R +++ /dev/null @@ -1,74 +0,0 @@ -library(ggplot2) -library(dplyr, warn.conflicts = FALSE) -library(scales) -library(jsonlite) -library(viridis, warn.conflicts = FALSE) -library(stringr) - -args = commandArgs(trailingOnly=TRUE) - -# Set the input dataset if given in argv[1], or use "input" as default -if (length(args)>0) { input_file = args[1] } else { input_file = "input" } -if (length(args)>1) { output = args[2] } else { output = "?" } - -df = jsonlite::stream_in(file(input_file), verbose=FALSE) %>% - - jsonlite::flatten() %>% - - select(unit, - config.blocksize, - config.gitBranch, - time) %>% - - rename(blocksize=config.blocksize, - gitBranch=config.gitBranch) %>% - - # Remove the "garlic/" prefix from the gitBranch - mutate(branch = str_replace(gitBranch, "garlic/", "")) %>% - - mutate(unit = as.factor(unit)) %>% - mutate(gitBranch = as.factor(gitBranch)) %>% - mutate(branch = as.factor(branch)) %>% - mutate(blocksize = as.factor(blocksize)) %>% - - group_by(unit) %>% - mutate(median.time = median(time)) %>% - mutate(normalized.time = time / median.time - 1) %>% - ungroup() - - -dpi = 300 -h = 6 -w = 6 - -main_title = "FWI granularity" - -# --------------------------------------------------------------------- - -p = ggplot(df, aes(x=blocksize, y=normalized.time)) + - geom_boxplot() + - geom_hline(yintercept=c(-0.01, 0.01), linetype="dashed", color="red") + - theme_bw() + - facet_wrap(branch ~ .) + - labs(y="Normalized time", - title=sprintf("%s: normalized time", main_title), - subtitle=output) + - theme(plot.subtitle=element_text(size=8)) - -ggsave("normalized.time.png", plot=p, width=w, height=h, dpi=dpi) -ggsave("normalized.time.pdf", plot=p, width=w, height=h, dpi=dpi) - -# --------------------------------------------------------------------- - -p = ggplot(df, aes(x=blocksize, y=time, color=branch)) + - geom_point(shape=21, size=3) + - geom_line(aes(y=median.time, group=branch)) + - theme_bw() + - labs(y="Time (s)", - title=sprintf("%s: time", main_title), - subtitle=output) + - theme(legend.position="bottom") + - theme(plot.subtitle=element_text(size=8)) - -ggsave("time.png", plot=p, width=w, height=h, dpi=dpi) -ggsave("time.pdf", plot=p, width=w, height=h, dpi=dpi) diff --git a/garlic/fig/fwi/io.R b/garlic/fig/fwi/io.R deleted file mode 100644 index e10e3dc..0000000 --- a/garlic/fig/fwi/io.R +++ /dev/null @@ -1,120 +0,0 @@ -library(ggplot2) -library(dplyr) -library(scales) -library(jsonlite) -library(forcats) - -args=commandArgs(trailingOnly=TRUE) - -# Read the timetable from args[1] -input_file = "input.json" -if (length(args)>0) { input_file = args[1] } -if (length(args)>1) { output = args[2] } else { output = "?" } - -# Load the dataset in NDJSON format -dataset = jsonlite::stream_in(file(input_file)) %>% - jsonlite::flatten() - -# We only need the nblocks and time -df = select(dataset, config.blocksize, config.ioFreq, config.gitBranch, config.nodes, time, unit) %>% - rename( - blocksize=config.blocksize, - enableIO=config.enableIO, - gitBranch=config.gitBranch, - nodes=config.nodes - ) %>% - filter(blocksize == 1) %>% - group_by(unit) %>% - mutate(mtime = median(time)) %>% - mutate(nxmtime = mtime * nodes) %>% - mutate(nxtime = time * nodes) %>% - ungroup() - -df$gitBranch = as.factor(df$gitBranch) -df$enableIO = as.factor(df$enableIO) -df$blocksize = as.factor(df$blocksize) -df$nodes = as.factor(df$nodes) - -ppi=300 -h=5 -w=5 - -#################################################################### -### Line plot (time) -#################################################################### -png("time.png", width=w*ppi, height=h*ppi, res=ppi) - -p = ggplot(df, aes(x=nodes, y=time, group=enableIO, color=enableIO)) + - geom_point() + - geom_line() + - theme_bw() + - labs(x="Nodes", y="Time (s)", title="FWI strong scaling for mpi+send+oss+task", - subtitle=output) + - theme(plot.subtitle=element_text(size=8)) + - theme(legend.position = c(0.5, 0.88)) - -# Render the plot -print(p) - -# Save the png image -dev.off() - -#################################################################### -### Line plot (time x nodes) -#################################################################### -png("nxtime.png", width=w*ppi, height=h*ppi, res=ppi) - -p = ggplot(df, aes(x=nodes, y=nxtime, group=enableIO, color=enableIO)) + - geom_point() + - geom_line() + - theme_bw() + - labs(x="Nodes", y="Time * Nodes (s)", title="FWI strong scaling for mpi+send+oss+task", - subtitle=output) + - theme(plot.subtitle=element_text(size=8)) + - theme(legend.position = c(0.5, 0.88)) - -# Render the plot -print(p) - -# Save the png image -dev.off() - -##################################################################### -#### Line plot (median time) -##################################################################### -#png("mediantime.png", width=w*ppi, height=h*ppi, res=ppi) -# -#p = ggplot(df, aes(x=nodes, y=mtime, group=gitBranch, color=gitBranch)) + -# geom_point() + -# geom_line() + -# theme_bw() + -# labs(x="Nodes", y="Median Time (s)", title="FWI strong scaling", -# subtitle=output) + -# theme(plot.subtitle=element_text(size=8)) + -# theme(legend.position = c(0.5, 0.88)) -# -## Render the plot -#print(p) -# -## Save the png image -#dev.off() -# -##################################################################### -#### Line plot (nodes x median time) -##################################################################### -#png("nxmtime.png", width=w*ppi, height=h*ppi, res=ppi) -# -#p = ggplot(df, aes(x=nodes, y=nxmtime, group=gitBranch, color=gitBranch)) + -# geom_point() + -# geom_line() + -# theme_bw() + -# labs(x="Nodes", y="Median Time * Nodes (s)", title="FWI strong scaling", -# subtitle=output) + -# theme(plot.subtitle=element_text(size=8)) + -# theme(legend.position = c(0.5, 0.88)) -# -## Render the plot -#print(p) -# -## Save the png image -#dev.off() diff --git a/garlic/fig/fwi/ss.R b/garlic/fig/fwi/ss.R deleted file mode 100644 index 428d5c1..0000000 --- a/garlic/fig/fwi/ss.R +++ /dev/null @@ -1,95 +0,0 @@ -library(ggplot2) -library(dplyr, warn.conflicts = FALSE) -library(scales) -library(jsonlite) -library(viridis, warn.conflicts = FALSE) -library(stringr) - -args = commandArgs(trailingOnly=TRUE) - -# Set the input dataset if given in argv[1], or use "input" as default -if (length(args)>0) { input_file = args[1] } else { input_file = "input" } -if (length(args)>1) { output = args[2] } else { output = "?" } - -df = jsonlite::stream_in(file(input_file), verbose=FALSE) %>% - - jsonlite::flatten() %>% - - select(unit, - config.blocksize, - config.gitBranch, - config.nodes, - time) %>% - - rename(blocksize=config.blocksize, - nodes=config.nodes, - gitBranch=config.gitBranch) %>% - - # Remove the "garlic/" prefix from the gitBranch - mutate(branch = str_replace(gitBranch, "garlic/", "")) %>% - - mutate(time.nodes = time * nodes) %>% - - mutate(unit = as.factor(unit)) %>% - mutate(gitBranch = as.factor(gitBranch)) %>% - mutate(branch = as.factor(branch)) %>% - mutate(blocksize = as.factor(blocksize)) %>% - mutate(nodes = as.factor(nodes)) %>% - - group_by(unit) %>% - mutate(median.time = median(time)) %>% - mutate(median.time.nodes = median(time.nodes)) %>% - mutate(normalized.time = time / median.time - 1) %>% - ungroup() - - -dpi = 300 -h = 6 -w = 6 - -main_title = "FWI strong scaling" - -# --------------------------------------------------------------------- - -p = ggplot(df, aes(x=nodes, y=normalized.time)) + - geom_boxplot() + - geom_hline(yintercept=c(-0.01, 0.01), linetype="dashed", color="red") + - theme_bw() + - facet_wrap(branch ~ .) + - labs(x="nodes", y="Normalized time", - title=sprintf("%s: normalized time", main_title), - subtitle=output) + - theme(plot.subtitle=element_text(size=8)) - -ggsave("normalized.time.png", plot=p, width=w, height=h, dpi=dpi) -ggsave("normalized.time.pdf", plot=p, width=w, height=h, dpi=dpi) - -# --------------------------------------------------------------------- - -p = ggplot(df, aes(x=nodes, y=time, color=gitBranch)) + - geom_point(shape=21, size=3) + - geom_line(aes(y=median.time, group=gitBranch)) + - theme_bw() + -# facet_wrap(branch ~ .) + - labs(y="Time (s)", - title=sprintf("%s: time", main_title), - subtitle=output) + - theme(plot.subtitle=element_text(size=8)) - -ggsave("time.png", plot=p, width=w, height=h, dpi=dpi) -ggsave("time.pdf", plot=p, width=w, height=h, dpi=dpi) - -# --------------------------------------------------------------------- - -p = ggplot(df, aes(x=nodes, y=time.nodes, color=branch)) + - geom_point(shape=21, size=3) + - geom_line(aes(y=median.time.nodes, group=branch)) + - theme_bw() + - #facet_wrap(branch ~ .) + - labs(x="nodes", y="Time * nodes (s)", - title=sprintf("%s: time * nodes", main_title), - subtitle=output) + - theme(plot.subtitle=element_text(size=8)) - -ggsave("time.nodes.png", plot=p, width=w, height=h, dpi=dpi) -ggsave("time.nodes.pdf", plot=p, width=w, height=h, dpi=dpi) diff --git a/garlic/fig/heat/cache.R b/garlic/fig/heat/cache.R deleted file mode 100644 index dca6baf..0000000 --- a/garlic/fig/heat/cache.R +++ /dev/null @@ -1,78 +0,0 @@ -library(ggplot2) -library(dplyr) -library(scales) -library(jsonlite) -library(viridis) - -args=commandArgs(trailingOnly=TRUE) - -# Read the timetable from args[1] -input_file = "input.json" -if (length(args)>0) { input_file = args[1] } -if (length(args)>1) { output = args[2] } else { output = "?" } - -# Load the dataset in NDJSON format -dataset = jsonlite::stream_in(file(input_file)) %>% - jsonlite::flatten() - -# We only need the nblocks and time -df = select(dataset, config.cbs, config.rbs, perf.cache_misses, perf.instructions, perf.cycles, time) %>% - rename(cbs=config.cbs, rbs=config.rbs) - -df$cbs = as.factor(df$cbs) -df$rbs = as.factor(df$rbs) - -# Normalize the time by the median -df=group_by(df, cbs, rbs) %>% - mutate(median.time = median(time)) %>% - mutate(log.median.time = log(median.time)) %>% - mutate(median.misses = median(perf.cache_misses)) %>% - mutate(log.median.misses = log(median.misses)) %>% - mutate(median.instr= median(perf.instructions)) %>% - mutate(log.median.instr= log(median.instr)) %>% - mutate(median.cycles = median(perf.cycles)) %>% - mutate(median.cpi = median.cycles / median.instr) %>% - mutate(median.ipc = median.instr / median.cycles) %>% - mutate(median.ips = median.instr / median.time) %>% - mutate(median.cps = median.cycles / median.time) %>% - ungroup()# %>% - -heatmap_plot = function(df, colname, title) { - p = ggplot(df, aes(x=cbs, y=rbs, fill=!!ensym(colname))) + - geom_raster() + - #scale_fill_gradient(high="black", low="white") + - scale_fill_viridis(option="plasma") + - coord_fixed() + - theme_bw() + - theme(axis.text.x=element_text(angle = -45, hjust = 0)) + - theme(plot.subtitle=element_text(size=8)) + - #guides(fill = guide_colorbar(barwidth=15, title.position="top")) + - guides(fill = guide_colorbar(barwidth=12, title.vjust=0.8)) + - labs(x="cbs", y="rbs", - title=sprintf("Heat granularity: %s", title), - subtitle=output) + - theme(legend.position="bottom") - - k=1 - ggsave(sprintf("%s.png", colname), plot=p, width=4.8*k, height=5*k, dpi=300) - ggsave(sprintf("%s.pdf", colname), plot=p, width=4.8*k, height=5*k, dpi=300) -} - -heatmap_plot(df, "median.misses", "cache misses") -heatmap_plot(df, "log.median.misses", "cache misses") -heatmap_plot(df, "median.instr", "instructions") -heatmap_plot(df, "log.median.instr", "instructions") -heatmap_plot(df, "median.cycles", "cycles") -heatmap_plot(df, "median.ipc", "IPC") -heatmap_plot(df, "median.cpi", "cycles/instruction") -heatmap_plot(df, "median.ips", "instructions/second") -heatmap_plot(df, "median.cps", "cycles/second") - -cutlevel = 0.5 -# To plot the median.time we crop the larger values: -df_filtered = filter(df, between(median.time, - median(time) - (cutlevel * sd(time)), - median(time) + (cutlevel * sd(time)))) - -heatmap_plot(df_filtered, "median.time", "execution time (seconds)") -heatmap_plot(df_filtered, "log.median.time", "execution time") diff --git a/garlic/fig/heat/granularity.R b/garlic/fig/heat/granularity.R deleted file mode 100644 index 19c3f37..0000000 --- a/garlic/fig/heat/granularity.R +++ /dev/null @@ -1,68 +0,0 @@ -library(ggplot2) -library(dplyr, warn.conflicts = FALSE) -library(scales) -library(jsonlite) -library(viridis, warn.conflicts = FALSE) -library(stringr) - -args = commandArgs(trailingOnly=TRUE) - -# Set the input dataset if given in argv[1], or use "input" as default -if (length(args)>0) { input_file = args[1] } else { input_file = "input" } -if (length(args)>1) { output = args[2] } else { output = "?" } - -df = jsonlite::stream_in(file(input_file), verbose=FALSE) %>% - - jsonlite::flatten() %>% - - select(unit, - config.cbs, - config.rbs, - time, - total_time) %>% - - rename(cbs=config.cbs, - rbs=config.rbs) %>% - - # Convert to factors - mutate(cbs = as.factor(cbs)) %>% - mutate(rbs = as.factor(rbs)) %>% - mutate(unit = as.factor(unit)) %>% - - # Compute median times - group_by(unit) %>% - mutate(median.time = median(time)) %>% - mutate(normalized.time = time / median.time - 1) %>% - mutate(log.median.time = log(median.time)) %>% - ungroup() - -dpi = 300 -h = 6 -w = 6 - -# --------------------------------------------------------------------- - -p = ggplot(df, aes(x=cbs, y=normalized.time)) + - geom_boxplot() + - geom_hline(yintercept=c(-0.01, 0.01), linetype="dashed", color="red") + - theme_bw() + - labs(y="Normalized time", - title="Heat granularity: normalized time", - subtitle=output) + - theme(plot.subtitle=element_text(size=8)) - -ggsave("normalized.time.png", plot=p, width=w, height=h, dpi=dpi) -ggsave("normalized.time.pdf", plot=p, width=w, height=h, dpi=dpi) - -# --------------------------------------------------------------------- - -p = ggplot(df, aes(x=cbs, y=time)) + - geom_point(shape=21, size=3) + - geom_line(aes(y=median.time, group=0)) + - theme_bw() + - labs(y="Time (s)", title="Heat granularity: time", - subtitle=output) + - theme(plot.subtitle=element_text(size=8)) - -ggsave("time.png", plot=p, width=w, height=h, dpi=dpi) -ggsave("time.pdf", plot=p, width=w, height=h, dpi=dpi) diff --git a/garlic/fig/heat/mode.R b/garlic/fig/heat/mode.R deleted file mode 100644 index 5e409bc..0000000 --- a/garlic/fig/heat/mode.R +++ /dev/null @@ -1,122 +0,0 @@ -library(ggplot2) -library(dplyr) -library(scales) -library(jsonlite) -library(viridis) -library(tidyr) - -args=commandArgs(trailingOnly=TRUE) - -# Read the timetable from args[1] -input_file = "input.json" -if (length(args)>0) { input_file = args[1] } -if (length(args)>1) { output = args[2] } else { output = "?" } - -# Load the dataset in NDJSON format -dataset = jsonlite::stream_in(file(input_file)) %>% - jsonlite::flatten() - -# We only need the nblocks and time -df = select(dataset, config.cbs, config.rbs, - ctf_mode.runtime, - ctf_mode.task, - ctf_mode.dead, - config.cpusPerTask, - time) %>% - rename( - cbs=config.cbs, - rbs=config.rbs, - runtime=ctf_mode.runtime, - task=ctf_mode.task, - dead=ctf_mode.dead, - cpusPerTask=config.cpusPerTask, - ) - -df$cbs = as.factor(df$cbs) -df$rbs = as.factor(df$rbs) - -# Normalize the time by the median -df = df %>% - mutate(runtime = runtime * 1e-9 / cpusPerTask) %>% - mutate(dead = dead * 1e-9 / cpusPerTask) %>% - mutate(task = task * 1e-9 / cpusPerTask) %>% - group_by(cbs, rbs) %>% - mutate(median.time = median(time)) %>% - mutate(log.median.time = log(median.time)) %>% - mutate(median.dead = median(dead)) %>% - mutate(median.runtime = median(runtime)) %>% - mutate(median.task = median(task)) %>% - ungroup() #%>% - -print(df) - -heatmap_plot = function(df, colname, title) { - p = ggplot(df, aes(x=cbs, y=rbs, fill=!!ensym(colname))) + - geom_raster() + - #scale_fill_gradient(high="black", low="white") + - scale_fill_viridis(option="plasma") + - coord_fixed() + - theme_bw() + - theme(axis.text.x=element_text(angle = -45, hjust = 0)) + - theme(plot.subtitle=element_text(size=8)) + - #guides(fill = guide_colorbar(barwidth=15, title.position="top")) + - guides(fill = guide_colorbar(barwidth=12, title.vjust=0.8)) + - labs(x="cbs", y="rbs", - title=sprintf("Heat granularity: %s", title), - subtitle=output) + - theme(legend.position="bottom") - - k=1 - ggsave(sprintf("%s.png", colname), plot=p, width=4.8*k, height=5*k, dpi=300) - ggsave(sprintf("%s.pdf", colname), plot=p, width=4.8*k, height=5*k, dpi=300) -} - -heatmap_plot(df, "median.runtime", "runtime") -heatmap_plot(df, "median.dead", "not used") -heatmap_plot(df, "median.task", "task") - -cutlevel = 0.5 -# To plot the median.time we crop the larger values: -df_filtered = filter(df, between(median.time, - median(time) - (cutlevel * sd(time)), - median(time) + (cutlevel * sd(time)))) - -heatmap_plot(df, "median.time", "execution time (seconds)") -heatmap_plot(df, "log.median.time", "execution time") - -df_square = filter(df, cbs == rbs) %>% - gather(key = time.from, value = acc.time, - c("median.dead", "median.runtime", "median.task")) - -# Colors similar to Paraver -colors <- c("median.dead" = "gray", - "median.runtime" = "blue", - "median.task" = "red") - -p = ggplot(df_square, aes(x=cbs, y=acc.time)) + - geom_area(aes(fill=time.from, group=time.from)) + - scale_fill_manual(values = colors) + - geom_point(aes(y=median.time, color="black")) + - geom_line(aes(y=median.time, group=0, color="black")) + - theme_bw() + - theme(legend.position=c(0.5, 0.7)) + - scale_color_identity(breaks = c("black"), - labels = c("Total time"), guide = "legend") + - labs(x="Blocksize (side)", y="Time (s)", - fill="Estimated", color="Direct measurement", - title="Heat granularity: time distribution", subtitle=output) - -ggsave("area.time.png", plot=p, width=6, height=6, dpi=300) -ggsave("area.time.pdf", plot=p, width=6, height=6, dpi=300) - -p = ggplot(df_square, aes(x=cbs, y=acc.time)) + - geom_col(aes(fill=time.from, group=time.from)) + - scale_fill_manual(values = colors) + - theme_bw() + - theme(legend.position=c(0.5, 0.7)) + - labs(x="Blocksize (side)", y="Time (s)", - fill="Estimated", color="Direct measurement", - title="Heat granularity: time distribution", subtitle=output) - -ggsave("col.time.png", plot=p, width=6, height=6, dpi=300) -ggsave("col.time.pdf", plot=p, width=6, height=6, dpi=300) diff --git a/garlic/fig/hpcg/granularity.R b/garlic/fig/hpcg/granularity.R deleted file mode 100644 index 29126da..0000000 --- a/garlic/fig/hpcg/granularity.R +++ /dev/null @@ -1,63 +0,0 @@ -library(ggplot2) -library(dplyr, warn.conflicts = FALSE) -library(scales) -library(jsonlite) -library(viridis, warn.conflicts = FALSE) - -args = commandArgs(trailingOnly=TRUE) - -if (length(args)>0) { input_file = args[1] } else { input_file = "input" } -if (length(args)>1) { output = args[2] } else { output = "?" } - -df = jsonlite::stream_in(file(input_file), verbose=FALSE) %>% - - jsonlite::flatten() %>% - - select(config.nblocks, - config.ncomms, - config.hw.cpusPerSocket, - config.blocksPerCpu, - unit, - time) %>% - - rename(nblocks=config.nblocks, - ncomms=config.ncomms, - blocksPerCpu=config.blocksPerCpu) %>% - - mutate(nblocks = as.factor(nblocks)) %>% - mutate(blocksPerCpu = as.factor(blocksPerCpu)) %>% - mutate(unit = as.factor(unit)) %>% - - group_by(unit) %>% - - mutate(median.time = median(time)) %>% - mutate(normalized.time = time / median.time - 1) %>% - mutate(log.median.time = log(median.time)) %>% - - ungroup() - -dpi=300 -h=5 -w=5 - -p = ggplot(df, aes(x=blocksPerCpu, y=normalized.time)) + - geom_boxplot() + - geom_hline(yintercept=c(-0.01, 0.01), linetype="dashed", color="red") + - theme_bw() + - labs(x="Blocks per CPU", y="Normalized time", title="HPCG granularity: normalized time", - subtitle=output) + - theme(plot.subtitle=element_text(size=8)) - -ggsave("normalized.time.png", plot=p, width=w, height=h, dpi=dpi) -ggsave("normalized.time.pdf", plot=p, width=w, height=h, dpi=dpi) - -p = ggplot(df, aes(x=blocksPerCpu, y=time)) + - geom_point(shape=21, size=3) + - theme_bw() + - labs(x="Blocks per CPU", y="Time (s)", title="HPCG granularity: time", - subtitle=output) + - theme(plot.subtitle=element_text(size=8)) - -ggsave("time.png", plot=p, width=w, height=h, dpi=dpi) -ggsave("time.pdf", plot=p, width=w, height=h, dpi=dpi) - diff --git a/garlic/fig/hpcg/size.R b/garlic/fig/hpcg/size.R deleted file mode 100644 index a7cc5f1..0000000 --- a/garlic/fig/hpcg/size.R +++ /dev/null @@ -1,71 +0,0 @@ -library(ggplot2) -library(dplyr, warn.conflicts = FALSE) -library(scales) -library(jsonlite) -library(viridis, warn.conflicts = FALSE) - -args = commandArgs(trailingOnly=TRUE) - -if (length(args)>0) { input_file = args[1] } else { input_file = "input" } -if (length(args)>1) { output = args[2] } else { output = "?" } - -df = jsonlite::stream_in(file(input_file), verbose=FALSE) %>% - - jsonlite::flatten() %>% - - select(config.nblocks, - config.hw.cpusPerSocket, - config.nodes, - config.nprocs.x, - config.nprocs.y, - config.nprocs.z, - config.blocksPerCpu, - config.sizePerCpu.z, - unit, - time - ) %>% - - rename(nblocks=config.nblocks, - cpusPerSocket=config.hw.cpusPerSocket, - nodes=config.nodes, - blocksPerCpu=config.blocksPerCpu, - sizePerCpu.z=config.sizePerCpu.z, - npx=config.nprocs.x, - npy=config.nprocs.y, - npz=config.nprocs.z - ) %>% - - mutate(time.nodes = time * nodes) %>% - mutate(time.nodes.elem = time.nodes / sizePerCpu.z) %>% - - mutate(axisColor=as.factor(ifelse(npx != 1, "X", ifelse(npy != 1, "Y", "Z")))) %>% - - mutate(nblocks = as.factor(nblocks)) %>% - mutate(blocksPerCpu = as.factor(blocksPerCpu)) %>% - mutate(sizePerCpu.z = as.factor(sizePerCpu.z)) %>% - mutate(nodes = as.factor(nodes)) %>% - mutate(unit = as.factor(unit)) %>% - - group_by(unit) %>% - - mutate(median.time = median(time)) %>% - mutate(normalized.time = time / median.time - 1) %>% - mutate(log.median.time = log(median.time)) %>% - - ungroup() - -dpi=300 -h=5 -w=5 - -p = ggplot(df, aes(x=sizePerCpu.z, y=time.nodes.elem)) + - geom_point(shape=21, size=3) + - theme_bw() + - labs(x="Size per CPU in Z", y="Time * nodes / spcz (s)", - title="HPCG size: time * nodes / spcz", - subtitle=output) + - theme(plot.subtitle=element_text(size=8), - legend.position="bottom") - -ggsave("time.nodes.png", plot=p, width=w, height=h, dpi=dpi) -ggsave("time.nodes.pdf", plot=p, width=w, height=h, dpi=dpi) diff --git a/garlic/fig/hpcg/ss.R b/garlic/fig/hpcg/ss.R deleted file mode 100644 index 3978618..0000000 --- a/garlic/fig/hpcg/ss.R +++ /dev/null @@ -1,82 +0,0 @@ -library(ggplot2) -library(dplyr, warn.conflicts = FALSE) -library(scales) -library(jsonlite) -library(viridis, warn.conflicts = FALSE) - -args = commandArgs(trailingOnly=TRUE) - -if (length(args)>0) { input_file = args[1] } else { input_file = "input" } -if (length(args)>1) { output = args[2] } else { output = "?" } - -df = jsonlite::stream_in(file(input_file), verbose=FALSE) %>% - - jsonlite::flatten() %>% - - select(config.nblocks, - config.hw.cpusPerSocket, - config.nodes, - config.nprocs.x, - config.nprocs.y, - config.nprocs.z, - config.blocksPerCpu, - config.sizePerCpu.z, - unit, - time - ) %>% - - rename(nblocks=config.nblocks, - cpusPerSocket=config.hw.cpusPerSocket, - nodes=config.nodes, - blocksPerCpu=config.blocksPerCpu, - sizePerCpu.z=config.sizePerCpu.z, - npx=config.nprocs.x, - npy=config.nprocs.y, - npz=config.nprocs.z - ) %>% - - mutate(time.sizeZ = time / sizePerCpu.z) %>% - mutate(time.nodes = time * nodes) %>% - mutate(axisColor=as.factor(ifelse(npx != 1, "X", ifelse(npy != 1, "Y", "Z")))) %>% - - mutate(nblocks = as.factor(nblocks)) %>% - mutate(blocksPerCpu = as.factor(blocksPerCpu)) %>% - mutate(nodes = as.factor(nodes)) %>% - mutate(unit = as.factor(unit)) %>% - mutate(sizePerCpu.z = as.factor(sizePerCpu.z)) %>% - - group_by(unit) %>% - - mutate(median.time = median(time)) %>% - mutate(normalized.time = time / median.time - 1) %>% - mutate(log.median.time = log(median.time)) %>% - - ungroup() - -dpi=300 -h=7 -w=7 - -p = ggplot(df, aes(x=nodes, y=time.nodes)) + - geom_boxplot() + - theme_bw() + - labs(x="Nodes", y="Time * nodes (s)", - title="HPCG strong scalability in Z", - subtitle=output) + - theme(plot.subtitle=element_text(size=8), - legend.position="bottom") - -ggsave("time.nodes.png", plot=p, width=w, height=h, dpi=dpi) -ggsave("time.nodes.pdf", plot=p, width=w, height=h, dpi=dpi) - -p = ggplot(df, aes(x=nodes, y=time.sizeZ, fill=sizePerCpu.z)) + - geom_boxplot() + - theme_bw() + - labs(x="Nodes", y="Time / npcz (s)", title="HPCG strong scalability in Z", - color="Size per CPU in Z", - subtitle=output) + - theme(plot.subtitle=element_text(size=8), - legend.position="bottom") - -ggsave("time.size.png", plot=p, width=w, height=h, dpi=dpi) -ggsave("time.size.pdf", plot=p, width=w, height=h, dpi=dpi) diff --git a/garlic/fig/hpcg/ws.R b/garlic/fig/hpcg/ws.R deleted file mode 100644 index d12f35b..0000000 --- a/garlic/fig/hpcg/ws.R +++ /dev/null @@ -1,71 +0,0 @@ -library(ggplot2) -library(dplyr, warn.conflicts = FALSE) -library(scales) -library(jsonlite) -library(viridis, warn.conflicts = FALSE) - -args = commandArgs(trailingOnly=TRUE) - -if (length(args)>0) { input_file = args[1] } else { input_file = "input" } -if (length(args)>1) { output = args[2] } else { output = "?" } - -df = jsonlite::stream_in(file(input_file), verbose=FALSE) %>% - - jsonlite::flatten() %>% - - select(config.nblocks, - config.hw.cpusPerSocket, - config.nodes, - config.nprocs.x, - config.nprocs.y, - config.nprocs.z, - config.blocksPerCpu, - config.sizePerCpu.z, - unit, - time - ) %>% - - rename(nblocks=config.nblocks, - cpusPerSocket=config.hw.cpusPerSocket, - nodes=config.nodes, - blocksPerCpu=config.blocksPerCpu, - sizePerCpu.z=config.sizePerCpu.z, - npx=config.nprocs.x, - npy=config.nprocs.y, - npz=config.nprocs.z - ) %>% - - mutate(axisColor=as.factor(ifelse(npx != 1, "X", ifelse(npy != 1, "Y", "Z")))) %>% - mutate(time.sizeZ = time / sizePerCpu.z) %>% - - mutate(nblocks = as.factor(nblocks)) %>% - mutate(blocksPerCpu = as.factor(blocksPerCpu)) %>% - mutate(nodes = as.factor(nodes)) %>% - mutate(unit = as.factor(unit)) %>% - mutate(sizePerCpu.z = as.factor(sizePerCpu.z)) %>% - - mutate(timePerNprocs = time * npz) %>% - - group_by(unit) %>% - - mutate(median.time = median(time)) %>% - mutate(normalized.time = time / median.time - 1) %>% - mutate(log.median.time = log(median.time)) %>% - - ungroup() - -dpi=300 -h=7 -w=7 - -p = ggplot(df, aes(x=nodes, y=time, fill=sizePerCpu.z)) + - geom_boxplot() + - theme_bw() + - labs(x="Nodes", y="Time (s)", title="HPCG weak scaling in Z", - color="Size per CPU in Z", - subtitle=output) + - theme(plot.subtitle=element_text(size=8), - legend.position="bottom") - -ggsave("time.nodes.png", plot=p, width=w, height=h, dpi=dpi) -ggsave("time.nodes.pdf", plot=p, width=w, height=h, dpi=dpi) diff --git a/garlic/fig/index.nix b/garlic/fig/index.nix deleted file mode 100644 index 0e7ce41..0000000 --- a/garlic/fig/index.nix +++ /dev/null @@ -1,97 +0,0 @@ -{ - super -, self -, bsc -, garlic -, callPackage -}: - -let - rPlot = garlic.pp.rPlot; - exp = garlic.exp; - pp = garlic.pp; - ds = garlic.ds; - fig = garlic.fig; - - stdPlot = rScript: expList: rPlot { - script = rScript; - dataset = pp.mergeDatasets (map (e: ds.std.timetable e.result) expList); - }; - - customPlot = rScript: dataset: rPlot { - script = rScript; - dataset = dataset; - }; - - linkTree = name: tree: self.linkFarm name ( - self.lib.mapAttrsToList ( - name: value: { name=name; path=value; } - ) tree); -in -{ - nbody = with exp.nbody; { - granularity = stdPlot ./nbody/granularity.R [ granularity ]; - ss = stdPlot ./nbody/ss.R [ ss ]; - numa = stdPlot ./nbody/numa.R [ numa ]; - }; - - hpcg = with exp.hpcg; { - ss = stdPlot ./hpcg/ss.R [ ss ]; - ws = stdPlot ./hpcg/ws.R [ ws ]; - size = stdPlot ./hpcg/size.R [ size ]; - granularity = stdPlot ./hpcg/granularity.R [ granularity ]; - }; - - saiph = with exp.saiph; { - granularity = stdPlot ./saiph/granularity.R [ granularity ]; - ss = stdPlot ./saiph/ss.R [ ss ]; - }; - - heat = with exp.heat; { - granularity = stdPlot ./heat/granularity.R [ granularity ]; - cache = customPlot ./heat/cache.R (ds.perf.stat cache.result); - ctf = customPlot ./heat/mode.R (ds.ctf.mode ctf.result); - }; - - creams = with exp.creams; { - ss = stdPlot ./creams/ss.R [ ss ]; - granularity = stdPlot ./creams/granularity.R [ granularity ]; - size = stdPlot ./creams/size.R [ size ]; - granularity16 = stdPlot ./creams/granularity16.R [ granularity16 ]; - - # Extended version (we could use another R script for those plots - big.ss = stdPlot ./creams/ss.R [ big.ss ]; - big.granularity = stdPlot ./creams/granularity.R [ big.granularity ]; - }; - - fwi = with exp.fwi; { - granularity = stdPlot ./fwi/granularity.R [ granularity ]; - reuse = stdPlot ./fwi/granularity.R [ reuse ]; - ss = stdPlot ./fwi/ss.R [ ss ]; - io = stdPlot ./fwi/io.R [ io ]; - }; - - osu = with exp.osu; { - latency = customPlot ./osu/latency.R (ds.osu.latency latency.result); - latencyShm = customPlot ./osu/latency.R (ds.osu.latency latencyShm.result); - latencyMt = customPlot ./osu/latency.R (ds.osu.latency latencyMt.result); - latencyMtShm = customPlot ./osu/latency.R (ds.osu.latency latencyMtShm.result); - - bw = customPlot ./osu/bw.R (ds.osu.bw bw.result); - bwShm = customPlot ./osu/bw.R (ds.osu.bw bwShm.result); - impi = customPlot ./osu/impi.R (ds.osu.bw impi.result); - mtu = customPlot ./osu/mtu.R (ds.osu.bw mtu.result); - eager = customPlot ./osu/eager.R (ds.osu.bw eager.result); - }; - - # The figures used in the article contained in a directory per figure - article = with fig; linkTree "article-fig" { - "osu/latency" = osu.latency; - "osu/bw" = osu.bw; - "osu/mtu" = osu.mtu; - }; - - examples = with exp.examples; { - granularity = stdPlot ./examples/granularity.R [ granularity ]; - }; -} diff --git a/garlic/fig/nbody/granularity.R b/garlic/fig/nbody/granularity.R deleted file mode 100644 index 85ee0b4..0000000 --- a/garlic/fig/nbody/granularity.R +++ /dev/null @@ -1,62 +0,0 @@ -library(ggplot2) -library(dplyr, warn.conflicts = FALSE) -library(scales) -library(jsonlite) -library(viridis, warn.conflicts = FALSE) - -# Load the arguments (argv) -args = commandArgs(trailingOnly=TRUE) -if (length(args)>0) { input_file = args[1] } else { input_file = "input" } -if (length(args)>1) { output = args[2] } else { output = "?" } - -df = jsonlite::stream_in(file(input_file), verbose=FALSE) %>% - jsonlite::flatten() %>% - select(config.blocksize, config.gitBranch, config.particles, unit, time) %>% - rename(blocksize=config.blocksize, particles=config.particles, branch=config.gitBranch) %>% - - mutate(blocksize = as.factor(blocksize)) %>% - mutate(particles = as.factor(particles)) %>% - mutate(branch = as.factor(branch)) %>% - mutate(unit = as.factor(unit)) %>% - - group_by(unit) %>% - - mutate(median.time = median(time)) %>% - mutate(normalized.time = time / median.time - 1) %>% - mutate(log.median.time = log(median.time)) %>% - - ungroup() - -dpi = 300 -h = 5 -w = 5 - -# --------------------------------------------------------------------- - -p = ggplot(df, aes(x=blocksize, y=normalized.time, color=branch)) + - geom_boxplot() + - geom_hline(yintercept=c(-0.01, 0.01), linetype="dashed", color="red") + - facet_wrap(~ branch) + - theme_bw() + - labs(x="Blocksize", y="Normalized Time", title="NBody Granularity: Normalized Time", - subtitle=output) + - theme(plot.subtitle=element_text(size=8)) + - theme(legend.position="bottom") + - theme(legend.text = element_text(size=7)) - -ggsave("normalized.time.png", plot=p, width=w, height=h, dpi=dpi) -ggsave("normalized.time.pdf", plot=p, width=w, height=h, dpi=dpi) - -# --------------------------------------------------------------------- - -p = ggplot(df, aes(x=blocksize, y=time)) + - geom_boxplot() + - theme_bw() + - labs(x="Blocksize", y="Time (s)", title="NBody Granularity: Time", - subtitle=output) + - theme(plot.subtitle=element_text(size=8)) + - theme(legend.position="bottom") + - theme(legend.text = element_text(size=7)) - -ggsave("time.png", plot=p, width=w, height=h, dpi=dpi) -ggsave("time.pdf", plot=p, width=w, height=h, dpi=dpi) diff --git a/garlic/fig/nbody/numa.R b/garlic/fig/nbody/numa.R deleted file mode 100644 index b080648..0000000 --- a/garlic/fig/nbody/numa.R +++ /dev/null @@ -1,86 +0,0 @@ -library(ggplot2) -library(dplyr, warn.conflicts = FALSE) -library(scales) -library(jsonlite) -library(viridis, warn.conflicts = FALSE) -library(stringr) - -# Load the arguments (argv) -args = commandArgs(trailingOnly=TRUE) -if (length(args)>0) { input_file = args[1] } else { input_file = "input" } -if (length(args)>1) { output = args[2] } else { output = "?" } - -df = jsonlite::stream_in(file(input_file), verbose=FALSE) %>% - jsonlite::flatten() %>% - select(unit, - config.blocksize, - config.gitBranch, - config.attachToSocket, - config.interleaveMem, - config.nodes, - unit, - time) %>% - - rename(blocksize=config.blocksize, - gitBranch=config.gitBranch, - nodes=config.nodes, - attachToSocket=config.attachToSocket, - interleaveMem=config.interleaveMem) %>% - - # Remove the "garlic/" prefix from the gitBranch - mutate(branch = str_replace(gitBranch, "garlic/", "")) %>% - - mutate(blocksize = as.factor(blocksize)) %>% - mutate(branch = as.factor(branch)) %>% - mutate(attachToSocket = as.factor(attachToSocket)) %>% - mutate(interleaveMem = as.factor(interleaveMem)) %>% - mutate(unit = as.factor(unit)) %>% - - group_by(unit) %>% - - mutate(median.time = median(time)) %>% - mutate(normalized.time = time / median.time - 1) %>% - mutate(log.median.time = log(median.time)) %>% - - ungroup() - -branch = unique(df$branch) -nodes = unique(df$nodes) - -dpi = 300 -h = 5 -w = 8 - -# --------------------------------------------------------------------- - -p = ggplot(df, aes(x=blocksize, y=normalized.time, color=interleaveMem)) + - geom_boxplot() + - geom_hline(yintercept=c(-0.01, 0.01), linetype="dashed", color="red") + - theme_bw() + - facet_wrap(~ attachToSocket, labeller=label_both) + - labs(x="Blocksize", y="Normalized time", - title=sprintf("NBody NUMA (%s | %d Nodes): Normalized time", - branch, nodes), - subtitle=output) + - theme(plot.subtitle=element_text(size=8)) + - theme(legend.position="bottom") - -ggsave("normalized.time.png", plot=p, width=w, height=h, dpi=dpi) -ggsave("normalized.time.pdf", plot=p, width=w, height=h, dpi=dpi) - -# --------------------------------------------------------------------- - -p = ggplot(df, aes(x=blocksize, y=time, color=interleaveMem)) + - geom_boxplot() + - geom_line(aes(y=median.time)) + - theme_bw() + - facet_wrap(~ attachToSocket, labeller=label_both) + - labs(x="Blocksize", y="Time (s)", - title=sprintf("NBody NUMA (%s | %d Nodes): Time", - branch, nodes), - subtitle=output) + - theme(plot.subtitle=element_text(size=8)) + - theme(legend.position="bottom") - -ggsave("time.png", plot=p, width=w, height=h, dpi=dpi) -ggsave("time.pdf", plot=p, width=w, height=h, dpi=dpi) diff --git a/garlic/fig/nbody/old/baseline.R b/garlic/fig/nbody/old/baseline.R deleted file mode 100644 index 5509d8e..0000000 --- a/garlic/fig/nbody/old/baseline.R +++ /dev/null @@ -1,212 +0,0 @@ -library(ggplot2) -library(dplyr) -library(scales) -library(jsonlite) -library(egg) - -args=commandArgs(trailingOnly=TRUE) - -# Read the timetable from args[1] -input_file = "input.json" -if (length(args)>0) { input_file = args[1] } -if (length(args)>1) { output = args[2] } else { output = "?" } - -# Load the dataset in NDJSON format -dataset = jsonlite::stream_in(file(input_file)) %>% - jsonlite::flatten() - -particles = unique(dataset$config.particles) - -# We only need the nblocks and time -df = select(dataset, - config.nblocks, - config.hw.cpusPerSocket, - config.nodes, - config.blocksize, - config.particles, - config.gitBranch, - time) %>% - rename(nblocks=config.nblocks, - nodes=config.nodes, - blocksize=config.blocksize, - particles=config.particles, - gitBranch=config.gitBranch, - cpusPerSocket=config.hw.cpusPerSocket) - -df = df %>% mutate(blocksPerCpu = nblocks / cpusPerSocket) -df$nblocks = as.factor(df$nblocks) -df$nodesFactor = as.factor(df$nodes) -df$blocksPerCpuFactor = as.factor(df$blocksPerCpu) -df$blocksizeFactor = as.factor(df$blocksize) -df$particlesFactor = as.factor(df$particles) -df$gitBranch = as.factor(df$gitBranch) - -# Normalize the time by the median -D=group_by(df, nblocks, nodesFactor, gitBranch) %>% - mutate(tmedian = median(time)) %>% - mutate(tn = tmedian * nodes) %>% - mutate(tnorm = time / median(time) - 1) %>% - mutate(bad = max(ifelse(abs(tnorm) >= 0.01, 1, 0))) %>% - ungroup() %>% - group_by(nodesFactor, gitBranch) %>% - mutate(tmedian_min = min(tmedian)) %>% - ungroup() %>% - group_by(gitBranch) %>% - mutate(tmin_max = max(tmedian_min)) %>% - mutate(tideal = tmin_max / nodes) %>% - ungroup() - -D$bad = as.factor(D$bad) - -#D$bad = as.factor(ifelse(abs(D$tnorm) >= 0.01, 2, -# ifelse(abs(D$tnorm) >= 0.005, 1, 0))) - -bs_unique = unique(df$nblocks) -nbs=length(bs_unique) - -print(D) - -ppi=300 -h=7.5 -w=7.5 - -png("box.png", width=w*ppi, height=h*ppi, res=ppi) -# -# -# -# Create the plot with the normalized time vs nblocks -p = ggplot(data=D, aes(x=blocksPerCpuFactor, y=tnorm, color=bad)) + - - # Labels - labs(x="Blocks/CPU", y="Normalized time", - title=sprintf("Nbody normalized time. Particles=%d", particles), - subtitle=output) + - - - # Center the title - #theme(plot.title = element_text(hjust = 0.5)) + - - # Black and white mode (useful for printing) - #theme_bw() + - - # Add the maximum allowed error lines - geom_hline(yintercept=c(-0.01, 0.01), - linetype="dashed", color="gray") + - - # Draw boxplots - geom_boxplot(aes(fill=nodesFactor)) + - scale_color_manual(values=c("black", "brown")) + - facet_grid(gitBranch ~ .) + - - #scale_y_continuous(breaks = scales::pretty_breaks(n = 10)) + - - - #theme(legend.position = "none") - #theme(legend.position = c(0.85, 0.85)) - theme_bw()+ - theme(plot.subtitle=element_text(size=8)) - - - - -# Render the plot -print(p) -dev.off() - - -p1 = ggplot(D, aes(x=blocksizeFactor, y=time)) + - - labs(x="Blocksize", y="Time (s)", - title=sprintf("Nbody granularity. Particles=%d", particles), - subtitle=output) + - theme_bw() + - theme(plot.subtitle=element_text(size=8)) + - #theme(legend.position = c(0.5, 0.8)) + - - geom_line(aes(y=tmedian, - group=interaction(gitBranch, nodesFactor), - color=nodesFactor)) + - geom_point(aes(color=nodesFactor), size=3, shape=21) + - facet_grid(gitBranch ~ .) + - scale_shape_manual(values=c(21, 22)) + - scale_y_continuous(trans=log2_trans()) - -png("time-blocksize.png", width=w*ppi, height=h*ppi, res=ppi) -print(p1) -dev.off() - -p2 = ggplot(D, aes(x=blocksPerCpuFactor, y=time)) + - - labs(x="Blocks/CPU", y="Time (s)", - title=sprintf("Nbody granularity. Particles=%d", particles), - subtitle=output) + - theme_bw() + - theme(plot.subtitle=element_text(size=8)) + - - geom_line(aes(y=tmedian, - group=interaction(gitBranch, nodesFactor), - color=nodesFactor)) + - geom_point(aes(color=nodesFactor), size=3, shape=21) + - facet_grid(gitBranch ~ .) + - - scale_shape_manual(values=c(21, 22)) + - scale_y_continuous(trans=log2_trans()) - -png("time-blocks-per-cpu.png", width=w*ppi, height=h*ppi, res=ppi) -print(p2) -dev.off() - -#p = ggarrange(p1, p2, ncol=2) -#png("time-gra.png", width=2*w*ppi, height=h*ppi, res=ppi) -#print(p) -#dev.off() - - - -png("exp-space.png", width=w*ppi, height=h*ppi, res=ppi) -p = ggplot(data=df, aes(x=nodesFactor, y=particlesFactor)) + - labs(x="Nodes", y="Particles", title="Nbody: Experiment space") + - geom_line(aes(group=particles)) + - geom_point(aes(color=nodesFactor), size=3) + - facet_grid(gitBranch ~ .) + - theme_bw() -print(p) -dev.off() - - -png("gra-space.png", width=w*ppi, height=h*ppi, res=ppi) -p = ggplot(data=D, aes(x=nodesFactor, y=blocksPerCpuFactor)) + - labs(x="Nodes", y="Blocks/CPU", title="Nbody: Granularity space") + - geom_line(aes(group=nodesFactor)) + - geom_point(aes(color=nodesFactor), size=3) + - facet_grid(gitBranch ~ .) + - theme_bw() -print(p) -dev.off() - - -png("performance.png", width=w*ppi, height=h*ppi, res=ppi) -p = ggplot(D, aes(x=nodesFactor)) + - labs(x="Nodes", y="Time (s)", title="Nbody strong scaling") + - theme_bw() + - geom_line(aes(y=tmedian, - linetype=blocksPerCpuFactor, - group=interaction(gitBranch, blocksPerCpuFactor))) + - geom_line(aes(y=tideal, group=gitBranch), color="red") + - geom_point(aes(y=tmedian, color=nodesFactor), size=3) + - facet_grid(gitBranch ~ .) + - scale_shape_manual(values=c(21, 22)) + - scale_y_continuous(trans=log2_trans()) -print(p) -dev.off() - - -png("time-nodes.png", width=w*ppi, height=h*ppi, res=ppi) -p = ggplot(D, aes(x=nodesFactor)) + - labs(x="Nodes", y="Time * nodes (s)", title="Nbody strong scaling") + - theme_bw() + - geom_line(aes(y=tn, group=gitBranch)) + - facet_grid(gitBranch ~ .) + - scale_y_continuous(trans=log2_trans()) -print(p) -dev.off() diff --git a/garlic/fig/nbody/old/freeCpu.R b/garlic/fig/nbody/old/freeCpu.R deleted file mode 100644 index cf97106..0000000 --- a/garlic/fig/nbody/old/freeCpu.R +++ /dev/null @@ -1,112 +0,0 @@ -library(ggplot2) -library(dplyr) -library(scales) -library(jsonlite) - -args=commandArgs(trailingOnly=TRUE) - -# Read the timetable from args[1] -input_file = "input.json" -if (length(args)>0) { input_file = args[1] } -if (length(args)>1) { output = args[2] } else { output = "?" } - -# Load the dataset in NDJSON format -dataset = jsonlite::stream_in(file(input_file)) %>% - jsonlite::flatten() - -particles = unique(dataset$config.particles) - -# We only need the cpu bind, nblocks and time -df = select(dataset, config.freeCpu, config.nblocks, config.hw.cpusPerSocket, time) %>% - rename(nblocks=config.nblocks, - freeCpu=config.freeCpu, - cpusPerSocket=config.hw.cpusPerSocket) - -df = df %>% mutate(blocksPerCpu = nblocks / cpusPerSocket) - -df$freeCpu = as.factor(df$freeCpu) -df$nblocks = as.factor(df$nblocks) -df$blocksPerCpuFactor = as.factor(df$blocksPerCpu) - -# Split by malloc variant -D=df %>% group_by(freeCpu, nblocks) %>% - mutate(tnorm = time / median(time) - 1) - -bs_unique = unique(df$nblocks) -nbs=length(bs_unique) - -print(D) - -ppi=300 -h=5 -w=5 - -png("box.png", width=w*ppi, height=h*ppi, res=ppi) -# -# -# -# Create the plot with the normalized time vs nblocks -p = ggplot(data=D, aes(x=blocksPerCpuFactor, y=tnorm)) + - - # Labels - labs(x="Blocks/CPU", y="Normalized time", - title=sprintf("Nbody normalized time. Particles=%d", particles), - subtitle=output) + - - # Center the title - #theme(plot.title = element_text(hjust = 0.5)) + - - # Black and white mode (useful for printing) - #theme_bw() + - - # Add the maximum allowed error lines - geom_hline(yintercept=c(-0.01, 0.01), - linetype="dashed", color="red") + - - # Draw boxplots - geom_boxplot(aes(fill=freeCpu)) + - -# # Use log2 scale in x -# scale_x_continuous(trans=log2_trans(), -# breaks=bs_unique) + -# - scale_y_continuous(breaks = scales::pretty_breaks(n = 10)) + - - theme_bw() + - - theme(plot.subtitle=element_text(size=8)) + - - theme(legend.position = c(0.85, 0.85)) #+ - - # Place each variant group in one separate plot - #facet_wrap(~freeCpu) - - - -# Render the plot -print(p) - -## Save the png image -dev.off() -# -png("scatter.png", width=w*ppi, height=h*ppi, res=ppi) -# -## Create the plot with the normalized time vs nblocks -p = ggplot(D, aes(x=blocksPerCpuFactor, y=time, color=freeCpu)) + - - labs(x="Blocks/CPU", y="Time (s)", - title=sprintf("Nbody granularity. Particles=%d", particles), - subtitle=output) + - theme_bw() + - theme(plot.subtitle=element_text(size=8)) + - theme(legend.position = c(0.5, 0.88)) + - - geom_point(shape=21, size=3) + - #scale_x_continuous(trans=log2_trans()) + - scale_y_continuous(trans=log2_trans()) - -# Render the plot -print(p) - -# Save the png image -dev.off() diff --git a/garlic/fig/nbody/old/jemalloc.R b/garlic/fig/nbody/old/jemalloc.R deleted file mode 100644 index 37fc991..0000000 --- a/garlic/fig/nbody/old/jemalloc.R +++ /dev/null @@ -1,113 +0,0 @@ -library(ggplot2) -library(dplyr) -library(scales) -library(jsonlite) - -args=commandArgs(trailingOnly=TRUE) - -# Read the timetable from args[1] -input_file = "input.json" -if (length(args)>0) { input_file = args[1] } -if (length(args)>1) { output = args[2] } else { output = "?" } - -# Load the dataset in NDJSON format -dataset = jsonlite::stream_in(file(input_file)) %>% - jsonlite::flatten() - -particles = unique(dataset$config.particles) - -# We only need the cpu bind, nblocks and time -df = select(dataset, config.enableJemalloc, config.nblocks, config.hw.cpusPerSocket, time) %>% - rename(nblocks=config.nblocks, - jemalloc=config.enableJemalloc, - cpusPerSocket=config.hw.cpusPerSocket) - -df = df %>% mutate(blocksPerCpu = nblocks / cpusPerSocket) - -df$jemalloc = as.factor(df$jemalloc) -df$nblocks = as.factor(df$nblocks) -df$blocksPerCpuFactor = as.factor(df$blocksPerCpu) - -# Split by malloc variant -D=df %>% group_by(jemalloc, nblocks) %>% - mutate(tnorm = time / median(time) - 1) - # Add another column: blocksPerCpu (we assume one task per socket, using - # all CPUs) - -bs_unique = unique(df$nblocks) -nbs=length(bs_unique) - -print(D) - -ppi=300 -h=5 -w=5 - -png("box.png", width=w*ppi, height=h*ppi, res=ppi) -# -# -# -# Create the plot with the normalized time vs nblocks -p = ggplot(data=D, aes(x=nblocks, y=tnorm)) + - - # Labels - labs(x="Num blocks", y="Normalized time", - title=sprintf("Nbody normalized time. Particles=%d", particles), - subtitle=output) + - - # Center the title - #theme(plot.title = element_text(hjust = 0.5)) + - - # Black and white mode (useful for printing) - #theme_bw() + - - # Add the maximum allowed error lines - geom_hline(yintercept=c(-0.01, 0.01), - linetype="dashed", color="red") + - - # Draw boxplots - geom_boxplot(aes(fill=jemalloc)) + - -# # Use log2 scale in x -# scale_x_continuous(trans=log2_trans()) + -# - scale_y_continuous(breaks = scales::pretty_breaks(n = 10)) + - - theme_bw() + - - theme(plot.subtitle=element_text(size=8)) + - - theme(legend.position = c(0.85, 0.85)) #+ - - # Place each variant group in one separate plot - #facet_wrap(~jemalloc) - - - -# Render the plot -print(p) - -## Save the png image -dev.off() -# -png("scatter.png", width=w*ppi, height=h*ppi, res=ppi) -# -## Create the plot with the normalized time vs nblocks -p = ggplot(D, aes(x=blocksPerCpu, y=time, color=jemalloc)) + - - labs(x="Blocks/CPU", y="Time (s)", - title=sprintf("Nbody granularity. Particles=%d", particles), - subtitle=output) + - theme_bw() + - theme(plot.subtitle=element_text(size=8)) + - theme(legend.position = c(0.5, 0.88)) + - - geom_point(shape=21, size=3) + - scale_x_continuous(trans=log2_trans()) + - scale_y_continuous(trans=log2_trans()) - -# Render the plot -print(p) - -# Save the png image -dev.off() diff --git a/garlic/fig/nbody/old/scaling.R b/garlic/fig/nbody/old/scaling.R deleted file mode 100644 index 1d50a37..0000000 --- a/garlic/fig/nbody/old/scaling.R +++ /dev/null @@ -1,111 +0,0 @@ -library(ggplot2) -library(dplyr) -library(scales) -library(jsonlite) - -args=commandArgs(trailingOnly=TRUE) - -# Read the timetable from args[1] -input_file = "input.json" -if (length(args)>0) { input_file = args[1] } -if (length(args)>1) { output = args[2] } else { output = "?" } - -# Load the dataset in NDJSON format -dataset = jsonlite::stream_in(file(input_file)) %>% - jsonlite::flatten() - -particles = unique(dataset$config.particles) - -# We only need the nblocks and time -df = select(dataset, config.nblocks, config.hw.cpusPerSocket, time) %>% - rename(nblocks=config.nblocks, - cpusPerSocket=config.hw.cpusPerSocket) - -df = df %>% mutate(blocksPerCpu = nblocks / cpusPerSocket) -df$nblocks = as.factor(df$nblocks) -df$blocksPerCpuFactor = as.factor(df$blocksPerCpu) - -# Normalize the time by the median -D=group_by(df, nblocks) %>% - mutate(tnorm = time / median(time) - 1) %>% - mutate(bad = max(ifelse(abs(tnorm) >= 0.01, 1, 0))) - -D$bad = as.factor(D$bad) - -#D$bad = as.factor(ifelse(abs(D$tnorm) >= 0.01, 2, -# ifelse(abs(D$tnorm) >= 0.005, 1, 0))) - -bs_unique = unique(df$nblocks) -nbs=length(bs_unique) - -print(D) - -ppi=300 -h=5 -w=5 - -png("box.png", width=w*ppi, height=h*ppi, res=ppi) -# -# -# -# Create the plot with the normalized time vs nblocks -p = ggplot(data=D, aes(x=blocksPerCpuFactor, y=tnorm, color=bad)) + - - # Labels - labs(x="Blocks/CPU", y="Normalized time", - title=sprintf("Nbody normalized time. Particles=%d", particles), - subtitle=output) + - - - # Center the title - #theme(plot.title = element_text(hjust = 0.5)) + - - # Black and white mode (useful for printing) - #theme_bw() + - - # Add the maximum allowed error lines - geom_hline(yintercept=c(-0.01, 0.01), - linetype="dashed", color="gray") + - - # Draw boxplots - geom_boxplot() + - scale_color_manual(values=c("black", "brown")) + - - #scale_y_continuous(breaks = scales::pretty_breaks(n = 10)) + - - theme_bw() + - - theme(plot.subtitle=element_text(size=8)) + - theme(legend.position = "none") - #theme(legend.position = c(0.85, 0.85)) - - - - -# Render the plot -print(p) - -## Save the png image -dev.off() -# -png("scatter.png", width=w*ppi, height=h*ppi, res=ppi) -# -## Create the plot with the normalized time vs nblocks -p = ggplot(D, aes(x=blocksPerCpuFactor, y=time)) + - - labs(x="Blocks/CPU", y="Time (s)", - title=sprintf("Nbody granularity. Particles=%d", particles), - subtitle=output) + - theme_bw() + - theme(plot.subtitle=element_text(size=8)) + - theme(legend.position = c(0.5, 0.88)) + - - geom_point(shape=21, size=3) + - #scale_x_continuous(trans=log2_trans()) + - scale_y_continuous(trans=log2_trans()) - -# Render the plot -print(p) - -# Save the png image -dev.off() diff --git a/garlic/fig/nbody/ss.R b/garlic/fig/nbody/ss.R deleted file mode 100644 index 2ce9b2c..0000000 --- a/garlic/fig/nbody/ss.R +++ /dev/null @@ -1,66 +0,0 @@ -library(ggplot2) -library(dplyr, warn.conflicts = FALSE) -library(scales) -library(jsonlite) -library(viridis, warn.conflicts = FALSE) - -# Load the arguments (argv) -args = commandArgs(trailingOnly=TRUE) -if (length(args)>0) { input_file = args[1] } else { input_file = "input" } -if (length(args)>1) { output = args[2] } else { output = "?" } - -df = jsonlite::stream_in(file(input_file), verbose=FALSE) %>% - jsonlite::flatten() %>% - select(config.blocksize, config.gitBranch, config.nodes, unit, time) %>% - rename(nodes = config.nodes, blocksize=config.blocksize, branch=config.gitBranch) %>% - - mutate(time.nodes = time * nodes) %>% - - mutate(blocksize = as.factor(blocksize)) %>% - mutate(nodes = as.factor(nodes)) %>% - mutate(branch = as.factor(branch)) %>% - mutate(unit = as.factor(unit)) %>% - - group_by(unit) %>% - - mutate(median.time = median(time)) %>% - mutate(median.time.nodes = median(time.nodes)) %>% - mutate(normalized.time = time / median.time - 1) %>% - mutate(log.median.time = log(median.time)) %>% - - ungroup() - -dpi = 300 -h = 5 -w = 8 - -# --------------------------------------------------------------------- - -p = ggplot(df, aes(x=nodes, y=normalized.time, color=branch)) + - geom_boxplot() + - geom_hline(yintercept=c(-0.01, 0.01), linetype="dashed", color="red") + - facet_wrap(~ branch) + - theme_bw() + - labs(x="Nodes", y="Normalized time (s)", title="NBody Scaling: Normalized Time", - subtitle=output) + - theme(plot.subtitle=element_text(size=5)) + - theme(legend.position="bottom") + - theme(legend.text = element_text(size=7)) - -ggsave("normalized.time.png", plot=p, width=w, height=h, dpi=dpi) -ggsave("normalized.time.pdf", plot=p, width=w, height=h, dpi=dpi) - -# --------------------------------------------------------------------- - -p = ggplot(df, aes(x=nodes, y=time.nodes, color=branch)) + - geom_point(shape=21, size=3) + - geom_line(aes(y=median.time.nodes, group=branch)) + - theme_bw() + - labs(x="Nodes", y="Time * nodes (s)", title="NBody Scaling: Time * nodes", - subtitle=output) + - theme(plot.subtitle=element_text(size=5)) + - theme(legend.position="bottom") + - theme(legend.text = element_text(size=7)) - -ggsave("time.nodes.png", plot=p, width=w, height=h, dpi=dpi) -ggsave("time.nodes.pdf", plot=p, width=w, height=h, dpi=dpi) diff --git a/garlic/fig/osu/bw.R b/garlic/fig/osu/bw.R deleted file mode 100644 index 876519d..0000000 --- a/garlic/fig/osu/bw.R +++ /dev/null @@ -1,59 +0,0 @@ -library(ggplot2) -library(dplyr, warn.conflicts = FALSE) -library(scales) -library(jsonlite) -library(stringr) - -args=commandArgs(trailingOnly=TRUE) - -# Read the timetable from args[1] -input_file = "input.json" -if (length(args)>0) { input_file = args[1] } -if (length(args)>1) { output = args[2] } else { output = "?" } - -# Load the dataset in NDJSON format -dataset = jsonlite::stream_in(file(input_file), verbose=FALSE) %>% - jsonlite::flatten() - -# We only need the nblocks and time -df = select(dataset, config.unitName, config.nodes, config.ntasksPerNode, config.cpusPerTask, size, bw) %>% - rename(unitName=config.unitName) %>% - mutate(bw=bw / 1024.0) %>% - mutate(unitName=str_replace(unitName, "osu-bw-", "")) - -nodes = unique(df$config.nodes) -tasksPerNode = unique(df$config.ntasksPerNode) -cpusPerTask = unique(df$config.cpusPerTask) -df$unitName = as.factor(df$unitName) -df$sizeFactor = as.factor(df$size) - -df = group_by(df, unitName, sizeFactor) %>% - mutate(median.bw = median(bw)) %>% - ungroup() - -ppi=300 -h=3 -w=6 - -p = ggplot(data=df, aes(x=size, y=median.bw)) + - labs(x="Message size", y="Bandwidth (GB/s)", - subtitle=output) + - geom_line(aes(linetype=unitName)) + - geom_point(aes(shape=unitName), size=1.5) + - scale_shape_discrete(name = "MPI version") + - scale_linetype_discrete(name = "MPI version") + - geom_hline(yintercept=12.5, color="red") + - annotate("text", x=1, y=12.5 * .95, - label="Max: 12.5GB/s (100Gbps)", - hjust=0, vjust=1, size=3) + - scale_x_continuous(trans=log2_trans(), - labels=label_bytes("auto_binary"), - n.breaks = 12, - ) + - theme_bw() + - theme(plot.subtitle = element_text(size=8, family="mono")) + - theme(legend.justification = c(1,0), legend.position = c(0.99, 0.01)) + - theme(axis.text.x = element_text(angle=-45, hjust=0)) - -ggsave("median-lines.png", plot=p, width=w, height=h, dpi=ppi) -ggsave("median-lines.pdf", plot=p, width=w, height=h, dpi=ppi) diff --git a/garlic/fig/osu/eager.R b/garlic/fig/osu/eager.R deleted file mode 100644 index aa9e573..0000000 --- a/garlic/fig/osu/eager.R +++ /dev/null @@ -1,63 +0,0 @@ -library(ggplot2) -library(dplyr, warn.conflicts = FALSE) -library(scales) -library(jsonlite) - -args=commandArgs(trailingOnly=TRUE) - -# Read the timetable from args[1] -input_file = "input.json" -if (length(args)>0) { input_file = args[1] } -if (length(args)>1) { output = args[2] } else { output = "?" } - -# Load the dataset in NDJSON format -dataset = jsonlite::stream_in(file(input_file), verbose=FALSE) %>% - jsonlite::flatten() - -# We only need the nblocks and time -df = select(dataset, - config.unitName, - config.nodes, - config.ntasksPerNode, - config.cpusPerTask, - config.PSM2_MQ_EAGER_SDMA_SZ, - size, bw, config.iterations) %>% - rename(unitName=config.unitName, - iterations=config.iterations, - PSM2_MQ_EAGER_SDMA_SZ=config.PSM2_MQ_EAGER_SDMA_SZ) - -nodes = unique(df$config.nodes) -tasksPerNode = unique(df$config.ntasksPerNode) -cpusPerTask = unique(df$config.cpusPerTask) -df$unitName = as.factor(df$unitName) -df$sizeFactor = as.factor(df$size) -df$sizeKB = df$size / 1024 -df$PSM2_MQ_EAGER_SDMA_SZ.f = as.factor(df$PSM2_MQ_EAGER_SDMA_SZ) - -iterations = unique(df$iterations) - -df = group_by(df, unitName, sizeFactor) %>% - mutate(medianBw = median(bw)) %>% - ungroup() - -breaks = 10^(-10:10) -minor_breaks <- rep(1:9, 21)*(10^rep(-10:10, each=9)) - -ppi=150 -h=6 -w=8 - -p = ggplot(data=df, aes(x=sizeKB, y=bw)) + - labs(x="Message size (KB)", y="Bandwidth (MB/s)", - title=sprintf("OSU benchmark: osu_bw --iterations %d", iterations), - subtitle=output) + - geom_point(shape=21, size=3) + - geom_vline(aes(xintercept = PSM2_MQ_EAGER_SDMA_SZ/1024), color="blue") + - geom_vline(xintercept = 10, color="red") + - annotate("text", x = 10.2, y = 8.5e3, label = "MTU = 10KB", color="red", hjust=0) + - facet_wrap(vars(PSM2_MQ_EAGER_SDMA_SZ.f), nrow=3, labeller = "label_both") + - scale_x_continuous(breaks = unique(df$sizeKB), minor_breaks=NULL) + - theme_bw() - -ggsave("bw.png", plot=p, width=w, height=h, dpi=ppi) -ggsave("bw.pdf", plot=p, width=w, height=h, dpi=ppi) diff --git a/garlic/fig/osu/impi.R b/garlic/fig/osu/impi.R deleted file mode 100644 index c62a334..0000000 --- a/garlic/fig/osu/impi.R +++ /dev/null @@ -1,68 +0,0 @@ -library(ggplot2) -library(dplyr, warn.conflicts = FALSE) -library(scales) -library(jsonlite) - -args=commandArgs(trailingOnly=TRUE) - -# Read the timetable from args[1] -input_file = "input.json" -if (length(args)>0) { input_file = args[1] } -if (length(args)>1) { output = args[2] } else { output = "?" } - -# Load the dataset in NDJSON format -dataset = jsonlite::stream_in(file(input_file), verbose=FALSE) %>% - jsonlite::flatten() - -# We only need the nblocks and time -df = select(dataset, config.unitName, config.nodes, config.ntasksPerNode, config.cpusPerTask, config.threshold, size, bw) %>% - rename(unitName=config.unitName) %>% - rename(threshold=config.threshold) - -nodes = unique(df$config.nodes) -tasksPerNode = unique(df$config.ntasksPerNode) -cpusPerTask = unique(df$config.cpusPerTask) -df$unitName = as.factor(df$unitName) -df$sizeFactor = as.factor(df$size) -df$threshold = as.factor(df$threshold) - -df = group_by(df, unitName, sizeFactor) %>% - mutate(medianBw = median(bw)) %>% - ungroup() - -breaks = 10^(-10:10) -minor_breaks <- rep(1:9, 21)*(10^rep(-10:10, each=9)) - -p = ggplot(data=df, aes(x=size, y=bw)) + - labs(x="Size (bytes)", y="Bandwidth (MB/s)", - title=sprintf("OSU bandwidth benchmark: nodes=%d tasksPerNode=%d cpusPerTask=%d", - nodes, tasksPerNode, cpusPerTask), - subtitle=output) + - geom_boxplot(aes(color=threshold, group=interaction(threshold, sizeFactor))) + - scale_x_continuous(trans=log2_trans()) + - #scale_y_log10(breaks = breaks, minor_breaks = minor_breaks) + - theme_bw() + - theme(legend.position = c(0.8, 0.2)) - -ppi=300 -h=4 -w=8 -ggsave("boxplot.pdf", plot=p, width=w, height=h, dpi=ppi) -ggsave("boxplot.png", plot=p, width=w, height=h, dpi=ppi) - -p = ggplot(data=df, aes(x=size, y=medianBw)) + - labs(x="Size (bytes)", y="Bandwidth (MB/s)", - title=sprintf("OSU benchmark: osu_bw", - nodes, tasksPerNode, cpusPerTask), - subtitle=output) + - geom_line(aes(color=threshold, linetype=threshold)) + - geom_point(aes(color=threshold, shape=threshold)) + - geom_hline(yintercept = 100e3 / 8, color="red") + - annotate("text", x = 8, y = (100e3 / 8) * 0.95, label = "12.5GB/s (100Gb/s)") + - scale_x_continuous(trans=log2_trans()) + - #scale_y_log10(breaks = breaks, minor_breaks = minor_breaks) + - theme_bw() + - theme(legend.position = c(0.8, 0.2)) - -ggsave("median-lines.png", plot=p, width=w, height=h, dpi=ppi) -ggsave("median-lines.pdf", plot=p, width=w, height=h, dpi=ppi) diff --git a/garlic/fig/osu/latency.R b/garlic/fig/osu/latency.R deleted file mode 100644 index e116a73..0000000 --- a/garlic/fig/osu/latency.R +++ /dev/null @@ -1,77 +0,0 @@ -library(ggplot2) -library(dplyr, warn.conflicts = FALSE) -library(scales) -library(jsonlite) -library(stringr) - -args=commandArgs(trailingOnly=TRUE) - -# Read the timetable from args[1] -input_file = "input.json" -if (length(args)>0) { input_file = args[1] } -if (length(args)>1) { output = args[2] } else { output = "?" } - -# Load the dataset in NDJSON format -dataset = jsonlite::stream_in(file(input_file), verbose=FALSE) %>% - jsonlite::flatten() - -# We only need the nblocks and time -df = select(dataset, config.unitName, config.nodes, config.ntasksPerNode, config.cpusPerTask, size, latency) %>% - rename(unitName=config.unitName) %>% - mutate(unitName=str_replace(unitName, "osu-latency-", "")) - -nodes = unique(df$config.nodes) -tasksPerNode = unique(df$config.ntasksPerNode) -cpusPerTask = unique(df$config.cpusPerTask) -df$unitName = as.factor(df$unitName) -df$sizeFactor = as.factor(df$size) - -df = group_by(df, unitName, sizeFactor) %>% - mutate(medianLatency = median(latency)) %>% - ungroup() - -breaks = 10^(-10:10) -minor_breaks <- rep(1:9, 21)*(10^rep(-10:10, each=9)) - -ppi=300 -h=3 -w=6 - -p = ggplot(data=df, aes(x=size, y=medianLatency)) + - labs(x="Message size", y="Median latency (µs)", - #title=sprintf("OSU benchmark: osu_latency", nodes, tasksPerNode, cpusPerTask), - subtitle=output) + - geom_line(aes(linetype=unitName)) + - geom_point(aes(shape=unitName), size=2) + - scale_y_log10(breaks = breaks, minor_breaks = minor_breaks) + - scale_x_continuous(trans=log2_trans(), - labels=label_bytes("auto_binary"), - n.breaks = 12)+ - scale_shape_discrete(name = "MPI version") + - scale_linetype_discrete(name = "MPI version") + - theme_bw() + - theme(plot.subtitle = element_text(size=8, family="mono")) + - theme(legend.justification = c(0,1), legend.position = c(0.01, 0.99)) + - theme(axis.text.x = element_text(angle=-45, hjust=0)) - -ggsave("median-lines.png", plot=p, width=w, height=h, dpi=ppi) -ggsave("median-lines.pdf", plot=p, width=w, height=h, dpi=ppi) - -p = ggplot(data=df, aes(x=size, y=latency)) + - labs(x="Size (bytes)", y="Latency (us)", - #title=sprintf("OSU benchmark: osu_latency", nodes, tasksPerNode, cpusPerTask), - subtitle=output) + - geom_line(aes(y=medianLatency, linetype=unitName, group=unitName)) + - geom_point(aes(shape=unitName), size=2) + - scale_y_log10(breaks = breaks, minor_breaks = minor_breaks) + - scale_x_continuous(trans=log2_trans(), - labels=label_bytes("auto_binary"), - breaks=unique(df$size), - minor_breaks=NULL) + - theme_bw() + - theme(plot.subtitle = element_text(color="gray50")) + - theme(axis.text.x = element_text(angle=-45, hjust=0)) + - theme(legend.position = c(0.2, 0.8)) - -ggsave("latency.png", plot=p, width=w, height=h, dpi=ppi) -ggsave("latency.pdf", plot=p, width=w, height=h, dpi=ppi) diff --git a/garlic/fig/osu/mtu.R b/garlic/fig/osu/mtu.R deleted file mode 100644 index 09e2f63..0000000 --- a/garlic/fig/osu/mtu.R +++ /dev/null @@ -1,69 +0,0 @@ -library(ggplot2) -library(dplyr, warn.conflicts = FALSE) -library(scales) -library(jsonlite) - -args=commandArgs(trailingOnly=TRUE) - -# Read the timetable from args[1] -input_file = "input.json" -if (length(args)>0) { input_file = args[1] } -if (length(args)>1) { output = args[2] } else { output = "?" } - -# Load the dataset in NDJSON format -dataset = jsonlite::stream_in(file(input_file), verbose=FALSE) %>% - jsonlite::flatten() - -# We only need the nblocks and time -df = select(dataset, - config.unitName, - config.nodes, - config.ntasksPerNode, - config.cpusPerTask, - config.PSM2_MQ_EAGER_SDMA_SZ, - config.PSM2_MTU, - size, bw, config.iterations) %>% - rename(unitName=config.unitName, - iterations=config.iterations, - PSM2_MQ_EAGER_SDMA_SZ.val=config.PSM2_MQ_EAGER_SDMA_SZ, - PSM2_MTU.val=config.PSM2_MTU) %>% - mutate(bw = bw / 1000.0) - -nodes = unique(df$config.nodes) -tasksPerNode = unique(df$config.ntasksPerNode) -cpusPerTask = unique(df$config.cpusPerTask) -df$unitName = as.factor(df$unitName) -df$sizeFactor = as.factor(df$size) -df$sizeKB = df$size / 1024 -df$PSM2_MQ_EAGER_SDMA_SZ = as.factor(df$PSM2_MQ_EAGER_SDMA_SZ.val) -df$PSM2_MTU = as.factor(df$PSM2_MTU.val) - -iterations = unique(df$iterations) - -df = group_by(df, unitName, sizeFactor) %>% - mutate(median.bw = median(bw)) %>% - ungroup() - -breaks = 10^(-10:10) -minor_breaks <- rep(1:9, 21)*(10^rep(-10:10, each=9)) - -ppi=300 -h=3 -w=6 - -p = ggplot(data=df, aes(x=sizeKB, y=bw)) + - geom_vline(aes(xintercept = PSM2_MQ_EAGER_SDMA_SZ.val/1024), color="blue") + - geom_vline(aes(xintercept = PSM2_MTU.val/1024), color="red") + - labs(x="Message size (KiB)", y="Bandwidth (GB/s)", - #title=sprintf("OSU benchmark: osu_bw --iterations %d", iterations), - subtitle=output) + - geom_point(shape=21, size=2) + - #annotate("text", x = 10.2, y = 8.5e3, label = "MTU = 10KB", color="red", hjust=0) + - facet_wrap(vars(PSM2_MTU), nrow=3, labeller = "label_both") + - #scale_x_continuous(breaks = unique(df$sizeKB), minor_breaks=NULL) + - scale_x_continuous(n.breaks = 12) + - theme_bw() + - theme(plot.subtitle = element_text(size=8, family="mono")) - -ggsave("bw.png", plot=p, width=w, height=h, dpi=ppi) -ggsave("bw.pdf", plot=p, width=w, height=h, dpi=ppi) diff --git a/garlic/fig/saiph/granularity.R b/garlic/fig/saiph/granularity.R deleted file mode 100644 index 66bd7c6..0000000 --- a/garlic/fig/saiph/granularity.R +++ /dev/null @@ -1,95 +0,0 @@ -library(ggplot2) -library(dplyr, warn.conflicts = FALSE) -library(scales) -library(jsonlite) -library(viridis, warn.conflicts = FALSE) -library(stringr) - -args = commandArgs(trailingOnly=TRUE) - -# Set the input dataset if given in argv[1], or use "input" as default -if (length(args)>0) { input_file = args[1] } else { input_file = "input" } -if (length(args)>1) { output = args[2] } else { output = "?" } - -df = jsonlite::stream_in(file(input_file), verbose=FALSE) %>% - - jsonlite::flatten() %>% - - select(unit, - config.nodes, - config.nblx, - config.nbly, - config.nblz, - config.gitBranch, - config.blocksPerCpu, - config.sizex, - time, - total_time) %>% - - rename(nodes=config.nodes, - nblx=config.nblx, - nbly=config.nbly, - nblz=config.nblz, - gitBranch=config.gitBranch, - blocksPerCpu=config.blocksPerCpu, - sizex=config.sizex) %>% - - # Remove the "garlic/" prefix from the gitBranch - mutate(branch = str_replace(gitBranch, "garlic/", "")) %>% - - # Computations before converting to factor - mutate(time.nodes = time * nodes) %>% - - # Convert to factors - mutate(unit = as.factor(unit)) %>% - mutate(nodes = as.factor(nodes)) %>% - mutate(gitBranch = as.factor(gitBranch)) %>% - mutate(nblx = as.factor(nblx)) %>% - mutate(nbly = as.factor(nbly)) %>% - mutate(nblz = as.factor(nblz)) %>% - mutate(sizex = as.factor(sizex)) %>% - mutate(unit = as.factor(unit)) %>% - - # Compute median times - group_by(unit) %>% - mutate(median.time = median(time)) %>% - mutate(median.time.nodes = median(time.nodes)) %>% - mutate(normalized.time = time / median.time - 1) %>% - mutate(log.median.time = log(median.time)) %>% - ungroup() - -dpi = 300 -h = 5 -w = 8 - -maintitle = "Saiph-Heat3D granularity" - -# --------------------------------------------------------------------- - -p = ggplot(df, aes(x=nbly, y=normalized.time, fill=sizex)) + - geom_boxplot() + - geom_hline(yintercept=c(-0.01, 0.01), linetype="dashed", color="red") + - theme_bw() + - facet_wrap(branch ~ .) + - labs(y="Normalized time", - title=sprintf("%s: normalized time", maintitle), - subtitle=output) + - theme(plot.subtitle=element_text(size=8)) - -ggsave("normalized.time.png", plot=p, width=w, height=h, dpi=dpi) -ggsave("normalized.time.pdf", plot=p, width=w, height=h, dpi=dpi) - -# --------------------------------------------------------------------- - -p = ggplot(df, aes(x=blocksPerCpu, y=time, color=sizex)) + - geom_point(shape=21, size=3) + - geom_line(aes(y=median.time, group=sizex)) + - theme_bw() + - scale_x_continuous(trans=log2_trans()) + - labs(y="Time (s)", - title=sprintf("%s: time", maintitle), - subtitle=output) + - theme(plot.subtitle=element_text(size=8)) - -ggsave("time.png", plot=p, width=w, height=h, dpi=dpi) -ggsave("time.pdf", plot=p, width=w, height=h, dpi=dpi) diff --git a/garlic/fig/saiph/ss.R b/garlic/fig/saiph/ss.R deleted file mode 100644 index 6498f30..0000000 --- a/garlic/fig/saiph/ss.R +++ /dev/null @@ -1,110 +0,0 @@ -library(ggplot2) -library(dplyr, warn.conflicts = FALSE) -library(scales) -library(jsonlite) -library(viridis, warn.conflicts = FALSE) -library(stringr) - -args = commandArgs(trailingOnly=TRUE) - -# Set the input dataset if given in argv[1], or use "input" as default -if (length(args)>0) { input_file = args[1] } else { input_file = "input" } -if (length(args)>1) { output = args[2] } else { output = "?" } - -df = jsonlite::stream_in(file(input_file), verbose=FALSE) %>% - - jsonlite::flatten() %>% - - select(unit, - config.nodes, - config.nblx, - config.nbly, - config.nblz, - config.gitBranch, - config.blocksPerCpu, - config.sizex, - time, - total_time) %>% - - rename(nodes=config.nodes, - nblx=config.nblx, - nbly=config.nbly, - nblz=config.nblz, - gitBranch=config.gitBranch, - blocksPerCpu=config.blocksPerCpu, - sizex=config.sizex) %>% - - # Remove the "garlic/" prefix from the gitBranch - mutate(branch = str_replace(gitBranch, "garlic/", "")) %>% - - # Computations before converting to factor - mutate(time.nodes = time * nodes) %>% - - # Convert to factors - mutate(unit = as.factor(unit)) %>% - mutate(nodes = as.factor(nodes)) %>% - mutate(gitBranch = as.factor(gitBranch)) %>% - mutate(nblx = as.factor(nblx)) %>% - mutate(nbly = as.factor(nbly)) %>% - mutate(nblz = as.factor(nblz)) %>% - mutate(sizex = as.factor(sizex)) %>% - mutate(unit = as.factor(unit)) %>% - - # Compute median times - group_by(unit) %>% - mutate(median.time = median(time)) %>% - mutate(median.time.nodes = median(time.nodes)) %>% - mutate(normalized.time = time / median.time - 1) %>% - mutate(log.median.time = log(median.time)) %>% - ungroup() - -dpi = 300 -h = 5 -w = 8 - -maintitle = "Saiph-Heat3D strong scaling" - -# --------------------------------------------------------------------- - -p = ggplot(df, aes(x=nodes, y=normalized.time, fill=sizex)) + - geom_boxplot() + - geom_hline(yintercept=c(-0.01, 0.01), linetype="dashed", color="red") + - theme_bw() + - facet_wrap(branch ~ .) + - labs(x="nodes", y="Normalized time", - title=sprintf("%s: normalized time", maintitle), - subtitle=output) + - theme(plot.subtitle=element_text(size=8)) - -ggsave("normalized.time.png", plot=p, width=w, height=h, dpi=dpi) -ggsave("normalized.time.pdf", plot=p, width=w, height=h, dpi=dpi) - -# --------------------------------------------------------------------- - -p = ggplot(df, aes(x=nodes, y=time, color=sizex)) + - geom_point(shape=21, size=3) + - geom_line(aes(y=median.time, group=sizex)) + - theme_bw() + -# facet_wrap(branch ~ .) + - labs(x="nodes", y="Time (s)", - title=sprintf("%s: time", maintitle), - subtitle=output) + - theme(plot.subtitle=element_text(size=8)) - -ggsave("time.png", plot=p, width=w, height=h, dpi=dpi) -ggsave("time.pdf", plot=p, width=w, height=h, dpi=dpi) - -# --------------------------------------------------------------------- - -p = ggplot(df, aes(x=nodes, y=time.nodes, color=sizex)) + - geom_point(shape=21, size=3) + - geom_line(aes(y=median.time.nodes, group=sizex)) + - theme_bw() + - #facet_wrap(branch ~ .) + - labs(x="nodes", y="Time * nodes (s)", - title=sprintf("%s: time * nodes", maintitle), - subtitle=output) + - theme(plot.subtitle=element_text(size=8)) - -ggsave("time.nodes.png", plot=p, width=w, height=h, dpi=dpi) -ggsave("time.nodes.pdf", plot=p, width=w, height=h, dpi=dpi) diff --git a/garlic/garlicd/default.nix b/garlic/garlicd/default.nix deleted file mode 100644 index b34efdf..0000000 --- a/garlic/garlicd/default.nix +++ /dev/null @@ -1,28 +0,0 @@ -{ - stdenv -, nix -, garlicTool -}: - -let - extraPath = "${garlicTool}:${nix}"; -in - stdenv.mkDerivation { - name = "garlicd"; - preferLocalBuild = true; - - phases = [ "unpackPhase" "installPhase" ]; - - src = ./garlicd; - - unpackPhase = '' - cp $src garlicd - ''; - - installPhase = '' - substituteInPlace garlicd \ - --replace @extraPath@ ${extraPath} - mkdir -p $out/bin - cp -a garlicd $out/bin - ''; - } diff --git a/garlic/garlicd/garlicd b/garlic/garlicd/garlicd deleted file mode 100755 index 17e3f9d..0000000 --- a/garlic/garlicd/garlicd +++ /dev/null @@ -1,105 +0,0 @@ -#!/bin/bash - -set -e - -emsg() { - >&2 echo "garlicd: $@" -} - -msg() { - emsg "$@" - if [ ! -z "$st" ]; then echo "garlicd: $@" >>"$st"; fi -} - -if [ ! -z "$1" ]; then - >&2 echo "usage: garlicd" - exit 1 -fi - -export PATH="@extraPath@:$PATH" - -garlic_sandbox=$(nix show-config |\ - grep extra-sandbox-paths |\ - grep -o '/garlic=[^ ]*' || true) - -if [ -z "$garlic_sandbox" ]; then - emsg "Missing extra-sandbox-paths /garlic mountpoint" - emsg "Check the ~/.config/nix/nix.conf file" - exit 1 -fi - -mountdir_rel=$(echo "$garlic_sandbox" | sed 's@^/garlic=@@g') -mountdir=$(readlink -f "$mountdir_rel") -run="$mountdir/run" -completed="$mountdir/completed" -wipe="$mountdir/wipe" -st="$mountdir/st" - -handle_bad_signal() { - msg "cleaning FIFO pipes" - rm -f "$run" "$completed" "$wipe" - exit 1 -} - -trap handle_bad_signal SIGINT - -for fifo in "$run" "$completed" "$wipe"; do - if [ ! -e "$fifo" ]; then - mkfifo "$fifo" - # FIXME: Use more resctrictive permissions - chmod 666 "$fifo" - fi -done - -while true; do - emsg "--- Waiting for experiments ---" - tre=$(head -1 "$run") - - # Truncate state file - printf "" > "$st" - - msg "Attempting to run: $tre" - msg "Copying files to MN4..." - # It fails if the user doesn't have nix-store, but is already copied - # with the post build hook - nix copy --to ssh://mn1 $tre || true - - set +e - - msg "Launching the experiment..." - garlic -R "$tre" 2>>"$st" - if [ "$?" != 0 ]; then - echo ERROR > "$completed" - msg "Failed to run the experiment :-(" - continue - fi - - msg "Fetching results..." - garlic -FKv "$tre" 2>>"$st" - - if [ "$?" != 0 ]; then - echo ERROR > "$completed" - msg "The experiment failed :-(" - continue - fi - - set -e - - msg "Signalling nix build..." - echo -n "$tre" >> "$completed" - - msg "Waiting for nix to finish the build..." - - tre2=$(head -1 "$wipe") - if [ "$tre" != "$tre2" ]; then - msg "error: trebuchet mismatch" - exit 1 - fi - - msg "Removing temporal files..." - garlic -D "$tre" 2>>"$st" - - echo -n "$tre" >> "$completed" - - msg "Execution completed :-)" -done diff --git a/garlic/index.nix b/garlic/index.nix deleted file mode 100644 index ed8e2d8..0000000 --- a/garlic/index.nix +++ /dev/null @@ -1,138 +0,0 @@ -{ - super -, self -, bsc -, callPackage -}: - -{ - develop = let - commonPackages = with self; [ - coreutils htop procps-ng vim which strace - tmux gdb kakoune universal-ctags bashInteractive - glibcLocales ncurses git screen curl boost - # Add more nixpkgs packages here... - ]; - bscPackages = with bsc; [ - slurm clangOmpss2 icc mcxx perf tampi impi vtk paraver - # Add more bsc packages here... - ]; - packages = commonPackages ++ bscPackages; - in - bsc.garlic.stages.exec rec { - nextStage = bsc.garlic.stages.isolate { - nextStage = bsc.garlic.unsafeDevelop.override { - extraInputs = packages; - }; - nixPrefix = bsc.garlic.targetMachine.config.nixPrefix; - extraMounts = [ "/tmp:$TMPDIR" ]; - }; - nixPrefix = bsc.garlic.targetMachine.config.nixPrefix; - # This hack uploads all dependencies to MN4 - pre = let - nixPrefix = bsc.garlic.targetMachine.config.nixPrefix; - stageProgram = bsc.garlicTools.stageProgram; - in - '' - # Hack to upload this to MN4: @upload-to-mn@ - - # Create a link to the develop script - ln -fs ${nixPrefix}${stageProgram nextStage} .nix-develop - ''; - post = "\n"; - }; - - unsafeDevelop = callPackage ./develop/default.nix { }; - - # Configuration for the machines - machines = callPackage ./machines.nix { }; - - report = callPackage ./report.nix { - fig = bsc.garlic.fig; - }; - - sedReport = callPackage ./sedReport.nix { - fig = bsc.garlic.fig; - }; - - bundleReport = callPackage ./bundleReport.nix { - fig = bsc.garlic.fig; - }; - - reportTar = callPackage ./reportTar.nix { - fig = bsc.garlic.fig; - }; - - # Use the configuration for the following target machine - targetMachine = bsc.garlic.machines.mn4; - - # Load some helper functions to generate app variants - - stdexp = callPackage ./stdexp.nix { - inherit (bsc.garlic) targetMachine stages pp; - }; - - # Execution stages - stages = { - sbatch = callPackage ./stages/sbatch.nix { }; - srun = callPackage ./stages/srun.nix { }; - baywatch = callPackage ./stages/baywatch.nix { }; - control = callPackage ./stages/control.nix { }; - exec = callPackage ./stages/exec.nix { }; - script = callPackage ./stages/script.nix { }; - extrae = callPackage ./stages/extrae.nix { }; - valgrind = callPackage ./stages/valgrind.nix { }; - perf = callPackage ./stages/perf.nix { }; - isolate = callPackage ./stages/isolate { }; - runexp = callPackage ./stages/runexp { }; - trebuchet = callPackage ./stages/trebuchet.nix { }; - strace = callPackage ./stages/strace.nix { }; - unit = callPackage ./stages/unit.nix { }; - experiment = callPackage ./stages/experiment.nix { }; - }; - - # Tests (move to bsc ?) - mpptest = callPackage ./mpptest { }; - - ppong = callPackage ./ppong { - mpi = bsc.mpi; - }; - - hist = callPackage ./pp/hist { }; - - tool = callPackage ./sh/default.nix { - sshHost = "mn1"; - }; - - # Post processing - pp = { - store = callPackage ./pp/store.nix { }; - rPlot = callPackage ./pp/rplot.nix { }; - mergeDatasets = callPackage ./pp/merge.nix { }; - }; - - garlicd = callPackage ./garlicd/default.nix { - garlicTool = bsc.garlic.tool; - }; - - # Apps for Garlic - apps = callPackage ./apps/index.nix { - inherit self super bsc; - }; - - # Experiments - exp = callPackage ./exp/index.nix { - inherit self super bsc; - }; - - # Dataset generators from resultTree - ds = callPackage ./ds/index.nix { - inherit self super bsc; - }; - - # Figures generated from the datasets - fig = callPackage ./fig/index.nix { - inherit self super bsc; - }; - -} diff --git a/garlic/machines.nix b/garlic/machines.nix deleted file mode 100644 index e2bdc54..0000000 --- a/garlic/machines.nix +++ /dev/null @@ -1,63 +0,0 @@ -{ - stdenv -}: - -{ - # MareNostrum 4 configuration - mn4 = { - config = { - clusterName = "mn4"; - sshHost = "mn1"; - nixPrefix = "/gpfs/projects/bsc15/nix"; - march = "skylake-avx512"; - mtune = "skylake-avx512"; - hw = { - # The rev attribute attemps to capture the hardware - # configuration of the machine, and will rebuild all experiments - # if it changed. It only holds the timestamp at the current - # time, representing the HW configuration at that moment. - rev = 1614253003; - - # Node and socket details - cpusPerNode = 48; - cpusPerSocket = 24; - socketsPerNode = 2; - cachelineBytes = 64; - - # Cache sizes - cacheSizeKB = { - L1d = 32; - L1i = 32; - L2 = 1024; - L3 = 33792; - }; - }; - }; - - # Experimental naming convention for the FS - fs = rec { - topology = { - gpfs = { - projects = "/gpfs/projects/bsc15/garlic"; - scratch = "/gpfs/scratch/bsc15/bsc15557/garlic"; - }; - - ssd = { - # Beware to expand the temp dir at execution time - temp = "$TMPDIR"; - }; - }; - - shared = with topology; { - fast = gpfs.scratch; - reliable = gpfs.projects; - }; - - local = { - temp = topology.ssd.temp; - }; - }; - - # TODO: Add the specific details for SLURM and the interconection here - }; -} diff --git a/garlic/mpptest/default.nix b/garlic/mpptest/default.nix deleted file mode 100644 index c142667..0000000 --- a/garlic/mpptest/default.nix +++ /dev/null @@ -1,16 +0,0 @@ -{ - stdenv -, mpi -, fetchurl -}: - -stdenv.mkDerivation { - name = "mpptest"; - - src = fetchurl { - url = "http://ftp.mcs.anl.gov/pub/mpi/tools/perftest.tar.gz"; - sha256 = "11i22lq3pch3pvmhnbsgxzd8ap4yvpvlhy2f7k8x3krdwjhl0jvl"; - }; - - buildInputs = [ mpi ]; -} diff --git a/garlic/pp/hist/default.nix b/garlic/pp/hist/default.nix deleted file mode 100644 index 4a3d464..0000000 --- a/garlic/pp/hist/default.nix +++ /dev/null @@ -1,25 +0,0 @@ -{ - stdenv -, ministat -}: - -stdenv.mkDerivation { - name = "hist"; - preferLocalBuild = true; - src = ./.; - - dontBuild = true; - dontConfigure = true; - - inherit ministat; - - patchPhase = '' - substituteAllInPlace hist.sh - ''; - - installPhase = '' - mkdir -p $out/bin - cp hist.sh $out/bin/hist - chmod +x $out/bin/hist - ''; -} diff --git a/garlic/pp/hist/hist.sh b/garlic/pp/hist/hist.sh deleted file mode 100755 index f3363b4..0000000 --- a/garlic/pp/hist/hist.sh +++ /dev/null @@ -1,79 +0,0 @@ -#!/bin/bash - -# Use it either reading from stdin or by specifing -# multiple files as arguments - -# xeon07$ hist stdout.log -# x -# +------------------------------------------------------------------------+ -# | x | -# | x | -# | x | -# | x | -# | x | -# | xxx | -# | xxx | -# | xxxxx | -# | xxxxxx | -# | xxxxxxx x| -# ||________M_A___________| | -# +------------------------------------------------------------------------+ -# N Min Max Median Avg Stddev -# x 30 3.585183 3.763913 3.591559 3.5973344 0.031719975 -# -# Other ministat options can be passed as well. The -S option splits the results -# in multiple plots. - - -usage() { echo "Usage: hist [-hSAns] [-c confidence] [-w width] files..." 1>&2; exit 1; } - -function stat_files() { - tmpfiles=() - sedcmd="" - - for file in ${files[@]}; do - tmp=$(mktemp) - awk '/^time /{print $2}' "$file" > "$tmp" - sedcmd+="s:$tmp:$file:g;" - tmpfiles+=($tmp) - done - - if [ $split == 1 ]; then - for f in "${tmpfiles[@]}"; do - ministat $ministat_opt $f | sed -e "$sedcmd" - done - else - ministat $ministat_opt ${tmpfiles[@]} | sed -e "$sedcmd" - fi - - rm ${tmpfiles[@]} -} - -split=0 -ministat_opt="-w72" - -while getopts "hSAnsc:w:" o; do - case "${o}" in - S) split=1 ;; - c) ministat_opt+=" -c $OPTARG" ;; - w) ministat_opt+=" -w $OPTARG" ;; - A) ministat_opt+=" -$o" ;; - n) ministat_opt+=" -$o" ;; - s) ministat_opt+=" -$o" ;; - *) usage ;; - esac -done - -shift $((OPTIND-1)) - -ministat=@ministat@/bin -#ministat=/nix/store/sh9b484bnhkajxnblpwix7fhbkid6365-ministat-20150715-1/bin - -export PATH="$PATH:$ministat" - -files=("$@") -if [[ -z "${files[@]}" ]]; then - awk '/^time /{print $2}' | ministat $ministat_opt -else - stat_files -fi diff --git a/garlic/pp/merge.nix b/garlic/pp/merge.nix deleted file mode 100644 index 03caaea..0000000 --- a/garlic/pp/merge.nix +++ /dev/null @@ -1,24 +0,0 @@ -{ - stdenv -, lib -}: - -datasets: - -with lib; - -stdenv.mkDerivation { - name = "merged-dataset"; - preferLocalBuild = true; - phases = [ "installPhase" ]; - inherit datasets; - installPhase = '' - mkdir -p $out - n=1 - for d in $datasets; do - ln -s $d $out/$n - let n=n+1 - cat $d/dataset >> $out/dataset - done - ''; -} diff --git a/garlic/pp/rplot.nix b/garlic/pp/rplot.nix deleted file mode 100644 index df154da..0000000 --- a/garlic/pp/rplot.nix +++ /dev/null @@ -1,165 +0,0 @@ -{ - stdenv -, lib -, rWrapper -, rPackages -, fontconfig -, dejavu_fonts -, liberation_ttf -, noto-fonts -, makeFontsConf -, makeFontsCache -, jq -, fetchFromGitHub -, writeText -, runCommand -, glibcLocales -}: - -{ -# The two results to be compared - dataset -, script -, extraRPackages ? [] -}: - -with lib; - -let - scalesPatched = with rPackages; buildRPackage { - name = "scales"; - src = fetchFromGitHub { - owner = "mikmart"; - repo = "scales"; - #ref = "label-bytes"; - rev = "fa7d91c765b6b5d2f682c7c22e0478d96c2ea76c"; - sha256 = "10dsyxp9pxzdmg04xpnrxqhc4qfhbkr3jhx8whfr7z27wgfrr1n3"; - }; - propagatedBuildInputs = [ farver labeling lifecycle munsell R6 RColorBrewer viridisLite ]; - nativeBuildInputs = [ farver labeling lifecycle munsell R6 RColorBrewer viridisLite ]; - }; - - customR = rWrapper.override { - packages = with rPackages; [ scalesPatched tidyverse viridis egg - Cairo extrafont ] ++ extraRPackages; - }; - - myFonts = [ - dejavu_fonts - #noto-fonts - #liberation_ttf - ]; - - cacheConf = - let - cache = makeFontsCache { fontDirectories = myFonts; }; - in - writeText "fc-00-nixos-cache.conf" '' - - - - - ${concatStringsSep "\n" (map (font: "${font}") myFonts)} - ${optionalString (stdenv.hostPlatform == stdenv.buildPlatform) '' - - ${cache} - ''} - - ''; - - # default fonts configuration file - # priority 52 - defaultFontsConf = - let genDefault = fonts: name: - optionalString (fonts != []) '' - - ${name} - - ${concatStringsSep "" - (map (font: '' - ${font} - '') fonts)} - - - ''; - in - writeText "fc-52-nixos-default-fonts.conf" '' - - - - - ${genDefault [ "DejaVu Sans" ] "sans-serif"} - ${genDefault [ "DejaVu Serif" ] "serif"} - ${genDefault [ "DejaVu Sans Mono" ] "monospace"} - ${genDefault [ "Noto Color Emoji"] "emoji"} - - ''; - - fontConfPath = - let - fixedConf = runCommand "fonts-fixed.conf" { - preferLocalBuild = true; - } '' - head --lines=-2 ${fontconfig.out}/etc/fonts/fonts.conf >> $out - - cat >> $out << 'EOF' - - conf.d - EOF - - tail -2 ${fontconfig.out}/etc/fonts/fonts.conf >> $out - ''; - in - runCommand "fontconfig-conf" { - preferLocalBuild = true; - } '' - dst=$out/etc/fonts/conf.d - mkdir -p $dst - # fonts.conf - ln -s ${fixedConf} $dst/../fonts.conf - - # fontconfig default config files - ln -s ${fontconfig.out}/etc/fonts/conf.d/*.conf \ - $dst/ - - # 00-nixos-cache.conf - ln -s ${cacheConf} $dst/00-nixos-cache.conf - - # 52-nixos-default-fonts.conf - ln -s ${defaultFontsConf} $dst/52-nixos-default-fonts.conf - ''; - -in stdenv.mkDerivation { - name = "plot"; - buildInputs = [ customR jq fontconfig glibcLocales ]; - preferLocalBuild = true; - dontPatchShebangs = true; - phases = [ "installPhase" ]; - - installPhase = '' - export FONTCONFIG_PATH=${fontConfPath}/etc/fonts/ - export LANG=en_US.UTF-8 - - mkdir -p $out - cd $out - dataset=$(readlink -f ${dataset}/dataset) - - ln -s $dataset input - Rscript --vanilla ${script} "$dataset" "$out" - - # HACK: replace the \minus for a \hyphen to keep the file paths intact, so - # they can be copied to the terminal directly. The StandardEncoding is not - # working (AdobeStd.enc). - find "$out" -name '*.pdf' | xargs -l1 sed -i 's.45/minus.45/hyphen.g' - - if [ "''${dataset##*.}" == gz ]; then - gunzip --stdout $dataset - else - cat $dataset - fi | jq -c .total_time |\ - awk '{s+=$1} END {printf "%f\n", s/60}' > total_job_time_minutes - ''; -} diff --git a/garlic/pp/store.nix b/garlic/pp/store.nix deleted file mode 100644 index 6005efb..0000000 --- a/garlic/pp/store.nix +++ /dev/null @@ -1,89 +0,0 @@ -{ - stdenv -}: - -{ - trebuchet, - experiment -}: - -with builtins; - -let - experimentName = baseNameOf (experiment); - trebuchetName = baseNameOf (trebuchet); -in - stdenv.mkDerivation { - name = "resultTree"; - preferLocalBuild = true; - - phases = [ "installPhase" ]; - - installPhase = '' - echo "resultTree: searching for garlicd daemon..." - if [ -e /garlic/run ]; then - echo "resultTree: asking the daemon to run and fetch the experiment" - - echo ${trebuchet} >> /garlic/run - echo "resultTree: waiting for experiment results..." - stdbuf -o 0 tail -f /garlic/st & - stpid=$! - res=$(cat /garlic/completed) - - kill -TERM $stpid - - if [ "$res" == "ERROR" ]; then - echo "resultTree: the experiment failed" - exit 1 - fi - - if [ "$res" != "${trebuchet}" ]; then - echo "resultTree: unknown trebuchet received" - exit 1 - fi - else - echo "resultTree: garlicd not detected: /garlic/run not found" - echo "resultTree: assuming results are already in /garlic" - fi - - echo "resultTree: attempting to copy the results from /garlic ..." - - exp=/garlic/cache/${experimentName} - - if [ ! -e "$exp" ]; then - echo "resultTree: $exp: not found" - echo "resultTree: run the experiment and fetch the results running" - echo "resultTree: the following command from the nix-shell" - echo - echo -e "\e[30;48;5;2mgarlic -RFv ${trebuchet}\e[0m" - echo - echo "resultTree: see garlic(1) for more details." - echo "resultTree: cannot continue building $out, aborting" - exit 1 - fi - - echo "resultTree: copying results from /garlic into the nix store..." - - mkdir -p $out - cp -aL $exp $out/ - ln -s ${trebuchet} $out/trebuchet - ln -s ${experiment} $out/experiment - - - if [ -e /garlic/run ]; then - echo "resultTree: removing temp files..." - echo ${trebuchet} >> /garlic/wipe - echo "resultTree: waiting confimation from daemon..." - cat /garlic/completed > /dev/null - else - echo "resultTree: garlicd not detected: /garlic/run not found" - echo "resultTree: ignoring temp files" - fi - - echo "resultTree: successfully copied into the nix store" - - echo " experiment: ${experiment}" - echo " trebuchet: ${trebuchet}" - echo " resultTree: $out" - ''; - } diff --git a/garlic/report.nix b/garlic/report.nix deleted file mode 100644 index 6d7dc46..0000000 --- a/garlic/report.nix +++ /dev/null @@ -1,24 +0,0 @@ -{ - stdenv -, fig -, writeText -, busybox -, jq -, texlive -, sedReport -}: -let - sedCmd = (import sedReport) fig; -in - stdenv.mkDerivation { - name = "report.pdf"; - src = ./report; - buildInputs = [ jq texlive.combined.scheme-basic ]; - buildPhase = '' - ${sedCmd} - make - ''; - installPhase = '' - cp report.pdf $out - ''; - } diff --git a/garlic/report/Makefile b/garlic/report/Makefile deleted file mode 100644 index 81ae94d..0000000 --- a/garlic/report/Makefile +++ /dev/null @@ -1,4 +0,0 @@ -all: report.tex - pdflatex report.tex -o report.pdf - # Run again to fix figure references - pdflatex report.tex -o report.pdf diff --git a/garlic/report/report.tex b/garlic/report/report.tex deleted file mode 100644 index f56c1c9..0000000 --- a/garlic/report/report.tex +++ /dev/null @@ -1,31 +0,0 @@ -\documentclass{article} -\usepackage{graphicx} - -\begin{document} - -\title{Example of Nix + \LaTeX{}} -\author{Rodrigo Arias Mallo} - -\maketitle - -\section{Nbody} -The nbody program has been executed with varying block sizes while the execution -time $t$ is measured, as shown in the figure \ref{fig:nbody.test}. -% -\begin{figure}[h] - \centering - \includegraphics[width=0.45\textwidth]{@fig.nbody.small@/scatter.png} - \includegraphics[width=0.45\textwidth]{@fig.nbody.small@/box.png} - \caption{Nbody times with varying block size} - \label{fig:nbody.test} -\end{figure} -% -The normalized time $\hat t$ is computed with the median time $t_m$ using $ \hat -t = t / t_{m} - 1 $. It can be observed that the normalized times exceed the -maximum allowed interval in most cases, except with the largest block sizes. - -Once the experiment \texttt{exp.nbody.test} changes, the hash of the experiment -program will change, therefore the plot will be updated and, lastly, this -report. - -\end{document} diff --git a/garlic/reportTar.nix b/garlic/reportTar.nix deleted file mode 100644 index c2b274b..0000000 --- a/garlic/reportTar.nix +++ /dev/null @@ -1,28 +0,0 @@ -{ - stdenv -, fig -, writeText -, busybox -, jq -, texlive -, bundleReport -}: -let - - genCmd = (import bundleReport) fig; -in - stdenv.mkDerivation { - name = "report.tar.gz"; - src = ./report; - buildInputs = [ jq texlive.combined.scheme-basic ]; - buildPhase = '' - ${genCmd} - ls -ltR - cat report.tex - make - ''; - installPhase = '' - cd .. - tar -czf $out report - ''; - } diff --git a/garlic/sedReport.nix b/garlic/sedReport.nix deleted file mode 100644 index b776681..0000000 --- a/garlic/sedReport.nix +++ /dev/null @@ -1,19 +0,0 @@ -{ - stdenv -, fig -}: -stdenv.mkDerivation { - name = "sedReport"; - src = ./report; - buildPhase = '' - grep -o '@[^ @]*@' report.tex | sed 's/@//g' | sort -u > list - - echo "fig:" > fun.nix - echo "'''" >> fun.nix - sed 's:\(^.*\)$:sed -i "s;@\1@;''${\1};g" report.tex:g' list >> fun.nix - echo "'''" >> fun.nix - ''; - installPhase = '' - cp fun.nix $out - ''; -} diff --git a/garlic/sh/default.nix b/garlic/sh/default.nix deleted file mode 100644 index 27d34d1..0000000 --- a/garlic/sh/default.nix +++ /dev/null @@ -1,41 +0,0 @@ -{ - stdenv -, garlicTools -, sshHost -, rsync -, openssh -, nix -, jq -, ncurses -}: - -with garlicTools; - -let - garlicPrefix = "/mnt/garlic"; -in - stdenv.mkDerivation { - name = "garlic-tool"; - preferLocalBuild = true; - - buildInputs = [ rsync openssh nix jq ncurses ]; - phases = [ "unpackPhase" "installPhase" ]; - - src = ./.; - - inherit garlicPrefix sshHost; - - installPhase = '' - substituteAllInPlace garlic - substituteInPlace garlic \ - --replace @PATH@ $PATH - mkdir -p $out/bin - cp garlic $out/bin - chmod +x $out/bin/garlic - mkdir -p $out/share/man/man1 - cp garlic.1 $out/share/man/man1 - - patchShebangs garlic-* - cp garlic-* $out/bin - ''; - } diff --git a/garlic/sh/fix-figure-subtitle.sh b/garlic/sh/fix-figure-subtitle.sh deleted file mode 100755 index a98614b..0000000 --- a/garlic/sh/fix-figure-subtitle.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/sh - -if grep -q 'output = args[2]' "$1"; then exit 0; fi - -sed '/length(args)>0/aif (length(args)>1) { output = args[2] } else { output = "?" }' -i "$1" -sed '/jsonlite::flatten/,$s/input_file/output/g' -i "$1" diff --git a/garlic/sh/garlic b/garlic/sh/garlic deleted file mode 100755 index df3e33f..0000000 --- a/garlic/sh/garlic +++ /dev/null @@ -1,298 +0,0 @@ -#!/bin/bash -e - -garlicPrefix=@garlicPrefix@ -sshHost=@sshHost@ -PATH=@PATH@ - -usage() { echo "Usage: garlic [-RFwv] trebuchet" 1>&2; exit 1; } - -msg() { - >&2 echo "garlic: $@" -} - -findClosure() { - what=$1 - from=$2 - mexp=$(nix-store -qR "$from" | grep -E -- "$what") - n=$(echo "$mexp" | awk 'BEGIN { count=0 } NF { count++ } END { print count }') - if [ $n -eq 0 ]; then - >&2 echo "$exp: $what not found" - exit 1 - fi - if [ $n -gt 1 ]; then - >&2 echo "$exp: multiple $what found" - exit 1 - fi - echo "$mexp" -} - -findExperiment() { - grep -o -- "/nix/store/.*-experiment" "$1" -} - -findOutputDir() { - garlic_sandbox=$(nix show-config |\ - grep extra-sandbox-paths |\ - grep -o '/garlic=[^ ]*' || true) - - if [ -z "$garlic_sandbox" ]; then - >&2 echo "Missing extra-sandbox-paths /garlic mountpoint" - >&2 echo "Check the ~/.config/nix/nix.conf file" - exit 1 - fi - - mountdir_rel=$(echo "$garlic_sandbox" | sed 's@^/garlic=@@g') - mountdir=$(readlink -f "$mountdir_rel") - - echo "$mountdir/cache" -} - -drvFromOutput() { - nix-store -q --deriver $1 -} - -checkTrebuchet() { - if [ ! -e "$trebuchet" ]; then - >&2 echo "$trebuchet: not found" - exit 1 - fi - - if [ ! -f "$trebuchet" ]; then - >&2 echo "$trebuchet: not a file" - exit 1 - fi - - # FIXME: We need a better way to determine a trebuchet - if [ -z "$(grep "This trebuchet launches" $trebuchet)" ]; then - >&2 echo "$trebuchet: not a trebuchet" - exit 1 - fi - - return 0 -} - -checkExperiment() { - if [ ! -e "$experiment" ]; then - >&2 echo "$experiment: not found" - exit 1 - fi - - if [ ! -f "$experiment" ]; then - >&2 echo "$experiment: not a file" - exit 1 - fi - - # FIXME: We need a better way to determine a experiment - if [ -z "$(grep "This is an experiment" $experiment)" ]; then - >&2 echo "$experiment: not an experiment" - exit 1 - fi - - return 0 -} - -checkMountpoint() { - if [ ! -e "$garlicPrefix/garlic.control" ]; then - >&2 echo "error: missing $garlicPrefix/garlic.control" - >&2 echo "Is the mountpoint enabled?" - exit 1 - fi -} - -status_line() { - unithash="$1" - name="$2" - status="$3" - - red=$(tput -T ansi setaf 1) - green=$(tput -T ansi setaf 2) - yellow=$(tput -T ansi setaf 3) - color_reset=$(tput -T ansi sgr0) - - case $status in - ok) - color_st="$green" - ;; - run*) - color_st="$yellow" - ;; - exit*) - color_st="$red" - ;; - *) - color_st="" - ;; - esac - - if [ $verbose ]; then - >&2 printf "garlic: %s %s%-9s%s %s\n" \ - "$unithash" "$color_st" "$status" "$color_reset" "$name" - fi -} - -do_fetch() { - expName=$(basename $experiment) - user=$(ssh -G "$sshHost" | awk '/^user /{print $2}') - exp=$garlicPrefix/$user/out/$expName - - if [ ! -e "$exp" ]; then - echo "missing experiment: $exp" - exit 1 - fi - - unitNameList=$(grep '^/nix/store/.*-unit$' $experiment |\ - sort -u |\ - sed 's@^/nix/store/@@') - - cwd=$(pwd) - - repeat=1 - bad=0 - while [ 1 ]; do - repeat=0 - test $verbose && msg "Checking units $(date --rfc-3339=seconds)..." - - declare -A unit_names - - for unit in $unitNameList; do - - unit_hash="${unit%-unit}" - unit_status="?" - unit_name="?" - - if [ -e "$exp/$unit" ]; then - st_file="$exp/$unit/status" - conf_json="$exp/$unit/garlic_config.json" - done_file="$exp/$unit/done" - - if [ -z "${unit_names[$unit_hash]}" ]; then - if [ -e "$conf_json" ]; then - unit_names+=([$unit_hash]=$(jq -r .unitName "$conf_json")) - unit_name="${unit_names[$unit_hash]}" - fi - else - unit_name="${unit_names[$unit_hash]}" - fi - - if [ -e "$st_file" ]; then - unit_status=$(cat "$st_file") - fi - fi - - status_line "$unit_hash" "$unit_name" "$unit_status" - - if [ ! -e "$done_file" ]; then - repeat=1 - elif [ "$unit_status" != "ok" ]; then - bad=1 - fi - done - - if [ $repeat -eq 0 ]; then - break - else - test $verbose && msg "" - fi - - if [ $waitResults -eq 1 ]; then - #echo "waiting 3 seconds to try again" - sleep 3 - else - break - fi - done - - if [ $repeat -eq 1 ]; then - #>&2 echo "$exp: execution incomplete" - exit 1 - fi - - if [ $bad -eq 1 ]; then - msg "Some units failed, aborting" - exit 1 - fi - - cd "$cwd" - - test $verbose && msg "execution complete, fetching results" - - mkdir -p "$outputDir" - - rsync -vrt --copy-links \ - --include='*/*/garlic_config.json' \ - --include='*/*/std*.log' \ - --include='*/*/*/std*.log' \ - --include='*/*/*/.garlic' \ - --include='*/*/*/.garlic/**' \ - --exclude='*/*/*/*' \ - "$exp" "$outputDir" - - if [ ! $enableKeep ]; then - nix-build -E "(with import ./default.nix; \ - garlic.pp.store { \ - trebuchet = (import \"$trebuchetDrv\" ); \ - experiment = (import \"$experimentDrv\"); \ - })" - - rm -rf "$outputDir/$expName" - fi -} - -do_run() { - - >&2 $trebuchet -} - -do_delete() { - expName=$(basename $experiment) - rm -rf $outputDir/$expName -} - -waitResults=1 -verbose= -operation= -target= -enableRun= -enableFetch= -enableKeep= -enableDelete= - -while getopts "vwRFKD" o; do - case "${o}" in - R) enableRun=1 ;; - F) enableFetch=1 ;; - K) enableKeep=1 ;; - D) enableDelete=1 ;; - w) waitResults=0 ;; - v) verbose=1 ;; - *) usage ;; - esac -done -shift $((OPTIND-1)) -trebuchet="$1" - -if [ -z "$enableRun" -a -z "$enableFetch" -a -z "$enableDelete" ]; then - >&2 echo "missing operation" - usage -fi - -if [ -z "$trebuchet" ]; then - >&2 echo "missing experiment" - usage -fi - -checkMountpoint - -checkTrebuchet $trebuchet - -outputDir=$(findOutputDir) - -experiment=$(findExperiment "$trebuchet") -checkExperiment $experiment - -trebuchetDrv=$(drvFromOutput $trebuchet) -experimentDrv=$(drvFromOutput $experiment) - -if [ $enableRun ]; then do_run; fi -if [ $enableFetch ]; then do_fetch; fi -if [ $enableDelete ]; then do_delete; fi diff --git a/garlic/sh/garlic-add-copyright b/garlic/sh/garlic-add-copyright deleted file mode 100755 index 089aafe..0000000 --- a/garlic/sh/garlic-add-copyright +++ /dev/null @@ -1,49 +0,0 @@ -#!/bin/bash -e - -if [ -z "$1" ]; then - cat << 'EOF' -Usage: garlic-add-copyright files... - -This tool prepends the content of the copyright file to the list of given files. -The word 'copyright' is used to determine if a file already has a copyright -notice or not. - -Example: - - Given the following HEADER file: - - $ cat HEADER - /* - * This file is part of NBody and is licensed under the terms contained - * in the LICENSE file. - * - * Copyright (C) 2021 Barcelona Supercomputing Center (BSC) - */ - - It can be prepended to all files ending in .c or .h with: - - $ garlic-add-copyright HEADER $(find * -type f | grep -Ei '\.(c|h)$') - -EOF - exit 1 -fi - -header_file="$1" -shift - -if ! grep -qi copyright "$header_file"; then - >&2 echo "The header file '$header_file' doesn't contain the word 'copyright'" - exit 1 -fi - -for f in "${@}"; do - if grep -qi copyright "$f"; then - echo "$f: Contains copyright word, skipping" - continue - fi - - tmp_fn="$f.copyright-being-added" - - cat "$header_file" "$f" > "$tmp_fn" - mv "$tmp_fn" "$f" -done diff --git a/garlic/sh/garlic-git-table b/garlic/sh/garlic-git-table deleted file mode 100755 index 58f4049..0000000 --- a/garlic/sh/garlic-git-table +++ /dev/null @@ -1,27 +0,0 @@ -#!/bin/sh - -progname="$(basename $0)" - -if [ -z "$1" ]; then - cat >&2 < - -Finds all garlic/* branches and their current commit of the given -repository and builds the gitTable to be used in nix derivations. - -Example: - garlic-git-table ssh://git@bscpm03.bsc.es/garlic/apps/heat.git -EOF - exit 1 -fi - -echo '{' -echo " # Auto-generated with $progname on $(date --rfc-3339=date) for repo:" -echo " # $1" -echo -git ls-remote $1 'garlic/*' |\ - sed 's@refs/heads/@@' |\ - awk '{printf "\"%s\" = \"%s\";\n", $2, $1}' |\ - column -t -o ' ' |\ - sed 's/^/ /' -echo '}' diff --git a/garlic/sh/garlic-propagate-commit b/garlic/sh/garlic-propagate-commit deleted file mode 100755 index 04617e1..0000000 --- a/garlic/sh/garlic-propagate-commit +++ /dev/null @@ -1,63 +0,0 @@ -#!/bin/bash -e - -function printHelp() -{ - >&2 echo "Usage: garlic-propagate-commit " - >&2 echo - cat >&2 </dev/null | sed 's/^..//'` == $1 ]]; then - return 0 - else - return 1 - fi -} - - -if [ $# -lt 1 ]; then - printHelp - exit 1 -fi - -# Obtain all the tracked branches -branches=(`git branch | sed 's/^..//'`) -currentBranch=`git rev-parse --abbrev-ref HEAD` - -# Make sure that the commit SHA exists -commit=$1 -if branchContainsCommit $currentBranch $commit; then - echo "Commit $commit exists in current branch, proceeding..." -else - echo "Error: Commit $commit does not exist in the current branch" - exit 1 -fi - -# Distribute the commit for all tracked branches -for branch in ${branches[@]}; -do - if [[ $branch != $currentBranch ]]; then - echo "Trying to add commit $commit to branch $branch" - if branchContainsCommit $branch $commit; then - echo "Branch $branch already contains commit $commit, skipping" - else - git checkout $branch - git cherry-pick $commit - git push - fi - fi -done - -# Return to the original branch -git checkout $currentBranch diff --git a/garlic/sh/garlic-query b/garlic/sh/garlic-query deleted file mode 100755 index 6b0c2de..0000000 --- a/garlic/sh/garlic-query +++ /dev/null @@ -1,102 +0,0 @@ -#!/bin/bash - -function find_garlic_conf() { - grep -o '^cp /nix/store/[^ ]*-garlic_config.json' "$1" | sed 's/^cp //g' -} - -function show_units() { - exp=$1 - - units=$(grep '^/nix/store/.*-unit$' $exp) - - nunits=$(echo "$units" | wc -l) - echo " Experiment: $exp" - echo " Units: $nunits" - echo - echo " Unit file Name" - - for unit in $units; do - gconf=$(find_garlic_conf $unit) - unitName=$(jq -r .unitName "$gconf") - - printf " %s %s %s %s\n" "$unit" "$present" "$unitName" - done -} - -function query_tre() { - tre=$1 - exp=$(grep "^# */nix/store/[^ ]*-experiment$" "$tre" | sed 's/# *//g') - - echo - echo " Trebuchet: $tre" - show_units $exp - echo -} - -function query_exp() { - exp=$1 - - echo - show_units "$exp" - echo -} - -function query_unit() { - unit=$1 - - stages=$(grep '^# */nix/store/.*$' $unit | sed 's/^# */ /g') - gconf=$(find_garlic_conf $unit) - unitName=$(jq -r .unitName "$gconf") - - echo - echo " Unit: $unit" - echo " Name: $unitName" - echo " Stages:" - echo - echo "$stages" - echo - echo " Config: $gconf" - echo - jq . "$gconf" -} - -function query_result() { - tree=$1 - - tre=$(readlink -f $tree/trebuchet) - exp=$(readlink -f $tree/experiment) - - echo - echo " Result tree: $tree" - echo " Trebuchet: $tre" - show_units $exp - echo -} - -element=$1 - -if [ "$1" == "--help" -o -z "$1" ]; then - cat < - -The path may be a trebuchet, experiment, unit or resultTree. -EOF - exit 1 -fi - -# Try prepending the nix store -if [ ! -e $element ]; then - element=/nix/store/$element* -fi - -element=$(readlink -f $element) - -case "$element" in - *-trebuchet) query_tre $element ;; - *-experiment) query_exp $element ;; - *-unit) query_unit $element ;; - *-resultTree) query_result $element ;; - *) echo "unknown: $element"; exit 1 ;; -esac diff --git a/garlic/sh/garlic.1 b/garlic/sh/garlic.1 deleted file mode 100644 index 86915d8..0000000 --- a/garlic/sh/garlic.1 +++ /dev/null @@ -1,61 +0,0 @@ -.\" The following commands are required for all man pages. -.Dd Nov 5, 2020 -.Dt garlic 1 -.Os Linux -.Sh NAME -.Nm garlic -.Nd Garlic benchmark tool -.Sh SYNOPSIS -.Nm garlic -.Op Fl RFvw -.Ar trebuchet -.Sh DESCRIPTION -.Nm -is a program to handle tasks related with the experiments of the Garlic -benchmark. The -.Ar trebuchet -argument is a path to a valid trebuchet stage script. The -specified operations are executed sequentially and at -least one must be selected from: -.Bl -tag -width Ds -compact -.Pp -.It Fl R -launches the -.Ar experiment using the trebuchet. -.Pp -.It Fl F -waits until the -.Ar experiment -is completed and then fetches the results -into the nix store. -.El -.Pp -Additionally, the following options are available: -.Bl -tag -width Ds -compact -.Pp -.It Fl v -be more verbose. -.Pp -.It Fl w -don't wait for the complete results when fetching; fails if they are not -ready. -.El -.\" This next command is for sections 1, 6, 7, and 8 only. -.\" .Sh ENVIRONMENT -.\" .Sh FILES -.Sh EXIT STATUS -.Ex -std -.\" .Sh EXAMPLES -.\" This next command is for sections 1, 4, 6, 7, 8, and 9 only -.\" (fprintf/stderr type diagnostics). -.\" .Sh DIAGNOSTICS -.\" .Sh COMPATIBILITY -.\" This next command is for sections 2, 3, 4, and 9 only -.\" (settings of the errno variable). -.\" .Sh ERRORS -.\" .Sh SEE ALSO -.\" .Sh STANDARDS -.\" .Sh HISTORY -.\" .Sh AUTHORS -.\" .Sh CAVEATS -.\" .Sh BUGS diff --git a/garlic/shell.nix b/garlic/shell.nix deleted file mode 100644 index 9a38076..0000000 --- a/garlic/shell.nix +++ /dev/null @@ -1,29 +0,0 @@ -{ pkgs ? import ./. }: - -with pkgs; -with bsc; - -mkShell { - name = "garlic-shell"; - - buildInputs = - # Packages from garlic - (with garlic; [ tool garlicd ]) ++ - # Packages from bsc - [ groff paraver icc nix openssh git cn6 nix-diff clangOmpss2 gdb ]; - - # inputsFrom to get build dependencies - - shellHook = '' - alias l="ls -l --color=auto -v" - alias ll="ls -l --color=auto -v" - alias lh="ls -hAl --color=auto -v" - alias ls="ls --color=auto -v" - alias ..="cd .." - - export LANG=C - export SHELL=${bash}/bin/bash - - echo Welcome to the garlic shell - ''; -} diff --git a/garlic/stages/baywatch.nix b/garlic/stages/baywatch.nix deleted file mode 100644 index 2b72f4d..0000000 --- a/garlic/stages/baywatch.nix +++ /dev/null @@ -1,26 +0,0 @@ -{ - stdenv -, garlicTools -}: -{ - nextStage -}: - -with garlicTools; - -stdenv.mkDerivation rec { - name = "baywatch"; - phases = [ "installPhase" ]; - preferLocalBuild = true; - dontPatchShebangs = true; - installPhase = '' - cat > $out <<'EOF' - #!/bin/sh -e - - ${stageProgram nextStage} - echo $? >> .srun.rc.$SLURM_PROCID - - EOF - chmod +x $out - ''; -} diff --git a/garlic/stages/control.nix b/garlic/stages/control.nix deleted file mode 100644 index 3e04485..0000000 --- a/garlic/stages/control.nix +++ /dev/null @@ -1,52 +0,0 @@ -{ - stdenv -, garlicTools -}: - -{ - nextStage -, loops ? 30 -}: - -with garlicTools; - -stdenv.mkDerivation { - name = "control"; - preferLocalBuild = true; - phases = [ "installPhase" ]; - dontPatchShebangs = true; - installPhase = '' - cat > $out <<"EOF" - #!/bin/sh -e - - function badexit() { - errcode=$? - if [ $errcode != 0 ]; then - printf "exit %d\n" $errcode > "$basedir/status" - echo "exiting with $errcode" - fi - - echo 1 > "$basedir/done" - exit $errcode - } - - trap badexit EXIT - - basedir=$(pwd) - loops=${toString loops} - for n in $(seq 1 $loops); do - export GARLIC_RUN="$n" - echo "run $n/$loops" > status - mkdir "$n" - cd "$n" - mkdir .garlic - date +%s > .garlic/total_time_start - ${stageProgram nextStage} - date +%s > .garlic/total_time_end - cd .. - done - echo "ok" > status - EOF - chmod +x $out - ''; -} diff --git a/garlic/stages/exec.nix b/garlic/stages/exec.nix deleted file mode 100644 index 8717041..0000000 --- a/garlic/stages/exec.nix +++ /dev/null @@ -1,42 +0,0 @@ -{ - stdenv -, garlicTools -}: - -{ - nextStage -, env ? "" -, pre ? "" -, argv ? [] -, post ? "" -, nixPrefix ? "" -, program ? null -}: - -with builtins; -with garlicTools; - -let - argvString = concatStringsSep " " (map (e: toString e) argv); - execMethod = if (post == "") then "exec " else ""; - programPath = if (program != null) then program else (stageProgram nextStage); -in -stdenv.mkDerivation { - name = "exec"; - preferLocalBuild = true; - phases = [ "installPhase" ]; - installPhase = '' - cat > $out <<'EOF' - #!/bin/sh -e - ${env} - - ${pre} - - ${execMethod}${nixPrefix}${programPath} ${argvString} - - ${post} - - EOF - chmod +x $out - ''; -} diff --git a/garlic/stages/experiment.nix b/garlic/stages/experiment.nix deleted file mode 100644 index 19c0e45..0000000 --- a/garlic/stages/experiment.nix +++ /dev/null @@ -1,60 +0,0 @@ -{ - stdenv -, lib -, garlicTools -}: - -{ - units -}: - -with lib; -with garlicTools; - -let - unitsString = builtins.concatStringsSep "\n" - (map (x: "${stageProgram x}") units); - - unitsLinks = builtins.concatStringsSep "\n" - (map (x: "ln -s ../${baseNameOf x} ${baseNameOf x}") units); -in -stdenv.mkDerivation { - name = "experiment"; - phases = [ "installPhase" ]; - preferLocalBuild = true; - dontPatchShebangs = true; - inherit units; - - isExperiment = true; - - installPhase = '' - cat > $out << EOF - #!/bin/sh - - if [ -z "\$GARLIC_OUT" ]; then - >&2 echo "experiment: GARLIC_OUT not defined, aborting" - exit 1 - fi - - cd "\$GARLIC_OUT" - - export GARLIC_EXPERIMENT=$(basename $out) - - if [ -e "\$GARLIC_EXPERIMENT" ]; then - >&2 echo "experiment: skipping, directory exists: \$GARLIC_EXPERIMENT" - exit 0 - fi - - mkdir -p "\$GARLIC_EXPERIMENT" - - cd "\$GARLIC_EXPERIMENT" - ${unitsLinks} - - >&2 echo "experiment: running \$GARLIC_EXPERIMENT" - - # This is an experiment formed by the following units: - ${unitsString} - EOF - chmod +x $out - ''; -} diff --git a/garlic/stages/extrae.nix b/garlic/stages/extrae.nix deleted file mode 100644 index dabb31e..0000000 --- a/garlic/stages/extrae.nix +++ /dev/null @@ -1,34 +0,0 @@ -{ - stdenv -, garlicTools -}: - -{ - nextStage -, configFile -, traceLib -, extrae -}: - -with garlicTools; - -let - program = stageProgram nextStage; -in - stdenv.mkDerivation { - name = "extrae"; - phases = [ "installPhase" ]; - preferLocalBuild = true; - dontPatchShebangs = true; - installPhase = '' - cat > $out <&2 echo Running isolate stage1 -#>&2 echo PATH=$PATH - -if [ -e /nix ]; then - >&2 echo "/nix found, aborting" - exit 1 -fi - -nixhome="@nixPrefix@/nix" -shell="@busybox@/bin/sh" -nixjoin="@nixPrefix@@nixtools@/bin/nix-join" - - -env=( - PATH="@nixPrefix@@busybox@/bin:@busybox@/bin:@extraPath@" - $(env | grep ^SLURM || true) - $(env | grep ^PMI || true) - $(env | grep ^GARLIC || true) - $(env | grep ^USER || true) - $(env | grep ^TMPDIR || true) - $(env | grep '^TERM=' || true) - HOME="/homeless-shelter" -) - -mounts=( - #-m @nixPrefix@ - #FIXME: Use only the strictly neccesary from /etc - -m /original-etc:/etc - # The /etc/hosts file is a symlink to this etc/ - -m /.statelite/tmpfs/etc - -m /sys - -m /dev - -m /proc - # nscd cache: doesn't exist (?) - #-m /var/run/nscd - # Needed for munge auth - -m /var/run/munge - # FIXME: We should only need nix and the output path - -m /gpfs/projects/bsc15 - -m /gpfs/scratch/bsc15 - -m /bin:@nixPrefix@@busybox@/bin - -m "$TMPDIR" - @extraMountOptions@ -) - -symlinks=( - -s /etc/hosts:/original-etc/hosts - -s /etc/passwd:/original-etc/passwd - -s /etc/resolv.conf:/original-etc/resolv.conf - -s /etc/host.conf:/original-etc/host.conf - -s /etc/slurm/slurm.conf:/original-etc/slurm/slurm.conf - -s /etc/services:/original-etc/services -) - -exec $nixjoin -i "${mounts[@]}" "${symlinks[@]}" $nixhome -- \ - env -i "${env[@]}" @out@/bin/stage2 "$@" diff --git a/garlic/stages/isolate/stage2 b/garlic/stages/isolate/stage2 deleted file mode 100644 index 1924890..0000000 --- a/garlic/stages/isolate/stage2 +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/sh -e - -#>&2 echo Running isolate stage2 -#>&2 echo PATH=$PATH - -if [ ! -e /nix ]; then - >&2 echo "/nix not found, aborting" - exit 1 -fi - -if [ -e /usr ]; then - >&2 echo "Environment not isolated, aborting" - exit 1 -fi - -exec @program@ "$@" diff --git a/garlic/stages/perf.nix b/garlic/stages/perf.nix deleted file mode 100644 index cbbe937..0000000 --- a/garlic/stages/perf.nix +++ /dev/null @@ -1,30 +0,0 @@ -{ - stdenv -, perf -, garlicTools -}: - -{ - nextStage -, perfOptions -}: - -with garlicTools; - -let - program = stageProgram nextStage; -in - stdenv.mkDerivation { - name = "perf"; - phases = [ "installPhase" ]; - preferLocalBuild = true; - dontPatchShebangs = true; - installPhase = '' - cat > $out < $out <&2 echo "Cannot use runexp inside nix environment!" - exit 1 -fi - -#>&2 echo Running runexp for MN4 -#>&2 echo PATH=$PATH - -user=$(id -un) -group=$(id -gn) - -export GARLIC_OUT="/gpfs/projects/bsc15/garlic/$user/out" -mkdir -p "$GARLIC_OUT" -export GARLIC_INDEX="/gpfs/projects/bsc15/garlic/$user/index" -mkdir -p "$GARLIC_INDEX" -export GARLIC_USER="$user" -cd "$GARLIC_OUT" - -exec @nixPrefix@@program@ diff --git a/garlic/stages/sbatch.nix b/garlic/stages/sbatch.nix deleted file mode 100644 index 34a3167..0000000 --- a/garlic/stages/sbatch.nix +++ /dev/null @@ -1,105 +0,0 @@ -{ - stdenv -, lib -, numactl -, slurm -, garlicTools -}: - -{ - nextStage -, jobName -, chdir ? "." -, nixPrefix ? "" -, binary ? "/bin/run" -, ntasks ? null -, ntasksPerNode ? null -, ntasksPerSocket ? null -, cpusPerTask ? null -, nodes ? null -, exclusive ? true # By default we run in exclusive mode -, qos ? null -, reservation ? null -, time ? null -, output ? "stdout.log" -, error ? "stderr.log" -, extra ? null -, acctgFreq ? null -}: - -with lib; -with garlicTools; - -# sbatch fails silently if we pass garbage, so we assert the types here to avoid -# sending `nodes = [ 1 2 ]` by mistake. -assert (jobName != null) -> isString jobName; -assert (chdir != null) -> isString chdir; -assert (nixPrefix != null) -> isString nixPrefix; -assert (ntasks != null) -> isInt ntasks; -assert (ntasksPerNode != null) -> isInt ntasksPerNode; -assert (ntasksPerSocket != null) -> isInt ntasksPerSocket; -assert (cpusPerTask != null) -> isInt cpusPerTask; -assert (nodes != null) -> isInt nodes; -assert (exclusive != null) -> isBool exclusive; -assert (qos != null) -> isString qos; -assert (reservation != null) -> isString reservation; -assert (time != null) -> isString time; -assert (output != null) -> isString output; -assert (error != null) -> isString error; -assert (extra != null) -> isString extra; - -let - - sbatchOpt = name: value: optionalString (value!=null) - "#SBATCH --${name}=${toString value}\n"; - sbatchEnable = name: value: optionalString (value!=null) - "#SBATCH --${name}\n"; - -in - -stdenv.mkDerivation rec { - name = "sbatch"; - preferLocalBuild = true; - - phases = [ "installPhase" ]; - - #SBATCH --tasks-per-node=48 - #SBATCH --ntasks-per-socket=24 - #SBATCH --cpus-per-task=1 - dontBuild = true; - dontPatchShebangs = true; - programPath = "/run"; - - installPhase = '' - mkdir -p $out - cat > $out/job < $out/run < status - EOF - chmod +x $out/run - ''; -} diff --git a/garlic/stages/script.nix b/garlic/stages/script.nix deleted file mode 100644 index 292a209..0000000 --- a/garlic/stages/script.nix +++ /dev/null @@ -1,28 +0,0 @@ -{ - stdenv -}: - -{ - script -, shell ? "/bin/sh" -, exitOnError ? true -}: - -let - setcmd = if exitOnError then "set -e" else ""; -in -stdenv.mkDerivation { - name = "script"; - preferLocalBuild = true; - phases = [ "installPhase" ]; - installPhase = '' - cat > $out <<'EOF' - #!${shell} - ${setcmd} - - ${script} - - EOF - chmod +x $out - ''; -} diff --git a/garlic/stages/srun.nix b/garlic/stages/srun.nix deleted file mode 100644 index a2481a5..0000000 --- a/garlic/stages/srun.nix +++ /dev/null @@ -1,58 +0,0 @@ -{ - stdenv -, slurm -, garlicTools -}: -{ - nextStage -, cpuBind -, nixPrefix -, preSrun ? "" -, postSrun ? "" -, srunOptions ? "" -, output ? "stdout.log" -, error ? "stderr.log" -}: - -with garlicTools; - -stdenv.mkDerivation rec { - name = "srun"; - phases = [ "installPhase" ]; - preferLocalBuild = true; - dontPatchShebangs = true; - installPhase = '' - cat > $out <<'EOF' - #!/bin/sh -e - - ${preSrun} - - ${slurm}/bin/srun \ - --mpi=pmi2 \ - --cpu-bind=${cpuBind} \ - --output=${output} \ - --error=${error} \ - ${srunOptions} \ - ${nixPrefix}${stageProgram nextStage} - - >&2 echo srun exit code: $? - - # Ensure that none failed, as srun fails to capture errors - # after MPI_Finalize - for i in $(seq 0 $(($SLURM_NTASKS - 1))); do - if [ ! -e .srun.rc.$i ]; then - >&2 echo "missing exit code for rank $i, aborting" - exit 1 - fi - if ! grep -q '^0$' .srun.rc.$i; then - >&2 echo "non-zero exit for rank $i, aborting" - exit 1 - fi - done - - ${postSrun} - EOF - - chmod +x $out - ''; -} diff --git a/garlic/stages/strace.nix b/garlic/stages/strace.nix deleted file mode 100644 index 22fb4a5..0000000 --- a/garlic/stages/strace.nix +++ /dev/null @@ -1,29 +0,0 @@ -{ - stdenv -, strace -, garlicTools -}: - -{ - nextStage -}: - -with garlicTools; - -let - program = stageProgram nextStage; -in - stdenv.mkDerivation { - name = "strace"; - phases = [ "installPhase" ]; - preferLocalBuild = true; - dontPatchShebangs = true; - installPhase = '' - cat > $out < $out < $out << EOF - #!/bin/sh -e - - ${desc} - - if [ -z "\$GARLIC_OUT" ]; then - >&2 echo "unit: GARLIC_OUT not defined, aborting" - exit 1 - fi - - if [ -z "\$GARLIC_EXPERIMENT" ]; then - >&2 echo "unit: GARLIC_EXPERIMENT not defined, aborting" - exit 1 - fi - - if [ -z "\$GARLIC_INDEX" ]; then - >&2 echo "unit: GARLIC_INDEX not defined, aborting" - exit 1 - fi - - cd "\$GARLIC_OUT" - - # Set the experiment unit in the environment - export GARLIC_UNIT=$(basename $out) - - # Create an index entry - rm -f "\$GARLIC_INDEX/${safeUnitName}" \ - "\$GARLIC_INDEX/${safeExpName}" - - ln -Tfs "../out/\$GARLIC_UNIT" \ - "\$GARLIC_INDEX/${safeUnitName}" - - ln -Tfs "../out/\$GARLIC_EXPERIMENT" \ - "\$GARLIC_INDEX/${safeExpName}" - - if [ -e "\$GARLIC_UNIT" ]; then - >&2 echo "unit: skipping, already exists: \$GARLIC_UNIT" - exit 0 - fi - - # And change the working directory - mkdir \$GARLIC_UNIT - cd \$GARLIC_UNIT - - # Copy the configuration for the unit to the output path - cp ${jsonConf} garlic_config.json - - # Finally, execute the first stage: - exec ${firstStage} - EOF - - chmod +x $out - ''; -} diff --git a/garlic/stages/valgrind.nix b/garlic/stages/valgrind.nix deleted file mode 100644 index 9e156c0..0000000 --- a/garlic/stages/valgrind.nix +++ /dev/null @@ -1,29 +0,0 @@ -{ - stdenv -, valgrind -, garlicTools -}: - -{ - nextStage -}: - -with garlicTools; - -let - program = stageProgram nextStage; -in - stdenv.mkDerivation { - name = "valgrind"; - phases = [ "installPhase" ]; - preferLocalBuild = true; - dontPatchShebangs = true; - installPhase = '' - cat > $out < $out''); -} diff --git a/garlic/tools.nix b/garlic/tools.nix deleted file mode 100644 index c092b55..0000000 --- a/garlic/tools.nix +++ /dev/null @@ -1,140 +0,0 @@ -{ - stdenv -, lib -}: - -with lib; - -let - gen = rec { - # genAttrSets "a" ["hello" "world"] - # [ { a = "hello"; } { a = "world"; } ] - genAttrSets = (name: arr: (map (x: {${name}=x; })) arr); - - # addAttrSets "a" [1 2] {e=4;} - # [ { a = 1; e = 4; } { a = 2; e = 4; } ] - addAttrSets = (name: arr: set: (map (x: set // {${name}=x; })) arr); - - # attrToList {a=1;} - # [ { name = "a"; value = 1; } ] - attrToList = (set: map (name: {name=name; value=set.${name};} ) (builtins.attrNames set)); - - # mergeConfig [{e=1;}] {name="a"; value=[1 2] - # [ { a = 1; e = 1; } { a = 2; e = 1; } ] - mergeConfig = (arr: new: flatten ( map (x: addAttrSets new.name new.value x) arr)); - - # genConfigs {a=[1 2]; b=[3 4];} - # [ { a = 1; b = 3; } { a = 1; b = 4; } { a = 2; b = 3; } { a = 2; b = 4; } ] - genConfigs = (config: foldl mergeConfig [{}] (attrToList config)); - - # Generate multiple app versions by override with each config - genApp = (app: configs: map (conf: app.override conf // {conf=conf;}) configs); - - # Generate app version from an array of apps - genApps = (apps: configs: - flatten (map (app: genApp app configs) apps)); - - /* Returns the path of the executable of a stage */ - stageProgram = stage: - if stage ? programPath - then "${stage}${stage.programPath}" - else "${stage}"; - - /* Given a trebuchet, returns the experiment */ - getExperimentStage = drv: - if (drv ? isExperiment) && drv.isExperiment then drv - else getExperimentStage drv.nextStage; - - # Computes the exponentiation operation - pow = x: n: fold (a: b: a*b) 1 (map (a: x) (range 1 n)); - - # Generates a list of exponents from a to b inclusive, and raises base to - # each element of the list. - expRange = base: a: b: (map (ex: pow base ex) (range a b)); - - # Generates a range from start to end (inclusive) by multiplying start by 2. - range2 = start: end: - let - _range2 = s: e: if (s > e) then [] else [ s ] ++ (_range2 (s * 2) e); - in - _range2 start end; - - # Generates a list of integers by halving number N until it reaches 1. Is - # sorted from the smallest to largest. - halfList = N: - let - _divList = n: if (n == 0) then [] else (_divList (n / 2)) ++ [ n ]; - in - _divList N; - - # A list of all divisors of n, sorted in increased order: - divisors = n: filter (x: (mod n x == 0)) (range 1 n); - - # Generates a set given a list of keys, where all values are null. - genNullAttr = l: genAttrs l (name: null); - - # From the keys in the lis l, generates a set with the values in the set a, - # if they don't exist, they are not taken. Values set to null are removed. - optionalInherit = l: a: filterAttrs (n: v: v!=null) - (overrideExisting (genNullAttr l) a); - - # Given a float f, truncates it and returns the resulting the integer - floatTruncate = f: let - strFloat = toString f; - slices = splitString "." strFloat; - front = elemAt slices 0; - in - toInt front; - - # Returns the given gitCommit if not null, or the one stored in the - # gitTable for the branch gitBranch. - findCommit = {gitCommit ? null, gitTable ? null, gitBranch}: - assert (gitCommit == null) -> (gitTable != null); - assert (gitTable == null) -> (gitCommit != null); - if (gitCommit != null) then gitCommit - else - assert (assertMsg (gitTable ? "${gitBranch}") - '' - The git branch "${gitBranch}" was not found in the gitTable. - Is the gitTable outdated? - ''); - gitTable."${gitBranch}"; - - # Custom wrapper around fetchGit to be able to quickly specify apps - # and change the repository source for all at once. Returns an - # attributte set with the `src` as well as the selected gitCommit, - # gitBranch and gitURL. - fetchGarlicApp = { - gitBranch, - appName ? null, - gitURL ? null, - gitCommit ? null, - gitTable ? null - }: - assert (appName == null) -> (gitURL != null); - assert (gitURL == null) -> (appName != null); - let - _gitURL = if (gitURL != null) then gitURL - else "ssh://git@bscpm03.bsc.es/garlic/apps/${appName}.git"; - _gitCommit = findCommit { - inherit gitCommit gitTable gitBranch; - }; - _gitBranch = gitBranch; - in - { - src = builtins.fetchGit { - url = _gitURL; - ref = _gitBranch; - rev = _gitCommit; - }; - gitBranch = _gitBranch; - gitCommit = _gitCommit; - - # The gitURL is not stored in the derivation, as we dont really - # care of where the source comes from, as long as is the same - # commit. - gitURL = _gitURL; - }; - }; -in - gen From f9c832654e7b1e225268f07449899a37c71c044d Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 3 Oct 2023 12:25:45 +0200 Subject: [PATCH 865/987] Remove NOISE file --- NOISE | 147 ---------------------------------------------------------- 1 file changed, 147 deletions(-) delete mode 100644 NOISE diff --git a/NOISE b/NOISE deleted file mode 100644 index 7278a08..0000000 --- a/NOISE +++ /dev/null @@ -1,147 +0,0 @@ - - Known sources of noise - in MareNostrum 4 - - -ABSTRACT - - The experiments run at MareNostrum 4 show that there are several - factors that can affect the execution time. Some may even become the - dominant part of the time, rendering the experiment invalid. - - This document lists all known sources of variability and tries to give - an overview on how to detect and correct the problems. - -1. Notable sources of variability - - Usually all sources were found in the MareNostrum 4 cluster, but they - may apply to other machines. Some may have a detection mechanism so - the effect can be neglected, but others don't. Also, some problems - only occur with low probability. - - Other sources of variability with a low effect, say lower than 1% of - the mean time, are not listed here. - -1.1 The daemon slurmstepd eats sys CPU in a new thread - - For a period of about 10 seconds a thread is created from the - slurmstepd process when a job is running, which uses quite a lot of - CPU. This event happens from time to time with unknown frequency. It - was first observed in the nbody program, as it almost doubles the time - per iteration, as the other processes are waiting for the one with - slow CPU to continue to the next iteration. The SLURM version was - 17.11.7 and the program was executed with sbatch+srun. See the issue - for more details: - - https://pm.bsc.es/gitlab/rarias/bsc-nixpkgs/-/issues/19 - - It can be detected by looking at the cycles per us view with Extrae, - with the PAPI counters enabled. It shows a slowdown in one process - when the problem occurs. Also, perf-sched(1) can be used to trace - context switches to other programs but requires access to the debugfs. - -1.2 MPICH uses ethernet rather than infiniband - - Some MPI implementations (like MPICH) can silently use non-optimal - fabrics like the ethernet rather than infiniband because the are - misconfigured. - - Can be detected by running latency benchmarks like the OSU micro - benchmark, which should report a low latency. It can also be reported - by using strace to ensure which network card is being used. - -1.3 CPU binding - - A thread may switch between CPUs when running, leading to a drop in - performance. To ensure that it remains in the same process it can be - binded with srun(1) or sbatch(1) using the --cpu-bind option, or using - taskset(1). - - It can be detected by running the program with Extrae and using the - General/view/executing_cpu.cfg configuration in Paraver. After - adjusting the scale, all processes must have a different color from - each other (the assigned CPU) and keep it constant. Otherwise changes - of CPUs are happening. - -1.4 Libraries that use dlopen(3) - - Some libraries or programs try to determine which components are - available in a system by looking for specific libraries in the search - path determined at runtime. - - This behavior can cause a program to change the execution time - depending on the environment variables like LD_LIBRARY_PATH. - - It can be detected by setting LD_DEBUG=all (see ld.so(8)) or using - strace(1) when running the program. - -1.5 Intel MPI library selection - - The Intel MPI library has several variants which are loaded at run - time: debug, release, debug_mt and release_mt. Of which the - I_MPI_THREAD_SPLIT controls whether the multithread capabilities are - enabled or not. - -1.6 LLVM and OpenMP problem - - The LLVM OpenMP implementation is installed in libomp.so, however two - symbolic links are created for libgomp.so and libiomp5.so. - - libgomp.so -> libomp.so - libiomp5.so -> libomp.so - libomp.so - - So applications compiled with OpenMP by other compilers may end up - using the LLVM implementation. This can be observed by setting - LD_DEBUG=all of using strace(1) and looking for the libomp.so library - being loaded. - - In bscpkgs the symbolic links have been removed for the clangOmpss2 - compiler. - -1.7 Nix-shell does not allow isolation - - Nix-shell is not isolated, the compilation process tries then to - use headers and libs from /usr. - - This can induce compilation errors not happening inside nix-build. - Do not use to ensure reproducibility. - -1.8 Make doesn't rebuild objects - - When using local repo as src code, (e.g. developer mode on) a make - clean at the preBuild stage is required. - - Nix sets the same modification date (one second after the Epoch - (1970-01-01 at 00:00:01 in UTC timezone) to all the files in the nix - store (also those copied from repos). Makefile checks the files - modification date in order to call or not the compilation - instructions. If any object/binary file exists out of Nix, at the time - we build within Nix, they will be copied with the current data and - consequently not updated during the Nix compilation process. - -1.9 Sbatch silently fails on parsing - - When submitting a job with a wrong specification in MN4 with SLURM - 17.11.9-2, for example this bogus line: - - #SBATCH --nodes=1 2 - - It silently fails to parse the options, falling back to the defaults, - without any error. - - We have improved our checking to detect bogus options passed to SLURM, - so we prevent this problem from happening. - -1.10 The srun program misses signals after MPI_Finalize - - When a program receives a signal such as SIGSEGV after calling - MPI_Finalize, srun at version 17.11.7 doesn't return a error code but - exits with 0. - - This can cause bogus programs to go undetected when only checking the - return code of srun. A better approach is to check the exit code with - sacct(1) or write the exit code to a file and check it later. - -/* vim: set ts=2 sw=2 tw=72 fo=watqc expandtab spell autoindent: */ - From ce4b1960104a276bf2bfcc00e029ee8dfbbc1418 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 3 Oct 2023 12:26:26 +0200 Subject: [PATCH 866/987] Remove CONTRIBUTING file --- CONTRIBUTING | 26 -------------------------- 1 file changed, 26 deletions(-) delete mode 100644 CONTRIBUTING diff --git a/CONTRIBUTING b/CONTRIBUTING deleted file mode 100644 index 2db2a0c..0000000 --- a/CONTRIBUTING +++ /dev/null @@ -1,26 +0,0 @@ -Git message guidelines ----------------------- - - 1. Don't use uppercase in the beggining of your subject line (the - first line of the commit message) - - 2. Prepend the subsystem, package or the app to your subject in - lowercase separated by a colon (example "nbody: simplify the - granularity experiment") - - 3. Use the imperative mood in the subject line (use "add X", not - "added X" nor "adding X"). A properly formed Git commit subject - line (without the prefix) should always be able to complete the - following sentence: - - "If applied, this commit will " - - 4. Limit the subject line to 50 characters and keep it simple - - 5. Separate subject from body with a blank line - - 6. Do not end the subject line with a period - - 7. Wrap the body at 72 characters - - 8. Use the body to explain the details From 7ace376e4ea73aa2bb458c7ffc1a7a8fa16dd27b Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 4 Oct 2023 12:43:47 +0200 Subject: [PATCH 867/987] Also define no RT clang stdenv --- overlay.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/overlay.nix b/overlay.nix index c728284..cbbbbaf 100644 --- a/overlay.nix +++ b/overlay.nix @@ -35,6 +35,7 @@ let #pscom = callPackage ./pkgs/parastation/pscom.nix { }; # Unmaintaned #psmpi = callPackage ./pkgs/parastation/psmpi.nix { }; # Unmaintaned #sonar = callPackage ./pkgs/sonar/default.nix { }; # FIXME: PM gitlab broken + stdenvClangOmpss2 = final.stdenv.override { cc = final.clangOmpss2; allowedRequisites = null; }; stdenvClangOmpss2Nanos6 = final.stdenv.override { cc = final.clangOmpss2Nanos6; allowedRequisites = null; }; stdenvClangOmpss2Nodes = final.stdenv.override { cc = final.clangOmpss2Nodes; allowedRequisites = null; }; #tagaspi = callPackage ./pkgs/tagaspi/default.nix { }; # FIXME: PM gitlab broken From 867e61acdef9cc6ef449b3241bb2df2688546083 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 4 Oct 2023 12:45:51 +0200 Subject: [PATCH 868/987] Remove --rebuild flag --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index da37591..7e0510a 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -3,4 +3,4 @@ build:bsc-ci.all: tags: - nix script: - - nix build -L "jungle#bsc-ci.all" --override-input bscpkgs . --rebuild + - nix build -L "jungle#bsc-ci.all" --override-input bscpkgs . From 873d2f1abc3ed544aa576d1e6f63f8d713f155cd Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 4 Oct 2023 13:31:55 +0200 Subject: [PATCH 869/987] Enable tests in ovni --- pkgs/ovni/default.nix | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pkgs/ovni/default.nix b/pkgs/ovni/default.nix index 34fdaa4..882da8d 100644 --- a/pkgs/ovni/default.nix +++ b/pkgs/ovni/default.nix @@ -42,4 +42,7 @@ in cmakeBuildType = if (enableDebug) then "Debug" else "Release"; cmakeFlags = [ "-DOVNI_GIT_COMMIT=${src.shortRev}" ]; dontStrip = true; + doCheck = true; + checkTarget = "test"; + hardeningDisable = [ "all" ]; } From 41a93cd1761a8d6264e0b3d669b485b8c06bb34d Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 4 Oct 2023 13:40:02 +0200 Subject: [PATCH 870/987] Enable verbose build and tests for ovni --- pkgs/ovni/default.nix | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/pkgs/ovni/default.nix b/pkgs/ovni/default.nix index 882da8d..d4ab78c 100644 --- a/pkgs/ovni/default.nix +++ b/pkgs/ovni/default.nix @@ -41,6 +41,10 @@ in buildInputs = [ cmake mpi ]; cmakeBuildType = if (enableDebug) then "Debug" else "Release"; cmakeFlags = [ "-DOVNI_GIT_COMMIT=${src.shortRev}" ]; + buildFlags = [ "VERBOSE=1" ]; + preCheck = '' + export CTEST_OUTPUT_ON_FAILURE=1 + ''; dontStrip = true; doCheck = true; checkTarget = "test"; From 5412e14dba0292867fcf28c0073fc72d12312273 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 4 Oct 2023 13:44:03 +0200 Subject: [PATCH 871/987] Patch shebangs in ovni runners --- pkgs/ovni/default.nix | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pkgs/ovni/default.nix b/pkgs/ovni/default.nix index d4ab78c..8d40aa4 100644 --- a/pkgs/ovni/default.nix +++ b/pkgs/ovni/default.nix @@ -38,6 +38,9 @@ in stdenv.mkDerivation rec { pname = "ovni"; inherit (source) src version; + postPatch = '' + patchShebangs --build test/ + ''; buildInputs = [ cmake mpi ]; cmakeBuildType = if (enableDebug) then "Debug" else "Release"; cmakeFlags = [ "-DOVNI_GIT_COMMIT=${src.shortRev}" ]; From 9e889884c9dd0fe57ad64a6a9e730599a2129e45 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 5 Oct 2023 08:01:43 +0200 Subject: [PATCH 872/987] Don't build ovni in verbose mode --- pkgs/ovni/default.nix | 1 - 1 file changed, 1 deletion(-) diff --git a/pkgs/ovni/default.nix b/pkgs/ovni/default.nix index 8d40aa4..9f23ee1 100644 --- a/pkgs/ovni/default.nix +++ b/pkgs/ovni/default.nix @@ -44,7 +44,6 @@ in buildInputs = [ cmake mpi ]; cmakeBuildType = if (enableDebug) then "Debug" else "Release"; cmakeFlags = [ "-DOVNI_GIT_COMMIT=${src.shortRev}" ]; - buildFlags = [ "VERBOSE=1" ]; preCheck = '' export CTEST_OUTPUT_ON_FAILURE=1 ''; From 8731a4797de289fe94753ab914c1b3d4dbd77642 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 6 Oct 2023 14:24:57 +0200 Subject: [PATCH 873/987] Enable packages served by PM gitlab --- overlay.nix | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/overlay.nix b/overlay.nix index cbbbbaf..b53747b 100644 --- a/overlay.nix +++ b/overlay.nix @@ -10,38 +10,38 @@ let "printf '%s\n' ${toString (collect (x: x ? outPath) pkgs)} > $out"; bscPkgs = { - #bench6 = callPackage ./pkgs/bench6/default.nix { }; # FIXME: PM gitlab broken + bench6 = callPackage ./pkgs/bench6/default.nix { }; clangOmpss2 = callPackage ./pkgs/llvm-ompss2/default.nix { }; clangOmpss2Nanos6 = callPackage ./pkgs/llvm-ompss2/default.nix { ompss2rt = final.nanos6; }; clangOmpss2Nodes = callPackage ./pkgs/llvm-ompss2/default.nix { ompss2rt = final.nodes; }; clangOmpss2Unwrapped = callPackage ./pkgs/llvm-ompss2/clang.nix { }; #extrae = callPackage ./pkgs/extrae/default.nix { }; # Broken and outdated - #gpi-2 = callPackage ./pkgs/gpi-2/default.nix { }; # FIXME: PM gitlab broken + gpi-2 = callPackage ./pkgs/gpi-2/default.nix { }; intelPackages_2023 = callPackage ./pkgs/intel-oneapi/2023.nix { }; jemallocNanos6 = callPackage ./pkgs/nanos6/jemalloc.nix { }; #lmbench = callPackage ./pkgs/lmbench/default.nix { }; # Broken mcxx = callPackage ./pkgs/mcxx/default.nix { }; nanos6 = callPackage ./pkgs/nanos6/default.nix { }; nanos6Debug = final.nanos6.override { enableDebug = true; }; - #nixtools = callPackage ./pkgs/nixtools/default.nix { }; # FIXME: PM gitlab broken - #nix-wrap = callPackage ./pkgs/nix-wrap/default.nix { }; # FIXME: PM gitlab broken + nixtools = callPackage ./pkgs/nixtools/default.nix { }; + nix-wrap = callPackage ./pkgs/nix-wrap/default.nix { }; nodes = callPackage ./pkgs/nodes/default.nix { }; nosv = callPackage ./pkgs/nosv/default.nix { }; osumb = callPackage ./pkgs/osu/default.nix { }; ovni = callPackage ./pkgs/ovni/default.nix { }; ovniGit = final.ovni.override { useGit = true; }; paraverKernel = callPackage ./pkgs/paraver/kernel.nix { }; - #paraverKernelFast = callPackage ./pkgs/paraver/kernel-fast.nix { }; # Outdated + PM gitlab broken + #paraverKernelFast = callPackage ./pkgs/paraver/kernel-fast.nix { }; # Outdated #pscom = callPackage ./pkgs/parastation/pscom.nix { }; # Unmaintaned #psmpi = callPackage ./pkgs/parastation/psmpi.nix { }; # Unmaintaned - #sonar = callPackage ./pkgs/sonar/default.nix { }; # FIXME: PM gitlab broken + sonar = callPackage ./pkgs/sonar/default.nix { }; stdenvClangOmpss2 = final.stdenv.override { cc = final.clangOmpss2; allowedRequisites = null; }; stdenvClangOmpss2Nanos6 = final.stdenv.override { cc = final.clangOmpss2Nanos6; allowedRequisites = null; }; stdenvClangOmpss2Nodes = final.stdenv.override { cc = final.clangOmpss2Nodes; allowedRequisites = null; }; - #tagaspi = callPackage ./pkgs/tagaspi/default.nix { }; # FIXME: PM gitlab broken + tagaspi = callPackage ./pkgs/tagaspi/default.nix { }; tampi = callPackage ./pkgs/tampi/default.nix { }; wxparaver = callPackage ./pkgs/paraver/default.nix { }; - #wxparaverFast = callPackage ./pkgs/paraver/wxparaver-fast.nix { }; # Outdated + PM gitlab broken + #wxparaverFast = callPackage ./pkgs/paraver/wxparaver-fast.nix { }; # Outdated }; in bscPkgs // { From bab7a4558760c602147f322e82cf8b509020d3a9 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 6 Oct 2023 14:34:03 +0200 Subject: [PATCH 874/987] Fix commit for GPI-2 and tagaspi --- pkgs/gpi-2/default.nix | 1 + pkgs/tagaspi/default.nix | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/pkgs/gpi-2/default.nix b/pkgs/gpi-2/default.nix index a885e02..0e5d0d1 100644 --- a/pkgs/gpi-2/default.nix +++ b/pkgs/gpi-2/default.nix @@ -17,6 +17,7 @@ stdenv.mkDerivation rec { src = builtins.fetchGit { url = "ssh://git@bscpm03.bsc.es/interoperability/GPI-2"; ref = "refs/tags/tagaspi-2021.11"; + rev = "9082fe7770fa9f6acba1b1ac938ad209a3d09477"; }; enableParallelBuilding = true; diff --git a/pkgs/tagaspi/default.nix b/pkgs/tagaspi/default.nix index 9d9395c..fbeac55 100644 --- a/pkgs/tagaspi/default.nix +++ b/pkgs/tagaspi/default.nix @@ -39,7 +39,8 @@ stdenv.mkDerivation rec { src = builtins.fetchGit { url = "ssh://git@bscpm03.bsc.es/interoperability/tagaspi"; - ref = "master"; + ref = "refs/tags/2021.11"; + rev = "5aabb1849de2e512cc8729f32783051ecd4cab97"; }; hardeningDisable = [ "all" ]; From db391ee9c250425c6f98882bccf75403a9c1fd95 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 6 Oct 2023 14:39:47 +0200 Subject: [PATCH 875/987] Enable verbose output in nix build for CI --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 7e0510a..b38911a 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -3,4 +3,4 @@ build:bsc-ci.all: tags: - nix script: - - nix build -L "jungle#bsc-ci.all" --override-input bscpkgs . + - nix build -L "jungle#bsc-ci.all" --override-input bscpkgs . -v --show-trace From 91cdc91738cbe7df4e283d31cf0fff74a31cdd1d Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 6 Oct 2023 14:52:12 +0200 Subject: [PATCH 876/987] Fetch sonar tag from refs/tags --- pkgs/sonar/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/sonar/default.nix b/pkgs/sonar/default.nix index b362976..69b0ddc 100644 --- a/pkgs/sonar/default.nix +++ b/pkgs/sonar/default.nix @@ -10,7 +10,7 @@ stdenv.mkDerivation rec { version = "0.1.0"; src = builtins.fetchGit { url = "ssh://git@bscpm03.bsc.es/ovni/sonar"; - ref = version; + ref = "refs/tags/${version}"; rev = "1299731b56addc18f530f7327f62267624c4363a"; }; hardeningDisable = [ "all" ]; From 51e331a9d999c8a5034bed8d56cfba86a8f2f1c1 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 20 Oct 2023 17:26:38 +0200 Subject: [PATCH 877/987] Update sonar to 0.2.0 and use GitHub Reviewed-By: Aleix Roca Nonell --- pkgs/sonar/default.nix | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/pkgs/sonar/default.nix b/pkgs/sonar/default.nix index 69b0ddc..b241e42 100644 --- a/pkgs/sonar/default.nix +++ b/pkgs/sonar/default.nix @@ -1,17 +1,19 @@ { stdenv , autoreconfHook +, fetchFromGitHub , ovni , mpi }: stdenv.mkDerivation rec { pname = "sonar"; - version = "0.1.0"; - src = builtins.fetchGit { - url = "ssh://git@bscpm03.bsc.es/ovni/sonar"; - ref = "refs/tags/${version}"; - rev = "1299731b56addc18f530f7327f62267624c4363a"; + version = "0.2.0"; + src = fetchFromGitHub { + owner = "bsc-pm"; + repo = "sonar"; + rev = "${version}"; + sha256 = "sha256-iQSw4PbFk0EALXPHpLBPPQ7U8Ed8fkez1uG9MuF6PJo="; }; hardeningDisable = [ "all" ]; dontStrip = true; From 9f245946d730f0072583c8418c506255d86650d1 Mon Sep 17 00:00:00 2001 From: Aleix Roca Nonell Date: Tue, 31 Oct 2023 10:36:16 +0100 Subject: [PATCH 878/987] Build NODES with clang dependency if tests enabled Reviewed-By: Rodrigo Arias Mallo --- pkgs/nodes/default.nix | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/pkgs/nodes/default.nix b/pkgs/nodes/default.nix index a109301..f75818f 100644 --- a/pkgs/nodes/default.nix +++ b/pkgs/nodes/default.nix @@ -15,6 +15,7 @@ , jemalloc , ovni , nosv +, clangOmpss2 , useGit ? false , gitUrl ? "ssh://git@gitlab-internal.bsc.es/nos-v/nodes.git" , gitBranch ? "master" @@ -56,6 +57,13 @@ in "--with-jemalloc=${jemalloc}" "--with-nosv=${nosv}" "--with-ovni=${ovni}" + ] ++ lib.optionals doCheck [ + "--with-nodes-clang=${clangOmpss2}" + ]; + + doCheck = false; + nativeCheckInputs = [ + clangOmpss2 ]; # The "bindnow" flags are incompatible with ifunc resolution mechanism. We From ebeb2ff549618780c315efc7ac5dcd48d612cafe Mon Sep 17 00:00:00 2001 From: Aleix Roca Nonell Date: Tue, 31 Oct 2023 10:36:17 +0100 Subject: [PATCH 879/987] Set NOSV_HOME for clang wrapped with nodes This is needed since nosv must appear as a 1rst level dependency on the final executable. Clang will add the dependency as long as it knows where to find nosv (and nodes is used). Reviewed-By: Rodrigo Arias Mallo --- pkgs/llvm-ompss2/default.nix | 3 +++ pkgs/nodes/default.nix | 4 ++++ 2 files changed, 7 insertions(+) diff --git a/pkgs/llvm-ompss2/default.nix b/pkgs/llvm-ompss2/default.nix index 07f6c9d..d35c706 100644 --- a/pkgs/llvm-ompss2/default.nix +++ b/pkgs/llvm-ompss2/default.nix @@ -46,5 +46,8 @@ in wrapCCWith { '' + lib.optionalString (ompss2rt != null) '' echo "export OMPSS2_RUNTIME=${rtname}" >> $out/nix-support/cc-wrapper-hook echo "export ${homevar}=${ompss2rt}" >> $out/nix-support/cc-wrapper-hook + '' + lib.optionalString (ompss2rt != null && ompss2rt.pname == "nodes") '' + echo "export NOSV_HOME=${ompss2rt.nosv}" >> $out/nix-support/cc-wrapper-hook ''; } + diff --git a/pkgs/nodes/default.nix b/pkgs/nodes/default.nix index f75818f..672a43d 100644 --- a/pkgs/nodes/default.nix +++ b/pkgs/nodes/default.nix @@ -84,4 +84,8 @@ in nosv ovni ]; + + passthru = { + nosv = nosv; + }; } From bb1de835f70b255d03848eb889b1a9bb348a8fbd Mon Sep 17 00:00:00 2001 From: Aleix Roca Nonell Date: Tue, 31 Oct 2023 10:36:18 +0100 Subject: [PATCH 880/987] Add clang with nosv-powered OpenMP Reviewed-By: Rodrigo Arias Mallo --- overlay.nix | 3 +++ pkgs/llvm-ompss2/clang.nix | 43 ++++++++++++++++++++++++++++++------- pkgs/llvm-ompss2/openmp.nix | 8 +++++++ 3 files changed, 46 insertions(+), 8 deletions(-) create mode 100644 pkgs/llvm-ompss2/openmp.nix diff --git a/overlay.nix b/overlay.nix index b53747b..f7d22fa 100644 --- a/overlay.nix +++ b/overlay.nix @@ -14,7 +14,9 @@ let clangOmpss2 = callPackage ./pkgs/llvm-ompss2/default.nix { }; clangOmpss2Nanos6 = callPackage ./pkgs/llvm-ompss2/default.nix { ompss2rt = final.nanos6; }; clangOmpss2Nodes = callPackage ./pkgs/llvm-ompss2/default.nix { ompss2rt = final.nodes; }; + clangOmpss2OpenmpNodes = callPackage ./pkgs/llvm-ompss2/default.nix { ompss2rt = final.nodes; clangOmpss2Unwrapped = final.clangOmpss2OpenmpUnwrapped; }; clangOmpss2Unwrapped = callPackage ./pkgs/llvm-ompss2/clang.nix { }; + clangOmpss2OpenmpUnwrapped = callPackage ./pkgs/llvm-ompss2/openmp.nix { clangOmpss2Unwrapped = final.clangOmpss2Unwrapped; }; #extrae = callPackage ./pkgs/extrae/default.nix { }; # Broken and outdated gpi-2 = callPackage ./pkgs/gpi-2/default.nix { }; intelPackages_2023 = callPackage ./pkgs/intel-oneapi/2023.nix { }; @@ -38,6 +40,7 @@ let stdenvClangOmpss2 = final.stdenv.override { cc = final.clangOmpss2; allowedRequisites = null; }; stdenvClangOmpss2Nanos6 = final.stdenv.override { cc = final.clangOmpss2Nanos6; allowedRequisites = null; }; stdenvClangOmpss2Nodes = final.stdenv.override { cc = final.clangOmpss2Nodes; allowedRequisites = null; }; + stdenvClangOmpss2OpenmpNodes = final.stdenv.override { cc = final.clangOmpss2OpenmpNodes; allowedRequisites = null; }; tagaspi = callPackage ./pkgs/tagaspi/default.nix { }; tampi = callPackage ./pkgs/tampi/default.nix { }; wxparaver = callPackage ./pkgs/paraver/default.nix { }; diff --git a/pkgs/llvm-ompss2/clang.nix b/pkgs/llvm-ompss2/clang.nix index 3ce87d8..0112de9 100644 --- a/pkgs/llvm-ompss2/clang.nix +++ b/pkgs/llvm-ompss2/clang.nix @@ -1,5 +1,6 @@ { llvmPackages_latest +, lib , fetchFromGitHub , cmake , bash @@ -9,23 +10,44 @@ , elfutils , libffi , zlib +, nosv , pkg-config , enableDebug ? false +, enableNosv ? false +, useGit ? false +, gitUrl ? "ssh://git@bscpm03.bsc.es/llvm-ompss/llvm-mono.git" +, gitBranch ? "master" +, gitCommit ? "8d106db69c02fb6ec10baedc47b76f068b419d4a" }: let stdenv = llvmPackages_latest.stdenv; -in stdenv.mkDerivation rec { - version = "2023.05.1"; - pname = "clang-ompss2"; - src = fetchFromGitHub { - owner = "bsc-pm"; - repo = "llvm"; - rev = "refs/tags/github-release-${version}"; - sha256 = "sha256-NB/27F1ZRJf6MXFQjinT2gCsoPbEZYlBMhd3uKcK2GM="; + release = rec { + version = "2023.05.1"; + src = fetchFromGitHub { + owner = "bsc-pm"; + repo = "llvm"; + rev = "refs/tags/github-release-${version}"; + sha256 = "sha256-NB/27F1ZRJf6MXFQjinT2gCsoPbEZYlBMhd3uKcK2GM="; + }; }; + git = rec { + version = src.shortRev; + src = builtins.fetchGit { + url = gitUrl; + ref = gitBranch; + rev = gitCommit; + }; + }; + + source = if (useGit) then git else release; + +in stdenv.mkDerivation rec { + pname = "clang-ompss2"; + inherit (source) src version; + enableParallelBuilding = true; isClang = true; @@ -49,6 +71,8 @@ in stdenv.mkDerivation rec { libffi pkg-config zlib + ] ++ lib.optionals enableNosv [ + nosv ]; # Error with -D_FORTIFY_SOURCE=2, see https://bugs.gentoo.org/636604: @@ -86,6 +110,9 @@ in stdenv.mkDerivation rec { "-DCMAKE_INSTALL_BINDIR=bin" "-DLLVM_ENABLE_ZLIB=FORCE_ON" "-DLLVM_ENABLE_LIBXML2=OFF" + '' + (lib.optionalString enableNosv '' + "-DCLANG_DEFAULT_NOSV_HOME=${nosv}" + '') + '' # Set the rpath to include external libraries (zlib) both on build and # install "-DCMAKE_INSTALL_RPATH_USE_LINK_PATH=ON" diff --git a/pkgs/llvm-ompss2/openmp.nix b/pkgs/llvm-ompss2/openmp.nix new file mode 100644 index 0000000..035d246 --- /dev/null +++ b/pkgs/llvm-ompss2/openmp.nix @@ -0,0 +1,8 @@ +{clangOmpss2Unwrapped}: + +clangOmpss2Unwrapped.override { + useGit = true; + enableNosv = true; + gitBranch = "nos-v-v2.1"; + gitCommit = "03bdfef9c264afdbee9f0a6cef32a66d976ef758"; +} From 4727c98354a0616d7c9cfa854b721a25b0281bb6 Mon Sep 17 00:00:00 2001 From: Aleix Roca Nonell Date: Tue, 31 Oct 2023 10:36:19 +0100 Subject: [PATCH 881/987] Remove jemalloc dep from NODES Reviewed-By: Rodrigo Arias Mallo --- pkgs/nodes/default.nix | 3 --- 1 file changed, 3 deletions(-) diff --git a/pkgs/nodes/default.nix b/pkgs/nodes/default.nix index 672a43d..c11d5be 100644 --- a/pkgs/nodes/default.nix +++ b/pkgs/nodes/default.nix @@ -12,7 +12,6 @@ , papi , boost , autoreconfHook -, jemalloc , ovni , nosv , clangOmpss2 @@ -54,7 +53,6 @@ in dontStrip = true; configureFlags = [ - "--with-jemalloc=${jemalloc}" "--with-nosv=${nosv}" "--with-ovni=${ovni}" ] ++ lib.optionals doCheck [ @@ -80,7 +78,6 @@ in numactl hwloc papi - jemalloc nosv ovni ]; From 8d5714c67bc8d896ef149188cae7ef58214038d3 Mon Sep 17 00:00:00 2001 From: Aleix Roca Nonell Date: Tue, 31 Oct 2023 10:36:20 +0100 Subject: [PATCH 882/987] Move nixpkgs reference to its own expression Reviewed-By: Rodrigo Arias Mallo --- default.nix | 10 +--------- nixpkgs.nix | 9 +++++++++ 2 files changed, 10 insertions(+), 9 deletions(-) create mode 100644 nixpkgs.nix diff --git a/default.nix b/default.nix index f374124..a28f759 100644 --- a/default.nix +++ b/default.nix @@ -1,16 +1,8 @@ let bscOverlay = import ./overlay.nix; - commit = "d680ded26da5cf104dd2735a51e88d2d8f487b4d"; - # Pin the nixpkgs - nixpkgsPath = builtins.fetchTarball { - # Descriptive name to make the store path easier to identify - name = "nixpkgs-${commit}"; - url = "https://github.com/nixos/nixpkgs/archive/${commit}.tar.gz"; - # Hash obtained using `nix-prefetch-url --unpack ` - sha256 = "0xczslr40zy1wlg0ir8mwyyn5gz22i2f9dfd0vmgnk1664v4chky"; - }; + nixpkgsPath = import ./nixpkgs.nix; pkgs = import nixpkgsPath { overlays = [ bscOverlay ]; diff --git a/nixpkgs.nix b/nixpkgs.nix new file mode 100644 index 0000000..37e5ebd --- /dev/null +++ b/nixpkgs.nix @@ -0,0 +1,9 @@ +let + commit = "d680ded26da5cf104dd2735a51e88d2d8f487b4d"; +in builtins.fetchTarball { + # Descriptive name to make the store path easier to identify + name = "nixpkgs-${commit}"; + url = "https://github.com/nixos/nixpkgs/archive/${commit}.tar.gz"; + # Hash obtained using `nix-prefetch-url --unpack ` + sha256 = "0xczslr40zy1wlg0ir8mwyyn5gz22i2f9dfd0vmgnk1664v4chky"; +} From f605f8e5e4a1f392589f1ea2b9ffe2074f72a538 Mon Sep 17 00:00:00 2001 From: Aleix Roca Nonell Date: Tue, 31 Oct 2023 10:36:21 +0100 Subject: [PATCH 883/987] Add clang openmp test for CI Reviewed-By: Rodrigo Arias Mallo Tested-By: Rodrigo Arias Mallo --- overlay.nix | 3 +++ test/compilers/clang-openmp.nix | 46 +++++++++++++++++++++++++++++++++ 2 files changed, 49 insertions(+) create mode 100644 test/compilers/clang-openmp.nix diff --git a/overlay.nix b/overlay.nix index f7d22fa..3979fa7 100644 --- a/overlay.nix +++ b/overlay.nix @@ -75,6 +75,9 @@ in bscPkgs // { clangNodes-task = callPackage ./test/compilers/ompss2.nix { stdenv = final.stdenvClangOmpss2Nodes; }; + clangNosvOpenmp-task = callPackage ./test/compilers/clang-openmp.nix { + stdenv = final.stdenvClangOmpss2OpenmpNodes; + }; }; pkgs = final.runCommand "ci-pkgs" { } diff --git a/test/compilers/clang-openmp.nix b/test/compilers/clang-openmp.nix new file mode 100644 index 0000000..42044c7 --- /dev/null +++ b/test/compilers/clang-openmp.nix @@ -0,0 +1,46 @@ +{ + stdenv +, writeText +}: + +let + hello_c = writeText "hello.c" '' + int main(int argc, char *argv[]) + { + int test = 1; + #pragma omp parallel + #pragma omp single + #pragma omp task + test = 0; + + return test; + } + ''; + +in stdenv.mkDerivation { + pname = "openmp-test"; + version = "1.0.0"; + + dontUnpack = true; + dontConfigure = true; + + # nOS-V requires access to /sys/devices to request NUMA information. It will + # fail to run otherwise, so we disable the sandbox for this test. + __noChroot = true; + + buildPhase = '' + set -x + + cp ${hello_c} hello.c + clang -fopenmp ./hello.c -o hello + ./hello + + set +x + ''; + + installPhase = '' + touch $out + ''; + +} + From 85c70a8d6b380191fad994e7c62d94caee17a0fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ra=C3=BAl=20Pe=C3=B1acoba?= Date: Thu, 9 Nov 2023 15:03:08 +0100 Subject: [PATCH 884/987] Always enable assertions in OmpSs-2 LLVM There are important assertions for OmpSs-2 to catch early bugs. Building without asserts enabled causes warnings due to unused variables. Reviewed-By: Rodrigo Arias Mallo Tested-By: Rodrigo Arias Mallo --- pkgs/llvm-ompss2/clang.nix | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/pkgs/llvm-ompss2/clang.nix b/pkgs/llvm-ompss2/clang.nix index 0112de9..43bf065 100644 --- a/pkgs/llvm-ompss2/clang.nix +++ b/pkgs/llvm-ompss2/clang.nix @@ -85,7 +85,6 @@ in stdenv.mkDerivation rec { cmakeBuildType = if enableDebug then "Debug" else "Release"; dontUseCmakeBuildDir = true; - enableAssertions = if enableDebug then "ON" else "OFF"; # Fix the host triple, as it has changed in a newer config.guess: # https://git.savannah.gnu.org/gitweb/?p=config.git;a=commitdiff;h=ca9bfb8cc75a2be1819d89c664a867785c96c9ba @@ -105,7 +104,7 @@ in stdenv.mkDerivation rec { "-DCMAKE_EXE_LINKER_FLAGS_DEBUG=-Wl,-gdb-index" "-DLLVM_LIT_ARGS=-sv --xunit-xml-output=xunit.xml" "-DLLVM_ENABLE_PROJECTS=clang;openmp;compiler-rt;lld" - "-DLLVM_ENABLE_ASSERTIONS=${enableAssertions}" + "-DLLVM_ENABLE_ASSERTIONS=ON" "-DLLVM_INSTALL_TOOLCHAIN_ONLY=ON" "-DCMAKE_INSTALL_BINDIR=bin" "-DLLVM_ENABLE_ZLIB=FORCE_ON" From 4111b22f570f9091dcde6012d7dbaa3663f0901b Mon Sep 17 00:00:00 2001 From: Aleix Roca Nonell Date: Tue, 14 Nov 2023 10:45:27 +0100 Subject: [PATCH 885/987] Fix clang link flag typo Reviewed-By: Rodrigo Arias Mallo Tested-By: Rodrigo Arias Mallo --- pkgs/llvm-ompss2/clang.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/llvm-ompss2/clang.nix b/pkgs/llvm-ompss2/clang.nix index 43bf065..a5f321c 100644 --- a/pkgs/llvm-ompss2/clang.nix +++ b/pkgs/llvm-ompss2/clang.nix @@ -101,7 +101,7 @@ in stdenv.mkDerivation rec { "-DCMAKE_BUILD_RPATH=$PWD/lib:${zlib}/lib" "-DLLVM_ENABLE_LLD=ON" "-DCMAKE_CXX_FLAGS_DEBUG=-g -ggnu-pubnames" - "-DCMAKE_EXE_LINKER_FLAGS_DEBUG=-Wl,-gdb-index" + "-DCMAKE_EXE_LINKER_FLAGS_DEBUG=-Wl,--gdb-index" "-DLLVM_LIT_ARGS=-sv --xunit-xml-output=xunit.xml" "-DLLVM_ENABLE_PROJECTS=clang;openmp;compiler-rt;lld" "-DLLVM_ENABLE_ASSERTIONS=ON" From 0086b9452adc38ba46de9434b1f0589aaa3e4643 Mon Sep 17 00:00:00 2001 From: Aleix Roca Nonell Date: Wed, 15 Nov 2023 15:25:25 +0100 Subject: [PATCH 886/987] Fix llvm postInstall Some llvm versions do not generate the intel and gomp support libraries and the post install script fails because it cannot remove them. This patch makes removal optional. Reviewed-By: Rodrigo Arias Mallo --- pkgs/llvm-ompss2/clang.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/llvm-ompss2/clang.nix b/pkgs/llvm-ompss2/clang.nix index a5f321c..40d5860 100644 --- a/pkgs/llvm-ompss2/clang.nix +++ b/pkgs/llvm-ompss2/clang.nix @@ -122,8 +122,8 @@ in stdenv.mkDerivation rec { # Remove support for GNU and Intel Openmp postInstall = '' - rm $out/lib/libgomp* - rm $out/lib/libiomp* + rm -f $out/lib/libgomp* + rm -f $out/lib/libiomp* ''; # About "-DCLANG_DEFAULT_NANOS6_HOME=${nanos6}", we could specify a default From f0f6b7c354e1c77c170a4f0dbb5ab60ecebdfed7 Mon Sep 17 00:00:00 2001 From: Aleix Roca Nonell Date: Wed, 15 Nov 2023 15:25:26 +0100 Subject: [PATCH 887/987] Enable dontStrip on clang if enableDebug is set Reviewed-By: Rodrigo Arias Mallo --- pkgs/llvm-ompss2/clang.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pkgs/llvm-ompss2/clang.nix b/pkgs/llvm-ompss2/clang.nix index 40d5860..c517915 100644 --- a/pkgs/llvm-ompss2/clang.nix +++ b/pkgs/llvm-ompss2/clang.nix @@ -84,6 +84,8 @@ in stdenv.mkDerivation rec { cmakeBuildType = if enableDebug then "Debug" else "Release"; + dontStrip = enableDebug; + dontUseCmakeBuildDir = true; # Fix the host triple, as it has changed in a newer config.guess: From e7bdc1595a963df74952c03e6593f4b0fa646198 Mon Sep 17 00:00:00 2001 From: Aleix Roca Nonell Date: Wed, 15 Nov 2023 15:25:27 +0100 Subject: [PATCH 888/987] Fix openmp.nix being called with callPackage callPackage was overriding the inner callPackage override, which made overriding the clang derivation through the override function impossible. Reviewed-By: Rodrigo Arias Mallo Tested-By: Rodrigo Arias Mallo --- overlay.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/overlay.nix b/overlay.nix index 3979fa7..1beea44 100644 --- a/overlay.nix +++ b/overlay.nix @@ -16,7 +16,7 @@ let clangOmpss2Nodes = callPackage ./pkgs/llvm-ompss2/default.nix { ompss2rt = final.nodes; }; clangOmpss2OpenmpNodes = callPackage ./pkgs/llvm-ompss2/default.nix { ompss2rt = final.nodes; clangOmpss2Unwrapped = final.clangOmpss2OpenmpUnwrapped; }; clangOmpss2Unwrapped = callPackage ./pkgs/llvm-ompss2/clang.nix { }; - clangOmpss2OpenmpUnwrapped = callPackage ./pkgs/llvm-ompss2/openmp.nix { clangOmpss2Unwrapped = final.clangOmpss2Unwrapped; }; + clangOmpss2OpenmpUnwrapped = import ./pkgs/llvm-ompss2/openmp.nix { clangOmpss2Unwrapped = final.clangOmpss2Unwrapped; }; #extrae = callPackage ./pkgs/extrae/default.nix { }; # Broken and outdated gpi-2 = callPackage ./pkgs/gpi-2/default.nix { }; intelPackages_2023 = callPackage ./pkgs/intel-oneapi/2023.nix { }; From 4316e7b12d29cf5ebe937550b35ad56b86fab237 Mon Sep 17 00:00:00 2001 From: Aleix Roca Nonell Date: Mon, 20 Nov 2023 15:43:29 +0100 Subject: [PATCH 889/987] Enable separatedebuginfo for common BSC packages For now, we keep dontStrip for packages that already had it for systems without the separatedebuginfo support. Reviewed-By: Rodrigo Arias Mallo Tested-By: Rodrigo Arias Mallo --- pkgs/nanos6/default.nix | 1 + pkgs/nodes/default.nix | 1 + pkgs/nosv/default.nix | 1 + pkgs/ovni/default.nix | 3 ++- pkgs/tagaspi/default.nix | 1 + pkgs/tampi/default.nix | 1 + 6 files changed, 7 insertions(+), 1 deletion(-) diff --git a/pkgs/nanos6/default.nix b/pkgs/nanos6/default.nix index 4bad276..bd0f10a 100644 --- a/pkgs/nanos6/default.nix +++ b/pkgs/nanos6/default.nix @@ -87,6 +87,7 @@ in # Keep debug symbols in the debug variant of the library dontStrip = enableDebug; + separateDebugInfo = true; buildInputs = [ autoconf diff --git a/pkgs/nodes/default.nix b/pkgs/nodes/default.nix index c11d5be..3dde364 100644 --- a/pkgs/nodes/default.nix +++ b/pkgs/nodes/default.nix @@ -51,6 +51,7 @@ in enableParallelBuilding = true; dontStrip = true; + separateDebugInfo = true; configureFlags = [ "--with-nosv=${nosv}" diff --git a/pkgs/nosv/default.nix b/pkgs/nosv/default.nix index 8ed7337..4d34523 100644 --- a/pkgs/nosv/default.nix +++ b/pkgs/nosv/default.nix @@ -42,6 +42,7 @@ in inherit (source) src version; hardeningDisable = [ "all" ]; dontStrip = true; + separateDebugInfo = true; configureFlags = [ "--with-ovni=${ovni}" ]; buildInputs = [ autoreconfHook diff --git a/pkgs/ovni/default.nix b/pkgs/ovni/default.nix index 9f23ee1..3bd54da 100644 --- a/pkgs/ovni/default.nix +++ b/pkgs/ovni/default.nix @@ -38,6 +38,8 @@ in stdenv.mkDerivation rec { pname = "ovni"; inherit (source) src version; + dontStrip = true; + separateDebugInfo = true; postPatch = '' patchShebangs --build test/ ''; @@ -47,7 +49,6 @@ in preCheck = '' export CTEST_OUTPUT_ON_FAILURE=1 ''; - dontStrip = true; doCheck = true; checkTarget = "test"; hardeningDisable = [ "all" ]; diff --git a/pkgs/tagaspi/default.nix b/pkgs/tagaspi/default.nix index fbeac55..71fba52 100644 --- a/pkgs/tagaspi/default.nix +++ b/pkgs/tagaspi/default.nix @@ -16,6 +16,7 @@ stdenv.mkDerivation rec { pname = "tagaspi"; version = src.shortRev; enableParallelBuilding = true; + separateDebugInfo = true; buildInputs = [ autoreconfHook diff --git a/pkgs/tampi/default.nix b/pkgs/tampi/default.nix index 7eb3885..392131c 100644 --- a/pkgs/tampi/default.nix +++ b/pkgs/tampi/default.nix @@ -15,6 +15,7 @@ stdenv.mkDerivation rec { version = "2.0"; pname = "tampi"; enableParallelBuilding = true; + separateDebugInfo = true; buildInputs = [ autoreconfHook automake autoconf libtool gnumake boost mpi gcc ]; dontDisableStatic = true; From cbf6f03a849d970319aff508ca0c1ed489db87cc Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 20 Nov 2023 16:41:07 +0100 Subject: [PATCH 890/987] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'nixpkgs': 'path:/nix/store/s4jqyj35hii03rs7j5n6vn7gpgp6ja81-source?lastModified=1692447944&narHash=sha256-fkJGNjEmTPvqBs215EQU4r9ivecV5Qge5cF/QDLVn3U%3D&rev=d680ded26da5cf104dd2735a51e88d2d8f487b4d' (2023-08-19) → 'path:/nix/store/z7y28qzhk7driiwcw78k0mb24laknm0f-source?lastModified=1700390070&narHash=sha256-de9KYi8rSJpqvBfNwscWdalIJXPo8NjdIZcEJum1mH0%3D&rev=e4ad989506ec7d71f7302cc3067abd82730a4beb' (2023-11-19) Reviewed-by: Aleix Roca Nonell --- flake.lock | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/flake.lock b/flake.lock index badc279..138fc72 100644 --- a/flake.lock +++ b/flake.lock @@ -2,10 +2,10 @@ "nodes": { "nixpkgs": { "locked": { - "lastModified": 1692447944, - "narHash": "sha256-fkJGNjEmTPvqBs215EQU4r9ivecV5Qge5cF/QDLVn3U=", - "path": "/nix/store/s4jqyj35hii03rs7j5n6vn7gpgp6ja81-source", - "rev": "d680ded26da5cf104dd2735a51e88d2d8f487b4d", + "lastModified": 1700390070, + "narHash": "sha256-de9KYi8rSJpqvBfNwscWdalIJXPo8NjdIZcEJum1mH0=", + "path": "/nix/store/z7y28qzhk7driiwcw78k0mb24laknm0f-source", + "rev": "e4ad989506ec7d71f7302cc3067abd82730a4beb", "type": "path" }, "original": { From e6b4af4b169bc8c2b7d3d128096d5e9ea63f2f00 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 20 Nov 2023 16:57:54 +0100 Subject: [PATCH 891/987] Rename pkgconfig to pkg-config The alias pkgconfig has been removed. Reviewed-by: Aleix Roca Nonell --- pkgs/babeltrace/default.nix | 4 ++-- pkgs/babeltrace2/default.nix | 4 ++-- pkgs/groff/default.nix | 4 ++-- pkgs/hwloc/1.11.6/default.nix | 4 ++-- pkgs/libpsm2/default.nix | 4 ++-- pkgs/nix/default.nix | 6 +++--- pkgs/nix/static.nix | 6 +++--- pkgs/nosv/default.nix | 4 ++-- pkgs/perf/default.nix | 4 ++-- pkgs/rdma-core/default.nix | 4 ++-- pkgs/slurm/16.05.8.1/default.nix | 4 ++-- pkgs/slurm/default.nix | 4 ++-- pkgs/slurm/pmi2.nix | 4 ++-- 13 files changed, 28 insertions(+), 28 deletions(-) diff --git a/pkgs/babeltrace/default.nix b/pkgs/babeltrace/default.nix index 185fdaf..198d3dc 100644 --- a/pkgs/babeltrace/default.nix +++ b/pkgs/babeltrace/default.nix @@ -1,4 +1,4 @@ -{ stdenv, lib, fetchurl, pkgconfig, glib, libuuid, popt, elfutils, swig4, python3 }: +{ stdenv, lib, fetchurl, pkg-config, glib, libuuid, popt, elfutils, swig4, python3 }: stdenv.mkDerivation rec { name = "babeltrace-1.5.8"; @@ -8,7 +8,7 @@ stdenv.mkDerivation rec { sha256 = "1hkg3phnamxfrhwzmiiirbhdgckzfkqwhajl0lmr1wfps7j47wcz"; }; - nativeBuildInputs = [ pkgconfig ]; + nativeBuildInputs = [ pkg-config ]; buildInputs = [ glib libuuid popt elfutils swig4 python3 ]; meta = with lib; { diff --git a/pkgs/babeltrace2/default.nix b/pkgs/babeltrace2/default.nix index 43ae45c..6526c18 100644 --- a/pkgs/babeltrace2/default.nix +++ b/pkgs/babeltrace2/default.nix @@ -1,7 +1,7 @@ { stdenv , fetchurl -, pkgconfig +, pkg-config , glib , libuuid , popt @@ -22,7 +22,7 @@ stdenv.mkDerivation rec { }; enableParallelBuilding = true; - nativeBuildInputs = [ pkgconfig ]; + nativeBuildInputs = [ pkg-config ]; buildInputs = [ glib libuuid popt elfutils python3 swig4 ncurses breakpointHook ]; hardeningDisable = [ "all" ]; diff --git a/pkgs/groff/default.nix b/pkgs/groff/default.nix index 1b27039..d225f67 100644 --- a/pkgs/groff/default.nix +++ b/pkgs/groff/default.nix @@ -3,7 +3,7 @@ , psutils, netpbm #for html output , buildPackages , autoreconfHook -, pkgconfig +, pkg-config , texinfo }: @@ -37,7 +37,7 @@ stdenv.mkDerivation rec { ''; buildInputs = [ ghostscript psutils netpbm perl ]; - nativeBuildInputs = [ autoreconfHook pkgconfig texinfo ]; + nativeBuildInputs = [ autoreconfHook pkg-config texinfo ]; # Builds running without a chroot environment may detect the presence # of /usr/X11 in the host system, leading to an impure build of the diff --git a/pkgs/hwloc/1.11.6/default.nix b/pkgs/hwloc/1.11.6/default.nix index 1754fe5..5f9bfda 100644 --- a/pkgs/hwloc/1.11.6/default.nix +++ b/pkgs/hwloc/1.11.6/default.nix @@ -1,4 +1,4 @@ -{ stdenv, lib, fetchurl, pkgconfig, expat, ncurses +{ stdenv, lib, fetchurl, pkg-config, expat, ncurses , pciutils, numactl }: with lib; @@ -11,7 +11,7 @@ stdenv.mkDerivation rec { sha256 = "1yl7dm2qplwmnidd712zy12qfvxk28k8ccs694n42ybwdjwzg1bn"; }; - nativeBuildInputs = [ pkgconfig ]; + nativeBuildInputs = [ pkg-config ]; # Filter out `null' inputs. This allows users to `.override' the # derivation and set optional dependencies to `null'. diff --git a/pkgs/libpsm2/default.nix b/pkgs/libpsm2/default.nix index e75e8d7..1739496 100644 --- a/pkgs/libpsm2/default.nix +++ b/pkgs/libpsm2/default.nix @@ -1,4 +1,4 @@ -{ stdenv, lib, fetchFromGitHub, numactl, pkgconfig }: +{ stdenv, lib, fetchFromGitHub, numactl, pkg-config }: let version = "11.2.185"; @@ -14,7 +14,7 @@ stdenv.mkDerivation { enableParallelBuilding = true; - buildInputs = [ numactl pkgconfig ]; + buildInputs = [ numactl pkg-config ]; installFlags = [ "DESTDIR=$(out)" diff --git a/pkgs/nix/default.nix b/pkgs/nix/default.nix index d31b3c3..31c5f9e 100644 --- a/pkgs/nix/default.nix +++ b/pkgs/nix/default.nix @@ -11,7 +11,7 @@ let common = { lib, stdenv, fetchpatch, perl, curl, bzip2, sqlite, openssl ? null, xz , bash, coreutils, gzip, gnutar - , pkgconfig, boehmgc, perlPackages, libsodium, brotli, boost, editline, nlohmann_json + , pkg-config, boehmgc, perlPackages, libsodium, brotli, boost, editline, nlohmann_json , autoreconfHook, autoconf-archive, bison, flex, libxml2, libxslt, docbook5, docbook_xsl_ns , jq, libarchive, rustc, cargo # Used by tests @@ -40,7 +40,7 @@ common = outputs = [ "out" "dev" "man" "doc" ]; nativeBuildInputs = - [ pkgconfig ] + [ pkg-config ] ++ lib.optionals is24 [ autoreconfHook autoconf-archive bison flex libxml2 libxslt docbook5 docbook_xsl_ns jq gmock ]; @@ -158,7 +158,7 @@ common = # This is not cross-compile safe, don't have time to fix right now # but noting for future travellers. nativeBuildInputs = - [ perl pkgconfig curl nix libsodium boost autoreconfHook autoconf-archive ]; + [ perl pkg-config curl nix libsodium boost autoreconfHook autoconf-archive ]; configureFlags = [ "--with-dbi=${perlPackages.DBI}/${perl.libPrefix}" diff --git a/pkgs/nix/static.nix b/pkgs/nix/static.nix index 1d4965c..ca4059c 100644 --- a/pkgs/nix/static.nix +++ b/pkgs/nix/static.nix @@ -14,7 +14,7 @@ enableStatic = true; common = { lib, stdenv, fetchpatch, perl, curl, bzip2, sqlite, openssl ? null, xz , bash, coreutils, gzip, gnutar - , pkgconfig, boehmgc, perlPackages, libsodium, brotli, boost, editline, nlohmann_json + , pkg-config, boehmgc, perlPackages, libsodium, brotli, boost, editline, nlohmann_json , autoreconfHook, autoconf-archive, bison, flex, libxml2, libxslt, docbook5, docbook_xsl_ns , jq, libarchive # Used by tests @@ -41,7 +41,7 @@ common = outputs = [ "out" "dev" "man" "doc" ]; nativeBuildInputs = - [ pkgconfig ] + [ pkg-config ] ++ lib.optionals is24 [ autoreconfHook autoconf-archive bison flex libxml2 libxslt docbook5 docbook_xsl_ns jq ]; @@ -164,7 +164,7 @@ common = # This is not cross-compile safe, don't have time to fix right now # but noting for future travellers. nativeBuildInputs = - [ perl pkgconfig curl nix libsodium boost autoreconfHook autoconf-archive ]; + [ perl pkg-config curl nix libsodium boost autoreconfHook autoconf-archive ]; configureFlags = [ "--with-dbi=${perlPackages.DBI}/${perl.libPrefix}" diff --git a/pkgs/nosv/default.nix b/pkgs/nosv/default.nix index 4d34523..d826de6 100644 --- a/pkgs/nosv/default.nix +++ b/pkgs/nosv/default.nix @@ -3,7 +3,7 @@ , lib , autoreconfHook , fetchFromGitHub -, pkgconfig +, pkg-config , numactl , hwloc , ovni ? null @@ -46,7 +46,7 @@ in configureFlags = [ "--with-ovni=${ovni}" ]; buildInputs = [ autoreconfHook - pkgconfig + pkg-config numactl hwloc ovni diff --git a/pkgs/perf/default.nix b/pkgs/perf/default.nix index b4af296..f9e67a4 100644 --- a/pkgs/perf/default.nix +++ b/pkgs/perf/default.nix @@ -1,5 +1,5 @@ { lib, stdenv, kernel, elfutils, python2, python3, perl, newt, slang, asciidoc, xmlto, makeWrapper -, docbook_xsl, docbook_xml_dtd_45, libxslt, flex, bison, pkgconfig, libunwind, binutils +, docbook_xsl, docbook_xml_dtd_45, libxslt, flex, bison, pkg-config, libunwind, binutils , libiberty, audit, libbfd, libopcodes, openssl, systemtap, numactl , zlib, withGtk ? false, gtk2 ? null , babeltrace @@ -42,7 +42,7 @@ stdenv.mkDerivation { # perf refers both to newt and slang nativeBuildInputs = [ asciidoc xmlto docbook_xsl docbook_xml_dtd_45 libxslt - flex bison libiberty audit makeWrapper pkgconfig python3 + flex bison libiberty audit makeWrapper pkg-config python3 ]; buildInputs = [ elfutils newt slang libunwind libbfd zlib openssl systemtap.stapBuild numactl diff --git a/pkgs/rdma-core/default.nix b/pkgs/rdma-core/default.nix index e3566f6..84bbf34 100644 --- a/pkgs/rdma-core/default.nix +++ b/pkgs/rdma-core/default.nix @@ -1,4 +1,4 @@ -{ stdenv, lib, fetchFromGitHub, cmake, pkgconfig, docutils +{ stdenv, lib, fetchFromGitHub, cmake, pkg-config, docutils , pandoc, ethtool, iproute, libnl, udev, python, perl , makeWrapper } : @@ -17,7 +17,7 @@ in stdenv.mkDerivation { sha256 = "1xkmdix6mgv6kjjj6wi844bfddhl0ybalrp5g8pf5izasc43brg7"; }; - nativeBuildInputs = [ cmake pkgconfig pandoc docutils makeWrapper ]; + nativeBuildInputs = [ cmake pkg-config pandoc docutils makeWrapper ]; buildInputs = [ libnl ethtool iproute udev python perl ]; cmakeFlags = [ diff --git a/pkgs/slurm/16.05.8.1/default.nix b/pkgs/slurm/16.05.8.1/default.nix index 4d85ac0..a3f8203 100644 --- a/pkgs/slurm/16.05.8.1/default.nix +++ b/pkgs/slurm/16.05.8.1/default.nix @@ -1,4 +1,4 @@ -{ stdenv, lib, fetchFromGitHub, pkgconfig, libtool, curl +{ stdenv, lib, fetchFromGitHub, pkg-config, libtool, curl , python3, munge, perl, pam, zlib, shadow, coreutils , ncurses, libmysqlclient, lua, hwloc, numactl , readline, freeipmi, xorg, lz4, rdma-core, nixosTests @@ -41,7 +41,7 @@ stdenv.mkDerivation rec { # this doesn't fix tests completely at least makes slurmd to launch hardeningDisable = [ "fortify" "bindnow" ]; - nativeBuildInputs = [ pkgconfig libtool python3 ]; + nativeBuildInputs = [ pkg-config libtool python3 ]; buildInputs = [ curl python3 munge perl pam zlib libmysqlclient ncurses lz4 rdma-core diff --git a/pkgs/slurm/default.nix b/pkgs/slurm/default.nix index d65440e..fd7a43c 100644 --- a/pkgs/slurm/default.nix +++ b/pkgs/slurm/default.nix @@ -1,4 +1,4 @@ -{ stdenv, lib, fetchFromGitHub, pkgconfig, libtool, curl +{ stdenv, lib, fetchFromGitHub, pkg-config, libtool, curl , python, munge, perl, pam, openssl , ncurses, libmysqlclient, gtk2, lua, hwloc, numactl , readline, freeipmi, libssh2, xorg @@ -33,7 +33,7 @@ stdenv.mkDerivation rec { # this doesn't fix tests completely at least makes slurmd to launch hardeningDisable = [ "bindnow" ]; - nativeBuildInputs = [ pkgconfig libtool ]; + nativeBuildInputs = [ pkg-config libtool ]; buildInputs = [ curl python munge perl pam openssl libmysqlclient ncurses gtk2 diff --git a/pkgs/slurm/pmi2.nix b/pkgs/slurm/pmi2.nix index da9811f..83339c7 100644 --- a/pkgs/slurm/pmi2.nix +++ b/pkgs/slurm/pmi2.nix @@ -1,4 +1,4 @@ -{ stdenv, lib, fetchFromGitHub, pkgconfig, libtool, curl +{ stdenv, lib, fetchFromGitHub, pkg-config, libtool, curl , python3, munge, perl, pam, openssl , ncurses, libmysqlclient, gtk2, lua, hwloc, numactl , readline, freeipmi, libssh2, xorg @@ -33,7 +33,7 @@ stdenv.mkDerivation rec { # this doesn't fix tests completely at least makes slurmd to launch hardeningDisable = [ "bindnow" ]; - nativeBuildInputs = [ pkgconfig libtool ]; + nativeBuildInputs = [ pkg-config libtool ]; buildInputs = [ curl python3 munge perl pam openssl libmysqlclient ncurses gtk2 From 4033854014f2413a78e3ecc063daf5f14a23b986 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 20 Nov 2023 19:32:46 +0100 Subject: [PATCH 892/987] Disable nix-wrap as it is broken The pkgsStatic.libcap dependency fails to build. Reviewed-by: Aleix Roca Nonell --- overlay.nix | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/overlay.nix b/overlay.nix index 1beea44..5e52891 100644 --- a/overlay.nix +++ b/overlay.nix @@ -26,7 +26,9 @@ let nanos6 = callPackage ./pkgs/nanos6/default.nix { }; nanos6Debug = final.nanos6.override { enableDebug = true; }; nixtools = callPackage ./pkgs/nixtools/default.nix { }; - nix-wrap = callPackage ./pkgs/nix-wrap/default.nix { }; + # Broken because of pkgsStatic.libcap + # See: https://github.com/NixOS/nixpkgs/pull/268791 + #nix-wrap = callPackage ./pkgs/nix-wrap/default.nix { }; nodes = callPackage ./pkgs/nodes/default.nix { }; nosv = callPackage ./pkgs/nosv/default.nix { }; osumb = callPackage ./pkgs/osu/default.nix { }; From 501a92376b5b7d63afb89dd6a2027877548f90ff Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 21 Nov 2023 16:55:47 +0100 Subject: [PATCH 893/987] Fix GPI-2 using an unified rdma-core The libraries and includes are no longer in the default output, so we merge them in a single directory using symlinkJoin. Reviewed-by: Aleix Roca Nonell --- pkgs/gpi-2/default.nix | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/pkgs/gpi-2/default.nix b/pkgs/gpi-2/default.nix index 0e5d0d1..0386978 100644 --- a/pkgs/gpi-2/default.nix +++ b/pkgs/gpi-2/default.nix @@ -1,5 +1,6 @@ { stdenv +, symlinkJoin , slurm , rdma-core , autoconf @@ -10,6 +11,13 @@ , gfortran }: +let + rdma-core-all = symlinkJoin { + name ="rdma-core-all"; + paths = [ rdma-core.dev rdma-core.out ]; + }; +in + stdenv.mkDerivation rec { pname = "GPI-2"; version = src.shortRev; @@ -28,14 +36,14 @@ stdenv.mkDerivation rec { ''; configureFlags = [ - "--with-infiniband=${rdma-core}" + "--with-infiniband=${rdma-core-all}" "--with-mpi=${mpi}" "--with-slurm" "CFLAGS=-fPIC" "CXXFLAGS=-fPIC" ]; - buildInputs = [ slurm mpi rdma-core autoconf automake libtool rsync gfortran ]; + buildInputs = [ slurm mpi rdma-core-all autoconf automake libtool rsync gfortran ]; hardeningDisable = [ "all" ]; } From 3f17a489ef7f745f229a7562bae0053965f35709 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 21 Nov 2023 16:58:57 +0100 Subject: [PATCH 894/987] Fix clang build adding rpath to libstdc++ The binaries generated during the build process of clang are missing the RPATH of the libstdc++.so library, which is provided by gcc libs. Similarly, the clang binary itself also needs the rpath to the libstdc++.so library path. Reviewed-by: Aleix Roca Nonell --- pkgs/llvm-ompss2/clang.nix | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/pkgs/llvm-ompss2/clang.nix b/pkgs/llvm-ompss2/clang.nix index c517915..6a856af 100644 --- a/pkgs/llvm-ompss2/clang.nix +++ b/pkgs/llvm-ompss2/clang.nix @@ -12,6 +12,7 @@ , zlib , nosv , pkg-config +, gcc # needed to set the rpath of libstdc++ for clang-tblgen , enableDebug ? false , enableNosv ? false , useGit ? false @@ -71,6 +72,7 @@ in stdenv.mkDerivation rec { libffi pkg-config zlib + gcc.cc.lib # Required for libstdc++.so.6 ] ++ lib.optionals enableNosv [ nosv ]; @@ -100,7 +102,7 @@ in stdenv.mkDerivation rec { "-DLLVM_BUILD_LLVM_DYLIB=ON" "-DLLVM_LINK_LLVM_DYLIB=ON" # Required to run clang-ast-dump and clang-tblgen during build - "-DCMAKE_BUILD_RPATH=$PWD/lib:${zlib}/lib" + "-DCMAKE_BUILD_RPATH=$PWD/lib:${zlib}/lib:${gcc.cc.lib}/lib" "-DLLVM_ENABLE_LLD=ON" "-DCMAKE_CXX_FLAGS_DEBUG=-g -ggnu-pubnames" "-DCMAKE_EXE_LINKER_FLAGS_DEBUG=-Wl,--gdb-index" @@ -117,7 +119,7 @@ in stdenv.mkDerivation rec { # Set the rpath to include external libraries (zlib) both on build and # install "-DCMAKE_INSTALL_RPATH_USE_LINK_PATH=ON" - "-DCMAKE_INSTALL_RPATH=${zlib}/lib" + "-DCMAKE_INSTALL_RPATH=${zlib}/lib:${gcc.cc.lib}/lib" ) ''; From ff34ab5732885a8279b5d6ee1e1d55e3ab6c57f2 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 21 Nov 2023 17:01:32 +0100 Subject: [PATCH 895/987] Enable NIX_DEBUG = 1 in the clang-ompss2 test Reviewed-by: Aleix Roca Nonell --- test/compilers/clang-ompss2.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/compilers/clang-ompss2.nix b/test/compilers/clang-ompss2.nix index 3907bb8..22595ef 100644 --- a/test/compilers/clang-ompss2.nix +++ b/test/compilers/clang-ompss2.nix @@ -5,9 +5,9 @@ stdenv.mkDerivation rec { name = "test-clang-ompss2"; src = ./.; buildInputs = [ clang-ompss2 nanos6 ]; + NIX_DEBUG = 1; buildPhase = '' - #export NIX_DEBUG=6 clang -fompss-2 hello.c -o hello ./hello clang++ -fompss-2 hello.cc -o hello From e148de50d68b3eeafc3389b331cf042075971c4b Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 21 Nov 2023 17:19:25 +0100 Subject: [PATCH 896/987] Remove Paraver fast The build is broken and the official Paraver already merged support for fast trace loading. Reviewed-by: Aleix Roca Nonell --- overlay.nix | 2 - pkgs/paraver/kernel-fast.nix | 49 -------------------- pkgs/paraver/wxparaver-fast.nix | 75 ------------------------------- pkgs/paraver/wxparaver-fast.patch | 13 ------ 4 files changed, 139 deletions(-) delete mode 100644 pkgs/paraver/kernel-fast.nix delete mode 100644 pkgs/paraver/wxparaver-fast.nix delete mode 100644 pkgs/paraver/wxparaver-fast.patch diff --git a/overlay.nix b/overlay.nix index 5e52891..0389975 100644 --- a/overlay.nix +++ b/overlay.nix @@ -35,7 +35,6 @@ let ovni = callPackage ./pkgs/ovni/default.nix { }; ovniGit = final.ovni.override { useGit = true; }; paraverKernel = callPackage ./pkgs/paraver/kernel.nix { }; - #paraverKernelFast = callPackage ./pkgs/paraver/kernel-fast.nix { }; # Outdated #pscom = callPackage ./pkgs/parastation/pscom.nix { }; # Unmaintaned #psmpi = callPackage ./pkgs/parastation/psmpi.nix { }; # Unmaintaned sonar = callPackage ./pkgs/sonar/default.nix { }; @@ -46,7 +45,6 @@ let tagaspi = callPackage ./pkgs/tagaspi/default.nix { }; tampi = callPackage ./pkgs/tampi/default.nix { }; wxparaver = callPackage ./pkgs/paraver/default.nix { }; - #wxparaverFast = callPackage ./pkgs/paraver/wxparaver-fast.nix { }; # Outdated }; in bscPkgs // { diff --git a/pkgs/paraver/kernel-fast.nix b/pkgs/paraver/kernel-fast.nix deleted file mode 100644 index cf2a3f3..0000000 --- a/pkgs/paraver/kernel-fast.nix +++ /dev/null @@ -1,49 +0,0 @@ -{ - stdenv -, autoreconfHook -, boost -, libxml2 -, xml2 -, wxpropgrid -, wxGTK28 -, autoconf -, automake -}: - -let - wx = wxGTK28; -in -stdenv.mkDerivation rec { - pname = "paraverKernelFast"; - version = "${src.shortRev}"; - - src = builtins.fetchGit { - url = "git@bscpm03.bsc.es:rpenacob/paraver-kernel.git"; - rev = "76f508095c35528ad89078473dc70b9600e507ff"; - ref = "fast"; - }; - - hardeningDisable = [ "all" ]; - enableParallelBuilding = true; - - dontStrip = true; - - preConfigure = '' - export CFLAGS="-O3 -DPARALLEL_ENABLED" - export CXXFLAGS="-std=c++17 -O3 -DPARALLEL_ENABLED" - ''; - - configureFlags = [ - "--with-boost=${boost}" - "--enable-openmp" - ]; - - buildInputs = [ - autoreconfHook - boost - libxml2.dev - xml2 - autoconf - automake - ]; -} diff --git a/pkgs/paraver/wxparaver-fast.nix b/pkgs/paraver/wxparaver-fast.nix deleted file mode 100644 index 37c84b1..0000000 --- a/pkgs/paraver/wxparaver-fast.nix +++ /dev/null @@ -1,75 +0,0 @@ -{ - stdenv -, autoreconfHook -, boost -, libxml2 -, xml2 -, wxpropgrid -, wxGTK28 -, autoconf -, automake -, paraverKernelFast -, openssl -}: - -let - wx = wxGTK28; -in -stdenv.mkDerivation rec { - pname = "paraverFast"; - version = "${src.shortRev}"; - - src = builtins.fetchGit { - url = "https://github.com/bsc-performance-tools/wxparaver.git"; - rev = "9fc61decb6d8d9b1cacb50639c3b2c85788b2292"; - ref = "master"; - }; - - hardeningDisable = [ "all" ]; - - patches = [ ./wxparaver-fast.patch ]; - - # Fix the PARAVER_HOME variable - postPatch = '' - sed -i 's@^PARAVER_HOME=.*$@PARAVER_HOME='$out'@g' docs/wxparaver - ''; - - dontStrip = true; - enableParallelBuilding = true; - - preConfigure = '' - export CFLAGS="-O3" - export CXXFLAGS="-std=c++17 -O3" - ''; - - configureFlags = [ - "--with-boost=${boost}" - "--with-wx-config=${wx}/bin/wx-config" - "--with-wxpropgrid-dir=${wxpropgrid}" - "--with-paraver=${paraverKernelFast}" - "--with-openssl=${openssl.dev}" - ]; - - buildInputs = [ - autoreconfHook - boost - libxml2.dev - xml2 - wxpropgrid - wx - autoconf - automake - paraverKernelFast - openssl.dev - ]; - - postInstall = '' - mkdir -p $out/include - mkdir -p $out/lib/paraver-kernel - mkdir -p $out/share/filters-config - cp -p ${paraverKernelFast}/bin/* $out/bin - # cp -p ${paraverKernelFast}/include/* $out/include - cp -a ${paraverKernelFast}/lib/paraver-kernel $out/lib/paraver-kernel - cp -p ${paraverKernelFast}/share/filters-config/* $out/share/filters-config - ''; -} diff --git a/pkgs/paraver/wxparaver-fast.patch b/pkgs/paraver/wxparaver-fast.patch deleted file mode 100644 index ae41cc7..0000000 --- a/pkgs/paraver/wxparaver-fast.patch +++ /dev/null @@ -1,13 +0,0 @@ ---- a/docs/wxparaver 1970-01-01 01:00:01.000000000 +0100 -+++ b/docs/wxparaver 2021-11-02 12:08:54.670700017 +0100 -@@ -31,5 +31,10 @@ - - @inst_LOGIN_NODE_DETECTION@ - -+echo "WARNING: Using paraver fast, the trace must be ordered!" >&2 -+export PARAVER_FAST=1 -+ -+export LANG=C -+ - LD_LIBRARY_PATH="@inst_BOOST_LIBDIR@${PARAVER_HOME}/${LIB_DIR}/paraver-kernel:@inst_WXWIDGETS_LIBDIR@@inst_WXPROPGRID_LIB_PATH@@inst_LIBSSL_LIBDIR@${PARAVER_HOME}/${LIB_DIR}/wxparaver:$LD_LIBRARY_PATH" "${PARAVER_HOME}/bin/wxparaver.bin" "$@" - From 20ded0c0df37b8a15c9687bb923ac33ca5df09f3 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 23 Nov 2023 14:56:22 +0100 Subject: [PATCH 897/987] Change the GPI-2 URL to a public repository Reviewed-by: Aleix Roca Nonell --- pkgs/gpi-2/default.nix | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/pkgs/gpi-2/default.nix b/pkgs/gpi-2/default.nix index 0386978..f6f682e 100644 --- a/pkgs/gpi-2/default.nix +++ b/pkgs/gpi-2/default.nix @@ -1,5 +1,6 @@ { stdenv +, fetchurl , symlinkJoin , slurm , rdma-core @@ -20,12 +21,11 @@ in stdenv.mkDerivation rec { pname = "GPI-2"; - version = src.shortRev; + version = "tagaspi-2021.11"; - src = builtins.fetchGit { - url = "ssh://git@bscpm03.bsc.es/interoperability/GPI-2"; - ref = "refs/tags/tagaspi-2021.11"; - rev = "9082fe7770fa9f6acba1b1ac938ad209a3d09477"; + src = fetchurl { + url = "https://pm.bsc.es/gitlab/interoperability/extern/GPI-2/-/archive/${version}/GPI-2-${version}.tar.gz"; + hash = "sha256-eY2wpyTpnOXRoAcYoAP82Jq9Q7p5WwDpMj+f1vEX5zw="; }; enableParallelBuilding = true; From d9ae85ce4b3c20d94673e5860477362b12f69581 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 23 Nov 2023 15:23:15 +0100 Subject: [PATCH 898/987] Add a more strict test for OpenMP+nOS-V In this test we ensure that the worksharing region is running inside a nOS-V task, so we know that we are not using the vanilla OpenMP by accident. We also keep the previous test test/compilers/clang-openmp.nix as-is, so we can check that the compiler injects the nosv library dependency in the final binary on its own. Reviewed-by: Aleix Roca Nonell --- overlay.nix | 3 ++ test/compilers/clang-openmp-nosv.nix | 60 ++++++++++++++++++++++++++++ 2 files changed, 63 insertions(+) create mode 100644 test/compilers/clang-openmp-nosv.nix diff --git a/overlay.nix b/overlay.nix index 0389975..c82c2ac 100644 --- a/overlay.nix +++ b/overlay.nix @@ -78,6 +78,9 @@ in bscPkgs // { clangNosvOpenmp-task = callPackage ./test/compilers/clang-openmp.nix { stdenv = final.stdenvClangOmpss2OpenmpNodes; }; + clangNosvOpenmp-nosv = callPackage ./test/compilers/clang-openmp-nosv.nix { + stdenv = final.stdenvClangOmpss2OpenmpNodes; + }; }; pkgs = final.runCommand "ci-pkgs" { } diff --git a/test/compilers/clang-openmp-nosv.nix b/test/compilers/clang-openmp-nosv.nix new file mode 100644 index 0000000..f257537 --- /dev/null +++ b/test/compilers/clang-openmp-nosv.nix @@ -0,0 +1,60 @@ +{ + stdenv +, nosv +, writeText +}: + +let + hello_c = writeText "hello.c" '' + #include + #include + #include + int main(int argc, char *argv[]) + { + int test = 1; + #pragma omp parallel + #pragma omp single + #pragma omp task + { + if (nosv_self() == NULL) { + printf("nosv_self() returned NULL\n"); + exit(1); + } else { + printf("nosv_self() INSIDE TASK OK\n"); + } + test = 0; + } + + return test; + } + ''; + +in stdenv.mkDerivation { + pname = "openmp-test-nosv"; + version = "1.0.0"; + + dontUnpack = true; + dontConfigure = true; + + # nOS-V requires access to /sys/devices to request NUMA information. It will + # fail to run otherwise, so we disable the sandbox for this test. + __noChroot = true; + + buildInputs = [ nosv ]; + + buildPhase = '' + set -x + + cp ${hello_c} hello.c + clang -fopenmp ./hello.c -lnosv -o hello + ./hello | grep "INSIDE TASK OK" + + set +x + ''; + + installPhase = '' + touch $out + ''; + +} + From 8a31895e48ac36a21444381ed7568dc8d8f0d958 Mon Sep 17 00:00:00 2001 From: Aleix Roca Nonell Date: Fri, 24 Nov 2023 15:22:49 +0100 Subject: [PATCH 899/987] Update nixpkgs commit in default.nix Reviewed-By: Rodrigo Arias Mallo --- nixpkgs.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/nixpkgs.nix b/nixpkgs.nix index 37e5ebd..2075697 100644 --- a/nixpkgs.nix +++ b/nixpkgs.nix @@ -1,9 +1,9 @@ let - commit = "d680ded26da5cf104dd2735a51e88d2d8f487b4d"; + commit = "e4ad989506ec7d71f7302cc3067abd82730a4beb"; in builtins.fetchTarball { # Descriptive name to make the store path easier to identify name = "nixpkgs-${commit}"; url = "https://github.com/nixos/nixpkgs/archive/${commit}.tar.gz"; # Hash obtained using `nix-prefetch-url --unpack ` - sha256 = "0xczslr40zy1wlg0ir8mwyyn5gz22i2f9dfd0vmgnk1664v4chky"; + sha256 = "sha256-de9KYi8rSJpqvBfNwscWdalIJXPo8NjdIZcEJum1mH0="; } From af590d5ace91bc6eca5ed87804c54235db3d22e8 Mon Sep 17 00:00:00 2001 From: Aleix Roca Nonell Date: Fri, 24 Nov 2023 15:22:50 +0100 Subject: [PATCH 900/987] Clang 2023.11 update Clang nos-v-merge branch has been merged into master. Reviewed-By: Rodrigo Arias Mallo --- overlay.nix | 2 +- pkgs/llvm-ompss2/clang.nix | 6 +++--- pkgs/llvm-ompss2/openmp.nix | 8 -------- 3 files changed, 4 insertions(+), 12 deletions(-) delete mode 100644 pkgs/llvm-ompss2/openmp.nix diff --git a/overlay.nix b/overlay.nix index c82c2ac..2963918 100644 --- a/overlay.nix +++ b/overlay.nix @@ -16,7 +16,7 @@ let clangOmpss2Nodes = callPackage ./pkgs/llvm-ompss2/default.nix { ompss2rt = final.nodes; }; clangOmpss2OpenmpNodes = callPackage ./pkgs/llvm-ompss2/default.nix { ompss2rt = final.nodes; clangOmpss2Unwrapped = final.clangOmpss2OpenmpUnwrapped; }; clangOmpss2Unwrapped = callPackage ./pkgs/llvm-ompss2/clang.nix { }; - clangOmpss2OpenmpUnwrapped = import ./pkgs/llvm-ompss2/openmp.nix { clangOmpss2Unwrapped = final.clangOmpss2Unwrapped; }; + clangOmpss2OpenmpUnwrapped = final.clangOmpss2Unwrapped.override { enableNosv = true; }; #extrae = callPackage ./pkgs/extrae/default.nix { }; # Broken and outdated gpi-2 = callPackage ./pkgs/gpi-2/default.nix { }; intelPackages_2023 = callPackage ./pkgs/intel-oneapi/2023.nix { }; diff --git a/pkgs/llvm-ompss2/clang.nix b/pkgs/llvm-ompss2/clang.nix index 6a856af..1d936fe 100644 --- a/pkgs/llvm-ompss2/clang.nix +++ b/pkgs/llvm-ompss2/clang.nix @@ -18,19 +18,19 @@ , useGit ? false , gitUrl ? "ssh://git@bscpm03.bsc.es/llvm-ompss/llvm-mono.git" , gitBranch ? "master" -, gitCommit ? "8d106db69c02fb6ec10baedc47b76f068b419d4a" +, gitCommit ? "0a6d6c64b04f9bbbe1399f18be426e191fb6b42c" }: let stdenv = llvmPackages_latest.stdenv; release = rec { - version = "2023.05.1"; + version = "2023.11"; src = fetchFromGitHub { owner = "bsc-pm"; repo = "llvm"; rev = "refs/tags/github-release-${version}"; - sha256 = "sha256-NB/27F1ZRJf6MXFQjinT2gCsoPbEZYlBMhd3uKcK2GM="; + hash = "sha256-XLYS401BixGw3Ke/JKuikVKvbA92ENCdUvYLyZX9UtI="; }; }; diff --git a/pkgs/llvm-ompss2/openmp.nix b/pkgs/llvm-ompss2/openmp.nix deleted file mode 100644 index 035d246..0000000 --- a/pkgs/llvm-ompss2/openmp.nix +++ /dev/null @@ -1,8 +0,0 @@ -{clangOmpss2Unwrapped}: - -clangOmpss2Unwrapped.override { - useGit = true; - enableNosv = true; - gitBranch = "nos-v-v2.1"; - gitCommit = "03bdfef9c264afdbee9f0a6cef32a66d976ef758"; -} From bdc3670ccc81998fb677cea4d9dd01f9c6590b7f Mon Sep 17 00:00:00 2001 From: Aleix Roca Nonell Date: Fri, 24 Nov 2023 15:22:51 +0100 Subject: [PATCH 901/987] Nanos6 2023.11 update Reviewed-By: Rodrigo Arias Mallo --- pkgs/nanos6/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/nanos6/default.nix b/pkgs/nanos6/default.nix index bd0f10a..22d9dc5 100644 --- a/pkgs/nanos6/default.nix +++ b/pkgs/nanos6/default.nix @@ -19,7 +19,7 @@ , useGit ? false , gitUrl ? "ssh://git@bscpm03.bsc.es/nanos6/nanos6" , gitBranch ? "master" -, gitCommit ? "58712e669ac02f721fb841247361ea54f53a6a47" +, gitCommit ? "4fdddf67b573fbe624bf64b92c0a9b4e344b9dd3" }: assert enableJemalloc -> (jemallocNanos6 != null); @@ -28,12 +28,12 @@ with lib; let release = rec { - version = "3.0"; + version = "4.0"; src = fetchFromGitHub { owner = "bsc-pm"; repo = "nanos6"; rev = "version-${version}"; - sha256 = "sha256-XEG8/8yQv5/OdSyK9Kig8xuWe6mTZ1eQKhXx3fXlQ1Y="; + hash = "sha256-o2j7xNufdjcWykbwDDHQYxYCs4kpyQvJnuFyeXYZULw="; }; }; From b5dae25e7fb176a7b4db032a1c54b09d1709d543 Mon Sep 17 00:00:00 2001 From: Aleix Roca Nonell Date: Fri, 24 Nov 2023 15:22:52 +0100 Subject: [PATCH 902/987] NODES 2023.11 update Reviewed-By: Rodrigo Arias Mallo --- pkgs/nodes/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/nodes/default.nix b/pkgs/nodes/default.nix index 3dde364..f834525 100644 --- a/pkgs/nodes/default.nix +++ b/pkgs/nodes/default.nix @@ -18,19 +18,19 @@ , useGit ? false , gitUrl ? "ssh://git@gitlab-internal.bsc.es/nos-v/nodes.git" , gitBranch ? "master" -, gitCommit ? "c1094418a0a4dbfe78fa38b3f44741bd36d56e51" +, gitCommit ? "813da5976d06f587747dbb07aa911cfd855eff1a" }: with lib; let release = rec { - version = "1.0.1"; + version = "1.1"; src = fetchFromGitHub { owner = "bsc-pm"; repo = "nodes"; rev = "version-${version}"; - sha256 = "sha256-+gnFSjScxq+AB0FJxqxk388chayyDiQ+wBpCMKnX6m4="; + hash = "sha256-Cfj3ozVK/sx/eccTjv7wZX8KUMdca0vY0RY0UWSRftg="; }; }; From 28a7496fbd537130e9657bce97ffeafbb2fb695d Mon Sep 17 00:00:00 2001 From: Aleix Roca Nonell Date: Fri, 24 Nov 2023 15:22:53 +0100 Subject: [PATCH 903/987] nOS-V 2023.11 update Reviewed-By: Rodrigo Arias Mallo --- pkgs/nosv/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/nosv/default.nix b/pkgs/nosv/default.nix index d826de6..eaeacf1 100644 --- a/pkgs/nosv/default.nix +++ b/pkgs/nosv/default.nix @@ -10,19 +10,19 @@ , useGit ? false , gitUrl ? "git@gitlab-internal.bsc.es:nos-v/nos-v.git" , gitBranch ? "master" -, gitCommit ? "0edc81d065f20d3d2f8acf94df1d2640dc430d5e" +, gitCommit ? "f696951f62cac018bd9fd15e2fb9f34e96b185b5" }: with lib; let release = rec { - version = "1.0.0"; + version = "2.1.1"; src = fetchFromGitHub { owner = "bsc-pm"; repo = "nos-v"; rev = "${version}"; - sha256 = "sha256-1Dsxd7OQYxnPvFnpGgCTlG9wbxV8vQpzvSy+cdPD8ro="; + hash = "sha256-G80vaHep72iovnlIgqqjaQOYYtn83UJG7XrXnI/WO70="; }; }; From 54b4448e4b22f11a10ca8985fb710e6120eb6400 Mon Sep 17 00:00:00 2001 From: Aleix Roca Nonell Date: Fri, 24 Nov 2023 15:22:54 +0100 Subject: [PATCH 904/987] Ovni 2023.11 update Reviewed-By: Rodrigo Arias Mallo --- pkgs/ovni/default.nix | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pkgs/ovni/default.nix b/pkgs/ovni/default.nix index 3bd54da..469d989 100644 --- a/pkgs/ovni/default.nix +++ b/pkgs/ovni/default.nix @@ -7,7 +7,7 @@ , useGit ? false , gitBranch ? "master" , gitUrl ? "ssh://git@bscpm03.bsc.es/rarias/ovni.git" -, gitCommit ? "d0a47783f20f8b177a48418966dae45454193a6a" +, gitCommit ? "7a33deffb7aaae70527125d48428f22169c9d39e" , enableDebug ? false }: @@ -15,13 +15,13 @@ with lib; let release = rec { - version = "1.3.0"; + version = "1.4.1"; src = fetchFromGitHub { owner = "bsc-pm"; repo = "ovni"; rev = "${version}"; - sha256 = "sha256-4ulohGnbQwAZ/qnm5bmceoMhTuAHlCfLAWEodZ9YMP0="; - } // { shortRev = "b6903bc4"; }; + hash = "sha256-/vv7Yy6dzoxuHjMc0h/vFFwWzysPLXFZIN2rbLT/SC8="; + } // { shortRev = "7a33def"; }; }; git = rec { From 1520eaa64e1ce0b30a3f720a3dfbfc28f4f4d43d Mon Sep 17 00:00:00 2001 From: Aleix Roca Nonell Date: Fri, 24 Nov 2023 15:22:55 +0100 Subject: [PATCH 905/987] TAMPI 2023.11 update Reviewed-By: Rodrigo Arias Mallo --- pkgs/tampi/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/tampi/default.nix b/pkgs/tampi/default.nix index 392131c..a5c22bc 100644 --- a/pkgs/tampi/default.nix +++ b/pkgs/tampi/default.nix @@ -12,7 +12,7 @@ }: stdenv.mkDerivation rec { - version = "2.0"; + version = "3.0"; pname = "tampi"; enableParallelBuilding = true; separateDebugInfo = true; @@ -23,7 +23,7 @@ stdenv.mkDerivation rec { owner = "bsc-pm"; repo = "tampi"; rev = "v${version}"; - sha256 = "sha256-m0LDgP4pfUwavUaagcCsZ/ZHbnWBZdtHtGq108btGKM="; + hash = "sha256-qdWBxPsXKM428F2ojt2B6/0ZsQyGzEiojNaqbhDmrks="; }; hardeningDisable = [ "all" ]; From 062b1c3c771eb9451e20be52a8a702c82ac86c05 Mon Sep 17 00:00:00 2001 From: Aleix Roca Nonell Date: Fri, 24 Nov 2023 15:22:56 +0100 Subject: [PATCH 906/987] Mercurium 2023.11 update Reviewed-By: Rodrigo Arias Mallo --- pkgs/mcxx/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/mcxx/default.nix b/pkgs/mcxx/default.nix index 9d925a3..3c950ee 100644 --- a/pkgs/mcxx/default.nix +++ b/pkgs/mcxx/default.nix @@ -15,7 +15,7 @@ stdenv.mkDerivation rec { pname = "mcxx"; - version = "2023.05"; + version = "2023.11"; passthru = { CC = "mcc"; @@ -27,7 +27,7 @@ stdenv.mkDerivation rec { owner = "bsc-pm"; repo = pname; rev = "github-release-${version}"; - sha256 = "sha256-GyBvyy/HD3t9rHSXAYZRMhn4o4Nm/HFfjuOS8J0LPu8="; + hash = "sha256-GyBvyy/HD3t9rHSXAYZRMhn4o4Nm/HFfjuOS8J0LPu8="; }; enableParallelBuilding = true; From 1e52075c18bd2cb01382b1d8afbdcd4928a9b944 Mon Sep 17 00:00:00 2001 From: Aleix Roca Nonell Date: Fri, 24 Nov 2023 15:22:57 +0100 Subject: [PATCH 907/987] TAGASPI 2023.11 update and move to public repo Reviewed-By: Rodrigo Arias Mallo --- pkgs/tagaspi/default.nix | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/pkgs/tagaspi/default.nix b/pkgs/tagaspi/default.nix index 71fba52..d9c7557 100644 --- a/pkgs/tagaspi/default.nix +++ b/pkgs/tagaspi/default.nix @@ -1,5 +1,6 @@ { stdenv +, fetchFromGitHub , automake , autoconf , libtool @@ -14,10 +15,17 @@ stdenv.mkDerivation rec { pname = "tagaspi"; - version = src.shortRev; enableParallelBuilding = true; separateDebugInfo = true; + version = "2.0"; + src = fetchFromGitHub { + owner = "bsc-pm"; + repo = "tagaspi"; + rev = "v${version}"; + hash = "sha256-RGG/Re2uM293HduZfGzKUWioDtwnSYYdfeG9pVrX9EM="; + }; + buildInputs = [ autoreconfHook automake @@ -38,11 +46,5 @@ stdenv.mkDerivation rec { "CXXFLAGS=-fPIC" ]; - src = builtins.fetchGit { - url = "ssh://git@bscpm03.bsc.es/interoperability/tagaspi"; - ref = "refs/tags/2021.11"; - rev = "5aabb1849de2e512cc8729f32783051ecd4cab97"; - }; - hardeningDisable = [ "all" ]; } From f55b48ec8605a5ca1c1ee29bb38e5891b2d1ac55 Mon Sep 17 00:00:00 2001 From: Aleix Roca Nonell Date: Fri, 24 Nov 2023 15:22:58 +0100 Subject: [PATCH 908/987] Update ompv test with -fopenmp=libompv flag Reviewed-By: Rodrigo Arias Mallo Tested-By: Rodrigo Arias Mallo --- test/compilers/clang-openmp-nosv.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/compilers/clang-openmp-nosv.nix b/test/compilers/clang-openmp-nosv.nix index f257537..237e466 100644 --- a/test/compilers/clang-openmp-nosv.nix +++ b/test/compilers/clang-openmp-nosv.nix @@ -46,7 +46,7 @@ in stdenv.mkDerivation { set -x cp ${hello_c} hello.c - clang -fopenmp ./hello.c -lnosv -o hello + clang -fopenmp=libompv ./hello.c -lnosv -o hello ./hello | grep "INSIDE TASK OK" set +x From 9aaea0da0ec20067b21343baceb5ce4b5942d4ae Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 28 Nov 2023 16:30:16 +0100 Subject: [PATCH 909/987] Update paraver: 4.10.6 -> 4.11.2 Reviewed-by: Aleix Roca Nonell --- pkgs/paraver/default.nix | 4 ++-- pkgs/paraver/kernel.nix | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/paraver/default.nix b/pkgs/paraver/default.nix index c07591f..902d295 100644 --- a/pkgs/paraver/default.nix +++ b/pkgs/paraver/default.nix @@ -17,11 +17,11 @@ let in stdenv.mkDerivation rec { pname = "wxparaver"; - version = "4.10.6"; + version = "4.11.2"; src = builtins.fetchGit { url = "https://github.com/bsc-performance-tools/wxparaver.git"; - rev = "fe55c724ab59a5b0e60718919297bdf95582badb"; # v4.10.6 (missing tag) + rev = "129e6b4a4f061e5a319049db8db1620f5de3bd70"; # v4.11.2 (missing tag) ref = "master"; }; diff --git a/pkgs/paraver/kernel.nix b/pkgs/paraver/kernel.nix index 697d10a..d623b3c 100644 --- a/pkgs/paraver/kernel.nix +++ b/pkgs/paraver/kernel.nix @@ -19,7 +19,7 @@ stdenv.mkDerivation rec { src = builtins.fetchGit { url = "https://github.com/bsc-performance-tools/paraver-kernel.git"; - rev = "3f89ec68da8e53ee227c57a2024bf789fa68ba98"; # master (missing tag) + rev = "2e167da3cee78ca11e31b74faefb23f12bac2b8c"; # master (missing tag) ref = "master"; }; From fec4ddf6abf63e1928366d9e5d3363093a1eb3f3 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 29 Nov 2023 16:59:19 +0100 Subject: [PATCH 910/987] Merge TAMPI release and git in the same file In order to reduce duplicate information we just place the two sources in the same file. Reviewed-by: Aleix Roca Nonell --- pkgs/tampi/default.nix | 46 ++++++++++++++++++++++++++++++++---------- pkgs/tampi/git.nix | 26 ------------------------ 2 files changed, 35 insertions(+), 37 deletions(-) delete mode 100644 pkgs/tampi/git.nix diff --git a/pkgs/tampi/default.nix b/pkgs/tampi/default.nix index a5c22bc..1c25b6c 100644 --- a/pkgs/tampi/default.nix +++ b/pkgs/tampi/default.nix @@ -9,22 +9,46 @@ , mpi , gcc , autoreconfHook +, useGit ? false +, gitUrl ? "ssh://git@bscpm03.bsc.es/interoperability/tampi.git" +, gitBranch ? "master" +, gitCommit ? "16f92094ca6da25e2f561c000f5fbc2901944f7b" }: -stdenv.mkDerivation rec { - version = "3.0"; +let + release = rec { + version = "3.0"; + src = fetchFromGitHub { + owner = "bsc-pm"; + repo = "tampi"; + rev = "v${version}"; + hash = "sha256-qdWBxPsXKM428F2ojt2B6/0ZsQyGzEiojNaqbhDmrks="; + }; + }; + git = rec { + version = src.shortRev; + src = builtins.fetchGit { + url = gitUrl; + ref = gitBranch; + rev = gitCommit; + }; + }; + source = if (useGit) then git else release; +in stdenv.mkDerivation rec { pname = "tampi"; + inherit (source) src version; enableParallelBuilding = true; separateDebugInfo = true; - buildInputs = [ autoreconfHook automake autoconf libtool gnumake boost mpi gcc ]; + buildInputs = [ + autoreconfHook + automake + autoconf + libtool + gnumake + boost + mpi + gcc + ]; dontDisableStatic = true; - - src = fetchFromGitHub { - owner = "bsc-pm"; - repo = "tampi"; - rev = "v${version}"; - hash = "sha256-qdWBxPsXKM428F2ojt2B6/0ZsQyGzEiojNaqbhDmrks="; - }; - hardeningDisable = [ "all" ]; } diff --git a/pkgs/tampi/git.nix b/pkgs/tampi/git.nix deleted file mode 100644 index cb1378e..0000000 --- a/pkgs/tampi/git.nix +++ /dev/null @@ -1,26 +0,0 @@ -{ - stdenv -, fetchurl -, automake -, autoconf -, libtool -, gnumake -, boost -, mpi -, gcc -, autoreconfHook -}: - -stdenv.mkDerivation rec { - pname = "tampi"; - version = "${src.shortRev}"; - enableParallelBuilding = true; - buildInputs = [ autoreconfHook automake autoconf libtool gnumake boost mpi gcc ]; - dontDisableStatic = true; - makeFlags = [ "V=1" ]; - src = builtins.fetchGit { - url = "ssh://git@bscpm03.bsc.es/interoperability/tampi"; - ref = "master"; - }; - hardeningDisable = [ "all" ]; -} From 2a953d811c1e10d8d32b17a39e6eaf1b58afcd46 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 29 Nov 2023 16:59:20 +0100 Subject: [PATCH 911/987] Build TAMPI with ovni support By default we build TAMPI with ovni support, as it will be disabled in runtime unless explicitly enabled by the TAMPI_INSTRUMENT=ovni environment variable. Reviewed-by: Aleix Roca Nonell --- pkgs/tampi/default.nix | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/pkgs/tampi/default.nix b/pkgs/tampi/default.nix index 1c25b6c..c99cd4c 100644 --- a/pkgs/tampi/default.nix +++ b/pkgs/tampi/default.nix @@ -1,5 +1,6 @@ { stdenv +, lib , fetchFromGitHub , automake , autoconf @@ -9,12 +10,18 @@ , mpi , gcc , autoreconfHook +, enableOvni ? true +, ovni ? null , useGit ? false , gitUrl ? "ssh://git@bscpm03.bsc.es/interoperability/tampi.git" , gitBranch ? "master" , gitCommit ? "16f92094ca6da25e2f561c000f5fbc2901944f7b" }: +with lib; + +assert enableOvni -> (ovni != null); + let release = rec { version = "3.0"; @@ -48,7 +55,8 @@ in stdenv.mkDerivation rec { boost mpi gcc - ]; + ] ++ optional (enableOvni) ovni; + configureFlags = optional (enableOvni) "--with-ovni=${ovni}"; dontDisableStatic = true; hardeningDisable = [ "all" ]; } From 8ceaddfea75a6169878c9e8f566ce16cac7f408c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ra=C3=BAl=20Pe=C3=B1acoba?= Date: Fri, 1 Dec 2023 15:11:10 +0100 Subject: [PATCH 912/987] Split OpenMP from Clang in LLVM As the OpenMP-V implementation requires to be built with nOS-V, we can split the OpenMP package in a different derivation to prevent rebuilds of clang. Additionally, as OpenMP-V now can be build alongside the vanilla OpenMP runtime, we simply build a single openmp derivation with both runtimes. Only a single build of the clang compiler is now required. Reviewed-by: Aleix Roca Nonell Reviewed-by: Rodrigo Arias Mallo --- overlay.nix | 8 ++-- pkgs/llvm-ompss2/clang.nix | 15 +------- pkgs/llvm-ompss2/openmp.nix | 57 ++++++++++++++++++++++++++++ test/compilers/clang-openmp-nosv.nix | 3 +- test/compilers/clang-openmp.nix | 3 ++ 5 files changed, 66 insertions(+), 20 deletions(-) create mode 100644 pkgs/llvm-ompss2/openmp.nix diff --git a/overlay.nix b/overlay.nix index 2963918..400da74 100644 --- a/overlay.nix +++ b/overlay.nix @@ -12,11 +12,10 @@ let bscPkgs = { bench6 = callPackage ./pkgs/bench6/default.nix { }; clangOmpss2 = callPackage ./pkgs/llvm-ompss2/default.nix { }; + openmp = callPackage ./pkgs/llvm-ompss2/openmp.nix { monorepoSrc = final.clangOmpss2Unwrapped.src; version = final.clangOmpss2Unwrapped.version; }; clangOmpss2Nanos6 = callPackage ./pkgs/llvm-ompss2/default.nix { ompss2rt = final.nanos6; }; clangOmpss2Nodes = callPackage ./pkgs/llvm-ompss2/default.nix { ompss2rt = final.nodes; }; - clangOmpss2OpenmpNodes = callPackage ./pkgs/llvm-ompss2/default.nix { ompss2rt = final.nodes; clangOmpss2Unwrapped = final.clangOmpss2OpenmpUnwrapped; }; clangOmpss2Unwrapped = callPackage ./pkgs/llvm-ompss2/clang.nix { }; - clangOmpss2OpenmpUnwrapped = final.clangOmpss2Unwrapped.override { enableNosv = true; }; #extrae = callPackage ./pkgs/extrae/default.nix { }; # Broken and outdated gpi-2 = callPackage ./pkgs/gpi-2/default.nix { }; intelPackages_2023 = callPackage ./pkgs/intel-oneapi/2023.nix { }; @@ -41,7 +40,6 @@ let stdenvClangOmpss2 = final.stdenv.override { cc = final.clangOmpss2; allowedRequisites = null; }; stdenvClangOmpss2Nanos6 = final.stdenv.override { cc = final.clangOmpss2Nanos6; allowedRequisites = null; }; stdenvClangOmpss2Nodes = final.stdenv.override { cc = final.clangOmpss2Nodes; allowedRequisites = null; }; - stdenvClangOmpss2OpenmpNodes = final.stdenv.override { cc = final.clangOmpss2OpenmpNodes; allowedRequisites = null; }; tagaspi = callPackage ./pkgs/tagaspi/default.nix { }; tampi = callPackage ./pkgs/tampi/default.nix { }; wxparaver = callPackage ./pkgs/paraver/default.nix { }; @@ -76,10 +74,10 @@ in bscPkgs // { stdenv = final.stdenvClangOmpss2Nodes; }; clangNosvOpenmp-task = callPackage ./test/compilers/clang-openmp.nix { - stdenv = final.stdenvClangOmpss2OpenmpNodes; + stdenv = final.stdenvClangOmpss2Nodes; }; clangNosvOpenmp-nosv = callPackage ./test/compilers/clang-openmp-nosv.nix { - stdenv = final.stdenvClangOmpss2OpenmpNodes; + stdenv = final.stdenvClangOmpss2Nodes; }; }; diff --git a/pkgs/llvm-ompss2/clang.nix b/pkgs/llvm-ompss2/clang.nix index 1d936fe..49dfecc 100644 --- a/pkgs/llvm-ompss2/clang.nix +++ b/pkgs/llvm-ompss2/clang.nix @@ -10,11 +10,9 @@ , elfutils , libffi , zlib -, nosv , pkg-config , gcc # needed to set the rpath of libstdc++ for clang-tblgen , enableDebug ? false -, enableNosv ? false , useGit ? false , gitUrl ? "ssh://git@bscpm03.bsc.es/llvm-ompss/llvm-mono.git" , gitBranch ? "master" @@ -73,8 +71,6 @@ in stdenv.mkDerivation rec { pkg-config zlib gcc.cc.lib # Required for libstdc++.so.6 - ] ++ lib.optionals enableNosv [ - nosv ]; # Error with -D_FORTIFY_SOURCE=2, see https://bugs.gentoo.org/636604: @@ -107,15 +103,12 @@ in stdenv.mkDerivation rec { "-DCMAKE_CXX_FLAGS_DEBUG=-g -ggnu-pubnames" "-DCMAKE_EXE_LINKER_FLAGS_DEBUG=-Wl,--gdb-index" "-DLLVM_LIT_ARGS=-sv --xunit-xml-output=xunit.xml" - "-DLLVM_ENABLE_PROJECTS=clang;openmp;compiler-rt;lld" + "-DLLVM_ENABLE_PROJECTS=clang;compiler-rt;lld" "-DLLVM_ENABLE_ASSERTIONS=ON" "-DLLVM_INSTALL_TOOLCHAIN_ONLY=ON" "-DCMAKE_INSTALL_BINDIR=bin" "-DLLVM_ENABLE_ZLIB=FORCE_ON" "-DLLVM_ENABLE_LIBXML2=OFF" - '' + (lib.optionalString enableNosv '' - "-DCLANG_DEFAULT_NOSV_HOME=${nosv}" - '') + '' # Set the rpath to include external libraries (zlib) both on build and # install "-DCMAKE_INSTALL_RPATH_USE_LINK_PATH=ON" @@ -124,12 +117,6 @@ in stdenv.mkDerivation rec { ''; - # Remove support for GNU and Intel Openmp - postInstall = '' - rm -f $out/lib/libgomp* - rm -f $out/lib/libiomp* - ''; - # About "-DCLANG_DEFAULT_NANOS6_HOME=${nanos6}", we could specify a default # nanos6 installation, but this is would require a recompilation of clang each # time nanos6 is changed. Better to use the environment variable NANOS6_HOME, diff --git a/pkgs/llvm-ompss2/openmp.nix b/pkgs/llvm-ompss2/openmp.nix new file mode 100644 index 0000000..5f79822 --- /dev/null +++ b/pkgs/llvm-ompss2/openmp.nix @@ -0,0 +1,57 @@ +{ lib +, llvmPackages_latest +, monorepoSrc +, runCommand +, cmake +, ninja +, llvm +, perl +, pkg-config +, version +, nosv +, enableDebug ? false +}: + +let + stdenv = llvmPackages_latest.stdenv; +in +stdenv.mkDerivation rec { + pname = "openmp"; + inherit version; + + src = runCommand "${pname}-src" {} '' + mkdir -p "$out" + cp -r ${monorepoSrc}/cmake "$out" + cp -r ${monorepoSrc}/${pname} "$out" + ''; + + sourceRoot = "${src.name}/${pname}"; + + nativeBuildInputs = [ + cmake + ninja + perl + pkg-config + nosv + ]; + + doCheck = false; + + hardeningDisable = [ "all" ]; + + cmakeBuildType = if enableDebug then "Debug" else "Release"; + + dontStrip = enableDebug; + + cmakeFlags = [ + "-DLIBOMP_OMPD_SUPPORT=OFF" + "-DOPENMP_ENABLE_LIBOMPTARGET=OFF" + ]; + + # Remove support for GNU and Intel Openmp + postInstall = '' + rm -f $out/lib/libgomp* + rm -f $out/lib/libiomp* + ''; +} + diff --git a/test/compilers/clang-openmp-nosv.nix b/test/compilers/clang-openmp-nosv.nix index 237e466..d11f2e1 100644 --- a/test/compilers/clang-openmp-nosv.nix +++ b/test/compilers/clang-openmp-nosv.nix @@ -2,6 +2,7 @@ stdenv , nosv , writeText +, openmp }: let @@ -40,7 +41,7 @@ in stdenv.mkDerivation { # fail to run otherwise, so we disable the sandbox for this test. __noChroot = true; - buildInputs = [ nosv ]; + buildInputs = [ nosv openmp ]; buildPhase = '' set -x diff --git a/test/compilers/clang-openmp.nix b/test/compilers/clang-openmp.nix index 42044c7..7f3e0d8 100644 --- a/test/compilers/clang-openmp.nix +++ b/test/compilers/clang-openmp.nix @@ -1,6 +1,7 @@ { stdenv , writeText +, openmp }: let @@ -28,6 +29,8 @@ in stdenv.mkDerivation { # fail to run otherwise, so we disable the sandbox for this test. __noChroot = true; + buildInputs = [ openmp ]; + buildPhase = '' set -x From 3ed644b88fcca2ce51e3351d30c1b744fcab0c1f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ra=C3=BAl=20Pe=C3=B1acoba?= Date: Fri, 1 Dec 2023 15:12:05 +0100 Subject: [PATCH 913/987] Add clangNosvOpenmp-ld compiler test Add a test to verify that "clang -fopenmp=libompv" links correctly with nOS-V even though it is not placed in the buildInputs. Reviewed-by: Aleix Roca Nonell Reviewed-by: Rodrigo Arias Mallo Tested-by: Rodrigo Arias Mallo --- overlay.nix | 3 ++ test/compilers/clang-openmp-ld.nix | 46 ++++++++++++++++++++++++++++++ 2 files changed, 49 insertions(+) create mode 100644 test/compilers/clang-openmp-ld.nix diff --git a/overlay.nix b/overlay.nix index 400da74..4e866fd 100644 --- a/overlay.nix +++ b/overlay.nix @@ -79,6 +79,9 @@ in bscPkgs // { clangNosvOpenmp-nosv = callPackage ./test/compilers/clang-openmp-nosv.nix { stdenv = final.stdenvClangOmpss2Nodes; }; + clangNosvOpenmp-ld = callPackage ./test/compilers/clang-openmp-ld.nix { + stdenv = final.stdenvClangOmpss2Nodes; + }; }; pkgs = final.runCommand "ci-pkgs" { } diff --git a/test/compilers/clang-openmp-ld.nix b/test/compilers/clang-openmp-ld.nix new file mode 100644 index 0000000..593706a --- /dev/null +++ b/test/compilers/clang-openmp-ld.nix @@ -0,0 +1,46 @@ +{ + stdenv +, writeText +, openmp +}: + +let + hello_c = writeText "hello.c" '' + int main(int argc, char *argv[]) + { + #pragma omp parallel + { + } + + return 0; + } + ''; + +in stdenv.mkDerivation { + pname = "openmp-test-ld"; + version = "1.0.0"; + + dontUnpack = true; + dontConfigure = true; + + # nOS-V requires access to /sys/devices to request NUMA information. It will + # fail to run otherwise, so we disable the sandbox for this test. + __noChroot = true; + + buildInputs = [ openmp ]; + + buildPhase = '' + set -x + + cp ${hello_c} hello.c + clang -fopenmp=libompv ./hello.c -o hello + + set +x + ''; + + installPhase = '' + touch $out + ''; + +} + From 3f2b9a766b5987e61ce827e4838dbfd2ff547b9d Mon Sep 17 00:00:00 2001 From: Aleix Roca Nonell Date: Tue, 5 Dec 2023 11:58:03 +0100 Subject: [PATCH 914/987] Update clang with internal bug release Reviewed-by: Rodrigo Arias Mallo --- pkgs/llvm-ompss2/clang.nix | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/pkgs/llvm-ompss2/clang.nix b/pkgs/llvm-ompss2/clang.nix index 49dfecc..c60eb7e 100644 --- a/pkgs/llvm-ompss2/clang.nix +++ b/pkgs/llvm-ompss2/clang.nix @@ -23,12 +23,12 @@ let stdenv = llvmPackages_latest.stdenv; release = rec { - version = "2023.11"; + version = "18.0.0-ompss-2"; src = fetchFromGitHub { owner = "bsc-pm"; repo = "llvm"; - rev = "refs/tags/github-release-${version}"; - hash = "sha256-XLYS401BixGw3Ke/JKuikVKvbA92ENCdUvYLyZX9UtI="; + rev = "refs/tags/${version}"; + hash = "sha256-Z0TVrujOQNHiAuTlyexbIBA2pOk2Tdmv7JuQn3M3foY="; }; }; @@ -114,7 +114,6 @@ in stdenv.mkDerivation rec { "-DCMAKE_INSTALL_RPATH_USE_LINK_PATH=ON" "-DCMAKE_INSTALL_RPATH=${zlib}/lib:${gcc.cc.lib}/lib" ) - ''; # About "-DCLANG_DEFAULT_NANOS6_HOME=${nanos6}", we could specify a default From c4d5135fde108401417fdcdf5e1c8d11aeca4f32 Mon Sep 17 00:00:00 2001 From: Aleix Roca Nonell Date: Tue, 5 Dec 2023 11:58:04 +0100 Subject: [PATCH 915/987] Split openmp versions in separate derivations The openmp derivation provides both libomp and libompv. To avoid accidentally linking with the wrong library and to avoid the nosv dependency on libomp, this patch separates each version in a different derivation. Also, it adapts the clang wrappers and stdenvs to provide an stdenv per openmp library where each openmp will be used by default when the compiler flag "-fopenmp" is used. This eases linking ompv with nixpkgs libraries, such as blis, that expect openmp to be provided with stdenv. Reviewed-by: Rodrigo Arias Mallo Tested-by: Rodrigo Arias Mallo --- overlay.nix | 15 +++++++++------ pkgs/llvm-ompss2/default.nix | 14 ++++++++++++++ pkgs/llvm-ompss2/openmp.nix | 18 ++++++++++++++---- pkgs/nodes/default.nix | 2 +- test/compilers/clang-openmp-nosv.nix | 3 +-- test/compilers/clang-openmp.nix | 3 --- 6 files changed, 39 insertions(+), 16 deletions(-) diff --git a/overlay.nix b/overlay.nix index 4e866fd..77390ec 100644 --- a/overlay.nix +++ b/overlay.nix @@ -12,9 +12,9 @@ let bscPkgs = { bench6 = callPackage ./pkgs/bench6/default.nix { }; clangOmpss2 = callPackage ./pkgs/llvm-ompss2/default.nix { }; - openmp = callPackage ./pkgs/llvm-ompss2/openmp.nix { monorepoSrc = final.clangOmpss2Unwrapped.src; version = final.clangOmpss2Unwrapped.version; }; clangOmpss2Nanos6 = callPackage ./pkgs/llvm-ompss2/default.nix { ompss2rt = final.nanos6; }; - clangOmpss2Nodes = callPackage ./pkgs/llvm-ompss2/default.nix { ompss2rt = final.nodes; }; + clangOmpss2Nodes = callPackage ./pkgs/llvm-ompss2/default.nix { ompss2rt = final.nodes; openmp = final.openmp; }; + clangOmpss2NodesOmpv = callPackage ./pkgs/llvm-ompss2/default.nix { ompss2rt = final.nodes; openmp = final.openmpv; }; clangOmpss2Unwrapped = callPackage ./pkgs/llvm-ompss2/clang.nix { }; #extrae = callPackage ./pkgs/extrae/default.nix { }; # Broken and outdated gpi-2 = callPackage ./pkgs/gpi-2/default.nix { }; @@ -30,6 +30,8 @@ let #nix-wrap = callPackage ./pkgs/nix-wrap/default.nix { }; nodes = callPackage ./pkgs/nodes/default.nix { }; nosv = callPackage ./pkgs/nosv/default.nix { }; + openmp = callPackage ./pkgs/llvm-ompss2/openmp.nix { monorepoSrc = final.clangOmpss2Unwrapped.src; version = final.clangOmpss2Unwrapped.version; }; + openmpv = final.openmp.override { enableNosv = true; }; osumb = callPackage ./pkgs/osu/default.nix { }; ovni = callPackage ./pkgs/ovni/default.nix { }; ovniGit = final.ovni.override { useGit = true; }; @@ -40,6 +42,7 @@ let stdenvClangOmpss2 = final.stdenv.override { cc = final.clangOmpss2; allowedRequisites = null; }; stdenvClangOmpss2Nanos6 = final.stdenv.override { cc = final.clangOmpss2Nanos6; allowedRequisites = null; }; stdenvClangOmpss2Nodes = final.stdenv.override { cc = final.clangOmpss2Nodes; allowedRequisites = null; }; + stdenvClangOmpss2NodesOmpv = final.stdenv.override { cc = final.clangOmpss2NodesOmpv; allowedRequisites = null; }; tagaspi = callPackage ./pkgs/tagaspi/default.nix { }; tampi = callPackage ./pkgs/tampi/default.nix { }; wxparaver = callPackage ./pkgs/paraver/default.nix { }; @@ -76,11 +79,11 @@ in bscPkgs // { clangNosvOpenmp-task = callPackage ./test/compilers/clang-openmp.nix { stdenv = final.stdenvClangOmpss2Nodes; }; - clangNosvOpenmp-nosv = callPackage ./test/compilers/clang-openmp-nosv.nix { - stdenv = final.stdenvClangOmpss2Nodes; + clangNosvOmpv-nosv = callPackage ./test/compilers/clang-openmp-nosv.nix { + stdenv = final.stdenvClangOmpss2NodesOmpv; }; - clangNosvOpenmp-ld = callPackage ./test/compilers/clang-openmp-ld.nix { - stdenv = final.stdenvClangOmpss2Nodes; + clangNosvOmpv-ld = callPackage ./test/compilers/clang-openmp-ld.nix { + stdenv = final.stdenvClangOmpss2NodesOmpv; }; }; diff --git a/pkgs/llvm-ompss2/default.nix b/pkgs/llvm-ompss2/default.nix index d35c706..81b972a 100644 --- a/pkgs/llvm-ompss2/default.nix +++ b/pkgs/llvm-ompss2/default.nix @@ -3,15 +3,24 @@ , lib , gcc , clangOmpss2Unwrapped +, openmp ? null , wrapCCWith , llvmPackages_latest , ompss2rt ? null }: +let + usingNodesAndOmpv = (openmp.pname == "openmp-v" && ompss2rt.pname == "nodes"); + sameNosv = openmp.nosv == ompss2rt.nosv; +in + +assert lib.assertMsg (usingNodesAndOmpv -> sameNosv) "OpenMP-V and NODES must share the same nOS-V"; let homevar = if ompss2rt.pname == "nanos6" then "NANOS6_HOME" else "NODES_HOME"; rtname = if ompss2rt.pname == "nanos6" then "libnanos6" else "libnodes"; + ompname = if openmp.pname == "openmp-v" then "libompv" else "libomp"; + # We need to replace the lld linker from bintools with our linker just built, # otherwise we run into incompatibility issues when mixing compiler and linker @@ -27,6 +36,8 @@ let cc = clangOmpss2Unwrapped; in wrapCCWith { inherit cc bintools; + # extraPackages adds packages to depsTargetTargetPropagated + extraPackages = lib.optional (openmp != null) openmp; extraBuildCommands = '' echo "-target ${targetConfig}" >> $out/nix-support/cc-cflags echo "-B${gcc.cc}/lib/gcc/${targetConfig}/${gcc.version}" >> $out/nix-support/cc-cflags @@ -43,6 +54,9 @@ in wrapCCWith { echo "--gcc-toolchain=${gcc}" >> $out/nix-support/cc-cflags wrap clang++ $wrapper $ccPath/clang++ + + '' + lib.optionalString (openmp != null) '' + echo "export OPENMP_RUNTIME=${ompname}" >> $out/nix-support/cc-wrapper-hook '' + lib.optionalString (ompss2rt != null) '' echo "export OMPSS2_RUNTIME=${rtname}" >> $out/nix-support/cc-wrapper-hook echo "export ${homevar}=${ompss2rt}" >> $out/nix-support/cc-wrapper-hook diff --git a/pkgs/llvm-ompss2/openmp.nix b/pkgs/llvm-ompss2/openmp.nix index 5f79822..654294b 100644 --- a/pkgs/llvm-ompss2/openmp.nix +++ b/pkgs/llvm-ompss2/openmp.nix @@ -9,6 +9,7 @@ , pkg-config , version , nosv +, enableNosv ? false , enableDebug ? false }: @@ -16,22 +17,23 @@ let stdenv = llvmPackages_latest.stdenv; in stdenv.mkDerivation rec { - pname = "openmp"; + pname = "openmp" + (lib.optionalString enableNosv "-v"); inherit version; src = runCommand "${pname}-src" {} '' mkdir -p "$out" cp -r ${monorepoSrc}/cmake "$out" - cp -r ${monorepoSrc}/${pname} "$out" + cp -r ${monorepoSrc}/openmp "$out" ''; - sourceRoot = "${src.name}/${pname}"; + sourceRoot = "${src.name}/openmp"; nativeBuildInputs = [ cmake ninja perl pkg-config + ] ++ lib.optionals enableNosv [ nosv ]; @@ -48,10 +50,18 @@ stdenv.mkDerivation rec { "-DOPENMP_ENABLE_LIBOMPTARGET=OFF" ]; - # Remove support for GNU and Intel Openmp + # Remove support for GNU and Intel Openmp. + # Also, remove libomp if building with nosv, as there is no support to build + # only one runtime at a time. postInstall = '' rm -f $out/lib/libgomp* rm -f $out/lib/libiomp* + '' + lib.optionalString enableNosv '' + rm -f $out/lib/libomp.* ''; + + passthru = { + inherit nosv; + }; } diff --git a/pkgs/nodes/default.nix b/pkgs/nodes/default.nix index f834525..fd1f76c 100644 --- a/pkgs/nodes/default.nix +++ b/pkgs/nodes/default.nix @@ -84,6 +84,6 @@ in ]; passthru = { - nosv = nosv; + inherit nosv; }; } diff --git a/test/compilers/clang-openmp-nosv.nix b/test/compilers/clang-openmp-nosv.nix index d11f2e1..237e466 100644 --- a/test/compilers/clang-openmp-nosv.nix +++ b/test/compilers/clang-openmp-nosv.nix @@ -2,7 +2,6 @@ stdenv , nosv , writeText -, openmp }: let @@ -41,7 +40,7 @@ in stdenv.mkDerivation { # fail to run otherwise, so we disable the sandbox for this test. __noChroot = true; - buildInputs = [ nosv openmp ]; + buildInputs = [ nosv ]; buildPhase = '' set -x diff --git a/test/compilers/clang-openmp.nix b/test/compilers/clang-openmp.nix index 7f3e0d8..42044c7 100644 --- a/test/compilers/clang-openmp.nix +++ b/test/compilers/clang-openmp.nix @@ -1,7 +1,6 @@ { stdenv , writeText -, openmp }: let @@ -29,8 +28,6 @@ in stdenv.mkDerivation { # fail to run otherwise, so we disable the sandbox for this test. __noChroot = true; - buildInputs = [ openmp ]; - buildPhase = '' set -x From 3b21a32d835ff06741d5d59cd023ff2ae1ecb19f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ra=C3=BAl=20Pe=C3=B1acoba?= Date: Fri, 12 Jan 2024 17:28:22 +0100 Subject: [PATCH 916/987] Add ovni to OpenMP-V Allows building OpenMP-V with ovni support, which is neccessary to run the runtime tests of OpenMP-V in ovni. Reviewed-by: Aleix Roca Nonell Reviewed-by: Rodrigo Arias Mallo Tested-by: Rodrigo Arias Mallo --- overlay.nix | 2 +- pkgs/llvm-ompss2/openmp.nix | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/overlay.nix b/overlay.nix index 77390ec..32691d1 100644 --- a/overlay.nix +++ b/overlay.nix @@ -31,7 +31,7 @@ let nodes = callPackage ./pkgs/nodes/default.nix { }; nosv = callPackage ./pkgs/nosv/default.nix { }; openmp = callPackage ./pkgs/llvm-ompss2/openmp.nix { monorepoSrc = final.clangOmpss2Unwrapped.src; version = final.clangOmpss2Unwrapped.version; }; - openmpv = final.openmp.override { enableNosv = true; }; + openmpv = final.openmp.override { enableNosv = true; enableOvni = true; }; osumb = callPackage ./pkgs/osu/default.nix { }; ovni = callPackage ./pkgs/ovni/default.nix { }; ovniGit = final.ovni.override { useGit = true; }; diff --git a/pkgs/llvm-ompss2/openmp.nix b/pkgs/llvm-ompss2/openmp.nix index 654294b..aee98e9 100644 --- a/pkgs/llvm-ompss2/openmp.nix +++ b/pkgs/llvm-ompss2/openmp.nix @@ -9,10 +9,14 @@ , pkg-config , version , nosv +, ovni , enableNosv ? false , enableDebug ? false +, enableOvni ? false }: +assert enableOvni -> enableNosv; + let stdenv = llvmPackages_latest.stdenv; in @@ -35,6 +39,8 @@ stdenv.mkDerivation rec { pkg-config ] ++ lib.optionals enableNosv [ nosv + ] ++ lib.optionals enableOvni [ + ovni ]; doCheck = false; From 37ce5ef3914ff259844d51aca6ff8a7e1c7f2438 Mon Sep 17 00:00:00 2001 From: Aleix Roca Nonell Date: Wed, 14 Feb 2024 19:40:16 +0100 Subject: [PATCH 917/987] Paraver: Use wrapGApps Hook for nixos Needed to fix the error on NixOS: GLib-GIO-ERROR **: No GSettings schemas are installed on the system See https://github.com/NixOS/nixpkgs/issues/16285 Reviewed-by: Rodrigo Arias Mallo Tested-by: Rodrigo Arias Mallo --- pkgs/paraver/default.nix | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/pkgs/paraver/default.nix b/pkgs/paraver/default.nix index 902d295..931d9ab 100644 --- a/pkgs/paraver/default.nix +++ b/pkgs/paraver/default.nix @@ -10,6 +10,7 @@ , paraverKernel , openssl , glibcLocales +, wrapGAppsHook }: let @@ -48,6 +49,10 @@ stdenv.mkDerivation rec { "--with-openssl=${openssl.dev}" ]; + nativeBuildInputs = [ + wrapGAppsHook + ]; + buildInputs = [ autoreconfHook boost From fce556cb285071e4cb042ad135dcaaaae303c9a7 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 14 Mar 2024 12:42:26 +0100 Subject: [PATCH 918/987] Build OmpSs-2 LLVM with commit version information Allows users to see which commit (or git tag) was used in clang. Examples for the release and git versions: % clang --version clang version 18.0.0 (18.0.0-ompss-2) % clang --version clang version 18.0.0 (0a6d6c6) Reviewed-by: Aleix Roca Nonell Tested-by: Rodrigo Arias Mallo --- pkgs/llvm-ompss2/clang.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pkgs/llvm-ompss2/clang.nix b/pkgs/llvm-ompss2/clang.nix index c60eb7e..0fef76e 100644 --- a/pkgs/llvm-ompss2/clang.nix +++ b/pkgs/llvm-ompss2/clang.nix @@ -113,6 +113,8 @@ in stdenv.mkDerivation rec { # install "-DCMAKE_INSTALL_RPATH_USE_LINK_PATH=ON" "-DCMAKE_INSTALL_RPATH=${zlib}/lib:${gcc.cc.lib}/lib" + "-DLLVM_APPEND_VC_REV=ON" + "-DLLVM_FORCE_VC_REVISION=${source.version}" ) ''; From 9c8a077828dc67e8765c00da37f88b8d1471a87c Mon Sep 17 00:00:00 2001 From: Aleix Roca Nonell Date: Fri, 12 Apr 2024 10:20:14 +0200 Subject: [PATCH 919/987] Enable separatedebuginfo for openmp Reviewed-by: Rodrigo Arias Mallo Tested-by: Rodrigo Arias Mallo --- pkgs/llvm-ompss2/openmp.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pkgs/llvm-ompss2/openmp.nix b/pkgs/llvm-ompss2/openmp.nix index aee98e9..7d23b2e 100644 --- a/pkgs/llvm-ompss2/openmp.nix +++ b/pkgs/llvm-ompss2/openmp.nix @@ -51,6 +51,8 @@ stdenv.mkDerivation rec { dontStrip = enableDebug; + separateDebugInfo = true; + cmakeFlags = [ "-DLIBOMP_OMPD_SUPPORT=OFF" "-DOPENMP_ENABLE_LIBOMPTARGET=OFF" From 5d3820631a893018a084b947c5d72513d1a0c4ac Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 12 Apr 2024 14:54:35 +0200 Subject: [PATCH 920/987] Fix Nanos6 4.0 build It looks like after upgrading the compiler the build breaks. The patch simply adds the missing cstdint include, until a new release is made. Reviewed-by: Aleix Roca Nonell Tested-by: Rodrigo Arias Mallo --- .../0001-Add-missing-cstdint-include.patch | 32 +++++++++++++++++++ pkgs/nanos6/default.nix | 9 ++++-- 2 files changed, 38 insertions(+), 3 deletions(-) create mode 100644 pkgs/nanos6/0001-Add-missing-cstdint-include.patch diff --git a/pkgs/nanos6/0001-Add-missing-cstdint-include.patch b/pkgs/nanos6/0001-Add-missing-cstdint-include.patch new file mode 100644 index 0000000..a4b1fd3 --- /dev/null +++ b/pkgs/nanos6/0001-Add-missing-cstdint-include.patch @@ -0,0 +1,32 @@ +From 6fc5bef066ac011d6b15a7c090f4498b0b730818 Mon Sep 17 00:00:00 2001 +From: Rodrigo Arias Mallo +Date: Fri, 12 Apr 2024 14:44:43 +0200 +Subject: [PATCH] Add missing cstdint include + +--- + src/dependencies/DataTrackingSupport.hpp | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/src/dependencies/DataTrackingSupport.hpp b/src/dependencies/DataTrackingSupport.hpp +index 56226085..cdfd5e1c 100644 +--- a/src/dependencies/DataTrackingSupport.hpp ++++ b/src/dependencies/DataTrackingSupport.hpp +@@ -1,13 +1,14 @@ + /* + This file is part of Nanos6 and is licensed under the terms contained in the COPYING file. + +- Copyright (C) 2020 Barcelona Supercomputing Center (BSC) ++ Copyright (C) 2020-2024 Barcelona Supercomputing Center (BSC) + */ + + #ifndef DATA_TRACKING_SUPPORT_HPP + #define DATA_TRACKING_SUPPORT_HPP + + #include "support/config/ConfigVariable.hpp" ++#include + + class Task; + +-- +2.44.0 + diff --git a/pkgs/nanos6/default.nix b/pkgs/nanos6/default.nix index 22d9dc5..e1eac9f 100644 --- a/pkgs/nanos6/default.nix +++ b/pkgs/nanos6/default.nix @@ -35,6 +35,10 @@ let rev = "version-${version}"; hash = "sha256-o2j7xNufdjcWykbwDDHQYxYCs4kpyQvJnuFyeXYZULw="; }; + patches = [ + # https://pm.bsc.es/gitlab/nanos6/nanos6/-/issues/185 + ./0001-Add-missing-cstdint-include.patch + ]; }; git = rec { @@ -48,9 +52,8 @@ let source = if (useGit) then git else release; in - stdenv.mkDerivation rec { + stdenv.mkDerivation (source // rec { pname = "nanos6"; - inherit (source) src version; prePatch = '' patchShebangs scripts/generate_config.sh @@ -114,4 +117,4 @@ in platforms = platforms.linux; license = licenses.gpl3; }; - } + }) From de89197a4a7b162db7df9d41c9d07759d87c5709 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 24 Apr 2024 16:26:58 +0200 Subject: [PATCH 921/987] Add bigotes package Reviewed-by: Aleix Roca Nonell Tested-by: Rodrigo Arias Mallo --- overlay.nix | 1 + pkgs/bigotes/default.nix | 17 +++++++++++++++++ 2 files changed, 18 insertions(+) create mode 100644 pkgs/bigotes/default.nix diff --git a/overlay.nix b/overlay.nix index 32691d1..d337347 100644 --- a/overlay.nix +++ b/overlay.nix @@ -11,6 +11,7 @@ let bscPkgs = { bench6 = callPackage ./pkgs/bench6/default.nix { }; + bigotes = callPackage ./pkgs/bigotes/default.nix { }; clangOmpss2 = callPackage ./pkgs/llvm-ompss2/default.nix { }; clangOmpss2Nanos6 = callPackage ./pkgs/llvm-ompss2/default.nix { ompss2rt = final.nanos6; }; clangOmpss2Nodes = callPackage ./pkgs/llvm-ompss2/default.nix { ompss2rt = final.nodes; openmp = final.openmp; }; diff --git a/pkgs/bigotes/default.nix b/pkgs/bigotes/default.nix new file mode 100644 index 0000000..85bbfcc --- /dev/null +++ b/pkgs/bigotes/default.nix @@ -0,0 +1,17 @@ +{ + stdenv +, fetchFromGitHub +, cmake +}: + +stdenv.mkDerivation rec { + pname = "bigotes"; + version = "9dce13"; + src = fetchFromGitHub { + owner = "rodarima"; + repo = "bigotes"; + rev = "9dce13446a8da30bea552d569d260d54e0188518"; + sha256 = "sha256-ktxM3pXiL8YXSK+/IKWYadijhYXqGoLY6adLk36iigE="; + }; + buildInputs = [ cmake ]; +} From 3eff2662bb76e79c9d53f1d61a094b97e008a724 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aleix=20Bon=C3=A9?= Date: Thu, 24 Oct 2024 16:24:15 +0200 Subject: [PATCH 922/987] paraver: install manpages Reviewed-by: Rodrigo Arias Mallo --- pkgs/paraver/default.nix | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/pkgs/paraver/default.nix b/pkgs/paraver/default.nix index 931d9ab..9eaaca8 100644 --- a/pkgs/paraver/default.nix +++ b/pkgs/paraver/default.nix @@ -63,7 +63,6 @@ stdenv.mkDerivation rec { automake paraverKernel openssl.dev - paraverKernel ]; postInstall = '' @@ -74,5 +73,9 @@ stdenv.mkDerivation rec { # cp -p ${paraverKernel}/include/* $out/include cp -a ${paraverKernel}/lib/paraver-kernel $out/lib/paraver-kernel cp -p ${paraverKernel}/share/filters-config/* $out/share/filters-config + + # Move man files to proper location + mkdir -p $out/share/man + mv $out/share/doc/wxparaver_help_contents/man $out/share/man/man1 ''; } From aa3f8163887a55683d4089acd3f4f643e083691b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aleix=20Bon=C3=A9?= Date: Thu, 24 Oct 2024 16:24:16 +0200 Subject: [PATCH 923/987] ovni: fix cross compilation Reviewed-by: Rodrigo Arias Mallo --- pkgs/ovni/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/ovni/default.nix b/pkgs/ovni/default.nix index 469d989..92e4e6b 100644 --- a/pkgs/ovni/default.nix +++ b/pkgs/ovni/default.nix @@ -43,7 +43,7 @@ in postPatch = '' patchShebangs --build test/ ''; - buildInputs = [ cmake mpi ]; + nativeBuildInputs = [ cmake mpi ]; cmakeBuildType = if (enableDebug) then "Debug" else "Release"; cmakeFlags = [ "-DOVNI_GIT_COMMIT=${src.shortRev}" ]; preCheck = '' From e046363e521c363e14461e37ac8ac53a141a9c98 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aleix=20Bon=C3=A9?= Date: Thu, 24 Oct 2024 16:24:17 +0200 Subject: [PATCH 924/987] nos-v: fix cross compilation Reviewed-by: Rodrigo Arias Mallo --- pkgs/nosv/default.nix | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pkgs/nosv/default.nix b/pkgs/nosv/default.nix index eaeacf1..4838eac 100644 --- a/pkgs/nosv/default.nix +++ b/pkgs/nosv/default.nix @@ -44,9 +44,11 @@ in dontStrip = true; separateDebugInfo = true; configureFlags = [ "--with-ovni=${ovni}" ]; - buildInputs = [ + nativeBuildInputs = [ autoreconfHook pkg-config + ]; + buildInputs = [ numactl hwloc ovni From 74e11db8b646fb4c02d94f35ff118ce3dfe4d961 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 28 Oct 2024 12:40:13 +0100 Subject: [PATCH 925/987] Only enable MPI in ovni on native builds MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Tested with: hut% nix build .#bsc-ci.all hut% nix build .#pkgsCross.riscv64.ovni Tested-by: Rodrigo Arias Mallo Reviewed-by: Aleix Boné --- pkgs/ovni/default.nix | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/pkgs/ovni/default.nix b/pkgs/ovni/default.nix index 92e4e6b..90ae324 100644 --- a/pkgs/ovni/default.nix +++ b/pkgs/ovni/default.nix @@ -9,6 +9,8 @@ , gitUrl ? "ssh://git@bscpm03.bsc.es/rarias/ovni.git" , gitCommit ? "7a33deffb7aaae70527125d48428f22169c9d39e" , enableDebug ? false +# Only enable MPI if the build is native (fails on cross-compilation) +, useMpi ? (stdenv.buildPlatform.canExecute stdenv.hostPlatform) }: with lib; @@ -43,9 +45,12 @@ in postPatch = '' patchShebangs --build test/ ''; - nativeBuildInputs = [ cmake mpi ]; + nativeBuildInputs = [ cmake ]; + buildInputs = lib.optionals (useMpi) [ mpi ]; cmakeBuildType = if (enableDebug) then "Debug" else "Release"; - cmakeFlags = [ "-DOVNI_GIT_COMMIT=${src.shortRev}" ]; + cmakeFlags = [ + "-DOVNI_GIT_COMMIT=${src.shortRev}" + ] ++ lib.optionals (!useMpi) [ "-DUSE_MPI=OFF" ]; preCheck = '' export CTEST_OUTPUT_ON_FAILURE=1 ''; From 2d9d2701a9987cfe68230412519514dfe3056463 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 18 Nov 2024 17:04:19 +0100 Subject: [PATCH 926/987] Update ovni to 1.11.0 Reviewed-by: Aleix Roca Nonell --- pkgs/ovni/default.nix | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pkgs/ovni/default.nix b/pkgs/ovni/default.nix index 90ae324..306e4e5 100644 --- a/pkgs/ovni/default.nix +++ b/pkgs/ovni/default.nix @@ -7,7 +7,7 @@ , useGit ? false , gitBranch ? "master" , gitUrl ? "ssh://git@bscpm03.bsc.es/rarias/ovni.git" -, gitCommit ? "7a33deffb7aaae70527125d48428f22169c9d39e" +, gitCommit ? "a7103f8510d1ec124c3e01ceb47d1e443e98bbf4" , enableDebug ? false # Only enable MPI if the build is native (fails on cross-compilation) , useMpi ? (stdenv.buildPlatform.canExecute stdenv.hostPlatform) @@ -17,13 +17,13 @@ with lib; let release = rec { - version = "1.4.1"; + version = "1.11.0"; src = fetchFromGitHub { owner = "bsc-pm"; repo = "ovni"; rev = "${version}"; - hash = "sha256-/vv7Yy6dzoxuHjMc0h/vFFwWzysPLXFZIN2rbLT/SC8="; - } // { shortRev = "7a33def"; }; + hash = "sha256-DEZUK1dvbPGH5WYkZ2hpP5PShkMxXkHOqMwgYUHHxeM="; + } // { shortRev = "a7103f8"; }; }; git = rec { From 896ec0ad0f24a3f53ef5e1abd83b7bc6a58dff05 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 18 Nov 2024 17:04:20 +0100 Subject: [PATCH 927/987] Update nOS-V to 3.1.0 Reviewed-by: Aleix Roca Nonell --- pkgs/nosv/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/nosv/default.nix b/pkgs/nosv/default.nix index 4838eac..22a89f4 100644 --- a/pkgs/nosv/default.nix +++ b/pkgs/nosv/default.nix @@ -10,19 +10,19 @@ , useGit ? false , gitUrl ? "git@gitlab-internal.bsc.es:nos-v/nos-v.git" , gitBranch ? "master" -, gitCommit ? "f696951f62cac018bd9fd15e2fb9f34e96b185b5" +, gitCommit ? "cfd361bd1dd30c96da405e6bbaa7e78f5f93dfda" }: with lib; let release = rec { - version = "2.1.1"; + version = "3.1.0"; src = fetchFromGitHub { owner = "bsc-pm"; repo = "nos-v"; rev = "${version}"; - hash = "sha256-G80vaHep72iovnlIgqqjaQOYYtn83UJG7XrXnI/WO70="; + hash = "sha256-Pkre+ZZsREDxJLCoIoPN1HQDuUa2H1IQyKB3omg6qaU="; }; }; From 995aa0b2e2eab581b25d6380de643b5208922696 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 18 Nov 2024 17:04:21 +0100 Subject: [PATCH 928/987] Update NODES to 1.3 Reviewed-by: Aleix Roca Nonell --- pkgs/nodes/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/nodes/default.nix b/pkgs/nodes/default.nix index fd1f76c..f4fd991 100644 --- a/pkgs/nodes/default.nix +++ b/pkgs/nodes/default.nix @@ -18,19 +18,19 @@ , useGit ? false , gitUrl ? "ssh://git@gitlab-internal.bsc.es/nos-v/nodes.git" , gitBranch ? "master" -, gitCommit ? "813da5976d06f587747dbb07aa911cfd855eff1a" +, gitCommit ? "6002ec9ae6eb876d962cc34366952a3b26599ba6" }: with lib; let release = rec { - version = "1.1"; + version = "1.3"; src = fetchFromGitHub { owner = "bsc-pm"; repo = "nodes"; rev = "version-${version}"; - hash = "sha256-Cfj3ozVK/sx/eccTjv7wZX8KUMdca0vY0RY0UWSRftg="; + hash = "sha256-cFb9pxcjtkMmH0CsGgUO9LTdXDNh7MCqicgGWawLrsU="; }; }; From b006538147e2448fa4f0866a14149c32775017ae Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 18 Nov 2024 17:04:22 +0100 Subject: [PATCH 929/987] Update TAMPI to 4.0 Reviewed-by: Aleix Roca Nonell --- pkgs/tampi/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/tampi/default.nix b/pkgs/tampi/default.nix index c99cd4c..a146521 100644 --- a/pkgs/tampi/default.nix +++ b/pkgs/tampi/default.nix @@ -15,7 +15,7 @@ , useGit ? false , gitUrl ? "ssh://git@bscpm03.bsc.es/interoperability/tampi.git" , gitBranch ? "master" -, gitCommit ? "16f92094ca6da25e2f561c000f5fbc2901944f7b" +, gitCommit ? "a5c93bf8ab045b71ad4a8d5e2c991ce774db5cbc" }: with lib; @@ -24,12 +24,12 @@ assert enableOvni -> (ovni != null); let release = rec { - version = "3.0"; + version = "4.0"; src = fetchFromGitHub { owner = "bsc-pm"; repo = "tampi"; rev = "v${version}"; - hash = "sha256-qdWBxPsXKM428F2ojt2B6/0ZsQyGzEiojNaqbhDmrks="; + hash = "sha256-R7ew5tsrxGReTvOeeZe1FD0oThBhOHoDGv6Mo2sbmDg="; }; }; git = rec { From b442ddf1a481a68abde0d22930cf7340e20b38bb Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 18 Nov 2024 17:04:23 +0100 Subject: [PATCH 930/987] Update Nanos6 to 4.2 Reviewed-by: Aleix Roca Nonell --- pkgs/nanos6/default.nix | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/pkgs/nanos6/default.nix b/pkgs/nanos6/default.nix index e1eac9f..6babdf1 100644 --- a/pkgs/nanos6/default.nix +++ b/pkgs/nanos6/default.nix @@ -19,7 +19,7 @@ , useGit ? false , gitUrl ? "ssh://git@bscpm03.bsc.es/nanos6/nanos6" , gitBranch ? "master" -, gitCommit ? "4fdddf67b573fbe624bf64b92c0a9b4e344b9dd3" +, gitCommit ? "9f54c988e0a8b9c011d9d526acdb8d76f18fcae4" }: assert enableJemalloc -> (jemallocNanos6 != null); @@ -28,17 +28,13 @@ with lib; let release = rec { - version = "4.0"; + version = "4.2"; src = fetchFromGitHub { owner = "bsc-pm"; repo = "nanos6"; rev = "version-${version}"; - hash = "sha256-o2j7xNufdjcWykbwDDHQYxYCs4kpyQvJnuFyeXYZULw="; + hash = "sha256-tBrRGLCjSFYdmVGPAC2DzYY6HJyZGUOMeykujafn7+4="; }; - patches = [ - # https://pm.bsc.es/gitlab/nanos6/nanos6/-/issues/185 - ./0001-Add-missing-cstdint-include.patch - ]; }; git = rec { From 46f15ac201e8b1b3eefc44ba3dda7e32b7750c27 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 18 Nov 2024 17:04:24 +0100 Subject: [PATCH 931/987] Update LLVM to 2024.11 Reviewed-by: Aleix Roca Nonell --- pkgs/llvm-ompss2/clang.nix | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pkgs/llvm-ompss2/clang.nix b/pkgs/llvm-ompss2/clang.nix index 0fef76e..02d140a 100644 --- a/pkgs/llvm-ompss2/clang.nix +++ b/pkgs/llvm-ompss2/clang.nix @@ -16,19 +16,19 @@ , useGit ? false , gitUrl ? "ssh://git@bscpm03.bsc.es/llvm-ompss/llvm-mono.git" , gitBranch ? "master" -, gitCommit ? "0a6d6c64b04f9bbbe1399f18be426e191fb6b42c" +, gitCommit ? "8c0d267c04d7fc3fb923078f510fcd5f4719a6cc" }: let stdenv = llvmPackages_latest.stdenv; release = rec { - version = "18.0.0-ompss-2"; + version = "2024.11"; src = fetchFromGitHub { owner = "bsc-pm"; repo = "llvm"; - rev = "refs/tags/${version}"; - hash = "sha256-Z0TVrujOQNHiAuTlyexbIBA2pOk2Tdmv7JuQn3M3foY="; + rev = "refs/tags/github-release-${version}"; + hash = "sha256-pF0qa987nLkIJPUrXh1srzBkLPfb31skIegD0bl34Kg="; }; }; From 5f85082553e24b4210d5ebb9e3ba3b6fb3f628a3 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 18 Nov 2024 17:04:26 +0100 Subject: [PATCH 932/987] Update sonar to 1.0.1 Reviewed-by: Aleix Roca Nonell --- pkgs/sonar/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/sonar/default.nix b/pkgs/sonar/default.nix index b241e42..2610790 100644 --- a/pkgs/sonar/default.nix +++ b/pkgs/sonar/default.nix @@ -8,12 +8,12 @@ stdenv.mkDerivation rec { pname = "sonar"; - version = "0.2.0"; + version = "1.0.1"; src = fetchFromGitHub { owner = "bsc-pm"; repo = "sonar"; rev = "${version}"; - sha256 = "sha256-iQSw4PbFk0EALXPHpLBPPQ7U8Ed8fkez1uG9MuF6PJo="; + sha256 = "sha256-DazOEaiMfJLrZNtmQEEHdBkm/m4hq5e0mPEfMtzYqWk="; }; hardeningDisable = [ "all" ]; dontStrip = true; From 73e30d20e925d1145b57a0c5e15b92d80699475e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ra=C3=BAl=20Pe=C3=B1acoba?= Date: Fri, 25 Oct 2024 18:13:01 +0200 Subject: [PATCH 933/987] Python is needed in openmp now Reviewed-by: Aleix Roca Nonell Tested-by: Rodrigo Arias Mallo --- pkgs/llvm-ompss2/openmp.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pkgs/llvm-ompss2/openmp.nix b/pkgs/llvm-ompss2/openmp.nix index 7d23b2e..56c0d70 100644 --- a/pkgs/llvm-ompss2/openmp.nix +++ b/pkgs/llvm-ompss2/openmp.nix @@ -10,6 +10,7 @@ , version , nosv , ovni +, python3 , enableNosv ? false , enableDebug ? false , enableOvni ? false @@ -37,6 +38,7 @@ stdenv.mkDerivation rec { ninja perl pkg-config + python3 ] ++ lib.optionals enableNosv [ nosv ] ++ lib.optionals enableOvni [ From 48d67ef6c2c7587f2e0588f4f43f45d30d2d4437 Mon Sep 17 00:00:00 2001 From: Aleix Roca Nonell Date: Tue, 12 Nov 2024 16:49:38 +0100 Subject: [PATCH 934/987] Fix NODES native dependencies Move NODES build tools to nativeBuildInputs. This is needed for cross-compilation, given that build tools must much the build system. Reviewed-by: Rodrigo Arias Mallo --- pkgs/nodes/default.nix | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/pkgs/nodes/default.nix b/pkgs/nodes/default.nix index f4fd991..d4c9bc6 100644 --- a/pkgs/nodes/default.nix +++ b/pkgs/nodes/default.nix @@ -69,12 +69,15 @@ in # disable all by default, which includes bindnow. hardeningDisable = [ "all" ]; - buildInputs = [ + nativeBuildInputs = [ autoreconfHook autoconf automake libtool pkg-config + ]; + + buildInputs = [ boost numactl hwloc From 73550ad5a9b41c1565e06e616fbec749f2cdea3b Mon Sep 17 00:00:00 2001 From: Aleix Roca Nonell Date: Tue, 12 Nov 2024 16:49:39 +0100 Subject: [PATCH 935/987] Remove unneeded NODES dependencies The autoreconfHook helper already provides autotools binaries. Also NODES no longer uses papi. Reviewed-by: Rodrigo Arias Mallo --- pkgs/nodes/default.nix | 8 -------- 1 file changed, 8 deletions(-) diff --git a/pkgs/nodes/default.nix b/pkgs/nodes/default.nix index d4c9bc6..8e52424 100644 --- a/pkgs/nodes/default.nix +++ b/pkgs/nodes/default.nix @@ -1,15 +1,11 @@ { stdenv , lib -, automake -, autoconf -, libtool , fetchFromGitHub , pkg-config , perl , numactl , hwloc -, papi , boost , autoreconfHook , ovni @@ -71,9 +67,6 @@ in nativeBuildInputs = [ autoreconfHook - autoconf - automake - libtool pkg-config ]; @@ -81,7 +74,6 @@ in boost numactl hwloc - papi nosv ovni ]; From 6782fc6c5b5a29e84a7f2c2d1064f4bcb1288c0f Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Date: Mon, 18 Nov 2024 11:02:28 +0100 Subject: [PATCH 936/987] Add cacheline parameter to nOS-V By default it is set to 64 bits. The cacheline parameter is required when cross-compiling nOS-V, as it cannot be read from the build machine. Tested-by: Rodrigo Arias Mallo --- pkgs/nosv/default.nix | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/pkgs/nosv/default.nix b/pkgs/nosv/default.nix index 22a89f4..22ff41b 100644 --- a/pkgs/nosv/default.nix +++ b/pkgs/nosv/default.nix @@ -6,6 +6,7 @@ , pkg-config , numactl , hwloc +, cacheline ? 64 # bits , ovni ? null , useGit ? false , gitUrl ? "git@gitlab-internal.bsc.es:nos-v/nos-v.git" @@ -43,7 +44,10 @@ in hardeningDisable = [ "all" ]; dontStrip = true; separateDebugInfo = true; - configureFlags = [ "--with-ovni=${ovni}" ]; + configureFlags = [ + "--with-ovni=${ovni}" + "CACHELINE_WIDTH=${toString cacheline}" + ]; nativeBuildInputs = [ autoreconfHook pkg-config From f44eebc13324a0fd456f003b9c6bdb4e69096a80 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 16 Jan 2025 16:48:43 +0100 Subject: [PATCH 937/987] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'nixpkgs': 'path:/nix/store/z7y28qzhk7driiwcw78k0mb24laknm0f-source?lastModified=1700390070&narHash=sha256-de9KYi8rSJpqvBfNwscWdalIJXPo8NjdIZcEJum1mH0%3D&rev=e4ad989506ec7d71f7302cc3067abd82730a4beb' (2023-11-19) → 'path:/nix/store/2csx2kkb2hxyxhhmg2xs9jfyypikwwk6-source?lastModified=1736867362&narHash=sha256-i/UJ5I7HoqmFMwZEH6vAvBxOrjjOJNU739lnZnhUln8%3D&rev=9c6b49aeac36e2ed73a8c472f1546f6d9cf1addc' (2025-01-14) Reviewed-by: Aleix Boné --- flake.lock | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/flake.lock b/flake.lock index 138fc72..ae74ebe 100644 --- a/flake.lock +++ b/flake.lock @@ -2,10 +2,10 @@ "nodes": { "nixpkgs": { "locked": { - "lastModified": 1700390070, - "narHash": "sha256-de9KYi8rSJpqvBfNwscWdalIJXPo8NjdIZcEJum1mH0=", - "path": "/nix/store/z7y28qzhk7driiwcw78k0mb24laknm0f-source", - "rev": "e4ad989506ec7d71f7302cc3067abd82730a4beb", + "lastModified": 1736867362, + "narHash": "sha256-i/UJ5I7HoqmFMwZEH6vAvBxOrjjOJNU739lnZnhUln8=", + "path": "/nix/store/2csx2kkb2hxyxhhmg2xs9jfyypikwwk6-source", + "rev": "9c6b49aeac36e2ed73a8c472f1546f6d9cf1addc", "type": "path" }, "original": { From 505f101e009eee3d36fbd569d19c99f26f82a6ae Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 16 Jan 2025 16:51:11 +0100 Subject: [PATCH 938/987] Update wxGTK30 to wxGTK32 in paraver kernel MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reviewed-by: Aleix Boné --- pkgs/paraver/kernel.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/paraver/kernel.nix b/pkgs/paraver/kernel.nix index d623b3c..4365593 100644 --- a/pkgs/paraver/kernel.nix +++ b/pkgs/paraver/kernel.nix @@ -4,14 +4,14 @@ , boost , libxml2 , xml2 -, wxGTK30 +, wxGTK32 , autoconf , automake , pkg-config }: let - wx = wxGTK30; + wx = wxGTK32; in stdenv.mkDerivation rec { pname = "paraver-kernel"; From 501f11a8e50175ad3e496e3c563ff079e0afa9ac Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 17 Jan 2025 11:23:09 +0100 Subject: [PATCH 939/987] Merge outputs of MPI in a single directory MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Some MPI implementations now have their headers in the dev output as well as the mpicc wrappers. Reviewed-by: Aleix Boné --- pkgs/gpi-2/default.nix | 8 ++++++-- pkgs/osu/default.nix | 14 +++++++++++--- pkgs/tagaspi/default.nix | 10 +++++++++- 3 files changed, 26 insertions(+), 6 deletions(-) diff --git a/pkgs/gpi-2/default.nix b/pkgs/gpi-2/default.nix index f6f682e..a17b15c 100644 --- a/pkgs/gpi-2/default.nix +++ b/pkgs/gpi-2/default.nix @@ -17,6 +17,10 @@ let name ="rdma-core-all"; paths = [ rdma-core.dev rdma-core.out ]; }; + mpiAll = symlinkJoin { + name = "mpi-all"; + paths = [ mpi.all ]; + }; in stdenv.mkDerivation rec { @@ -37,13 +41,13 @@ stdenv.mkDerivation rec { configureFlags = [ "--with-infiniband=${rdma-core-all}" - "--with-mpi=${mpi}" + "--with-mpi=${mpiAll}" "--with-slurm" "CFLAGS=-fPIC" "CXXFLAGS=-fPIC" ]; - buildInputs = [ slurm mpi rdma-core-all autoconf automake libtool rsync gfortran ]; + buildInputs = [ slurm mpiAll rdma-core-all autoconf automake libtool rsync gfortran ]; hardeningDisable = [ "all" ]; } diff --git a/pkgs/osu/default.nix b/pkgs/osu/default.nix index 1bb3f0c..e719b03 100644 --- a/pkgs/osu/default.nix +++ b/pkgs/osu/default.nix @@ -3,8 +3,16 @@ , fetchurl , mpi , lib +, symlinkJoin }: +let + mpiAll = symlinkJoin { + name = "mpi-all"; + paths = [ mpi.all ]; + }; +in + stdenv.mkDerivation rec { version = "7.1-1"; name = "osu-micro-benchmarks-${version}"; @@ -16,11 +24,11 @@ stdenv.mkDerivation rec { doCheck = true; enableParallelBuilding = true; - buildInputs = [ mpi ]; + buildInputs = [ mpiAll ]; hardeningDisable = [ "all" ]; configureFlags = [ - "CC=${mpi}/bin/mpicc" - "CXX=${mpi}/bin/mpicxx" + "CC=mpicc" + "CXX=mpicxx" ]; postInstall = '' diff --git a/pkgs/tagaspi/default.nix b/pkgs/tagaspi/default.nix index d9c7557..0b448f4 100644 --- a/pkgs/tagaspi/default.nix +++ b/pkgs/tagaspi/default.nix @@ -11,8 +11,16 @@ , numactl , rdma-core , gfortran +, symlinkJoin }: +let + mpiAll = symlinkJoin { + name = "mpi-all"; + paths = [ mpi.all ]; + }; +in + stdenv.mkDerivation rec { pname = "tagaspi"; enableParallelBuilding = true; @@ -32,10 +40,10 @@ stdenv.mkDerivation rec { autoconf libtool boost - mpi numactl rdma-core gfortran + mpiAll ]; dontDisableStatic = true; From 22e40db034703365e2dc4ba248274114a1a1a238 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 17 Jan 2025 11:24:39 +0100 Subject: [PATCH 940/987] Add explicit zlib dependency MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The stdenv no longer provides it by default. Reviewed-by: Aleix Boné Tested-by: Rodrigo Arias Mallo --- pkgs/intel-oneapi/2023.nix | 1 + pkgs/paraver/kernel.nix | 2 ++ 2 files changed, 3 insertions(+) diff --git a/pkgs/intel-oneapi/2023.nix b/pkgs/intel-oneapi/2023.nix index 304b461..79576e7 100644 --- a/pkgs/intel-oneapi/2023.nix +++ b/pkgs/intel-oneapi/2023.nix @@ -198,6 +198,7 @@ let libffi_3_3 libelf libxml2 + zlib hwloc stdenv.cc.cc.lib ]; diff --git a/pkgs/paraver/kernel.nix b/pkgs/paraver/kernel.nix index 4365593..eb3e60d 100644 --- a/pkgs/paraver/kernel.nix +++ b/pkgs/paraver/kernel.nix @@ -8,6 +8,7 @@ , autoconf , automake , pkg-config +, zlib }: let @@ -51,5 +52,6 @@ stdenv.mkDerivation rec { autoconf automake pkg-config + zlib ]; } From c4583f787d535d4bc7c7805738f77abac702f130 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 10 Feb 2025 17:16:57 +0100 Subject: [PATCH 941/987] Fix Nanos6 build from git MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The src.rev attribute is not available as it comes from source before the recursive operator. Instead, simply get it from the function inputs. Cc: Aleix Boné Reviewed-by: Aleix Roca Nonell --- pkgs/nanos6/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/nanos6/default.nix b/pkgs/nanos6/default.nix index 6babdf1..fabb1e4 100644 --- a/pkgs/nanos6/default.nix +++ b/pkgs/nanos6/default.nix @@ -48,7 +48,7 @@ let source = if (useGit) then git else release; in - stdenv.mkDerivation (source // rec { + stdenv.mkDerivation (source // { pname = "nanos6"; prePatch = '' @@ -62,7 +62,7 @@ in export CACHELINE_WIDTH=${toString cachelineBytes} ./autogen.sh '' + lib.optionalString (useGit) '' - export NANOS6_GIT_VERSION=${src.rev} + export NANOS6_GIT_VERSION=${gitCommit} export NANOS6_GIT_BRANCH=${gitBranch} ''; From f962816eabd534eafe948499322589921f230e72 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aleix=20Bon=C3=A9?= Date: Fri, 28 Feb 2025 15:51:49 +0100 Subject: [PATCH 942/987] Update PM gitlab URL to new server bscpm04.bsc.es The old server has died, so we move to the new URL at bscpm04.bsc.es. Reviewed-by: Rodrigo Arias Mallo Tested-by: Rodrigo Arias Mallo --- pkgs/bench6/default.nix | 2 +- pkgs/cn6/default.nix | 2 +- pkgs/llvm-ompss2/clang.nix | 2 +- pkgs/mcxx/git.nix | 2 +- pkgs/mcxx/rarias.nix | 2 +- pkgs/nanos6/default.nix | 2 +- pkgs/nixtools/default.nix | 2 +- pkgs/ovni/default.nix | 2 +- pkgs/tampi/default.nix | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-) diff --git a/pkgs/bench6/default.nix b/pkgs/bench6/default.nix index f6a908a..91c8a74 100644 --- a/pkgs/bench6/default.nix +++ b/pkgs/bench6/default.nix @@ -7,7 +7,7 @@ , mpi , tampi , gitBranch ? "master" -, gitURL ? "ssh://git@bscpm03.bsc.es/rarias/bench6.git" +, gitURL ? "ssh://git@bscpm04.bsc.es/rarias/bench6.git" , gitCommit ? "1e6ce2aa8ad7b4eef38df1581d7ec48a8815f85d" }: diff --git a/pkgs/cn6/default.nix b/pkgs/cn6/default.nix index 5e3eaf5..e213bcf 100644 --- a/pkgs/cn6/default.nix +++ b/pkgs/cn6/default.nix @@ -28,7 +28,7 @@ stdenv.mkDerivation rec { ] ++ optionals (enableTest) [ mpi clangOmpss2 tampi ]; src = builtins.fetchGit { - url = "ssh://git@bscpm03.bsc.es/rarias/cn6.git"; + url = "ssh://git@bscpm04.bsc.es/rarias/cn6.git"; ref = "master"; rev = "c72c3b66b720c2a33950f536fc819051c8f20a69"; }; diff --git a/pkgs/llvm-ompss2/clang.nix b/pkgs/llvm-ompss2/clang.nix index 02d140a..3302e64 100644 --- a/pkgs/llvm-ompss2/clang.nix +++ b/pkgs/llvm-ompss2/clang.nix @@ -14,7 +14,7 @@ , gcc # needed to set the rpath of libstdc++ for clang-tblgen , enableDebug ? false , useGit ? false -, gitUrl ? "ssh://git@bscpm03.bsc.es/llvm-ompss/llvm-mono.git" +, gitUrl ? "ssh://git@bscpm04.bsc.es/llvm-ompss/llvm-mono.git" , gitBranch ? "master" , gitCommit ? "8c0d267c04d7fc3fb923078f510fcd5f4719a6cc" }: diff --git a/pkgs/mcxx/git.nix b/pkgs/mcxx/git.nix index 6106f3c..e417630 100644 --- a/pkgs/mcxx/git.nix +++ b/pkgs/mcxx/git.nix @@ -23,7 +23,7 @@ stdenv.mkDerivation rec { }; src = builtins.fetchGit { - url = "ssh://git@bscpm03.bsc.es/mercurium/mcxx"; + url = "ssh://git@bscpm04.bsc.es/mercurium/mcxx"; ref = "master"; }; diff --git a/pkgs/mcxx/rarias.nix b/pkgs/mcxx/rarias.nix index 32a18af..25ad8ea 100644 --- a/pkgs/mcxx/rarias.nix +++ b/pkgs/mcxx/rarias.nix @@ -19,7 +19,7 @@ stdenv.mkDerivation rec { #src = /home/Computational/rarias/mcxx; src = builtins.fetchGit { - url = "ssh://git@bscpm03.bsc.es/rarias/mcxx"; + url = "ssh://git@bscpm04.bsc.es/rarias/mcxx"; rev = "44129a6ac05b8f78b06e9e2eff71438b5ca4d29f"; }; diff --git a/pkgs/nanos6/default.nix b/pkgs/nanos6/default.nix index fabb1e4..ef0f1a7 100644 --- a/pkgs/nanos6/default.nix +++ b/pkgs/nanos6/default.nix @@ -17,7 +17,7 @@ , cachelineBytes ? 64 , enableGlibcxxDebug ? false , useGit ? false -, gitUrl ? "ssh://git@bscpm03.bsc.es/nanos6/nanos6" +, gitUrl ? "ssh://git@bscpm04.bsc.es/nanos6/nanos6" , gitBranch ? "master" , gitCommit ? "9f54c988e0a8b9c011d9d526acdb8d76f18fcae4" }: diff --git a/pkgs/nixtools/default.nix b/pkgs/nixtools/default.nix index 7fb146d..76ea64b 100644 --- a/pkgs/nixtools/default.nix +++ b/pkgs/nixtools/default.nix @@ -7,7 +7,7 @@ stdenv.mkDerivation rec { pname = "nixtools"; version = "${src.shortRev}"; src = builtins.fetchGit { - url = "ssh://git@bscpm03.bsc.es/rarias/nixtools"; + url = "ssh://git@bscpm04.bsc.es/rarias/nixtools"; ref = "master"; rev = "a103e392048ace3ed88ce74648b32c9e6ed094da"; }; diff --git a/pkgs/ovni/default.nix b/pkgs/ovni/default.nix index 306e4e5..a888e71 100644 --- a/pkgs/ovni/default.nix +++ b/pkgs/ovni/default.nix @@ -6,7 +6,7 @@ , fetchFromGitHub , useGit ? false , gitBranch ? "master" -, gitUrl ? "ssh://git@bscpm03.bsc.es/rarias/ovni.git" +, gitUrl ? "ssh://git@bscpm04.bsc.es/rarias/ovni.git" , gitCommit ? "a7103f8510d1ec124c3e01ceb47d1e443e98bbf4" , enableDebug ? false # Only enable MPI if the build is native (fails on cross-compilation) diff --git a/pkgs/tampi/default.nix b/pkgs/tampi/default.nix index a146521..37209e8 100644 --- a/pkgs/tampi/default.nix +++ b/pkgs/tampi/default.nix @@ -13,7 +13,7 @@ , enableOvni ? true , ovni ? null , useGit ? false -, gitUrl ? "ssh://git@bscpm03.bsc.es/interoperability/tampi.git" +, gitUrl ? "ssh://git@bscpm04.bsc.es/interoperability/tampi.git" , gitBranch ? "master" , gitCommit ? "a5c93bf8ab045b71ad4a8d5e2c991ce774db5cbc" }: From f89cd4d7e270ed12517edb3f8618537f441c5814 Mon Sep 17 00:00:00 2001 From: Aleix Roca Nonell Date: Mon, 26 May 2025 10:28:30 +0200 Subject: [PATCH 943/987] Remove dangling libomp.so symlink Reviewed-by: Rodrigo Arias Mallo --- pkgs/llvm-ompss2/openmp.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/llvm-ompss2/openmp.nix b/pkgs/llvm-ompss2/openmp.nix index 56c0d70..0d2c84b 100644 --- a/pkgs/llvm-ompss2/openmp.nix +++ b/pkgs/llvm-ompss2/openmp.nix @@ -68,6 +68,7 @@ stdenv.mkDerivation rec { rm -f $out/lib/libiomp* '' + lib.optionalString enableNosv '' rm -f $out/lib/libomp.* + rm -f $out/libllvmrt/libomp.* ''; passthru = { From 8e5b2dc5ccee0bad68d738cca7db2ffffc44c8fd Mon Sep 17 00:00:00 2001 From: Aleix Roca Nonell Date: Mon, 26 May 2025 10:29:16 +0200 Subject: [PATCH 944/987] Fix C runtime objects path in OmpSs-2 LLVM Some gcc versions append an extension to the patch version number, but this extension is not part of the installation path. This patch removes the extension to the patch version. Reviewed-by: Rodrigo Arias Mallo Tested-by: Rodrigo Arias Mallo --- pkgs/llvm-ompss2/default.nix | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/pkgs/llvm-ompss2/default.nix b/pkgs/llvm-ompss2/default.nix index 81b972a..1b53de3 100644 --- a/pkgs/llvm-ompss2/default.nix +++ b/pkgs/llvm-ompss2/default.nix @@ -9,12 +9,14 @@ , ompss2rt ? null }: +with lib; + let usingNodesAndOmpv = (openmp.pname == "openmp-v" && ompss2rt.pname == "nodes"); sameNosv = openmp.nosv == ompss2rt.nosv; in -assert lib.assertMsg (usingNodesAndOmpv -> sameNosv) "OpenMP-V and NODES must share the same nOS-V"; +assert assertMsg (usingNodesAndOmpv -> sameNosv) "OpenMP-V and NODES must share the same nOS-V"; let homevar = if ompss2rt.pname == "nanos6" then "NANOS6_HOME" else "NODES_HOME"; @@ -34,14 +36,15 @@ let targetConfig = stdenv.targetPlatform.config; inherit gcc; cc = clangOmpss2Unwrapped; + gccVersion = with versions; let v = gcc.version; in concatStringsSep "." [(major v) (minor v) (patch v)]; in wrapCCWith { inherit cc bintools; # extraPackages adds packages to depsTargetTargetPropagated - extraPackages = lib.optional (openmp != null) openmp; + extraPackages = optional (openmp != null) openmp; extraBuildCommands = '' echo "-target ${targetConfig}" >> $out/nix-support/cc-cflags - echo "-B${gcc.cc}/lib/gcc/${targetConfig}/${gcc.version}" >> $out/nix-support/cc-cflags - echo "-L${gcc.cc}/lib/gcc/${targetConfig}/${gcc.version}" >> $out/nix-support/cc-ldflags + echo "-B${gcc.cc}/lib/gcc/${targetConfig}/${gccVersion}" >> $out/nix-support/cc-cflags + echo "-L${gcc.cc}/lib/gcc/${targetConfig}/${gccVersion}" >> $out/nix-support/cc-ldflags echo "-L${gcc.cc.lib}/lib" >> $out/nix-support/cc-ldflags for dir in ${gcc.cc}/include/c++/*; do @@ -55,12 +58,12 @@ in wrapCCWith { wrap clang++ $wrapper $ccPath/clang++ - '' + lib.optionalString (openmp != null) '' + '' + optionalString (openmp != null) '' echo "export OPENMP_RUNTIME=${ompname}" >> $out/nix-support/cc-wrapper-hook - '' + lib.optionalString (ompss2rt != null) '' + '' + optionalString (ompss2rt != null) '' echo "export OMPSS2_RUNTIME=${rtname}" >> $out/nix-support/cc-wrapper-hook echo "export ${homevar}=${ompss2rt}" >> $out/nix-support/cc-wrapper-hook - '' + lib.optionalString (ompss2rt != null && ompss2rt.pname == "nodes") '' + '' + optionalString (ompss2rt != null && ompss2rt.pname == "nodes") '' echo "export NOSV_HOME=${ompss2rt.nosv}" >> $out/nix-support/cc-wrapper-hook ''; } From 9d1944c658929b6f98b3f3803fead4d1b91c4405 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 11 Jun 2025 14:14:05 +0200 Subject: [PATCH 945/987] Upgrade and fix lmbench package MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Now it needs libtirpc to provide rpc/rpc.h, as it seems it is gone from libc. We also fix the install target so it installs the additional benchmarks. Reviewed-by: Aleix Boné Tested-by: Aleix Boné --- overlay.nix | 2 +- pkgs/lmbench/default.nix | 16 ++++++++++++---- pkgs/lmbench/fix-install.patch | 10 ++++++++++ 3 files changed, 23 insertions(+), 5 deletions(-) create mode 100644 pkgs/lmbench/fix-install.patch diff --git a/overlay.nix b/overlay.nix index d337347..d4ea269 100644 --- a/overlay.nix +++ b/overlay.nix @@ -21,7 +21,7 @@ let gpi-2 = callPackage ./pkgs/gpi-2/default.nix { }; intelPackages_2023 = callPackage ./pkgs/intel-oneapi/2023.nix { }; jemallocNanos6 = callPackage ./pkgs/nanos6/jemalloc.nix { }; - #lmbench = callPackage ./pkgs/lmbench/default.nix { }; # Broken + lmbench = callPackage ./pkgs/lmbench/default.nix { }; mcxx = callPackage ./pkgs/mcxx/default.nix { }; nanos6 = callPackage ./pkgs/nanos6/default.nix { }; nanos6Debug = final.nanos6.override { enableDebug = true; }; diff --git a/pkgs/lmbench/default.nix b/pkgs/lmbench/default.nix index b822cac..9c48dd1 100644 --- a/pkgs/lmbench/default.nix +++ b/pkgs/lmbench/default.nix @@ -1,19 +1,20 @@ { lib, stdenv, + libtirpc, fetchFromGitHub }: stdenv.mkDerivation rec { pname = "lmbench"; - version = "701c6c35"; + version = "941a0dcc"; # We use the intel repo as they have fixed some problems src = fetchFromGitHub { owner = "intel"; repo = pname; - rev = "701c6c35b0270d4634fb1dc5272721340322b8ed"; - sha256 = "0sf6zk03knkardsfd6qx7drpm56nhg53n885cylkggk83r38idyr"; + rev = "941a0dcc0e7bdd9bb0dee05d7f620e77da8c43af"; + sha256 = "sha256-SzwplRBO3V0R3m3p15n71ivYBMGoLsajFK2TapYxdqk="; }; postUnpack = '' @@ -24,12 +25,19 @@ stdenv.mkDerivation rec { sed -i "s@/bin/rm@rm@g" $(find . -name Makefile) ''; + buildInputs = [ libtirpc ]; + patches = [ ./fix-install.patch ]; + hardeningDisable = [ "all" ]; enableParallelBuilding = false; preBuild = '' - makeFlagsArray+=(BASE=$out) + makeFlagsArray+=( + BASE=$out + CPPFLAGS=-I${libtirpc.dev}/include/tirpc + LDFLAGS=-ltirpc + ) ''; meta = { diff --git a/pkgs/lmbench/fix-install.patch b/pkgs/lmbench/fix-install.patch new file mode 100644 index 0000000..f539254 --- /dev/null +++ b/pkgs/lmbench/fix-install.patch @@ -0,0 +1,10 @@ +--- a/Makefile ++++ b/Makefile +@@ -144,6 +144,7 @@ install-target: + if [ ! -d $(BASE)/include ]; then mkdir $(BASE)/include; fi + if [ ! -d $(BASE)/lib ]; then mkdir $(BASE)/lib; fi + cp $(EXES) $(BASE)/bin ++ cp $(OPT_EXES) $(BASE)/bin + cp $(INCS) $(BASE)/include + cp $O/lmbench.a $(BASE)/lib/libmbench.a + cd ../doc; env MAKEFLAGS="$(MAKEFLAGS)" make CC="${CC}" OS="${OS}" BASE="$(BASE)" install From 43d32ac16d930f733041478bbcc1c7125a208664 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aleix=20Bon=C3=A9?= Date: Fri, 28 Feb 2025 13:23:28 +0100 Subject: [PATCH 946/987] Use nixpkgs from flake.lock and support attrs when importing bscpkgs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This makes `nix-build` and friends use the current flake lock instead of the outdated pinned version we had in `./nixpkgs.nix` With this, `nix-build -A ovni` and `nix build .#ovni` should produce the same result. This will fail if the flake nixpkgs input does not come from NixOS/nixpkgs. We could use edolstra/flake-compat instead, but it's overkill imho. Additionally, I made default.nix behave like nixpkgs, so that we can import bscpkgs à la nixpkgs (Apply overlays and other options that nixpkgs accepts): ```nix let pkgs = import bscpkgs { inherit system; }; in <...> ``` Reviewed-by: Rodrigo Arias Mallo --- default.nix | 22 +++++++++++++++------- nixpkgs.nix | 9 --------- 2 files changed, 15 insertions(+), 16 deletions(-) delete mode 100644 nixpkgs.nix diff --git a/default.nix b/default.nix index a28f759..14c06c6 100644 --- a/default.nix +++ b/default.nix @@ -1,11 +1,19 @@ let bscOverlay = import ./overlay.nix; - # Pin the nixpkgs - nixpkgsPath = import ./nixpkgs.nix; - - pkgs = import nixpkgsPath { - overlays = [ bscOverlay ]; + # read flake.lock and determine revision from there + lock = builtins.fromJSON (builtins.readFile ./flake.lock); + inherit (lock.nodes.nixpkgs.locked) rev narHash; + fetchedNixpkgs = builtins.fetchTarball { + url = "https://github.com/NixOS/nixpkgs/archive/${rev}.tar.gz"; + sha256 = narHash; }; - -in pkgs +in +{ overlays ? [ ] +, nixpkgs ? fetchedNixpkgs +, ... +}@attrs: +import nixpkgs ( + (builtins.removeAttrs attrs [ "overlays" "nixpkgs" ]) // + { overlays = [ bscOverlay ] ++ overlays; } +) diff --git a/nixpkgs.nix b/nixpkgs.nix deleted file mode 100644 index 2075697..0000000 --- a/nixpkgs.nix +++ /dev/null @@ -1,9 +0,0 @@ -let - commit = "e4ad989506ec7d71f7302cc3067abd82730a4beb"; -in builtins.fetchTarball { - # Descriptive name to make the store path easier to identify - name = "nixpkgs-${commit}"; - url = "https://github.com/nixos/nixpkgs/archive/${commit}.tar.gz"; - # Hash obtained using `nix-prefetch-url --unpack ` - sha256 = "sha256-de9KYi8rSJpqvBfNwscWdalIJXPo8NjdIZcEJum1mH0="; -} From a87b99d0a42118c85f72cf4be200e62e3cf6b483 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 13 Mar 2025 16:52:15 +0100 Subject: [PATCH 947/987] Update bench6 package to bf29a531 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reviewed-by: Aleix Boné --- pkgs/bench6/default.nix | 35 ++++++++++++++++++++++++++++++++--- 1 file changed, 32 insertions(+), 3 deletions(-) diff --git a/pkgs/bench6/default.nix b/pkgs/bench6/default.nix index 91c8a74..a85ae78 100644 --- a/pkgs/bench6/default.nix +++ b/pkgs/bench6/default.nix @@ -1,14 +1,22 @@ { stdenv +, bigotes , cmake , clangOmpss2 +, openmp +, openmpv , nanos6 , nodes +, nosv , mpi , tampi +, tagaspi +, gpi-2 +, openblas +, ovni , gitBranch ? "master" , gitURL ? "ssh://git@bscpm04.bsc.es/rarias/bench6.git" -, gitCommit ? "1e6ce2aa8ad7b4eef38df1581d7ec48a8815f85d" +, gitCommit ? "bf29a53113737c3aa74d2fe3d55f59868faea7b4" }: stdenv.mkDerivation rec { @@ -21,9 +29,30 @@ stdenv.mkDerivation rec { rev = gitCommit; }; - buildInputs = [ cmake clangOmpss2 nanos6 nodes mpi tampi ]; + buildInputs = [ + bigotes + cmake + clangOmpss2 + openmp + openmpv + nanos6 + nodes + nosv + mpi + tampi + tagaspi + gpi-2 + openblas + openblas.dev + ovni + ]; + + env = { + NANOS6_HOME = nanos6; + NODES_HOME = nodes; + NOSV_HOME = nosv; + }; - enableParallelBuilding = false; cmakeFlags = [ "-DCMAKE_C_COMPILER=clang" "-DCMAKE_CXX_COMPILER=clang++" From e4abd8d8f608c431a49f242e8ae496d3f3cf17ee Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 18 Jul 2025 10:35:10 +0200 Subject: [PATCH 948/987] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'nixpkgs': 'path:/nix/store/2csx2kkb2hxyxhhmg2xs9jfyypikwwk6-source?lastModified=1736867362&narHash=sha256-i/UJ5I7HoqmFMwZEH6vAvBxOrjjOJNU739lnZnhUln8%3D&rev=9c6b49aeac36e2ed73a8c472f1546f6d9cf1addc' (2025-01-14) → 'path:/nix/store/zk8v61cpk1wprp9ld5ayc1g5fq4pdkwv-source?lastModified=1752436162&narHash=sha256-Kt1UIPi7kZqkSc5HVj6UY5YLHHEzPBkgpNUByuyxtlw%3D&rev=dfcd5b901dbab46c9c6e80b265648481aafb01f8' (2025-07-13) Reviewed-by: Aleix Boné --- flake.lock | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/flake.lock b/flake.lock index ae74ebe..8fcc4a2 100644 --- a/flake.lock +++ b/flake.lock @@ -2,10 +2,10 @@ "nodes": { "nixpkgs": { "locked": { - "lastModified": 1736867362, - "narHash": "sha256-i/UJ5I7HoqmFMwZEH6vAvBxOrjjOJNU739lnZnhUln8=", - "path": "/nix/store/2csx2kkb2hxyxhhmg2xs9jfyypikwwk6-source", - "rev": "9c6b49aeac36e2ed73a8c472f1546f6d9cf1addc", + "lastModified": 1752436162, + "narHash": "sha256-Kt1UIPi7kZqkSc5HVj6UY5YLHHEzPBkgpNUByuyxtlw=", + "path": "/nix/store/zk8v61cpk1wprp9ld5ayc1g5fq4pdkwv-source", + "rev": "dfcd5b901dbab46c9c6e80b265648481aafb01f8", "type": "path" }, "original": { From 2cacc2b265b57530132b451aaff4becc0ddf4b46 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 18 Jul 2025 10:39:27 +0200 Subject: [PATCH 949/987] Update ovni to 1.12.0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reviewed-by: Aleix Boné --- pkgs/ovni/default.nix | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pkgs/ovni/default.nix b/pkgs/ovni/default.nix index a888e71..9521fa6 100644 --- a/pkgs/ovni/default.nix +++ b/pkgs/ovni/default.nix @@ -7,7 +7,7 @@ , useGit ? false , gitBranch ? "master" , gitUrl ? "ssh://git@bscpm04.bsc.es/rarias/ovni.git" -, gitCommit ? "a7103f8510d1ec124c3e01ceb47d1e443e98bbf4" +, gitCommit ? "e4f62382076f0cf0b1d08175cf57cc0bc51abc61" , enableDebug ? false # Only enable MPI if the build is native (fails on cross-compilation) , useMpi ? (stdenv.buildPlatform.canExecute stdenv.hostPlatform) @@ -17,13 +17,13 @@ with lib; let release = rec { - version = "1.11.0"; + version = "1.12.0"; src = fetchFromGitHub { owner = "bsc-pm"; repo = "ovni"; rev = "${version}"; - hash = "sha256-DEZUK1dvbPGH5WYkZ2hpP5PShkMxXkHOqMwgYUHHxeM="; - } // { shortRev = "a7103f8"; }; + hash = "sha256-H04JvsVKrdqr3ON7JhU0g17jjlg/jzQ7eTfx9vUNd3E="; + } // { shortRev = "a73afcf"; }; }; git = rec { From 867ba3ec5a546c25fc2640760b1ca717856e8c65 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 18 Jul 2025 10:45:30 +0200 Subject: [PATCH 950/987] Update nOS-V to 3.2.0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reviewed-by: Aleix Boné --- pkgs/nosv/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/nosv/default.nix b/pkgs/nosv/default.nix index 22ff41b..889f5c3 100644 --- a/pkgs/nosv/default.nix +++ b/pkgs/nosv/default.nix @@ -11,19 +11,19 @@ , useGit ? false , gitUrl ? "git@gitlab-internal.bsc.es:nos-v/nos-v.git" , gitBranch ? "master" -, gitCommit ? "cfd361bd1dd30c96da405e6bbaa7e78f5f93dfda" +, gitCommit ? "9f47063873c3aa9d6a47482a82c5000a8c813dd8" }: with lib; let release = rec { - version = "3.1.0"; + version = "3.2.0"; src = fetchFromGitHub { owner = "bsc-pm"; repo = "nos-v"; rev = "${version}"; - hash = "sha256-Pkre+ZZsREDxJLCoIoPN1HQDuUa2H1IQyKB3omg6qaU="; + hash = "sha256-yaz92426EM8trdkBJlISmAoG9KJCDTvoAW/HKrasvOw="; }; }; From 2d0b014dc7b1f8e91386e6b0c132052676a90c50 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 18 Jul 2025 12:10:14 +0200 Subject: [PATCH 951/987] Update Nanos6 to 4.3 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reviewed-by: Aleix Boné --- pkgs/nanos6/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/nanos6/default.nix b/pkgs/nanos6/default.nix index ef0f1a7..07066fb 100644 --- a/pkgs/nanos6/default.nix +++ b/pkgs/nanos6/default.nix @@ -19,7 +19,7 @@ , useGit ? false , gitUrl ? "ssh://git@bscpm04.bsc.es/nanos6/nanos6" , gitBranch ? "master" -, gitCommit ? "9f54c988e0a8b9c011d9d526acdb8d76f18fcae4" +, gitCommit ? "f82762b66c82b5174a8eaad33f6c2f335ac759b4" }: assert enableJemalloc -> (jemallocNanos6 != null); @@ -28,12 +28,12 @@ with lib; let release = rec { - version = "4.2"; + version = "4.3"; src = fetchFromGitHub { owner = "bsc-pm"; repo = "nanos6"; rev = "version-${version}"; - hash = "sha256-tBrRGLCjSFYdmVGPAC2DzYY6HJyZGUOMeykujafn7+4="; + hash = "sha256-/c6WiKBsAo/01uvMRmjv0PMucbrgvaGmbxlPE6q+dfE="; }; }; From 4442b6a70694454ce9e317a306d23228fb9bd8b3 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 18 Jul 2025 12:20:49 +0200 Subject: [PATCH 952/987] Update TAMPI to 4.1 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reviewed-by: Aleix Boné --- pkgs/tampi/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/tampi/default.nix b/pkgs/tampi/default.nix index 37209e8..50de822 100644 --- a/pkgs/tampi/default.nix +++ b/pkgs/tampi/default.nix @@ -15,7 +15,7 @@ , useGit ? false , gitUrl ? "ssh://git@bscpm04.bsc.es/interoperability/tampi.git" , gitBranch ? "master" -, gitCommit ? "a5c93bf8ab045b71ad4a8d5e2c991ce774db5cbc" +, gitCommit ? "f6455db9d3124ae36e715a4874fd49720e79f20a" }: with lib; @@ -24,12 +24,12 @@ assert enableOvni -> (ovni != null); let release = rec { - version = "4.0"; + version = "4.1"; src = fetchFromGitHub { owner = "bsc-pm"; repo = "tampi"; rev = "v${version}"; - hash = "sha256-R7ew5tsrxGReTvOeeZe1FD0oThBhOHoDGv6Mo2sbmDg="; + hash = "sha256-SwfPSnwcZnRnSgNvCD5sFSUJRpWINqI5I4adj5Hh+XY="; }; }; git = rec { From e82d3c3b9f255dfc34be897581f9e44af416dc54 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 18 Jul 2025 16:03:09 +0200 Subject: [PATCH 953/987] Upgrade OmpSs-2 LLVM to 2025.06 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reviewed-by: Aleix Boné --- pkgs/llvm-ompss2/clang.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/llvm-ompss2/clang.nix b/pkgs/llvm-ompss2/clang.nix index 3302e64..ca2fb43 100644 --- a/pkgs/llvm-ompss2/clang.nix +++ b/pkgs/llvm-ompss2/clang.nix @@ -16,19 +16,19 @@ , useGit ? false , gitUrl ? "ssh://git@bscpm04.bsc.es/llvm-ompss/llvm-mono.git" , gitBranch ? "master" -, gitCommit ? "8c0d267c04d7fc3fb923078f510fcd5f4719a6cc" +, gitCommit ? "880e2341c56bad1dc14e8c369fb3356bec19018e" }: let stdenv = llvmPackages_latest.stdenv; release = rec { - version = "2024.11"; + version = "2025.06"; src = fetchFromGitHub { owner = "bsc-pm"; repo = "llvm"; rev = "refs/tags/github-release-${version}"; - hash = "sha256-pF0qa987nLkIJPUrXh1srzBkLPfb31skIegD0bl34Kg="; + hash = "sha256-ww9PpRmtz/M9IyLiZ8rAehx2UW4VpQt+svf4XfKBzKo="; }; }; From e7adef1ffa9cad6d84a2e8581b0b063650ca0b8a Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 21 Jul 2025 13:04:21 +0200 Subject: [PATCH 954/987] Fix intel-compiler by ignoring broken symlinks MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit In the future, we may want to look if those symlinks are needed. Reviewed-by: Aleix Boné --- pkgs/intel-oneapi/2023.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/intel-oneapi/2023.nix b/pkgs/intel-oneapi/2023.nix index 79576e7..8b7d3a6 100644 --- a/pkgs/intel-oneapi/2023.nix +++ b/pkgs/intel-oneapi/2023.nix @@ -314,6 +314,7 @@ let "intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-runtime-${version}" "intel-oneapi-compiler-dpcpp-cpp-classic-fortran-shared-runtime-${version}" ]; + dontCheckForBrokenSymlinks = true; # From https://aur.archlinux.org/packages/intel-oneapi-compiler: # - intel-oneapi-compiler-cpp-eclipse-cfg-2023.0.0-25370_all.deb # + intel-oneapi-compiler-dpcpp-cpp-2023.0.0-2023.0.0-25370_amd64.deb From 6ddfea0a3aec88205c7a64519783cd386013bd98 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aleix=20Bon=C3=A9?= Date: Mon, 21 Jul 2025 12:43:02 +0200 Subject: [PATCH 955/987] Use boost 1.86 for paraver Reviewed-by: Rodrigo Arias Mallo --- pkgs/paraver/default.nix | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pkgs/paraver/default.nix b/pkgs/paraver/default.nix index 9eaaca8..f0d126c 100644 --- a/pkgs/paraver/default.nix +++ b/pkgs/paraver/default.nix @@ -1,7 +1,7 @@ { stdenv , autoreconfHook -, boost +, boost186 , libxml2 , xml2 , wxGTK32 @@ -15,6 +15,7 @@ let wx = wxGTK32; + boost = boost186; in stdenv.mkDerivation rec { pname = "wxparaver"; From f0637b4569242fabaf4f4984b6f4f8a9df647eec Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 21 Jul 2025 13:14:01 +0200 Subject: [PATCH 956/987] Drop GPI-2 and TAGASPI MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit GPI-2 fails to build, which is needed for TAGASPI. Reviewed-by: Aleix Boné --- overlay.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/overlay.nix b/overlay.nix index d4ea269..52b0d17 100644 --- a/overlay.nix +++ b/overlay.nix @@ -18,7 +18,7 @@ let clangOmpss2NodesOmpv = callPackage ./pkgs/llvm-ompss2/default.nix { ompss2rt = final.nodes; openmp = final.openmpv; }; clangOmpss2Unwrapped = callPackage ./pkgs/llvm-ompss2/clang.nix { }; #extrae = callPackage ./pkgs/extrae/default.nix { }; # Broken and outdated - gpi-2 = callPackage ./pkgs/gpi-2/default.nix { }; + #gpi-2 = callPackage ./pkgs/gpi-2/default.nix { }; # Broken: https://jungle.bsc.es/git/rarias/bscpkgs/issues/7 intelPackages_2023 = callPackage ./pkgs/intel-oneapi/2023.nix { }; jemallocNanos6 = callPackage ./pkgs/nanos6/jemalloc.nix { }; lmbench = callPackage ./pkgs/lmbench/default.nix { }; @@ -44,7 +44,7 @@ let stdenvClangOmpss2Nanos6 = final.stdenv.override { cc = final.clangOmpss2Nanos6; allowedRequisites = null; }; stdenvClangOmpss2Nodes = final.stdenv.override { cc = final.clangOmpss2Nodes; allowedRequisites = null; }; stdenvClangOmpss2NodesOmpv = final.stdenv.override { cc = final.clangOmpss2NodesOmpv; allowedRequisites = null; }; - tagaspi = callPackage ./pkgs/tagaspi/default.nix { }; + #tagaspi = callPackage ./pkgs/tagaspi/default.nix { }; # Broken due gpi-2 tampi = callPackage ./pkgs/tampi/default.nix { }; wxparaver = callPackage ./pkgs/paraver/default.nix { }; }; From 52fe43bfe130f0859636d336bb3ba52afb643ea6 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 21 Jul 2025 16:23:53 +0200 Subject: [PATCH 957/987] Fix PATH in intel compiler wrapper MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit We need to add the gcc in the PATH, but adding it directly to $PATH doesn't work, as it will be restored to $path_backup before icc runs. So for now we simply inject it to path_backup, but ideally we should find a more robust solution. Reviewed-by: Aleix Boné --- pkgs/intel-oneapi/2023.nix | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pkgs/intel-oneapi/2023.nix b/pkgs/intel-oneapi/2023.nix index 8b7d3a6..97420b7 100644 --- a/pkgs/intel-oneapi/2023.nix +++ b/pkgs/intel-oneapi/2023.nix @@ -400,7 +400,9 @@ let echo "-L${cc}/lib" >> $out/nix-support/cc-ldflags # Need the gcc in the path - echo 'export "PATH=${mygcc}/bin:$PATH"' >> $out/nix-support/cc-wrapper-hook + # FIXME: We should find a better way to modify the PATH instead of using + # this ugly hack. See https://jungle.bsc.es/git/rarias/bscpkgs/issues/9 + echo 'path_backup="${mygcc}/bin:$path_backup"' >> $out/nix-support/cc-wrapper-hook # Disable hardening by default echo "" > $out/nix-support/add-hardening.sh From 26f52aa27d53ef893104c5757cf23a3747b5f635 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 21 Jul 2025 16:27:23 +0200 Subject: [PATCH 958/987] Use gcc 13 for intel compiler 2023 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Intel compiler for C++ (icpc) is not able to parse the location of C++ headers from the output of gcc 14, but works fine for gcc 13. Reviewed-by: Aleix Boné --- pkgs/intel-oneapi/2023.nix | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pkgs/intel-oneapi/2023.nix b/pkgs/intel-oneapi/2023.nix index 97420b7..1e65c6c 100644 --- a/pkgs/intel-oneapi/2023.nix +++ b/pkgs/intel-oneapi/2023.nix @@ -12,7 +12,7 @@ , autoPatchelfHook , symlinkJoin , libfabric -, gcc +, gcc13 , gcc7 , wrapCCWith , linuxHeaders @@ -30,6 +30,8 @@ let + gcc = gcc13; + v = { hpckit = "2023.1.0"; compiler = "2023.1.0"; From 885e04e4466cc2cfb4912e8568767f2900a41d0d Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 21 Jul 2025 17:01:06 +0200 Subject: [PATCH 959/987] Remove unused inputs from intel compiler 2023 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reviewed-by: Aleix Boné --- pkgs/intel-oneapi/2023.nix | 4 ---- 1 file changed, 4 deletions(-) diff --git a/pkgs/intel-oneapi/2023.nix b/pkgs/intel-oneapi/2023.nix index 1e65c6c..4410995 100644 --- a/pkgs/intel-oneapi/2023.nix +++ b/pkgs/intel-oneapi/2023.nix @@ -1,6 +1,5 @@ { stdenv , fetchurl -, ncurses , lib , dpkg , rsync @@ -10,12 +9,9 @@ , hwloc , zlib , autoPatchelfHook -, symlinkJoin , libfabric , gcc13 -, gcc7 , wrapCCWith -, linuxHeaders }: # The distribution of intel packages is a mess. We are doing the installation From 88d4d8e317115c1654079deedc0d84f8290911d9 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 21 Jul 2025 17:27:02 +0200 Subject: [PATCH 960/987] Drop tagaspi from bench6 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reviewed-by: Aleix Boné --- pkgs/bench6/default.nix | 4 ---- 1 file changed, 4 deletions(-) diff --git a/pkgs/bench6/default.nix b/pkgs/bench6/default.nix index a85ae78..0c7872c 100644 --- a/pkgs/bench6/default.nix +++ b/pkgs/bench6/default.nix @@ -10,8 +10,6 @@ , nosv , mpi , tampi -, tagaspi -, gpi-2 , openblas , ovni , gitBranch ? "master" @@ -40,8 +38,6 @@ stdenv.mkDerivation rec { nosv mpi tampi - tagaspi - gpi-2 openblas openblas.dev ovni From 974bb56dc38b408fda9ee296f2595306e68bf88d Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 21 Jul 2025 17:52:06 +0200 Subject: [PATCH 961/987] Fix lmbench build issues with GCC 14 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reviewed-by: Aleix Boné Tested-by: Rodrigo Arias Mallo --- pkgs/lmbench/default.nix | 8 ++-- pkgs/lmbench/fix-install.patch | 4 +- pkgs/lmbench/gcc-14.patch | 77 ++++++++++++++++++++++++++++++++++ 3 files changed, 82 insertions(+), 7 deletions(-) create mode 100644 pkgs/lmbench/gcc-14.patch diff --git a/pkgs/lmbench/default.nix b/pkgs/lmbench/default.nix index 9c48dd1..cfe2349 100644 --- a/pkgs/lmbench/default.nix +++ b/pkgs/lmbench/default.nix @@ -17,16 +17,12 @@ stdenv.mkDerivation rec { sha256 = "sha256-SzwplRBO3V0R3m3p15n71ivYBMGoLsajFK2TapYxdqk="; }; - postUnpack = '' - export sourceRoot="$sourceRoot/src" - ''; - postPatch = '' sed -i "s@/bin/rm@rm@g" $(find . -name Makefile) ''; buildInputs = [ libtirpc ]; - patches = [ ./fix-install.patch ]; + patches = [ ./fix-install.patch ./gcc-14.patch ]; hardeningDisable = [ "all" ]; @@ -34,7 +30,9 @@ stdenv.mkDerivation rec { preBuild = '' makeFlagsArray+=( + -C src BASE=$out + CFLAGS=-Wno-implicit-int CPPFLAGS=-I${libtirpc.dev}/include/tirpc LDFLAGS=-ltirpc ) diff --git a/pkgs/lmbench/fix-install.patch b/pkgs/lmbench/fix-install.patch index f539254..89543b8 100644 --- a/pkgs/lmbench/fix-install.patch +++ b/pkgs/lmbench/fix-install.patch @@ -1,5 +1,5 @@ ---- a/Makefile -+++ b/Makefile +--- a/src/Makefile ++++ b/src/Makefile @@ -144,6 +144,7 @@ install-target: if [ ! -d $(BASE)/include ]; then mkdir $(BASE)/include; fi if [ ! -d $(BASE)/lib ]; then mkdir $(BASE)/lib; fi diff --git a/pkgs/lmbench/gcc-14.patch b/pkgs/lmbench/gcc-14.patch new file mode 100644 index 0000000..0af0c42 --- /dev/null +++ b/pkgs/lmbench/gcc-14.patch @@ -0,0 +1,77 @@ +From a3c6e7d303cd8368e8d4e35be7cbc1997e801257 Mon Sep 17 00:00:00 2001 +From: Rodrigo Arias Mallo +Date: Mon, 21 Jul 2025 17:38:58 +0200 +Subject: [PATCH] Misc fixes to build with gcc 14 + +--- + src/bench.h | 2 ++ + src/lat_select.c | 2 +- + src/lib_debug.c | 1 + + src/lib_sched.c | 2 +- + src/lib_timing.c | 2 +- + 5 files changed, 6 insertions(+), 3 deletions(-) + +diff --git a/src/bench.h b/src/bench.h +index 8166408..4da9079 100644 +--- a/src/bench.h ++++ b/src/bench.h +@@ -320,4 +320,6 @@ extern int handle_scheduler(int childno, int benchproc, int nbenchprocs); + extern char *rpc_xact_1(); + extern char *client_rpc_xact_1(); + ++void lmbench_usage(int argc, char *argv[], char* usage); ++ + #endif /* _BENCH_H */ +diff --git a/src/lat_select.c b/src/lat_select.c +index 583b505..39df369 100644 +--- a/src/lat_select.c ++++ b/src/lat_select.c +@@ -164,7 +164,7 @@ doit(iter_t iterations, void * cookie) + state_t * state = (state_t *)cookie; + fd_set nosave; + static struct timeval tv; +- static count = 0; ++ static int count = 0; + + tv.tv_sec = 0; + tv.tv_usec = 0; +diff --git a/src/lib_debug.c b/src/lib_debug.c +index e8347dd..cf65312 100644 +--- a/src/lib_debug.c ++++ b/src/lib_debug.c +@@ -1,5 +1,6 @@ + #include "bench.h" + #include "lib_debug.h" ++#include + + /* + * return micro-seconds / iteration at the the fraction point. +diff --git a/src/lib_sched.c b/src/lib_sched.c +index aa83ae0..4f16bbf 100644 +--- a/src/lib_sched.c ++++ b/src/lib_sched.c +@@ -91,7 +91,7 @@ handle_scheduler(int childno, int benchproc, int nbenchprocs) + childno * (nbenchprocs + 1) + benchproc); + } else { + /* default action: do nothing */ +- return; ++ return 0; + } + + return sched_pin(cpu % sched_ncpus()); +diff --git a/src/lib_timing.c b/src/lib_timing.c +index af8cf68..7ec9652 100644 +--- a/src/lib_timing.c ++++ b/src/lib_timing.c +@@ -1623,7 +1623,7 @@ bread(void* buf, long nbytes) + void + touch(char *buf, int nbytes) + { +- static psize; ++ static int psize; + + if (!psize) { + psize = getpagesize(); +-- +2.49.0 + From 9a48ae45bbcbca0103fc4e3226db967d57905fd3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aleix=20Bon=C3=A9?= Date: Mon, 21 Jul 2025 11:43:01 +0200 Subject: [PATCH 962/987] Update paraver to 4.12.0 Adds a new patch to fix libxml2: the m4 AM_PATH_XML2 macro has been deprecated and is no longer included in the latest nixpkgs unstable. Upstream recommends using `PKG_CHECK_MODULES` instead. Reviewed-by: Rodrigo Arias Mallo --- pkgs/paraver/default.nix | 12 ++++++----- pkgs/paraver/dont-expand-colors.patch | 18 ++++++++--------- pkgs/paraver/fix-libxml2-deprecation.patch | 23 ++++++++++++++++++++++ pkgs/paraver/kernel.nix | 16 +++++++++------ 4 files changed, 49 insertions(+), 20 deletions(-) create mode 100644 pkgs/paraver/fix-libxml2-deprecation.patch diff --git a/pkgs/paraver/default.nix b/pkgs/paraver/default.nix index f0d126c..49cbfe0 100644 --- a/pkgs/paraver/default.nix +++ b/pkgs/paraver/default.nix @@ -1,5 +1,6 @@ { stdenv +, fetchFromGitHub , autoreconfHook , boost186 , libxml2 @@ -19,12 +20,13 @@ let in stdenv.mkDerivation rec { pname = "wxparaver"; - version = "4.11.2"; + version = "4.12.0"; - src = builtins.fetchGit { - url = "https://github.com/bsc-performance-tools/wxparaver.git"; - rev = "129e6b4a4f061e5a319049db8db1620f5de3bd70"; # v4.11.2 (missing tag) - ref = "master"; + src = fetchFromGitHub { + owner = "bsc-performance-tools"; + repo = "wxparaver"; + rev = "v${version}"; + sha256 = "sha256-YsO5gsuEFQdki3lQudEqgo5WXOt/fPdvNw5OxZQ86Zo="; }; hardeningDisable = [ "all" ]; diff --git a/pkgs/paraver/dont-expand-colors.patch b/pkgs/paraver/dont-expand-colors.patch index ff45d78..a5e449b 100644 --- a/pkgs/paraver/dont-expand-colors.patch +++ b/pkgs/paraver/dont-expand-colors.patch @@ -11,7 +11,7 @@ diff --git a/api/semanticcolor.cpp b/api/semanticcolor.cpp index 9f86960..22859eb 100644 --- a/api/semanticcolor.cpp +++ b/api/semanticcolor.cpp -@@ -232,8 +232,9 @@ rgb CodeColor::getColor( PRV_UINT32 pos ) const +@@ -295,8 +295,9 @@ rgb SemanticColor::getColor( PRV_UINT32 pos ) const { if( pos == 0 && ParaverConfig::getInstance()->getColorsTimelineUseZero() ) return ParaverConfig::getInstance()->getColorsTimelineColorZero(); @@ -22,26 +22,26 @@ index 9f86960..22859eb 100644 + return colors[ pos + 1 ]; } - void CodeColor::setColor( PRV_UINT32 whichPos, rgb whichColor ) -@@ -250,6 +251,12 @@ void CodeColor::setColor( PRV_UINT32 whichPos, rgb whichColor ) + void SemanticColor::setColor( PRV_UINT32 whichPos, rgb whichColor ) +@@ -314,6 +315,12 @@ void SemanticColor::setColor( PRV_UINT32 whichPos, rgb whichColor ) colors[ whichPos ] = whichColor; } -+void CodeColor::cutAfter( PRV_UINT32 pos ) ++void SemanticColor::cutAfter( PRV_UINT32 pos ) +{ + if ( pos < colors.size() ) + colors.erase( colors.begin() + pos, colors.end() ); +} + - void CodeColor::setCustomColor( TSemanticValue whichValue, rgb color ) + void SemanticColor::setCustomColor( TSemanticValue whichValue, rgb color ) { customPalette[ whichValue ] = color; diff --git a/api/semanticcolor.h b/api/semanticcolor.h index a079556..bddf3d8 100644 --- a/api/semanticcolor.h +++ b/api/semanticcolor.h -@@ -98,6 +98,7 @@ class CodeColor: public SemanticColor - +@@ -114,6 +114,7 @@ class SemanticColor + // Code Color methods PRV_UINT32 getNumColors() const; void setColor( PRV_UINT32 pos, rgb color ); + void cutAfter( PRV_UINT32 pos ); @@ -61,7 +61,7 @@ index b0d2050..ee2ab69 100644 for ( auto it : semanticColors ) { std::tie( tmpColor.red, tmpColor.green, tmpColor.blue ) = it.second; - myCodeColor.setColor( it.first, tmpColor ); + mySemanticColor.setColor( it.first, tmpColor ); + if (it.first > maxValue) + maxValue = it.first; } @@ -69,7 +69,7 @@ index b0d2050..ee2ab69 100644 + // Cut the palette after the highest defined value, so there are no + // extra expanded values + if ( !pcfParser.expandColors ) -+ myCodeColor.cutAfter(maxValue); ++ mySemanticColor.cutAfter(maxValue); + myEventLabels = EventLabels( pcfParser ); myStateLabels = StateLabels( pcfParser ); diff --git a/pkgs/paraver/fix-libxml2-deprecation.patch b/pkgs/paraver/fix-libxml2-deprecation.patch new file mode 100644 index 0000000..f7bb2aa --- /dev/null +++ b/pkgs/paraver/fix-libxml2-deprecation.patch @@ -0,0 +1,23 @@ +commit 60aa3ffa05f6b40db191a880e9e622d608744c1f +Author: Aleix Boné +Date: Sun Jul 21 12:11:30 2025 +0200 + + fix libxml2 deprecated macro + +diff --git a/configure.ac b/configure.ac +index 7fe1876..3ce1091 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -46,7 +46,10 @@ AC_PROG_CPP + AC_PROG_CXXCPP + AC_PROG_SED + +-AM_PATH_XML2 ++PKG_PROG_PKG_CONFIG ++PKG_CHECK_MODULES([XML], [libxml-2.0]) ++ ++AC_SUBST(XML_CPPFLAGS, $XML_CFLAGS) + + AX_BOOST_BASE(1.36) + AX_BOOST_SERIALIZATION + diff --git a/pkgs/paraver/kernel.nix b/pkgs/paraver/kernel.nix index eb3e60d..e940401 100644 --- a/pkgs/paraver/kernel.nix +++ b/pkgs/paraver/kernel.nix @@ -1,5 +1,6 @@ { stdenv +, fetchFromGitHub , autoreconfHook , boost , libxml2 @@ -16,17 +17,20 @@ let in stdenv.mkDerivation rec { pname = "paraver-kernel"; - version = "${src.shortRev}"; + version = "4.12.0"; - src = builtins.fetchGit { - url = "https://github.com/bsc-performance-tools/paraver-kernel.git"; - rev = "2e167da3cee78ca11e31b74faefb23f12bac2b8c"; # master (missing tag) - ref = "master"; + src = fetchFromGitHub { + owner = "bsc-performance-tools"; + repo = "paraver-kernel"; + rev = "v${version}"; + sha256 = "sha256-Xs7g8ITZhPt00v7o2WlTddbou8C8Rc9kBMFpl2WsCS4="; }; patches = [ # https://github.com/bsc-performance-tools/paraver-kernel/pull/11 - ./dont-expand-colors.patch + # TODO: add this back if it's still relevant + # ./dont-expand-colors.patch + ./fix-libxml2-deprecation.patch ]; hardeningDisable = [ "all" ]; From ae2ef1d2dfbc85e8d6a1bfa85cc9109ba3750e5d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aleix=20Bon=C3=A9?= Date: Mon, 21 Jul 2025 11:46:37 +0200 Subject: [PATCH 963/987] Add patch to paraver to prevent focus stealing See: https://github.com/bsc-performance-tools/wxparaver/issues/18 Reviewed-by: Rodrigo Arias Mallo --- pkgs/paraver/default.nix | 2 ++ .../do-not-steal-focus-on-redraw.patch | 26 +++++++++++++++++++ 2 files changed, 28 insertions(+) create mode 100644 pkgs/paraver/do-not-steal-focus-on-redraw.patch diff --git a/pkgs/paraver/default.nix b/pkgs/paraver/default.nix index 49cbfe0..9130f06 100644 --- a/pkgs/paraver/default.nix +++ b/pkgs/paraver/default.nix @@ -29,6 +29,8 @@ stdenv.mkDerivation rec { sha256 = "sha256-YsO5gsuEFQdki3lQudEqgo5WXOt/fPdvNw5OxZQ86Zo="; }; + patches = [ ./do-not-steal-focus-on-redraw.patch ]; + hardeningDisable = [ "all" ]; # Fix the PARAVER_HOME variable diff --git a/pkgs/paraver/do-not-steal-focus-on-redraw.patch b/pkgs/paraver/do-not-steal-focus-on-redraw.patch new file mode 100644 index 0000000..3c66967 --- /dev/null +++ b/pkgs/paraver/do-not-steal-focus-on-redraw.patch @@ -0,0 +1,26 @@ +From 2b185e1b5ce52808b3026334851dbcd5a640ed4d Mon Sep 17 00:00:00 2001 +From: aleixbonerib +Date: Mon, 10 Jun 2024 20:59:45 +0200 +Subject: [PATCH] fix: do not set focus on redraw + +Some wm can change the window size without focusing. Right now, when the +plot is resized it takes back focus. +--- + src/gtimeline.cpp | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/src/gtimeline.cpp b/src/gtimeline.cpp +index 23ebef2..a896066 100644 +--- a/src/gtimeline.cpp ++++ b/src/gtimeline.cpp +@@ -899,7 +899,6 @@ void gTimeline::redraw() + + drawZone->Refresh(); + +- SetFocus(); + } + + +-- +2.44.1 + From b29f03ba6e20981ccc2107df4a41253e827dd46c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aleix=20Bon=C3=A9?= Date: Mon, 21 Jul 2025 18:13:27 +0200 Subject: [PATCH 964/987] Fix boost >=1.87 in wxparaver Reviewed-by: Rodrigo Arias Mallo --- pkgs/paraver/default.nix | 11 +++-- pkgs/paraver/fix-boost-87.patch | 87 +++++++++++++++++++++++++++++++++ 2 files changed, 95 insertions(+), 3 deletions(-) create mode 100644 pkgs/paraver/fix-boost-87.patch diff --git a/pkgs/paraver/default.nix b/pkgs/paraver/default.nix index 9130f06..ba8a0c9 100644 --- a/pkgs/paraver/default.nix +++ b/pkgs/paraver/default.nix @@ -2,7 +2,7 @@ stdenv , fetchFromGitHub , autoreconfHook -, boost186 +, boost , libxml2 , xml2 , wxGTK32 @@ -16,7 +16,6 @@ let wx = wxGTK32; - boost = boost186; in stdenv.mkDerivation rec { pname = "wxparaver"; @@ -29,7 +28,13 @@ stdenv.mkDerivation rec { sha256 = "sha256-YsO5gsuEFQdki3lQudEqgo5WXOt/fPdvNw5OxZQ86Zo="; }; - patches = [ ./do-not-steal-focus-on-redraw.patch ]; + patches = [ + ./do-not-steal-focus-on-redraw.patch + + # Fix for boost >=1.87 (thanks to gamezelda) + # https://aur.archlinux.org/cgit/aur.git/commit/?h=wxparaver&id=b0dcd08c472536e0a1a3cc1dfbc4c77d9f5e0d47 + ./fix-boost-87.patch + ]; hardeningDisable = [ "all" ]; diff --git a/pkgs/paraver/fix-boost-87.patch b/pkgs/paraver/fix-boost-87.patch new file mode 100644 index 0000000..01f8b79 --- /dev/null +++ b/pkgs/paraver/fix-boost-87.patch @@ -0,0 +1,87 @@ +From 7ecd888e2ebb9e8c5582851d3c50bff61022708e Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Joan=20Bruguera=20Mic=C3=B3?= +Date: Sat, 29 Mar 2025 18:14:25 +0000 +Subject: [PATCH] tutorialsdownload: Fix Boost ASIO 1.87.0 removals + +--- + src/tutorialsdownload.cpp | 25 ++++++++++++------------- + 1 file changed, 12 insertions(+), 13 deletions(-) + +diff --git a/src/tutorialsdownload.cpp b/src/tutorialsdownload.cpp +index a1921fd..6ce9dc2 100644 +--- a/src/tutorialsdownload.cpp ++++ b/src/tutorialsdownload.cpp +@@ -121,13 +121,13 @@ void TutorialsProgress::updateInstall( int whichValue ) + class client + { + public: +- client( boost::asio::io_service& io_service, ++ client( boost::asio::io_context& io_context, + boost::asio::ssl::context& context, + const std::string& server, const std::string& path, + ofstream& storeFile, + TutorialsProgress *progress ) +- : resolver_( io_service ), +- socket_( io_service, context ), ++ : resolver_( io_context ), ++ socket_( io_context, context ), + store_( storeFile ), + progress_( progress ) + { +@@ -143,8 +143,7 @@ class client + + // Start an asynchronous resolve to translate the server and service names + // into a list of endpoints. +- tcp::resolver::query query( server, "https" ); +- resolver_.async_resolve( query, ++ resolver_.async_resolve( server, "https", + boost::bind( &client::handle_resolve, + this, + boost::asio::placeholders::error, +@@ -154,7 +153,7 @@ class client + private: + + void handle_resolve( const boost::system::error_code& err, +- tcp::resolver::iterator endpoint_iterator ) ++ const tcp::resolver::results_type& endpoints ) + { + if ( !err ) + { +@@ -162,7 +161,7 @@ class client + socket_.set_verify_callback( boost::bind( &client::verify_certificate, this, _1, _2 ) ); + + boost::asio::async_connect( socket_.lowest_layer(), +- endpoint_iterator, ++ endpoints, + boost::bind( &client::handle_connect, + this, + boost::asio::placeholders::error ) ); +@@ -536,9 +535,9 @@ bool TutorialsDownload::downloadTutorialsList() const + boost::asio::ssl::context ctx( boost::asio::ssl::context::sslv23 ); + ctx.set_default_verify_paths(); + +- boost::asio::io_service io_service; +- client c( io_service, ctx, server, path, storeFile, nullptr ); +- io_service.run(); ++ boost::asio::io_context io_context; ++ client c( io_context, ctx, server, path, storeFile, nullptr ); ++ io_context.run(); + + doneDownload = true; + } +@@ -580,9 +579,9 @@ bool TutorialsDownload::download( const TutorialData& whichTutorial, string& tut + boost::asio::ssl::context ctx( boost::asio::ssl::context::sslv23 ); + ctx.set_default_verify_paths(); + +- boost::asio::io_service io_service; +- client c( io_service, ctx, std::string( server.mb_str() ), std::string( path.mb_str() ), storeFile, &progress ); +- io_service.run(); ++ boost::asio::io_context io_context; ++ client c( io_context, ctx, std::string( server.mb_str() ), std::string( path.mb_str() ), storeFile, &progress ); ++ io_context.run(); + } + catch ( ParaverKernelException& e ) + { +-- +2.49.0 + From 1666c14a35e08fd2eddcc206d622494435595fdc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aleix=20Bon=C3=A9?= Date: Mon, 21 Jul 2025 18:33:25 +0200 Subject: [PATCH 965/987] Remove dependency on wx from paraver kernel Reviewed-by: Rodrigo Arias Mallo Tested-by: Rodrigo Arias Mallo --- pkgs/paraver/kernel.nix | 4 ---- 1 file changed, 4 deletions(-) diff --git a/pkgs/paraver/kernel.nix b/pkgs/paraver/kernel.nix index e940401..742610f 100644 --- a/pkgs/paraver/kernel.nix +++ b/pkgs/paraver/kernel.nix @@ -5,16 +5,12 @@ , boost , libxml2 , xml2 -, wxGTK32 , autoconf , automake , pkg-config , zlib }: -let - wx = wxGTK32; -in stdenv.mkDerivation rec { pname = "paraver-kernel"; version = "4.12.0"; From 2c8d7ed85551ba630699a48f752c4912328f7be4 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 29 Jul 2025 16:13:15 +0200 Subject: [PATCH 966/987] Build nOS-V with PAPI support To support the new instrumentation for HWC it would be useful to already build nOS-V with PAPI support enabled. The enablePapi switch allows it to be disabled with `nosv.override { enablePapi = false; }`. Reviewed-by: Aleix Roca Nonell Tested-by: Rodrigo Arias Mallo --- pkgs/nosv/default.nix | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pkgs/nosv/default.nix b/pkgs/nosv/default.nix index 889f5c3..0c02fc9 100644 --- a/pkgs/nosv/default.nix +++ b/pkgs/nosv/default.nix @@ -6,6 +6,8 @@ , pkg-config , numactl , hwloc +, papi +, enablePapi ? true , cacheline ? 64 # bits , ovni ? null , useGit ? false @@ -56,5 +58,5 @@ in numactl hwloc ovni - ]; + ] ++ lib.optionals enablePapi [ papi ]; } From 00dfe801f48a54898515e96062f4edd0e8b7568b Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Fri, 12 Sep 2025 13:37:17 +0200 Subject: [PATCH 967/987] Fix GPI-2 and enable TAGASPI MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The rdma-core driver.h include is no longer installed: https://github.com/linux-rdma/rdma-core/commit/56dd87acd29279c81adfcf95f9d4d14806a2b615 So ibv_read_sysfs_file() is not defined. As the symbols is still distributed, we simply add the missing prototype manually. Similarly, the gaspi_get_system_mem() function is not available from the gaspi public headers, so we define it in the max_mem.c test. Fixes: https://jungle.bsc.es/git/rarias/bscpkgs/issues/7 Reviewed-by: Aleix Boné Tested-by: Rodrigo Arias Mallo --- overlay.nix | 4 ++-- pkgs/gpi-2/default.nix | 2 ++ pkgs/gpi-2/max-mem.patch | 10 ++++++++++ pkgs/gpi-2/rdma-core.patch | 12 ++++++++++++ 4 files changed, 26 insertions(+), 2 deletions(-) create mode 100644 pkgs/gpi-2/max-mem.patch create mode 100644 pkgs/gpi-2/rdma-core.patch diff --git a/overlay.nix b/overlay.nix index 52b0d17..d4ea269 100644 --- a/overlay.nix +++ b/overlay.nix @@ -18,7 +18,7 @@ let clangOmpss2NodesOmpv = callPackage ./pkgs/llvm-ompss2/default.nix { ompss2rt = final.nodes; openmp = final.openmpv; }; clangOmpss2Unwrapped = callPackage ./pkgs/llvm-ompss2/clang.nix { }; #extrae = callPackage ./pkgs/extrae/default.nix { }; # Broken and outdated - #gpi-2 = callPackage ./pkgs/gpi-2/default.nix { }; # Broken: https://jungle.bsc.es/git/rarias/bscpkgs/issues/7 + gpi-2 = callPackage ./pkgs/gpi-2/default.nix { }; intelPackages_2023 = callPackage ./pkgs/intel-oneapi/2023.nix { }; jemallocNanos6 = callPackage ./pkgs/nanos6/jemalloc.nix { }; lmbench = callPackage ./pkgs/lmbench/default.nix { }; @@ -44,7 +44,7 @@ let stdenvClangOmpss2Nanos6 = final.stdenv.override { cc = final.clangOmpss2Nanos6; allowedRequisites = null; }; stdenvClangOmpss2Nodes = final.stdenv.override { cc = final.clangOmpss2Nodes; allowedRequisites = null; }; stdenvClangOmpss2NodesOmpv = final.stdenv.override { cc = final.clangOmpss2NodesOmpv; allowedRequisites = null; }; - #tagaspi = callPackage ./pkgs/tagaspi/default.nix { }; # Broken due gpi-2 + tagaspi = callPackage ./pkgs/tagaspi/default.nix { }; tampi = callPackage ./pkgs/tampi/default.nix { }; wxparaver = callPackage ./pkgs/paraver/default.nix { }; }; diff --git a/pkgs/gpi-2/default.nix b/pkgs/gpi-2/default.nix index a17b15c..007cf80 100644 --- a/pkgs/gpi-2/default.nix +++ b/pkgs/gpi-2/default.nix @@ -34,6 +34,8 @@ stdenv.mkDerivation rec { enableParallelBuilding = true; + patches = [ ./rdma-core.patch ./max-mem.patch ]; + preConfigure = '' patchShebangs autogen.sh ./autogen.sh diff --git a/pkgs/gpi-2/max-mem.patch b/pkgs/gpi-2/max-mem.patch new file mode 100644 index 0000000..0760ff2 --- /dev/null +++ b/pkgs/gpi-2/max-mem.patch @@ -0,0 +1,10 @@ +--- a/tests/tests/segments/max_mem.c 2025-09-12 13:30:53.449353591 +0200 ++++ b/tests/tests/segments/max_mem.c 2025-09-12 13:33:49.750352401 +0200 +@@ -1,5 +1,7 @@ + #include + ++gaspi_size_t gaspi_get_system_mem (void); ++ + /* Test allocates 45% of system memory and creates a segment that + large or if several ranks per node exist, divided among that + number */ diff --git a/pkgs/gpi-2/rdma-core.patch b/pkgs/gpi-2/rdma-core.patch new file mode 100644 index 0000000..4ef82e4 --- /dev/null +++ b/pkgs/gpi-2/rdma-core.patch @@ -0,0 +1,12 @@ +--- a/src/devices/ib/GPI2_IB.h 2025-09-12 13:25:31.564181121 +0200 ++++ b/src/devices/ib/GPI2_IB.h 2025-09-12 13:24:49.105422150 +0200 +@@ -26,6 +26,9 @@ along with GPI-2. If not, see Date: Fri, 29 Aug 2025 12:01:45 +0200 Subject: [PATCH 968/987] Provide nixpkgs.lib in bscpkgs outputs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently, we can use bscpkgs similarly to nixpkgs either through the flake outputs or with import bscpkgs: ```nix # currently supported: bscpkgs.legacyPackages.x86_64-linux.hello let pkgs = import bscpkgs { system = "x86_64-linux"; }; in pkgs.hello ``` The missing piece is nixpkgs.lib (not pkgs.lib, the system agnostic one). The workaround is to do bscpkgs.inputs.nixpkgs.lib instead. We can simplify this by forwarding the lib to our outputs. This enables us to use bscpkgs as a drop-in replacing the inputs to our flake from nixpkgs to bscpkgs. (inputs.nixpkgs.url = "<*BSC*pkgs url>"). Reviewed-by: Rodrigo Arias Mallo Tested-by: Aleix Boné --- flake.nix | 3 +++ 1 file changed, 3 insertions(+) diff --git a/flake.nix b/flake.nix index 73e3697..dc03735 100644 --- a/flake.nix +++ b/flake.nix @@ -13,5 +13,8 @@ bscOverlay = import ./overlay.nix; overlays.default = self.bscOverlay; legacyPackages.x86_64-linux = pkgs; + + # propagate nixpkgs lib, so we can do bscpkgs.lib + inherit (nixpkgs) lib; }; } From 2ffdd53d86157ea83a867b544e7bedf89797b72b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aleix=20Bon=C3=A9?= Date: Mon, 23 Jun 2025 11:14:57 +0200 Subject: [PATCH 969/987] Add hydraJobs with tests and packages Reviewed-by: Rodrigo Arias Mallo Tested-by: Rodrigo Arias Mallo --- flake.nix | 18 ++++++++++++------ overlay.nix | 6 ++++-- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/flake.nix b/flake.nix index dc03735..b03734a 100644 --- a/flake.nix +++ b/flake.nix @@ -2,17 +2,23 @@ inputs.nixpkgs.url = "nixpkgs"; outputs = { self, nixpkgs, ...}: - let - pkgs = import nixpkgs { + let # For now we only support x86 system = "x86_64-linux"; - overlays = [ self.overlays.default ]; - }; - in + pkgs = import nixpkgs { + inherit system; + overlays = [ self.overlays.default ]; + }; + in { bscOverlay = import ./overlay.nix; overlays.default = self.bscOverlay; - legacyPackages.x86_64-linux = pkgs; + # full nixpkgs with our overlay applied + legacyPackages.${system} = pkgs; + + hydraJobs = { + inherit (self.legacyPackages.${system}.bsc-ci) test pkgs; + }; # propagate nixpkgs lib, so we can do bscpkgs.lib inherit (nixpkgs) lib; diff --git a/overlay.nix b/overlay.nix index d4ea269..e342da7 100644 --- a/overlay.nix +++ b/overlay.nix @@ -88,7 +88,9 @@ in bscPkgs // { }; }; - pkgs = final.runCommand "ci-pkgs" { } + pkgs = filterAttrs (_: isDerivation) bscPkgs; + + pkgsList = final.runCommand "ci-pkgs" { } "printf '%s\n' ${toString (collect isDerivation bscPkgs)} > $out"; tests = final.runCommand "ci-tests" { } @@ -96,7 +98,7 @@ in bscPkgs // { all = final.runCommand "ci-all" { } '' - deps="${toString [ final.bsc-ci.pkgs final.bsc-ci.tests ]}" + deps="${toString [ final.bsc-ci.pkgsList final.bsc-ci.tests ]}" cat $deps printf '%s\n' $deps > $out ''; From 5df49dcfab960782aa4eb21d5abd7825f5b3a8c9 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 1 Oct 2025 13:12:00 +0200 Subject: [PATCH 970/987] Add gitea CI configuration MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Builds the .#bsc-ci.all target on each PR. Causes all packages to be built in hut, populating the nix cache. Reviewed-by: Aleix Boné Tested-by: Rodrigo Arias Mallo --- .gitea/workflows/ci.yaml | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 .gitea/workflows/ci.yaml diff --git a/.gitea/workflows/ci.yaml b/.gitea/workflows/ci.yaml new file mode 100644 index 0000000..7393352 --- /dev/null +++ b/.gitea/workflows/ci.yaml @@ -0,0 +1,15 @@ +name: CI +on: + push: + branches: + - master + pull_request: + branches: + - master + +jobs: + build:all: + runs-on: native + steps: + - uses: https://gitea.com/ScMi1/checkout@v1.4 + - run: nix build -L --no-link --print-out-paths .#bsc-ci.all From 9eb5c486ba30fe093339b3adf925634216bf6b4e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aleix=20Bon=C3=A9?= Date: Wed, 23 Jul 2025 10:51:29 +0200 Subject: [PATCH 971/987] Fix strictDeps bigotes Reviewed-by: Rodrigo Arias Mallo --- pkgs/bigotes/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/bigotes/default.nix b/pkgs/bigotes/default.nix index 85bbfcc..3c0bf08 100644 --- a/pkgs/bigotes/default.nix +++ b/pkgs/bigotes/default.nix @@ -4,7 +4,7 @@ , cmake }: -stdenv.mkDerivation rec { +stdenv.mkDerivation { pname = "bigotes"; version = "9dce13"; src = fetchFromGitHub { @@ -13,5 +13,5 @@ stdenv.mkDerivation rec { rev = "9dce13446a8da30bea552d569d260d54e0188518"; sha256 = "sha256-ktxM3pXiL8YXSK+/IKWYadijhYXqGoLY6adLk36iigE="; }; - buildInputs = [ cmake ]; + nativeBuildInputs = [ cmake ]; } From 51eecde59eacf605c587eab38f0247ed74709aa0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aleix=20Bon=C3=A9?= Date: Wed, 23 Jul 2025 10:55:22 +0200 Subject: [PATCH 972/987] Fix strictDeps bench6 Reviewed-by: Rodrigo Arias Mallo --- pkgs/bench6/default.nix | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/pkgs/bench6/default.nix b/pkgs/bench6/default.nix index 0c7872c..35eb415 100644 --- a/pkgs/bench6/default.nix +++ b/pkgs/bench6/default.nix @@ -27,10 +27,13 @@ stdenv.mkDerivation rec { rev = gitCommit; }; - buildInputs = [ - bigotes + nativeBuildInputs = [ cmake clangOmpss2 + ]; + + buildInputs = [ + bigotes openmp openmpv nanos6 From 4ba823e5b7ba18d8ae9ace20051ef6f119d6721c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aleix=20Bon=C3=A9?= Date: Wed, 23 Jul 2025 10:55:35 +0200 Subject: [PATCH 973/987] Fix strictDeps intel 2023 Reviewed-by: Rodrigo Arias Mallo --- pkgs/intel-oneapi/2023.nix | 33 ++++++++++++++++++++++----------- 1 file changed, 22 insertions(+), 11 deletions(-) diff --git a/pkgs/intel-oneapi/2023.nix b/pkgs/intel-oneapi/2023.nix index 4410995..2193e0d 100644 --- a/pkgs/intel-oneapi/2023.nix +++ b/pkgs/intel-oneapi/2023.nix @@ -78,7 +78,7 @@ let uncompressDebs = debs: name: stdenv.mkDerivation { name = name; srcs = debs; - buildInputs = [ dpkg ]; + nativeBuildInputs = [ dpkg ]; phases = [ "installPhase" ]; installPhase = '' mkdir -p $out @@ -108,14 +108,17 @@ let "intel-oneapi-mpi-${version}" ]; - buildInputs = [ + nativeBuildInputs = [ + autoPatchelfHook rsync + ]; + + buildInputs = [ libfabric zlib stdenv.cc.cc.lib ]; - nativeBuildInputs = [ autoPatchelfHook ]; phases = [ "installPhase" "fixupPhase" ]; dontStrip = true; installPhase = '' @@ -154,7 +157,6 @@ let buildInputs = [ intel-mpi - rsync libffi_3_3 libelf libxml2 @@ -162,7 +164,10 @@ let stdenv.cc.cc.lib ]; - nativeBuildInputs = [ autoPatchelfHook ]; + nativeBuildInputs = [ + autoPatchelfHook + rsync + ]; phases = [ "installPhase" "fixupPhase" ]; dontStrip = true; @@ -192,7 +197,6 @@ let buildInputs = [ intel-mpi intel-tbb - rsync libffi_3_3 libelf libxml2 @@ -201,7 +205,10 @@ let stdenv.cc.cc.lib ]; - nativeBuildInputs = [ autoPatchelfHook ]; + nativeBuildInputs = [ + autoPatchelfHook + rsync + ]; phases = [ "installPhase" "fixupPhase" ]; dontStrip = true; @@ -254,7 +261,6 @@ let buildInputs = [ intel-mpi intel-compiler-shared - rsync libffi_3_3 libelf libxml2 @@ -262,7 +268,10 @@ let stdenv.cc.cc.lib ]; - nativeBuildInputs = [ autoPatchelfHook ]; + nativeBuildInputs = [ + autoPatchelfHook + rsync + ]; phases = [ "installPhase" "fixupPhase" ]; @@ -337,7 +346,6 @@ let buildInputs = [ intel-compiler-shared - rsync libffi_3_3 libelf libxml2 @@ -345,7 +353,10 @@ let stdenv.cc.cc.lib ]; - nativeBuildInputs = [ autoPatchelfHook ]; + nativeBuildInputs = [ + autoPatchelfHook + rsync + ]; autoPatchelfIgnoreMissingDeps = [ "libtbb.so.12" "libtbbmalloc.so.2" "libze_loader.so.1" ]; phases = [ "installPhase" "fixupPhase" ]; From 7affb8ef4b064d044aa17d3eba5d3ea17300ae2c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aleix=20Bon=C3=A9?= Date: Wed, 23 Jul 2025 10:57:32 +0200 Subject: [PATCH 974/987] Fix strictDeps ompss2 Reviewed-by: Rodrigo Arias Mallo --- pkgs/llvm-ompss2/clang.nix | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/pkgs/llvm-ompss2/clang.nix b/pkgs/llvm-ompss2/clang.nix index ca2fb43..4ecd1e6 100644 --- a/pkgs/llvm-ompss2/clang.nix +++ b/pkgs/llvm-ompss2/clang.nix @@ -57,18 +57,20 @@ in stdenv.mkDerivation rec { isClangWithOmpss = true; - nativeBuildInputs = [ zlib ]; - - buildInputs = [ - which + nativeBuildInputs = [ bash + cmake + elfutils + llvmPackages_latest.lld + pkg-config python3 perl - cmake - llvmPackages_latest.lld - elfutils + which + zlib + ]; + + buildInputs = [ libffi - pkg-config zlib gcc.cc.lib # Required for libstdc++.so.6 ]; From 76ddd85afeac894937824fe44f47d35315ec9e45 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aleix=20Bon=C3=A9?= Date: Wed, 23 Jul 2025 11:26:25 +0200 Subject: [PATCH 975/987] Fix strictDeps paraver Reviewed-by: Rodrigo Arias Mallo --- pkgs/paraver/default.nix | 6 +++--- pkgs/paraver/kernel.nix | 11 +++++++---- pkgs/paraver/release.nix | 7 +++++-- 3 files changed, 15 insertions(+), 9 deletions(-) diff --git a/pkgs/paraver/default.nix b/pkgs/paraver/default.nix index ba8a0c9..32e9796 100644 --- a/pkgs/paraver/default.nix +++ b/pkgs/paraver/default.nix @@ -60,17 +60,17 @@ stdenv.mkDerivation rec { ]; nativeBuildInputs = [ + autoconf + automake + autoreconfHook wrapGAppsHook ]; buildInputs = [ - autoreconfHook boost libxml2.dev xml2 wx - autoconf - automake paraverKernel openssl.dev ]; diff --git a/pkgs/paraver/kernel.nix b/pkgs/paraver/kernel.nix index 742610f..588aa3d 100644 --- a/pkgs/paraver/kernel.nix +++ b/pkgs/paraver/kernel.nix @@ -44,14 +44,17 @@ stdenv.mkDerivation rec { "--enable-openmp" ]; - buildInputs = [ + nativeBuildInputs = [ autoreconfHook - boost - libxml2.dev - xml2 autoconf automake pkg-config + ]; + + buildInputs = [ + boost + libxml2.dev + xml2 zlib ]; } diff --git a/pkgs/paraver/release.nix b/pkgs/paraver/release.nix index 7919842..9282ebb 100644 --- a/pkgs/paraver/release.nix +++ b/pkgs/paraver/release.nix @@ -61,13 +61,16 @@ stdenv.mkDerivation rec { "--with-wx-config=${wx}/bin/wx-config" ]; + nativeBuildInputs = [ + autoconf + automake + ]; + buildInputs = [ boost xml2 libxml2.dev wx - autoconf - automake openssl.dev ]; From 492f73b600199a8be8fba58ee01da5a5f7578c5c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aleix=20Bon=C3=A9?= Date: Wed, 23 Jul 2025 11:30:45 +0200 Subject: [PATCH 976/987] Fix strictDeps nanos6 Reviewed-by: Rodrigo Arias Mallo --- pkgs/nanos6/default.nix | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/pkgs/nanos6/default.nix b/pkgs/nanos6/default.nix index 07066fb..64ee288 100644 --- a/pkgs/nanos6/default.nix +++ b/pkgs/nanos6/default.nix @@ -88,11 +88,19 @@ in dontStrip = enableDebug; separateDebugInfo = true; - buildInputs = [ + nativeBuildInputs = [ autoconf automake libtool pkg-config + + # TODO: papi_version is needed for configure: + # ./configure: line 27378: papi_version: command not found + # This probably breaks cross-compilation + papi + ]; + + buildInputs = [ boost numactl hwloc @@ -104,7 +112,7 @@ in postInstall = '' mkdir -p $out/nix-support echo "export NANOS6_HOME=$out" >> $out/nix-support/setup-hook - ''; + ''; meta = with lib; { homepage = "https://github.com/bsc-pm/nanos6"; From 256b24b97be239f6ef73cc923facb5f9b6f74fa8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aleix=20Bon=C3=A9?= Date: Wed, 23 Jul 2025 11:31:21 +0200 Subject: [PATCH 977/987] Fix strictDeps sonar Reviewed-by: Rodrigo Arias Mallo --- pkgs/sonar/default.nix | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/pkgs/sonar/default.nix b/pkgs/sonar/default.nix index 2610790..4f5be77 100644 --- a/pkgs/sonar/default.nix +++ b/pkgs/sonar/default.nix @@ -18,8 +18,12 @@ stdenv.mkDerivation rec { hardeningDisable = [ "all" ]; dontStrip = true; configureFlags = [ "--with-ovni=${ovni}" ]; - buildInputs = [ + + nativeBuildInputs = [ autoreconfHook + ]; + + buildInputs = [ ovni mpi ]; From afeb415c9876cba41192f9172303d8d5dc11c669 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aleix=20Bon=C3=A9?= Date: Wed, 23 Jul 2025 11:32:10 +0200 Subject: [PATCH 978/987] Fix strictDeps tampi Reviewed-by: Rodrigo Arias Mallo --- pkgs/tampi/default.nix | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/pkgs/tampi/default.nix b/pkgs/tampi/default.nix index 50de822..83d2836 100644 --- a/pkgs/tampi/default.nix +++ b/pkgs/tampi/default.nix @@ -41,20 +41,24 @@ let }; }; source = if (useGit) then git else release; -in stdenv.mkDerivation rec { +in stdenv.mkDerivation { pname = "tampi"; inherit (source) src version; enableParallelBuilding = true; separateDebugInfo = true; - buildInputs = [ - autoreconfHook - automake + + nativeBuildInputs = [ autoconf - libtool + automake + autoreconfHook + gcc gnumake + libtool + ]; + + buildInputs = [ boost mpi - gcc ] ++ optional (enableOvni) ovni; configureFlags = optional (enableOvni) "--with-ovni=${ovni}"; dontDisableStatic = true; From ed820e79f8fab569a2100aee1ee42a1ab5811e93 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aleix=20Bon=C3=A9?= Date: Wed, 23 Jul 2025 11:33:00 +0200 Subject: [PATCH 979/987] Fix strictDeps mercurium Reviewed-by: Rodrigo Arias Mallo --- pkgs/mcxx/default.nix | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/pkgs/mcxx/default.nix b/pkgs/mcxx/default.nix index 3c950ee..b1da0f5 100644 --- a/pkgs/mcxx/default.nix +++ b/pkgs/mcxx/default.nix @@ -32,19 +32,22 @@ stdenv.mkDerivation rec { enableParallelBuilding = true; - buildInputs = [ + nativeBuildInputs = [ autoreconfHook - nanos6 - gperf + bison + flex python3 gfortran pkg-config - sqlite.dev - bison - flex + gperf gcc ]; + buildInputs = [ + nanos6 + sqlite.dev + ]; + patches = [ ./intel.patch ]; preConfigure = '' From 239e84c40c4f7dc6b0025aa7a2f23070e9551eda Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aleix=20Bon=C3=A9?= Date: Wed, 23 Jul 2025 11:34:47 +0200 Subject: [PATCH 980/987] Fix strictDeps osu Reviewed-by: Rodrigo Arias Mallo --- pkgs/osu/default.nix | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/pkgs/osu/default.nix b/pkgs/osu/default.nix index e719b03..a1aa645 100644 --- a/pkgs/osu/default.nix +++ b/pkgs/osu/default.nix @@ -24,9 +24,10 @@ stdenv.mkDerivation rec { doCheck = true; enableParallelBuilding = true; + nativeBuildInputs = [ mpiAll ]; buildInputs = [ mpiAll ]; hardeningDisable = [ "all" ]; - configureFlags = [ + configureFlags = [ "CC=mpicc" "CXX=mpicxx" ]; @@ -40,7 +41,7 @@ stdenv.mkDerivation rec { meta = { description = "OSU Micro-Benchmarks"; - homepage = http://mvapich.cse.ohio-state.edu/benchmarks/; + homepage = "http://mvapich.cse.ohio-state.edu/benchmarks/"; maintainers = [ ]; platforms = lib.platforms.all; }; From f338ef47d5a9076b787c5cc4fb5cbb20703be47c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aleix=20Bon=C3=A9?= Date: Wed, 23 Jul 2025 11:36:20 +0200 Subject: [PATCH 981/987] Fix strictDeps ovni Reviewed-by: Rodrigo Arias Mallo --- pkgs/ovni/default.nix | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/pkgs/ovni/default.nix b/pkgs/ovni/default.nix index 9521fa6..247f3f6 100644 --- a/pkgs/ovni/default.nix +++ b/pkgs/ovni/default.nix @@ -13,8 +13,6 @@ , useMpi ? (stdenv.buildPlatform.canExecute stdenv.hostPlatform) }: -with lib; - let release = rec { version = "1.12.0"; @@ -45,7 +43,7 @@ in postPatch = '' patchShebangs --build test/ ''; - nativeBuildInputs = [ cmake ]; + nativeBuildInputs = [ cmake ] ++ lib.optionals (useMpi) [ mpi ]; buildInputs = lib.optionals (useMpi) [ mpi ]; cmakeBuildType = if (enableDebug) then "Debug" else "Release"; cmakeFlags = [ From 6c1d1f3b2b716e674e9941e54b1be9c2116f7f78 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aleix=20Bon=C3=A9?= Date: Tue, 29 Jul 2025 11:20:42 +0200 Subject: [PATCH 982/987] Remove gcc from tampi *buildInputs Reviewed-by: Rodrigo Arias Mallo --- pkgs/tampi/default.nix | 2 -- 1 file changed, 2 deletions(-) diff --git a/pkgs/tampi/default.nix b/pkgs/tampi/default.nix index 83d2836..8986ce9 100644 --- a/pkgs/tampi/default.nix +++ b/pkgs/tampi/default.nix @@ -8,7 +8,6 @@ , gnumake , boost , mpi -, gcc , autoreconfHook , enableOvni ? true , ovni ? null @@ -51,7 +50,6 @@ in stdenv.mkDerivation { autoconf automake autoreconfHook - gcc gnumake libtool ]; From a737d725ed3f227af91697abdf63b9865eb525e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aleix=20Bon=C3=A9?= Date: Tue, 1 Jul 2025 15:17:26 +0200 Subject: [PATCH 983/987] Put helper attrs of ompss2 drv to passthru Reviewed-by: Rodrigo Arias Mallo --- pkgs/llvm-ompss2/clang.nix | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/pkgs/llvm-ompss2/clang.nix b/pkgs/llvm-ompss2/clang.nix index 4ecd1e6..28c5f76 100644 --- a/pkgs/llvm-ompss2/clang.nix +++ b/pkgs/llvm-ompss2/clang.nix @@ -43,19 +43,21 @@ let source = if (useGit) then git else release; -in stdenv.mkDerivation rec { +in stdenv.mkDerivation { pname = "clang-ompss2"; inherit (source) src version; enableParallelBuilding = true; - isClang = true; passthru = { CC = "clang"; CXX = "clang++"; - }; - isClangWithOmpss = true; + isClang = true; + isClangWithOmpss = true; + + inherit gcc zlib; + }; nativeBuildInputs = [ bash From 69b09b6dda1107b2c2d1416df49c59b0720abc2e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aleix=20Bon=C3=A9?= Date: Mon, 29 Sep 2025 14:30:14 +0200 Subject: [PATCH 984/987] Add riscv64 cross compilation to bsc-ci and hydra Reviewed-by: Rodrigo Arias Mallo --- flake.nix | 2 +- overlay.nix | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/flake.nix b/flake.nix index b03734a..86cf8b8 100644 --- a/flake.nix +++ b/flake.nix @@ -17,7 +17,7 @@ legacyPackages.${system} = pkgs; hydraJobs = { - inherit (self.legacyPackages.${system}.bsc-ci) test pkgs; + inherit (self.legacyPackages.${system}.bsc-ci) test pkgs cross; }; # propagate nixpkgs lib, so we can do bscpkgs.lib diff --git a/overlay.nix b/overlay.nix index e342da7..817fd51 100644 --- a/overlay.nix +++ b/overlay.nix @@ -96,6 +96,10 @@ in bscPkgs // { tests = final.runCommand "ci-tests" { } "printf '%s\n' ${toString (collect isDerivation final.bsc-ci.test)} > $out"; + cross = prev.lib.genAttrs [ "riscv64" ] (target: + final.pkgsCross.${target}.bsc-ci.pkgs + ); + all = final.runCommand "ci-all" { } '' deps="${toString [ final.bsc-ci.pkgsList final.bsc-ci.tests ]}" From 2f2d6cbea8b2574c956e91bb76aaf4b4702923fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aleix=20Bon=C3=A9?= Date: Wed, 1 Oct 2025 10:59:14 +0200 Subject: [PATCH 985/987] Rework bsc-ci Reviewed-by: Rodrigo Arias Mallo --- overlay.nix | 51 ++++++++++++++++++++++++++++++--------------------- 1 file changed, 30 insertions(+), 21 deletions(-) diff --git a/overlay.nix b/overlay.nix index 817fd51..3d1634d 100644 --- a/overlay.nix +++ b/overlay.nix @@ -6,9 +6,6 @@ with final.lib; let callPackage = final.callPackage; - mkDeps = name: pkgs: final.runCommand name { } - "printf '%s\n' ${toString (collect (x: x ? outPath) pkgs)} > $out"; - bscPkgs = { bench6 = callPackage ./pkgs/bench6/default.nix { }; bigotes = callPackage ./pkgs/bigotes/default.nix { }; @@ -49,6 +46,32 @@ let wxparaver = callPackage ./pkgs/paraver/default.nix { }; }; + pkgs = filterAttrs (_: isDerivation) bscPkgs; + + crossTargets = [ "riscv64" ]; + cross = prev.lib.genAttrs crossTargets (target: + final.pkgsCross.${target}.bsc-ci.pkgs + ); + + buildList = name: paths: + final.runCommandLocal name { } '' + printf '%s\n' ${toString paths} | tee $out + ''; + + buildList' = name: paths: + final.runCommandLocal name { } '' + deps="${toString paths}" + cat $deps + printf '%s\n' $deps >$out + ''; + + crossList = builtins.mapAttrs (t: v: buildList t (builtins.attrValues v)) cross; + + pkgsList = buildList "ci-pkgs" (builtins.attrValues pkgs); + tests = buildList "ci-tests" (collect isDerivation final.bsc-ci.test); + + all = buildList' "ci-all" [ pkgsList tests ]; + in bscPkgs // { # Prevent accidental usage of bsc attribute bsc = throw "the bsc attribute is deprecated, packages are now in the root"; @@ -88,23 +111,9 @@ in bscPkgs // { }; }; - pkgs = filterAttrs (_: isDerivation) bscPkgs; - - pkgsList = final.runCommand "ci-pkgs" { } - "printf '%s\n' ${toString (collect isDerivation bscPkgs)} > $out"; - - tests = final.runCommand "ci-tests" { } - "printf '%s\n' ${toString (collect isDerivation final.bsc-ci.test)} > $out"; - - cross = prev.lib.genAttrs [ "riscv64" ] (target: - final.pkgsCross.${target}.bsc-ci.pkgs - ); - - all = final.runCommand "ci-all" { } - '' - deps="${toString [ final.bsc-ci.pkgsList final.bsc-ci.tests ]}" - cat $deps - printf '%s\n' $deps > $out - ''; + inherit tests; + inherit pkgs pkgsList; + inherit cross crossList; + inherit all; }; } From 34f4b6aa3729201d5be62043875e1356f958e5e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aleix=20Bon=C3=A9?= Date: Wed, 1 Oct 2025 14:57:44 +0200 Subject: [PATCH 986/987] Move bsc-ci test into let Reviewed-by: Rodrigo Arias Mallo --- overlay.nix | 70 ++++++++++++++++++++++++++--------------------------- 1 file changed, 35 insertions(+), 35 deletions(-) diff --git a/overlay.nix b/overlay.nix index 3d1634d..d02e00a 100644 --- a/overlay.nix +++ b/overlay.nix @@ -46,6 +46,39 @@ let wxparaver = callPackage ./pkgs/paraver/default.nix { }; }; + test = rec { + #hwloc = callPackage ./test/bugs/hwloc.nix { }; # Broken, no /sys + #sigsegv = callPackage ./test/reproducers/sigsegv.nix { }; + hello-c = callPackage ./test/compilers/hello-c.nix { }; + hello-cpp = callPackage ./test/compilers/hello-cpp.nix { }; + lto = callPackage ./test/compilers/lto.nix { }; + asan = callPackage ./test/compilers/asan.nix { }; + intel2023-icx-c = hello-c.override { stdenv = final.intelPackages_2023.stdenv; }; + intel2023-icc-c = hello-c.override { stdenv = final.intelPackages_2023.stdenv-icc; }; + intel2023-icx-cpp = hello-cpp.override { stdenv = final.intelPackages_2023.stdenv; }; + intel2023-icc-cpp = hello-cpp.override { stdenv = final.intelPackages_2023.stdenv-icc; }; + intel2023-ifort = callPackage ./test/compilers/hello-f.nix { + stdenv = final.intelPackages_2023.stdenv-ifort; + }; + clangOmpss2-lto = lto.override { stdenv = final.stdenvClangOmpss2Nanos6; }; + clangOmpss2-asan = asan.override { stdenv = final.stdenvClangOmpss2Nanos6; }; + clangOmpss2-task = callPackage ./test/compilers/ompss2.nix { + stdenv = final.stdenvClangOmpss2Nanos6; + }; + clangNodes-task = callPackage ./test/compilers/ompss2.nix { + stdenv = final.stdenvClangOmpss2Nodes; + }; + clangNosvOpenmp-task = callPackage ./test/compilers/clang-openmp.nix { + stdenv = final.stdenvClangOmpss2Nodes; + }; + clangNosvOmpv-nosv = callPackage ./test/compilers/clang-openmp-nosv.nix { + stdenv = final.stdenvClangOmpss2NodesOmpv; + }; + clangNosvOmpv-ld = callPackage ./test/compilers/clang-openmp-ld.nix { + stdenv = final.stdenvClangOmpss2NodesOmpv; + }; + }; + pkgs = filterAttrs (_: isDerivation) bscPkgs; crossTargets = [ "riscv64" ]; @@ -68,7 +101,7 @@ let crossList = builtins.mapAttrs (t: v: buildList t (builtins.attrValues v)) cross; pkgsList = buildList "ci-pkgs" (builtins.attrValues pkgs); - tests = buildList "ci-tests" (collect isDerivation final.bsc-ci.test); + tests = buildList "ci-tests" (collect isDerivation test); all = buildList' "ci-all" [ pkgsList tests ]; @@ -78,41 +111,8 @@ in bscPkgs // { # Internal for our CI tests bsc-ci = { - test = rec { - #hwloc = callPackage ./test/bugs/hwloc.nix { }; # Broken, no /sys - #sigsegv = callPackage ./test/reproducers/sigsegv.nix { }; - hello-c = callPackage ./test/compilers/hello-c.nix { }; - hello-cpp = callPackage ./test/compilers/hello-cpp.nix { }; - lto = callPackage ./test/compilers/lto.nix { }; - asan = callPackage ./test/compilers/asan.nix { }; - intel2023-icx-c = hello-c.override { stdenv = final.intelPackages_2023.stdenv; }; - intel2023-icc-c = hello-c.override { stdenv = final.intelPackages_2023.stdenv-icc; }; - intel2023-icx-cpp = hello-cpp.override { stdenv = final.intelPackages_2023.stdenv; }; - intel2023-icc-cpp = hello-cpp.override { stdenv = final.intelPackages_2023.stdenv-icc; }; - intel2023-ifort = callPackage ./test/compilers/hello-f.nix { - stdenv = final.intelPackages_2023.stdenv-ifort; - }; - clangOmpss2-lto = lto.override { stdenv = final.stdenvClangOmpss2Nanos6; }; - clangOmpss2-asan = asan.override { stdenv = final.stdenvClangOmpss2Nanos6; }; - clangOmpss2-task = callPackage ./test/compilers/ompss2.nix { - stdenv = final.stdenvClangOmpss2Nanos6; - }; - clangNodes-task = callPackage ./test/compilers/ompss2.nix { - stdenv = final.stdenvClangOmpss2Nodes; - }; - clangNosvOpenmp-task = callPackage ./test/compilers/clang-openmp.nix { - stdenv = final.stdenvClangOmpss2Nodes; - }; - clangNosvOmpv-nosv = callPackage ./test/compilers/clang-openmp-nosv.nix { - stdenv = final.stdenvClangOmpss2NodesOmpv; - }; - clangNosvOmpv-ld = callPackage ./test/compilers/clang-openmp-ld.nix { - stdenv = final.stdenvClangOmpss2NodesOmpv; - }; - }; - - inherit tests; inherit pkgs pkgsList; + inherit test tests; inherit cross crossList; inherit all; }; From 92ee4a09d7cda11957c2db3d3ac049715f02e9b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aleix=20Bon=C3=A9?= Date: Wed, 1 Oct 2025 15:24:12 +0200 Subject: [PATCH 987/987] Rename test to tests and tests to testList Reviewed-by: Rodrigo Arias Mallo Tested-by: Rodrigo Arias Mallo --- flake.nix | 2 +- overlay.nix | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/flake.nix b/flake.nix index 86cf8b8..0cdb289 100644 --- a/flake.nix +++ b/flake.nix @@ -17,7 +17,7 @@ legacyPackages.${system} = pkgs; hydraJobs = { - inherit (self.legacyPackages.${system}.bsc-ci) test pkgs cross; + inherit (self.legacyPackages.${system}.bsc-ci) tests pkgs cross; }; # propagate nixpkgs lib, so we can do bscpkgs.lib diff --git a/overlay.nix b/overlay.nix index d02e00a..4831c55 100644 --- a/overlay.nix +++ b/overlay.nix @@ -46,7 +46,7 @@ let wxparaver = callPackage ./pkgs/paraver/default.nix { }; }; - test = rec { + tests = rec { #hwloc = callPackage ./test/bugs/hwloc.nix { }; # Broken, no /sys #sigsegv = callPackage ./test/reproducers/sigsegv.nix { }; hello-c = callPackage ./test/compilers/hello-c.nix { }; @@ -101,9 +101,9 @@ let crossList = builtins.mapAttrs (t: v: buildList t (builtins.attrValues v)) cross; pkgsList = buildList "ci-pkgs" (builtins.attrValues pkgs); - tests = buildList "ci-tests" (collect isDerivation test); + testList = buildList "ci-tests" (collect isDerivation tests); - all = buildList' "ci-all" [ pkgsList tests ]; + all = buildList' "ci-all" [ pkgsList testList ]; in bscPkgs // { # Prevent accidental usage of bsc attribute @@ -112,7 +112,7 @@ in bscPkgs // { # Internal for our CI tests bsc-ci = { inherit pkgs pkgsList; - inherit test tests; + inherit tests testList; inherit cross crossList; inherit all; };